GET v1/Promos/Combos/{siteId}/{menuId}

For each combo in the response, there exist two main sections, Levels and Components. Levels refer to the size of a combo (starting at 0 and increasing). A Component represents the possible items that can be included with the combo. It contains a list of ItemGroups which group similar items together. Within the ItemGroups, each item contains a list of UpsellInfo objects. These objects tell the caller whether the item belongs to (i.e can be ordered as a component of) the combo.

NOTE: Until prices are added to items in the response, the caller must also interpret the data with an assumption. An item that has "PartOfCombo: true" on a Level that is less than the largest Level of the combo cannot be included in a combo Level above its own Level(s). In other words, an item can't be downsized from its combo's Level, only upsized. In reality, if a smaller item is chosen at a larger Level, we move the combo to the lower level and upsize the other items in the combo. e.g. A 'small' item cannot be a component of a 'large' combo, instead a 'large' item is a component of a 'small' combo.

Concrete Example: Refer to the json/xml response below. This is an example of how the response may look. In the example, we describe a Chicken Sandwich combo with 3 levels, Small, Medium, and Large. This combo is composed of 3 components: a sandwich (ComponentId: 1), a side (ComponentId: 2), and a drink (ComponentId: 3). For the sandwich, there can only be one, it is valid in all 3 combo levels as shown in the UpsellInfo object property, "PartOfCombo": true.

Component 2 (the side) is a bit different. Here we see two different item groups within the component. Itemgroups are used to group collections of similar items together. Suppose ItemGroupId: 2 are fries, ItemId: 20001 is the small fry, 20002 is the medium, and 20003 is the large. By looking at each UpsellInfo object, you can see that each item is only considered to be part of its corresponding level. However, the large can be ordered with a small combo despite PartOfCombo being false. This is where the note above comes in. Since the large fry is part of the highest level (2), it can be ordered with a small combo (though likely with an upcharge).

Component 3 represents the drink. Item group 3 works in the same way item group 2 worked, 1 item for each level. Now notice item group 4. Suppose this is some sort of special drink, like a milkshake. In this example there are 2 sizes, small and large (Item Ids: 40001 and 40002). We already know we can get the large milkshake with the small combo, but what if we want the large combo, but just a small milkshake. For this we must understand that since small is a Level less than the intended Level, we must first demote the combo to the small base price (Level 0 - $4.99) and then add the Large fry (component 2) to that.

To summarize, given a list of items, your base price (level) is the lowest level that the items satisfy.

URI template

v1/Promos/Combos/{siteId}/{menuId}?promiseTime={promiseTime}&orderMode={orderMode}

Request Information

URI Parameters

NameDescriptionTypeAdditional information
siteId

Online Ordering Site Id (integer)

int

Required

menuId

menu id

integer

Required

promiseTime

Promise time on POS. Don't specify any time zone. Example: Time in restaurant is 10:35AM AEST. The same time is applied as promise time. Value of promiseTime parameter should be “2016-06-16T10:35:00”. Default value is current time on POS.

date

None.

orderMode

OrderModeType

None.

Body Parameters

None.

Response Information

Resource Description

Combos
NameDescriptionTypeAdditional information
ComboList

List of combos

Collection of Combo

None.

Response Formats

application/json, text/json

Sample:
{
  "ComboList": [
    {
      "PromoId": 0,
      "Levels": [
        {
          "ComboLevelId": 0,
          "Name": "Small Chicken Sandwich Combo",
          "Price": 4.99
        },
        {
          "ComboLevelId": 1,
          "Name": "Medium Chicken Sandwich Combo",
          "Price": 5.99
        },
        {
          "ComboLevelId": 2,
          "Name": "Large Chicken Sandwich Combo",
          "Price": 6.99
        }
      ],
      "Components": [
        {
          "ComponentId": 1,
          "ItemGroups": [
            {
              "ItemGroupId": 1,
              "Items": [
                {
                  "ItemId": 10001,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": true
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "ComponentId": 2,
          "ItemGroups": [
            {
              "ItemGroupId": 2,
              "Items": [
                {
                  "ItemId": 20001,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": false
                    }
                  ]
                },
                {
                  "ItemId": 20002,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": false
                    }
                  ]
                },
                {
                  "ItemId": 20003,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": true
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "ComponentId": 3,
          "ItemGroups": [
            {
              "ItemGroupId": 3,
              "Items": [
                {
                  "ItemId": 30001,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": false
                    }
                  ]
                },
                {
                  "ItemId": 30002,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": false
                    }
                  ]
                },
                {
                  "ItemId": 30003,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": true
                    }
                  ]
                }
              ]
            },
            {
              "ItemGroupId": 4,
              "Items": [
                {
                  "ItemId": 40001,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": false
                    }
                  ]
                },
                {
                  "ItemId": 40002,
                  "UpsellInfo": [
                    {
                      "ComboLevelId": 0,
                      "PartOfCombo": false
                    },
                    {
                      "ComboLevelId": 1,
                      "PartOfCombo": true
                    },
                    {
                      "ComboLevelId": 2,
                      "PartOfCombo": true
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}