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. enum: - REQUESTED - QUEUED - IN_PROGRESS - SUCCESS - PARTIAL_SUCCESS - FAILED - FAILED_MENU_DOWNLOAD - FAILED_VALIDATION - UNKNOWN menu_proof_url: type: string description: The proof URL to view the ingested menu on the front-end. This is only returned when the menu ingestion is successful. details: type: array description: 'A list where each element is a human-readable description of the status of this job or the problem encountered, if any. For example: ["Control details: jobId is ...", "Other details"], ["Error message"] ' items: type: string description: 'A list where each element is a human-readable description of the status of this job or the problem encountered, if any. For example: ["Control details: jobId is ...", "Other details"], ["Error message"] ' media_processing_status: type: string description: Status reflecting the state of the media uploads. media_validation_error_list: type: array description: A List of any media validation errors that occurred during ingestion. items: $ref: '#/components/schemas/MediaValidationErrorDTO' tax_category_validation_errors: type: array description: List of tax category validation errors on supplied menu. items: $ref: '#/components/schemas/InvalidCodeAndEntityIds' weighted_items_validation_errors: type: string description: String of comma-delimited items that were marked as invalid weighted items. Will not be ingested. description: The current state or result of a menu ingestion job. Each status will be communicated with both a standardized status string and a human-readable description. NormalizedSizeFulfillmentTypeSettings: type: object properties: price: type: number description: The base price of the menu item at this size to be used for a given OrderServiceType. description: SizeFulfillmentTypeSettings include configurations to be used for a Size only for oneFulfillmentType. TaxCategory: type: object properties: code: type: string description: A valid Grubhub internal tax category code. description: Tax category. Item: required: - external_id - name type: object properties: external_id: type: string description: The merchant-set ID for this menu item, which can be used to link it in the `PosNormalizedMenu`. name: type: string description: The display name of the menu item. internal_name: type: string description: An internal reference name for this menu item. It will not be displayed on the Grubhub ordering platform. description: type: string description: A diner-facing description of this menu item that displays on the Grubhub ordering apps. price: type: number description: The cost of this item in cents before taxes and fees. Every menu item must have either a `price` or a `size_prompt` value. format: double tax_rate: type: string description: 'The `external_id` value of the tax rate that applies to this menu item. Note: All applicable tax rates must first be defined in the menu-level tax_rates array (with rates formatted as decimals, e.g., 2.5% as 0.025). Reference the corresponding external_id here if this tax rate differs.' tax_category: $ref: '#/components/schemas/TaxCategory' miscellaneous_taxes: type: array description: A list of `external_id` values that indicate additional tax rates that apply to this menu item. items: type: string description: A list of `external_id` values that indicate additional tax rates that apply to this menu item. flexible_tax_fields: type: object additionalProperties: type: string description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are Strings.

Allowed entries are:

''SERVING_METHOD'': "BTL-GLASS", "BTL-PLASTIC", "CANNED", or "CUP".
''PREMISIS_CONSUMPTION'': "ON", "OFF".' example: '{"SERVING_METHOD":"BTL-GLASS"}' description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are Strings.

Allowed entries are:

''SERVING_METHOD'': "BTL-GLASS", "BTL-PLASTIC", "CANNED", or "CUP".
''PREMISIS_CONSUMPTION'': "ON", "OFF".' example: SERVING_METHOD: BTL-GLASS flexible_tax_numeric_fields: type: object additionalProperties: type: number description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are numeric.

Allowed entries are:

''VOLUME'':
''NUMBER_OF_UNITS'': .' format: double description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are numeric.

Allowed entries are:

''VOLUME'':
''NUMBER_OF_UNITS'': .' example: VOLUME: 1 NUMBER_OF_UNIT: 1 size_prompt: type: string description: The `external_id` value of the size prompt and options that apply to this menu item. Every menu item must have either a `price` or a `size_prompt` value. modifier_prompts: type: array description: A list of `external_id` values for the modifier prompts that apply to this menu item. items: type: string description: A list of `external_id` values for the modifier prompts that apply to this menu item. 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. tags: type: array description: A list of indicators that flag this menu item for special delivery handling, regulatory treatment, or to indicate specific properties of the food - spicy, kosher, etc. - for the diner. items: $ref: '#/components/schemas/Tag' minimum_serving_size: type: integer description: The minimum serving size that can be ordered of this item. format: int32 maximum_serving_size: type: integer description: The maximum serving size that can be ordered of this item. This value must be greater than `minimum_serving_size.` format: int32 lead_time_seconds: type: integer description: The required minimum time this item needs to be prepared. format: int64 minimum_order_quantity: type: integer description: Default minimum quantity that can be ordered of this item. format: int32 maximum_order_quantity: type: integer description: The maximum quantity of this item that can be ordered in standard orders. This value must be greater than `minimum_order_quantity`. format: int32 calorie_count: type: string description: How many calories is this item? Can be an integer, an integer with a '+' or '-' prepended, or a range of integers. media: $ref: '#/components/schemas/PosNormalizedMenuMedia' metadata: type: string description: User-configured text stored with and returned as part of this object. This text is not used by the Grubhub system; it is solely for the POS user's purposes. Character limit is restricted to 2560 characters. A validation error will be returned if this limit is exceeded. availability_ranges: type: array description: A list of `external_id` values for `PosNormalizedAvailabilityRanges` objects that indicate the date ranges when this menu item will be available for ordering. items: type: string description: A list of `external_id` values for `PosNormalizedAvailabilityRanges` objects that indicate the date ranges when this menu item will be available for ordering. allowable_order_types: uniqueItems: true type: array description: The set of order types that can use this item. If the value is null or empty, the item will default to being "STANDARD" items: type: string enum: - STANDARD - CATERING - GROUP availability_override: type: string description: The `external_id` value for `availability_overrides` object that indicate the date ranges when this menu item will not be available for ordering. gtin: type: string description: The Global Trade Number Identification Number (GTIN) is for manufactured items only. This is assigned by the manufacturer (barcode on the back of the product packaging) to uniquely identify your item and used by Grubhub to optimize your menu.

In North America, use the 12 digit UPC number (unless the product is a book in which case you'd use the ISBN). The complete list of GTIN number types is as follows:

UPC (in North America / GTIN-12) - 12-digit number
EAN (in Europe / GTIN-13) - 13-digit number
JAN (in Japan / GTIN-13) - 8 or 13-digit number
ISBN (for books) - 13-digit number (convert ISBN-10 to ISBN-13). If you have both, include only the 13-digit number.
ITF-14 (for multipacks / GTIN-14) - 14-digit number

Only provide a GTIN if you are sure it is correct, other wise leave it blank. An incorrect GTIN can cause menu ingestion to fail. dimensions: $ref: '#/components/schemas/Dimensions' weight_in_pounds: type: number description: The weight of the item in pounds. format: float location_in_store: type: string description: The location of the item in the store. serving_size: type: integer description: The number of expected servings for each quantity of this item. format: int32 measured_price: $ref: '#/components/schemas/MeasuredPrice' fulfillment_type_settings: type: object additionalProperties: $ref: '#/components/schemas/NormalizedItemFulfillmentTypeSettings' description: OrderServiceType-specific configurations for this menu item. 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 NormalizedItemFulfillmentTypeSettings. description: Information about a single menu item included in a PosNormalizedMenu ingestion process. ModifierPromptSelectionSettings: type: object properties: minimum_quantity: type: integer description: The minimum number of unique options that the diner can select for this prompt. Use 0 to set no minimum. format: int32 maximum_quantity: type: integer description: The maximum number of unique options that the diner can select for this prompt. *DO NOT use -1 as an integer for unlimited quantity. Instead use a high number, ie 99.* format: int32 description: The minimum and maximum number of unique modifier options that can be selected within a prompt. SizePrompt: 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 prompt that shares this `external_id` will be overwritten. name: type: string description: The display name for this size prompt, which in this case is the prompt given to the diner. internal_name: type: string description: A name displayed on Grubhub menu management tools instead of the display name. sized_prices: type: array description: Additional price information about size within a normalized menu. For use in Size Prompts for the item pricing model. items: $ref: '#/components/schemas/SizedPrice' description: Information about item sizing, including display text and pricing. Dimensions: type: object properties: depth_in_inches: type: number description: Depth of an item in inches. format: float width_in_inches: type: number description: Width of an item in inches. format: float height_in_inches: type: number description: Height of an item in inches. format: float description: The dimensions of the item, width/height/depth. PosNormalizedMenu: required: - menu_info type: object properties: menu_info: $ref: '#/components/schemas/MenuInfo' tax_rates: type: array description: Information about the tax rates for this menu. items: $ref: '#/components/schemas/TaxRate' repeating_schedules: type: array description: A list of the weekly schedules during which menu items may be made available. Typical usages include Breakfast, Lunch, Dinner, Weekend Brunch, etc. items: $ref: '#/components/schemas/RepeatingSchedule' menu_sections: type: array description: The categories on a normalized menu - such as appetizers, breakfast, or drinks - including the menu items that these sections contain. items: $ref: '#/components/schemas/MenuSection' items: type: array description: Information about all of the individual menu items that can be ordered as part of this menu. items: $ref: '#/components/schemas/Item' modifier_prompts: type: array description: A list of top-level modifier categories, which can contain multiple modifier options. items: $ref: '#/components/schemas/ModifierPrompt' modifier_lists: type: array description: A list of the modifier lists included with this menu in any modifier prompt. items: $ref: '#/components/schemas/ModifierList' modifiers: type: array description: A list of selectable options within a modifier prompt that changes a menu item. That change may include price and calorie variations, and may be affected by size selections. This list will include all possible modifiers, regardless of the prompts or menu items that they are associated with. items: $ref: '#/components/schemas/Modifier' size_prompts: type: array description: Information about item sizing, including display text and pricing. items: $ref: '#/components/schemas/SizePrompt' sizes: type: array description: The sizes for all items in this menu. items: $ref: '#/components/schemas/Size' availability_ranges: type: array description: A list of the times during which seasonal menu items can be available. items: $ref: '#/components/schemas/AvailabilityRange' availability_overrides: type: array description: A list of the times during which items, modifiers or menu sections are not available for ordering. items: $ref: '#/components/schemas/AvailabilityOverride' description: The normalized menu. Modifier: required: - default_price - external_id - name type: object properties: external_id: type: string description: The merchant-set ID for this modifier, which can be used to link it in the `PosNormalizedMenu`. name: type: string description: The display name of the modifier. internal_name: type: string description: Optional. If present, name displayed on Grubhub menu management tools description: type: string description: The description displayed to the diner. calorie_count: type: string description: The calorie content for this modifier. default_price: type: number description: Default price of the modifier. Applies if the item has no sizes or if there is no modifier `sized_price` for the size selected. tags: type: array description: A list of indicators that flag this modifier for special delivery handling, regulatory treatment, or to indicate specific properties of the food - spicy, kosher, etc. - for the diner. Modifier tags can differ from menu item tags as they can add ingredients, i.e. a modifier that adds cheese could make a menu item no longer vegan and add dairy. items: $ref: '#/components/schemas/Tag' tax_rate: type: string description: The `external_id` value of the tax rate that applies to this modifier if that rate differs from the overall menu or the specific menu item rate. tax_category: $ref: '#/components/schemas/TaxCategory' flexible_tax_fields: type: object additionalProperties: type: string description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are Strings.

Allowed entries are:

''SERVING_METHOD'': "BTL-GLASS", "BTL-PLASTIC", "CANNED", or "CUP".
''PREMISIS_CONSUMPTION: "ON", "OFF".' description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are Strings.

Allowed entries are:

''SERVING_METHOD'': "BTL-GLASS", "BTL-PLASTIC", "CANNED", or "CUP".
''PREMISIS_CONSUMPTION: "ON", "OFF".' flexible_tax_numeric_fields: type: object additionalProperties: type: number description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are numeric.

Allowed entries are:

''VOLUME'':
''NUMBER_OF_UNITS'': .' format: double description: 'Flexible fields can be used to include unique rules for an item, for example bottle deposit or cup fees. These rules, including bottle deposit and cup fees, may require additional activation in the Grubhub system. Contact your Grubhub representative for further information. This is a map of flexible fields associated with this item whose values are numeric.

Allowed entries are:

''VOLUME'':
''NUMBER_OF_UNITS'': .' miscellaneous_taxes: type: array description: A list of `external_id` values that indicate additional tax rates that apply to this modifier selection. items: type: string description: A list of `external_id` values that indicate additional tax rates that apply to this modifier selection. media: $ref: '#/components/schemas/PosNormalizedMenuMedia' sized_prices: type: array description: Optional. An ordered list of sized prices for this modifier, i.e., the modifier price depends on the Size selected for the Item. items: $ref: '#/components/schemas/SizedPrice' submodifiers: type: array description: A list of `external_id` values for the modifier prompts that are available on this individual modifier option. In enhanced menus, modifiers can recurse up to six levels deep. items: type: string description: A list of `external_id` values for the modifier prompts that are available on this individual modifier option. In enhanced menus, modifiers can recurse up to six levels deep. metadata: type: string description: User-configured text stored with and returned as part of this object. This text is not used by the Grubhub system; it is solely for the POS user's purposes. Character limit is restricted to 2560 characters. A validation error will be returned if this limit is exceeded. schedule_ids: type: array description: A list of `external_id` values for `PosNormalizedRepeatingSchedule` schedules that indicate when this modifier is available during the week. This can differ from the schedules for the menu item itself, though the modifier will only be available during the times when both schedules are active. items: type: string description: A list of `external_id` values for `PosNormalizedRepeatingSchedule` schedules that indicate when this modifier is available during the week. This can differ from the schedules for the menu item itself, though the modifier will only be available during the times when both schedules are active. availability_ranges: type: array description: A list of `external_id` values for `PosNormalizedAvailabiltyRanges` objects that indicate the date ranges when this menu item will be available for ordering. This can differ from the availability range for the menu item itself, though the modifier will only be available during the times when both ranges are active. items: type: string description: A list of `external_id` values for `PosNormalizedAvailabiltyRanges` objects that indicate the date ranges when this menu item will be available for ordering. This can differ from the availability range for the menu item itself, though the modifier will only be available during the times when both ranges are active. availability_override: type: string description: The `external_id` value for `availability_overrides` object that indicate the date ranges when this modifier will not be available for ordering. fulfillment_type_settings: type: object additionalProperties: $ref: '#/components/schemas/NormalizedModifierFulfillmentTypeSettings' description: OrderServiceType-specific configurations for this modifier. 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 NormalizedModifierFulfillmentTypeSettings. description: A selectable option within a modifier prompt that changes a menu item. That change may include price and calorie variations, and may be affected by size selections. PosScheduleOverrideBaseRequest: required: - end - op - show_or_hide - start type: object properties: op: type: string description: The operation to perform [ADD, UPDATE]. enum: - ADD - UPDATE cur_end_date: type: string description: 'ISO-8601 format.For ADD operations, the current end date is not required.For UPDATE operations, the current end date is required. ' format: date-time start: type: string description: ISO-8601 format. The beginning of the temporary override period. format: date-time end: type: string description: ISO-8601 format. The end of the temporary override period. A sentinel value of "9999-12-31T23:59:00.000Z" is used to "archive" an item. format: date-time show_or_hide: type: string description: The options to use for the override. enum: - SHOW - HIDE description: A schedule override operation to be performed for multiple entities of any type (ITEM or MODIFIER). AvailabilityRange: required: - external_id - name - start_date 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 availability range that shares this `external_id` will be overwritten. name: type: string description: The display name for this availability, which will be shown internally and externally. start_date: type: string description: The date and time when this override begins. format: date-time end_date: type: string description: The date and time when this override ends. format: date-time description: Definitions of time ranges during a year when one or more menu items may be available. ModifierPromptQuantitySettings: type: object properties: minimum_units: type: integer description: The total minimum quantity that must be selected across all modifiers in a prompt. format: int32 maximum_units: type: integer description: The total maximum quantity that can be selected across all modifiers in a prompt. *DO NOT use -1 as an integer for unlimited quantity. Instead use a high number, ie 99.* format: int32 description: The total minimum and maximum quantities that can be added for all modifier options in this prompt. ModifierQuantitySettings: type: object properties: default_units: type: integer description: The number of units of this modifier already entered into the interface when the diner first selects these associated menu item. Applies only to default_modifiers. format: int32 maximum_units: type: integer description: The maximum number of units that the diner can add of this modifier. Do not use zero as a maximum integer or the modifiers will not be selectable. *DO NOT use -1 as an integer for unlimited quantity. Instead use a high number, ie 99.* format: int32 unit_increment: type: integer description: The number of units added per incremental or decremental action. format: int32 description: Contains default, maximum, and custom increments for a single modifier. The properties below will be contained in a sub-object identified by the external_id of the modifier in question. PosScheduleOverrides: required: - item_overrides - merchant_id - modifier_overrides type: object properties: merchant_id: type: string description: The Grubhub or third-party provided external ID for the merchant. Corresponds to a single location. item_overrides: type: array description: The list of item overrides. items: $ref: '#/components/schemas/PosItemScheduleOverrides' modifier_overrides: type: array description: The list of modifier overrides. items: $ref: '#/components/schemas/PosModifierScheduleOverrides' description: A list of override schedules for items and modifiers PosNormalizedMenuValidationResult: type: object properties: valid: type: boolean description: Indicates whether the input menu is valid for ingestion. validation_errors: type: array description: If the validation fails, this field contains a description of the problem. items: type: string description: If the validation fails, this field contains a description of the problem. description: The results from a normalized menu validation. If successful, the valid property will be true. If the validation fails, the valid property will be false and the validation_errors property will indicate which menu field caused the failure and why. SizedPrice: required: - price - size type: object properties: size: type: string description: The `external_id` reference to a PosNormalizedSize. price: type: number description: Price for the referenced size. calorie_content: type: string description: Number of calories for the size. display_name: type: string description: Optional. If present, overrides the name of the referenced size, for display to diners. fulfillment_type_settings: type: object additionalProperties: $ref: '#/components/schemas/NormalizedSizedPriceFulfillmentTypeSettings' description: OrderServiceType-specific configurations for this SizedPrice. 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 NormalizedSizedPriceFulfillmentTypeSettings. description: Additional price information about size within a normalized menu. For use in Size Prompts for the item pricing model. MediaValidationErrorDTO: type: object properties: media_validation_error_message: type: string description: The message including error details. example: 'Precondition Failed : User request invalid, could not upload media.' entity_id: type: string description: The entity id of the item with media validation error. example: '123452933468' external_id: type: string description: The external id of the item with media validation error. example: ededebf898ebd89ebd9e8bd9b3 url: type: string description: The url of the invalid media. example: https://mediahost.example/bacon.jpg menu_item_name: type: string description: The name of the item with media validation error. example: Bacon description: A media validation error that occurred during ingestion. RepeatingSchedule: required: - external_id - name - rules 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 for this schedule, e.g. "Sunday Brunch" type: type: string description: How often this schedule repeats. Currently the only valid value is "WEEKLY". enum: - WEEKLY rules: type: array description: A set of non-overlapping time periods. items: $ref: '#/components/schemas/RepeatingScheduleRule' description: Information about a weekly schedule during which a menu item may be made available. Typical usages include Breakfast, Lunch, Dinner, Weekend Brunch, etc. TaxRate: required: - external_id - name type: object properties: external_id: type: string description: The merchant-set ID for this tax rate, which can be used to link it in the `PosNormalizedMenu`. name: type: string description: The name of the tax rate shown in Grubhub menu management user interfaces. rate: type: number description: Decimal tax rate. Must be between 0 and 1. This object must have a value for either this field or the `flat` field. format: double flat: type: number description: The absolute amount of tax applied to orders from this merchant. This object must have a value for either this field or the `rate` field. format: double description: Information about a tax rate in a normalized menu format. Tax rate to be applied at order checkout, if the diner is not tax-exempt. The tax rate listed here applies only to the items and modifiers with which it is associated. All other menu items will use the merchant tax rate. PosBulkScheduleOverrideStatus: type: object properties: job_id: type: string description: A value that identifies a bulk schedule override request. format: uuid processing_complete: type: boolean description: True if this job processing is done (successful or not), false otherwise. status: type: string description: The final status of the operation - SUCCESSFUL / FAILED. reason: type: string description: Additional details that pertain to the status of the override. entity_override_results: type: array description: A list of each entity and its individual override status (specific configurations are required to enable this). items: $ref: '#/components/schemas/BulkProcessingItemEntityStatus' merchant_id: type: string description: This field can either be the Grubhub ID for the merchant, or if an external ID is provided, it represents the external ID of the merchant. description: Describes the state (completed or not) of a bulk schedule override operation request together with its state (successful or not). ModifierList: 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 modifier list that shares this `external_id` will be overwritten. name: type: string description: The display name for this list of modifiers. modifiers: type: array description: The `external_id` values of the `PosNormalizedModifier` objects referenced by this list. items: type: string description: The `external_id` values of the `PosNormalizedModifier` objects referenced by this list. description: A list of modifiers included within a modifier prompt. PosNormalizedMenuUpdateResult: required: - job_id type: object properties: job_id: type: string description: An identifier that you can use to check the status of this update job. description: The response payload from a normalized menu ingestion. ModifierPrompt: required: - external_id - modifier_list - 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 modifier prompt that shares this `external_id` will be overwritten. name: type: string description: The text given to the diner to prompt then to select from a list of modifier options. internal_name: type: string description: A name displayed on Grubhub menu management tools instead of the display name. modifier_list: type: string description: An `external_id` reference to a PosNormalizedModifierList. This is the list of modifier options valid as answers to this prompt. default_selection_model: $ref: '#/components/schemas/ModifierPromptSelectionSettings' modifier_prompt_quantity_settings: $ref: '#/components/schemas/ModifierPromptQuantitySettings' modifier_quantity_settings: type: object additionalProperties: $ref: '#/components/schemas/ModifierQuantitySettings' description: Quantity information for a single modifier within this prompt. defaulted_modifiers: uniqueItems: true type: array description: The modifiers, if any, that are selected by default for this prompt. items: type: string description: The modifiers, if any, that are selected by default for this prompt. modifier_prompt_free_settings: $ref: '#/components/schemas/ModifierPromptFreeSettings' description: In a normalized menu, a question posed to a diner about what additional options they would like with their food; for example, toppings on a pizza or soup options in a lunch special. Each modifier prompts has one or more modifiers that a diner can select. Modifier prompts can apply to multiple menu items. NormalizedModifierFulfillmentTypeSettings: type: object properties: price: type: number description: The additional cost applied to an order if a diner selects this modifier for a given OrderServiceType. description: ModifierFulfillmentTypeSettings include configurations to be used for an Modifier only for oneOrderServiceType. BulkProcessingItemEntityStatus: type: object properties: entity_index: type: integer description: The index of the entity in the original list of IDs as it was sent to Grubhub. format: int32 entity_id: type: string description: Either the menu entity internal (Grubhub) OR external (Partner) IDs. status: type: string description: Status of the override operation for this entity. details: type: string description: Additional details that pertain to the the individual entity's status. description: An individual override entity and its status. RepeatingScheduleRule: required: - end_time - start_time type: object properties: days: uniqueItems: true type: array description: Days of the week for which the time period applies. Must be one of [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY] items: type: string description: Days of the week for which the time period applies. Must be one of [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY] enum: - MONDAY - TUESDAY - WEDNESDAY - THURSDAY - FRIDAY - SATURDAY - SUNDAY start_time: type: string description: The time when this schedule begins on the days listed, in the merchant's local time. Must conform to ISO date and time format example: '09:30:00.000' end_time: type: string description: The time when this schedule ends on the days listed, in the merchant's local time. Must conform to ISO date and time format example: '22:30:00.000' description: A time period and repetition rule. ModifierPromptFreeSettings: type: object properties: free_modifiers: minimum: 0 type: integer format: int32 description: Free settings for modifier prompts. MenuInfo: required: - currency type: object properties: currency: type: string description: The currency in which this merchant's prices are valued in. sections: type: array description: An array of the `external_id` strings for the sections within this menu. items: type: string description: An array of the `external_id` strings for the sections within this menu. header_media: $ref: '#/components/schemas/PosNormalizedMenuMedia' logo_media: $ref: '#/components/schemas/PosNormalizedMenuMedia' search_media: $ref: '#/components/schemas/PosNormalizedMenuMedia' description: The top-level information about a menu in the PosNormalizedMenu format, including default currency, images, and sections. InvalidCodeAndEntityIds: required: - code - entity_ids type: object properties: code: type: string description: The invalid tax category code found in the menu. entity_ids: uniqueItems: true type: array description: Set of entity ids with the invalid code above. items: type: string description: Set of entity ids with the invalid code above. errror_message: type: string description: The error message includes more details. description: A tax category validation error found on supplied menu NormalizedSizedPriceFulfillmentTypeSettings: type: object properties: price: type: number description: The price for the referenced Size for a given OrderServiceType. description: SizedPriceFulfillmentTypeSettings include configurations to be used for a SizedPrice onlyfor one OrderServiceType. AvailabilityOverride: required: - end_date - external_id - name - override_type - start_date 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 availability override that shares this `external_id` will be overwritten. name: type: string description: The display name for this availability override, which will be shown internally and externally. start_date: type: string description: The date and time when this override begins. format: date-time end_date: type: string description: The date and time when this override ends. format: date-time override_type: type: string description: The type of availability override, [AVAILABLE, UNAVAILABLE]. enum: - AVAILABLE - UNAVAILABLE description: Definitions of time range during which item or modifier is not available. NormalizedItemFulfillmentTypeSettings: type: object properties: price: type: number description: The price to be used for a given OrderServiceType for an Item if the Item has no sizes. format: double description: ItemFulfillmentTypeSettings include configurations to be used for an Item only for oneOrderServiceType. ScheduleOverride: required: - end - show_or_hide - start type: object properties: start: type: string description: ISO-8601 format. The beginning of the temporary override period. format: date-time end: type: string description: ISO-8601 format. The end of the temporary override period. A sentinel value of "9999-12-31T23:59:00.000Z" is used to "archive" an item. format: date-time show_or_hide: type: string description: The options to use for the override. enum: - SHOW - HIDE description: The schedule override details. PosBulkSupplementalTagStatus: type: object properties: job_id: type: string description: A value that identifies a bulk supplemental tag request. format: uuid processing_complete: type: boolean description: True if this job processing is done (successful or not), false otherwise. status: type: string description: Status of a menu entity supplemental tag operation. enum: - QUEUED - SUCCESSFUL - FAILED - ALREADY_SUBMITTED reason: type: string description: Additional details that pertain to the status of the operation. entity_ids: uniqueItems: true type: array description: A list of external IDs that were part of the associated request. items: type: string description: A list of external IDs that were part of the associated request. merchant_id: type: string description: This field can either be the Grubhub ID for the merchant, or if an external ID is provided, it represents the external ID of the merchant. description: Describes the state (completed or not) of a bulk supplemental tag operation request together with its state (successful or not). TagProductsRequest: required: - external_ids type: object properties: external_ids: uniqueItems: true type: array description: A list of external IDs to which to apply the tag(s) items: type: string description: A list of external IDs to which to apply the tag(s) description: Operation to tag a specified list of item/modifier IDs. PosItemScheduleOverrides: required: - intervals - item_id - merchant_id type: object properties: merchant_id: type: string description: The Grubhub or third-party provided external ID for the merchant. Corresponds to a single location. item_id: type: string description: The ID of the item. external_id: type: string description: The external ID of the item. intervals: type: array description: The list of schedule override details. items: $ref: '#/components/schemas/ScheduleOverride' description: Item override. PosScheduleOverrideMultiOperationResult: type: object properties: entity_ids: type: array description: Array of either menu entity internal (Grubhub) OR external (Partner) IDs. This list will contain all the entity IDs sent in the associated request. items: type: string description: Array of either menu entity internal (Grubhub) OR external (Partner) IDs. This list will contain all the entity IDs sent in the associated request. job_id: type: string description: A unique reference used to identify the status of this operation. format: uuid status: type: string description: Status of a menu entity schedule override operation. enum: - QUEUED - OK - INVALID - ERROR message: type: string description: Text description providing more detail on the status. description: Result of a bulk schedule override add/update request. Tag: required: - group - name type: object properties: group: type: string description: Tag group. Currently, the only valid group is 'LEGACY' name: type: string description: Tag name or code. enum: - ADVANCED_ORDERING - ALCOHOL - DESSERT - DAIRY_FREE - DRINK - GLUTEN_FREE - KOSHER - LOW_FAT - NOT_FOR_BIKER - NUT_FREE - RAW_FOOD_WARNING - SPECIALTY - SPICY - SODIUM_WARNING - TAX_EXEMPT - VEGAN - VEGETARIAN - FIFTEEN_TWENTY_LBS - TWENTY_TWENTYFIVE_LBS - TWENTYFIVE_THIRTY_LBS - THIRTY_PLUS_LBS - TWO_TWOHALF_FT - TWOHALF_THREE_FT - THREE_PLUS_FT description: Tags for menu items are used to flag certain items for special delivery handling, regulatory treatment, and to denote an item is eligible for certain flags and icons on Grubhub diner properties. PosNormalizedMenuUpdateStatus: required: - details - job_id - merchant_statuses type: object properties: job_id: type: string description: The identifier of the job that the status messages come from. details: type: string description: Details associated with the update status. merchant_statuses: type: array description: The current state or result of a menu ingestion job. items: $ref: '#/components/schemas/MenuMerchantStatus' description: The current status of a menu ingestion job. PosSupplementalTagMultiOperationResult: type: object properties: entity_ids: uniqueItems: true type: array description: Array of menu entity external (Partner) IDs. This list will contain all the entity IDs sent in the associated request. items: type: string description: Array of menu entity external (Partner) IDs. This list will contain all the entity IDs sent in the associated request. job_id: type: string description: A unique reference used to identify the status of this operation. format: uuid status: type: string description: Status of a menu entity supplemental tag operation. enum: - QUEUED - SUCCESSFUL - FAILED - ALREADY_SUBMITTED message: type: string description: Text description providing more detail on the status. description: Result of a bulk supplemental tag update request. PosModifierScheduleOverrides: required: - intervals - merchant_id - modifier_id type: object properties: merchant_id: type: string description: The Grubhub or third-party provided external ID for the merchant. Corresponds to a single location. modifier_id: type: string description: The ID of the modifier. external_id: type: string description: The external ID of the item. intervals: type: array description: The list of schedule override details. items: $ref: '#/components/schemas/ScheduleOverride' description: Modifier override PosNormalizedMenuMedia: type: object properties: source_url: type: string description: The URL where the image file can be downloaded. description: Information about media used in the PosNormalizedMenu format. DeliveryAreaStats: type: object properties: area: type: number description: Area in square miles. READ_ONLY readOnly: true approximate_radius: type: number description: Approximate Radius in miles. READ_ONLY readOnly: true height: type: number description: Height in miles. READ_ONLY readOnly: true width: type: number description: Width in miles. READ_ONLY readOnly: true description: Various Calculations about a DeliveryArea, Filled automatically. All units are in miles/square miles. PosEstimatesUpdateRequest: type: object properties: pickup_estimate_minutes: type: integer description: The estimated number of minutes that the merchant needs to fulfill a pickup order. format: int32 delivery_estimate_minutes: type: integer description: The estimated number of minutes that the merchant needs to fulfill a delivery order. format: int32 order_type: type: string 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.' enum: - STANDARD - CATERING - GROUP description: Estimated pickup and delivery times for a merchant. MerchantHeartbeatTriggeredPayload: required: - merchant_id - new_pos_status type: object properties: merchant_id: type: string description: The short Grubhub ID for the merchant OR the Partner merchant ID. new_pos_status: type: string description: Merchant status, whether online/offline. enum: - OFFLINE - ONLINE reason: type: string description: Reason for status change description: Request to set merchant status online or offline. OrderTypeHeartbeatPayload: required: - order_type_statuses type: object properties: order_type_statuses: type: object additionalProperties: $ref: '#/components/schemas/HeartbeatTriggeredPayload' description: Map of order type to heartbeat payload. Order type keys must be valid. description: Request to set merchant status online or offline for specific order types. Keys must be valid order types (e.g., 'standard', 'catering', 'group'). PosMerchantFulfillmentInfo: type: object properties: pos_estimates: type: object additionalProperties: $ref: '#/components/schemas/PosEstimates' description: The merchant's pickup and delivery estimates. delivery_fee: $ref: '#/components/schemas/PosDeliveryFee' delivery_minimum: type: number description: The minimum dollar value a merchant requires for an order to be eligible for delivery. format: double active_delivery_areas: type: array description: A list of delivery areas including the delivery fee for each zone. items: $ref: '#/components/schemas/DeliveryArea' description: Contains pickup and delivery info for a merchant. PosMerchantBatchOperationStatus: type: object properties: batch_id: type: string description: A value that identifies a batch of merchant operation requests. format: uuid processing_complete: type: boolean description: True if all requests in this batch have been processed (successful or not), false otherwise. merchant_status: type: object additionalProperties: type: string description: Deprecated - will be replaced by merchant_statuses array. Associations of merchant IDs and their processing status. deprecated: true description: Deprecated - will be replaced by merchant_statuses array. Associations of merchant IDs and their processing status. deprecated: true merchant_statuses: type: array description: List containing the processing status for each merchant ID, including additional information in case of a NOT_FOUND / INVALID status. items: $ref: '#/components/schemas/MerchantStatus' description: Describes the state (completed or not) of an entire batch of merchant operation requests together with the status of each individual request associated to this batch. PosMerchantBatchOperationResponse: type: object properties: batch_id: type: string description: A value that identifies a batch of merchant operation requests. format: uuid merchant_ids: type: array description: A list of merchant IDs representing each request that's going to be processed. items: type: string description: A list of merchant IDs representing each request that's going to be processed. description: Reference ID to a batch of merchant operation requests and all the associated merchant IDs. PosEstimates: type: object properties: pickup_estimate_minutes: type: integer description: Default number of minutes that this merchant requires between confirming an order and it being ready for pickup, if applicable. format: int32 delivery_estimate_minutes: type: integer description: Default number of minutes that this merchant requires between confirming an order and completion of delivery, if applicable. format: int32 description: Pickup and delivery estimates. PosMerchantData: type: object properties: merchant_id: type: string description: The Grubhub or third-party provided external ID for the merchant. Corresponds to a single location. merchant_uuid: type: string description: The UUID of the merchant. format: uuid name: type: string description: The display name of the merchant. account_status: $ref: '#/components/schemas/PosAccountStatus' address: $ref: '#/components/schemas/Address_2' service_type: type: string description: 'Merchant configuration for providing food to diner. This can be one of the following: - "PICKUP" - Merchant supports pickup only orders. - "DELIVERY" - Merchant supports delivery only orders. - "DELIVERY AND PICKUP" - Merchant supports both delivery and pickup orders.' fulfillment_info: $ref: '#/components/schemas/PosMerchantFulfillmentInfo' order_processing_info: $ref: '#/components/schemas/OrderProcessingInfo' order_taking_info: $ref: '#/components/schemas/OrderTakingInfo' diner_pickup_instructions: $ref: '#/components/schemas/DinerPickUpInstructions' merchant_status_by_order_type: type: object additionalProperties: type: string description: Merchant status by order type (e.g., STANDARD, CATERING, GROUP). description: Merchant status by order type (e.g., STANDARD, CATERING, GROUP). description: Summary information about a merchant. This entity will be expanded over time. ExternalId: type: object properties: partner_id: type: string format: uuid internal_id: type: string external_id: type: string type: type: string ConfigGroup: required: - merchant_ids type: object properties: group_name: type: string description: The name of the group. merchant_ids: uniqueItems: true type: array description: A list of merchant IDs in the configuration group. items: type: string description: A list of merchant IDs in the configuration group. description: A group of merchants sharing a common POS configuration in Grubhub. E.g., Merchants who are configured for POS Partner X. DeliveryArea: required: - fee_cents - geometry - name type: object properties: id: type: string description: The id for this DeliveryArea (Zone) format: uuid name: type: string description: A name for the delivery zone fee_cents: minimum: 0 type: integer description: The delivery cost for this delivery zone, in cents format: int32 zone_type: type: string description: They type of delivery zone (i.e. Diner or Catering). Defaults to Diner deprecated: true enum: - CATERING - DINER geometry: type: string description: GeoJSON String representing the geometry of the delivery area stats: $ref: '#/components/schemas/DeliveryAreaStats' description: Delivery area configuration settings. Address_2: required: - county_id - locality - market - postal_code - region - street_address type: object properties: street_address: type: string description: Street address line 1 street_address2: type: string description: Street address line 2 locality: type: string description: City, town, village or any variant thereof region: type: string description: State, province or any variant thereof. 2 digit ISO code for US states. example: AL postal_code: type: string description: ISO standard postal code, varies per country county: type: string description: County, parish or any variant thereof county_id: type: integer description: The unique identifier for the county this merchant is located in format: int32 country: type: string description: Country, territory or any variant thereof deprecated: true region_code: type: string description: 2 letter country ISO 3166-1 code example: US market: type: string description: The market that this merchant is enrolled within deprecated: true market_id: type: integer description: The id of the market that this merchant is enrolled within format: int32 deprecated: true time_zone: type: string description: A human readable description of what time zone this address is in geo_location: $ref: '#/components/schemas/GeoLocation_2' confidence_rating: type: string description: How confident geocoder is that this address is accurate confirmed_address: type: boolean description: Whether the address has been confirmed to be accurate description: The address of the physical location for a merchant. OrderProcessingInfo: type: object properties: scheduled_orders: type: boolean description: Whether or not the merchant is opt-in scheduled ordering. pos_integrated: type: boolean description: Whether or not the merchant is pos integrated. description: Contains order processing info of a merchant. PosDeliveryFee: type: object properties: value: type: integer description: The value of the fee applied for a service, in percentage of total order value or US dollars. format: int32 type: type: string description: Whether or not a fee value is applied as a percentage of order value or a whole amount of US dollars. Possible values are FLAT or PERCENT enum: - FLAT - PERCENT description: A fee that is applied to a merchant for the delivery service. PosAccountStatus: type: object properties: merchant_status: type: string description: The merchant's current status concerning account creation or ability to receive orders in a machine-readable format deprecated: true merchant_status_descriptor: type: string description: The merchant's current status concerning account creation or ability to receive orders in a human-readable format deprecated: true pos_merchant_status: type: string description: The merchant's current status concerning account creation or ability to receive orders (online/offline) reason: type: string description: Reason explaining why the merchant has a given status holds_active_account: type: boolean description: Whether or not this merchant should be regarded as holding an active account with GrubHub accepting_phone_orders: type: boolean description: Whether or not this merchant is currently capable of receiving orders by phone deprecated: true accepting_online_orders: type: boolean description: Whether or not this merchant is currently capable of receiving orders that have been transmitted online deprecated: true merchant_status_comments: type: string description: The reason that this merchant is in the status it is in, typically reserved for merchants not conducting business description: The current state of the merchant with regards to work flow and how they are conducting business. JsonNode: type: object MerchantOrderTypeHeartbeatPayload: required: - merchant_id - order_type_statuses type: object properties: merchant_id: type: string description: The short Grubhub ID for the merchant OR the Partner merchant ID. order_type_statuses: type: object additionalProperties: $ref: '#/components/schemas/HeartbeatTriggeredPayload' description: Map of order type to heartbeat payload. Order type keys must be valid. description: Request to set merchant status online or offline for specific order types, with merchant ID. MerchantPropertyUpdateRequest: required: - merchant_ids - property_updates type: object properties: merchant_ids: type: array description: A list of IDs representing either the Grubhub or Partner merchant ID. items: type: string description: A list of IDs representing either the Grubhub or Partner merchant ID. property_updates: type: object additionalProperties: type: string description: Multiple properties associated with Merchant ID/s. description: Multiple properties associated with Merchant ID/s. description: Merchant ID/s and properties to update for multiple merchants or individual merchant at a time. MerchantStatus: type: object properties: merchant_id: type: string description: The Grubhub(internal) or Partner(external) merchant ID. status: type: string description: Status of the bulk processing operation, one of SUCCESSFUL, NOT_FOUND, INVALID, FAILED, FAILED_TO_QUEUE, IN_PROGRESS, REQUESTED. details: type: string description: Additional details present in case of a NOT_FOUND / INVALID status. description: Merchant ID and their bulk processing status, including additional information in case of NOT_FOUND / INVALID statuses. OrderTakingInfo: type: object properties: managed_delivery: type: boolean description: Whether or not the merchant is managed delivery enabled. special_instructions_disabled: type: boolean description: Describes whether this merchant has disabled special ordering instructions or not. driver_pickup_instructions: type: string description: Describes how a delivery driver should pick up orders from merchant. description: Contains order taking info for a merchant. ScheduledOrdersUpdateRequest: required: - enabled type: object properties: enabled: type: boolean description: When it is true, the merchant will opt-in scheduled ordering; or the merchant will opt-out if it is false. description: Request to opt-in/opt-out from scheduled orders. GeoLocation_2: type: object properties: lat: type: number description: Latitude coordinate format: double lng: type: number description: Longitude coordinate format: double description: Latitude and longitude coordinates for a location. HeartbeatTriggeredPayload: required: - new_pos_status type: object properties: new_pos_status: type: string description: Merchant status, whether online/offline. enum: - OFFLINE - ONLINE reason: type: string description: Reason for status change description: Request to set merchant status online or offline. DinerPickUpInstructions: type: object properties: offers_curbside_pickup: type: boolean description: Describes whether merchant is opted in to curbside pickup or not. contact_phone: type: string description: Means of contacting a merchant when picking up curbside. curbside_instructions: type: string description: An additional information a merchant can optionally provide to curbside pickup diners. description: Contains diner pickup instructions for a merchant. PosMerchantIntegrationStatus: required: - enabled - merchant_id type: object properties: merchant_id: type: string description: The short Grubhub ID for the merchant OR the Partner merchant ID. enabled: type: boolean description: Live integration status. description: Pair of merchant ID and its desired live integration status - true / false. PosScheduleOverride: required: - end_time_utc - local_end_time - local_start_time - merchant_id - name - start_time_utc - type type: object properties: schedule_id: type: string description: The ID of this schedule format: uuid merchant_id: type: string description: The Grubhub or third-party provided external ID for the merchant. name: type: string description: Type of schedule. If not specified, defaults to "DELIVERY" enum: - DELIVERY - PICKUP - CATERING - GROUP type: type: string description: Type of schedule override. "UNAVAILABLE" is a duration when the merchant should be closed, when normally they would be open. "AVAILABLE" is a duration when the merchant should be open, when normally they would be closed. enum: - WHITEIN - BLACKOUT - UNPAUSE - AVAILABLE - UNAVAILABLE - AVAILABLE - UNAVAILABLE metadata: $ref: '#/components/schemas/ScheduleOverrideMetadata' local_start_time: type: string description: The time in the merchant's timezone when the override duration starts. format: date-time local_end_time: type: string description: The time in the merchant's timezone when the override duration ends. format: date-time start_time_utc: type: string description: The UTC time when the override duration starts. format: date-time end_time_utc: type: string description: The UTC time when the override duration ends. format: date-time description: Schedule Override for a merchant. Schedule overrides are ad hoc modifications to a merchant's normal hours of operation on Grubhub. CustomScheduleMetadata: required: - intervals - source type: object properties: created_by: type: string description: The creator of the schedule updated_by: type: string description: The last credential to update the schedule created_date: type: string description: The creation date of the schedule format: date-time updated_date: type: string description: The last update date of the schedule format: date-time legacy_id: type: string description: The legacy ID of the schedule in MySQL description: type: string description: The description for the schedule source: type: string description: The source of the creation or update of the custom schedule intervals: type: array description: A set of non-overlapping time periods items: $ref: '#/components/schemas/RepeatingScheduleRuleInterval' description: The metadata associated to a specific custom schedule DurationFieldType: type: object properties: name: type: string Chronology: type: object properties: zone: $ref: '#/components/schemas/DateTimeZone' RepeatingScheduleMetadata: required: - source type: object properties: created_by: type: string description: The creator of the schedule updated_by: type: string description: The last credential to update the schedule created_date: type: string description: The creation date of the schedule format: date-time updated_date: type: string description: The last update date of the schedule format: date-time legacy_id: type: string description: The legacy ID of the schedule in MySQL description: type: string description: The description for the schedule source: type: string description: The source of the creation or update of the repeating schedule description: The metadata associated to a specific repeating schedule PosMassScheduleOverride: type: object properties: id: type: string description: The identifier of the mass override itself. format: uuid merchant_ids: uniqueItems: true type: array description: The IDs of the merchants affected by this mass blackout. items: type: string description: The IDs of the merchants affected by this mass blackout. metadata: $ref: '#/components/schemas/MassScheduleOverrideMetadata' start_time_utc: type: string description: The date and time when this mass override begins in the UTC (Coordinated Universal Time) time zone. format: date-time end_time_utc: type: string description: The date and time when this mass override ends in the UTC (Coordinated Universal Time) time zone. format: date-time start_time_local: type: string description: The date and time when this mass override begins in the merchant's local time zone. format: date-time end_time_local: type: string description: The date and time when this mass override ends in the merchant's local time zone. format: date-time description: Information about a blackout that applies to multiple merchants; used for groups of merchants to halt online orders or pause ordering during a disaster (Grubhub administrative use only). PosUpdateRepeatingScheduleRequest: required: - intervals - schedule_type type: object properties: intervals: type: array description: The schedule of a single day of the week within a schedule update request. items: $ref: '#/components/schemas/PosMerchantRepeatingIntervalRequest' schedule_type: type: string description: Type of upsert repeating schedule type i.e. DELIVERY, PICKUP, CATERING, and GROUP. enum: - DELIVERY - PICKUP - CATERING - GROUP description: A schedule update request payload intended to update a merchant's available delivery or pickup hours. PosFullSchedule: type: object properties: statuses: type: object additionalProperties: type: string description: The status of a merchant as related to the schedule. enum: - PAUSED - ONBOARDING - OPEN - CLOSED - WHITED_IN - BLACKED_OUT - GHD_BLACKED_OUT - MASS_BLACKED_OUT description: A map of all schedule types (`DELIVERY`, `PICKUP`, etc.) and their current open/close status. today_schedule: type: object properties: empty: type: boolean additionalProperties: $ref: '#/components/schemas/PeriodSchedule' description: A collection of the types of schedules for a merchant, the date on which they begin, and the number of days in each schedule's period. Together, this collection defines the outlines of a merchant's pickup and delivery schedules.
Note that the first field, name, is used as the index of the collection. overrides_in_effect: type: array description: The schedules overrides that currently apply to the various schedule types in effect for this merchant. items: $ref: '#/components/schemas/PosScheduleOverride' mass_overrides_in_effect: type: array description: The schedule overrides that apply to this and several other merchants, usually of the same merchant group. items: $ref: '#/components/schemas/PosMassScheduleOverride' repeating_schedules_in_effect: type: array description: Any repeating weekly schedules in effect for this merchant. items: $ref: '#/components/schemas/PosMerchantRepeatingSchedule' custom_schedules_in_effect: type: array description: Any custom, temporary schedules currently in place. These will take precedence over a repeating schedule of the same type. items: $ref: '#/components/schemas/PosCustomSchedule' all_schedule_overrides: type: array description: All previous, current, and future schedule overrides associated with this merchant. items: $ref: '#/components/schemas/PosScheduleOverride' all_mass_overrides: type: array description: All mass schedule overrides that have or could affect this merchant's schedule. items: $ref: '#/components/schemas/PosMassScheduleOverride' all_repeating_schedules: type: array description: All weekly repeating schedules associated with this merchant. These are used as the default schedule when no custom schedules, or unavailable/available overrides are in effect. items: $ref: '#/components/schemas/PosMerchantRepeatingSchedule' all_custom_schedules: type: array description: All custom schedules associated with this merchant. These are temporary schedules that change the working hours for the merchant for things like holiday or summer hours. items: $ref: '#/components/schemas/PosCustomSchedule' managed_delivery_schedules: type: array description: The managed delivery schedules for the region that includes this merchant's address. items: $ref: '#/components/schemas/RepeatingSchedule' description: Complete schedule information about the merchant, including the status of any alternate schedules or overrides. DateTimeField: type: object properties: name: type: string type: $ref: '#/components/schemas/DateTimeFieldType' supported: type: boolean lenient: type: boolean duration_field: $ref: '#/components/schemas/DurationField' range_duration_field: $ref: '#/components/schemas/DurationField' leap_duration_field: $ref: '#/components/schemas/DurationField' minimum_value: type: integer format: int32 maximum_value: type: integer format: int32 DurationField: type: object properties: name: type: string type: $ref: '#/components/schemas/DurationFieldType' supported: type: boolean unit_millis: type: integer format: int64 precise: type: boolean PosScheduleOverrideRequest: required: - type type: object properties: start: type: string description: Start time of the override duration in the merchant's local time. If you do not specify a start and end, then the override will take effect immediately. format: date-time end: type: string description: End time of the override duration in the merchant's local time. If you do not specify a start and end, then the override will take effect immediately. format: date-time type: type: string description: Type of schedule override. "UNAVAILABLE" is a duration when the merchant should be closed, when normally they would be open. "AVAILABLE" is a duration when the merchant should be open, when normally they would be closed. enum: - WHITEIN - BLACKOUT - UNPAUSE - AVAILABLE - UNAVAILABLE - AVAILABLE - UNAVAILABLE schedule_name: type: string description: Type of schedule. If not specified, defaults to "DELIVERY" enum: - DELIVERY - PICKUP - CATERING - GROUP description: Request body for creating a new schedule override. You must specify both a start or end, or neither. You must include the field schedule_name or by default it will be set to DELIVERY. PosDeleteScheduleOverride: required: - current_end_time - type type: object properties: current_end_time: type: string description: Current end time of the override to be deleted. Used as reference for the override. format: date-time type: type: string description: Type of schedule override. "UNAVAILABLE" is a duration when the merchant should be closed, when normally they would be open. "AVAILABLE" is a duration when the merchant should be open, when normally they would be closed. enum: - WHITEIN - BLACKOUT - AVAILABLE - UNAVAILABLE description: Request body for deleting a schedule override. PosMerchantRepeatingIntervalRequest: required: - end - repeating_schedule_rule - start type: object properties: repeating_schedule_rule: uniqueItems: true type: array description: The day of the week that this interval request applies to. items: type: string description: The day of the week that this interval request applies to. enum: - MONDAY - TUESDAY - WEDNESDAY - THURSDAY - FRIDAY - SATURDAY - SUNDAY start: $ref: '#/components/schemas/LocalTime' end: $ref: '#/components/schemas/LocalTime' description: The schedule of a single day of the week within a schedule update request. LocalTime: type: object properties: chronology: $ref: '#/components/schemas/Chronology' millis_of_day: type: integer format: int32 hour_of_day: type: integer format: int32 minute_of_hour: type: integer format: int32 second_of_minute: type: integer format: int32 millis_of_second: type: integer format: int32 fields: type: array items: $ref: '#/components/schemas/DateTimeField' values: type: array items: type: integer format: int32 field_types: type: array items: $ref: '#/components/schemas/DateTimeFieldType' ScheduleOverrideMetadata: required: - source type: object properties: created_by: type: string description: The creator of the schedule updated_by: type: string description: The last credential to update the schedule created_date: type: string description: The creation date of the schedule format: date-time updated_date: type: string description: The last update date of the schedule format: date-time legacy_id: type: string description: The legacy ID of the schedule in MySQL description: type: string description: The description for the schedule source: type: string description: The source of the creation or update of the schedule override description: The metadata associated to a specific schedule override DateTimeZone: type: object properties: id: type: string fixed: type: boolean DateTimeFieldType: type: object properties: name: type: string duration_type: $ref: '#/components/schemas/DurationFieldType' range_duration_type: $ref: '#/components/schemas/DurationFieldType' PosCustomSchedule: required: - date - metadata - name type: object properties: merchant_id: type: string name: type: string description: Type of schedule. If not specified, defaults to "DELIVERY" enum: - DELIVERY - PICKUP - CATERING - GROUP date: type: string format: date metadata: $ref: '#/components/schemas/CustomScheduleMetadata' description: All custom schedules associated with this merchant. These are temporary schedules that change the working hours for the merchant for things like holiday or summer hours. MassScheduleOverrideMetadata: type: object properties: name_filter: type: string description: Optional Java Regular Expression used to target specific RepeatingSchedules by name override_type: type: string description: The type of a schedule override. Describes whether the deviation is to open or close unexpectedly. enum: - BLACKOUT - WHITEIN schedule_type: type: string description: The type of mass schedule override, whether timezones are applied enum: - LOCAL - ZONED created_by: type: string description: The creator of the schedule updated_by: type: string description: The last credential to update the schedule created_date: type: string description: The creation date of the schedule format: date-time updated_date: type: string description: The last update date of the schedule format: date-time legacy_id: type: string description: The legacy ID of the schedule in MySQL description: type: string description: The description for the schedule description: Metadata associated to a merchant mass schedule override RepeatingScheduleRuleInterval: required: - end_time - start_time type: object properties: start_time: $ref: '#/components/schemas/LocalTime' end_time: $ref: '#/components/schemas/LocalTime' PosMerchantRepeatingSchedule: required: - merchant_id - name - repeating_schedule_content - schedule_id type: object properties: merchant_id: type: string description: The Grubhub or third-party provided external ID for the merchant. schedule_id: type: string description: The ID of this schedule. format: uuid name: type: string description: Type of schedule. If not specified, defaults to "DELIVERY" enum: - DELIVERY - PICKUP - CATERING - GROUP version_id: type: string description: The ID of the version of this schedule which changes upon updates to the schedule. format: uuid repeating_schedule_content: $ref: '#/components/schemas/RepeatingSchedule' metadata: $ref: '#/components/schemas/RepeatingScheduleMetadata' description: The repeating weekly schedule of a merchant. PeriodSchedule: type: object properties: empty: type: boolean additionalProperties: type: array properties: empty: type: boolean description: A collection of the types of schedules for a merchant, the date on which they begin, and the number of days in each schedule's period. Together, this collection defines the outlines of a merchant's pickup and delivery schedules.
Note that the first field, name, is used as the index of the collection. items: $ref: '#/components/schemas/RepeatingScheduleRuleInterval' description: A collection of the types of schedules for a merchant, the date on which they begin, and the number of days in each schedule's period. Together, this collection defines the outlines of a merchant's pickup and delivery schedules.
Note that the first field, name, is used as the index of the collection. PartnerDeactivateRequest: type: object properties: merchant_id: type: string MerchantAssociationResponse: type: object properties: association_responses: uniqueItems: true type: array items: $ref: '#/components/schemas/AssociationResponse' ActivateRequest: type: object properties: job_id: type: string format: uuid ReferralSignup: type: object properties: partner_id: type: string external_id: type: string merchant_name: type: string street_address: type: string city: type: string state: type: string postal_code: type: string email: type: string country: type: string phone: type: string first_name: type: string last_name: type: string MerchantActivationEnablementResponse: type: object properties: cust_id: type: integer format: int64 kicked_off_enablement: type: boolean reason: type: array items: type: string PartnerDeactivateResponse: type: object properties: merchant_id: type: string status: type: string ReferralResponse: type: object properties: referral: $ref: '#/components/schemas/ReferralSignup' message: type: string DeactivateResponse: type: object properties: merchant_id: type: integer format: int64 status: type: string MerchantActivationResponse: type: object properties: batch_id: type: string format: uuid merchant_activation_enablement_response: type: array items: $ref: '#/components/schemas/MerchantActivationEnablementResponse' DeactivateRequest: type: object properties: merchant_id: type: integer format: int64 MerchantEligibilityResponse: type: object properties: cust_id: type: integer format: int64 name: type: string address: $ref: '#/components/schemas/Address_3' pos_eligibility: type: boolean reasons: uniqueItems: true type: array items: type: string description: Merchant eligibility response containing merchant details and POS eligibility status Triage: type: object properties: cust_id: uniqueItems: true type: array items: type: integer format: int64 reason: type: string AssociationResponse: type: object properties: cust_id: type: integer format: int64 external_id: type: string associated: type: boolean status: type: string enum: - SUCCESS - NOT_FOUND - ALREADY_INTEGRATED - FAILURE Address_3: type: object properties: street_address: maxLength: 255 minLength: 0 type: string description: Street address line 1 example: 123 Main St street_address2: maxLength: 255 minLength: 0 type: string description: Street address line 2 (optional) example: Suite 100 locality: maxLength: 100 minLength: 0 type: string description: City or locality example: New York region: maxLength: 50 minLength: 0 type: string description: State, province, or region example: NY postal_code: maxLength: 20 minLength: 0 type: string description: Postal or ZIP code example: '10001' description: Address information for the merchant QuantityLineSubstitution: required: - new_quantity - old_quantity type: object description: Quantity Line Substitution allOf: - $ref: '#/components/schemas/LineSubstitutionType' - type: object properties: old_quantity: type: integer description: Old quantity format: int32 new_quantity: type: integer description: New quantity format: int32 OrderFacetData: type: object properties: lead_time_settings: $ref: '#/components/schemas/LeadTimeSettings' min_advance_notice_minutes: type: integer format: int32 RemoveLineSubstitution: required: - old_quantity type: object description: Remove Line Substitution allOf: - $ref: '#/components/schemas/LineSubstitutionType' - type: object properties: old_quantity: type: integer description: Old quantity format: int32 LeadTimeSettings: type: object properties: delivery_estimate_minutes: type: integer format: int32 pickup_estimate_minutes: type: integer format: int32 lead_time_settings_tiers: type: array items: $ref: '#/components/schemas/LeadTimeSettingsTier' calculated_large_order_threshold_settings: $ref: '#/components/schemas/ThresholdSettings' Line: type: object properties: description: type: string description: A description of the line item. name: type: string description: The name of the line item. special_instructions: type: string description: Free form text special instructions added by the diner. line_options: type: array description: The options selected. items: $ref: '#/components/schemas/LineOption' price: type: integer description: Deprecated. Use "merchant_price" instead. format: int32 deprecated: true merchant_price: type: integer description: The price of this item in US Cents. format: int64 quantity: type: integer description: The number of this item to include. format: int32 id: type: string description: The Grubhub ID for this line item, may be null. menu_item_id: type: string description: The Grubhub menu item ID (legacy_id). menu_item_uuid: type: string description: Grubhub menu item uuid. format: uuid diner_total: type: integer description: The total cost of this item (and options) in US Cents. format: int32 total: type: integer description: Deprecated. Use "merchant_total" instead. format: int32 deprecated: true merchant_total: type: integer description: The total cost of this item (and options) in US Cents. format: int64 item_type: type: string description: A categorization of this item. variation_id: type: string description: Deprecated. A Grubhub Id for a specific variation of this line item. tags: type: array description: Grubhub tag IDs that apply to this line item. items: type: integer description: Grubhub tag IDs that apply to this line item. format: int32 tag_names: type: array description: Grubhub tag names that apply to this line item. items: type: string description: Grubhub tag names that apply to this line item. external_id: type: string description: The external ID that was stored in Grubhub for this menu item id. metadata: type: string description: Metadata associated with the line item. routing_tags: uniqueItems: true type: array description: Tags for use in Ultimate Pickup system items: type: string description: Tags for use in Ultimate Pickup system line_uuid: type: string description: Unique line item id for this order instance (i.e. 2 lines of Hamburger will have the same line Id, but will have different line item Ids). format: uuid packaging_options: uniqueItems: true type: array description: Packaging information (i.e. packaging style, ect.) items: type: string description: Packaging information (i.e. packaging style, ect.) physical_info: $ref: '#/components/schemas/PhysicalInfo' item_gtin: type: string item_image_url: type: string category: type: string weight: type: number description: Weight after driver pick-up requested_weight: type: number description: Diner requested weight measurement_unit: type: string description: 'Measurement unit for a weighted line eg: pound, ounce etc' enum: - POUND - GRAM - KILOGRAM - OUNCE - FLUID_OUNCE - UNKNOWN measurement_type: type: string description: Measurement type can be QUANTITY, COUNTABLE_WEIGHT, NON_COUNTABLE_WEIGHT estimated_units_per_item: type: number description: Estimated units per item description: A line item for the order. Payments: type: object properties: payments: type: array description: A payment source example: '[{ "payment_type": "UNIFIED_REWARD", "amount": 1000, "payment_source": "MERCHANT", "tax_application": "PRE_TAX" } "promotion_title": "$5 off $25 or more" "external_promotion_id": "12345" , { "payment_type": "CREDIT_CARD", "amount": 1620, "payment_source": "UNKNOWN", "tax_application": "POST_TAX" "promotion_title": "$5 off $25 or more" "external_promotion_id": "12345" }]' items: $ref: '#/components/schemas/Payment' rewards: type: array description: List of rewards applied to the order. items: $ref: '#/components/schemas/Reward' promo_codes: type: array writeOnly: true items: $ref: '#/components/schemas/Promotion' total: type: integer description: Initial total for an order in US Cents format: int32 example: 2620 adjusted_total: type: integer description: Total payments after adjustments in US Cents format: int32 example: 2620 promotions: type: array description: List of promotions applied to the order. items: $ref: '#/components/schemas/Promotion' description: Information relating to any payments/rewards/promotions applied to the order CatalogVersion: type: object properties: version_id: type: string LineTag: type: object properties: ghc_tag_id: type: integer description: The Grubhub Id for the tag. format: int64 name: type: string description: The name of the tag. description: Tags that are associated with line items. QuantityAndWeightLineSubstitution: required: - new_quantity - new_weight - old_quantity - old_weight type: object description: Quantity And Weight Line Substitution allOf: - $ref: '#/components/schemas/LineSubstitutionType' - type: object properties: old_quantity: type: integer description: Old quantity format: int32 new_quantity: type: integer description: New quantity format: int32 old_weight: type: number description: Old weight new_weight: type: number description: New weight PhysicalInfo: type: object properties: dimensions: $ref: '#/components/schemas/Dimensions_2' weight_in_pounds: type: number format: float location_in_store: type: string PosOrderCoupon: type: object properties: text: type: string description: The coupon description. amount: type: integer description: The coupon amount. format: int32 description: Information relating to a coupon that can be applied to an order Dimensions_2: type: object properties: depth_in_inches: type: number format: float width_in_inches: type: number format: float height_in_inches: type: number format: float Catering: type: object properties: estimated_attendees: type: integer description: Number of attendees format: int32 budget: type: integer description: The budget they had for this order format: int32 alternate_name: type: string description: Alternative contact info for the order alternate_phone: type: string description: Alternative contact info for the order green_indicated: type: boolean description: If set to true, the restaurant should not include napkins, utensils and other items that would just become waste as the diner has access to their own dishes and utensils setup_food: type: boolean description: If true, the driver should setup the food before leaving setup_instructions: type: string description: Instructions on how to setup the order description: Catering details for an order PosOrder: type: object properties: uuid: type: string description: The globally unique identity of the order. This is the primary and only guaranteed unique identity. format: uuid order_merchant_uuid: type: string format: uuid writeOnly: true merchant_uuid: type: string description: Grubhub UUID for the merchant. format: uuid order_number: type: string description: A more human-readable order number to show to the customer and merchant For standard and catering orders, this is equivalent to the parent_order_number. For group orders, this is the number related to the orders at that specific restaurant as a subset of the larger group order This is not guaranteed to be unique forever and is thus not used as a true identifier from an API perspective. parent_order_number: type: string description: A more human-readable order number to show to the driver This will be the order number displayed on the Grubhub Driver App. This is not guaranteed to be unique forever and is thus not used as a true identifier from an API perspective. is_test: type: boolean description: If true, this is a test order and should not actually be prepared status: type: string description: 'The status of an order as it passes through the Grubhub fulfillment flow.

ANTICIPATED: denotes a future order, which may be cancelled by diner.
RESTAURANT_CONFIRMABLE: pending confirmation of receipt by the restaurant. These are effectively new ASAP orders. ANTICIPATED orders will automatically become RESTAURANT_CONFIRMABLE at the promise time, less the restaurant''s configured pickup or delivery prep time.
DINER_CONFIRMABLE: a status held for future use.
CONFIRMED: denotes that the order was received by restaurant, even if the restaurant is unable to fulfill it.
REJECTED: an error status. For example, if an order is unable to be inserted to the POS, due to menu item mismatch, restaurant offline, etc., the status should be updated to REJECTED. This is not to be used when the order was successfully transmitted, but the restaurant is unable to fulfill it for operational reasons. In that scenario, a Change Request should be submitted to cancel the order.
CANCELLED: a cancellation request by the diner or restaurant has been processed by Grubhub Customer Care.
PICKUP_READY: indicates that the food is prepared and ready for pickup by the diner or a Grubhub delivery courier.
OUT_FOR_DELIVERY: the food is on the way to the diner.
FULFILLED: denotes that the food has been delivered to or picked up by the diner.
UNKNOWN: provided for error handling of strings unmappable to known enumeration values.' enum: - REJECTED - READY_FOR_PICKUP - ANTICIPATED - RESTAURANT_CONFIRMABLE - CONFIRMED - CANCELLED - DELIVERY_CONFIRMABLE - DINER_CONFIRMABLE - UNKNOWN - PICKUP_READY - OUT_FOR_DELIVERY - FULFILLED - POS_VALIDATING - POS_VALIDATED - POS_VALIDATION_REJECTED statusHistory: type: array description: A list of all status updates for this order items: $ref: '#/components/schemas/StatusUpdate' updated_at: $ref: '#/components/schemas/Instant' merchant_id: type: string description: This field can either be the Grubhub ID for the merchant, or if an external ID is provided, it represents the external ID of the merchant. fulfillment_info: $ref: '#/components/schemas/FulfillmentInfo' brand: type: string description: Indicates which brand the order originated from enum: - GRUBHUB - SEAMLESS - WONDER - DIRECT - GROUPON - YELP - EAT24 - TAPINGO - UNKNOWN time_placed: $ref: '#/components/schemas/Instant' confirmation_code: type: string description: A string indicating the code required when confirming the order via a phone call. This is not required for programmatic confirmations of the order and can most likely be ignored. when_for: type: string description: 'Target fulfillment time for Pickup and Self-Delivery orders. For Pickup orders: time the order should be fully prepared and ready for handoff. For Self-Delivery orders: time the order is expected to have been delivered to the diner. For Managed Delivery orders: do not use this field; instead use fulfillmentInfo.deliveryInfo.managedDeliveryEstimatedPickup (driver pickup ready time). Integrations should treat this value as authoritative and should not recalculate it.' format: date-time restaurant_timezone_id: $ref: '#/components/schemas/DateTimeZone_2' payments: $ref: '#/components/schemas/Payments' charges: $ref: '#/components/schemas/Charges' tax_withheld: type: boolean description: TRUE indicates that sales tax has been collected on behalf of the restaurant by GH catering: $ref: '#/components/schemas/Catering' order_filtering_applied: type: boolean writeOnly: true diner_uuid: type: array description: A Grubhub UUID identifying the diner items: type: string description: A Grubhub UUID identifying the diner format: uuid jit_enabled: type: boolean description: Indicates if the associated restaurant has enabled just-in-time preparation for this order, where orders will be prepared only when the driver comes within a specified distance. This does not indicate that the JIT event has fired, just that `just_in_time_fired` can be expected to indicate when the driver is close enough to prepare the order. just_in_time_fired: type: boolean description: TRUE indicates that the driver is within the geofence distance and the restaurant should package the order for pickup. diners: type: array description: List of diners on this order including much related information such as Line and LineOption routingTags. items: $ref: '#/components/schemas/Diner' order_type: type: string description: The type of order (STANDARD, CATERING, GROUP). enum: - STANDARD - CATERING - GROUP - UNKNOWN order_taking_system: type: string description: Place where the order was created. enum: - CARTING - ORDERS - ORDER_AHEAD - TESTORDERGENERATOR - DIRECT - EXTERNALORDERS - UNKNOWN handoff_options: uniqueItems: true type: array description: Instructions around the handoff pertaining to contact-free delivery items: type: string description: Instructions around the handoff pertaining to contact-free delivery merchant_data: $ref: '#/components/schemas/PosOrderMerchantData' restaurant_version_id: $ref: '#/components/schemas/RestaurantVersionId' affiliate: $ref: '#/components/schemas/Affiliate' fulfillment_scheduling: type: string description: Order fulfillment type enum: - ASAP - FUTURE - UNKNOWN cart_version_id: type: string description: The Cart Version Id associate with the PosOrder format: uuid transmission_id: type: string description: The Transmission Id associated with the PosOrder. format: uuid metadata: type: object additionalProperties: type: string description: The metadata associated to a specific PosOrder. description: The metadata associated to a specific PosOrder. external_ordering_configs: type: object additionalProperties: type: string description: External Ordering Configurations specific to the Partner. description: External Ordering Configurations specific to the Partner. gh_plus: type: boolean description: Is this a GH Plus order. gh_plus_diner: type: boolean description: Is the diner a GH Plus member. external_order_id: type: string chain_id: type: string format: uuid order_merchant_id: type: string description: Used within grouped orders to identify a portion of an order associated with a single merchant. Grouped orders can have menu items from multiple merchants associated with a single order. format: uuid description: The order model is the basis for all Grubhub orders. This contains all necessary information for fulfilling and processing orders. LineOption: type: object properties: label: type: string description: DEPRECATED. A label for this line item option. price: type: integer description: The price of this item in US Cents. format: int32 id: type: string description: A Grubhub id (legacy_id) for this option. uuid: type: string description: Unique line option id for this order instance. format: uuid name: type: string description: The name of this option. line_sub_options: type: array description: Sub-options applied to this option. items: $ref: '#/components/schemas/LineSubOption' external_id: type: string description: The external ID that was stored in Grubhub for this option. metadata: type: string description: Metadata associated with the line option. quantity: type: integer description: The number of this line options to include. format: int32 routing_tags: uniqueItems: true type: array description: Used to route where a line option is printed and/or displayed. items: type: string description: Used to route where a line option is printed and/or displayed. default_context: $ref: '#/components/schemas/DefaultContext' description: Options applied to a Line Item PosOrderMerchantData: type: object properties: order_facet_data: type: object additionalProperties: $ref: '#/components/schemas/OrderFacetData' restaurant_tags: uniqueItems: true type: array items: type: string fulfillment_tags: uniqueItems: true type: array items: type: string chain_name: type: string description: Merchant specific data including tags, chain name, and lead time. Promotion: type: object properties: amount: type: integer description: Amount of the payment type. format: int32 payment_source: type: string description: Source of the payment (DINER, MERCHANT, GRUBHUB, OTHER). enum: - DINER - MERCHANT - GRUBHUB - OTHER - UNKNOWN tax_application: type: string description: How this order was taxed (PRE_TAX, POST_TAX, UNKNOWN). enum: - PRE_TAX - POST_TAX - UNKNOWN description: Information relating to any promotion applied to an order OrderPickupVerification: required: - verification_code type: object properties: verification_code: type: string description: The code to be used at pickup verification step to validate that the driver is picking up the correct order. Drivers would be required to input/scan the correct verification code in order to complete the pickup via Driver App capture_method: type: string description: The verification method required for the merchant-to-driver handoff during order pickup default: MANUAL_ENTRY enum: - QR_SCAN - MANUAL_ENTRY description: Payload to for pickup verification instructions PickupInfo: type: object properties: name: type: string description: The name of the person coming to pickup the order contact_info: $ref: '#/components/schemas/ContactInfo' instructions: type: string description: Special instructions for pickup estimated_pickup_time: $ref: '#/components/schemas/Instant' is_green_indicated: type: boolean description: if set to true, the merchant should not include napkins, utensils and other items that would just become waste as the diner has access to their own dishes and utensils description: Information about the pickup order Taxes: type: object properties: total: type: integer description: Deprecated. Use "merchantTotal" instead format: int32 deprecated: true sales: type: integer description: Deprecated. Use "merchantSalesTotal" instead format: int32 deprecated: true delivery: type: integer description: Tax portion attributed to delivery fees format: int32 restaurant: type: integer description: Deprecated. Use merchantTotal instead format: int32 deprecated: true merchant_sales_total: type: integer description: Total sales amount generated by the merchant transaction, inclusive of taxes. format: int64 diner_sales_total: type: integer description: Total sales amount generated from the diner transaction, inclusive of taxes. format: int64 merchant_total: type: integer description: Total amount earned by the merchant after deducting taxes from their sales. format: int64 diner_total: type: integer description: Total amount paid by the diner, including taxes. format: int64 tax_source: type: string description: Indicates if either the merchant, Vertex, or an unknown source provided the rates leading to tax calculation. enum: - UNKNOWN - MERCHANT - VERTEX tax_area_id: type: string description: The tax area id associated with this order. description: Taxes paid by the diner Fees: type: object properties: total: type: integer description: Total of all fees in US Cents format: int32 delivery: type: integer description: Delivery charges in US Cents format: int32 description: Base fees paid by the diner for the line items and delivery charges before taxes and tip LineOptionSubstitution: type: object properties: name: type: string description: Name of the replacement option option_id: type: string description: ID of the replacement option price: type: integer description: Price for replacement option format: int32 delta: type: integer description: The absolute value of the difference in cents requested to change the total by format: int32 quantity: type: integer description: Quantity of replacement option format: int32 line_option_substitution_type: $ref: '#/components/schemas/LineSubstitutionType' sub_options: type: array description: Options for the replacement items: $ref: '#/components/schemas/LineOptionSubstitution' description: Options for the replacement Charges: type: object properties: fees: $ref: '#/components/schemas/Fees' taxes: $ref: '#/components/schemas/Taxes' exempted_taxes: $ref: '#/components/schemas/Taxes' tip: $ref: '#/components/schemas/Tip' diner_grand_total: type: integer description: Deprecated. Use "merchant_total" instead. format: int32 deprecated: true grand_total: type: integer description: Deprecated. Use "merchant_total" instead. format: int32 deprecated: true adjusted_grand_total: type: integer description: Deprecated. Use "merchantTotal" instead format: int32 deprecated: true line_groups: type: array description: The items ordered by the diner items: $ref: '#/components/schemas/LineGroup' coupons: type: array description: Coupons applied to the order items: $ref: '#/components/schemas/PosOrderCoupon' merchant_total: type: integer description: The total charges for the order in US Cents. Sum of subtotal, fees, taxes and tips. format: int64 diner_total: type: integer description: The total amount paid by the diner, including all charges and discounts. format: int64 merchant_subtotal: type: integer description: Charges for all line items in US Cents. Excludes taxes, tips and fees. format: int64 restaurant_subtotal: type: integer description: The subtotal amount for the restaurant, before any additional charges or discounts. format: int64 merchant_subtotal_before_coupons: type: integer description: The subtotal amount for the restaurant before applying any rewards or promotions. format: int64 diner_subtotal_before_coupons: type: integer description: The subtotal amount for the diner's order before applying any rewards or promotions. format: int64 diner_subtotal: type: integer description: The subtotal amount for the diner's order after applying rewards or promotions. format: int64 description: Contains information about the contents of the order including the financial totals and items ordered. SubstitutionAdjustment: required: - type type: object properties: type: type: string description: The type of substitution requested. enum: - TOTAL - LINE description: Represents the details for a line or total substitution adjustment discriminator: propertyName: type mapping: LINE: '#/components/schemas/LineSubstitutionAdjustment' TOTAL: '#/components/schemas/TotalSubstitutionAdjustment' oneOf: - $ref: '#/components/schemas/LineSubstitutionAdjustment' - $ref: '#/components/schemas/TotalSubstitutionAdjustment' RestaurantVersionId: type: object properties: catalog_version: $ref: '#/components/schemas/CatalogVersion' description: The Restaurant Version Id associated with the PosOrder. Affiliate: type: object properties: affiliate_id: type: string affiliate_type: type: string enum: - CLASSIC - WHITE_LABEL - UNKNOWN data: type: string description: GH Affiliate class containing the Affiliate Type and Affiliate Id. Address_4: type: object properties: address_line1: type: string description: First address line address_line2: type: string description: Optional second address line city: type: string description: The city state: type: string description: The state as a two letter abbreviation country: type: string description: The country as a two letter abbreviation zip_code: type: string description: The zip code. This is a string because it may in certain cases contain a +4 zip. latitude: type: number description: The geolocated addresses latitude longitude: type: number description: The geolocated addresses longitude cross_streets: type: string description: The closest major cross streets as entered by the diner company_name: type: string description: Name of the company for a corporate order description: Physical street address DefaultContext: type: object properties: removed: type: boolean description: True if boolean line or line sub option has been removed default_quantity: type: integer description: Present for line or line sub option with quantity if NormalizedModifierPrompt.modifier_prompt_quantity_settings format: int64 unit_price: type: integer description: Present for line or line sub option with default_quantity, quantity_free, and selected quantity is greater than quantity_free format: int64 description: Contextual information to compare a line or line sub option to its default state AddLineSubstitution: type: object description: Add Line Substitution allOf: - $ref: '#/components/schemas/LineSubstitutionType' OrderPickupInstructions: required: - updated_at type: object properties: order_pickup_instructions: type: string description: Free-form text field with a 250-character limit. Pickup instructions are only for delivery drivers when they pick up the order. Grubhub will not parse or interpret the content of this field beyond transmitting it. updated_at: type: string description: timestamp in UTC. format: date-time pickup_verification: $ref: '#/components/schemas/OrderPickupVerification' description: Payload to add dynamic pickup instructions OrderChangeRequestStatus: required: - change_request_id - order_id - request - status type: object properties: order_id: type: string description: Order Id for which the change request was submitted. format: uuid change_request_id: type: string description: Change Request Id that was created. format: uuid request: $ref: '#/components/schemas/OrderChangeRequest' status: type: string description: Current status of the change request ticket_id: type: integer description: Ticket ID of the change request format: int64 requested_action: type: string description: Requested action description: Status of a submitted order change request. SubstitutionRequest: required: - substitution_adjustment type: object properties: substitution_adjustment: $ref: '#/components/schemas/SubstitutionAdjustment' reason: type: string description: Reason for the request reason_code: type: string description: reasonCode description: Substitution Request Reward: type: object properties: amount: type: integer description: Amount of the payment type. format: int32 payment_source: type: string description: Source of the payment (DINER, MERCHANT, GRUBHUB, OTHER). enum: - DINER - MERCHANT - GRUBHUB - OTHER - UNKNOWN tax_application: type: string description: How this order was taxed (PRE_TAX, POST_TAX, UNKNOWN). enum: - PRE_TAX - POST_TAX - UNKNOWN description: Information relating to any rewards applied to an order ContactInfo: type: object properties: phone: type: string description: Phone number of the diner. This number can only be used for the fulfillment of the order and may not be stored and used for any sort of marketing, research or other contacts not directly related to the delivery or pickup of this specific order. name: type: string description: Name of the diner email: type: string description: E-mail address of the diner description: Basic diner contact information Payment: type: object properties: payment_type: type: string description: The payment type. Note all non-CASH payment types should be treated as pre-paid to a Grubhub tender or house account in the POS. enum: - CREDIT_CARD - PROMO_CODE - UNIFIED_REWARD - REWARD - GRUBCASH - SUBSCRIPTION - GIFT_CARD - CREDIT_CARD - APPLE_PAY - PAYPAL_EXPRESS - CORPORATE_LINE_OF_CREDIT - ANDROID_PAY - VENMO_PAY - CASH - CAMPUS_CARD - AMEX_EXPRESS - AMAZON_PAY - THIRDPARTY_CREDIT - THIRDPARTY_GIFT_CARD - THIRDPARTY_PROMO - CASH_APP amount: type: integer description: The payment amount in US Cents format: int32 payment_source: type: string description: The source of payment Possible values are `DINER`, `MERCHANT`, `GRUBHUB`, `OTHER`, or `UNKNOWN enum: - DINER - MERCHANT - GRUBHUB - OTHER - UNKNOWN tax_application: type: string description: Whether this payment is applied `POST_TAX`, `PRE_TAX`, or that the tax applied to this payment is`UNKNOWN`. Most payment types will be applied `POST_TAX`; however, loyalty rewards are applied by the merchant and therefore lower the taxable amount of the order. These payments from the merchant will generally be listed as `PRE_TAX'. enum: - PRE_TAX - POST_TAX - UNKNOWN promotion_title: type: string description: The name of the applied promotion. external_promotion_id: type: string description: The external ID that the partner uses to reference the applied promotion description: A single payment source example: '{ "payment_type": "UNIFIED_REWARD", "amount": 1000, "payment_source": "MERCHANT", "tax_application": "PRE_TAX" "promotion_title": "$5 off $25 or more" "external_promotion_id": "12345" }' LeadTimeSettingsTier: required: - additional_prep_time - threshold - threshold_type type: object properties: threshold_type: type: string enum: - ORDER_AMOUNT_CENTS - UNKNOWN threshold: type: integer format: int32 additional_prep_time: type: integer format: int32 LineGroup: required: - lines type: object properties: label: type: string description: A label for the group of line items. This will be used in the future for the name of a diner on a group order. lines: type: array description: The lines items for this portion of the order. items: $ref: '#/components/schemas/Line' description: A group of line items. Currently, the entire order is within one line group; as group ordering features are rolled out, orders will include multiple line groups. StatusUpdate: type: object properties: status: type: string description: 'The status of an order as it passes through the Grubhub fulfillment flow.

ANTICIPATED: denotes a future order, which may be cancelled by diner.
RESTAURANT_CONFIRMABLE: pending confirmation of receipt by the restaurant. These are effectively new ASAP orders. ANTICIPATED orders will automatically become RESTAURANT_CONFIRMABLE at the promise time, less the restaurant''s configured pickup or delivery prep time.
DINER_CONFIRMABLE: a status held for future use.
CONFIRMED: denotes that the order was received by restaurant, even if the restaurant is unable to fulfill it.
REJECTED: an error status. For example, if an order is unable to be inserted to the POS, due to menu item mismatch, restaurant offline, etc., the status should be updated to REJECTED. This is not to be used when the order was successfully transmitted, but the restaurant is unable to fulfill it for operational reasons. In that scenario, a Change Request should be submitted to cancel the order.
CANCELLED: a cancellation request by the diner or restaurant has been processed by Grubhub Customer Care.
PICKUP_READY: indicates that the food is prepared and ready for pickup by the diner or a Grubhub delivery courier.
OUT_FOR_DELIVERY: the food is on the way to the diner.
FULFILLED: denotes that the food has been delivered to or picked up by the diner.
UNKNOWN: provided for error handling of strings unmappable to known enumeration values.' enum: - REJECTED - READY_FOR_PICKUP - ANTICIPATED - RESTAURANT_CONFIRMABLE - CONFIRMED - CANCELLED - DELIVERY_CONFIRMABLE - DINER_CONFIRMABLE - UNKNOWN - PICKUP_READY - OUT_FOR_DELIVERY - FULFILLED - POS_VALIDATING - POS_VALIDATED - POS_VALIDATION_REJECTED timestamp: $ref: '#/components/schemas/Instant' update_source: type: string description: The source of the update. enum: - DINER - RESTAURANT - GRUBHUB - GRUBHUB_ADMIN - GRUBHUB_CARE - GRUBHUB_CORE - GRUBHUB_DAPI - GRUBHUB_ORDERS_REAPER - CONFIRMATION_EMAIL_SERVICE - FAX_RING - MERCHANT_ORDERS - CONFIRMATION_AUTOMATION - POS_MICROS - POS_GENERIC - POS_ALOHA - POS_XENIAL - POS_POSITOUCH - TX - TXS - GRUBHUB_ORDERS_ANTICIPATED_REAPER - GRUBHUB_ORDERS_DAPI_SUPERVISOR - GRUBHUB_ORDERS_AUTOCONFIRM_SUPERVISOR - GRUBHUB_ORDERS_AUTOBUMP - GRUBHUB_ORDERS_NOTIFICATION_SUPERVISOR - GRUBHUB_ORDERS_FULFILLMENT_SUPERVISOR - GRUBHUB_ORDERS_TRANSMISSION_SUPERVISOR - UNKNOWN reason: type: string description: An optional reason for the update. segment_index: type: integer description: A number denoting the order of the status. Higher numbers correspond to more recent order statuses format: int32 description: A status update reflects each successive change in the status of an order. PosTaxTotal: type: object properties: tax: type: integer description: The value of the tax. Depending on the type, this is either the updated tax amount in cents or the amount, in cents, that the Grubhub-calculated tax is off by. format: int32 type: type: string description: Type of tax. Whether to set the tax using an ABSOLUTE value - the tax will be set to the amount specified - or RELATIVE - the tax will be adjusted by the tax value. enum: - ABSOLUTE - RELATIVE - ABSOLUTE - RELATIVE 'null': type: boolean description: Corrected tax for an order. LineSubstitutionAdjustment: required: - line_substitution_type - line_uuid - menu_item_id - merchant_id - name - quantity - type type: object allOf: - $ref: '#/components/schemas/SubstitutionAdjustment' - type: object properties: name: type: string description: Name of the line item menu_item_id: type: string description: Menu item ID of the line item line_uuid: type: string description: UUID of the line to substitute format: uuid special_instructions: type: string description: Special instructions for the substitution price: type: integer description: Price of the substitution item format: int32 delta: type: integer description: The absolute value of the difference in cents requested to change the total by format: int32 quantity: type: integer description: Quantity of items for the replacement format: int32 weight: type: number description: Weight of the substitution item format: float measurement_unit: type: string description: Measurement unit of the substitution item line_substitution_type: $ref: '#/components/schemas/LineSubstitutionType' options: type: array description: The options for this substitution items: $ref: '#/components/schemas/LineOptionSubstitution' merchant_id: type: string description: Merchant ID of the order packaging_options: uniqueItems: true type: array description: Options for packaging items: type: string description: Options for packaging enum: - INDIVIDUALLY_PACKAGED - TRAY - PLATTER enum: - INDIVIDUALLY_PACKAGED - TRAY - PLATTER replacements: type: array description: Replacement items items: $ref: '#/components/schemas/LineSubstitutionReplacement' LineSubstitutionReplacement: type: object properties: replacement_id: type: string description: ID for replacement item replacement_name: type: string description: Name for replacement item replacement_price: type: integer description: Price for replacement item format: int32 replacement_quantity: type: integer description: Quantity of replacement item format: int32 replacement_weight: type: number description: Weight of the replacement item format: float replacement_measurement_unit: type: string description: Measurement unit for the replacement item options: type: array description: Options for the replacement items: $ref: '#/components/schemas/LineOptionSubstitution' merchant_id: type: string description: ID of the merchant that this item belongs to packaging_options: uniqueItems: true type: array description: Options for packaging items: type: string description: Options for packaging enum: - INDIVIDUALLY_PACKAGED - TRAY - PLATTER enum: - INDIVIDUALLY_PACKAGED - TRAY - PLATTER replacement_gtin: type: string description: GTIN ID of the replacement item description: Replacement items ReplaceLineSubstitution: type: object description: Replace Line Substitution allOf: - $ref: '#/components/schemas/LineSubstitutionType' DateTimeZone_2: type: object properties: id: type: string fixed: type: boolean description: The timezone of the restaurant SubItemLineSubstitution: type: object description: Sub Item Line Substitution allOf: - $ref: '#/components/schemas/LineSubstitutionType' LineSubOption: type: object properties: id: type: string description: The Grubhub ID of the sub option. name: type: string description: The name of the sub option, which will be shown to diners. price: type: integer description: Deprecated. Use "merchant_price" instead. format: int32 deprecated: true merchant_price: type: integer description: The price of this item in US Cents. format: int64 diner_price: type: integer description: Cost to diner, in cents. format: int64 choice_category_id: type: string description: The category Id the choice belongs to. quantity: type: integer description: The amount of this option to add to the previous option. This can indicate combos (single menu items with multiple selectable items), options with variable amounts, or options that can be selected multiple times. format: int32 tags: type: array description: Grubhub tag IDs that apply to this line item. items: $ref: '#/components/schemas/LineTag' line_sub_options: type: array description: Further sub options that apply to this sub option. These can be nested up to ten levels deep. items: $ref: '#/components/schemas/LineSubOption' external_id: type: string description: The external ID that was stored in Grubhub for this menu suboption. metadata: type: string description: Metadata associated with the line option. routing_tags: uniqueItems: true type: array description: Used to route where a line option is printed and/or displayed. items: type: string description: Used to route where a line option is printed and/or displayed. default_context: $ref: '#/components/schemas/DefaultContext' description: Sub Options that are applied to an Option or other Sub Option. These can be nested up to ten levels deep. Tip: type: object properties: amount: type: integer description: Tip amount format: int32 type: type: string description: Type of Tip. CASH or INCLUDE_IN_BILL enum: - CASH - INCLUDE_IN_BILL - UNKNOWN description: Tip for the order ThresholdSettings: type: object properties: threshold: type: integer format: int32 threshold_type: type: string enum: - ORDER_AMOUNT_CENTS - UNKNOWN OrderChangeRequest: required: - change_action - requestor_email - requestor_first_name - requestor_last_name - restaurant_agent_name type: object properties: amount: type: integer description: Price change requested on the order in US cents. format: int32 restaurant_agent_name: type: string description: Name of the agent who is requesting the change. Should be the logged-in user at the POS. Displayed as a comment on the ticket. requestor_email: type: string description: Email address of the contact to be notified for ticket updates. requestor_first_name: type: string description: First name of the merchant contact to be notified for ticket updates. requestor_last_name: type: string description: Last name of the merchant contact to be notified for ticket updates. reason: type: string description: A description of the reason for the change. reason_code: type: string description: Reason Code for the change. notes: type: string description: Additional notes. substitution_requests: type: array description: Substitution Request List items: $ref: '#/components/schemas/SubstitutionRequest' change_action: type: string description: The action to take. enum: - adjust.action - cancel.action - substitution.action description: Payload required to change an order state FulfillmentInfo: type: object properties: delivery_info: $ref: '#/components/schemas/DeliveryInfo' pickup_info: $ref: '#/components/schemas/PickupInfo' description: Information about how to fulfill the order. If delivery info is provided, this is a delivery order, otherwise this is a pickup order. Exactly one property will be set on this object as delivery and pickup are mutually exclusive and required for fulfillment. Diner: type: object properties: status: type: string enum: - ACTIVE - CANCELLED - ADJUSTED - UNKNOWN diner_info: $ref: '#/components/schemas/ContactInfo' charges: $ref: '#/components/schemas/Charges' payments: $ref: '#/components/schemas/Payments' order_diner_number: type: string cart_uuid: type: string format: uuid participation: type: string enum: - HOST - INVITEE - UNKNOWN description: List of diners on this order including much related information such as Line and LineOption routingTags. Instant: type: object properties: chronology: $ref: '#/components/schemas/Chronology' millis: type: integer format: int64 zone: $ref: '#/components/schemas/DateTimeZone_2' after_now: type: boolean before_now: type: boolean equal_now: type: boolean description: The time that the diner placed the order LineSubstitutionType: required: - type type: object properties: type: type: string description: 'The type of substitution: ADDED, REMOVED, QUANTITY_CHANGED, QUANTITY_WEIGHT_CHANGED, SUBITEMS_CHANGED, REPLACED' discriminator: propertyName: type mapping: ADDED: '#/components/schemas/AddLineSubstitution' REMOVED: '#/components/schemas/RemoveLineSubstitution' QUANTITY_CHANGED: '#/components/schemas/QuantityLineSubstitution' QUANTITY_WEIGHT_CHANGED: '#/components/schemas/QuantityAndWeightLineSubstitution' SUBITEMS_CHANGED: '#/components/schemas/SubItemLineSubstitution' REPLACED: '#/components/schemas/ReplaceLineSubstitution' oneOf: - $ref: '#/components/schemas/AddLineSubstitution' - $ref: '#/components/schemas/RemoveLineSubstitution' - $ref: '#/components/schemas/QuantityLineSubstitution' - $ref: '#/components/schemas/QuantityAndWeightLineSubstitution' - $ref: '#/components/schemas/SubItemLineSubstitution' - $ref: '#/components/schemas/ReplaceLineSubstitution' TotalSubstitutionAdjustment: required: - type type: object allOf: - $ref: '#/components/schemas/SubstitutionAdjustment' - type: object properties: delta: type: integer description: The absolute value of the difference in cents requested to change the total by format: int32 total_adjustment_type: type: string description: The type of adjustment enum: - ADJUST_UP, ADJUST_DOWN DeliveryInfo: type: object properties: id: type: string description: An id for this delivery address: $ref: '#/components/schemas/Address_4' is_managed_delivery: type: boolean description: This delivery will be provided by Grubhub and not by the restaurant estimated_delivery_time: $ref: '#/components/schemas/Instant' is_green_indicated: type: boolean description: If set to true, the restaurant should not include napkins, utensils and other items that would just become waste as the diner has access to their own dishes and utensils instruction: type: string description: Special instructions for delivery contact_info: $ref: '#/components/schemas/ContactInfo' managed-delivery-delivered: $ref: '#/components/schemas/Instant' managed-delivery-estimated_pickup: $ref: '#/components/schemas/Instant' order_delivery_type: type: string description: This indicates whether food is delivered by Grubhub or the restaurant. enum: - SELF - GRUBHUB - SUPPLEMENTAL_DELIVERY_AS_GHD - SUPPLEMENTAL_DELIVERY_WITH_GHD_AS_PICKUP - UNKNOWN managed_delivery_delivered: $ref: '#/components/schemas/Instant' managed_delivery_estimated_pickup: $ref: '#/components/schemas/Instant' description: Information on how to deliver the order to the diner StatusUpdateRequestPayload: required: - message - reason_code - status type: object properties: status: type: string description: 'The status of an order as it passes through the Grubhub fulfillment flow.

ANTICIPATED: denotes a future order, which may be cancelled by diner.
RESTAURANT_CONFIRMABLE: pending confirmation of receipt by the restaurant. These are effectively new ASAP orders. ANTICIPATED orders will automatically become RESTAURANT_CONFIRMABLE at the promise time, less the restaurant''s configured pickup or delivery prep time.
DINER_CONFIRMABLE: a status held for future use.
CONFIRMED: denotes that the order was received by restaurant, even if the restaurant is unable to fulfill it.
REJECTED: an error status. For example, if an order is unable to be inserted to the POS, due to menu item mismatch, restaurant offline, etc., the status should be updated to REJECTED. This is not to be used when the order was successfully transmitted, but the restaurant is unable to fulfill it for operational reasons. In that scenario, a Change Request should be submitted to cancel the order.
CANCELLED: a cancellation request by the diner or restaurant has been processed by Grubhub Customer Care.
PICKUP_READY: indicates that the food is prepared and ready for pickup by the diner or a Grubhub delivery courier.
OUT_FOR_DELIVERY: the food is on the way to the diner.
FULFILLED: denotes that the food has been delivered to or picked up by the diner.
UNKNOWN: provided for error handling of strings unmappable to known enumeration values.' enum: - REJECTED - READY_FOR_PICKUP - ANTICIPATED - RESTAURANT_CONFIRMABLE - CONFIRMED - CANCELLED - DELIVERY_CONFIRMABLE - DINER_CONFIRMABLE - UNKNOWN - PICKUP_READY - OUT_FOR_DELIVERY - FULFILLED - POS_VALIDATING - POS_VALIDATED - POS_VALIDATION_REJECTED wait_time_in_minutes: type: integer description: 'Represent the remaining wait time in minutes.If this is a pickup order, it is the number of minutes before the food is ready for pickup. If this is a delivery order, it is the estimated number of minutes until delivery to the diner. If it is a Grubhub Managed Delivery order, it the estimated number of minutes until the food is ready for pickup by the Grubhub delivery driver. This value may be used by Grubhub as part of order processing workflows. Grubhub may also use its own timing considerations and internal systems based on real-time operational conditions. ' format: int64 message: type: string description: If updating status to REJECTED, descriptive text `IS REQUIRED` to providing more detail about the rejection reason. This information may be included in logging and customer care tickets. Helpful information would be, for example, the ID of the menu item not found, or details on the price mismatch. reason_code: type: string description: Reason about the status. enum: - RESTAURANT_OFFLINE - MENU_ITEM_NOT_FOUND - PRICE_MISMATCH - CONFIRMED_BUT_NOT_SUBMITTED - SUBMITTED - OTHER tax_total: $ref: '#/components/schemas/PosTaxTotal' sub_total: type: integer description: This is the updated subtotal amount in cents. format: int32 expected_ready_at: type: string description: 'Expected ready time. This value may be used by Grubhub as part of order processing workflows. Grubhub may also use its own timing considerations and internal systems based on real-time operational conditions. ' soonest_available_at: type: string description: 'Soonest availability time. This value may be used by Grubhub as part of order processing workflows. Grubhub may also use its own timing considerations and internal systems based on real-time operational conditions. ' external_order_id: type: string description: External order id. Note that this field is for reporting only. Orders can only be polled for or updated by using the Grubhub Order UUID pickup_verification: $ref: '#/components/schemas/OrderPickupVerification' description: Payload to request a status change JitTestOrder: type: object properties: order_id: type: string description: The UUID of the order for which you want to create a test JIT order event. This can be a a real or fake order ID. If it's a real order, then it will pull use that order data to transmit the JIT event. Otherwise dummy data will be used. format: uuid order_merchant_id: type: string description: Order merchant id. format: uuid order_number: type: string description: Order number. order_status: type: string description: 'The status of an order as it passes through the Grubhub fulfillment flow.

ANTICIPATED: denotes a future order, which may be cancelled by diner.
RESTAURANT_CONFIRMABLE: pending confirmation of receipt by the restaurant. These are effectively new ASAP orders. ANTICIPATED orders will automatically become RESTAURANT_CONFIRMABLE at the promise time, less the restaurant''s configured pickup or delivery prep time.
DINER_CONFIRMABLE: a status held for future use.
CONFIRMED: denotes that the order was received by restaurant, even if the restaurant is unable to fulfill it.
REJECTED: an error status. For example, if an order is unable to be inserted to the POS, due to menu item mismatch, restaurant offline, etc., the status should be updated to REJECTED. This is not to be used when the order was successfully transmitted, but the restaurant is unable to fulfill it for operational reasons. In that scenario, a Change Request should be submitted to cancel the order.
CANCELLED: a cancellation request by the diner or restaurant has been processed by Grubhub Customer Care.
PICKUP_READY: indicates that the food is prepared and ready for pickup by the diner or a Grubhub delivery courier.
OUT_FOR_DELIVERY: the food is on the way to the diner.
FULFILLED: denotes that the food has been delivered to or picked up by the diner.
UNKNOWN: provided for error handling of strings unmappable to known enumeration values.' enum: - REJECTED - READY_FOR_PICKUP - ANTICIPATED - RESTAURANT_CONFIRMABLE - CONFIRMED - CANCELLED - DELIVERY_CONFIRMABLE - DINER_CONFIRMABLE - UNKNOWN - PICKUP_READY - OUT_FOR_DELIVERY - FULFILLED - POS_VALIDATING - POS_VALIDATED - POS_VALIDATION_REJECTED description: Jit test Order DeliveryTestRequest: type: object properties: order_id: type: string description: The UUID of the order for which you want to create a test delivery event. This must be a real order, as the test will pull diner and order information from that order. format: uuid status: type: string description: Delivery Status description: Request body for creating delivery test. PosTestOrderRequest: type: object properties: is_delivery: type: boolean description: Whether the test order should be for delivery (as opposed to pickup). Default is false. Note that regardless of this property, for Grubhub Managed Delivery restaurants, there will be no Delivery object created. is_catering: type: boolean description: Whether the test order should be for catering. Default is false. is_validation: type: boolean description: isValidation. description: Request body for creating a transmission test. x-refined-from: - 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