Empowering Restaurants through Integration

Menus (Deprecated)

The menu management module allows for retrieving and managing Grubhub menus. To create a menu, use the /pos/v1/menu/ingestion endpoint, not the deprecated bulk entity upload endpoints. This allows you to upload the entire menu at once.

WARNING: Do not use the deprecated bulk entity endpoint in conjunction with the full menu ingestion. It can produce unpredictable results, including broken menus. New users should only use the full menu ingestion endpoint.

Grubhub currently maintains a one-to-one relationship between physical locations and menus.

Creating menus.

When creating a menu from scratch, you should construct a POSFullMenu object with your entire menu object. A full menu structures the data as you would present it to a customer. Each menu schedule (e.g. lunch, dinner, weekends) contains menu sections (appetizers, entrees), which contain the individual menu items that customers will order.

Menu items can have additional options and metadata. You can specify multiple sizes, each with a different pricing scheme. Each menu item can have multiple required or optional modifiers, each with multiple selections. If you use both sizes and modifiers, you can set the price of the modifier to be contingent on the size. Additionally, you can attach preset tags to the item to indicate dietary or delivery restrictions, such as a kosher or spicy item.

To remove an entity, upload a new full menu without the entity in the object. To update the entity, get your current full menu, change the field values, and then upload the new full menu object.

A note regarding IDs.

When you create new menus, you will need to assign each entity within the menu (schedules, items, modifiers, etc.) an external_id. This is for your reference and can be used in a few menu endpoints.

However, each entity will automatically be assigned a base64-encoded UUID that can be used to individually reference that entity.

Paths

Get full menu object

GET /pos/v1/merchant/{merchant_id}/ingestion/menu
Description

Returns the current menu as a PosFullMenu object, which can be edited and ingested to update a restaurant's or group of restaurant's menu. You can edit the response payload and use it to update menus with the primary menu ingestion endpoint.

This call supports GZIP compression. In the request header, pass Accept-Encoding: gzip to receive a compressed response payload.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Responses
200
OK. Returns a PosFullMenu object. The response will be compressed if the request specified GZIP encoding.
Example
{
  "info": {},
  "tax_rates": [
      {
          "external_id": "TAX-001",
          "name": "sales tax",
          "rate": 0.06,
          "included_in_item_price": true,
          "valid": true
      }
  ],
  "schedules": [
      {
          "name": "Weekday Lunch",
          "external_id": "SCHD-LUNCH",
          "rules": [
              {
                  "days": [
                      "MONDAY"
                  ],
                  "start": "10:45:00.000",
                  "end": "14:45:00.000"
              },
              {
                  "days": [
                      "TUESDAY"
                  ],
                  "start": "10:45:00.000",
                  "end": "19:00:00.000"
              },
              {
                  "days": [
                      "WEDNESDAY"
                  ],
                  "start": "10:45:00.000",
                  "end": "19:00:00.000"
              }
          ],
          "sections": []
      },
      {
          "name": "Weekday Lunch",
          "external_id": "SCHD-LUNCH",
          "rules": [
              {
                  "days": [
                      "MONDAY"
                  ],
                  "start": "10:45:00.000",
                  "end": "14:45:00.000"
              },
              {
                  "days": [
                      "TUESDAY"
                  ],
                  "start": "10:45:00.000",
                  "end": "19:00:00.000"
              },
              {
                  "days": [
                      "WEDNESDAY"
                  ],
                  "start": "10:45:00.000",
                  "end": "19:00:00.000"
              }
          ],
          "sections": []
      },
      {
          "name": "Default 24/7",
          "rules": [
              {
                  "days": [
                      "TUESDAY",
                      "FRIDAY",
                      "WEDNESDAY",
                      "SUNDAY",
                      "THURSDAY",
                      "SATURDAY",
                      "MONDAY"
                  ],
                  "start": "00:00:00.000",
                  "end": "23:59:59.999"
              }
          ],
          "sections": [
              {
                  "name": "Dessert",
                  "description": "Treat yourself, 2017!",
                  "items": [
                      {
                          "name": "Candy",
                          "description": "A sweet treat.",
                          "price": 2.99,
                          "excludes_coupons": false,
                          "deal": false,
                          "tags": [],
                          "modifier_categories": [
                              {
                                  "name": "Choose your candy",
                                  "min": 1,
                                  "max": 1,
                                  "included": 1,
                                  "batch_quantity": 1,
                                  "modifiers": [
                                      {
                                          "name": "Gummies",
                                          "description": "Delicious little chewy treats.",
                                          "price": 0
                                      },
                                      {
                                          "name": "Jelly Beans",
                                          "description": "Surprise flavors everyone is sure to enjoy!",
                                          "price": 0
                                      }
                                  ]
                              }
                          ]
                      },
                      {
                          "name": "Chocolate Covered Pretzels",
                          "description": "Sweet and salty pick-me-up.",
                          "price": 5,
                          "excludes_coupons": false,
                          "deal": false,
                          "tags": [],
                          "modifier_categories": []
                      }
                  ]
              }
          ]
      }
  ]
}

Upload new menu

POST /pos/v1/menu/ingestion
Description

Uploads a complete menu to Grubhub, including schedules, sections, items, and modifiers. Because of the size of the data used in this operation, the processing portion of this job completes after this endpoint responds. To find out the status of a full menu ingestion, call GET /pos/v1/menu/ingestion/jobs/{job_id}. Use the job_id returned from this endpoint.

This endpoint can take two separate full menu formats. The first expects items to be part of the object structure as they will be when returned by the full menu retrieval enpoint shown below. That is, schedules will contain categories, which contain menu item, and so on. The second has the same items, but any contained objects are indicated by external_id references instead of the object itself. This second format does not use internal Grubhub identifiers, only external_id values.

By default, this endpoint expects the complete full menu structure. To indicate a reference structure, include the optional field normalized_menu=true in the request body.

All objects within this menu payload must have external_id values attached to them for this upload to complete. External IDs that match existing objects will be merged with that object's data. If a field exists in both the existing and ingested data, the ingested data will replace it. If the data only exists in the new data, then that object will be created. If the data exists in the old menu but not the new one, then that object will be deleted.

External IDs must be unique across all menu entities of the same type, except for menu schedules and sections, which must be globally unique.

You can call GET /pos/v1/merchant/{merchant_id}/ingestion/menu to retrieve the current menu, then edit that object and use this endpoint to replace the existing menu with the edited one.

This call supports GZIP compression. In the request header, pass Accept-Encoding: gzip to receive a compressed response payload. Whether you send the JSON object compressed or not, it must be encoded in UTF-8.

WARNING: Do not use the deprecated asynchronous entity upload endpoint after uploading a full menu with this endpoint. It can cause unpredictable results, including making your menu irretrievable. We recommend that you use this endpoint for all menu creation, edits, and deletions.

Body
job_id
label_outlineOptional
String
The identifier for this menu ingestion job, which you can use with the `GET /pos/v1/menu/ingestion/jobs/{job_id}` to retrieve the status of this job. If you do not provide a value here, a random UUID value will be assigned.
merchant_ids
labelRequired
List
An array of the merchant IDs that the uploaded menu will apply to. Multiple merchant IDs are allowed so that groups can standardize menus across locations. Must be omitted if a `group_name` is provided instead.
group_name
label_outlineOptional
String
This field is DEPRECATED and should be omitted. The merchant group name for which this ingested menu will be used for all restaurants that it manages. Must be omitted if `merchant_ids` are provided.
normalized_menu
label_outlineOptional
boolean
Indicated whether this endpoint expects the full menu object structured as a series of object types linked by references (`true`) or as a complete full menu structure (`false`). By default, this value is `false` and does not need to be included if you are passing full menu structres.
menu_url
labelRequired
URL
The location or webhook where the Grubhub API can download a PosFullMenu or a PosNormalizedMenu object, either as a gzip file or uncompressed.
Responses
202
Successfully enqueued for processing.
409
UNKNOWN
One or more of the affected merchants already has an active async update process.
422
UNKNOWN
Syntax failed.

Validate a full/normalized menu

POST /pos/v1/menu/ingestion/validate
Description

Verifies that the menu provided as the request body is a valid and complete PosFullMenu/PosNormalizedMenu data object. You do not need to validate a menu object before you run the ingestion process, but validation can save you the hassle of having a menu ingestion process fail unexpectedly.

Body
info
labelRequired
Top-level information about the menu, including default tax rates and restaurant images.
tax_rates
label_outlineOptional
List<TaxRate>
Detailed information about the tax rate applied to this menu's items.
schedules
label_outlineOptional
The primary menu structure organized into sections of the menu - e.g. Appetizers, Salads, Dinner - and the menu items that those sections contain. Each menu item includes all modifiers.
is_normalized_menu
label_outlineOptional
boolean
If true, the menu is a normalized menu; otherwise, it is a full menu.
merchant_id
label_outlineOptional
String
The optional merchantId that can be provided to run merchant specific menu validations.
Responses
200
Successfully performed a validation check (though the validation itself may fail).

Check ingestion job status

GET /pos/v1/menu/ingestion/jobs/{job_id}
Description

Checks the status of the specified menu ingestion job. (NOTE - This API is still under active development, and not all features and functionality may be completed.)

Body
job_id
label_outlineOptional
String
The identifier of the menu ingestion job to check.
Responses
404
UNKNOWN
No job found for that ID
Example
{
  "job_id": "35b5b71c-417c-448f-8390-5eea50b59ca5",
  "merchant_statuses":
  [
    {
    "merchant_id": "12035446",
    "status": "FAILED"
    }
  ]
}

Get Menu Info

GET /pos/v1/merchant/{merchant_id}/menu/info
Description

Deprecated, provided for backwards compatibility only. Prefer Get Menu Entities.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Responses
200
OK. Returns an MenuInfo object not wrapped by a PosVersion.
Example
{
  "restaurant_id": "503736",
  "merchant_id": "503736",
  "latest_version": {
      "restaurant_id": "503736",
      "merchant_id": "503736",
      "version_id": "I0Q1QByuEeirR8sxtDLaVw",
      "previous_version_id": "0sligLgqEeebEFXtMVeYtw",
      "sections": [
          "I0QONxyuEeirR8sxtDLaVw"
      ],
      "default_tax_rate": "fX2L0J1KEeeSA1kJ0QlH1w",
      "currency": "USD",
      "resolution_type": "NORMAL"
  }
}

Update Menu Info

POST /pos/v1/merchant/{merchant_id}/menu/info/versions
Description

Deprecated, provided for backwards compatibility only. Prefer Menu Entity Bulk Operation.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Body
previous_version_id
labelRequired
UUID
The `version_id` of the current menu info, which is returned by `GET /merchant/{merchant_id}/menu/info`.
Responses
200
OK. Returns a version-wrapped Menu Info.

Delete Schedule by External ID

DELETE /pos/v1/merchant/{merchant_id}/menu/schedules/external/{external_id}
Description

Delete all repeating schedules with the given external ID.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
external_id
labelRequired
string
The external ID to look up and delete repeating schedules.
Responses
204
UNKNOWN
No content

Get Schedule Overrides

GET /pos/v1/merchant/{merchant_id}/menu/schedules/overrides
Description

Get schedule overrides (unavailable / available) for a merchant.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Query Parameters
ending_after
label_outlineOptional
dateTime
Optional filter for overrides ending after the given time. Default value is now.
ending_before
label_outlineOptional
dateTime
Optional filter for overrides ending before the given time. Default value is "end of time"
Responses

Get Item Tags by Merchant ID

GET /pos/v1/merchant/{merchant_id}/menu/items/tags
Description

Returns all menu item tags for a merchant.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Responses
200
OK

(Deprecated) Get Legacy Menu Associations

GET /pos/v1/merchant/{merchant_id}/menu/legacy/associations
Description

Provided for backwards compatibility only.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Responses

(Deprecated) Upload a restaurant image

POST /pos/v1/merchant/{merchant_id}/menu/media
Description

Uploads a new media asset that you can use as a restaurant image. This image will display with restaurant information during a diner search. Media assets must fit within the following restrictions:

  • Minimum dimensions of 200 by 200.
  • Recommended aspect ratio of 3:2.
  • Recommended dimensions of 3000 by 2000.
  • File size no larger than 5 MB.

Media ingestion occurs asynchronously because all images uploaded to Grubhub must pass through a moderation queue. Your request may return successfully, while the actual upload may still be in process and could still fail.

We can enable webhook notifications for media ingestion status updates. Talk to your Grubhub account manager for more information on how to configure these webhooks.

Path Parameters
merchant_id
labelRequired
String
The ID of the restaurant for which you want to add a new image.
Body
file
labelRequired
MultipartFile
The file that you want to upload.
timezone_offset
label_outlineOptional
Integer
The number of hours to offset the current time based on the difference from UTC (Coordinated Universal Time).
tags
labelRequired
List
Indicates where the image is to be used on the Grubhub.com site. A single image can have multiple tags and therefore be used in multiple places. Acceptable tags are: - 'HEADER': Displays at the top of the page under restaurant when a diner is viewing the menu. - 'LOGO': Displays beside the restaurant name in the header when a diner is viewing the menu. - 'SEARCH': Displays beside restaurant information when a diner is searching for restaurants to order from.
Responses
201
The new asset was successfully created
403
Not authorized to post a new asset for this restaurant
415
The asset is not an image

Get all images

GET /pos/v1/merchant/{merchant_id}/menu/media
Description

Retrieves all images associated with a restaurant ID. You can use this to check the moderation status of any images uploaded recently, as well as get links for those images on the Grubhub content servers.

Path Parameters
merchant_id
labelRequired
String
The ID of the restaurant for which you want to view images.
Responses
201
The new asset was successfully created

Deletes the specified image

DELETE /pos/v1/merchant/{merchant_id}/menu/media/{asset_id}
Description

Deletes an image from a restaurant based on the asset ID.

Path Parameters
merchant_id
labelRequired
String
The ID of the restaurant for which you remove an image.
asset_id
labelRequired
String
The ID of the image that you want to delete.
Responses
204
UNKNOWN
The asset was successfully deleted
403
UNKNOWN
Not authorized to delete assets for this restaurant
404
UNKNOWN
The asset with the given UUID does not exist or has already been deleted
422
UNKNOWN
Asset is still referred to by other entities

Adds an image to a menu item

POST /pos/v1/merchant/{merchant_id}/menu/items/{item_id}/media
Description

Uploads a new image and associates it with an existing menu item. Media assets must fit within the following restrictions:

  • Minimum dimensions of 200 by 200.
  • Recommended aspect ratio of 3:2.
  • Recommended dimensions of 3000 by 2000.
  • File size no larger than 5 MB.

Media ingestion occurs asynchronously because all images uploaded to Grubhub must pass through a moderation queue. Your upload may return successfully, while the actual upload may still be in process and could still fail.

We can enable webhook notifications for media ingestion status updates. Talk to your Grubhub account manager for more information on how to configure these webhooks.

Path Parameters
merchant_id
labelRequired
String
The ID of the restaurant for which you want to add a new image.
item_id
labelRequired
String
The automatically-assigned item ID of the menu item that you want to attach the image to.
Body
file
labelRequired
MultipartFile
The file that you want to upload.
Responses
201
The new asset was successfully created
403
Not authorized to post a new asset for this restaurant
415
The asset is not an image

Adds an image to a menu item by external ID

POST /pos/v1/merchant/{merchant_id}/menu/items/external/{external_id}/media
Description

Uploads a new image and associates it with an existing menu item based on the external ID that you assigned to it. Media assets must fit within the following restrictions:

  • Minimum dimensions of 200 by 200.
  • Recommended aspect ratio of 3:2.
  • Recommended dimensions of 3000 by 2000.
  • File size no larger than 5 MB.

Media ingestion occurs asynchronously because all images uploaded to Grubhub must pass through a moderation queue. Your upload may return successfully, while the actual upload may still be in process and could still fail.

We can enable webhook notifications for media ingestion status updates. Talk to your Grubhub account manager for more information on how to configure these webhooks.

Path Parameters
merchant_id
labelRequired
String
The ID of the restaurant for which you want to add a new image.
external_id
labelRequired
String
The ID that you gave to the menu item that you want to attach the image to.
Body
file
labelRequired
MultipartFile
The file that you want to upload.
Responses
201
The new asset was successfully created
403
Not authorized to post a new asset for this restaurant
415
The asset is not an image

Delete an image by item ID

DELETE /pos/v1/merchant/{merchant_id}/menu/items/{item_id}/media/{asset_id}
Description

Deletes an image from a menu item based on the automatically assigned item ID.

Path Parameters
merchant_id
labelRequired
String
The ID of the restaurant for which you want to remove an image.
item_id
labelRequired
String
The ID automatically assigned to the menu item from which you want to remove the image.
asset_id
labelRequired
String
The ID of the image that you want to delete.
Responses
204
UNKNOWN
The asset was successfully deleted
403
UNKNOWN
Not authorized to delete assets for this restaurant
404
UNKNOWN
The asset with the given UUID does not exist or has already been deleted
422
UNKNOWN
Asset is still referred to by other entities

Add an image from URL

POST /pos/v1/merchant/{merchant_id}/menu/media/url
Description

Adds an image located at a URL to the menu assets. That URL must include the extension of the media file; otherwise, the API will not be able to recognize the file.

Media assets must fit within the following restrictions:

  • Minimum dimensions of 200 by 200.
  • Recommended aspect ratio of 3:2.
  • Recommended dimensions of 3000 by 2000.
  • File size no larger than 5 MB.

Media ingestion occurs asynchronously because all images uploaded to Grubhub must pass through a moderation queue. Your upload may return successfully, while the actual upload may still be in process and could still fail.

We can enable webhook notifications for media ingestion status updates. Talk to your Grubhub account manager for more information on how to configure these webhooks.

Path Parameters
merchant_id
labelRequired
String
The ID of the restaurant for which you want to add an image.
Body
add_asset_request
labelRequired
Information about the remote image you want to attach to this merchant.
Responses
201
The new asset was successfully created
403
Not authorized to post a new asset for this restaurant
415
The asset is not an image
500
UNKNOWN
In some cases, this may mean that the URL given is invalid.

Get Full Menu

GET /pos/v1/merchant/{merchant_id}/menu
Description

Returns the full menu for the merchant.

For restaurants with very large menus, you can enable GZIP compression. To do so, add the header "Accept-Encoding": "application/gzip". This may be required in some cases, as we have a limit of 10 MB per response payload.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Responses
200
OK
Example
{
  "restaurant_id": "503736",
  "merchant_id": "503736",
  "menu_info": {
      "restaurant_id": "503736",
      "merchant_id": "503736",
      "latest_version": {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "version_id": "I0Q1QByuEeirR8sxtDLaVw",
          "previous_version_id": "0sligLgqEeebEFXtMVeYtw",
          "sections": [
              "I0QONxyuEeirR8sxtDLaVw"
          ],
          "default_tax_rate": "fX2L0J1KEeeSA1kJ0QlH1w",
          "currency": "USD",
          "resolution_type": "NORMAL"
      }
  },
  "tax_rates": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "fX2L0J1KEeeSA1kJ0QlH1w",
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "fX2L0J1KEeeSA1kJ0QlH1w",
              "version_id": "fX-usJ1KEee7stFZn4mmfg",
              "rate": 0,
              "included_in_item_price": false
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "MGzGQbKxEeeoy5l_wMX5_w",
          "external_id": "TAX-001",
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "MGzGQbKxEeeoy5l_wMX5_w",
              "external_id": "TAX-001",
              "version_id": "MGzGQLKxEeeoy5l_wMX5_w",
              "name": "sales tax",
              "rate": 0.06,
              "included_in_item_price": true
          }
      }
  ],
  "menu_sections": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "X6kO8bQUEeesmyNbg_9pRA",
          "external_id": "CAT-000",
          "legacy_id": 2854825,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "X6kO8bQUEeesmyNbg_9pRA",
              "external_id": "CAT-000",
              "version_id": "X6kO8LQUEeesmyNbg_9pRA",
              "name": "Sweets",
              "items": [
                  "4PJw8bKxEeesmyNbg_9pRA",
                  "4PJw87KxEeesmyNbg_9pRA"
              ]
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "I0QONxyuEeirR8sxtDLaVw",
          "legacy_id": 3371559,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "I0QONxyuEeirR8sxtDLaVw",
              "version_id": "I0QONhyuEeirR8sxtDLaVw",
              "name": "Dessert",
              "description": "Treat yourself, 2017!",
              "items": [
                  "I0QOMxyuEeirR8sxtDLaVw",
                  "I0QONRyuEeirR8sxtDLaVw"
              ]
          }
      }
  ],
  "items": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "4PJw8bKxEeesmyNbg_9pRA",
          "external_id": "IDS-000",
          "legacy_id": 25820792,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "4PJw8bKxEeesmyNbg_9pRA",
              "external_id": "IDS-000",
              "version_id": "4PJw8LKxEeesmyNbg_9pRA",
              "name": "Candy",
              "description": "A sweet treat.",
              "price": 2.99,
              "excludes_coupons": false,
              "tax_rate": "MGzGQbKxEeeoy5l_wMX5_w",
              "modifier_prompts": [
                  "FNASQa0yEeebEFXtMVeYtw"
              ],
              "schedule_ids": [],
              "allowable_order_types": [
                  "standard"
              ],
              "tags": [
                  {
                      "group": "LEGACY",
                      "name": "DAIRY_FREE",
                      "legacy_id": 16
                  },
                  {
                      "group": "LEGACY",
                      "name": "DESSERT",
                      "legacy_id": 2
                  },
                  {
                      "group": "LEGACY",
                      "name": "KOSHER",
                      "legacy_id": 19
                  },
                  {
                      "group": "LEGACY",
                      "name": "VEGETARIAN",
                      "legacy_id": 13
                  }
              ]
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "4PJw87KxEeesmyNbg_9pRA",
          "external_id": "IDS-001",
          "legacy_id": 25820793,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "4PJw87KxEeesmyNbg_9pRA",
              "external_id": "IDS-001",
              "version_id": "4PJw8rKxEeesmyNbg_9pRA",
              "name": "Chocaolate Covered Pretzels",
              "description": "Sweet and salty pick-me-up.",
              "price": 5,
              "excludes_coupons": false,
              "tax_rate": "MGzGQbKxEeeoy5l_wMX5_w",
              "modifier_prompts": [],
              "schedule_ids": [],
              "allowable_order_types": [
                  "standard"
              ],
              "tags": []
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "I0QOMxyuEeirR8sxtDLaVw",
          "legacy_id": 29828499,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "I0QOMxyuEeirR8sxtDLaVw",
              "version_id": "I0QOMhyuEeirR8sxtDLaVw",
              "name": "Candy",
              "description": "A sweet treat.",
              "price": 2.99,
              "excludes_coupons": false,
              "tax_rate": "fX2L0J1KEeeSA1kJ0QlH1w",
              "modifier_prompts": [
                  "I0QOMRyuEeirR8sxtDLaVw"
              ],
              "schedule_ids": [],
              "allowable_order_types": [
                  "standard"
              ],
              "tags": []
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "I0QONRyuEeirR8sxtDLaVw",
          "legacy_id": 29828500,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "I0QONRyuEeirR8sxtDLaVw",
              "version_id": "I0QONByuEeirR8sxtDLaVw",
              "name": "Chocaolate Covered Pretzels",
              "description": "Sweet and salty pick-me-up.",
              "price": 5,
              "excludes_coupons": false,
              "tax_rate": "fX2L0J1KEeeSA1kJ0QlH1w",
              "modifier_prompts": [],
              "schedule_ids": [],
              "allowable_order_types": [
                  "standard"
              ],
              "tags": []
          }
      }
  ],
  "sizes": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "BL6U0a0FEeesmyNbg_9pRA",
          "legacy_id": 39498975,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "BL6U0a0FEeesmyNbg_9pRA",
              "version_id": "BL6U0K0FEeesmyNbg_9pRA",
              "name": "Small"
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "BL6U060FEeesmyNbg_9pRA",
          "legacy_id": 39498976,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "BL6U060FEeesmyNbg_9pRA",
              "version_id": "BL6U0q0FEeesmyNbg_9pRA",
              "name": "Medium"
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "BL674a0FEeesmyNbg_9pRA",
          "legacy_id": 39498977,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "BL674a0FEeesmyNbg_9pRA",
              "version_id": "BL674K0FEeesmyNbg_9pRA",
              "name": "Large"
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "BL67460FEeesmyNbg_9pRA",
          "legacy_id": 39498978,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "BL67460FEeesmyNbg_9pRA",
              "version_id": "BL674q0FEeesmyNbg_9pRA",
              "name": "Massive"
          }
      }
  ],
  "size_prompts": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "VKuEQa0TEeeoy5l_wMX5_w",
          "legacy_id": 10037980,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "VKuEQa0TEeeoy5l_wMX5_w",
              "version_id": "VKuEQK0TEeeoy5l_wMX5_w",
              "name": "Choose a size:",
              "sized_prices": [
                  {
                      "size": "BL6U0a0FEeesmyNbg_9pRA",
                      "price": 0
                  },
                  {
                      "size": "BL6U060FEeesmyNbg_9pRA",
                      "price": 1.25
                  },
                  {
                      "size": "BL674a0FEeesmyNbg_9pRA",
                      "price": 4
                  },
                  {
                      "size": "BL67460FEeesmyNbg_9pRA",
                      "price": 8.15
                  }
              ]
          }
      }
  ],
  "modifiers": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "FM_rMa0yEeebEFXtMVeYtw",
          "external_id": "MDO-000",
          "legacy_id": 39506711,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "FM_rMa0yEeebEFXtMVeYtw",
              "external_id": "MDO-000",
              "version_id": "FM_rMK0yEeebEFXtMVeYtw",
              "name": "Gummies",
              "description": "Delicious little chewy treats.",
              "default_price": 0
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "FM_rM60yEeebEFXtMVeYtw",
          "external_id": "MDO-001",
          "legacy_id": 39506712,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "FM_rM60yEeebEFXtMVeYtw",
              "external_id": "MDO-001",
              "version_id": "FM_rMq0yEeebEFXtMVeYtw",
              "name": "Jelly Beans",
              "description": "Surprise flavors everyone is sure to enjoy!",
              "default_price": 0
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "I0PnIRyuEeirR8sxtDLaVw",
          "legacy_id": 48290499,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "I0PnIRyuEeirR8sxtDLaVw",
              "version_id": "I0PnIByuEeirR8sxtDLaVw",
              "name": "Gummies",
              "description": "Delicious little chewy treats.",
              "default_price": 0
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "I0PnIxyuEeirR8sxtDLaVw",
          "legacy_id": 48290500,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "I0PnIxyuEeirR8sxtDLaVw",
              "version_id": "I0PnIhyuEeirR8sxtDLaVw",
              "name": "Jelly Beans",
              "description": "Surprise flavors everyone is sure to enjoy!",
              "default_price": 0
          }
      }
  ],
  "modifier_prompts": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "FNASQa0yEeebEFXtMVeYtw",
          "external_id": "MDP-001",
          "legacy_id": 10039411,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "FNASQa0yEeebEFXtMVeYtw",
              "external_id": "MDP-001",
              "version_id": "FNASQK0yEeebEFXtMVeYtw",
              "name": "Choose your candy",
              "internal_name": "Candy Selection 1",
              "modifier_list": "FM_rNa0yEeebEFXtMVeYtw",
              "default_selection_model": {
                  "minimum_quantity": 1,
                  "maximum_quantity": 1
              },
              "sized_selection_models": {},
              "submodifiers": []
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "I0QOMRyuEeirR8sxtDLaVw",
          "legacy_id": 12246870,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "I0QOMRyuEeirR8sxtDLaVw",
              "version_id": "I0QOMByuEeirR8sxtDLaVw",
              "name": "Choose your candy",
              "internal_name": "Candy Selection 1",
              "modifier_list": "I0PnJRyuEeirR8sxtDLaVw",
              "default_selection_model": {
                  "minimum_quantity": 1,
                  "maximum_quantity": 1
              },
              "sized_selection_models": {},
              "submodifiers": []
          }
      }
  ],
  "modifier_lists": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "FM_rNa0yEeebEFXtMVeYtw",
          "external_id": "MDL-001",
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "FM_rNa0yEeebEFXtMVeYtw",
              "external_id": "MDL-001",
              "version_id": "FM_rNK0yEeebEFXtMVeYtw",
              "name": "Candy Choices",
              "modifiers": [
                  "FM_rMa0yEeebEFXtMVeYtw",
                  "FM_rM60yEeebEFXtMVeYtw"
              ]
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "I0PnJRyuEeirR8sxtDLaVw",
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "I0PnJRyuEeirR8sxtDLaVw",
              "version_id": "I0PnJByuEeirR8sxtDLaVw",
              "name": "Candy Choices",
              "modifiers": [
                  "I0PnIRyuEeirR8sxtDLaVw",
                  "I0PnIxyuEeirR8sxtDLaVw"
              ]
          }
      }
  ],
  "schedule_overrides": {
      "merchant_id": "503736",
      "item_overrides": [],
      "modifier_overrides": []
  },
  "repeating_schedules": [
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "l7cA0NxlEeeBIHeShZ32nw",
          "external_id": "SCHD-LUNCH",
          "legacy_id": 216729,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "l7cA0NxlEeeBIHeShZ32nw",
              "external_id": "SCHD-LUNCH",
              "version_id": "l9ZIodxlEeek7GOkUbqYMg",
              "name": "Weekday Lunch",
              "type": "WEEKLY",
              "rules": [
                  {
                      "days_of_week": [
                          "MONDAY"
                      ],
                      "start_time": "10:45:00.000",
                      "end_time": "14:45:00.000"
                  },
                  {
                      "days_of_week": [
                          "TUESDAY"
                      ],
                      "start_time": "10:45:00.000",
                      "end_time": "19:00:00.000"
                  },
                  {
                      "days_of_week": [
                          "WEDNESDAY"
                      ],
                      "start_time": "10:45:00.000",
                      "end_time": "19:00:00.000"
                  }
              ]
          }
      },
      {
          "restaurant_id": "503736",
          "merchant_id": "503736",
          "uuid": "FQsvYKrVEeeSvLF-A2VlNA",
          "external_id": "SCHD-LUNCH",
          "legacy_id": 192869,
          "latest_version": {
              "restaurant_id": "503736",
              "merchant_id": "503736",
              "uuid": "FQsvYKrVEeeSvLF-A2VlNA",
              "external_id": "SCHD-LUNCH",
              "version_id": "FTK0kKrVEeeOed9wlywnkA",
              "name": "Weekday Lunch",
              "type": "WEEKLY",
              "rules": [
                  {
                      "days_of_week": [
                          "MONDAY"
                      ],
                      "start_time": "10:45:00.000",
                      "end_time": "14:45:00.000"
                  },
                  {
                      "days_of_week": [
                          "TUESDAY"
                      ],
                      "start_time": "10:45:00.000",
                      "end_time": "19:00:00.000"
                  },
                  {
                      "days_of_week": [
                          "WEDNESDAY"
                      ],
                      "start_time": "10:45:00.000",
                      "end_time": "19:00:00.000"
                  }
              ]
          }
      }
  ]
}

Get Menu Entities

GET /pos/v1/merchant/{merchant_id}/menu/entities
Description

Returns a list of menu entities associated with the specified restaurant. If entity types, entity UUIDs, or external IDs are specified, then this endpoint will only return the associated entities; otherwise, this endpoint will return all menu entities associated with this merchant_ID.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
Query Parameters
entity_types
label_outlineOptional
string
Optional list of entity types to return. If absent, all entity types will be returned.
external_ids
label_outlineOptional
string
Optional list of `external_id`s for which to return the corresponding Grubhub entities. If present, uuids may not be provided as a query parameter.
uuids
label_outlineOptional
string
Optional list of UUIDs for entities to return. If present, external_ids may not be provided as a query parameter.
exclude_version_data
label_outlineOptional
boolean
Optional flag (default is 'false') that will filter out the latest_version tag from the response entities if set to 'true'.
Responses
200
List<PosEntity>
OK

(Deprecated) Retrieves the status of an update job.

GET /pos/v1/merchant/{merchant_id}/menu/entities/{job_id}
Description

Returns the status of the specified asynchronous menu entity update process.

Path Parameters
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant. Corresponds to a single location.
job_id
labelRequired
string
The unique ID of the job in progress.
Responses
200
All operations have completed successfully.

Models

(Deprecated) Menu Entity Associations

Response body from the deprecated legacy menu associations endpoint.

Properties
restaurant_id
label_outlineOptional
string
The short Grubhub ID for the restaurant.
items
label_outlineOptional
Map
Map of Grubhub UUIDs from the Menu system to Grubhub integer IDs for the Orders system.
menu_sections
label_outlineOptional
Map
Map of Grubhub UUIDs from the Menu system to Grubhub integer IDs for the Orders system.
modifiers
label_outlineOptional
Map
Map of Grubhub UUIDs from the Menu system to Grubhub integer IDs for the Orders system.
modifier_prompts
label_outlineOptional
Map
Map of Grubhub UUIDs from the Menu system to Grubhub integer IDs.
schedules
label_outlineOptional
Map
Map of Grubhub UUIDs from the Menu system to Grubhub integer IDs.
sizes
label_outlineOptional
Map
Map of Grubhub UUIDs from the Menu system to Grubhub integer IDs.
size_prompts
label_outlineOptional
Map
Map of Grubhub UUIDs from the Menu system to Grubhub integer IDs.

AddAssetRequest

Information about an image located at a URL which will be used to create a media asset.

Properties
url
label_outlineOptional
String
The URL location on an image to upload as a media asset. This must include the file extension of the media file; otherwise, the API will not know how to handle the file type.
tags
label_outlineOptional
List
Indicates where the image is to be used on the Grubhub.com site. A single image can have multiple tags and therefore be used in multiple places. Acceptable tags are: - 'HEADER': Displays at the top of the page under restaurant when a diner is viewing the menu. - 'LOGO': Displays beside the restaurant name in the header when a diner is viewing the menu. - 'SEARCH': Displays beside restaurant information when a diner is searching for restaurants to order from.
timezone_offset
label_outlineOptional
Integer
The number of hours to offset the current time based on the difference from UTC (Coordinated Universal Time).

Availability Override Type

AVAILABLE | UNAVAILABLE

Bulk Edit Status

The current state of the asynchronous bulk update process.

Properties
status
label_outlineOptional
string
Current status of an Async Menu Entity Bulk Operation. Options include: * INVALID_REQUEST * IN_PROGRESS * SUCCESS * FAILURE * DECLARED_HALTED
requested_at
label_outlineOptional
date
Date in which this update operation was placed.
serialized_results
label_outlineOptional
string
Serialized results for this update operation.

Deleted Item

A deleted item

Properties
uuid
labelRequired
UUID
Unique identifier for the Item.
legacy_id
label_outlineOptional
integer
Integer ID of the Item, which is the ID currently returned on an Order.

FullMenuItem

A single menu item as it appears within the PosFullMenu object. This object contains all the fields from the Item object, as well as the size prompts, deals, tags, and modifiers that affect this item.

Properties
external_id
labelRequired
String
A user-configured identifier for this object within the menu. External IDs must be unique across all menu entities of this type. Any items in full menu uploads that share the external ID of an existing item will overwrite that item's data.
metadata
label_outlineOptional
String
User-configured text stored with and returned as part of this object. This text is not used by the Grubhub system; it is solely for the POS user's purposes. Character limit is restricted to 2560 characters. A validation error will be returned if this limit is exceeded.
name
labelRequired
string
The name shown to the diner. Max length of 255 characters.
description
label_outlineOptional
string
The description shown to the diner.
calorie_content
label_outlineOptional
string
How many calories is this item? Can be an integer, an integer with a '+' or '-' prepended, or a range of integers.
minimum_serving_size
label_outlineOptional
integer
For catering items. Fewest number of people who can be served by this item. Used as lower bound of range to be displayed to the diner.
maximum_serving_size
label_outlineOptional
integer
For catering items. Highest number of people who can be served by this item. Used as upper bound of range to be displayed to the diner.
minimum_order_quantity
label_outlineOptional
integer
For catering items. Default minimum quantity that can be ordered of this item.
maximum_order_quantity
label_outlineOptional
Integer
The maximum quantity of this item that can be ordered in either standard or catering orders. This value must be greater than `minimum_order_quantity`.
media
label_outlineOptional
URL
The URL for the image to display for this menu item. If you want an update process to change the image, the URL that you provide needs to change as well. Otherwise, the ingestion process will consider it to be the same image. This URL must include the file extension.
tax_rate
label_outlineOptional
String
Reference to the TaxRate for the menu item. In case item level taxes are not specified, it defaults to merchant level tax.
price
label_outlineOptional
double
The price of the item if it has no sizes.
excludes_coupons
label_outlineOptional
boolean
If true, the presence of this item in a Cart prevents the use of coupons on the order. NULL is equivalent to false.
lead_time_sec
label_outlineOptional
integer
The number of seconds needed to prepare this item. Primarily used for catering items.
size_prompt
label_outlineOptional
The SizePrompt and Size information, including SizedPrice information as it applies to this menu item.
tags
label_outlineOptional
List<Tag>
The category identifiers - like kosher, spicy, or vegetarian - that display on the Grubhub ordering page so diners can navigate dietary needs and other concerns.
modifier_categories
label_outlineOptional
The various modifier types that can apply to this item, as well as the options available and the selection model.
allowable_order_types
label_outlineOptional
String
The types of orders in which this menu item can be included. This will be one of the following: - standard - group -catering

FullMenuModifier

A selectable option within a modifier prompt that changes a menu item. That change may include price and calorie variations, and may be affected by size selections. Unlike the size models used in the bulk update endpoint, this model includes all information about a single modifier.

Properties
external_id
labelRequired
String
A user-configured identifier for this object within the menu. External IDs must be unique across all menu entities of this type. Any modifiers in full menu uploads that share the external ID of an existing modifier will overwrite its data.
metadata
label_outlineOptional
String
User-configured text stored with and returned as part of this object. This text is not used by the Grubhub system; it is solely for the POS user's purposes. Character limit is restricted to 2560 characters. A validation error will be returned if this limit is exceeded.
name
labelRequired
String
The text displayed to a diner to represent this modifier selection.
description
label_outlineOptional
String
Additional clarifying text displayed to the diner that helps them understand this selection.
price
labelRequired
Double
The additional cost applied to an order if a diner selects this modifier.
calorie_content
label_outlineOptional
Integer
The additional calories that this modifier adds to the menu item.
sized_prices
label_outlineOptional
The additional cost applied to an order if a diner selects this modifier for a menu item that also has size options that change pricing.
tax_rate
label_outlineOptional
String
The additional taxes incurred by adding this modifier.

FullMenuModifierCategory

The various modifier types that can apply to this item, as well as the options available and the selection model.

Properties
external_id
labelRequired
String
A user-configured identifier for this object within the menu. External IDs must be unique across all menu entities of this type. Any categories in full menu uploads that share the external ID of an existing category will overwrite its data.
name
labelRequired
String
The text given to the diner to prompt then to select from a list of modifier options.
description
labelRequired
String
A full description of what the modifier and its options entail.
min
labelRequired
Integer
The minimum number of options that a diner must select for the entire modifier prompt.
max
labelRequired
Integer
The maximum number of options that a diner can select for the entire modifier prompt.
included
label_outlineOptional
Integer
DEPRECATED. Number of selections included for free for the entire modifier prompt.
batch_quantity
label_outlineOptional
Integer
DEPRECATED. The number of selections for any given modifier must be a multiple of this number. For example, when selecting the sauce for a half dozen wings, that must be in increments of six.
maximum_modifier_quantity
label_outlineOptional
Integer
DEPRECATED. Maximum number of selections for any single modifier. For example, a pizza may support double, but not triple toppings, so this value would be `2`.
price_adjustment
label_outlineOptional
Adjustment to the price of every modifier. NULL indicates no adjustment.
modifiers
labelRequired
Information about a specific modifier choice available as an option for this prompt.

FullMenuSchedule

An array of Schedule objects, each of which also contains the menu sections and menu items included as part of that schedule. The final object provides an easier-to-understand menu format laid out in the way most people think about an actual restaurant menu.

Properties
external_id
labelRequired
String
A user-configured identifier for this object within the menu. External IDs for schedules must be unique across all menu entities. Any schedule in full menu uploads that shares the external ID of an existing schedule will overwrite that schedule's data.
name
labelRequired
String
Name used for identification in Grubhub menu management tools.
rules
label_outlineOptional
A set of non-overlapping time periods.
sections
label_outlineOptional
An array of menu sections and the items contained in them that will be active during this schedule.

FullMenuSchedule Rule

A time period and repetition rule for use in schedules within full menu uploads and modifications.

Properties
days
labelRequired
List<string>
Days of the week for which the time period applies. Must be one of [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
start
labelRequired
LocalTime
The time when this schedule begins on the days listed, in the restaurant's local time.
end
labelRequired
LocalTime
The time when this schedule ends on the days listed, in the restaurant's local time.

FullMenuSection

A category of the menu - such as appetizers, breakfast, or drinks - including the menu items that these sections contain.

Properties
external_id
labelRequired
String
A user-configured identifier for this object within the menu. External IDs for sections must be unique across all menu entities. Any sections in full menu uploads that share the external ID of an existing section will overwrite that section's data.
name
labelRequired
string
The category name displayed to the diner for online ordering. Max length of 255 characters.
description
label_outlineOptional
string
The description displayed to the diner for online ordering.
items
labelRequired
List<FullMenuItem>
An item that displays as part of this menu section, including all size modifiers and options.
media
label_outlineOptional
String
The URL for the image to display
subsections
label_outlineOptional
List
A list of `external_id` values for FullMenuSection. Subsections represent nested sections with a maximum depth of 2. This is currently only supported for convenience merchants.

FullMenuSize

Information about the size options for a FullMenuSizePrompt, including price and calorie information.

Properties
external_id
labelRequired
String
A user-configured identifier for this object within the menu. External IDs must be unique across all menu entities of this type. Any sizes in full menu uploads that share the external ID of an existing size will overwrite its data.
name
labelRequired
String
The display name of the size.
price
labelRequired
Double
The base price of the menu item at this size.
calorie_content
labelRequired
Integer
The total caloric content of the menu item at this size.
description
label_outlineOptional
String
Additional information about this particular size choice.

FullMenuSizePrompt

Size prompts for an individual item with the associated sizes and pricing schemes. All data is adjusted for the item in question.

Properties
external_id
labelRequired
String
A user-configured identifier for this object within the menu. External IDs must be unique across all menu entities of this type. Any prompts in full menu uploads that share the external ID of an existing prompt will overwrite its data.
name
labelRequired
String
The displayed prompt displayed to diners when they need to choose a size.
sizes
label_outlineOptional
List<FullMenuSize>
Information about the size options for this prompt, including price and calorie information.

FullMenuTaxRate

Tax rate information returned as part of a full menu in the PosFullMenu object. It includes all the fields from the TaxRate object, as well as an external_id and metadata.

Properties
external_id
label_outlineOptional
String
A user-configured identifier for this object within the menu. External IDs must be unique across all menu entities of this type. Any tax rate in full menu uploads that shares the external ID of an existing tax rate will overwrite that tax rate's data.
name
label_outlineOptional
string
The name of the tax rate shown in Grubhub menu management user interfaces.
rate
label_outlineOptional
double
Decimal tax rate. Must be between 0 and 1.
flat
label_outlineOptional
double
The absolute amount of tax applied to orders from this restaurant.
included_in_item_price
label_outlineOptional
boolean
If true, the tax is included in the item price displayed to the diner.

Item

Menu item for sale on Grubhub.

Extends PosVersion and wrapped by PosEntity.

Properties
name
labelRequired
string
The name shown to the diner. Max length of 255 characters.
internal_name
label_outlineOptional
string
Optional. If present, the name shown in Grubhub menu management tools.
description
label_outlineOptional
string
The description shown to the diner.
price
label_outlineOptional
double
The price of the item if it has no sizes.
excludes_coupons
label_outlineOptional
boolean
If true, the presence of this item in a Cart prevents the use of coupons on the order. NULL is equivalent to false.
size_prompt
label_outlineOptional
UUID
Reference to a SizePrompt for the menu item. May be used instead of price.
tax_rate
labelRequired
UUID
Reference to the TaxRate for the menu item. In case item level taxes are not specified, it defaults to merchant level tax.
modifier_prompts
label_outlineOptional
List<UUID>
Ordered list of references to ModifierPrompts for the menu item.
schedule_ids
label_outlineOptional
List<UUID>
List of references to RepeatingSchedules during which the menu item should be available for online ordering.
minimum_serving_size
label_outlineOptional
integer
For catering items. Fewest number of people who can be served by this item. Used as lower bound of range to be displayed to the diner.
maximum_serving_size
label_outlineOptional
integer
For catering items. Highest number of people who can be served by this item. Used as upper bound of range to be displayed to the diner.
lead_time_ms
label_outlineOptional
integer
Milliseconds of time needed to prepare this item. Primarily used for catering items.
minimum_order_quantity
label_outlineOptional
integer
For catering items. Default minimum quantity that can be ordered of this item.
maximum_order_quantity
label_outlineOptional
Integer
The maximum quantity of this item that can be ordered in either standard or catering orders. This value must be greater than `minimum_order_quantity`.
calorie_content
label_outlineOptional
string
How many calories is this item? Can be an integer, an integer with a '+' or '-' prepended, or a range of integers.
master_menu_availability
label_outlineOptional
Map
A mapping of the menu schedule UUIDs associated with this restaurant and whether this menu item is available as part of that schedule.
master_menu_pricing
label_outlineOptional
Map
List miscellaneousTaxes,
asset_id
label_outlineOptional
UUID
The identifier of the image associated with this menu item.
asset_media
label_outlineOptional
Information about the image file associated with this menu item.

Item Schedule Override

An override of a repeating schedule for an Item. Used for "86-ing" an Item that is out of stock.

Properties
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant.
item_id
labelRequired
UUID
The Grubhub ID of the item whose schedule is to be overridden
external_id
label_outlineOptional
string
Client-provided ID for the item.
intervals
labelRequired
Schedule overrides for the given item.

Item with Tags

For convenience, tags are included within Items on the response to GetFullMenu.

Extends Item.

Properties
tags
label_outlineOptional
List<Tag>
Tags associated with the Item.

LinkDTO

Information about a media file.

Properties
secure_url
label_outlineOptional
String
An SSL-protected URL to access the image file.
url
label_outlineOptional
String
An unsecured URL to access the image file.
size
label_outlineOptional
String
The amount of data that this file takes up listed as a value and unit of data measurement (e.g. "MB").
height
label_outlineOptional
Integer
The height of the image in pixels.
width
label_outlineOptional
Integer
The width of the image in pixels.

Media

An image file uploaded to a merchant account.

Properties
restaurant_id
label_outlineOptional
String
The identifier for the restaurant associated with this image.
item_id
label_outlineOptional
String
The identifier of the menu item with which this image is associated. An image does not need to be associated with a menu item.
asset_id
label_outlineOptional
String
The identifier for this image file, which can be used to retrieve, modify, or delete it.
source
label_outlineOptional
String
The name of the source file when it was originally uploaded.
public_id
label_outlineOptional
String
The public-facing name of the image file on our content delivery network (CDN).
secure_url
label_outlineOptional
String
An SSL-protected URL to access the image file.
url
label_outlineOptional
String
An unsecured URL to access the image file.
format
label_outlineOptional
String
A file extension string that identifies the type of image file.
provider
label_outlineOptional
String
The Grubhub API system that handle the upload of this image file. In this case, the provider will be "menus."
asset_type
label_outlineOptional
String
The type of file that this is. Currently, the only type is "image."
tags
label_outlineOptional
List
Indicates where the image is to be used on the Grubhub.com site. A single image can have multiple tags and therefore be used in multiple places. Acceptable tags are: - 'HEADER': Displays at the top of the page under restaurant when a diner is viewing the menu. - 'LOGO': Displays beside the restaurant name in the header when a diner is viewing the menu. - 'SEARCH': Displays beside restaurant information when a diner is searching for restaurants to order from.
links
label_outlineOptional
List<LinkDTO>
Information about the image file URL packaged as a data transfer object (DTO).
height
label_outlineOptional
Integer
The height of the image in pixels.
width
label_outlineOptional
Integer
The width of the image in pixels.
entity_type
label_outlineOptional
String
The entity that this image is attached to, currently just "restaurant".
entity_id
label_outlineOptional
String
The identifier of the attached entity.
message
label_outlineOptional
String
A text message attached to this media.
status
label_outlineOptional
String
A short description of this image's validation status.
validations_map
label_outlineOptional
A series of validation types mapped to results from the validation process.

MediaValidationResult

Indicates whether the associated image passed or failed in a specific validation category. Images are validated for the following tests:

  • VALIDATION_FOOD: Ensures that the images is of food.
  • VALIDATION_SIZE_RESOLUTION: Checks that the image dimensions are within the displayable limits.
  • VALIDATION_COPYRIGHT: Looks for existing copyrighted images that match this file.
  • VALIDATION_WATERMARK: Ensures that the file does not have a watermark on it.
  • VALIDATION_TEXT: Checks the image for embedded text.
  • VALIDATION_SAFE_SEARCH: Ensures that the image is safe for viewing by all ages and in all locations by screening for adult content.
  • VALIDATION_PHONE_NUMBER: Checks if the image contains an embedded phone number.
Properties
result
label_outlineOptional
String
Whether the image managed to "PASS" or "FAIL" the validation test.

Menu

The full menu for a given restaurant location. Note each menu entity type extends PosVersion and is wrapped in a PosEntity.

Properties
merchant_id
labelRequired
string
The short Grubhub ID for the restaurant.
restaurant_id
labelRequired
string
Deprecated. Use merchant_id, instead.
menu_info
label_outlineOptional
Top-level information about a menu.
tax_rates
label_outlineOptional
List<TaxRate>
A list of all tax rates for the menu. NOTE - Multiple tax rates can be set here and applied to individual menu entities.
menusections
label_outlineOptional
List<MenuSection>
A list of all menu sections.
items
label_outlineOptional
List<ItemWithTags>
A list of all menu items, with tags included for convenience.
sizes
label_outlineOptional
List<Size>
A list of all sizes.
sizeprompts
label_outlineOptional
List<SizePrompt>
A list of all size prompts.
modifiers
label_outlineOptional
List<Modifier>
A list of all modifiers.
modifierprompts
label_outlineOptional
A list of all modifier prompts.
modifierlists
label_outlineOptional
List<ModifierList>
A list of all modifier lists.
scheduleoverrides
label_outlineOptional
A list of all menu item schedule overrides. NOTE - update to schema in progress.
repeatingschedules
label_outlineOptional
List<Schedule>
A list of all repeating schedules.
deleteditems
label_outlineOptional
List<DeletedItem>
A list of all previously deleted items.
Example
{
    "merchant_id": "11452200",
    "menu_info": {
        "merchant_id": "11452200",
        "latest_version": {
            "merchant_id": "11452200",
            "version_id": "4BpFBH6eEeeR-ZF2C9iT9Q",
            "previous_version_id": "oGiBBHCZEeelyWk4x58mbg",
            "sections": [
                "4BpFA36eEeeR-ZF2C9iT9Q"
            ],
            "default_tax_rate": "4Gh_AGA0EeeqsTvp_HLNpw",
            "currency": "USD",
            "resolution_type": "NORMAL"
        }
    },
    "tax_rates": [
        {
            "merchant_id": "11452200",
            "uuid": "4Gh_AGA0EeeqsTvp_HLNpw",
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4Gh_AGA0EeeqsTvp_HLNpw",
                "version_id": "4GuMQGA0EeeXXeOrIbZ0kw",
                "rate": 0,
                "included_in_item_price": false
            }
        }
    ],
    "menu_sections": [
        {
            "merchant_id": "11452200",
            "uuid": "XuiMk2GrEeeXXeOrIbZ0kw",
            "external_id": "SCDS-000",
            "legacy_id": 1595357,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "XuiMk2GrEeeXXeOrIbZ0kw",
                "external_id": "SCDS-000",
                "version_id": "XuiMkmGrEeeXXeOrIbZ0kw",
                "name": "Dessert",
                "description": "Treat yourself, 2017!",
                "items": [
                    "Xug-cWGrEeeXXeOrIbZ0kw",
                    "XuiMkWGrEeeXXeOrIbZ0kw"
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "oGiBA3CZEeelyWk4x58mbg",
            "external_id": "SCDS-000",
            "legacy_id": 1595699,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "oGiBA3CZEeelyWk4x58mbg",
                "external_id": "SCDS-000",
                "version_id": "oGiBAnCZEeelyWk4x58mbg",
                "name": "Dessert",
                "description": "Treat yourself, 2017!",
                "items": [
                    "oGgy4XCZEeelyWk4x58mbg",
                    "oGiBAXCZEeelyWk4x58mbg"
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "4BpFA36eEeeR-ZF2C9iT9Q",
            "external_id": "SCDS-000",
            "legacy_id": 1596388,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4BpFA36eEeeR-ZF2C9iT9Q",
                "external_id": "SCDS-000",
                "version_id": "4BpFAn6eEeeR-ZF2C9iT9Q",
                "name": "Dessert",
                "description": "Treat yourself, 2017!",
                "items": [
                    "4Bn24X6eEeeR-ZF2C9iT9Q",
                    "4BpFAX6eEeeR-ZF2C9iT9Q"
                ]
            }
        }
    ],
    "items": [
        {
            "merchant_id": "11452200",
            "uuid": "Xug-cWGrEeeXXeOrIbZ0kw",
            "external_id": "IDS-001",
            "legacy_id": 15618312,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "Xug-cWGrEeeXXeOrIbZ0kw",
                "external_id": "IDS-001",
                "version_id": "Xug-cGGrEeeXXeOrIbZ0kw",
                "name": "Candy",
                "description": "A sweet treat.",
                "price": 2.99,
                "excludes_coupons": false,
                "tax_rate": "4Gh_AGA0EeeqsTvp_HLNpw",
                "modifier_prompts": [
                    "XugXYWGrEeeXXeOrIbZ0kw"
                ],
                "schedule_ids": [],
                "tags": [
                    {
                        "group": "LEGACY",
                        "name": "ALCOHOL"
                    },
                    {
                        "group": "LEGACY",
                        "name": "DESSERT"
                    },
                    {
                        "group": "LEGACY",
                        "name": "DRINK"
                    }
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "XuiMkWGrEeeXXeOrIbZ0kw",
            "external_id": "IDS-001",
            "legacy_id": 15618313,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "XuiMkWGrEeeXXeOrIbZ0kw",
                "external_id": "IDS-001",
                "version_id": "XuiMkGGrEeeXXeOrIbZ0kw",
                "name": "Chocaolate Covered Pretzels",
                "description": "Sweet and salty pick-me-up.",
                "price": 5,
                "excludes_coupons": false,
                "tax_rate": "4Gh_AGA0EeeqsTvp_HLNpw",
                "modifier_prompts": [],
                "schedule_ids": [],
                "tags": []
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "oGgy4XCZEeelyWk4x58mbg",
            "external_id": "IDS-000",
            "legacy_id": 15619835,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "oGgy4XCZEeelyWk4x58mbg",
                "external_id": "IDS-000",
                "version_id": "oGgy4HCZEeelyWk4x58mbg",
                "name": "Candy",
                "description": "A sweet treat.",
                "price": 2.99,
                "excludes_coupons": false,
                "tax_rate": "4Gh_AGA0EeeqsTvp_HLNpw",
                "modifier_prompts": [
                    "oGgL0XCZEeelyWk4x58mbg"
                ],
                "schedule_ids": [],
                "tags": [
                    {
                        "group": "LEGACY",
                        "name": "ALCOHOL"
                    },
                    {
                        "group": "LEGACY",
                        "name": "DRINK"
                    }
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "oGiBAXCZEeelyWk4x58mbg",
            "external_id": "IDS-001",
            "legacy_id": 15619836,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "oGiBAXCZEeelyWk4x58mbg",
                "external_id": "IDS-001",
                "version_id": "oGiBAHCZEeelyWk4x58mbg",
                "name": "Chocaolate Covered Pretzels",
                "description": "Sweet and salty pick-me-up.",
                "price": 5,
                "excludes_coupons": false,
                "tax_rate": "4Gh_AGA0EeeqsTvp_HLNpw",
                "modifier_prompts": [],
                "schedule_ids": [],
                "tags": []
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "4Bn24X6eEeeR-ZF2C9iT9Q",
            "external_id": "IDS-000",
            "legacy_id": 15621568,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4Bn24X6eEeeR-ZF2C9iT9Q",
                "external_id": "IDS-000",
                "version_id": "4Bn24H6eEeeR-ZF2C9iT9Q",
                "name": "Candy",
                "description": "A sweet treat.",
                "price": 2.99,
                "excludes_coupons": false,
                "tax_rate": "4Gh_AGA0EeeqsTvp_HLNpw",
                "modifier_prompts": [
                    "4BnP0X6eEeeR-ZF2C9iT9Q"
                ],
                "schedule_ids": [],
                "tags": [
                    {
                        "group": "LEGACY",
                        "name": "DRINK"
                    }
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "4BpFAX6eEeeR-ZF2C9iT9Q",
            "external_id": "IDS-001",
            "legacy_id": 15621569,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4BpFAX6eEeeR-ZF2C9iT9Q",
                "external_id": "IDS-001",
                "version_id": "4BpFAH6eEeeR-ZF2C9iT9Q",
                "name": "Chocaolate Covered Pretzels",
                "description": "Sweet and salty pick-me-up.",
                "price": 5,
                "excludes_coupons": false,
                "tax_rate": "4Gh_AGA0EeeqsTvp_HLNpw",
                "modifier_prompts": [],
                "schedule_ids": [],
                "tags": []
            }
        }
    ],
    "sizes": [],
    "size_prompts": [],
    "modifiers": [
        {
            "merchant_id": "11452200",
            "uuid": "XueiMWGrEeeXXeOrIbZ0kw",
            "external_id": "MDO-000",
            "legacy_id": 21200166,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "XueiMWGrEeeXXeOrIbZ0kw",
                "external_id": "MDO-000",
                "version_id": "XueiMGGrEeeXXeOrIbZ0kw",
                "name": "Gummies",
                "description": "Delicious little chewy treats.",
                "default_price": 0,
                "submodifiers": []
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "XufJQWGrEeeXXeOrIbZ0kw",
            "external_id": "MDO-001",
            "legacy_id": 21200167,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "XufJQWGrEeeXXeOrIbZ0kw",
                "external_id": "MDO-001",
                "version_id": "XufJQGGrEeeXXeOrIbZ0kw",
                "name": "Jelly Beans",
                "description": "Surprise flavors everyone is sure to enjoy!",
                "default_price": 0
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "oGe9sXCZEeelyWk4x58mbg",
            "external_id": "MDO-000",
            "legacy_id": 21209856,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "oGe9sXCZEeelyWk4x58mbg",
                "external_id": "MDO-000",
                "version_id": "oGe9sHCZEeelyWk4x58mbg",
                "name": "Gummies",
                "description": "Delicious little chewy treats.",
                "default_price": 0
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "oGfkwXCZEeelyWk4x58mbg",
            "external_id": "MDO-001",
            "legacy_id": 21209857,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "oGfkwXCZEeelyWk4x58mbg",
                "external_id": "MDO-001",
                "version_id": "oGfkwHCZEeelyWk4x58mbg",
                "name": "Jelly Beans",
                "description": "Surprise flavors everyone is sure to enjoy!",
                "default_price": 0
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "4BmBsX6eEeeR-ZF2C9iT9Q",
            "external_id": "MDO-000",
            "legacy_id": 21213279,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4BmBsX6eEeeR-ZF2C9iT9Q",
                "external_id": "MDO-000",
                "version_id": "4BmBsH6eEeeR-ZF2C9iT9Q",
                "name": "Gummies",
                "description": "Delicious little chewy treats.",
                "default_price": 0
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "4BmBs36eEeeR-ZF2C9iT9Q",
            "external_id": "MDO-001",
            "legacy_id": 21213280,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4BmBs36eEeeR-ZF2C9iT9Q",
                "external_id": "MDO-001",
                "version_id": "4BmBsn6eEeeR-ZF2C9iT9Q",
                "name": "Jelly Beans",
                "description": "Surprise flavors everyone is sure to enjoy!",
                "default_price": 0
            }
        }
    ],
    "modifier_prompts": [
        {
            "merchant_id": "11452200",
            "uuid": "XugXYWGrEeeXXeOrIbZ0kw",
            "external_id": "MDP-001",
            "legacy_id": 5492700,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "XugXYWGrEeeXXeOrIbZ0kw",
                "external_id": "MDP-001",
                "version_id": "XugXYGGrEeeXXeOrIbZ0kw",
                "name": "Choose your candy",
                "internal_name": "Candy Selection 1",
                "modifier_list": "XufwUWGrEeeXXeOrIbZ0kw",
                "default_selection_model": {
                    "minimum_quantity": 1,
                    "maximum_quantity": 1
                },
                "sized_selection_models": {},
                "submodifiers": []
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "oGgL0XCZEeelyWk4x58mbg",
            "external_id": "MDP-001",
            "legacy_id": 5494667,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "oGgL0XCZEeelyWk4x58mbg",
                "external_id": "MDP-001",
                "version_id": "oGgL0HCZEeelyWk4x58mbg",
                "name": "Choose your candy",
                "internal_name": "Candy Selection 1",
                "modifier_list": "oGfkw3CZEeelyWk4x58mbg",
                "default_selection_model": {
                    "minimum_quantity": 1,
                    "maximum_quantity": 1
                },
                "sized_selection_models": {},
                "submodifiers": []
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "4BnP0X6eEeeR-ZF2C9iT9Q",
            "external_id": "MDP-001",
            "legacy_id": 5495897,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4BnP0X6eEeeR-ZF2C9iT9Q",
                "external_id": "MDP-001",
                "version_id": "4BnP0H6eEeeR-ZF2C9iT9Q",
                "name": "Choose your candy",
                "internal_name": "Candy Selection 1",
                "modifier_list": "4BmowX6eEeeR-ZF2C9iT9Q",
                "default_selection_model": {
                    "minimum_quantity": 1,
                    "maximum_quantity": 1
                },
                "sized_selection_models": {},
                "submodifiers": []
            }
        }
    ],
    "modifier_lists": [
        {
            "merchant_id": "11452200",
            "uuid": "XufwUWGrEeeXXeOrIbZ0kw",
            "external_id": "MDL-001",
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "XufwUWGrEeeXXeOrIbZ0kw",
                "external_id": "MDL-001",
                "version_id": "XufwUGGrEeeXXeOrIbZ0kw",
                "name": "Candy Choices",
                "modifiers": [
                    "XueiMWGrEeeXXeOrIbZ0kw",
                    "XufJQWGrEeeXXeOrIbZ0kw"
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "oGfkw3CZEeelyWk4x58mbg",
            "external_id": "MDL-001",
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "oGfkw3CZEeelyWk4x58mbg",
                "external_id": "MDL-001",
                "version_id": "oGfkwnCZEeelyWk4x58mbg",
                "name": "Candy Choices",
                "modifiers": [
                    "oGe9sXCZEeelyWk4x58mbg",
                    "oGfkwXCZEeelyWk4x58mbg"
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "4BmowX6eEeeR-ZF2C9iT9Q",
            "external_id": "MDL-001",
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "4BmowX6eEeeR-ZF2C9iT9Q",
                "external_id": "MDL-001",
                "version_id": "4BmowH6eEeeR-ZF2C9iT9Q",
                "name": "Candy Choices",
                "modifiers": [
                    "4BmBsX6eEeeR-ZF2C9iT9Q",
                    "4BmBs36eEeeR-ZF2C9iT9Q"
                ]
            }
        }
    ],
    "schedule_overrides": {
        "merchant_id": 11452200,
        "item_overrides": [],
        "modifier_overrides": []
    },
    "repeating_schedules": [
        {
            "merchant_id": "11452200",
            "uuid": "xkOOAHCaEeeedRUXTq6Q9w",
            "external_id": "SCHD-XTRA",
            "legacy_id": 114072,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "xkOOAHCaEeeedRUXTq6Q9w",
                "external_id": "SCHD-XTRA",
                "version_id": "xmZ_UHCaEeeFNt8YZ8Vx8g",
                "name": "Weekday Lunch",
                "type": "WEEKLY",
                "rules": [
                    {
                        "days_of_week": [
                            "MONDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "14:45:00.000"
                    },
                    {
                        "days_of_week": [
                            "TUESDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "19:00:00.000"
                    },
                    {
                        "days_of_week": [
                            "WEDNESDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "19:00:00.000"
                    }
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "IUWmoG4ZEeeSN9dYmrdxnQ",
            "external_id": "SCHD-LUNCH",
            "legacy_id": 114068,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "IUWmoG4ZEeeSN9dYmrdxnQ",
                "external_id": "SCHD-LUNCH",
                "version_id": "rXO2kIQ-Eee02ddYmrdxnQ",
                "previous_version_id": "5_FhgHCaEeeSN9dYmrdxnQ",
                "name": "Weekday Lunch",
                "type": "WEEKLY",
                "rules": [
                    {
                        "days_of_week": [
                            "TUESDAY",
                            "MONDAY",
                            "WEDNESDAY",
                            "THURSDAY",
                            "FRIDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "14:45:00.000"
                    }
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "FI014GHQEeeqsTvp_HLNpw",
            "external_id": "SCHD-LUNCH",
            "legacy_id": 114015,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "FI014GHQEeeqsTvp_HLNpw",
                "external_id": "SCHD-LUNCH",
                "version_id": "rXO2kIQ-Eee02ddYmrdxnQ",
                "previous_version_id": "08m-kGHSEeeY-I3xNRk3Jw",
                "name": "Weekday Lunch",
                "type": "WEEKLY",
                "rules": [
                    {
                        "days_of_week": [
                            "TUESDAY",
                            "MONDAY",
                            "WEDNESDAY",
                            "THURSDAY",
                            "FRIDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "14:45:00.000"
                    }
                ]
            }
        },
        {
            "merchant_id": "11452200",
            "uuid": "C_rqAGHOEeeY-I3xNRk3Jw",
            "legacy_id": 114014,
            "latest_version": {
                "merchant_id": "11452200",
                "uuid": "C_rqAGHOEeeY-I3xNRk3Jw",
                "version_id": "C_33QGHOEeeuxZ3VuFMRpA",
                "name": "From GFR",
                "type": "WEEKLY",
                "rules": [
                    {
                        "days_of_week": [
                            "MONDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "14:45:00.000"
                    },
                    {
                        "days_of_week": [
                            "TUESDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "19:00:00.000"
                    },
                    {
                        "days_of_week": [
                            "WEDNESDAY"
                        ],
                        "start_time": "10:45:00.000",
                        "end_time": "19:00:00.000"
                    },
                    {
                        "days_of_week": [
                            "THURSDAY"
                        ],
                        "start_time": "07:00:00.000",
                        "end_time": "19:00:00.000"
                    },
                    {
                        "days_of_week": [
                            "FRIDAY"
                        ],
                        "start_time": "07:00:00.000",
                        "end_time": "19:00:00.000"
                    }
                ]
            }
        }
    ]
}

Menu Entity Change Operation

An operation to perform on a menu entity. Used in the bulk PATCH request.

Properties
op
labelRequired
string
The operation to perform on the entity. Must be one of [add, remove, replace]
entity_type
labelRequired
string
The type of menu entity being operated upon. Options include- * item * modifier * modifierlist * modifierprompt * size * sizeprompt * taxrate * menuinfo
uuid
label_outlineOptional
UUID
For Delete or Replace operations, a reference to the menu entity being operated upon.
external_id
label_outlineOptional
string
Should be included on all Add operations, if the client plans to leverage external IDs. For Delete or Replace operations, a reference to the menu entity being operated upon. May result in multiple entities being operated upon, if the external_id maps to multiple Grubhub entities of the same type. If an external_id is included on a Replace operation, in addition to a uuid, and there has not yet been assigned an external_id for the entity, the external_id will be associated with the entity.
version_id
label_outlineOptional
UUID
Required for Replace operations. A reference to the most recent version of the entity.
value
labelRequired
Object
The new menu entity to be added or to replace a previous version.

Menu Entity Change Operation Result

The result of a change operation.

Properties
status
labelRequired
string
The result of the operation: one of [ok, invalid, versionmismatch].
uuid
labelRequired
UUID
The UUID of the menu entity that was operated on.
version_id
labelRequired
UUID
The version ID for the entity that was operated upon.
external_id
label_outlineOptional
string
Client-provided identifier for the entity operated upon.
entity_type
label_outlineOptional
Menu entity type
errors
label_outlineOptional
A list of validation errors for the operation.

Menu Entity Type

Type of menu entity.

Type

string

Possible Values
  • item
  • menusection
  • modifier
  • modifierlist
  • modifierprompt
  • schedule
  • size
  • sizeprompt
  • taxrate
  • menuinfo

Menu Info

Top-level information about a menu. There is exactly one Menu Info per restaurant.

Extends PosVersion and wrapped by PosEntity.

Properties
sections
labelRequired
List<UUID>
An ordered list of menu section references. The order determines the display order on the restaurant's Grubhub menu page. Menu sections not included in this list will not be displayed on Grubhub.
default_tax_rate
label_outlineOptional
UUID
DEPRECATED. Tax rates should be set using the merchant tax rates endpoint.
currency
labelRequired
string
The currency accepted by the restaurant.
externally_managed
label_outlineOptional
boolean
DEPRECATED. This flag no longer affects restaurant menus.

Menu Section

A menu category and referenced items for display on the restaurant's Grubhub menu page.

Extends PosVersion and wrapped by PosEntity.

Properties
name
labelRequired
string
The name displayed to the diner for online ordering. Max length of 255 characters.
internal_name
label_outlineOptional
string
If present, the name shown on Grubhub menu management tools in place of the name.
description
label_outlineOptional
string
The description displayed to the diner for online ordering.
items
labelRequired
List<UUID>
Ordered list of references to menu items to be displayed within this section for online ordering.

MerchantStatus

The current state or result of a menu ingestion job. Each status will be communicated with both a standardized status string and a human-readable description.

Properties
merchant_id
label_outlineOptional
String
The partner resource ID of the restaurant whose specific menu ingestion job this status applies to.
status
label_outlineOptional
String
A code that indicates the current state of the menu ingestion job. Will be one of the following: * `QUEUED` - Waiting to process. * `REQUESTED` - The ingestion process has been received, but it has not begun processing. Replaces `QUEUED`, but that status is not deprecated. * `PROCESSING` - Job is in progress, possibly in retry cycle. * `SUCCESS` - Menu successfully updated. * `PARTIAL_SUCCESS` - Menu updated successfully, but a minor portion, like media or tagging, failed. * `FAILED` - Menu could not be updated. * `FAILED_VALIDATION` - Menu request payload/URL could not be validated.
menu_proof_url
label_outlineOptional
String
The proof URL to view the ingested menu on the front-end. This is only returned when the menu ingestion is successful.
details
label_outlineOptional
List
A list where each element is a human-readable description of the status of this job or the problem encountered, if any. For example: ["Control details: jobId is ...", "Other details"], ["Error message"]

Modifier

A selection, modification, or addition to an Item, which may or may not affect the final price of the Item.

Extends PosVersion and wrapped by PosEntity.

Properties
name
labelRequired
string
The name displayed to the diner
internal_name
label_outlineOptional
string
Optional. If present, name displayed on Grubhub menu management tools
description
label_outlineOptional
string
The description displayed to the diner.
default_price
labelRequired
double
Default price of the modifier. Applies if the item has no sizes or if there is no modifier SizePrice for the size selected.
sized_prices
label_outlineOptional
List<SizedPrice>
Optional. An ordered list of sized prices for this modifier. I.e., the modifier price depends on the Size selected for the Item.
tax_rate
label_outlineOptional
UUID
The UUID of the tax rate object that contains information about the taxes applicable to this particular modifier. If no tax rate is specified, this will use the overall tax rate by default.
submodifiers
label_outlineOptional
Not currently supported. An ordered list of modifier prompts that contain the submodifiers to this modifier.

Modifier Prompt

Configuration option for an Item. Modifier Prompts are global and can be shared by multiple Items.

Extends PosVersion and wrapped by PosEntity.

Properties
name
labelRequired
string
Name displayed to the diner.
internal_name
label_outlineOptional
string
Optional. If present, the name shown in Grubhub menu management tools
modifier_list
labelRequired
UUID
An reference to a ModifierList.
default_selection_model
labelRequired
A Modifier Selection Model, defining how many modifiers should be selected.
sized_selection_model
label_outlineOptional
Map
Not yet supported. In the future, this will enable different selection models, based on selected Size.
price_adjustment
label_outlineOptional
Adjustment to the price of every modifier. NULL indicates no adjustment.

Modifier Prompt Selection Settings

The minimum and maximum number of unique modifier options that can be selected within a prompt.

Properties
minimum_quantity
label_outlineOptional
Integer
The minimum number of unique options that the diner can select for this prompt. Use 0 to set no minimum.
maximum_quantity
label_outlineOptional
Integer
The maximum number of unique options that the diner can select for this prompt. Use -1 to set no maximum.

Modifier Selection Model

Rules for modifier selection. Applied to a Modifier Prompt.

  • -1 denotes 'unlimited' for maximum_quantity
  • 127 is the maximum value for any of these properties
  • minimum_quantity must be less than or equal to the number of modifiers in the ModifierList.

Extends PosVersion and wrapped by PosEntity.

Properties
minimum_quantity
labelRequired
integer
Minimum number of selections for the entire modifier prompt. Must be 0 or more.
included_quantity
label_outlineOptional
integer
DEPRECATED. Number of selections included for free, for the entire modifier prompt.
maximum_quantity
labelRequired
integer
Maximum number of selections for the entire modifier prompt.
batch_modifier_quantity
label_outlineOptional
integer
DEPRECATED. The number of selections for any given modifier must be a multiple of this number. A common use case would be choosing sauce for wings in increments of 6.
maximum_modifier_quantity
label_outlineOptional
integer
DEPRECATED. Maximum number of selections for any single modifier. For example, a pizza may support double, but not triple toppings, in which case the value would be 2.

ModifierList

An array of modifiers that can apply to a menu item.

Properties
name
label_outlineOptional
String
The internal name of this list of modifiers.
modifiers
label_outlineOptional
List<Modifier>
The individual modifiers that compose this list.

ModifierPromptQuantitySettings

The total minimum and maximum quantities that can be added for all modifier options in this prompt.

Properties
minimum_units
label_outlineOptional
Integer
The total minimum quantity that must be selected across all modifiers in a prompt.
maximum_units
label_outlineOptional
Integer
The total maximium quantity that can be selected across all modifiers in a prompt. *DO NOT use -1 as an integer for unlimited quantity. Instead use a high number, ie 99.*

ModifierQuantitySettings

Contains default, maximum, and custom increments for a single modifier. The properties below will be contained in a sub-object identified by the external_id of the modifier in question.

Properties
default_units
label_outlineOptional
Integer
The number of units of this modifier already entered into the interface when the diner first selects these associated menu item.
maximum_units
label_outlineOptional
Integer
The maximum number of units that the diner can add of this modifier. *DO NOT use -1 as an integer for unlimited quantity. Instead use a high number, ie 99.*
unit_increment
label_outlineOptional
Integer
The number of units added per incremental or decremental action.

POS Entity

Each menu entity extends this common versioned menu entity.

Properties
restaurant_id
labelRequired
string
Deprecated. Use merchant_id, instead.
merchant_id
labelRequired
string
The short Grubhub ID for the merchant to which this entity belongs.
uuid
labelRequired
UUID
The unique ID for the entity.
external_id
label_outlineOptional
string
External ID provided by the client.
legacy_id
label_outlineOptional
integer
Grubhub integer ID for the entity, currently returned on orders. Will eventually be deprecated.
latest_version
label_outlineOptional
The latest version of the menu entity.

POS Item Schedule Overrides

An override of a repeating schedule for Item

Properties
merchant_id
label_outlineOptional
String
The short Grubhub ID for the restaurant. Corresponds to a single location.
item_id
label_outlineOptional
String
Grubhub UUID for the menu item.
external_id
label_outlineOptional
String
External id of the item
intervals
label_outlineOptional
Schedule overrides for given item.

POS Item Tag

Tag, extended to include merchant and item metadata.

Properties
merchant_id
labelRequired
string
The short ID for the merchant to which this tag belongs.
item_id
labelRequired
UUID
The unique identifier for the menu item to which this tag belongs.
tags
label_outlineOptional
List<Tag>
A list of tags for this menu item for this merchant.
external_id
labelRequired
string
External ID of the menu item to which these tags belong. External IDs must be unique across all menu entities of this type. Any tags in full menu uploads that share the external ID of an existing tag will overwrite that tag's data.

POS Modifier Schedule Overrides

An override of a repeating schedule for Modifier

Properties
merchant_id
label_outlineOptional
String
The short Grubhub ID for the restaurant. Corresponds to a single location.
modifier_id
label_outlineOptional
String
Grubhub UUID for the modifier
external_id
label_outlineOptional
String
External id of the modifier
intervals
label_outlineOptional
Schedule overrides for given Modifier

POS Version

A version of a menu entity. Each menu entity type extends PosVersion within PosEntity.

Properties
restaurant_id
labelRequired
string
Deprecated. Use merchant_id, instead.
merchant_id
labelRequired
string
The short Grubhub ID for the merchant to which this entity belongs.
uuid
labelRequired
UUID
The unique ID for the entity.
external_id
label_outlineOptional
string
External ID provided by the client.
version_id
labelRequired
UUID
The unique ID for this version of this entity.
previous_version_id
label_outlineOptional
UUID
The unique ID for the most recent version of this entity before the present version.

POSMenuInfo

Top-level menu info included as part of a PosFullMenu object. Contains restaurant media.

Properties
header_media
label_outlineOptional
String
The URL of the image used as the header on the Grubhub menu. This must include the extension of the media file; otherwise, the API will not know how to handle the file type.
logo_media
label_outlineOptional
String
The URL of the image used as the restaurant logo on the Grubhub menu. This must include the extension of the media file; otherwise, the API will not know how to handle the file type.
search_media
label_outlineOptional
String
The URL of the image used to represent the restaurant in search results. This must include the extension of the media file; otherwise, the API will not know how to handle the file type.

Pos Schedule Overrides

A list of override schedules for items and modifiers

Properties
merchant_id
label_outlineOptional
String
The short Grubhub ID for the restaurant. Corresponds to a single location.
item_overrides
label_outlineOptional
Schedule override for item
modifier_overrides
label_outlineOptional
Schedule override for modifier

PosFullMenu

A full restaurant menu, including sections, menu items, schedules, and all menu info. This object may be compressed in a gzip file in order to save bandwidth, as it contains a substantial amount of data.

While this and the Menu object return similar information, they organize that information in different ways. Menu presents each discreet set of information in its own separate object. This object organizes it in the way an actual menu would be organized; schedules contain sections, which contain menu items.

Properties
info
labelRequired
Top-level information about the menu, includes restaurant media.
tax_rates
labelRequired
Detailed information about the tax rate applied to this menu's items.
schedules
labelRequired
The primary menu structure organized into sections of the menu - e.g. Appetizers, Salads, Dinner - and the menu items that those sections contain. Each menu item includes all modifiers.
Example
{
  "info":
  {
    "header_media": "http://res.cloudinary.com/grubhub/image/upload/sjhdfahdfsa.jpg",
    "logo_media": "http://res.cloudinary.com/grubhub/image/upload/adfhsdjfdf/ode8r7fhs.jpg",
    "search_media": "http://res.cloudinary.com/grubhub/image/upload/sadk8sa/9ew8rush.jpg"
  },
  "tax_rates": [
    {
      "external_id": "79b5fc81",
      "name": "Default Tax Rate",
      "rate": 0.05,
      "included_in_item_price": true,
      "valid": true
    }
  ],
  "schedules": [
    {
      "external_id": "826991a0",
      "name": "Sunday and Monday"
      "rules": [
        {
          "days": [
            "SUNDAY"
          ],
          "start": "07:00:00.000",
          "end": "19:00:00.000"
        },
        {
          "days": [
            "MONDAY"
          ],
          "start": "07:00:00.000",
          "end": "19:00:00.000"
        }
      ],
      "sections": [
        {
          "external_id": "79ffafb1",
          "name": "APPETIZERS",
          "description": "APPETIZERS",
          "items": [
            {
              "external_id": "79fb9101",
              "name": "Antipasto Misto",
              "description": "Brick oven-roasted peppers, zucchini, artichokes, olives, prosciutto, fresh asparagus, broccoli, fresh mozzarella and grape tomatoes served with baby field greens and balsamic vinaigrette. ",
              "calorie_content": "100",
              "minimum_serving_size": 0,
              "maximum_serving_size": 0,
              "minimum_order_quantity": 1,
              "media": "http://some.image.com/123",
              "tax_rate": "79b5fc81",
              "price": 399.0,
              "excludes_coupons": false,
              "size_prompt": {
                "external_id": "80747863",
                "name": "Choose a size",
                "sizes": [
                  {
                    "external_id": "21b83e1f",
                    "name": "Small",
                    "price": 2.99,
                    "calorie_content": "150"
                  },
                  {
                    "external_id": "fbd68d5f",
                    "name": "Large",
                    "price": 4.99,
                    "calorie_content": "250"
                  }
                ]
              },
              "deal": true
              "tags": [
                {
                  "group": "LEGACY",
                  "name": "SODIUM_WARNING"
                }
              ],
              "modifier_categories": [
                {
                  "external_id": "79f416f0",
                  "name": "Antipasto Misto Remove Ingredients",
                  "min": 0,
                  "max": 8,
                  "included": 0,
                  "batch_quantity": 1,
                  "price_adjustment": {
                    "type": "ADD",
                    "value": 0.5
                  },
                  "modifiers": [
                    {
                      "external_id": "79e23ca1",
                      "name": "NO OLIVES",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79e45f81",
                      "name": "NO DRESSING",
                      "description": "NO DRESS",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79e4d4b0",
                      "name": "NO TOMATO",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79e4fbc1",
                      "name": "NO BROCCOLI",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79e549e1",
                      "name": "NO CHEESE",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79e59801",
                      "name": "NO PEPPERS",
                      "description": "NO PEPPRS",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79e5e621",
                      "name": "NO ZUCCHINI",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79e63441",
                      "name": "NO ASPARAGUS",
                      "price": 0.0,
                      "calorie_content": "100"
                    }
                  ]
                }
              ]
            },
            {
              "external_id": "79fc5451",
              "name": "Mozzarella Fritta",
              "description": "Breaded mozzarella pan-fried in extra-virgin olive oil served over plum tomato sauce with fresh basil. \r\n",
              "calorie_content": "100",
              "minimum_serving_size": 0,
              "maximum_serving_size": 0,
              "minimum_order_quantity": 1,
              "tax_rate": "79b5fc81",
              "price": 799.0,
              "excludes_coupons": false,
              "tags": [],
              "modifier_categories": []
            },
            {
              "external_id": "79fdb3e1",
              "name": "Mussel Caruso",
              "description": "Tender mussels cooked to order in your choice of a fragrant herbed white wine sauce or our spicy plum tomato sauce.",
              "calorie_content": "100",
              "minimum_serving_size": 0,
              "maximum_serving_size": 0,
              "minimum_order_quantity": 1,
              "tax_rate": "79b5fc81",
              "price": 999.0,
              "excludes_coupons": false,
              "tags": [],
              "modifier_categories": [
                {
                  "external_id": "79fd3eb1",
                  "name": "Mussels Caruso Sauce ",
                  "min": 0,
                  "max": 2,
                  "included": 0,
                  "batch_quantity": 1,
                  "modifiers": [
                    {
                      "external_id": "79fca271",
                      "name": "Spicy Plum Tomato Sauce",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "79fcf091",
                      "name": "White Wine Sauce ",
                      "price": 0.0,
                      "calorie_content": "100"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "external_id": "7a1d22c0",
          "name": "SPECIALTIES",
          "items": [
            {
              "external_id": "7a16e131",
              "name": "Grilled Steak & Chicken Combo*",
              "description": "A combination of 6 oz. of sliced flat iron steak and a lemon-thyme chicken breast over tomatoes. Served with mashed potatoes and fresh asparagus. ",
              "calorie_content": "100",
              "minimum_serving_size": 0,
              "maximum_serving_size": 0,
              "minimum_order_quantity": 1,
              "tax_rate": "79b5fc81",
              "price": 1799.0,
              "excludes_coupons": false,
              "tags": [],
              "modifier_categories": [
                {
                  "external_id": "7a142211",
                  "name": "Meat Temperature",
                  "min": 0,
                  "max": 5,
                  "included": 0,
                  "batch_quantity": 1,
                  "modifiers": [
                    {
                      "external_id": "7a1337b1",
                      "name": "RARE",
                      "description": "**  RARE **",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a135ec1",
                      "name": "MEDIUM RARE",
                      "description": "**MED RARE**",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a13ace0",
                      "name": "MEDIUM",
                      "description": "** MEDIUM **",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a13d3f1",
                      "name": "MEDIUM WELL",
                      "description": "**MED WEL**",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a13fb01",
                      "name": "WELL DONE",
                      "description": "**WEL DONE**",
                      "price": 0.0,
                      "calorie_content": "100"
                    }
                  ]
                },
                {
                  "external_id": "7a15a8b1",
                  "name": "Add a Salad for $2.99",
                  "min": 0,
                  "max": 5,
                  "included": 0,
                  "batch_quantity": 1,
                  "modifiers": [
                    {
                      "external_id": "7a147031",
                      "name": "Caesar-Side",
                      "price": 299.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a149741",
                      "name": "INSAL W/BALS VIN",
                      "price": 299.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a14e561",
                      "name": "INSAL NO DRESS",
                      "price": 299.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a153381",
                      "name": "INSAL W/HOUSE",
                      "price": 299.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a155a91",
                      "name": "INSAL W/BURGNDY",
                      "price": 299.0,
                      "calorie_content": "100"
                    }
                  ]
                },
                {
                  "external_id": "7a169311",
                  "name": "Grilled Steak & Chicken Combo Remove Ingredients",
                  "min": 0,
                  "max": 3,
                  "included": 0,
                  "batch_quantity": 1,
                  "modifiers": [
                    {
                      "external_id": "7a15cfc1",
                      "name": "NO TOMATO",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a15f6d1",
                      "name": "NO POTATOES",
                      "price": 0.0,
                      "calorie_content": "100"
                    },
                    {
                      "external_id": "7a1644f1",
                      "name": "NO ASPARAGUS",
                      "price": 0.0,
                      "calorie_content": "100"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "external_id": null,
      "name": "Full Week"
      "rules": [
        {
          "days": [
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ],
          "start": "00:00:00.000",
          "end": "23:59:59.999"
        }
      ],
      "sections": [
        {
          "external_id": "79ffafb1",
          "name": "APPETIZERS",
          "description": "APPETIZERS",
          "items": [
            {
              "external_id": "79fc0631",
              "name": "Antipasto Sampler",
              "description": "Mozzarella Fritta, Tuscan Chicken Wings, Meatballs and Tomato Bruschetta.",
              "calorie_content": "100",
              "minimum_serving_size": 0,
              "maximum_serving_size": 0,
              "minimum_order_quantity": 1,
              "tax_rate": "79b5fc81",
              "price": 1099.0,
              "excludes_coupons": false,
              "tags": [],
              "modifier_categories": []
            }
          ]
        }
      ]
    }
  ]
}

PosFullMenuUpdateResult

The response payload from a full menu ingestion.

Properties
job_id
label_outlineOptional
String
An identifier that you can use to check the status of this update job.

PosFullMenuUpdateStatus

The current status of a menu ingestion job.

Properties
job_id
label_outlineOptional
String
The identifier of the job that the status messages come from.
merchant_statuses
label_outlineOptional
The current state or result of a menu ingestion job.

PosFullMenuValidationResult

The results from a full menu validation. If successful, the valid property will be true. If the validation fails, the valid property will be false and the validation_errors property will indicate which menu field caused the failure and why.

Properties
valid
label_outlineOptional
boolean
Indicates whether the input menu is valid for ingestion.
validation_errors
label_outlineOptional
List
If the validation fails, this field contains a description of the problem.

PosScheduleOverrideExternalIdRequest

Information about a schedule override for a specific menu item, whether the item should be hidden (86'd) or shown (seasonal items).

Properties
op
labelRequired
String
The type of operation to perform on this menu item's schedule overrides, either ADD (adds a new override schedule) or UPDATE (replaces the existing schedule override).
curEndDate
label_outlineOptional
DateTime
For update operations, the current end date of the override being updated.
start
labelRequired
DateTime
The beginning of the temporary override period.
end
labelRequired
DateTime
The end of the temporary override period. A sentinel value of Dec-31-9999 is used to "archive" an item.
show_or_hide
labelRequired
string
Type of override. Must be one of [SHOW, HIDE].

Price Adjustment

An adjustment to an existing base price.

Extends PosVersion and wrapped by PosEntity.

Properties
type
labelRequired
String
Type of price adjustment. One of the following - OVERRIDE, MULTIPLY, and ADD.
value
labelRequired
double
The value of the adjustment, interpreted based on the provided type.

Price Adjustment Type

DEPRECATED. Type of price adjustment:

  • Override: The base price is replaced with the adjustment value (value must be nonnegative)
  • Multiply: The base price is multiplied by the adjustment value (value must be nonnegative)
  • Add: The adjustment value is added to the base price. If negative, the resulting minimum base price will not adjust below 0.
Type

string

Possible Values
  • OVERRIDE
  • MULTIPLY
  • ADD

Schedule

A schedule during which an Item may be made available. Typical usages include Breakfast, Lunch, Dinner, Weekend Brunch, etc.

Extends PosVersion and wrapped by PosEntity.

Properties
name
label_outlineOptional
string
Name used for identification in Grubhub menu management tools.
type
labelRequired
string
Type of schedule. Currently, the only valid value is 'WEEKLY'
rules
labelRequired
List<ScheduleRule>
A set of non-overlapping time periods.

Schedule Override

An override of a repeating schedule for an Item. Used for "86-ing" an Item that is out of stock.

Extends PosVersion and wrapped by PosEntity.

Properties
start
label_outlineOptional
DateTime
The beginning of the temporary override period.
end
label_outlineOptional
DateTime
The end of the temporary override period. A sentinel value of Dec-31-9999 is used to "archive" an item.
show_or_hide
label_outlineOptional
string
Type of override. Must be one of [SHOW, HIDE].

Schedule Rule

A time period and repetition rule for use in Schedules.

Extends PosVersion and wrapped by PosEntity.

Properties
days_of_week
labelRequired
List<string>
Days of the week for which the time period applies. Must be one of [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
rule_interval
labelRequired
The time interval applied for the days_of_week.

Schedule Rule Interval

A time interval for use in ScheduleRules.

Extends PosVersion and wrapped by PosEntity.

Properties
start
labelRequired
LocalTime
The start time of the interval, in the restaurant's local time.
end
labelRequired
LocalTime
The end time of the interval, in the restaurant's local time.

Size

For use in the Item and Modifier pricing models, and the Modifier Prompt selection models.

Extends PosVersion and wrapped by PosEntity.

Properties
name
labelRequired
string
Name displayed to diners.
internal_name
label_outlineOptional
string
Optional. If present, name displayed in Grubhub menu management tools.

Size Prompt

Collection of Sizes and associated metadata, for use in the Item pricing model.

Extends PosVersion and wrapped by PosEntity.

Properties
name
labelRequired
string
Name displayed to diners. This should be the singular form of whatever the "sizes" represent. So, it could be "size", as in "Choose a size", or "meat", as in "Choose a meat", etc.
internal_name
label_outlineOptional
string
Optional. If present, the name displayed on Grubhub menu management tools.
sized_prices
label_outlineOptional
List<SizedPrice>
An ordered list of prices depending on size.

Sized Price

An association of a price to a Size. For use in Size Prompts for the Item pricing model.

Extends PosVersion and wrapped by PosEntity.

Properties
size
labelRequired
UUID
Reference to a Size.
price
labelRequired
double
Price for the referenced Size.
calorie_content
label_outlineOptional
string
Number of calories for the Size.
display_name
label_outlineOptional
string
Optional. If present, overrides the name of the referenced Size, for display to diners.

Sized Price

An association of a price to a Size. For use in Size Prompts for the Item pricing model.

Properties
size
labelRequired
String
Reference to a Size.
price
labelRequired
double
Price for the referenced Size.
calorie_content
label_outlineOptional
string
Number of calories for the Size.

Tag

Tags for menu items are used to flag certain items for special delivery handling, regulatory treatment, and to denote an item is eligible for certain flags and icons on Grubhub diner properties.

Properties
group
labelRequired
string
Tag group. Currently, the only valid group is 'LEGACY'
name
labelRequired
Tag name or code.

Tag Name

Tag names for menu items.

Type

string

Possible Values
  • ADVANCED_ORDERING
  • ALCOHOL
  • DESSERT
  • DAIRY_FREE
  • DRINK
  • GLUTEN_FREE
  • KOSHER
  • LOW_FAT
  • NOT_FOR_BIKER
  • NUT_FREE
  • RAW_FOOD_WARNING
  • SPECIALTY
  • SPICY
  • SODIUM_WARNING
  • TAX_EXEMPT
  • VEGAN
  • VEGETARIAN

Tax Rate

Tax rate to be applied at order checkout, if the diner is not tax-exempt.

Extends PosVersion and wrapped by PosEntity.

NOTE - The tax rate listed here applies only to the items and modifiers with which it is associated. All other menu items will use the merchant tax rate.

Properties
name
labelRequired
string
The name of the tax rate shown in Grubhub menu management user interfaces.
rate
label_outlineOptional
double
Decimal tax rate. Must be between 0 and 1.
flat
label_outlineOptional
Double
The absolute amount of tax applied to orders from this restaurant.
included_in_item_price
labelRequired
boolean
If true, the tax is included in the item price displayed to the diner.

Validation Error

Description of why an operation was invalid.

Properties
property
label_outlineOptional
string
The property that was invalid.
message_key
label_outlineOptional
string
A description of validation error.