openapi: 3.2.0
info:
title: Grubhub Endpoints API
version: '1.0'
description: 'Operations tagged Endpoints across 8 of this provider''s published API definitions: grubhub-busy-intervals-openapi.yml, grubhub-deliveries-openapi.yml, grubhub-menu-openapi.yml, grubhub-merchant-data-openapi.yml, grubhub-merchant-schedules-openapi.yml, grubhub-onboarding-openapi.yml, grubhub-orders-openapi.yml, grubhub-testing-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
tags:
- name: Endpoints
paths:
/pos/v1/merchant/{merchant_id}/busy/{busy_interval_id}:
put:
tags:
- Endpoints
summary: Update an active busy interval
description: Updates the ETA increase or end time on an existing busy interval for the restaurant.
operationId: updateBusyMode
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: busy_interval_id
in: path
description: The unique identifier of the busy interval to update.
required: true
explode: false
schema:
type: string
format: uuid
requestBody:
description: Updated busy interval parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/PosBusyModeRequest'
example:
eta_increase_seconds: 600
start_time: '2026-05-25T18:00:00Z'
end_time: '2026-05-25T19:00:00Z'
required: true
responses:
'422':
description: The request body is missing required fields or is otherwise invalid.
'200':
description: Busy interval successfully updated.
content:
application/json:
schema:
$ref: '#/components/schemas/PosBusyModeResponse'
example:
restaurant_id: store182
busy_interval_id: b4a16ee1-0a4f-4f3b-8b86-9f7c9b9a2d6a
eta_increase_seconds: 600
start_time: '2026-05-25T18:00:00Z'
end_time: '2026-05-25T19:00:00Z'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/busy:
get:
tags:
- Endpoints
summary: Get the current busy interval
description: Returns whether the restaurant is currently busy and details about the active busy interval.
operationId: getBusyMode
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Current busy interval, if any.
content:
application/json:
schema:
$ref: '#/components/schemas/PosGetBusyModeResponse'
example:
busy: true
busy_interval:
busy_interval_id: b4a16ee1-0a4f-4f3b-8b86-9f7c9b9a2d6a
start_time: '2026-05-25T18:00:00Z'
end_time: '2026-05-25T19:00:00Z'
eta_increase_seconds: 600
remaining_seconds: 1200
post:
tags:
- Endpoints
summary: Mark restaurant as busy
description: Marks the restaurant as busy for the time window specified in the request, increasing the displayed ETA for diners.
operationId: setBusyMode
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: Busy interval parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/PosBusyModeRequest'
example:
eta_increase_seconds: 600
start_time: '2026-05-25T18:00:00Z'
end_time: '2026-05-25T19:00:00Z'
required: true
responses:
'422':
description: The request body is missing required fields or is otherwise invalid.
'200':
description: Busy interval successfully set.
content:
application/json:
schema:
$ref: '#/components/schemas/PosBusyModeResponse'
example:
restaurant_id: store182
busy_interval_id: b4a16ee1-0a4f-4f3b-8b86-9f7c9b9a2d6a
eta_increase_seconds: 600
start_time: '2026-05-25T18:00:00Z'
end_time: '2026-05-25T19:00:00Z'
delete:
tags:
- Endpoints
summary: Clear the active busy interval
description: Ends the currently active busy interval for the restaurant, if any.
operationId: deleteActiveBusyMode
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'204':
description: Busy interval cleared, or there was no active interval to clear.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/delivery:
get:
tags:
- Endpoints
summary: Get delivery by order ID
description: Retrieve the current state of a Delivery for an Order.
operationId: getExternalDeliveryByOrderUuid
parameters:
- name: merchant_long_id
in: path
description: The Grubhub long ID for the merchant. Corresponds to a single location.
required: true
style: simple
explode: false
schema:
type: string
- name: order_uuid
in: path
description: The unique ID for the Order whose Delivery information is being requested.
required: true
style: simple
explode: false
schema:
type: string
format: uuid
responses:
'403':
description: ' You do not have access to the requested resource'
content:
application/json:
schema:
$ref: '#/components/schemas/PosDelivery'
example:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 3d07c219-0a88-45be-9cfc-91e9d095a1e9
confirmation_code: HVUYBJH
region_id: a29f01e1-8a8d-451e-b685-f8b0b4ec4767
name: Grubhub order 76884765873
pickup:
id: UvYO6VyVEeiVadmHZVMREg
name: Good Food, Inc.
address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '11111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
location_address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '1111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
phone: '4045551212'
notes: string
geo:
lat: 37.65947723
lng: -81.43487549
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
dropoff:
id: AvYO6VyVEeiVadmHZVMROm
name: Steve McSteverson
address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
location_address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
phone: '4045552121'
notes: test notes
geo:
lat: 37.659479
lng: -81.434876
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
flags:
- LARGE_ORDER
contents:
- diner_id: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description: Cheese Burger
size: M
tags:
- ITEM
quantity: 3
options:
- description: SUB ITEM
tags: []
quantity: 1
options:
- {}
category_name: Burgers
status: Delivered
courier:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name: Jack Burton
vehicle:
type: car
description: ''
phone: '4045552323'
photo_url: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
lat: 37.67577137428678
lng: -81.40696178943328
created: '2019-08-24T14:15:22Z'
pickup_ready: '2019-08-24T14:15:22Z'
times:
pickup_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: actual
timestamp: '2019-08-24T14:15:22Z'
committed_times:
pickup_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
test: false
preferences:
pickup_time: '2019-08-24T14:15:22Z'
delivery_time: '2019-08-24T14:15:22Z'
metadata: {}
'422':
description: ' One or more of the fields passed could not be used'
content:
application/json:
schema:
$ref: '#/components/schemas/PosDelivery'
example:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 3d07c219-0a88-45be-9cfc-91e9d095a1e9
confirmation_code: HVUYBJH
region_id: a29f01e1-8a8d-451e-b685-f8b0b4ec4767
name: Grubhub order 76884765873
pickup:
id: UvYO6VyVEeiVadmHZVMREg
name: Good Food, Inc.
address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '11111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
location_address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '1111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
phone: '4045551212'
notes: string
geo:
lat: 37.65947723
lng: -81.43487549
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
dropoff:
id: AvYO6VyVEeiVadmHZVMROm
name: Steve McSteverson
address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
location_address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
phone: '4045552121'
notes: test notes
geo:
lat: 37.659479
lng: -81.434876
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
flags:
- LARGE_ORDER
contents:
- diner_id: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description: Cheese Burger
size: M
tags:
- ITEM
quantity: 3
options:
- description: SUB ITEM
tags: []
quantity: 1
options:
- {}
category_name: Burgers
status: Delivered
courier:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name: Jack Burton
vehicle:
type: car
description: ''
phone: '4045552323'
photo_url: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
lat: 37.67577137428678
lng: -81.40696178943328
created: '2019-08-24T14:15:22Z'
pickup_ready: '2019-08-24T14:15:22Z'
times:
pickup_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: actual
timestamp: '2019-08-24T14:15:22Z'
committed_times:
pickup_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
test: false
preferences:
pickup_time: '2019-08-24T14:15:22Z'
delivery_time: '2019-08-24T14:15:22Z'
metadata: {}
'429':
description: ' You have sent too many API calls in a short period of time'
content:
application/json:
schema:
$ref: '#/components/schemas/PosDelivery'
example:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 3d07c219-0a88-45be-9cfc-91e9d095a1e9
confirmation_code: HVUYBJH
region_id: a29f01e1-8a8d-451e-b685-f8b0b4ec4767
name: Grubhub order 76884765873
pickup:
id: UvYO6VyVEeiVadmHZVMREg
name: Good Food, Inc.
address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '11111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
location_address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '1111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
phone: '4045551212'
notes: string
geo:
lat: 37.65947723
lng: -81.43487549
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
dropoff:
id: AvYO6VyVEeiVadmHZVMROm
name: Steve McSteverson
address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
location_address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
phone: '4045552121'
notes: test notes
geo:
lat: 37.659479
lng: -81.434876
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
flags:
- LARGE_ORDER
contents:
- diner_id: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description: Cheese Burger
size: M
tags:
- ITEM
quantity: 3
options:
- description: SUB ITEM
tags: []
quantity: 1
options:
- {}
category_name: Burgers
status: Delivered
courier:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name: Jack Burton
vehicle:
type: car
description: ''
phone: '4045552323'
photo_url: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
lat: 37.67577137428678
lng: -81.40696178943328
created: '2019-08-24T14:15:22Z'
pickup_ready: '2019-08-24T14:15:22Z'
times:
pickup_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: actual
timestamp: '2019-08-24T14:15:22Z'
committed_times:
pickup_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
test: false
preferences:
pickup_time: '2019-08-24T14:15:22Z'
delivery_time: '2019-08-24T14:15:22Z'
metadata: {}
'200':
description: ' OK - Successfully found delivery details'
content:
application/json:
schema:
$ref: '#/components/schemas/PosDelivery'
example:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 3d07c219-0a88-45be-9cfc-91e9d095a1e9
confirmation_code: HVUYBJH
region_id: a29f01e1-8a8d-451e-b685-f8b0b4ec4767
name: Grubhub order 76884765873
pickup:
id: UvYO6VyVEeiVadmHZVMREg
name: Good Food, Inc.
address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '11111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
location_address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '1111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
phone: '4045551212'
notes: string
geo:
lat: 37.65947723
lng: -81.43487549
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
dropoff:
id: AvYO6VyVEeiVadmHZVMROm
name: Steve McSteverson
address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
location_address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
phone: '4045552121'
notes: test notes
geo:
lat: 37.659479
lng: -81.434876
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
flags:
- LARGE_ORDER
contents:
- diner_id: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description: Cheese Burger
size: M
tags:
- ITEM
quantity: 3
options:
- description: SUB ITEM
tags: []
quantity: 1
options:
- {}
category_name: Burgers
status: Delivered
courier:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name: Jack Burton
vehicle:
type: car
description: ''
phone: '4045552323'
photo_url: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
lat: 37.67577137428678
lng: -81.40696178943328
created: '2019-08-24T14:15:22Z'
pickup_ready: '2019-08-24T14:15:22Z'
times:
pickup_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: actual
timestamp: '2019-08-24T14:15:22Z'
committed_times:
pickup_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
test: false
preferences:
pickup_time: '2019-08-24T14:15:22Z'
delivery_time: '2019-08-24T14:15:22Z'
metadata: {}
'500':
description: ' The server has returned an unexpected error'
content:
application/json:
schema:
$ref: '#/components/schemas/PosDelivery'
example:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 3d07c219-0a88-45be-9cfc-91e9d095a1e9
confirmation_code: HVUYBJH
region_id: a29f01e1-8a8d-451e-b685-f8b0b4ec4767
name: Grubhub order 76884765873
pickup:
id: UvYO6VyVEeiVadmHZVMREg
name: Good Food, Inc.
address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '11111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
location_address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '1111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
phone: '4045551212'
notes: string
geo:
lat: 37.65947723
lng: -81.43487549
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
dropoff:
id: AvYO6VyVEeiVadmHZVMROm
name: Steve McSteverson
address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
location_address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
phone: '4045552121'
notes: test notes
geo:
lat: 37.659479
lng: -81.434876
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
flags:
- LARGE_ORDER
contents:
- diner_id: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description: Cheese Burger
size: M
tags:
- ITEM
quantity: 3
options:
- description: SUB ITEM
tags: []
quantity: 1
options:
- {}
category_name: Burgers
status: Delivered
courier:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name: Jack Burton
vehicle:
type: car
description: ''
phone: '4045552323'
photo_url: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
lat: 37.67577137428678
lng: -81.40696178943328
created: '2019-08-24T14:15:22Z'
pickup_ready: '2019-08-24T14:15:22Z'
times:
pickup_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: actual
timestamp: '2019-08-24T14:15:22Z'
committed_times:
pickup_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
test: false
preferences:
pickup_time: '2019-08-24T14:15:22Z'
delivery_time: '2019-08-24T14:15:22Z'
metadata: {}
'404':
description: ' Delivery details were not found'
content:
application/json:
schema:
$ref: '#/components/schemas/PosDelivery'
example:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 3d07c219-0a88-45be-9cfc-91e9d095a1e9
confirmation_code: HVUYBJH
region_id: a29f01e1-8a8d-451e-b685-f8b0b4ec4767
name: Grubhub order 76884765873
pickup:
id: UvYO6VyVEeiVadmHZVMREg
name: Good Food, Inc.
address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '11111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
location_address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '1111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
phone: '4045551212'
notes: string
geo:
lat: 37.65947723
lng: -81.43487549
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
dropoff:
id: AvYO6VyVEeiVadmHZVMROm
name: Steve McSteverson
address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
location_address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
phone: '4045552121'
notes: test notes
geo:
lat: 37.659479
lng: -81.434876
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
flags:
- LARGE_ORDER
contents:
- diner_id: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description: Cheese Burger
size: M
tags:
- ITEM
quantity: 3
options:
- description: SUB ITEM
tags: []
quantity: 1
options:
- {}
category_name: Burgers
status: Delivered
courier:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name: Jack Burton
vehicle:
type: car
description: ''
phone: '4045552323'
photo_url: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
lat: 37.67577137428678
lng: -81.40696178943328
created: '2019-08-24T14:15:22Z'
pickup_ready: '2019-08-24T14:15:22Z'
times:
pickup_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: actual
timestamp: '2019-08-24T14:15:22Z'
committed_times:
pickup_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
test: false
preferences:
pickup_time: '2019-08-24T14:15:22Z'
delivery_time: '2019-08-24T14:15:22Z'
metadata: {}
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/deliveries/{delivery_id}:
get:
tags:
- Endpoints
summary: Get delivery by delivery ID
description: Retrieve the current state of a Delivery.
operationId: getExternalDeliveryByDeliveryId
parameters:
- name: delivery_id
in: path
description: The ID of the delivery to retrieve.
required: true
style: simple
explode: false
schema:
type: string
example: 497f6eca-6276-4993-bfeb-53cbbbba6f08
responses:
'200':
description: ' OK - Successfully found delivery details'
content:
application/json:
schema:
$ref: '#/components/schemas/PosDelivery'
example:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
account_id: 3d07c219-0a88-45be-9cfc-91e9d095a1e9
confirmation_code: HVUYBJH
region_id: a29f01e1-8a8d-451e-b685-f8b0b4ec4767
name: Grubhub order 76884765873
pickup:
id: UvYO6VyVEeiVadmHZVMREg
name: Good Food, Inc.
address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '11111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
location_address:
region_code: US
address_lines:
- 234 Star Avenue
cross_streets: test cross street 1
locality: New York City
sublocality: New York City
neighborhood: test
administrative_area: NY
postal_code: '1111'
sorting_code: '999'
coordinates:
latitude: 37.65947723
longitude: -81.43487549
organization_name: Good Food, Inc.
phone: '4045551212'
notes: string
geo:
lat: 37.65947723
lng: -81.43487549
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
dropoff:
id: AvYO6VyVEeiVadmHZVMROm
name: Steve McSteverson
address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
location_address:
region_code: '456'
address_lines:
- 2940 Secondary Ln
cross_streets: test cross street 2
locality: Anytown
sublocality: Anytown
neighborhood: test1
administrative_area: NY
postal_code: '11112'
sorting_code: '123'
coordinates:
latitude: 37.659479
longitude: -81.434876
organization_name: Home
phone: '4045552121'
notes: test notes
geo:
lat: 37.659479
lng: -81.434876
geofence_radius_in_meters: 0
merchant_phone_suppressed: true
flags:
- LARGE_ORDER
contents:
- diner_id: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description: Cheese Burger
size: M
tags:
- ITEM
quantity: 3
options:
- description: SUB ITEM
tags: []
quantity: 1
options:
- {}
category_name: Burgers
status: Delivered
courier:
id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name: Jack Burton
vehicle:
type: car
description: ''
phone: '4045552323'
photo_url: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
lat: 37.67577137428678
lng: -81.40696178943328
created: '2019-08-24T14:15:22Z'
pickup_ready: '2019-08-24T14:15:22Z'
times:
pickup_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: actual
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: actual
timestamp: '2019-08-24T14:15:22Z'
committed_times:
pickup_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
pickup:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff_arrival:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
dropoff:
type: estimate
timestamp: '2019-08-24T14:15:22Z'
test: false
preferences:
pickup_time: '2019-08-24T14:15:22Z'
delivery_time: '2019-08-24T14:15:22Z'
metadata: {}
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/menu/ingestion/validate:
post:
tags:
- Endpoints
summary: Validate a normalized menu
description: Verifies that the menu provided as the request body is a valid and complete 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.
operationId: validatePosMenu
parameters:
- name: is_normalized_menu
in: query
description: Is the menu in a normalized format.
required: true
explode: true
schema:
type: boolean
default: false
- name: merchant_id
in: query
description: The Grubhub or third-party provided external ID for the merchant. Corresponds to a single location.
required: false
explode: true
schema:
type: string
responses:
'503':
description: The menu validation has timed out.
'200':
description: Successfully or unsuccessfully performed a validation check.
content:
application/json:
schema:
$ref: '#/components/schemas/PosNormalizedMenuValidationResult'
example:
valid: true
validation_errors: []
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/menu/ingestion:
post:
tags:
- Endpoints
summary: Add or update a normalized menu
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 normalized menu ingestion, call GET /pos/v1/menu/ingestion/jobs/{job_id}. Use the job_id returned from this endpoint.
By default, this endpoint expects the menu to conform to the normalized menu structure. To indicate this reference structure, the required field normalized_menu=true must be 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.
Grubhub has a retry mechanism when attempting to download a partner menu. Upon failure, nine retry attempts over a span of five minutes are made before failing the job completely.
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.
We recommend that you use this endpoint for all menu creation, edits, and deletions.'
operationId: addOrUpdatePosFullMenu
parameters:
- name: X-GH-PARTNER-KEY
in: header
required: true
explode: false
schema:
type: string
format: uuid
requestBody:
description: The request payload.
content:
application/json:
schema:
$ref: '#/components/schemas/PosNormalizedMenuUpdateRequest'
example:
merchant_ids:
- store182
menu_url: https://example.com/menu
normalized_menu: true
apply_existing_schedule_overrides: false
required: true
responses:
'409':
description: Merchant(s) already has an active async update process.
'422':
description: Syntax of the request content was correct, but unable to process the contained instructions.
'200':
description: Menu successfully enqueued for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/PosNormalizedMenuUpdateResult'
example:
job_id: b78fba98-fb76-4748-9c72-dba110afa923
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/menu/schedules/overrides/external:
patch:
tags:
- Endpoints
summary: Bulk menu item schedule override operation by external IDs
description: Bulk add or update the menu schedule overrides by external ID. Used to '86' a list of entities (items / modifiers).
operationId: bulkAddOrUpdateSchedulesOverridesByExternalIds
parameters:
- name: merchant_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
explode: false
schema:
type: string
- name: allow_partial_success
in: query
description: Should valid overrides still be applied if there are individual failures on the bulk operation
required: true
explode: true
schema:
type: boolean
default: false
requestBody:
description: A list of PosScheduleOverrideBulkRequests, each containing a list of Partner external entity IDs and the schedule override operation to be applied for all of them.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosScheduleOverrideBulkRequest'
example:
- entity_ids:
- entity_id1
- entity_id2
schedule_override:
op: ADD
start: '2023-07-20T12:00:00.000Z'
end: '9999-12-31T23:59:00.000Z'
show_or_hide: SHOW
- entity_ids:
- entity_id3
- entity_id4
schedule_override:
op: UPDATE
cur_end_date: '2023-07-20T12:00:00.000Z'
start: '2023-07-20T12:00:00.000Z'
end: '2023-12-31T23:59:00.000Z'
show_or_hide: HIDE
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosScheduleOverrideMultiOperationResult'
example:
status: QUEUED
message: Menu entity schedule override operation is queued.
entity_ids:
- entity_id_1
- entity_id_2
job_id: b3332f8b-64c6-4a46-89c2-3c27c27e8edf
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/menu/schedules/overrides:
get:
tags:
- Endpoints
summary: Get schedule overrides for a merchant
description: Returns the schedule overrides for a given merchant, optionally you can pass dates to use as a range.
operationId: getSchedulesOverridesForMerchant
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: ending_after
in: query
description: A start date to use for the search window. If "now" is provided then current datetime will be used.
required: true
explode: true
schema:
type: string
- name: ending_before
in: query
description: An end date to use for the search window. If "endOfTime" is provided then December 31, 9999, 23:59 (11:59 PM) UTC will be used
required: true
explode: true
schema:
type: string
responses:
'200':
description: Schedule overrides were successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/PosScheduleOverrides'
example:
merchant_id: merchant_id_123
item_overrides:
- merchant_id: merchant_id_123
item_id: item_id_1
external_id: external_item_id_1
intervals:
- start: '2023-07-18T12:00:00Z'
end: '2023-07-18T15:00:00Z'
show_or_hide: SHOW
- start: '2023-07-19T10:00:00Z'
end: '2023-07-19T13:00:00Z'
show_or_hide: HIDE
- merchant_id: merchant_id_123
item_id: item_id_2
external_id: external_item_id_2
intervals:
- start: '2023-07-18T14:00:00Z'
end: '2023-07-18T17:00:00Z'
show_or_hide: HIDE
modifier_overrides:
- merchant_id: merchant_id_123
modifier_id: modifier_id_1
external_id: external_modifier_id_1
intervals:
- start: '2023-07-18T12:00:00Z'
end: '2023-07-18T15:00:00Z'
show_or_hide: SHOW
'404':
description: Schedule Override(s) do not exist.
patch:
tags:
- Endpoints
summary: Bulk menu item schedule override operation by Grubhub internal IDs
description: Bulk add or update the menu schedule overrides by Grubhub ID. Used to '86' a list of entities (items / modifiers).
operationId: bulkAddOrUpdateSchedulesOverridesByInternalIds
parameters:
- name: merchant_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
explode: false
schema:
type: string
- name: allow_partial_success
in: query
description: Should existing overrides be applied to the updated menu.Should only be "true" if overrides currently exist and the present and updated menu share the same set of items and modifiers.
required: true
explode: true
schema:
type: boolean
default: false
requestBody:
description: A list of PosScheduleOverrideBulkRequests, each containing a list of Grubhub internal entity
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosScheduleOverrideBulkRequest'
example:
- entity_ids:
- entity_id1
- entity_id2
schedule_override:
op: ADD
start: '2023-07-20T12:00:00.000Z'
end: '9999-12-31T23:59:00.000Z'
show_or_hide: SHOW
- entity_ids:
- entity_id3
- entity_id4
schedule_override:
op: UPDATE
cur_end_date: '2023-07-20T12:00:00.000Z'
start: '2023-07-20T12:00:00.000Z'
end: '2023-12-31T23:59:00.000Z'
show_or_hide: HIDE
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosScheduleOverrideMultiOperationResult'
example:
status: QUEUED
message: Menu entity schedule override operation is queued.
entity_ids:
- entity_id_1
- entity_id_2
job_id: b3332f8b-64c6-4a46-89c2-3c27c27e8edf
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/menu/entities/tags/alcohol:
patch:
tags:
- Endpoints
summary: Mark items/modifiers as alcoholic
description: Mark a merchant's specific items/modifiers with an 'ALCOHOL' classification tag.
operationId: tagProductsAsAlcoholic
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: Request payload for tagging products as alcoholic.
content:
application/json:
schema:
$ref: '#/components/schemas/TagProductsRequest'
example:
external_ids:
- item-1
- item-2
required: true
responses:
'202':
description: Successfully started the operation for tagging items/modifiers as alcoholic.
content:
application/json:
schema:
$ref: '#/components/schemas/PosSupplementalTagMultiOperationResult'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/menu/schedules/overrides/{job_id}/status:
get:
tags:
- Endpoints
summary: Get bulk schedule override job status
description: Returns the status of the bulk schedule override job.
operationId: getBulkScheduleOverrideStatus
parameters:
- name: merchant_id
in: path
description: The Grubhub ID for the merchant OR the Partner merchant ID. This ID is not validated.
required: true
explode: false
schema:
type: string
- name: job_id
in: path
description: The bulk schedule override unique job identifier.
required: true
explode: false
schema:
type: string
format: uuid
responses:
'422':
description: Unprocessable Entity
'200':
description: Job status was successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/PosBulkScheduleOverrideStatus'
example:
job_id: e72d57a9-41c8-4a60-8f0b-fd42b396f11d
processing_complete: true
status: SUCCESSFUL
reason: Bulk schedule override completed successfully.
entity_override_results:
- entity_index: 0
entity_id: entity_id_1
status: SUCCESSFUL
details: Entity override successful.
- entity_index: 1
entity_id: entity_id_2
status: SUCCESSFUL
details: Entity override successful.
merchant_id: merchant_id_123
'404':
description: Job does not exist.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/menu/normalized:
get:
tags:
- Endpoints
summary: Retrieve a normalized menu for a given merchant ID
description: Returns the current menu as a PosNormalizedMenu object, which can be edited and ingested to update a merchant's or group of merchants' menu. You can edit the response payload and use it to update menus with the primary menu ingestion endpoint.
operationId: findNormalizedMenu
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosNormalizedMenu'
example:
menu_info:
currency: USD
sections:
- 1_sandwich
- 5_drinks
header_media: null
logo_media: null
search_media: null
tax_rates:
- external_id: feb124cea788f2d582bd40b188ffce1c
name: Tax rate feb124cea788f2d582bd40b188ffce1c
rate: 0.06
- external_id: e737c3b7a4c99675212fd1d50e6d945b
name: Tax rate e737c3b7a4c99675212fd1d50e6d945b
rate: 0.0525
- external_id: 1e89f83ca9c996b33fe10a907322c2e0
name: Tax rate 1e89f83ca9c996b33fe10a907322c2e0
rate: 0.0725
- external_id: 37d5c0b6b354bc3c790d2696b42756c9
name: Tax rate 37d5c0b6b354bc3c790d2696b42756c9
rate: 0.08
repeating_schedules: []
menu_sections:
- external_id: 1_sandwich
name: Sandwiches
internal_name: Sandwiches
description: These are delicious!
items:
- 1_sandwich|100_pbj_sandwich
- 1_sandwich|40006_basket_of_breadsticks
availability_ranges: []
schedule_ids: []
availability_override: null
media: null
tax_category:
code: '100020'
- external_id: 5_drinks
name: Drinks
internal_name: Drinks
description: Great drinks for you enjoy on the go
items:
- 5_drinks|coffee
- 5_drinks|smoothie
- 5_drinks|fountain_drink
- 5_drinks|san_pellegrino_sparking_natural_mineral_water
availability_ranges: []
schedule_ids: []
availability_override: null
media: null
items:
- external_id: 1_sandwich|100_pbj_sandwich
name: PBJ Sandwich
internal_name: PBJ Sandwich
description: Delicious Peanut Butter and Jelly Sandwich
price: 0.0
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
size_prompt: null
modifier_prompts:
- 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large
- 1_sandwich|100_pbj_sandwich|spreads_pbj
schedule_ids: []
tags: []
minimum_order_quantity: null
maximum_order_quantity: null
calorie_content: null
media:
source_url: https://example.com/348863390-1.jpg
metadata: '{"order_ahead_menu_id":48630}'
availability_ranges: []
allowable_order_types:
- standard
availability_override: null
tax_category:
code: '100021'
- external_id: 1_sandwich|40006_basket_of_breadsticks
name: Basket of Breadsticks
internal_name: Basket of Breadsticks
description: Shareable size of breadsticks
price: 3.0
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
size_prompt: null
modifier_prompts: []
schedule_ids: []
tags: []
minimum_order_quantity: 1
maximum_order_quantity: 50
calorie_content: null
media:
source_url: https://dreamdinners.com/theme/dreamdinners/images/recipe/default/745.jpg
metadata: '{"order_ahead_menu_id":48630}'
availability_ranges: []
allowable_order_types:
- standard
availability_override: null
- external_id: 5_drinks|coffee
name: Coffee
internal_name: Coffee
description: Delicious coffee
price: 4.0
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
size_prompt: null
modifier_prompts:
- 5_drinks|coffee|uid_opt_coffee_size
- 5_drinks|coffee|opt_coffee_topping
- 5_drinks|coffee|opt_coffee_milk
schedule_ids: []
tags: []
minimum_order_quantity: null
maximum_order_quantity: null
calorie_content: null
media:
source_url: https://https://example.com/5473ca2.jpg
metadata: '{"order_ahead_menu_id":48630}'
availability_ranges: []
allowable_order_types:
- standard
availability_override: null
- external_id: 5_drinks|smoothie
name: Smoothie
internal_name: Smoothie
description: Delicious smoothie
price: 3.0
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
size_prompt: null
modifier_prompts:
- 5_drinks|smoothie|uid_opt_coffee_size
- 5_drinks|smoothie|opt_smoothie_topping
schedule_ids: []
tags: []
minimum_order_quantity: null
maximum_order_quantity: null
calorie_content: null
media:
source_url: https://example.com/09dc1a2bbb542310071.png
metadata: '{"order_ahead_menu_id":48630}'
availability_ranges: []
allowable_order_types:
- standard
availability_override: null
- external_id: 5_drinks|fountain_drink
name: Fountain Drink
internal_name: Fountain Drink
description: Pick your size and soda
price: 3.0
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
size_prompt: null
modifier_prompts:
- 5_drinks|fountain_drink|drink_selection
schedule_ids: []
tags: []
minimum_order_quantity: null
maximum_order_quantity: null
calorie_content: null
media:
source_url: https://example.com/1231231.png
metadata: '{"order_ahead_menu_id":48630}'
availability_ranges: []
allowable_order_types:
- standard
availability_override: null
- external_id: 5_drinks|san_pellegrino_sparking_natural_mineral_water
name: San Pellegrino Sparkling Natural Mineral Water
internal_name: San Pellegrino Sparkling Natural Mineral Water
description: S.Pellegrino is a carbonated natural mineral water rich in minerals.
price: 4.0
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
size_prompt: null
modifier_prompts: []
schedule_ids: []
tags: []
minimum_order_quantity: null
maximum_order_quantity: null
calorie_content: null
media:
source_url: https://example.com/12312.jpg
metadata: '{"order_ahead_menu_id":48630}'
availability_ranges: []
allowable_order_types:
- standard
availability_override: null
gtin: 041508802185
modifier_prompts:
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size
name: Size
internal_name: Size
modifier_list: 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|modifier_list
default_selection_model:
minimum_quantity: 1
maximum_quantity: 1
modifier_prompt_quantity_settings:
minimum_units: 1
maximum_units: 1
modifier_quantity_settings:
1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|10_pbj_small:
default_units: 0
maximum_units: 1
unit_increment: 1
1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|30_pbj_large:
default_units: 0
maximum_units: 1
unit_increment: 1
1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|20_pbj_medium:
default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type
name: Type of Cheese
internal_name: Type of Cheese
modifier_list: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|modifier_list
default_selection_model:
minimum_quantity: 1
maximum_quantity: 1
modifier_prompt_quantity_settings:
minimum_units: 1
maximum_units: 1
modifier_quantity_settings:
1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_cheddar:
default_units: 1
maximum_units: 1
unit_increment: 1
? 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_american
: default_units: 0
maximum_units: 1
unit_increment: 1
? 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_provolone
: default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers:
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_cheddar
modifier_prompt_free_settings: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large
name: Toppings
internal_name: Toppings
modifier_list: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|modifier_list
default_selection_model:
minimum_quantity: 0
maximum_quantity: 3
modifier_prompt_quantity_settings:
minimum_units: 0
maximum_units: 3
modifier_quantity_settings:
1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|30_bacon_opt_grilled_toppings_large:
default_units: 0
maximum_units: 1
unit_increment: 1
1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large:
default_units: 0
maximum_units: 1
unit_increment: 1
1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|20_butter_opt_grilled_toppings_large:
default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 1_sandwich|100_pbj_sandwich|spreads_pbj
name: Spreads
internal_name: Spreads
modifier_list: 1_sandwich|100_pbj_sandwich|spreads_pbj|modifier_list
default_selection_model:
minimum_quantity: 0
maximum_quantity: 2
modifier_prompt_quantity_settings:
minimum_units: 0
modifier_quantity_settings:
1_sandwich|100_pbj_sandwich|spreads_pbj|jelly:
default_units: 1
maximum_units: 1
unit_increment: 1
1_sandwich|100_pbj_sandwich|spreads_pbj|peanut_butter:
default_units: 1
maximum_units: 1
unit_increment: 1
defaulted_modifiers:
- 1_sandwich|100_pbj_sandwich|spreads_pbj|peanut_butter
- 1_sandwich|100_pbj_sandwich|spreads_pbj|jelly
modifier_prompt_free_settings: null
- external_id: 5_drinks|coffee|uid_opt_coffee_size
name: Choose a Size
internal_name: Choose a Size
modifier_list: 5_drinks|coffee|uid_opt_coffee_size|modifier_list
default_selection_model:
minimum_quantity: 1
maximum_quantity: 1
modifier_prompt_quantity_settings:
minimum_units: 1
maximum_units: 1
modifier_quantity_settings:
5_drinks|coffee|uid_opt_coffee_size|large:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|coffee|uid_opt_coffee_size|small:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|coffee|uid_opt_coffee_size|medium:
default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 5_drinks|coffee|opt_coffee_topping
name: Condiments
internal_name: Condiments
modifier_list: 5_drinks|coffee|opt_coffee_topping|modifier_list
default_selection_model:
minimum_quantity: 0
maximum_quantity: 2
modifier_prompt_quantity_settings:
minimum_units: 0
maximum_units: 15
modifier_quantity_settings:
5_drinks|coffee|opt_coffee_topping|cream:
default_units: 0
maximum_units: 10
unit_increment: 1
5_drinks|coffee|opt_coffee_topping|sugar:
default_units: 0
maximum_units: 10
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 5_drinks|coffee|opt_coffee_milk
name: Milk
internal_name: Milk
modifier_list: 5_drinks|coffee|opt_coffee_milk|modifier_list
default_selection_model:
minimum_quantity: 0
maximum_quantity: 1
modifier_prompt_quantity_settings:
minimum_units: 0
maximum_units: 1
modifier_quantity_settings:
5_drinks|coffee|opt_coffee_milk|soy_milk:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|coffee|opt_coffee_milk|whole_milk:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|coffee|opt_coffee_milk|almond_milk:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|coffee|opt_coffee_milk|fat_free_milk:
default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 5_drinks|smoothie|uid_opt_coffee_size
name: Choose a Size
internal_name: Choose a Size
modifier_list: 5_drinks|smoothie|uid_opt_coffee_size|modifier_list
default_selection_model:
minimum_quantity: 1
maximum_quantity: 1
modifier_prompt_quantity_settings:
minimum_units: 1
maximum_units: 1
modifier_quantity_settings:
5_drinks|smoothie|uid_opt_coffee_size|large:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|smoothie|uid_opt_coffee_size|small:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|smoothie|uid_opt_coffee_size|medium:
default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 5_drinks|smoothie|opt_smoothie_topping
name: Condiments
internal_name: Condiments
modifier_list: 5_drinks|smoothie|opt_smoothie_topping|modifier_list
default_selection_model:
minimum_quantity: 1
maximum_quantity: 2
modifier_prompt_quantity_settings:
minimum_units: 1
maximum_units: 10
modifier_quantity_settings:
5_drinks|smoothie|opt_smoothie_topping|drizzle:
default_units: 0
maximum_units: 5
unit_increment: 1
5_drinks|smoothie|opt_smoothie_topping|whipped_cream:
default_units: 0
maximum_units: 5
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes
name: Drink Size
internal_name: Drink Size
modifier_list: 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|modifier_list
default_selection_model:
minimum_quantity: 1
maximum_quantity: 1
modifier_prompt_quantity_settings:
minimum_units: 1
maximum_units: 1
modifier_quantity_settings:
5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|large:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|small:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|medium:
default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
- external_id: 5_drinks|fountain_drink|drink_selection
name: Choice of Fountain Beverage
internal_name: Choice of Fountain Beverage
modifier_list: 5_drinks|fountain_drink|drink_selection|modifier_list
default_selection_model:
minimum_quantity: 1
maximum_quantity: 1
modifier_prompt_quantity_settings:
minimum_units: 1
maximum_units: 1
modifier_quantity_settings:
5_drinks|fountain_drink|drink_selection|water:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|fountain_drink|drink_selection|club_soda:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|fountain_drink|drink_selection|ginger_ale:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|fountain_drink|drink_selection|lemon_lime:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|fountain_drink|drink_selection|orange_soda:
default_units: 0
maximum_units: 1
unit_increment: 1
5_drinks|fountain_drink|drink_selection|strawberry_soda:
default_units: 0
maximum_units: 1
unit_increment: 1
defaulted_modifiers: []
modifier_prompt_free_settings: null
modifier_lists:
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|modifier_list
name: Size
modifiers:
- 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|10_pbj_small
- 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|20_pbj_medium
- 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|30_pbj_large
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|modifier_list
name: Toppings
modifiers:
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|20_butter_opt_grilled_toppings_large
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|30_bacon_opt_grilled_toppings_large
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|modifier_list
name: Type of Cheese
modifiers:
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_cheddar
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_american
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_provolone
- external_id: 1_sandwich|100_pbj_sandwich|spreads_pbj|modifier_list
name: Spreads
modifiers:
- 1_sandwich|100_pbj_sandwich|spreads_pbj|jelly
- 1_sandwich|100_pbj_sandwich|spreads_pbj|peanut_butter
- external_id: 5_drinks|coffee|uid_opt_coffee_size|modifier_list
name: Choose a Size
modifiers:
- 5_drinks|coffee|uid_opt_coffee_size|small
- 5_drinks|coffee|uid_opt_coffee_size|medium
- 5_drinks|coffee|uid_opt_coffee_size|large
- external_id: 5_drinks|coffee|opt_coffee_topping|modifier_list
name: Condiments
modifiers:
- 5_drinks|coffee|opt_coffee_topping|sugar
- 5_drinks|coffee|opt_coffee_topping|cream
- external_id: 5_drinks|coffee|opt_coffee_milk|modifier_list
name: Milk
modifiers:
- 5_drinks|coffee|opt_coffee_milk|whole_milk
- 5_drinks|coffee|opt_coffee_milk|fat_free_milk
- 5_drinks|coffee|opt_coffee_milk|soy_milk
- 5_drinks|coffee|opt_coffee_milk|almond_milk
- external_id: 5_drinks|smoothie|uid_opt_coffee_size|modifier_list
name: Choose a Size
modifiers:
- 5_drinks|smoothie|uid_opt_coffee_size|small
- 5_drinks|smoothie|uid_opt_coffee_size|medium
- 5_drinks|smoothie|uid_opt_coffee_size|large
- external_id: 5_drinks|smoothie|opt_smoothie_topping|modifier_list
name: Condiments
modifiers:
- 5_drinks|smoothie|opt_smoothie_topping|whipped_cream
- 5_drinks|smoothie|opt_smoothie_topping|drizzle
- external_id: 5_drinks|fountain_drink|drink_selection|modifier_list
name: Choice of Fountain Beverage
modifiers:
- 5_drinks|fountain_drink|drink_selection|strawberry_soda
- 5_drinks|fountain_drink|drink_selection|lemon_lime
- 5_drinks|fountain_drink|drink_selection|ginger_ale
- 5_drinks|fountain_drink|drink_selection|club_soda
- 5_drinks|fountain_drink|drink_selection|orange_soda
- 5_drinks|fountain_drink|drink_selection|water
- external_id: 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|modifier_list
name: Drink Size
modifiers:
- 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|small
- 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|medium
- 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|large
modifiers:
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|10_pbj_small
name: Small
internal_name: Small
description: null
calorie_content: null
default_price: 6.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
tax_category:
code: '100022'
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|20_pbj_medium
name: Medium
internal_name: Medium
description: null
calorie_content: null
default_price: 7.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_pbj_size|30_pbj_large
name: Large
internal_name: Large
description: null
calorie_content: null
default_price: 8.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_cheddar
name: Cheddar
internal_name: Cheddar
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_american
name: American
internal_name: American
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type|cheese_provolone
name: Provolone
internal_name: Provolone
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large
name: Cheese
internal_name: Cheese
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers:
- 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|10_cheese_opt_grilled_toppings_large|cheese_type
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|20_butter_opt_grilled_toppings_large
name: Butter
internal_name: Butter
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|uid_opt_grilled_toppings_large|30_bacon_opt_grilled_toppings_large
name: Bacon
internal_name: Bacon
description: null
calorie_content: null
default_price: 3.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|spreads_pbj|jelly
name: Jelly
internal_name: Jelly
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 1_sandwich|100_pbj_sandwich|spreads_pbj|peanut_butter
name: Peanut Butter
internal_name: Peanut Butter
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|uid_opt_coffee_size|small
name: Small
internal_name: Small
description: null
calorie_content: null
default_price: 2.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|uid_opt_coffee_size|medium
name: Medium
internal_name: Medium
description: null
calorie_content: null
default_price: 3.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|uid_opt_coffee_size|large
name: Large
internal_name: Large
description: null
calorie_content: null
default_price: 4.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|opt_coffee_topping|sugar
name: Sugar
internal_name: Sugar
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|opt_coffee_topping|cream
name: Cream
internal_name: Cream
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|opt_coffee_milk|whole_milk
name: Whole Milk
internal_name: Whole Milk
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|opt_coffee_milk|fat_free_milk
name: Fat Free Milk
internal_name: Fat Free Milk
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|opt_coffee_milk|soy_milk
name: Soy Milk
internal_name: Soy Milk
description: null
calorie_content: null
default_price: 1.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|coffee|opt_coffee_milk|almond_milk
name: Almond Milk
internal_name: Almond Milk
description: null
calorie_content: null
default_price: 1.5
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|smoothie|uid_opt_coffee_size|small
name: Small
internal_name: Small
description: null
calorie_content: null
default_price: 2.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|smoothie|uid_opt_coffee_size|medium
name: Medium
internal_name: Medium
description: null
calorie_content: null
default_price: 3.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|smoothie|uid_opt_coffee_size|large
name: Large
internal_name: Large
description: null
calorie_content: null
default_price: 4.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|smoothie|opt_smoothie_topping|whipped_cream
name: Whipped Cream
internal_name: Whipped Cream
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|smoothie|opt_smoothie_topping|drizzle
name: Drizzle
internal_name: Drizzle
description: null
calorie_content: null
default_price: 0.0
tags: []
tax_rate: feb124cea788f2d582bd40b188ffce1c
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|strawberry_soda
name: Strawberry Soda
internal_name: Strawberry Soda
description: null
calorie_content: null
default_price: 1.79
tags: []
tax_rate: null
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|lemon_lime
name: Lemon Lime Soda
internal_name: Lemon Lime Soda
description: null
calorie_content: null
default_price: 1.99
tags: []
tax_rate: null
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|ginger_ale
name: Ginger Ale
internal_name: Ginger Ale
description: null
calorie_content: null
default_price: 1.79
tags: []
tax_rate: e737c3b7a4c99675212fd1d50e6d945b
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|club_soda
name: Club Soda
internal_name: Club Soda
description: null
calorie_content: null
default_price: 2.19
tags: []
tax_rate: 1e89f83ca9c996b33fe10a907322c2e0
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|small
name: Small
internal_name: Small
description: null
calorie_content: null
default_price: 1.0
tags: []
tax_rate: null
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|medium
name: Medium
internal_name: Medium
description: null
calorie_content: null
default_price: 1.5
tags: []
tax_rate: null
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes|large
name: Large
internal_name: Large
description: null
calorie_content: null
default_price: 2.0
tags: []
tax_rate: null
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|orange_soda
name: Orange Soda
internal_name: Orange Soda
description: null
calorie_content: null
default_price: 2.19
tags: []
tax_rate: null
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers:
- 5_drinks|fountain_drink|drink_selection|orange_soda|drink_sizes
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
- external_id: 5_drinks|fountain_drink|drink_selection|water
name: Bottled Water
internal_name: Bottled Water
description: null
calorie_content: null
default_price: 1.79
tags: []
tax_rate: null
miscellaneous_taxes: []
media: null
sized_prices: []
submodifiers: []
metadata: '{}'
schedule_ids: []
availability_ranges: []
availability_override: null
sizes: []
availability_ranges: []
availability_overrides:
- external_id: availability_override
name: availability_override
start_date: '2021-02-05T05:00:00.000Z'
end_date: '9999-12-31T23:59:59.999Z'
override_type: UNAVAILABLE
size_prompts: []
'404':
description: Menu not found
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/menu/entities/tags/{job_id}/status:
get:
tags:
- Endpoints
summary: Check supplemental tag job status
description: Checks the status of the specified supplemental tag job.
operationId: getBulkSupplementalTagStatus
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: job_id
in: path
description: The unique supplemental tag job identifier.
required: true
explode: false
schema:
type: string
format: uuid
responses:
'200':
description: Job status was successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/PosBulkSupplementalTagStatus'
'404':
description: Job does not exist.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/menu/ingestion/jobs/{job_id}:
get:
tags:
- Endpoints
summary: Check ingestion job status
description: Checks the status of the specified menu ingestion job.
operationId: getMenuIngestionStatus
parameters:
- name: X-GH-PARTNER-KEY
in: header
required: true
explode: false
schema:
type: string
format: uuid
- name: job_id
in: path
description: The identifier of the menu ingestion job to check.
required: true
explode: false
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosNormalizedMenuUpdateStatus'
example:
job_id: 35b5b71c-417c-448f-8390-5eea50b59ca5
details: Successful ingestion
merchant_statuses:
- merchant_id: '12035446'
status: SUCCESS
menu_proof_url: https://pp.grubhub.com/restaurant/12035446?proof=true
'404':
description: No job found for that ID
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v2/merchant/{merchant_id}/pos-status:
put:
tags:
- Endpoints
summary: Set the status of a merchant to online or offline for specific order types
description: Provides the ability to set the status of a merchant to online or offline on Grubhub for specific order types (STANDARD, CATERING, GROUP). When offline, the merchant will not be listed on the site for that order type; when online, the merchant will be listed on the site and be able to accept orders for that order type.
operationId: updateMerchantStatusByOrderType
parameters:
- name: merchant_id
in: path
description: The Grubhub ID for the merchant OR the Partner merchant ID.
required: true
explode: false
schema:
type: string
requestBody:
description: Merchant status update request by order type.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderTypeHeartbeatPayload'
example:
order_type_statuses:
STANDARD:
new_pos_status: ONLINE
CATERING:
new_pos_status: OFFLINE
reason: Temporarily unavailable
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly. This could be due to an invalid order type, POS integration not being enabled, or the merchant being blocked from updates.
'400':
description: Invalid request. This could be due to an invalid merchant ID format or an invalid status transition (e.g., attempting to bring a merchant online when not in a pausable state).
'404':
description: Could not find the merchant to be updated.
'204':
description: No Content - The merchant status was successfully updated.
'403':
description: You do not have access to the requested resource.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v2/merchant/pos-status:
put:
tags:
- Endpoints
summary: Set the status of a batch of merchants to online or offline by order type
description: Provides the ability to set the status of multiple merchants to online or offline on Grubhub for specific order types (STANDARD, CATERING, GROUP). When offline, the merchants will not be listed on the site for that order type; when online, the merchants will be listed on the site and be able to accept orders for that order type.
operationId: updateMerchantStatusByOrderTypeBatch
requestBody:
description: Batch of merchant status update requests by order type.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MerchantOrderTypeHeartbeatPayload'
example:
- merchant_id: '123456'
order_type_statuses:
STANDARD:
new_pos_status: ONLINE
CATERING:
new_pos_status: OFFLINE
reason: Temporarily unavailable
required: true
responses:
'200':
description: OK.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
example:
batch_id: BgAPKjIATE6Xmot9N0JLZw
merchant_ids:
- '123456'
- '789012'
'422':
description: The data you provided in the request body was invalid or formatted incorrectly. It is likely there are duplicate merchant IDs in the provided list, the number of items in batch exceeds the maximum limit allowed, there were no items provided, or one or more merchants are blocked from updates.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
'400':
description: Invalid request. This could be due to an invalid merchant ID format in the batch.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
'404':
description: Bulk processing is not enabled for this operation.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/taxrate:
get:
tags:
- Endpoints
summary: Get a merchant's tax rate
description: Returns a merchant's overall tax rate. This rate will be used for any menu item or other taxable charge that does not have its own tax rate configuration.
operationId: getMerchantTaxRate
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'404':
description: Could not find the merchant or its tax rate.
content:
'*/*':
schema:
type: string
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: string
'200':
description: Successfully retrieved a merchant's tax rate.
content:
application/json:
schema:
type: number
format: double
example: 5.12
put:
tags:
- Endpoints
summary: Update a merchant's tax rate
description: Updates the overall tax rates for a merchant. These rates will be used for any menu item or other taxable charge that does not have its own tax rate configuration.
operationId: updateMerchantTaxRate
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: The default tax rate to apply to all menu items associated with this merchant.
content:
application/json:
schema:
type: number
format: double
example: 5.12
required: true
responses:
'200':
description: Successfully updated a merchant's tax rate.
content:
application/json:
schema:
type: number
format: double
example: 5.12
'404':
description: Could not find this merchant to be updated.
content:
'*/*':
schema:
type: string
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: string
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/scheduledorders:
put:
tags:
- Endpoints
summary: Toggle a merchant's scheduled ordering capability
description: Allows an individual merchant to opt in/out of scheduled ordering.
operationId: updateOptInOrOutScheduledOrdersByLegacyId
parameters:
- name: merchant_id
in: path
description: The Grubhub ID for the merchant OR the Partner merchant ID (specific configurations are required to enable one or the other).
required: true
explode: false
schema:
type: string
requestBody:
description: Request merchant to opt-in/opt-out from scheduled orders.
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledOrdersUpdateRequest'
example:
enabled: true
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly.
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
'404':
description: Could not find the merchant to be updated.
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
'403':
description: You do not have access to the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
'200':
description: Successfully updated scheduled ordering capability.
content:
application/json:
schema:
type: string
example: Merchant successfully opted-in
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/preorderwindow:
put:
tags:
- Endpoints
summary: Update a merchant's pre-order confirmable window (in minutes)
description: The Pre-order confirmable window determines when Grubhub should transition a scheduled order from ANTICIPATED status to RESTAURANT_CONFIRMABLE with relation to the desired fulfillment time. For example, a merchant with a window of 120 minutes would receive the RESTAURANT_CONFIRMABLE webhook 2 hours before desired fulfillment time giving them plenty of time to prep the order. For merchants with faster prep time, this window is usually very small to guarantee food quality.
operationId: updateMerchantPreOrderInMinutes
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: Duration in which a preorder can be sent to the merchant for confirmation.
content:
application/json:
schema:
type: integer
format: int32
example: 5
required: true
responses:
'422':
description: The merchant's pre-order confirmable window (in minutes) is disabled.
content:
'*/*':
schema:
type: string
'404':
description: Could not find the merchant to be updated.
content:
'*/*':
schema:
type: string
'200':
description: OK.
content:
application/json:
schema:
type: integer
format: int32
example: 5
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: string
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/pos-status:
put:
tags:
- Endpoints
summary: Set a merchant's status to online or offline
description: Provides the ability to set a merchant's status to online or offline on Grubhub. When offline, the merchant will not be listed on the site; when online, the merchant will be listed on the site and be able to accept orders.
operationId: heartbeatStatusChangeTriggered
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: Request body to set store OFFLINE/ONLINE.
content:
application/json:
schema:
$ref: '#/components/schemas/HeartbeatTriggeredPayload'
example:
new_pos_status: ONLINE
reason: Heartbeat received
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly.
'404':
description: Could not find the merchant to be updated.
'403':
description: You do not have access to the requested resource.
'409':
description: The merchant's current status matches the new_pos_status provided in the request.
'204':
description: Successfully set the merchant as online/offline on Grubhub.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/fulfillment/{delivery_area_id}/deliveryfee:
get:
tags:
- Endpoints
summary: Get a merchant's delivery area fee
description: Returns a merchant's delivery fee for a delivery area.
operationId: getMerchantDeliveryAreaFeeByLegacyId
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: delivery_area_id
in: path
description: ID for delivery area.
required: true
explode: false
schema:
type: string
format: uuid
responses:
'404':
description: Could not find the merchant or its delivery area fee.
content:
'*/*':
schema:
type: integer
format: int32
'200':
description: Successfully retrieved the merchant's delivery area fee.
content:
application/json:
schema:
type: integer
format: int32
example: 5
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: integer
format: int32
put:
tags:
- Endpoints
summary: Update a merchant's delivery area fee
description: Updates a merchant's delivery fee for specified delivery area.
operationId: updateMerchantDeliveryAreaFeeByLegacyId
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: delivery_area_id
in: path
description: ID for delivery area.
required: true
explode: false
schema:
type: string
format: uuid
requestBody:
description: Delivery fee value.
content:
application/json:
schema:
type: integer
format: int32
example: 5
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly.
'404':
description: Could not find the merchant to be updated.
'200':
description: Successfully updated the merchant's delivery area fee.
'403':
description: You do not have access to the requested resource.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/fulfillment/estimates:
get:
tags:
- Endpoints
summary: Get a merchant's fulfillment estimates
description: Returns the estimated time that a merchant takes to fulfill an order for both pickup and delivery, separately.
operationId: getFulfillmentEstimatesByLegacyId
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: order_type
in: query
description: 'What kind of order this is. This can be one of the following: - "standard" - A regular, single diner order. - "catering" - A large order intended to provide food for multiple people and is often ordered by a corporate organization. - "group" - An order for multiple diners.'
required: false
content:
application/json:
schema:
type: string
enum:
- STANDARD
- CATERING
- GROUP
example: '{"order_type":"standard"}'
responses:
'200':
description: Successfully retrieved a merchant's fulfillment estimates.
content:
application/json:
schema:
$ref: '#/components/schemas/PosEstimates'
example:
pickup_estimate_minutes: 15
delivery_estimate_minutes: 30
'404':
description: Cound not find the merchant or its fulfillment estimates.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosEstimates'
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosEstimates'
put:
tags:
- Endpoints
summary: Update a merchant's fulfillment estimates
description: Updates the estimated time that the merchant takes to fulfill an order for both pickup and delivery, separately.
operationId: updateFulfillmentEstimatesByLegacyId
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: The estimated number of minutes to fulfill a delivery order and a pickup order, separately.
content:
application/json:
schema:
$ref: '#/components/schemas/PosEstimatesUpdateRequest'
example:
pickup_estimate_minutes: 20
delivery_estimate_minutes: 45
order_type: standard
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosEstimates'
'200':
description: Successfully updated a merchant's fulfillment estimates.
content:
application/json:
schema:
$ref: '#/components/schemas/PosEstimates'
example:
pickup_estimate_minutes: 15
delivery_estimate_minutes: 30
'404':
description: Could not find the merchant to be updated.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosEstimates'
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosEstimates'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/fulfillment/deliveryboundaries:
get:
tags:
- Endpoints
summary: Gets a merchant's delivery boundaries
description: Returns a merchant's delivery boundaries.
operationId: getDeliveryBoundaries
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'404':
description: Could not find the merchant or its delivery boundaries.
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/DeliveryArea'
'200':
description: Successfully retrieved the merchant's delivery boundaries.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeliveryArea'
example:
- id: d11208c6-4f87-4b5a-8c3e-6b8e4482dd8a
name: Downtown
fee_cents: 500
zone_type: diner
geometry: '{"type":"Polygon","coordinates":[[[-122.4081,37.783696],[-122.40008,37.786453],...]]}'
stats:
area: 2500.0
approximate_radius: 50.0
height: 100.0
width: 50.0
- id: e42842c8-0571-4e53-9a8b-1ea2aa7ef20e
name: Uptown
fee_cents: 300
zone_type: catering
geometry: '{"type":"Polygon","coordinates":[[[-122.4201,37.793296],[-122.41208,37.796053],...]]}'
stats:
area: 3500.0
approximate_radius: 60.0
height: 120.0
width: 70.0
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/DeliveryArea'
put:
tags:
- Endpoints
summary: Update a merchant's delivery boundaries
description: Updates a merchant's delivery boundaries if they have delivery settings configured. Note that the body of this request must include the entire set of all delivery areas, as this change overwrites all current delivery zones.
operationId: updateDeliveryBoundaries
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: The new or updated delivery zones.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeliveryArea'
example:
- id: f43e64d3-2e9c-4d64-a4a1-74e3953e1a68
name: Downtown Zone
fee_cents: 500
zone_type: DINER
geometry: '{ "type": "Polygon", "coordinates": [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]] }'
stats:
area: 0.5
approximate_radius: 0.71
height: 1.0
width: 1.0
- id: ac382e8e-4d91-47fb-a724-39e04ac2e07c
name: Suburb Zone
fee_cents: 800
zone_type: DINER
geometry: '{ "type": "Polygon", "coordinates": [[[2, 2], [3, 2], [3, 3], [2, 3], [2, 2]]] }'
stats:
area: 1.0
approximate_radius: 1.0
height: 1.0
width: 1.0
required: true
responses:
'404':
description: Could not find the merchant to be updated.
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/DeliveryArea'
'200':
description: Successfully updated a merchant's the delivery areas.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeliveryArea'
example:
- id: d11208c6-4f87-4b5a-8c3e-6b8e4482dd8a
name: Downtown
fee_cents: 500
zone_type: diner
geometry: '{"type":"Polygon","coordinates":[[[-122.4081,37.783696],[-122.40008,37.786453],...]]}'
stats:
area: 2500.0
approximate_radius: 50.0
height: 100.0
width: 50.0
- id: e42842c8-0571-4e53-9a8b-1ea2aa7ef20e
name: Uptown
fee_cents: 300
zone_type: catering
geometry: '{"type":"Polygon","coordinates":[[[-122.4201,37.793296],[-122.41208,37.796053],...]]}'
stats:
area: 3500.0
approximate_radius: 60.0
height: 120.0
width: 70.0
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: array
items:
$ref: '#/components/schemas/DeliveryArea'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/deliveryminimum:
get:
tags:
- Endpoints
summary: Get a merchant's delivery minimum
description: Returns the merchant's delivery minimum.
operationId: getDeliveryMinimumForMerchant
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Returns the merchant's delivery minimum.
content:
application/json:
schema:
type: number
format: double
example: 5.12
'404':
description: Could not find the merchant or its delivery minimum.
content:
'*/*':
schema:
type: string
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: string
put:
tags:
- Endpoints
summary: Update a merchant's delivery minimum
description: Updates a merchant's delivery minimum if they do not do managed delivery.
operationId: updateDeliveryMinimumForMerchant
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: The new delivery minimum value.
content:
application/json:
schema:
type: number
format: double
example: 5.12
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly.
content:
'*/*':
schema:
type: string
'200':
description: Successfully retrieved the merchant's updated delivery minimum.
content:
application/json:
schema:
type: number
format: double
example: 5.12
'404':
description: Could not find the merchant to be updated.
content:
'*/*':
schema:
type: string
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
type: string
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/properties:
put:
tags:
- Endpoints
summary: Update the properties of a batch of merchants
description: Updates merchant properties for multiple merchants or individual merchant at a time.
operationId: updateMerchantProperties
requestBody:
description: Request containing the merchant ID/s and the properties to be applied for all of them.
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantPropertyUpdateRequest'
example:
merchant_ids:
- store182
- store201
property_updates:
delivery_estimate_minutes: '45'
pickup_estimate_minutes: '30'
special_instructions_disabled: 'false'
sales_tax: '8.5'
driver_pickup_instructions: Follow the green signs
diner_pickup_contact_phone: 123-456-7890
diner_offers_curbside_pickup: 'true'
diner_pickup_curbside_instructions: Wait at the marked area
order_validation_opt_in: 'true'
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly. It is likely there are duplicate merchant IDs in the provided list, the number of items in batch exceeds the maximum limit allowed, or there were no items provided.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
'200':
description: OK.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
example:
batch_id: e12435f1-6dcf-4b14-96f5-42d56e12c8a9
merchant_ids:
- merchant_001
- merchant_002
- merchant_003
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/pos-status:
put:
tags:
- Endpoints
summary: Set the status of a batch of merchants to online or offline
description: Provides the ability to set the status of a batch of merchants to online or offline on Grubhub. When offline, the merchants will not be listed on the site; when online, the merchant will be listed on the site and be able to accept orders.
operationId: heartbeatStatusChangeTriggeredBatch
requestBody:
description: Batch of merchant Pos Status requests.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MerchantHeartbeatTriggeredPayload'
example:
- merchant_id: store182
new_pos_status: ONLINE
reason: Heartbeat received
- merchant_id: store201
new_pos_status: OFFLINE
reason: No heartbeat detected
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly. It is likely there are duplicate merchant IDs in the provided list, the number of items in batch exceeds the maximum limit allowed, or there were no items provided.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
'200':
description: OK.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
example:
batch_id: e12435f1-6dcf-4b14-96f5-42d56e12c8a9
merchant_ids:
- merchant_001
- merchant_002
- merchant_003
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/integrationlive:
put:
tags:
- Endpoints
summary: Update the live integration status of a batch of merchants
description: Enables / disables live integration status for a batch of merchants. A merchant can have live integration enabled only if it has at least one successful ingestion completed and it's not a GH Direct merchant.
operationId: updatePosMerchantIntegration
requestBody:
description: Batch of merchant integration requests.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosMerchantIntegrationStatus'
example:
- merchant_id: store182
enabled: true
- merchant_id: store201
enabled: false
required: true
responses:
'422':
description: The data you provided in the request body was invalid or formatted incorrectly. It is likely there are duplicate merchant IDs in the provided list, the number of items in batch exceeds the maximum limit allowed, or there were no items provided.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
'200':
description: OK.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationResponse'
example:
batch_id: e12435f1-6dcf-4b14-96f5-42d56e12c8a9
merchant_ids:
- merchant_001
- merchant_002
- merchant_003
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v2/merchant/pos-status/{batch_id}/status:
get:
tags:
- Endpoints
summary: Get the online or offline status of a batch of merchants by order type
description: Returns the status of the merchant online/offline batch (by order type) together with the progress for each individual merchant, or, if present, only for the specified merchant ID.
operationId: getMerchantStatusByOrderTypeBatchStatus
parameters:
- name: batch_id
in: path
description: The batch unique identifier.
required: true
explode: false
schema:
type: string
format: uuid
- name: merchant_id
in: query
description: The merchant ID to get the processing status for.
required: false
explode: true
schema:
type: string
responses:
'404':
description: Could not find the batch.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
'200':
description: Batch status was successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
example:
batch_id: BgAPKjIATE6Xmot9N0JLZw
processing_complete: true
merchant_statuses:
- merchant_id: '123456'
status: SUCCESSFUL
details: null
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{partner_id}/idmappings:
get:
tags:
- Endpoints
summary: Get internal / external ID mappings
description: Returns the internal / external merchant ID mappings associated with your partner_id (which a customer includes in every API call), for either up to 100 external merchant IDs (if the externalIds query parameter is populated and valid) or ALL the internal / external merchant IDs (when the externalIds query parameter is not populated or not sent at all). You will have to have ingested a menu before this endpoint will return valuable information.
operationId: getIdMappingsByPartnerAndExternalIds
parameters:
- name: partner_id
in: path
description: The partner ID for the merchant or merchant group.
required: true
explode: false
schema:
type: string
format: uuid
- name: externalIds
in: query
description: A string that can contain up to 100 `external_id` values separated by commas. This field can also be left empty or not provided at all.
required: false
explode: true
schema:
type: string
responses:
'200':
description: OK.
content:
application/json:
schema:
uniqueItems: true
type: array
items:
$ref: '#/components/schemas/ExternalId'
example:
- partner_id: 12345678-abcd-efgh-ijkl-9876543210ab
internal_id: merchant123
external_id: ext_merchant_001
type: merchant
- partner_id: abcdef12-3456-7890-abcd-efghijklmnop
internal_id: merchant456
external_id: ext_merchant_002
type: merchant
- partner_id: 98765432-pqrs-tuvw-xyzw-1234567890ab
internal_id: merchant789
external_id: ext_merchant_003
type: merchant
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/fulfillment:
get:
tags:
- Endpoints
summary: Get a merchant's fulfillment info
description: Returns a merchant's fulfillment info.
operationId: getFulfillmentInfoByLegacyId
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'404':
description: Could not find the merchant or its fulfillment info.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantFulfillmentInfo'
'200':
description: Successfully retrieved merchant's fulfillment info.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantFulfillmentInfo'
example:
pos_estimates:
STANDARD:
pickup_estimate_minutes: 30
delivery_estimate_minutes: 45
CATERING:
pickup_estimate_minutes: 60
delivery_estimate_minutes: 90
delivery_fee:
value: 500
type: FLAT
delivery_minimum: 2000
active_delivery_areas:
- id: 123e4567-e89b-12d3-a456-426655440000
name: Downtown Area
feeCents: 500
geometry: '{...}'
zoneType: DINER
- id: 987e6543-c21d-43a2-a753-426655440000
name: Catering Zone
feeCents: 1000
geometry: '{...}'
zoneType: CATERING
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantFulfillmentInfo'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}:
get:
tags:
- Endpoints
summary: Get a merchant
description: Returns summary information about a merchant. Will be extended in the future.
operationId: getMerchantByLegacyId
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Successfully retrieved the merchant.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantData'
example:
merchant_id: abc123
name: Merchant Name
account_status:
merchant_status: ACTIVE
merchant_status_descriptor: Active
pos_merchant_status: ONLINE
reason: Account is active
holds_active_account: true
accepting_phone_orders: false
accepting_online_orders: true
merchant_status_comments: Merchant is actively conducting business
address:
street_address: 123 Main Street
street_address2: Suite 456
locality: Cityville
region: CA
postal_code: '12345'
county: Countyville
county_id: 789
region_code: US
time_zone: America/Los_Angeles
geo_location:
lat: 37.1234
lng: -122.5678
service_type: DELIVERY AND PICKUP
fulfillment_info:
pos_estimates:
STANDARD:
preparation_time_minutes: 30
delivery_time_minutes: 45
CATERING:
preparation_time_minutes: 60
delivery_time_minutes: 90
delivery_fee:
value: 500
type: FLAT
delivery_minimum: 2000
active_delivery_areas:
- id: 123e4567-e89b-12d3-a456-426655440000
name: Downtown Area
feeCents: 500
geometry: '{...}'
zoneType: DINER
- id: 987e6543-c21d-43a2-a753-426655440000
name: Catering Zone
feeCents: 1000
geometry: '{...}'
zoneType: CATERING
order_processing_info:
scheduled_orders: true
pos_integrated: false
order_taking_info:
managed_delivery: true
special_instructions_disabled: false
driver_pickup_instructions: Please go to the front desk for pickup.
diner_pickup_instructions:
offers_curbside_pickup: true
contact_phone: 555-123-4567
curbside_instructions: Call upon arrival for curbside pickup.
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantData'
'404':
description: Could not find the merchant.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantData'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/properties/{batch_id}/status:
get:
tags:
- Endpoints
summary: Get merchant properties batch update status
description: Returns the status of the merchant properties update batch together with the progress for each individual merchant, or, if present, only for the specified merchant ID.
operationId: getMerchantPropertiesBatchStatus
parameters:
- name: batch_id
in: path
description: The merchant properties bulk processing batch unique identifier.
required: true
explode: false
schema:
type: string
format: uuid
- name: merchant_id
in: query
description: The merchant ID to get the processing status for.
required: true
explode: true
schema:
type: string
responses:
'200':
description: Batch status was successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
example:
batch_id: e12435f1-6dcf-4b14-96f5-42d56e12c8a9
processing_complete: true
merchant_status:
merchant_001: SUCCESS
merchant_002: NOT_FOUND
merchant_statuses:
- merchantId: merchant_001
status: SUCCESS
details: Merchant operation processed successfully.
- merchantId: merchant_002
status: NOT_FOUND
details: Merchant not found. The operation couldn't be processed.
'404':
description: Could not find the batch.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/pos-status/{batch_id}/status:
get:
tags:
- Endpoints
summary: Get the online or offline status of a batch of merchants
description: Returns the status of the merchant online/offline batch together with the progress for each individual merchant, or, if present, only for the specified merchant ID.
operationId: getHeartbeatStatusChangeTriggeredBatchStatus
parameters:
- name: batch_id
in: path
description: The batch unique identifier.
required: true
explode: false
schema:
type: string
format: uuid
- name: merchant_id
in: query
description: The merchant ID to get the processing status for.
required: false
explode: true
schema:
type: string
responses:
'200':
description: Batch status was successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
example:
batch_id: e12435f1-6dcf-4b14-96f5-42d56e12c8a9
processing_complete: true
merchant_status:
merchant_001: SUCCESS
merchant_002: NOT_FOUND
merchant_statuses:
- merchantId: merchant_001
status: SUCCESS
details: Merchant operation processed successfully.
- merchantId: merchant_002
status: NOT_FOUND
details: Merchant not found. The operation couldn't be processed.
'404':
description: Could not find the batch.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/integrationlive/{batch_id}/status:
get:
tags:
- Endpoints
summary: Get the live integration status of a batch of merchants
description: Returns the status of the merchant live integration batch together with the progress for each individual merchant, or, if present, only for the specified merchant ID.
operationId: getPosMerchantIntegrationBatchStatus
parameters:
- name: batch_id
in: path
description: The live integration bulk processing batch unique identifier.
required: true
explode: false
schema:
type: string
format: uuid
- name: merchant_id
in: query
description: The merchant ID to get the processing status for.
required: false
explode: true
schema:
type: string
responses:
'200':
description: Batch status was successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
example:
batch_id: e12435f1-6dcf-4b14-96f5-42d56e12c8a9
processing_complete: true
merchant_status:
merchant_001: SUCCESS
merchant_002: NOT_FOUND
merchant_statuses:
- merchantId: merchant_001
status: SUCCESS
details: Merchant operation processed successfully.
- merchantId: merchant_002
status: NOT_FOUND
details: Merchant not found. The operation couldn't be processed.
'404':
description: Could not find the batch.
content:
'*/*':
schema:
$ref: '#/components/schemas/PosMerchantBatchOperationStatus'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/config/groups/{group_key}:
get:
tags:
- Endpoints
summary: Get a configuration group
description: Returns a configuration group, including the merchant IDs included in the group. This group key can be used for polling orders and deliveries to avoid making separate requests for each merchant. Please contact your Grubhub rep for the key
operationId: getMerchantsByGroup
parameters:
- name: group_key
in: path
description: The group key for which to retrieve merchants.
required: true
explode: false
schema:
type: string
responses:
'404':
description: Could not find the configuration group.
content:
'*/*':
schema:
$ref: '#/components/schemas/ConfigGroup'
'200':
description: Successfully retrieved a configuration group.
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigGroup'
example:
group_name: POS Partner X
merchant_ids:
- merchant_id_1
- merchant_id_2
- merchant_id_3
'403':
description: You do not have access to the requested resource.
content:
'*/*':
schema:
$ref: '#/components/schemas/ConfigGroup'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/repeating:
get:
tags:
- Endpoints
summary: Get merchant schedules
description: Gets a merchant's schedules.
operationId: getRepeatingSchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Successfully retrieved merchant schedule.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
- merchant_id: abc123
schedule_id: e1a4d35c-3e52-4d7f-8b0c-60c4dc328d9c
name: DELIVERY
version_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
repeating_schedule_content:
name: Weekly Schedule
type: WEEKLY
metadata: This is the weekly schedule
rules:
- days_of_week:
- MONDAY
- TUESDAY
rule_interval:
start_time: 09:00:00
end_time: '17:00:00'
- days_of_week:
- WEDNESDAY
- THURSDAY
rule_interval:
start_time: '10:00:00'
end_time: '16:00:00'
metadata:
source: API
- merchant_id: def456
schedule_id: 21c8a1d4-5730-4e64-8d82-78c4b451e2a8
name: PICKUP
version_id: f5219c4f-8276-4f23-9d32-bf9e700199a3
repeating_schedule_content:
name: Weekly Pickup Schedule
type: WEEKLY
metadata: This is the weekly pickup schedule
rules:
- days_of_week:
- FRIDAY
- SATURDAY
- SUNDAY
rule_interval:
start_time: '11:00:00'
end_time: '19:00:00'
metadata:
source: Web
put:
tags:
- Endpoints
summary: Create/Update merchant schedule
description: Creates a merchant schedule if one doesn't exist when updating delivery and pickup schedules.
operationId: putRepeatingSchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: The hours per day of the week that this merchant can accept delivery/pickup/catering orders.
content:
application/json:
schema:
$ref: '#/components/schemas/PosUpdateRepeatingScheduleRequest'
example:
intervals:
- repeating_schedule_rule:
- MONDAY
- TUESDAY
start: 08:00:00
end: '12:00:00'
- repeating_schedule_rule:
- WEDNESDAY
- THURSDAY
start: '13:30:00'
end: '17:30:00'
schedule_type: DELIVERY
required: true
responses:
'200':
description: Successfully updated merchant schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
merchant_id: store182
schedule_id: 12345678-abcd-efgh-ijkl-9876543210ab
name: DELIVERY
version_id: 98765432-ijkl-efgh-abcd-1234567890ab
repeating_schedule_content:
name: Example Schedule
type: WEEKLY
metadata: 1i89aASJDF2
rules:
- days_of_week:
- MONDAY
- WEDNESDAY
- FRIDAY
rule_interval:
start_time: 09:00
end_time: '18:00'
- days_of_week:
- TUESDAY
- THURSDAY
rule_interval:
start_time: '10:00'
end_time: '17:00'
metadata:
source: Example Source
created_by: John Doe
updated_by: Jane Doe
create_date: '2023-07-20T12:00:00Z'
update_date: '2023-07-20T14:30:00Z'
legacy_id: lkja92ASJd2
description: system data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/pickup/{schedule_version}:
put:
tags:
- Endpoints
summary: Update a pickup schedule
description: Replaces the weekly schedule of when a merchant is available to accept pickup orders.
operationId: updatePickupSchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: schedule_version
in: path
description: The ID of the schedule version that you want to update.
required: true
explode: false
schema:
type: string
format: uuid
requestBody:
description: The hours per day of the week that this merchant can accept pickup orders.
content:
application/json:
schema:
$ref: '#/components/schemas/PosUpdateRepeatingScheduleRequest'
example:
intervals:
- repeating_schedule_rule:
- MONDAY
- TUESDAY
start: 08:00:00
end: '12:00:00'
- repeating_schedule_rule:
- WEDNESDAY
- THURSDAY
start: '13:30:00'
end: '17:30:00'
schedule_type: DELIVERY
required: true
responses:
'200':
description: Successfully updated pickup schedule
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
merchant_id: store182
schedule_id: 12345678-abcd-efgh-ijkl-9876543210ab
name: DELIVERY
version_id: 98765432-ijkl-efgh-abcd-1234567890ab
repeating_schedule_content:
name: Example Schedule
type: WEEKLY
metadata: 1i89aASJDF2
rules:
- days_of_week:
- MONDAY
- WEDNESDAY
- FRIDAY
rule_interval:
start_time: 09:00
end_time: '18:00'
- days_of_week:
- TUESDAY
- THURSDAY
rule_interval:
start_time: '10:00'
end_time: '17:00'
metadata:
source: Example Source
created_by: John Doe
updated_by: Jane Doe
create_date: '2023-07-20T12:00:00Z'
update_date: '2023-07-20T14:30:00Z'
legacy_id: lkja92ASJd2
description: system data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/delivery/{schedule_version}:
put:
tags:
- Endpoints
summary: Update a delivery schedule
description: Replaces the weekly schedule of when a merchant is available to accept delivery orders.
operationId: updateDeliverySchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: schedule_version
in: path
description: The ID of the schedule version that you want to update.
required: true
explode: false
schema:
type: string
format: uuid
requestBody:
description: The hours per day of the week that this merchant can accept delivery orders.
content:
application/json:
schema:
$ref: '#/components/schemas/PosUpdateRepeatingScheduleRequest'
example:
intervals:
- repeating_schedule_rule:
- MONDAY
- TUESDAY
start: 08:00:00
end: '12:00:00'
- repeating_schedule_rule:
- WEDNESDAY
- THURSDAY
start: '13:30:00'
end: '17:30:00'
schedule_type: DELIVERY
required: true
responses:
'200':
description: Successfully updated delivery schedule
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
merchant_id: store182
schedule_id: 12345678-abcd-efgh-ijkl-9876543210ab
name: DELIVERY
version_id: 98765432-ijkl-efgh-abcd-1234567890ab
repeating_schedule_content:
name: Example Schedule
type: WEEKLY
metadata: 1i89aASJDF2
rules:
- days_of_week:
- MONDAY
- WEDNESDAY
- FRIDAY
rule_interval:
start_time: 09:00
end_time: '18:00'
- days_of_week:
- TUESDAY
- THURSDAY
rule_interval:
start_time: '10:00'
end_time: '17:00'
metadata:
source: Example Source
created_by: John Doe
updated_by: Jane Doe
create_date: '2023-07-20T12:00:00Z'
update_date: '2023-07-20T14:30:00Z'
legacy_id: lkja92ASJd2
description: system data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/catering/{schedule_version}:
put:
tags:
- Endpoints
summary: Update a catering schedule
description: Replaces the weekly schedule of when a merchant is available to accept catering orders.
operationId: updateCateringSchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
- name: schedule_version
in: path
description: The ID of the schedule version that you want to update.
required: true
explode: false
schema:
type: string
format: uuid
requestBody:
description: The hours per day of the week that this merchant can accept catering orders.
content:
application/json:
schema:
$ref: '#/components/schemas/PosUpdateRepeatingScheduleRequest'
example:
intervals:
- repeating_schedule_rule:
- MONDAY
- TUESDAY
start: 08:00:00
end: '12:00:00'
- repeating_schedule_rule:
- WEDNESDAY
- THURSDAY
start: '13:30:00'
end: '17:30:00'
schedule_type: DELIVERY
required: true
responses:
'200':
description: Successfully updated catering schedule
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
merchant_id: store182
schedule_id: 12345678-abcd-efgh-ijkl-9876543210ab
name: DELIVERY
version_id: 98765432-ijkl-efgh-abcd-1234567890ab
repeating_schedule_content:
name: Example Schedule
type: WEEKLY
metadata: 1i89aASJDF2
rules:
- days_of_week:
- MONDAY
- WEDNESDAY
- FRIDAY
rule_interval:
start_time: 09:00
end_time: '18:00'
- days_of_week:
- TUESDAY
- THURSDAY
rule_interval:
start_time: '10:00'
end_time: '17:00'
metadata:
source: Example Source
created_by: John Doe
updated_by: Jane Doe
create_date: '2023-07-20T12:00:00Z'
update_date: '2023-07-20T14:30:00Z'
legacy_id: lkja92ASJd2
description: system data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/overrides:
get:
tags:
- Endpoints
summary: Get schedule overrides
description: Retrieve all schedule overrides for a merchant.
operationId: getScheduledOverrides
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Successfully retrieved schedule overrides.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosScheduleOverride'
example:
- schedule_id: 123e4567-e89b-12d3-a456-426614174000
merchant_id: merchant_id_123
name: DELIVERY
type: AVAILABLE
metadata:
source: source_value
created_by: John Doe
updated_by: Jane Smith
create_date: '2023-07-18T12:00:00'
update_date: '2023-07-18T14:00:00'
legacy_id: legacy_id_value
description: Schedule override metadata description
local_start_time: '2023-07-18T10:00:00'
local_end_time: '2023-07-18T15:00:00'
start_time_utc: '2023-07-18T07:00:00Z'
end_time_utc: '2023-07-18T12:00:00Z'
- schedule_id: 98765432-e89b-12d3-a456-426614174000
merchant_id: merchant_id_456
name: PICKUP
type: UNAVAILABLE
metadata:
source: source_value_2
created_by: Alice Johnson
updated_by: Bob Smith
create_date: '2023-07-19T09:00:00'
update_date: '2023-07-19T11:00:00'
legacy_id: legacy_id_value_2
description: Another Schedule override metadata description
local_start_time: '2023-07-19T07:00:00'
local_end_time: '2023-07-19T10:00:00'
start_time_utc: '2023-07-19T04:00:00Z'
end_time_utc: '2023-07-19T07:00:00Z'
post:
tags:
- Endpoints
summary: Add schedule override
description: Add a schedule override for a merchant.
operationId: overrideSchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: The schedule override to add.
content:
application/json:
schema:
$ref: '#/components/schemas/PosScheduleOverrideRequest'
example:
start: '2023-07-20T12:00:00'
end: '2023-07-21T12:00:00'
type: AVAILABLE
schedule_name: DELIVERY
required: true
responses:
'400':
description: No user id in request information, or number of availability overrides of exceeds max limit.
'409':
description: Schedule override overlaps existing override.
'200':
description: Successfully added schedule override.
content:
application/json:
schema:
$ref: '#/components/schemas/PosScheduleOverrideRequest'
example:
start: '2023-07-18T10:00:00'
end: '2023-07-18T15:00:00'
type: AVAILABLE
schedule_name: DELIVERY
delete:
tags:
- Endpoints
summary: Delete schedule override
description: Cancels and existing schedule override. Has the effect of updating the end time of the override.
operationId: deleteScheduleOverride
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
requestBody:
description: Reference to the override to be deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/PosDeleteScheduleOverride'
example:
current_end_time: '2023-07-20T12:00:00'
type: AVAILABLE
required: true
responses:
'204':
description: Override successfully deleted.
'409':
description: Schedule override overlaps existing override.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/opennow:
post:
tags:
- Endpoints
summary: Start receiving online orders
description: Immediately makes the merchant available for Grubhub orders. If the merchant was closed, whether during a regular or custom schedule, from a previous closeNow call, or because of a schedule override, the merchant will become immediately available on Grubhub. This will only affect the status of the merchant on Grubhub; in-store orders will be unaffected.
operationId: openNow
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'503':
description: Service requires reconciliation to be enabled
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosFullSchedule'
example:
statuses:
DELIVERY: OPEN
PICKUP: CLOSED
CATERING: OPEN
GROUP: OPEN
today_schedule:
DELIVERY:
'2023-07-20':
start_time: 09:00:00
end_time: '17:00:00'
'2023-07-21':
start_time: 09:00:00
end_time: '17:00:00'
PICKUP:
'2023-07-20':
start_time: '10:00:00'
end_time: '16:00:00'
overrides_in_effect:
- schedule_id: e1a4d35c-3e52-4d7f-8b0c-60c4dc328d9c
merchant_id: abc123
name: DELIVERY
type: WHITEIN
metadata:
source: API
local_start_time: '2023-07-20T09:00:00'
local_end_time: '2023-07-20T17:00:00'
start_time_utc: '2023-07-20T06:00:00Z'
end_time_utc: '2023-07-20T14:00:00Z'
mass_overrides_in_effect:
- id: f5219c4f-8276-4f23-9d32-bf9e700199a3
merchant_ids:
- def456
- ghi789
metadata: {}
start_time_utc: '2023-07-21T08:00:00Z'
end_time_utc: '2023-07-21T16:00:00Z'
start_time_local: '2023-07-21T12:00:00'
end_time_local: '2023-07-21T20:00:00'
repeating_schedules_in_effect:
- merchant_id: jkl012
schedule_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
name: CATERING
version_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
repeating_schedule_content:
name: Weekly Schedule
type: WEEKLY
metadata: This is the weekly schedule
rules:
- days_of_week:
- TUESDAY
- FRIDAY
rule_interval:
start_time: '11:00:00'
end_time: '19:00:00'
metadata:
source: Web
custom_schedules_in_effect:
- name: GROUP
date: '2023-07-21'
metadata:
source: API
intervals:
- start_time: '10:00:00'
end_time: '14:00:00'
- start_time: '17:00:00'
end_time: '20:00:00'
description: Custom schedule for group orders
all_schedule_overrides:
- schedule_id: e1a4d35c-3e52-4d7f-8b0c-60c4dc328d9c
merchant_id: abc123
name: DELIVERY
type: WHITEIN
metadata:
source: API
local_start_time: '2023-07-20T09:00:00'
local_end_time: '2023-07-20T17:00:00'
start_time_utc: '2023-07-20T06:00:00Z'
end_time_utc: '2023-07-20T14:00:00Z'
all_mass_overrides:
- id: f5219c4f-8276-4f23-9d32-bf9e700199a3
merchant_ids:
- def456
- ghi789
metadata: {}
start_time_utc: '2023-07-21T08:00:00Z'
end_time_utc: '2023-07-21T16:00:00Z'
start_time_local: '2023-07-21T12:00:00'
end_time_local: '2023-07-21T20:00:00'
all_repeating_schedules:
- merchant_id: jkl012
schedule_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
name: CATERING
version_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
repeating_schedule_content:
name: Weekly Schedule
type: WEEKLY
metadata: This is the weekly schedule
rules:
- days_of_week:
- TUESDAY
- FRIDAY
rule_interval:
start_time: '11:00:00'
end_time: '19:00:00'
metadata:
source: Web
all_custom_schedules:
- name: GROUP
date: '2023-07-21'
metadata:
source: API
intervals:
- start_time: '10:00:00'
end_time: '14:00:00'
- start_time: '17:00:00'
end_time: '20:00:00'
description: Custom schedule for group orders
managed_delivery_schedules:
- name: Weekly
type: WEEKLY
metadata: Metadata to store with this repeating schedule
rules:
- days_of_week:
- MONDAY
- TUESDAY
rule_interval:
start_time: 09:00:00
end_time: '17:00:00'
- days_of_week:
- WEDNESDAY
- THURSDAY
rule_interval:
start_time: '10:00:00'
end_time: '16:00:00'
'404':
description: Merchant or repeating schedule was not found
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/closenow:
post:
tags:
- Endpoints
summary: Stop online orders
description: Immediately stops taking Grubhub orders. The merchant will remain listed on the site, but will be shown as closed/not taking orders, overriding any regular or custom schedules, including schedule overrides. This will only affect the status of the merchant on Grubhub; the POS will still be able to process in-store orders.
operationId: closeNow
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'503':
description: Service requires reconciliation to be enabled
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosFullSchedule'
example:
statuses:
DELIVERY: OPEN
PICKUP: CLOSED
CATERING: OPEN
GROUP: OPEN
today_schedule:
DELIVERY:
'2023-07-20':
start_time: 09:00:00
end_time: '17:00:00'
'2023-07-21':
start_time: 09:00:00
end_time: '17:00:00'
PICKUP:
'2023-07-20':
start_time: '10:00:00'
end_time: '16:00:00'
overrides_in_effect:
- schedule_id: e1a4d35c-3e52-4d7f-8b0c-60c4dc328d9c
merchant_id: abc123
name: DELIVERY
type: WHITEIN
metadata:
source: API
local_start_time: '2023-07-20T09:00:00'
local_end_time: '2023-07-20T17:00:00'
start_time_utc: '2023-07-20T06:00:00Z'
end_time_utc: '2023-07-20T14:00:00Z'
mass_overrides_in_effect:
- id: f5219c4f-8276-4f23-9d32-bf9e700199a3
merchant_ids:
- def456
- ghi789
metadata: {}
start_time_utc: '2023-07-21T08:00:00Z'
end_time_utc: '2023-07-21T16:00:00Z'
start_time_local: '2023-07-21T12:00:00'
end_time_local: '2023-07-21T20:00:00'
repeating_schedules_in_effect:
- merchant_id: jkl012
schedule_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
name: CATERING
version_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
repeating_schedule_content:
name: Weekly Schedule
type: WEEKLY
metadata: This is the weekly schedule
rules:
- days_of_week:
- TUESDAY
- FRIDAY
rule_interval:
start_time: '11:00:00'
end_time: '19:00:00'
metadata:
source: Web
custom_schedules_in_effect:
- name: GROUP
date: '2023-07-21'
metadata:
source: API
intervals:
- start_time: '10:00:00'
end_time: '14:00:00'
- start_time: '17:00:00'
end_time: '20:00:00'
description: Custom schedule for group orders
all_schedule_overrides:
- schedule_id: e1a4d35c-3e52-4d7f-8b0c-60c4dc328d9c
merchant_id: abc123
name: DELIVERY
type: WHITEIN
metadata:
source: API
local_start_time: '2023-07-20T09:00:00'
local_end_time: '2023-07-20T17:00:00'
start_time_utc: '2023-07-20T06:00:00Z'
end_time_utc: '2023-07-20T14:00:00Z'
all_mass_overrides:
- id: f5219c4f-8276-4f23-9d32-bf9e700199a3
merchant_ids:
- def456
- ghi789
metadata: {}
start_time_utc: '2023-07-21T08:00:00Z'
end_time_utc: '2023-07-21T16:00:00Z'
start_time_local: '2023-07-21T12:00:00'
end_time_local: '2023-07-21T20:00:00'
all_repeating_schedules:
- merchant_id: jkl012
schedule_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
name: CATERING
version_id: a8ef83f8-49a9-4e0c-9b67-9c05c1f05e42
repeating_schedule_content:
name: Weekly Schedule
type: WEEKLY
metadata: This is the weekly schedule
rules:
- days_of_week:
- TUESDAY
- FRIDAY
rule_interval:
start_time: '11:00:00'
end_time: '19:00:00'
metadata:
source: Web
all_custom_schedules:
- name: GROUP
date: '2023-07-21'
metadata:
source: API
intervals:
- start_time: '10:00:00'
end_time: '14:00:00'
- start_time: '17:00:00'
end_time: '20:00:00'
description: Custom schedule for group orders
managed_delivery_schedules:
- name: Weekly
type: WEEKLY
metadata: Metadata to store with this repeating schedule
rules:
- days_of_week:
- MONDAY
- TUESDAY
rule_interval:
start_time: 09:00:00
end_time: '17:00:00'
- days_of_week:
- WEDNESDAY
- THURSDAY
rule_interval:
start_time: '10:00:00'
end_time: '16:00:00'
'404':
description: Merchant or repeating schedule was not found
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/pickup:
get:
tags:
- Endpoints
summary: Get the pickup schedule
description: Returns the full weekly pickup hours for the specified merchant.
operationId: getPickupSchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Successfully retrieved repeating schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
merchant_id: store182
schedule_id: 12345678-abcd-efgh-ijkl-9876543210ab
name: DELIVERY
version_id: 98765432-ijkl-efgh-abcd-1234567890ab
repeating_schedule_content:
name: Example Schedule
type: WEEKLY
metadata: 1i89aASJDF2
rules:
- days_of_week:
- MONDAY
- WEDNESDAY
- FRIDAY
rule_interval:
start_time: 09:00
end_time: '18:00'
- days_of_week:
- TUESDAY
- THURSDAY
rule_interval:
start_time: '10:00'
end_time: '17:00'
metadata:
source: Example Source
created_by: John Doe
updated_by: Jane Doe
create_date: '2023-07-20T12:00:00Z'
update_date: '2023-07-20T14:30:00Z'
legacy_id: lkja92ASJd2
description: system data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/delivery:
get:
tags:
- Endpoints
summary: Get the delivery schedule
description: Returns the full weekly delivery hours for the specified merchant.
operationId: getDeliverySchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Successfully retrieved repeating schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
merchant_id: store182
schedule_id: 12345678-abcd-efgh-ijkl-9876543210ab
name: DELIVERY
version_id: 98765432-ijkl-efgh-abcd-1234567890ab
repeating_schedule_content:
name: Example Schedule
type: WEEKLY
metadata: 1i89aASJDF2
rules:
- days_of_week:
- MONDAY
- WEDNESDAY
- FRIDAY
rule_interval:
start_time: 09:00
end_time: '18:00'
- days_of_week:
- TUESDAY
- THURSDAY
rule_interval:
start_time: '10:00'
end_time: '17:00'
metadata:
source: Example Source
created_by: John Doe
updated_by: Jane Doe
create_date: '2023-07-20T12:00:00Z'
update_date: '2023-07-20T14:30:00Z'
legacy_id: lkja92ASJd2
description: system data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/schedules/catering:
get:
tags:
- Endpoints
summary: Get the catering schedule
description: Returns the full weekly catering hours for the specified merchant.
operationId: getCateringSchedule
parameters:
- name: merchant_id
in: path
description: The short Grubhub ID for the merchant. Corresponds to a single location.
required: true
explode: false
schema:
type: string
responses:
'200':
description: Successfully retrieved catering schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMerchantRepeatingSchedule'
example:
merchant_id: store182
schedule_id: 12345678-abcd-efgh-ijkl-9876543210ab
name: DELIVERY
version_id: 98765432-ijkl-efgh-abcd-1234567890ab
repeating_schedule_content:
name: Example Schedule
type: WEEKLY
metadata: 1i89aASJDF2
rules:
- days_of_week:
- MONDAY
- WEDNESDAY
- FRIDAY
rule_interval:
start_time: 09:00
end_time: '18:00'
- days_of_week:
- TUESDAY
- THURSDAY
rule_interval:
start_time: '10:00'
end_time: '17:00'
metadata:
source: Example Source
created_by: John Doe
updated_by: Jane Doe
create_date: '2023-07-20T12:00:00Z'
update_date: '2023-07-20T14:30:00Z'
legacy_id: lkja92ASJd2
description: system data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/triage:
post:
tags:
- Endpoints
summary: Report Onboarding Issue
description: Raise an issue with the onboarding process for a merchant that requires manual intervention.
operationId: triage
parameters:
- name: X-GH-PARTNER-KEY
in: header
description: Partners grubhub provided UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: 97f6eca-6276-4993-bfeb-53cbbbba6f08
requestBody:
description: Triage request containing merchant IDs and the message for the issue they're having
content:
application/json:
schema:
$ref: '#/components/schemas/Triage'
examples:
Triage Request Example:
description: Triage Request Example
value:
cust_id:
- 12345
- 67890
reason: Need assistance with menu configuration
required: true
responses:
'422':
description: Unprocessable Entity - Malformed Request
content:
application/json:
schema:
$ref: '#/components/schemas/Triage'
'200':
description: Successfully reported the issue for manual intervention
content:
application/json:
schema:
$ref: '#/components/schemas/Triage'
examples:
Triage request example:
description: Triage request example
value:
cust_id:
- 12345
- 67890
reason: Need assistance with menu configuration
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/referral:
post:
tags:
- Endpoints
summary: New Merchant Referral
description: Sends over the details of a new merchant for onboarding them to Grubhub.
operationId: referralSignup
parameters:
- name: X-GH-PARTNER-KEY
in: header
description: Partners grubhub provided UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: 97f6eca-6276-4993-bfeb-53cbbbba6f08
requestBody:
description: Referral signup request containing merchant details
content:
application/json:
schema:
$ref: '#/components/schemas/ReferralSignup'
examples:
Referral Example:
description: Referral Example
value:
partner_id: partner-abc
external_id: 123ABC
merchant_name: Example Restaurant
street_address: 123 Main St
city: Anytown
state: CA
postal_code: '90210'
email: merchant@example.com
country: US
phone: 555-123-4567
first_name: John
last_name: Doe
required: true
responses:
'200':
description: Successfully requested merchant for onboarding
content:
application/json:
schema:
$ref: '#/components/schemas/ReferralResponse'
example:
referral:
partner_id: partner-abc
external_id: 123ABC
merchant_name: Example Restaurant
street_address: 123 Main St
city: Anytown
state: CA
postal_code: '90210'
email: merchant@example.com
country: US
phone: 555-123-4567
first_name: John
last_name: Doe
message: We've successfully received the merchant referral, a Grubhub representative will be in touch within a week.
'400':
description: Bad Request - Input validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/ReferralResponse'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/partner/deactivate:
post:
tags:
- Endpoints
summary: Deactivate Merchant (Partner)
description: Validates merchant and removes its association with the partner using partner authentication.
operationId: partnerDeactivate
parameters:
- name: X-GH-PARTNER-KEY
in: header
description: Partners grubhub provided UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: 97f6eca-6276-4993-bfeb-53cbbbba6f08
requestBody:
description: Deactivation request containing merchant ID to deactivate
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerDeactivateRequest'
examples:
Partner deactivate request example:
description: Partner deactivate request example
value:
merchant_id: external-merchant-123
required: true
responses:
'400':
description: Bad Request - Invalid input or merchant not eligible
content:
application/json: {}
'200':
description: Successfully deactivated the merchant from the partner
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerDeactivateResponse'
examples:
Partner deactivate response example:
description: Partner deactivate response example
value:
merchant_id: external-merchant-123
status: SUCCESS
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/partner/activate:
post:
tags:
- Endpoints
summary: Activate Merchant (Partner)
description: Validates the menu ingestion and partner association statuses, reports merchants not ready for manual intervention. Kicks off the process for setting the integration live, using partner authentication.
operationId: partnerActivateMerchants
parameters:
- name: X-GH-PARTNER-KEY
in: header
description: Partners grubhub provided UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: 97f6eca-6276-4993-bfeb-53cbbbba6f08
requestBody:
description: Activation request containing job ID retrieved from menu ingestion response
content:
application/json:
schema:
$ref: '#/components/schemas/ActivateRequest'
examples:
Activate request example:
description: Activate request example
value:
job_id: 123e4567-e89b-12d3-a456-426614174000
required: true
responses:
'400':
description: Bad Request - Invalid input or merchant not eligible
content:
application/json: {}
'200':
description: Successfully kicked off merchant activation process
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantActivationResponse'
examples:
Activation request example:
description: Activation request example
value:
batch_id: 123e4567-e89b-12d3-a456-426614174000
merchant_activation_enablement_response:
- cust_id: 12345
kicked_off_enablement: true
reason: []
- cust_id: 67890
kicked_off_enablement: false
reason:
- User needs to wait until end of christmas
- cust_id: 24680
kicked_off_enablement: false
reason:
- Need assistance about updating payment info before proceeding
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/deactivate:
post:
tags:
- Endpoints
summary: Deactivate Merchant
description: Validates merchant and removes its association with the partner using Oauth2.
operationId: deactivate
parameters:
- name: X-GH-PARTNER-KEY
in: header
required: true
style: simple
explode: false
schema:
type: string
format: uuid
requestBody:
description: Deactivation request containing merchant ID to deactivate
content:
application/json:
schema:
$ref: '#/components/schemas/DeactivateRequest'
examples:
Deactivate request example:
description: Deactivate request example
value:
merchant_id: 12345
required: true
responses:
'400':
description: Bad Request - Invalid input or merchant not eligible
content:
application/json: {}
'200':
description: Successfully deactivated the merchant from the partner
content:
application/json:
schema:
$ref: '#/components/schemas/DeactivateResponse'
examples:
Deactivate response example:
description: Deactivate response example
value:
merchant_id: 12345
status: SUCCESS
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/associate:
post:
tags:
- Endpoints
summary: Associate Merchants
description: Binds provided merchants to the partner for onboarding.
operationId: associateMerchants
parameters:
- name: X-GH-PARTNER-KEY
in: header
description: Partners grubhub provided UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: 97f6eca-6276-4993-bfeb-53cbbbba6f08
requestBody:
description: List of merchant IDs to associate with the partner
content:
application/json:
schema:
type: string
examples:
Associate merchants example, externalId is optional.:
description: Associate merchants example, externalId is optional.
value:
- cust_id: 12234455311
external_id: external123
- cust_id: 12342124452
external_id: external789
- cust_id: 86535334323
external_id: external456
required: true
responses:
'422':
description: Unprocessable Entity - Malformed Request
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantAssociationResponse'
'404':
description: Not Found - Merchant not found
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantAssociationResponse'
'200':
description: Successfully associated merchants with the partner
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantAssociationResponse'
example:
associationResponses:
- cust_id: 123456
associated: true
status: SUCCESS
- cust_id: 789012
associated: false
status: FAILURE
- cust_id: 345678
associated: false
status: NOT_FOUND
- cust_id: 543212
associated: false
status: ALREADY_INTEGRATED
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/activate:
post:
tags:
- Endpoints
summary: Activate Merchant
description: Validates the menu ingestion and partner association statuses, reports merchants not ready for manual intervention. Kicks off the process for setting the integration live
operationId: activateMerchants
parameters:
- name: X-GH-PARTNER-KEY
in: header
description: Partners grubhub provided UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: 97f6eca-6276-4993-bfeb-53cbbbba6f08
requestBody:
description: Activation request containing job ID retrieved from menu ingestion response
content:
application/json:
schema:
$ref: '#/components/schemas/ActivateRequest'
examples:
Activate request example:
description: Activate request example
value:
job_id: 123e4567-e89b-12d3-a456-426614174000
required: true
responses:
'400':
description: Bad Request - Invalid input or merchant not eligible
content:
application/json: {}
'200':
description: Successfully kicked off merchant activation process
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantActivationResponse'
examples:
Activation request example:
description: Activation request example
value:
batch_id: 123e4567-e89b-12d3-a456-426614174000
merchant_activation_enablement_response:
- cust_id: 12345
kicked_off_enablement: true
reason: []
- cust_id: 67890
kicked_off_enablement: false
reason:
- User needs to wait until end of christmas
- cust_id: 24680
kicked_off_enablement: false
reason:
- Need assistance about updating payment info before proceeding
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/merchant/onboarding/v1/merchants:
get:
tags:
- Endpoints
summary: Get Merchant Eligibility
description: Returns the list of merchants under the Grubhub user and their eligibility status for onboarding to the partner. Optionally accepts a list of merchantIds as a query parameter to filter results to a specific subset. Optionally accepts page and size query parameters; when either is supplied, results are sorted in ascending merchant ID order, the response contains only the requested page, and pagination metadata is returned in the X-Total-Count, X-Page, X-Page-Size and X-Total-Pages response headers. An RFC 8288 Link response header provides first, prev, next and last page URLs; follow the next relation until it is absent to walk all pages. Requesting a page beyond X-Total-Pages returns 200 with an empty list. Without page and size the full list is returned as before.
operationId: getEligibleMerchants
parameters:
- name: X-GH-PARTNER-KEY
in: header
description: Partners grubhub provided UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: 97f6eca-6276-4993-bfeb-53cbbbba6f08
- name: custIds
in: query
description: Optional list of customer IDs to filter eligibility check
required: false
style: form
explode: true
schema:
uniqueItems: true
type: array
items:
type: integer
format: int64
- name: page
in: query
description: Optional 1-based page number. Supplying page or size enables paginated mode. Defaults to 1 when only size is given.
required: false
style: form
explode: true
schema:
type: integer
format: int32
example: 1
- name: size
in: query
description: Optional page size. Hard-capped at 100, defaults to 50 when only page is given.
required: false
style: form
explode: true
schema:
type: integer
format: int32
example: 10
responses:
'400':
description: Bad Request - page or size is not a valid number
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MerchantEligibilityResponse'
'200':
description: Successfully retrieved merchant eligibility status
headers:
X-Total-Count:
description: Total number of merchants across all pages (paginated requests only)
style: simple
explode: false
schema:
type: integer
format: int64
X-Page-Size:
description: Page size applied to this response (paginated requests only)
style: simple
explode: false
schema:
type: integer
X-Total-Pages:
description: Total number of pages (paginated requests only)
style: simple
explode: false
schema:
type: integer
X-Page:
description: Current page number, 1-based (paginated requests only)
style: simple
explode: false
schema:
type: integer
Link:
description: RFC 8288 pagination links with first, prev, next and last relations (paginated requests only). The next relation is absent on the last page.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantEligibilityResponse'
example:
- cust_id: 12345
name: Joe's Pizza Palace
address:
street_address: 123 Main St
street_address2: Suite 100
locality: New York
region: NY
postal_code: '10001'
pos_eligibility: true
reasons: []
- cust_id: 67890
name: Maria's Tacos
address:
street_address: 456 Oak Ave
locality: Los Angeles
region: CA
postal_code: '90210'
pos_eligibility: false
reasons:
- Not eligible for POS integration.
- cust_id: 24680
name: Bob's Burgers
address:
street_address: 789 Pine St
street_address2: Unit B
locality: Chicago
region: IL
postal_code: '60601'
pos_eligibility: false
reasons:
- Missing required configuration.
- Invalid menu format.
'422':
description: Unprocessable Entity - Merchant has too many or no merchants to process, or invalid pagination parameters (page < 1, size < 1, or size above the maximum)
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MerchantEligibilityResponse'
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/status:
put:
tags:
- Endpoints
summary: Update order status
description: Updating order status for the requested order id.
operationId: updateExternalOrderStatusByOrderUuid
parameters:
- name: merchant_long_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
- name: order_uuid
in: path
description: Order UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
requestBody:
description: The request payload.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusUpdateRequestPayload'
examples:
Basic Status Update:
description: Basic Status Update
value:
status: CONFIRMED
wait_time_in_minutes: 10
tax_total:
tax: 3
type: ABSOLUTE
sub_total: 2345
Status Update with Pickup Verification:
description: Status Update with Pickup Verification
value:
status: CONFIRMED
wait_time_in_minutes: 10
pickup_verification:
verification_code: ABC123
capture_method: QR_SCAN
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosOrder'
example:
uuid: JylzkoC0Ee2zk-PUFdlLqg
merchant_uuid: 0OfxgNelEey87BGSJG9AHg
order_number: '604721063804098'
is_test: false
status: REJECTED
statusHistory:
- status: REJECTED
timestamp: '2022-12-20T22:46:01.582Z'
update_source: CONFIRMATION_AUTOMATION
- status: STALE
timestamp: '2022-12-20T22:36:00.864Z'
update_source: GRUBHUB_ORDERS_REAPER
reason: Stuck status RESTAURANT_CONFIRMABLE at 2022-12-20T22:36:00.864Z
- status: RESTAURANT_CONFIRMABLE
timestamp: '2022-12-20T22:18:07.810Z'
update_source: TXS
- status: ANTICIPATED
timestamp: '2022-12-20T22:18:07.430Z'
update_source: DINER
reason: non-GHD
updated_at: '2022-12-20T22:46:01.582Z'
merchant_id: '10004116752'
fulfillment_info:
pickup_info:
name: John Doe
contact_info:
phone: (222) 222-2222
name: John Doe
instructions: ''
is_green_indicated: true
brand: GRUBHUB
time_placed: '2022-12-20T22:18:06.214Z'
confirmation_code: '6335'
when_for: '2022-12-20T22:28:06.221Z'
restaurant_timezone_id: America/New_York
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
tax_application: POST_TAX
total: 472
adjusted_total: 472
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Cherry Tomato
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
menu_item_uuid: AAAAAAAAAAasdAkadss
diner_total: 440
total: 440
tags: []
external_id: Salad|Avocado Salad
metadata:
internal_id: 1123234
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
tax_withheld: true
jit_enabled: true
just_in_time_fired: false
diners:
- status: ACTIVE
diner_info:
phone: (222) 222-2222
name: John Doe
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Salad
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
diner_total: 440
total: 440
tags: []
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
payment_source: UNKNOWN
tax_application: POST_TAX
total: 472
adjusted_total: 472
order_diner_number: '1232132343'
cart_uuid: JylzkIC0Ee2zkePUaHjs
participation: HOST
order_type: STANDARD
order_taking_system: CARTING
handoff_options: []
restaurant_version_id:
catalog_version:
version_id: v1:VoNHjJPBjGrXXThkLnOrrgVAmwBG3yR2
fulfillment_scheduling: ASAP
transmission_id: IwsfGSpHM461UOWnLXHf6g
order_merchant_id: 9CvhTfZvNvqR8_WRGSjL9Q
'404':
description: Order does not exist for order id.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/changerequests:
get:
tags:
- Endpoints
summary: Get status of order change request
description: Returns the status of all order change requests of a single order.
operationId: getChangeRequests
parameters:
- name: merchant_long_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
- name: order_uuid
in: path
description: Order UUID.
required: true
style: simple
explode: false
schema:
type: string
format: uuid
responses:
'404':
description: Could not find any change requests.
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/OrderChangeRequestStatus'
example:
- order_id: 93101167-9065-4b9c-b98b-5d789a3ed9fe
change_request_id: f90819c3-6f40-44d9-9518-d77c485c0c12
request:
amount: 5
restaurant_agent_name: POS Terminal
requestor_email: jack@email.com
requestor_first_name: Jack
requestor_last_name: Jack
reason: offline
reason_code: offline
change_action: cancel.action
status: COMPLETED
ticket_id: 123456789
requested_action: test
post:
tags:
- Endpoints
summary: Request change to order
description: Request a change (cancellation & adjustments) to an existing order.
operationId: changeExternalOrder
parameters:
- name: merchant_long_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
- name: order_uuid
in: path
description: Order UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
requestBody:
description: The requested change to the order.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderChangeRequest'
example:
amount: 5
restaurant_agent_name: POS Terminal
requestor_email: jack@email.com
requestor_first_name: Jack
requestor_last_name: Jack
reason: offline
reason_code: offline
change_action: cancel.action
required: true
responses:
'400':
description: Bad Request
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OrderChangeRequestStatus'
example:
order_id: 93101167-9065-4b9c-b98b-5d789a3ed9fe
change_request_id: f90819c3-6f40-44d9-9518-d77c485c0c12
request:
amount: 5
restaurant_agent_name: POS Terminal
requestor_email: jack@email.com
requestor_first_name: Jack
requestor_last_name: Jack
reason: offline
reason_code: offline
change_action: cancel.action
status: COMPLETED
ticket_id: 123456789
requested_action: test
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_id}/orders/{order_uuid}/addpickupinstructions:
post:
tags:
- Endpoints
summary: Add Pickup Instructions
description: Add Pickup Instructions for individual order.
operationId: addPickupInstructionsToOrder
parameters:
- name: merchant_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
- name: order_uuid
in: path
description: Order UUID
required: true
style: simple
explode: false
schema:
type: string
format: uuid
requestBody:
description: The requested instructions and/or pickup verification to the order. At least one of order_pickup_instructions or pickup_verification must be provided.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderPickupInstructions'
examples:
Basic Pickup Instructions:
description: Basic Pickup Instructions
value:
order_pickup_instructions: Dynamic Instruction
updated_at: '2025-03-04T14:20:00.000Z'
Pickup Verification Only:
description: Pickup Verification Only
value:
pickup_verification:
verification_code: ABC123
capture_method: QR_SCAN
updated_at: '2025-03-04T14:20:00.000Z'
Both Instructions and Verification:
description: Both Instructions and Verification
value:
order_pickup_instructions: Please come to the back entrance
pickup_verification:
verification_code: XYZ789
capture_method: MANUAL_ENTRY
updated_at: '2025-03-04T14:20:00.000Z'
required: true
responses:
'204':
description: No Content
'404':
description: Order does not exist for order id.
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}:
get:
tags:
- Endpoints
summary: Get order by order ID
description: Returns the single order requested by its UUID.
operationId: getPosOrderByOrderUuid
parameters:
- name: X-GH-PARTNER-KEY
in: header
required: false
style: simple
explode: false
schema:
type: string
- name: merchant_long_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
- name: order_uuid
in: path
description: Order UUID.
required: true
style: simple
explode: false
schema:
type: string
format: uuid
- name: legacyStatus
in: query
description: Legacy status
required: false
style: form
explode: true
schema:
type: boolean
responses:
'404':
description: Order does not exist
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PosOrder'
example:
uuid: JylzkoC0Ee2zk-PUFdlLqg
merchant_uuid: 0OfxgNelEey87BGSJG9AHg
order_number: '604721063804098'
is_test: false
status: REJECTED
statusHistory:
- status: REJECTED
timestamp: '2022-12-20T22:46:01.582Z'
update_source: CONFIRMATION_AUTOMATION
- status: STALE
timestamp: '2022-12-20T22:36:00.864Z'
update_source: GRUBHUB_ORDERS_REAPER
reason: Stuck status RESTAURANT_CONFIRMABLE at 2022-12-20T22:36:00.864Z
- status: RESTAURANT_CONFIRMABLE
timestamp: '2022-12-20T22:18:07.810Z'
update_source: TXS
- status: ANTICIPATED
timestamp: '2022-12-20T22:18:07.430Z'
update_source: DINER
reason: non-GHD
updated_at: '2022-12-20T22:46:01.582Z'
merchant_id: '10004116752'
fulfillment_info:
pickup_info:
name: John Doe
contact_info:
phone: (222) 222-2222
name: John Doe
instructions: ''
is_green_indicated: true
brand: GRUBHUB
time_placed: '2022-12-20T22:18:06.214Z'
confirmation_code: '6335'
when_for: '2022-12-20T22:28:06.221Z'
restaurant_timezone_id: America/New_York
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
tax_application: POST_TAX
total: 472
adjusted_total: 472
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Cherry Tomato
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
menu_item_uuid: AAAAAAAAAAasdAkadss
diner_total: 440
total: 440
tags: []
external_id: Salad|Avocado Salad
metadata:
internal_id: 1123234
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
tax_withheld: true
jit_enabled: true
just_in_time_fired: false
diners:
- status: ACTIVE
diner_info:
phone: (222) 222-2222
name: John Doe
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Salad
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
diner_total: 440
total: 440
tags: []
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
payment_source: UNKNOWN
tax_application: POST_TAX
total: 472
adjusted_total: 472
order_diner_number: '1232132343'
cart_uuid: JylzkIC0Ee2zkePUaHjs
participation: HOST
order_type: STANDARD
order_taking_system: CARTING
handoff_options: []
restaurant_version_id:
catalog_version:
version_id: v1:VoNHjJPBjGrXXThkLnOrrgVAmwBG3yR2
fulfillment_scheduling: ASAP
transmission_id: IwsfGSpHM461UOWnLXHf6g
order_merchant_id: 9CvhTfZvNvqR8_WRGSjL9Q
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/orders:
get:
tags:
- Endpoints
summary: Get orders by merchant ID, status and date range
description: Returns the list of orders for the requested merchant in a given status and date range.
operationId: getPosOrdersByMerchantStatusDateRange
parameters:
- name: X-GH-PARTNER-KEY
in: header
required: false
style: simple
explode: false
schema:
type: string
- name: merchant_long_id
in: path
description: The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
- name: status
in: query
description: Filters returned orders by the provided statuses.
required: false
style: form
explode: true
schema:
uniqueItems: true
type: array
items:
type: string
- name: start
in: query
description: Start time for the query.
required: false
style: form
explode: true
schema:
type: string
format: date-time
- name: end
in: query
description: End time for the query. Must be within 24 hours of start time.
required: false
style: form
explode: true
schema:
type: string
format: date-time
- name: legacyStatus
in: query
description: If true, order statuses returned will be translated to legacy order statuses. Default is FALSE.
required: false
style: form
explode: true
schema:
type: boolean
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosOrder'
example:
- uuid: JylzkoC0Ee2zk-PUFdlLqg
merchant_uuid: 0OfxgNelEey87BGSJG9AHg
order_number: '604721063804098'
is_test: false
status: REJECTED
statusHistory:
- status: REJECTED
timestamp: '2022-12-20T22:46:01.582Z'
update_source: CONFIRMATION_AUTOMATION
- status: STALE
timestamp: '2022-12-20T22:36:00.864Z'
update_source: GRUBHUB_ORDERS_REAPER
reason: Stuck status RESTAURANT_CONFIRMABLE at 2022-12-20T22:36:00.864Z
- status: RESTAURANT_CONFIRMABLE
timestamp: '2022-12-20T22:18:07.810Z'
update_source: TXS
- status: ANTICIPATED
timestamp: '2022-12-20T22:18:07.430Z'
update_source: DINER
reason: non-GHD
updated_at: '2022-12-20T22:46:01.582Z'
merchant_id: '10004116752'
fulfillment_info:
pickup_info:
name: John Doe
contact_info:
phone: (222) 222-2222
name: John Doe
instructions: ''
is_green_indicated: true
brand: GRUBHUB
time_placed: '2022-12-20T22:18:06.214Z'
confirmation_code: '6335'
when_for: '2022-12-20T22:28:06.221Z'
restaurant_timezone_id: America/New_York
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
tax_application: POST_TAX
total: 472
adjusted_total: 472
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Cherry Tomato
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
menu_item_uuid: AAAAAAAAAAasdAkadss
diner_total: 440
total: 440
tags: []
external_id: Salad|Avocado Salad
metadata:
internal_id: 1123234
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
tax_withheld: true
jit_enabled: true
just_in_time_fired: false
diners:
- status: ACTIVE
diner_info:
phone: (222) 222-2222
name: John Doe
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Salad
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
diner_total: 440
total: 440
tags: []
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
payment_source: UNKNOWN
tax_application: POST_TAX
total: 472
adjusted_total: 472
order_diner_number: '1232132343'
cart_uuid: JylzkIC0Ee2zkePUaHjs
participation: HOST
order_type: STANDARD
order_taking_system: CARTING
handoff_options: []
restaurant_version_id:
catalog_version:
version_id: v1:VoNHjJPBjGrXXThkLnOrrgVAmwBG3yR2
fulfillment_scheduling: ASAP
transmission_id: IwsfGSpHM461UOWnLXHf6g
order_merchant_id: 9CvhTfZvNvqR8_WRGSjL9Q
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/group/{group_key}/orders:
get:
tags:
- Endpoints
summary: Get orders by group, status and date range
description: Polling endpoint for getting all orders for a group of merchants in a given state in the given time range.
operationId: getPosOrdersByGroupStatusDateRange
parameters:
- name: X-GH-PARTNER-KEY
in: header
required: false
style: simple
explode: false
schema:
type: string
- name: group_key
in: path
description: Group Key
required: true
style: simple
explode: false
schema:
type: string
- name: status
in: query
description: Filters returned orders by the provided statuses.
required: false
style: form
explode: true
schema:
uniqueItems: true
type: array
items:
type: string
- name: start
in: query
description: Start time for the query.
required: false
style: form
explode: true
schema:
type: string
format: date-time
- name: end
in: query
description: End time for the query.
required: false
style: form
explode: true
schema:
type: string
format: date-time
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PosOrder'
example:
- uuid: JylzkoC0Ee2zk-PUFdlLqg
merchant_uuid: 0OfxgNelEey87BGSJG9AHg
order_number: '604721063804098'
is_test: false
status: REJECTED
statusHistory:
- status: REJECTED
timestamp: '2022-12-20T22:46:01.582Z'
update_source: CONFIRMATION_AUTOMATION
- status: STALE
timestamp: '2022-12-20T22:36:00.864Z'
update_source: GRUBHUB_ORDERS_REAPER
reason: Stuck status RESTAURANT_CONFIRMABLE at 2022-12-20T22:36:00.864Z
- status: RESTAURANT_CONFIRMABLE
timestamp: '2022-12-20T22:18:07.810Z'
update_source: TXS
- status: ANTICIPATED
timestamp: '2022-12-20T22:18:07.430Z'
update_source: DINER
reason: non-GHD
updated_at: '2022-12-20T22:46:01.582Z'
merchant_id: '10004116752'
fulfillment_info:
pickup_info:
name: John Doe
contact_info:
phone: (222) 222-2222
name: John Doe
instructions: ''
is_green_indicated: true
brand: GRUBHUB
time_placed: '2022-12-20T22:18:06.214Z'
confirmation_code: '6335'
when_for: '2022-12-20T22:28:06.221Z'
restaurant_timezone_id: America/New_York
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
tax_application: POST_TAX
total: 472
adjusted_total: 472
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Cherry Tomato
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
menu_item_uuid: AAAAAAAAAAasdAkadss
diner_total: 440
total: 440
tags: []
external_id: Salad|Avocado Salad
metadata:
internal_id: 1123234
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
tax_withheld: true
jit_enabled: true
just_in_time_fired: false
diners:
- status: ACTIVE
diner_info:
phone: (222) 222-2222
name: John Doe
charges:
fees:
total: 0
delivery: 0
taxes:
total: 32
sales: 32
delivery: 0
restaurant: 32
merchant_sales_total: 32
merchant_total: 32
tip:
amount: 0
type: CASH
diner_grand_total: 472
grand_total: 472
adjusted_grand_total: 472
line_groups:
- lines:
- name: Avocado Salad
line_options: []
price: 440
merchant_price: 440
quantity: 1
menu_item_id: '2426676565'
diner_total: 440
total: 440
tags: []
routing_tags: []
line_uuid: J5AkoIC0Ee2koy&8hjj
packaging_options: []
coupons: []
merchant_total: 472
merchant_subtotal: 440
restaurant_subtotal: 440
merchant_subtotal_before_coupons: 440
payments:
payments:
- payment_type: CREDIT_CARD
amount: 472
payment_source: UNKNOWN
tax_application: POST_TAX
total: 472
adjusted_total: 472
order_diner_number: '1232132343'
cart_uuid: JylzkIC0Ee2zkePUaHjs
participation: HOST
order_type: STANDARD
order_taking_system: CARTING
handoff_options: []
restaurant_version_id:
catalog_version:
version_id: v1:VoNHjJPBjGrXXThkLnOrrgVAmwBG3yR2
fulfillment_scheduling: ASAP
transmission_id: IwsfGSpHM461UOWnLXHf6g
order_merchant_id: 9CvhTfZvNvqR8_WRGSjL9Q
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/test/transmission:
post:
tags:
- Endpoints
summary: Create transmission test
description: A transmission test order is a simple order that flows through the entire Grubhub order processing system. This is typically the last step in a go-live process for a new merchant.These orders will contain a the lowest-priced menu item not requiring modifiers found on the menu for the given merchant. All line items in this order will be sent with zero cost, so that no actual charges will accrue. Test orders only exist within the POS ecosystem; they will not show up in the Grubhub for Restaurants app or on any accounting sheet.
operationId: postTestOrderRequest
parameters:
- name: merchant_long_id
in: path
description: The The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
requestBody:
description: Specifies whether the transmission test should be for delivery and/or catering. Note - catering not currently supported.
content:
application/json:
schema:
$ref: '#/components/schemas/PosTestOrderRequest'
example:
is_delivery: false
is_catering: true
is_validation: true
required: true
responses:
'200':
description: Successfully created the transmission test order. Returns the UUID of the resulting order.
content:
application/json:
schema:
type: string
format: uuid
example: 497f6eca-6276-4993-bfeb-53cbbbba6f08
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/test/jitevent:
post:
tags:
- Endpoints
summary: Create order with JIT flag triggered
description: Generates a test order event in order to make sure that your functionality that triggers JIT event functions properly. The order will contain information from the referenced order but will not affect that order or create real-life delivery events. To configure a JIT event webhook for your POS integration, contact your Grubhub account representative.
operationId: simulateJitOrderEvent
parameters:
- name: merchant_long_id
in: path
description: The The Grubhub or third-party provided external ID for the merchant.
required: true
style: simple
explode: false
schema:
type: string
requestBody:
description: JIT Test Order Information.
content:
application/json:
schema:
$ref: '#/components/schemas/JitTestOrder'
example:
order_id: 93101167-9065-4b9c-b98b-5d789a3ed9fe
order_merchant_id: 3fd56ebd-323b-4791-8e69-e96cc7445d16
order_number: '9876543210'
order_status: CONFIRMED
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: string
format: uuid
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
/pos/v1/merchant/{merchant_long_id}/test/delivery:
post:
tags:
- Endpoints
summary: Create test delivery
description: Generates a test delivery event in order to make sure that your delivery status webhook functions properly. The delivery will contain information from the referenced order but will not affect that order or create real-life delivery events.To configure a delivery webhook for your POS integration, contact your Grubhub account representative.
operationId: postTestDeliveryRequest
parameters:
- name: merchant_long_id
in: path
description: Long Grubhub Id for the merchant
required: true
style: simple
explode: false
schema:
type: string
requestBody:
description: The Order Id and delivery status to create test delivery event is generated.
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryTestRequest'
example:
order_id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
status: DELIVERED
required: true
responses:
'409':
description: Unable to send delivery - merchant does not have webhooks enabled
'200':
description: Successfully created test delivery
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
description: preprod
- url: https://api-third-party-gtm.grubhub.com
description: prod
components:
schemas:
PosGetBusyModeResponse:
type: object
properties:
busy:
type: boolean
description: Whether the restaurant currently has an active busy interval.
busy_interval:
$ref: '#/components/schemas/PosBusyInterval'
PosBusyModeRequest:
type: object
properties:
eta_increase_seconds:
type: integer
description: Additional time, in seconds, to add to the displayed delivery ETA while the restaurant is busy. Must be non-negative; defaults to 0 if omitted.
format: int64
start_time:
type: string
description: When the busy interval begins, as an RFC-3339 / ISO-8601 UTC timestamp.
format: date-time
end_time:
type: string
description: When the busy interval ends, as an RFC-3339 / ISO-8601 UTC timestamp. Must be after start_time.
format: date-time
PosBusyInterval:
type: object
properties:
busy_interval_id:
type: string
description: Unique identifier of the busy interval.
format: uuid
start_time:
type: string
description: When the busy interval begins, as an RFC-3339 / ISO-8601 UTC timestamp.
format: date-time
end_time:
type: string
description: When the busy interval ends, as an RFC-3339 / ISO-8601 UTC timestamp.
format: date-time
eta_increase_seconds:
type: integer
description: Additional time, in seconds, added to the displayed delivery ETA while the restaurant is busy.
format: int64
remaining_seconds:
type: integer
description: Seconds remaining until the busy interval ends (end_time).
format: int64
description: Details of the active busy interval, or null when the restaurant is not busy.
PosBusyModeResponse:
type: object
properties:
restaurant_id:
type: string
description: The short Grubhub ID for the merchant the busy interval applies to.
busy_interval_id:
type: string
description: Unique identifier of the created busy interval.
format: uuid
eta_increase_seconds:
type: integer
description: Additional time, in seconds, added to the displayed delivery ETA while the restaurant is busy.
format: int64
start_time:
type: string
description: When the busy interval begins, as an RFC-3339 / ISO-8601 UTC timestamp.
format: date-time
end_time:
type: string
description: When the busy interval ends, as an RFC-3339 / ISO-8601 UTC timestamp.
format: date-time
ItemDimensions:
type: object
properties:
unit:
type: string
description: Unit of measurement, for example, FEET, INCHES, etc.
enum:
- INCHES
- FEET
width_range:
type: object
height_range:
type: object
depth_range:
type: object
description: The dimensions of an item
Vehicle:
required:
- type
type: object
properties:
type:
type: string
description: Describes the mode of transportation (car, bike, etc.)
example: car
enum:
- car, bike, robot, drone
description:
type: string
description: The make, model and color of the vehicle where applicable
example: Ford Explorer, black
description: A vehicle used by a courier.
Coordinates:
type: object
properties:
latitude:
type: number
description: Latitude of the address.
longitude:
type: number
description: Longitude of the address.
description: Coordinates of the address.
Courier:
required:
- geo
- id
- name
- phone
- vehicle
type: object
properties:
id:
type: string
description: A unique ID that GrubHub has assigned to the courier
format: uuid
example: 497f6eca-6276-4993-bfeb-53cbbbba6f08
name:
type: string
description: The full name of the courier
example: Jack Burton
vehicle:
$ref: '#/components/schemas/Vehicle'
phone:
type: string
description: A phone number that may be used to contact the courier
example: '4045552323'
photo_url:
type: string
description: A URL that can be used to see a picture of the courier
example: https://s3.amazonaws.com/gh-prod-drivers-data/drivers/xxxxx/avatar.png
geo:
$ref: '#/components/schemas/GeoLocation'
employer:
type: string
description: The courier's employer
description: A courier (driver, biker, etc.) that has been assigned to execute a delivery request.
DeliveryItemOption:
required:
- description
type: object
properties:
description:
type: string
description: Description of the item being delivered
example: SUB ITEM
tags:
type: array
description: Optional flags to identify various transportation constraints (alcohol, spillable, etc.) as well as any tags the customer feel like adding
items:
type: string
description: Optional flags to identify various transportation constraints (alcohol, spillable, etc.) as well as any tags the customer feel like adding
quantity:
minimum: 1
type: integer
description: Optional quantity with a default quantity of 1
format: int32
example: 1
options:
type: array
description: Optional options on the item (No, Light, Heavy)
items:
$ref: '#/components/schemas/DeliveryItemOption'
description: An option on an item within a delivery
Location:
required:
- location_address
- name
- phone
type: object
properties:
id:
type: string
description: A unique identifier that the requesting party can send to help identify where deliveries can be batched
example: AvYO6VyVEeiVadmHZVMROm
name:
type: string
description: A short description of the location
example: Good Food, Inc.
location_address:
$ref: '#/components/schemas/Address'
phone:
type: string
description: Telephone number for contacting this location
example: '4045551212'
notes:
type: string
description: Special instructions for access to the location
example: Use side door.
geofence_radius_in_meters:
type: integer
description: The geofence radius in meters for automated arrival
format: int32
example: 0
handoff_pin_geo:
$ref: '#/components/schemas/GeoLocation'
merchant_phone_suppressed:
type: boolean
description: Flag to hide the merchant contact phone number
example: true
description: Geographic and contact details for where contents will be picked up from or dropped off.
DeliveryTimes:
required:
- dropoff
- dropoff_arrival
- pickup
- pickup_arrival
type: object
properties:
pickup_arrival:
$ref: '#/components/schemas/DeliveryTime'
pickup:
$ref: '#/components/schemas/DeliveryTime'
contents_prep_complete:
$ref: '#/components/schemas/DeliveryTime'
dropoff_arrival:
$ref: '#/components/schemas/DeliveryTime'
dropoff:
$ref: '#/components/schemas/DeliveryTime'
geofence_pickup_arrival:
$ref: '#/components/schemas/DeliveryTime'
geofence_dropoff_arrival:
$ref: '#/components/schemas/DeliveryTime'
return_initiated:
$ref: '#/components/schemas/DeliveryTime'
return_arrival:
$ref: '#/components/schemas/DeliveryTime'
return_complete:
$ref: '#/components/schemas/DeliveryTime'
description: Estimated or actual times for pickup and dropoff of contents.
ItemWeight:
type: object
properties:
unit:
type: string
description: 'Unit of measurement, for example, POUNDS, OUNCES, etc. '
enum:
- POUNDS
weight_range:
type: object
description: An item's weight range (and unit of measurement)
DeliveryItem:
required:
- description
- diner_id
type: object
properties:
diner_id:
type: string
description: UUID of the diner ordering this item
format: uuid
example: ef1a26c6-b927-49dd-9b66-8fe8d8646837
description:
type: string
description: Description of the item being delivered
example: Cheese Burger
size:
type: string
description: The size of the item from XS to XXL
example: M
enum:
- XS, S, M, L, XL, XXL
tags:
type: array
description: Optional flags to identify various transportation constraints (alcohol, spillable, etc.) as well as any tags the customer feel like adding
items:
type: string
description: Optional flags to identify various transportation constraints (alcohol, spillable, etc.) as well as any tags the customer feel like adding
quantity:
minimum: 1
type: integer
description: Optional quantity with a default quantity of 1
format: int32
options:
type: array
description: Optional options on the item (Lettuce, Tomato, Onion, Chicken, Beef)
items:
$ref: '#/components/schemas/DeliveryItemOption'
category_name:
type: string
description: The name of the category of the item
example: Burgers
sizing:
$ref: '#/components/schemas/ItemSizing'
description: An item that is being delivered.
DeliveryTime:
required:
- timestamp
- type
type: object
properties:
type:
type: string
description: Whether or not this is an estimated time of activity or it has already taken place
example: estimate
enum:
- estimate, actual
timestamp:
type: string
description: Time that this action occurred or is estimated to occur
format: date-time
example: '2019-08-24T14:15:22Z'
description: Estimated or actual time that some activity (contents picked up or dropped off) will or has taken place.
GeoLocation:
required:
- lat
- lng
type: object
properties:
lat:
type: number
description: Latitude coordinate
format: double
example: 37.67577137428678
lng:
type: number
description: Longitude coordinate
format: double
example: -81.40696178943328
description: Latitude and longitude coordinates for a location.
DeliveryPreferences:
type: object
properties:
pickup_time:
type: string
description: The desired time for a driver to arrive at the pickup location
format: date-time
example: '2019-08-24T14:15:22Z'
delivery_time:
type: string
description: The desired time for a driver to arrive at the dropoff location
format: date-time
example: '2019-08-24T14:45:22Z'
description: A set of preferred details about a delivery
PosDelivery:
type: object
properties:
id:
type: string
description: A unique Grubhub ID for the delivery.
format: uuid
account_id:
type: string
description: The business account ID that was used to create the delivery.
format: uuid
confirmation_code:
type: string
description: A Grubhub 6-character code for referencing the delivery by humans. This should be displayed to the end user for reference when calling in to Grubhub customer care. It is also provided to the driver.
region_id:
type: string
description: Region Id
format: uuid
name:
type: string
description: Short text description for the delivery (typically, the name of the diner or delivery recipient).
pickup:
$ref: '#/components/schemas/Location'
dropoff:
$ref: '#/components/schemas/Location'
flags:
uniqueItems: true
type: array
description: A set of flags describing certain attributes of the delivery that may impact dispatch handling.
items:
type: string
enum:
- ALCOHOL
- LARGE_ORDER
- UNKNOWN
contents:
type: array
description: A list of items that are being delivered.
items:
$ref: '#/components/schemas/DeliveryItem'
status:
type: string
description: The current status of the delivery.
courier:
$ref: '#/components/schemas/Courier'
created:
type: string
description: Date and time the delivery was created.
format: date-time
pickup_ready:
type: string
description: When the order was marked as ready to be picked up. Will be absent if null.
format: date-time
times:
$ref: '#/components/schemas/DeliveryTimes'
committed_times:
$ref: '#/components/schemas/DeliveryTimes'
test:
type: boolean
description: Test.
preferences:
$ref: '#/components/schemas/DeliveryPreferences'
metadata:
type: object
additionalProperties:
type: string
description: String map of client-supplied metadata for the delivery. Both internal Grubhub systems and partner systems may provide metadata, so it is advised to implement a namespacing convention for partner-supplied keys.
description: String map of client-supplied metadata for the delivery. Both internal Grubhub systems and partner systems may provide metadata, so it is advised to implement a namespacing convention for partner-supplied keys.
setup_instructions:
type: string
description: Not currently supported through DaaS. Special instructions to the courier for delivery setup. Absent if null.
alternate_name:
type: string
description: An optional alternate contact name.
description: A delivery that has been created as the result of a delivery request.
Address:
type: object
properties:
region_code:
type: string
description: ISO 3166-1 alpha-2 country code, e.g. US, GB
address_lines:
type: array
description: In order street address line 1, 2, etc.
items:
type: string
description: In order street address line 1, 2, etc.
cross_streets:
type: string
description: Usually a rough description of the intersection for delivery.
locality:
type: string
description: Usually refers to postal town or city.
sublocality:
type: string
description: Borough, district, an entity with an administrative boundary.
neighborhood:
type: string
description: A subdivision of sublocality, with or without a an administrative boundary.
It might also refer to a common name that is associated with the location.
administrative_area:
type: string
description: State, or some sort of highest level subdivision of the region.
postal_code:
type: string
description: Postal code.
sorting_code:
type: string
description: Not used in most regions. Sorting code for addressing purposes.
coordinates:
$ref: '#/components/schemas/Coordinates'
organization_name:
type: string
description: Name of the organization.
detailed_pin_coordinates:
$ref: '#/components/schemas/Coordinates'
description: Physical street address
ItemSizing:
type: object
properties:
weight:
$ref: '#/components/schemas/ItemWeight'
dimensions:
$ref: '#/components/schemas/ItemDimensions'
description: Size of an item within a delivery
Size:
required:
- external_id
- name
type: object
properties:
external_id:
type: string
description: A user-configured identifier for this object within the menu. External IDs must be unique across all menu entities of this type. Any size that shares this `external_id` will be overwritten.
name:
type: string
description: The display name for this size, which will be given to the diner as an option to select.
internal_name:
type: string
description: A name displayed on Grubhub menu management tools instead of the display name.
metadata:
type: string
description: Metadata associated with the size.
fulfillment_type_settings:
type: object
additionalProperties:
$ref: '#/components/schemas/NormalizedSizeFulfillmentTypeSettings'
description: OrderServiceType-specific configurations for this size. All keys should be strings representing order-service types (valid options include "STANDARD_DELIVERY", "STANDARD_PICKUP", "CATERING_DELIVERY", and "GROUP_DELIVERY". All values should be of type NormalizedSizeFulfillmentTypeSettings.
description: Size selections for prompts within menu items.
PosNormalizedMenuUpdateRequest:
required:
- menu_url
- merchant_ids
type: object
properties:
merchant_ids:
type: array
description: An array containing only a single merchant ID for applying an uploaded menu to a specific location.
items:
type: string
description: An array containing only a single merchant ID for applying an uploaded menu to a specific location.
menu_url:
type: string
description: The location or webhook where the Grubhub API can download a PosNormalizedMenu object, either as a gzip file or uncompressed.
normalized_menu:
type: boolean
description: Indicated whether this endpoint expects the normalized menu object structured as a series of object types linked by references (`true`). Make sure to use `true` for normalized menu.
apply_existing_schedule_overrides:
type: boolean
description: Should the schedule overrides that are currently in the Grubhub system be applied to this menu.
description: A normalized menu update request.
MeasuredPrice:
type: object
properties:
measurement_unit_for_pricing:
type: string
description: The measurement unit used to measure the item. This should be used only for items whose price depends on quantity sold. These are also referred as weighted items
estimated_units_per_item_for_pricing:
type: number
description: 'Estimated units per unit of item. This value will be used to calculate estimated price for total number of units. The unit of measurement used will be measurement_unit_for_pricing. This should be used only for items whose price depends on quantity. These are also referred as weighted items '
description: The values for items whose price depends on the quantity sold. Also referred as weighted items.
PosScheduleOverrideBulkRequest:
required:
- entity_ids
- schedule_override
type: object
properties:
entity_ids:
type: array
description: A list of entity IDs to apply the schedule override operation for. The entities can have any type (ITEM or MODIFIER), and the IDs can be either Grubhub internal IDs or Partner external IDs. If one of the IDs if not valid, the other IDs won't be processed either, and the operation will be aborted.
items:
type: string
description: A list of entity IDs to apply the schedule override operation for. The entities can have any type (ITEM or MODIFIER), and the IDs can be either Grubhub internal IDs or Partner external IDs. If one of the IDs if not valid, the other IDs won't be processed either, and the operation will be aborted.
schedule_override:
$ref: '#/components/schemas/PosScheduleOverrideBaseRequest'
description: A schedule override operation to be performed for multiple entities of any type (ITEM or MODIFIER).
MenuSection:
required:
- external_id
- name
type: object
properties:
external_id:
type: string
description: The merchant-set ID for this schedule, which can be used to link it in the `PosNormalizedMenu`.
name:
type: string
description: The display name of this menu section.
internal_name:
type: string
description: An internal reference name for this section. It will not be displayed on the Grubhub ordering platform.
description:
type: string
description: A human-readable description of what this section contains that can be displayed on either the Grubhub ordering apps or the POS system.
items:
type: array
description: A list of the `external_id` values of the menu items that will be listed under this section.
items:
type: string
description: A list of the `external_id` values of the menu items that will be listed under this section.
availability_ranges:
type: array
description: A list of the `external_id` values of the `PosNormalizedAvailabilityRanges` that define when the menu items within this section can be ordered.
items:
type: string
description: A list of the `external_id` values of the `PosNormalizedAvailabilityRanges` that define when the menu items within this section can be ordered.
schedule_ids:
type: array
description: A list of `external_id` values for `PosNormalizedRepeatingSchedule` schedules that indicate when this menu item is available during the week.
items:
type: string
description: A list of `external_id` values for `PosNormalizedRepeatingSchedule` schedules that indicate when this menu item is available during the week.
availability_override:
type: string
description: The `external_id` value for `availability_overrides` object that indicate the date ranges when this menu section will not be available for ordering.
media:
$ref: '#/components/schemas/PosNormalizedMenuMedia'
subsections:
type: array
description: A list of subsections associated with this section.
items:
type: string
description: A list of subsections associated with this section.
tax_category:
$ref: '#/components/schemas/TaxCategory'
description: A category of the menu - such as appetizers, breakfast, or drinks - including the menu items that these sections contain.
MenuMerchantStatus:
required:
- merchant_id
- status
type: object
properties:
merchant_id:
type: string
description: The partner resource ID of the merchant whose specific menu ingestion job this status applies to.
status:
type: string
description: Represents the current state of the menu ingestion job.