Returns the latest menu for your location. The location has to be verified first in order to call this API.
You can only access this API if you have an access token issued with the scope menus.

Heartland Restaurant Menu Response Example

First Menu Fetch:

When onboarding a new ordering platform for a location, our system needs to prepare a menu specifically for that ordering platform. So, after OAuth, the first menu pull should not happen until you get the first Update Notice Webhook from ItsaCheckmate. That way you can be sure that you are not attempting to retrieve the menu prematurely.

Hours:

Note that the hours array of Objects corresponds to the entire menu Object - so if you intend to have different availability - you will need to have multiple menus. If hours are provided for some days but not others, those omitted days are assumed to have no availability for the items in that Menu.

See Special Hours link in the Side Navigation Menu - under Special Notes - for Special Hours information.

Allow Mod Quantities:

The "meta" Object in the Menu payload will have an allows_mod_quantities boolean value. We currently have this set to true globally. This means that sending Orders with multiple quantities of a single modifier is permitted if not otherwise restricted by the allows_mod_quantities value set on the Modifier Group level.

Here we can see allows_mod_quantities set to true in the "meta" Object:

    "meta": {
        "allows_item_notes": true,
        "allows_order_notes": true,
        "allows_mod_quantities": true
    }

And - here we can see the allow_modifier_multiple_quantity value set to true in a Modifier Group Object:

      "modifier_groups": [
        {
          "id": "306773fe-ca63-41fb-b582-97ba59240787",
          "name": "Cheese",
          "modifiers": [
            {
              "id": "65b5f03b-7ecb-47df-8c02-644ebd49ee7e",
              "name": "Cheddar",
              "price": 50,
              "description": "",
              "suspend_until": "1660363200",
              "is_alcohol": false,
              "modifier_groups": [
                
              ],
              "nutritional_info": ""
            }
          ],
          "description": "",
          "maximum_amount": 1,
          "minimum_amount": 0,
          "allow_modifier_multiple_quantity": true
        }
      ]

Active Item Status:
Active / not Active - item status is represented by a suspend_until- attribute - on the item object in the Menu payload. A User has the ability to mark an item as unavailable and specify the time period. Our system uses the suspend_until field for this purpose. If an item is marked as unavailable, our system will include the time (in unix time) at which that item should be available again in the ‘suspend_until’ field. Upon any menu import your system should perform a check to see if that time is in the past or in the future. If it is in the future, mark the item as sold out. If in the past or blank/null, mark the item as available. Additionally, our system will perform an automatic menu update - and also send an Update Notice Webhook - whenever this time has arrived for any element in the menu, allowing your system the ability to perform that check upon a new menu ingestion when necessary (when the item should be available again). Keep in mind that if a user manually marks an item as available from unavailable, the ‘suspend_until’ field will be blank/null again. But the previous value will remain if the item is marked available by our system automatically instead of manually by a user.

Alcoholic Items:
Depending upon if alcoholic items are allowed, that will be sent in response as is_alcohol under items and modifiers.

For example:

{
  "items": [
    {
      "id": "97e2493f-9eab-4fba-8b08-4ad63c0a98c0",
      "name": "Hamburger",
      "price": 800,
      "is_alcohol": false,
      "tax_rate": 7.0,
      "image_urls": [
        {
          "link": "https://d2q8km48t273sa.cloudfront.net/menu_photos/225501/menu_library/705b3646db8ee3569c1fffcf098b5b60.png"
        }
      ],
      "description": "Fresh, never frozen beef topped with pickles, onion, ketchup, and mustard on a toasted bun.",
      "suspend_until": "0",
      "modifier_groups": [
        {
          "id": "306773fe-ca63-41fb-b582-97ba59240787",
          "name": "Cheese",
          "modifiers": [
            {
              "id": "65b5f03b-7ecb-47df-8c02-644ebd49ee7e",
              "name": "Cheddar",
              "price": 50,
              "description": "",
              "suspend_until": "1660363200",
              "is_alcohol": false,
              "modifier_groups": [
                
              ],
              "nutritional_info": ""
            }
          ],
          "description": "",
          "maximum_amount": 1,
          "minimum_amount": 0,
          "allow_modifier_multiple_quantity": true
        }
      ],
      "nutritional_info": "Fresh, never frozen beef topped with pickles, onion, ketchup, and mustard on a toasted bun."
    }
  ]
}

Preparation Time Average Minutes

[
 {
   "id": 123456,
   "name": "Test Store"
    [ ... ommitted objects for location, meta, etc. ]
   "prep_time_average_minutes": 35
  } 
]

Additionally, a prep_time_average_minutes value - of type integer - can conditionally be applied to the Menu API - response. This is something that the store can configure itself through the menu management portal - on a Location basis - or Checkmate staff can set on their behalf - on a per Location per Order Platform - basis

Language
Click Try It! to start a request and see the response here!