Reading Menus at a Venue

Retrieving the menu

You can fetch all the menus for a given location and ordering type

We expect to be changing this endpoint in the near future.

// GET /v3/location/{locationId}/menu/{orderType}

Where {orderType} is one of:

  • 1 Collection
  • 2 Eat In
  • 3 Delivery

You will receive the following response

{
  "orderType": {
    "id": 1,
    "name": "Order Ahead"
  },
  "menus": [
    {
      "id": 3,
      "uuid": "c18866a8-8bf7-4189-8d9f-4739ba37bb9e",
      "name": "Main Menu",
      "categories": [
        {
          "id": 6,
          "name": "Starters",
          "uuid": "69e00f65-06fb-4ef4-b4c5-9da0b50768e1",
          "description": "",
          "items": [
            {
              "id": 9,
              "uuid": "95e25af6-76f5-40ad-b59f-5e9f59fae20f",
              "name": "Olives",
              "customisationType": "simple",
              "portions": [
                {
                  "id": 10,
                  "uuid": "1ba16fba-5500-4e14-afb6-9c1a245c860a",
                  "name": "Olives",
                  "ingredient": {
                    "id": 35,
                    "uuid": "33e0c4c6-d3eb-49e4-b8fb-3c9d7041edc1",
                    "name": "Olives",
                    "addPrice": 2.45,
                    "stockLevel": 1,
                    "slots": 1
                  }
                }
              ]
            },
            {
              "id": 10,
              "uuid": "6104e48e-c8b9-492d-8d9b-d5093eee871d",
              "name": "Wasabi Peas",
              "customisationType": "simple",
              "portions": [
                {
                  "id": 11,
                  "uuid": "55e0f3cc-b1f0-4036-8d06-d56976bd7ff9",
                  "name": "Wasabi Peas",
                  "ingredient": {
                    "id": 36,
                    "uuid": "52ac0c94-26d5-4107-9117-c85d4ac0bf8f",
                    "name": "Wasabi Peas",
                    "addPrice": 1,
                    "stockLevel": 1,
                    "slots": 1
                  }
                }
              ]
            }
          ],
          "tags": []
        }
      ],
      "revision": 1,
      "upsells": [],
      "allergyInfoUri": null,
      "availability": {
        "regular": {},
        "special": {}
      }
    }
  ],
  "menusAvailable": [3]
}

Description for fields

Find below the description for each field

Field Description Example
Categories List of all the top level categories in the menu Breakfast, Burgers, Chicken, Wraps, Sides, Deserts
Items (Categories have items), which are things that display in the menu. Users don't order items, but order specific portions of those items Big Tasty, Big Mac, Double Cheese Burger
Portions (Items have portions), which are specific portions of an items. This is what's ordered by users. Easiest example is water. You can get a bottle of 300ml or a bottle of 1L. Both are the same item, with different portions 300ml, 500ml, 1L
Ingredients (Each portion is made with ingredients), which are what is required to make that portion. For example a chicken salad requires lettuce, tomato, bread and chicken fillets. Lettuce, Tomato, Bread, Chicken
Modifiers (Each ingredient may have modifiers), which is any modification that the user can (either mandatorily or optionally) apply to that particular ingredient. Note : it's unusual to have modifiers that don't apply to a main ingredient that is the portion itself (e.g. you don't select your meal drink with letture part of the chicken salad meal, you select it for the chicken salad meal itself. For that reason, you'll see plenty of instances where the ingredient of a meal has the same name as the meal itself Select 2 sides, Add a Drink
Pick Options (Each modifier has a choice of pick options), which are the options that are available to select for that modifier. Also : pick options are themselves ingredients, so the structure is recursive Water, Coca Cola, Pepsi, Tango

Items

Categories have items, which are things that display in the menu. Users don't order items, but order specific portions of those items Examples are: Big Tasty, Big Mac, Double Cheese Burger

Also note that items don't have prices (ingredients do)

Field Description One of
name The name of the item Big Mac
description The description of the item Two 100% beef patties, a slice of cheese, lettuce, onion and pickles. And the sauce. That unbeatable, tasty Big Mac® sauce. You know you want to.
customisationType * deprecated Used by the consumer to control how the UX looks for some items simple

Portions

Items have portions, which are specific portions of an items. This is what's ordered by users. Easiest example is water. You can get a bottle of 300ml or a bottle of 1L. Both are the same item, with different portions Examples are: 300ml, 500ml, 1L

Also note that portions don't have prices (ingredients do)

Field Description One of
name The name of the portion. May be the same as the item Big Mac
description The description of the portion Two 100% beef patties, a slice of cheese, lettuce, onion and pickles. And the sauce. That unbeatable, tasty Big Mac® sauce. You know you want to.
uuid A unique uuid for the portion

Ingredients

Each portion is made with ingredients, which are what is required to make that portion. For example a chicken salad requires lettuce, tomato, bread and chicken fillets. Examples are: Lettuce, Tomato, Bread, Chicken

Field Description One of
name The name of the ingredient. May be the same as the item Big Mac
description The description of the ingredient Two 100% beef patties, a slice of cheese, lettuce, onion and pickles. And the sauce. That unbeatable, tasty Big Mac® sauce. You know you want to.
addPrice The price (in GBP). £10 is 10 any number, e.g. 10
stockLevel Is this ingredient in stock? 1 yes, 0 no 0, 1
slots The number of slots this ingredient occupies, usually 1 1

Modifiers

Each ingredient may have modifiers, which is any modification that the user can (either mandatorily or optionally) apply to that particular ingredient. Note: it's unusual to have modifiers that don't apply to a main ingredient that is the portion itself (e.g. you don't select your meal drink with letture part of the chicken salad meal, you select it for the chicken salad meal itself. For that reason, you'll see plenty of instances where the ingredient of a meal has the same name as the meal itself Examples are: Select 2 sides, Add a Drink

Field Description One of
name The name of the modifier Select 2 Large Drinks
description The description of the modifier Select 2 Large Drinks
defaultPickOptionId The price (in GBP). £10 is 10 any number, e.g. 10
requirementType Will document soon required
inclusionType Will document soon remove, upgrade
pickAtLeast The number of pick options that are required for a user to select any number, e.g. 1
pickAtMost The number of maximum pick options the user is allowed to select any number, e.g. 2
pickSameOption If this is set to true, options can be selected more than once. Eg. Sugar for coffee. false, true
visible * (depracted) Tells the service that's going to display the menu is this should be displayed. Usually true false, true

Modifiers with requirementType of none and inclusionType of include are those modifiers that are included with the portion (the pick options of which are included with the portion). If any of those pickOptions have a modifier which is inclusionType remove that means that that pick option can be removed

For example Glazed Sesame Bun below is something that's included by default on the portion, but can be removed

// modifier
{
  "id": 330405,
  "requirementType": "none",
  "inclusionType": "include",
  "pickSameOption": false,
  "visible": true,
  "pickOptions": [
    {
      "id": 2226668,
      "name": "Glazed Sesame Bun",
      "stockLevel": 1,
      "modifiers": [
        {
          "id": 330406,
          "requirementType": "optional",
          "inclusionType": "remove",
          "visible": true
        }
        // ...
      ]
    }
  ]
}

Pick Options

Pick options are ingredients.