# Combos

Combos are special meals that combines a group of products, these products may have different names and prices. All products under combos are part of the restaurant's original products

# The Combo Object

# Sample

{
  "id": "8d24d6cd",
  "sku": "C001",
  "barcode": null,
  "name": "Lucky Meal",
  "name_localized": null,
  "description": "...",
  "description_localized": null,
  "image": "https://path/to/image",
  "is_active": true,
  "is_ready": true,
  "sizes": [
    {
      "id": "8d24d6cd",
      "name": "Medium",
      "name_localized": null,
      "created_at": "2019-03-06 17:33:41",
      "updated_at": "2019-03-06 17:33:41",
      "deleted_at": null
    }
  ],
  "items": [
    {
      "id": "8d24d6cd",
      "name": "Sandwich",
      "name_localized": null,
      "is_upgradable": false,
      "options": [
        {
          "id": "8d24d6cd",
          "name": "Beef Sandwitch",
          "name_localized": null,
          "sizes": {
            "8d24d6cd": {
              "price": 100,
              "product": {
                "id": "8d24d6cd"
              },
              "branches": [
                {
                  "id": "8d24d6cd",
                  "pivot": {
                    "price": 70
                  }
                }
              ]
            },
            "created_at": "2019-03-06 17:33:41",
            "updated_at": "2019-03-06 17:33:41",
            "deleted_at": null
          }
        }
      ],
      "created_at": "2019-03-06 17:33:41",
      "updated_at": "2019-03-06 17:33:41",
      "deleted_at": null
    }
  ],
  "category": {
    "id": "8d86a04f"
  },
  "tags": [
    {
      "id": "8d8306bc",
      "pivot": {
        "combo_id": "8da2fe98",
        "tag_id": "8d8306bc"
      }
    }
  ],
  "timed_events": [
    {
      "id": "8df3cf21"
    }
  ],
   "groups":[
        {
            "id":"964da0a0-aafb-4f56-87c2-74f2c458884c"
        }
  ],
  "branches": [
    {
      "pivot": {
        "is_active": false
      },
      "id": "8d82ff0c"
    }
  ],
  "created_at": "2019-03-06 17:33:41",
  "updated_at": "2019-03-06 17:33:41",
  "deleted_at": null
}

# Combo Attributes

Field Type Rule Description
id string Unique identifier for the combo.
sku* string updatable SKU of the combo.
barcode string nullable updatable Barcode of the combo.
name* string updatable Name of the combo.
name_localized string nullable updatable Localized name of the combo.
description string nullable updatable Description of the combo.
description_localized string nullable updatable Localized description of the combo
image string nullable updatable The combo image link
is_active boolean updatable True if the combo is available for selling.
is_ready boolean if false means the combo is missing configurations and should not be sold.
category* object updatable includable The Category object attached to the combo
groups array includable The List of Menu Group attached to the combo
tags array updatable includable The list of Tags objects attached to the combo
timed_events array updatable includable The list of Timed Events objects attached to the combo
branches array updatable includable The list of Branches objects attached to the combo
sizes array updatable includable The list of combo sizes
items array updatable includable The list of combo items
items.options array updatable includable The list of combo items options
items.options.products object updatable includable The Product attached to combo item option for each combo size
items.options.branches array updatable includable The Branches attached to combo item option for each size for custom branch pricing
created_at string sortable Time YYYY-MM-DD HH-MM-SS in UTC at which the combo was created.
updated_at string sortable Time YYYY-MM-DD HH-MM-SS in UTC at which the combo was updated.
deleted_at string nullable Time YYYY-MM-DD HH-MM-SS in UTC at which the combo was deleted.

# Combo Size Attributes

Field Type Rule Description
id string Unique identifier for the combo size.
name* string updatable Name of the combo size.
name_localized string nullable updatable Localized name of the combo size.
created_at string Time YYYY-MM-DD HH-MM-SS in UTC at which the combo size was created.
updated_at string Time YYYY-MM-DD HH-MM-SS in UTC at which the combo size was updated.
deleted_at string nullable Time YYYY-MM-DD HH-MM-SS in UTC at which the combo size was deleted.

# Combo Item Attributes

Field Type Rule Description
id string Unique identifier for the combo item.
name* string updatable Name of the combo item.
name_localized string nullable updatable Localized name of the combo item.
is_upgradable boolean updatable Determine whether the combo item is upgradable or not
created_at string Time YYYY-MM-DD HH-MM-SS in UTC at which the combo item was created.
updated_at string Time YYYY-MM-DD HH-MM-SS in UTC at which the combo item was updated.
deleted_at string nullable Time YYYY-MM-DD HH-MM-SS in UTC at which the combo item was deleted.

# Combo Item Option Attributes

Field Type Rule Description
id string Unique identifier for the combo item option.
name* string updatable Name of the combo item.
name_localized string nullable updatable Localized name of the combo item.
created_at string Time YYYY-MM-DD HH-MM-SS in UTC at which the combo item option was created.
updated_at string Time YYYY-MM-DD HH-MM-SS in UTC at which the combo item option was updated.
deleted_at string nullable Time YYYY-MM-DD HH-MM-SS in UTC at which the combo item option was deleted.

# Combo Item Option Size Attributes

Field Type Rule Description
price* double The price of the combo item option within size
product* object updatable The Product attached to the combo item option size
branches string nullable updatable The Branches attached to the combo item option size
branches.pivot.price double updatable Custom price for the attached branch

# List Combos

GET /combos

# Scope

general.read

# Filters

  • id
  • name
  • name_localized
  • sku
  • sku_partial
  • barcode
  • tags.id
  • category_id
  • groups.id
  • updated_after
  • is_deleted
  • is_active
  • any
  • created_on
  • updated_on
  • deleted_on

# Response

{
  "data": [
    {
      "id": "8d24d6cd",
      "sku": "C001",
      "barcode": null,
      "name": "Lucky Meal",
      "name_localized": null,
      "description": "...",
      "description_localized": null,
      "image": "https://path/to/image",
      "is_active": true,
      "is_ready": true,
      "sizes": [
        {
          "id": "8d24d6cd",
          "name": "Medium",
          "name_localized": null,
          "created_at": "2019-03-06 17:33:41",
          "updated_at": "2019-03-06 17:33:41",
          "deleted_at": null
        }
      ],
      "items": [
        {
          "id": "8d24d6cd",
          "name": "Sandwich",
          "name_localized": null,
          "is_upgradable": false,
          "options": [
            {
              "id": "8d24d6cd",
              "name": "Beef Sandwitch",
              "name_localized": null,
              "sizes": {
                "8d24d6cd": {
                  "price": 100,
                  "product": {
                    "id": "8d24d6cd"
                  },
                  "branches": [
                    {
                      "id": "8d24d6cd",
                      "pivot": {
                        "price": 70
                      }
                    }
                  ]
                },
                "created_at": "2019-03-06 17:33:41",
                "updated_at": "2019-03-06 17:33:41",
                "deleted_at": null
              }
            }
          ],
          "created_at": "2019-03-06 17:33:41",
          "updated_at": "2019-03-06 17:33:41",
          "deleted_at": null
        }
      ],
      "category": {
        "id": "8d86a04f"
      },
      "tags": [
        {
          "id": "8d8306bc",
          "pivot": {
            "combo_id": "8da2fe98",
            "tag_id": "8d8306bc"
          }
        }
      ],
      "timed_events": [
        {
          "id": "8df3cf21"
        }
      ],
      "branches": [
        {
          "pivot": {
            "is_active": false
          },
          "id": "8d82ff0c"
        }
      ],
      "created_at": "2019-03-06 17:33:41",
      "updated_at": "2019-03-06 17:33:41",
      "deleted_at": null
    }
  ]
}

# Get Combo

GET /combos/{comboId}

# Scope

general.read

# Response

{
  "data": {
    "id": "8d24d6cd",
    "sku": "C001",
    "barcode": null,
    "name": "Lucky Meal",
    "name_localized": null,
    "description": "...",
    "description_localized": null,
    "image": "https://path/to/image",
    "is_active": true,
    "is_ready": true,
    "sizes": [
      {
        "id": "8d24d6cd",
        "name": "Medium",
        "name_localized": null,
        "created_at": "2019-03-06 17:33:41",
        "updated_at": "2019-03-06 17:33:41",
        "deleted_at": null
      }
    ],
    "items": [
      {
        "id": "8d24d6cd",
        "name": "Sandwich",
        "name_localized": null,
        "is_upgradable": false,
        "options": [
          {
            "id": "8d24d6cd",
            "name": "Beef Sandwitch",
            "name_localized": null,
            "sizes": {
              "8d24d6cd": {
                "price": 100,
                "product": {
                  "id": "8d24d6cd"
                },
                "branches": [
                  {
                    "id": "8d24d6cd",
                    "pivot": {
                      "price": 70
                    }
                  }
                ]
              },
              "created_at": "2019-03-06 17:33:41",
              "updated_at": "2019-03-06 17:33:41",
              "deleted_at": null
            }
          }
        ],
        "created_at": "2019-03-06 17:33:41",
        "updated_at": "2019-03-06 17:33:41",
        "deleted_at": null
      }
    ],
    "category": {
      "id": "8d86a04f"
    },
    "tags": [
      {
        "id": "8d8306bc",
        "pivot": {
          "combo_id": "8da2fe98",
          "tag_id": "8d8306bc"
        }
      }
    ],
    "timed_events": [
      {
        "id": "8df3cf21"
      }
    ],
    "groups":[
        {
            "id":"964da0a0-aafb-4f56-87c2-74f2c458884c"
        }
    ],
    "branches": [
      {
        "pivot": {
          "is_active": false
        },
        "id": "8d82ff0c"
      }
    ],
    "created_at": "2019-03-06 17:33:41",
    "updated_at": "2019-03-06 17:33:41",
    "deleted_at": null
  }
}

# Create Combo

POST /combos

# Scope

menu.write

# Request

{
    "sku": "C001",
    "barcode": null,
    "name": "Lucky Meal",
    "name_localized": null,
    "description": "...",
    "description_localized": null,
    "image": "https://path/to/image",
    "is_active": true,
    "category_id": "8d207fc3",
    "tags": [
        {
            "id": "8d207fc3"
        }
    ],
    "timed_events": [
        {
            "id": "8d207fc3"
        }
    ],
     "groups":[
        {
            "id":"964da0a0-aafb-4f56-87c2-74f2c458884c"
        }
    ]
}

# Response

{
  "data": {
    "id": "8d24d6cd",
    "sku": "C001",
    "barcode": null,
    "name": "Lucky Meal",
    "name_localized": null,
    "description": "...",
    "description_localized": null,
    "image": "https://path/to/image",
    "is_active": true,
    "is_ready": true,
    "sizes": [
      {
        "id": "8d24d6cd",
        "name": "Medium",
        "name_localized": null,
        "created_at": "2019-03-06 17:33:41",
        "updated_at": "2019-03-06 17:33:41",
        "deleted_at": null
      }
    ],
    "items": [
      {
        "id": "8d24d6cd",
        "name": "Sandwich",
        "name_localized": null,
        "is_upgradable": false,
        "options": [
          {
            "id": "8d24d6cd",
            "name": "Beef Sandwitch",
            "name_localized": null,
            "sizes": {
              "8d24d6cd": {
                "price": 100,
                "product": {
                  "id": "8d24d6cd"
                },
                "branches": [
                  {
                    "id": "8d24d6cd",
                    "pivot": {
                      "price": 70
                    }
                  }
                ]
              },
              "created_at": "2019-03-06 17:33:41",
              "updated_at": "2019-03-06 17:33:41",
              "deleted_at": null
            }
          }
        ],
        "created_at": "2019-03-06 17:33:41",
        "updated_at": "2019-03-06 17:33:41",
        "deleted_at": null
      }
    ],
    "category": {
      "id": "8d86a04f"
    },
    "tags": [
      {
        "id": "8d8306bc",
        "pivot": {
          "combo_id": "8da2fe98",
          "tag_id": "8d8306bc"
        }
      }
    ],
    "timed_events": [
      {
        "id": "8df3cf21"
      }
    ],
    "groups":[
        {
            "id":"964da0a0-aafb-4f56-87c2-74f2c458884c"
        }
    ],
    "branches": [
      {
        "pivot": {
          "is_active": false
        },
        "id": "8d82ff0c"
      }
    ],
    "created_at": "2019-03-06 17:33:41",
    "updated_at": "2019-03-06 17:33:41",
    "deleted_at": null
  }
}

# Update Combo

PUT /combos/{comboId}

# Scope

menu.write

# Request

{
    "sku": "C001",
    "barcode": null,
    "name": "Lucky Meal",
    "name_localized": null,
    "description": "...",
    "description_localized": null,
    "image": "https://path/to/image",
    "is_active": true,
    "category_id": "8d207fc3",
    "tags": [
        {
            "id": "8d207fc3"
        }
    ],
    "timed_events": [
        {
            "id": "8d207fc3"
        }
    ],
     "groups":[
        {
            "id":"964da0a0-aafb-4f56-87c2-74f2c458884c"
        }
    ]
}

# Response

{
  "data": {
    "id": "8d24d6cd",
    "sku": "C001",
    "barcode": null,
    "name": "Lucky Meal",
    "name_localized": null,
    "description": "...",
    "description_localized": null,
    "image": "https://path/to/image",
    "is_active": true,
    "is_ready": true,
    "sizes": [
      {
        "id": "8d24d6cd",
        "name": "Medium",
        "name_localized": null,
        "created_at": "2019-03-06 17:33:41",
        "updated_at": "2019-03-06 17:33:41",
        "deleted_at": null
      }
    ],
    "items": [
      {
        "id": "8d24d6cd",
        "name": "Sandwich",
        "name_localized": null,
        "is_upgradable": false,
        "options": [
          {
            "id": "8d24d6cd",
            "name": "Beef Sandwitch",
            "name_localized": null,
            "sizes": {
              "8d24d6cd": {
                "price": 100,
                "product": {
                  "id": "8d24d6cd"
                },
                "branches": [
                  {
                    "id": "8d24d6cd",
                    "pivot": {
                      "price": 70
                    }
                  }
                ]
              },
              "created_at": "2019-03-06 17:33:41",
              "updated_at": "2019-03-06 17:33:41",
              "deleted_at": null
            }
          }
        ],
        "created_at": "2019-03-06 17:33:41",
        "updated_at": "2019-03-06 17:33:41",
        "deleted_at": null
      }
    ],
    "category": {
      "id": "8d86a04f"
    },
    "tags": [
      {
        "id": "8d8306bc",
        "pivot": {
          "combo_id": "8da2fe98",
          "tag_id": "8d8306bc"
        }
      }
    ],
    "timed_events": [
      {
        "id": "8df3cf21"
      }
    ],
    "groups":[
        {
            "id":"964da0a0-aafb-4f56-87c2-74f2c458884c"
        }
    ],
    "branches": [
      {
        "pivot": {
          "is_active": false
        },
        "id": "8d82ff0c"
      }
    ],
    "created_at": "2019-03-06 17:33:41",
    "updated_at": "2019-03-06 17:33:41",
    "deleted_at": null
  }
}

# Delete Combo

DELETE /combos/{comboId}

# Scope

menu.write

The API will respond with 200 indicating that the combo has been deleted.

# Restore Combo

PUT /combos/{comboId}/restore

# Scope

admin.restore

The API will respond with 200 indicating that the combo has been restored.

# Attach Branch Attributes to Combo

POST /combos/{comboId}/branches/{branchId}

Some attributes could have special values in a specific branch or set of branches, you can define these attachments with the following request.

# Scope

menu.write

# Request

{
    "is_active": false
}

# Response

{
    "data": {
        "id": "8d24d6cd",
        "sku": "C001",
        "barcode": null,
        "name": "Lucky Meal",
        "name_localized": null,
        "description": "...",
        "description_localized": null,
        "image": "https://path/to/image",
        "is_active": true,
        "is_ready": true,
        "branches": [
            {
                "pivot": {
                    "is_active": false
                },
                "id": "8d20cc87"
            }
        ],
        "created_at": "2019-03-06 17:33:41",
        "updated_at": "2019-03-06 17:33:41",
        "deleted_at": null
    }
}

# Remove Branch Attributes from Combo

Some attributes could have special values in a specific branch or set of branches, you can remove these attachments with the following request.

DELETE /combos/{comboId}/branches/{branchId}

# Scope

menu.write

The API will respond with 200 indicating that the Branch attributes has been removed.

# Create Combo Size

Ristecho Create Combo Size API Allows you to create a new combo size for a specific combo based on the provided comboId.

POST /combos/{comboId}/sizes

# Scope

menu.write

# Request

{
    "name": "Medium",
    "name_localized": null
}

# Response

{
    "data": {
        "id": "8dacddbd",
        "name": "Regular",
        "name_localized": null,
        "created_at": "2019-05-13 08:25:40",
        "updated_at": "2019-05-13 08:25:40",
        "deleted_at": null
    }
}

# Update Combo Size

Ristecho Update Combo Size API Allows you to update a single combo size for a specific combo based on the provided sizeId & the comboId.

PUT /combos/{comboId}/sizes/{sizeId}

# Request

{
    "name": "Medium",
    "name_localized": null
}

# Response

{
    "data": {
        "id": "8dacddbd",
        "name": "Regular",
        "name_localized": null,
        "created_at": "2019-05-13 08:25:40",
        "updated_at": "2019-05-13 08:25:40",
        "deleted_at": null
    }
}

# Delete Combo Size

Ristecho Delete Combo Size API Allows you to delete a single combo size from a specific combo based on the provided sizeId & the comboId.

DELETE /combos/{comboId}/sizes/{sizeId}

The API will respond with 200 indicating that the combo size has been deleted.

# Restore Combo Size

Ristecho Restore Combo Size API Allows you to restore a single combo size from a specific combo based on the provided sizeId & the comboId.

PUT /combos/{comboId}/sizes/{sizeId}/restore

The API will respond with 200 indicating that the combo size has been restored.

# Create Combo Item

Ristecho Create Combo Item API Allows you to create a new combo item for a specific combo based on the provided comboId.

POST /combos/{comboId}/items

# Scope

menu.write

# Request

{
    "name": "Sandwich",
    "name_localized": null,
    "is_upgradable": false
}

# Response

{
    "data": {
        "id": "8dacdea1",
        "name": "Sandwich",
        "name_localized": null,
        "is_upgradable": false,
        "created_at": "2019-05-13 08:28:09",
        "updated_at": "2019-05-13 08:28:09",
        "deleted_at": null
    }
}

# Update Combo Item

Ristecho Update Combo Item API Allows you to update a single combo item for a specific combo based on the provided itemId & the comboId.

PUT /combos/{comboId}/items/{itemId}

# Request

{
    "name": "Sandwich",
    "name_localized": null,
    "is_upgradable": false
}

# Response

{
    "data": {
        "id": "8dacdea1",
        "name": "Sandwich",
        "name_localized": null,
        "is_upgradable": false,
        "created_at": "2019-05-13 08:28:09",
        "updated_at": "2019-05-13 08:28:09",
        "deleted_at": null
    }
}

# Delete Combo Item

Ristecho Delete Combo Item API Allows you to delete a single combo item from a specific combo based on the provided itemId & the comboId.

DELETE /combos/{comboId}/items/{itemId}

The API will respond with 200 indicating that the combo item has been deleted.

# Restore Combo Item

Ristecho Restore Combo Item API Allows you to restore a single combo item from a specific combo based on the provided itemId & the comboId.

PUT /combos/{comboId}/items/{itemId}/restore

The API will respond with 200 indicating that the combo item has been restored.

# Create Combo Item Option

Ristecho Create Combo Item Option API Allows you to create a new combo item option in a specific combo item for a specific combo based on the provided comboId & itemId.

POST /combos/{comboId}/items/{itemId}/options

# Scope

menu.write

# Request

{
    "name": "Beef",
    "name_localized": null
}

# Response

{
    "data": {
        "id": "8dace100",
        "name": "Beef",
        "name_localized": null,
        "created_at": "2019-05-13 08:34:48",
        "updated_at": "2019-05-13 08:34:48",
        "deleted_at": null
    }
}

# Update Combo Item Option

Ristecho Update Combo Item API Allows you to update a single combo item option in a specific combo item for a specific combo based on the provided comboId , itemId & the optionId.

PUT /combos/{comboId}/items/{itemId}/options/{optionId}

# Request

{
    "name": "Beef",
    "name_localized": null
}

# Response

{
    "data": {
        "id": "8dace100",
        "name": "Beef",
        "name_localized": null,
        "created_at": "2019-05-13 08:34:48",
        "updated_at": "2019-05-13 08:34:48",
        "deleted_at": null
    }
}

# Delete Combo Item Option

Ristecho Delete Combo Item Option API Allows you to delete a single combo item option from a specific combo item in a specific combo based on the provided comboId , itemId & the optionId.

DELETE /combos/{comboId}/items/{itemId}/options/{optionId}

The API will respond with 200 indicating that the combo item option has been deleted.

# Restore Combo Item Option

Ristecho Restore Combo Item Option API Allows you to restore a single combo item option in a specific combo item from a specific combo based on the provided comboId , itemId & the optionId.

PUT /combos/{comboId}/items/{itemId}/options/{optionId}/restore

The API will respond with 200 indicating that the combo item option has been restored.

# Attach Combo Option to Product

Ristecho Attach Combo Option To Product API allows you to attach a single Combo Option to a specific product based on the provided comboId, itemId, optionId & the productId.

POST /combos/{comboId}/items/{itemId}/options/{optionId}/sizes/{sizeId}/products/{productId}

# Request

{
    "price": 4
}

# Response

{
    "data": {
        "sizes": {
            "8dab03d7": {
                "price": 14,
                "product": {
                    "id": "8d90b8d1"
                },
                "branches": [
                    {
                        "pivot": {
                            "price": 14
                        },
                        "id": "8d82ff0c"
                    }
                ]
            }
        },
        "id": "8dab048f",
        "name": "Beef",
        "name_localized": null,
        "created_at": "2019-05-12 10:22:34",
        "updated_at": "2019-05-12 10:22:34",
        "deleted_at": null
    }
}

# Attach Combo Option to combo

Each Combo option has to be attached to a combo in each of the combo sizes.

POST /combos/{comboId}/items/{itemId}/options/{optionId}/sizes/{sizeId}/combos/{comboId}

# Request

{
    "price": 4
}

# Response

{
    "is_active": false
}

# Attach Branch Attributes to Combo Option

Some attributes can have special values in a specific branch or set of branches, you can define these attachments with the following request.

POST /combos/{comboId}/items/{itemId}/options/{optionId}/sizes/{sizeId}/branches/{branchId}

# Request

{
    "price": 4
}

# Response

{
    "price": 4
}

# Remove Branch Attributes from Combo Option

Some attributes can have special values in a specific branch or set of branches, you can remove these attachments with the following request.

DELETE /combos/{comboId}/items/{itemId}/options/{optionId}/sizes/{sizeId}/branches/{branchId}

The API will respond with 200 indicating that the branch attributes has been deleted.

Last Updated: 2/9/2023, 11:45:00 AM