openapi: 3.0.1
info:
title: Public API
description: "# Overview\n\nThe API endpoints are developed around [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) principles secure via the OAuth2.0 protocol.\n\nBeyond the entry points, the API also provides a line of communication into your system via [webhooks](https://en.wikipedia.org/wiki/Webhook).\n\nFor testing purposes, we offer a staging environment. Also, more detailed information about the business rules and workflows can be found on the [**Documentation Section**](/docs/)\n\n## Versioning\nEach API is versioned individually, but we follow these rules:\n- Non breaking changes (eg: adding new fields) are added in the current version without previous communication\n- Breaking changes (fields removal, semantic changed or schema update) have the version incremented\n- Users will be notified about new versions and will be given time to migrate (the time will be set on a case by case basis)\n- Once users migrate to the new version, we will deprecate the old ones\n- Once there is a new version for an API, we won't accept new integrations targeting old versions\n\n## API General Definitions\nThe APIs use resource-oriented URLs communicating, primarily, via JSON and leveraging the HTTP headers, [response status codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status), and verbs.\n\nTo exemplify how the API is to be consumed, consider a fake GET resource endpoint invocation below:\n\n```\ncurl --request GET 'https://{{public-api-url}}/v1/resource/123' \\\n--header 'Authorization: Bearer 34fdabeeafds=' --header 'X-Store-Id: 321'\n```\n\n| Header | Description |\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|`Authorization` | Standard HTTP header is used to associate the request with the originating invoker. The content of this header is a `Bearer` token generated from you client_secret, defined in the [API Auth](#/section/Guides/API-Auth) guide.|\n|`X-Store-Id` | The ID of the store in your system this call acts on behalf of. |\n\n_All resource endpoints expect the `Authorization` header, the remaining headers are explicitly stated in the individual endpoint documentation section._\n\nWith these headers, the system will:\n - Validate the client token, making sure the call is originating from a trusted source.\n - Validate that the Application has the permission to access the `v1/resource/{id}` resource via the Application's pre-configured scopes.\n - Translate your X-Store-Id to our internal store ID (e.g. `AAA`).\n - Validate and retrieve resource `AAA`, that is associated to your Application via store id `321`.\n\nPOST/PUT methods will look similar to the GET calls, but they'll take in a body in the HTTP request (default to the application/json content-type).\n\n```\ncurl --location --request POST 'https://{{public-api-url}}/v1/resource' \\\n--header 'Authorization: Bearer 34fdabeeafds=' --header 'X-Store-Id: 321'\n--data '{\"foo\": \"bar\"}'\n```\n\n## API Authentication/Authorization\n\n\n\n## Webhook\n\nThe Public API is able to send notifications to your system via HTTP POST requests.\n\nEvery webhook is signed using HMAC-SHA256 that is present in the header `X-HMAC-SHA256`, and you can also authenticate the requests using Basic Auth, Bearer Token or HMAC-SHA1 (legacy). Please, refer to [**Webhook Authentication Guide**](/docs/guides-webhook-authentication/) for more details.\n\n_Please work with your Account Representative to setup your Application's Webhook configurations._\n\n```\nExample Base-URL = https://{{your-server-url}}/webhook\n```\n\n### Notification Schema\n\n| **Name** | **Type** | **Description** |\n| ------------------------| ---------| -------------------------------------------------------------------- |\n| eventId | string | Unique id of the
event. |\n| eventTime | string | The time the event occurred. |\n| eventType | string | The type of event (e.g. create_order). |\n| metadata.storeId | string | Id of the store for which the event is being published. |\n| metadata.applicationId | string | Id of the application for which the event is being published. |\n| metadata.resourceId | string | The external identifier of the resource that this event refers to. |\n| metadata.resourceHref | string | The endpoint to fetch the details of the resource. |\n| metadata.payload | object | The event object which will be detailed in each Webhook description. |\n\n### Notification Request Example\n\n```\ncurl --location --request POST 'https://{{your-server-url}}/webhook' \\\n--header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36' \\\n--header 'Authorization: MAC ' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"eventId\": \"123456\",\n \"eventTime\": \"2020-10-10T20:06:02:123Z\",\n \"eventType\": \"orders.new_order\",\n \"metadata\": {\n \"storeId\": \"755fd19a-7562-487a-b615-171a9f89d669\",\n \"applicationId\": \"e22f94b3-967c-4e26-bf39-9e364066b68b\",\n \"resourceHref\": \"https://{{public-api-url}}/v1/orders/bf9f1d81-f213-496e-a026-91b6af44996c\",\n \"resourceId\": \"bf9f1d81-f213-496e-a026-91b6af44996c\",\n \"payload\": {}\n }\n}\n```\n\n### Expected Response\n\nThe partner application should return an HTTP 200 response code with an empty response body to acknowledge receipt of the webhook event.\n## Rate Limiting\nPlease, refer to [**Rate Limiting Guide**](/docs/guides-rate-limiting/) for more details.\n\n## Error codes\nThe APIs use standard HTTP status codes to indicate the success or failure of a request. Error codes are divided into two categories: 4XX codes for client-side errors and 5xx codes for server-side errors.\n### 4XX Client-Side Errors\nClient-side errors are indicated by status codes in the 4xx range. These errors are typically the result of a problem with the request made by your application.\nIf a client-side error occurs, our API will return a response that includes an appropriate error message. This message will provide information about the cause of the error. The aim of these messages is to assist you in identifying and resolving the issue.\nFor example, if you submit a request with missing or invalid parameters, you might receive a 400 Bad Request error with a message indicating which parameters were missing or incorrect.\n### 5XX Server-Side Errors\nServer-side errors are represented by status codes in the 5xx range. These errors suggest a problem with our server, not with your application's request.\nServer-side errors are typically transient, meaning they are temporary. If a server-side error occurs, we recommend that the client retries the same request with the exact same parameters.\nFor example, if you get a 500 Internal Server Error, it's possible that our server is suffering a temporary problem. In such cases, retrying the request after a short delay is often successful.\nIf you continually receive server-side errors, reach out to our support team for further assistance."
version: v1
license:
name: Proprietary
contact:
name: Kin Lane
email: kin@apievangelist.com
x-generated-from: documentation
x-source-url: https://developer-guides.tryotter.com/api-reference/
x-last-validated: '2026-06-03'
servers:
- url: https://{public-api-url}/
description: Otter Public API base URL. The concrete host is provisioned per integration partner/account via your Otter account representative; substitute the value provided during onboarding.
variables:
public-api-url:
default: public-api-url
description: Account-specific Public API host provided by Otter during onboarding.
tags:
- name: Ping Endpoints
description: Endpoints to ping and test system authentication.
x-displayName: Ping
- name: Manager Order Endpoints
description: Endpoints for applications managing order related data and operations.
x-displayName: Orders Manager
- name: Orders Endpoints
description: Endpoints to manage orders for a store.
x-displayName: Orders
- name: Orders Webhooks
description: Webhooks from orders domains.
x-displayName: Orders Webhooks
- name: Manager Orders Webhooks
description: Webhooks from manager orders domain.
x-displayName: Orders Manager Webhooks
- name: Callback Endpoints
description: Endpoints for callback management.
x-displayName: Callback
- name: Reports Endpoints
description: Endpoints to reports generation operations
x-displayName: Reports
- name: Reports Webhooks
description: Webhooks from the reports generation operations
x-displayName: Reports Webhooks
- name: Reviews Endpoints
description: Endpoints for review operations
x-displayName: Reviews
- name: Manager Storefront Endpoints
description: Endpoints for applications managing storefront related data and operations.
x-displayName: Storefront Manager
- name: Storefront Endpoints
description: Endpoints to manage storefront state
x-displayName: Storefront
- name: Storefront Webhooks
description: Webhooks from storefront domain.
x-displayName: Storefront Webhooks
- name: Manager Menu Endpoints
description: Endpoints for applications managing menus related data and operations.
x-displayName: Menus Manager
- name: Menus Endpoints
description: Endpoints to manage menus.
x-displayName: Menus
- name: Menus Webhooks
description: Webhooks from menus domain.
x-displayName: Menus Webhooks
- name: Auth Endpoints
description: Endpoints to handle token management.
x-displayName: Auth
- name: Delivery Endpoints
description: Endpoints to manage delivery.
x-displayName: Delivery
- name: Delivery Webhooks
description: Webhooks from the delivery domain.
x-displayName: Delivery Webhooks
- name: Ping Webhooks
description: Webhooks to ping and test the system integration.
x-displayName: Ping Webhooks
- name: Storelinks Endpoints
description: Endpoints to pair accounts between platforms for onboarding and offboarding purposes.
x-displayName: Stores Endpoints
- name: Storelinks Webhooks
description: Webhooks to manage the store onboarding process.
x-displayName: Stores Webhooks
- name: Finance Endpoints
description: Endpoints to handle financial data.
x-displayName: Finance
- name: Utils Endpoints
description: Endpoints to provide access to integration utilities.
x-displayName: Integration Utilities
- name: Account Pairing Endpoints
description: Endpoints to manage store onboarding and status
x-displayName: Account Pairing
- name: Account Pairing Webhooks
description: Webhooks to manage store onboarding and status
x-displayName: Account Pairing Webhooks
- name: Inventory Endpoints
description: Endpoints to interact with product inventory.
x-displayName: Inventory
- name: Organization Endpoints
description: Endpoints to interact with with organizations/brands/stores and with integration connections.
x-displayName: Organization
- name: Manager Loyalty Endpoints
description: Endpoints to manage loyalty.
x-displayName: Loyalty Manager
- name: Direct Orders Endpoints
description: Endpoints to get orders directly.
x-displayName: Direct Orders
- name: Store Endpoints
description: Endpoints to get store information.
x-displayName: Store
x-webhooks:
orderCreate:
post:
tags:
- Manager Orders Webhooks
summary: Otter Order Creation Webhook
operationId: orderCreateWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/Order'
- example:
eventType: orders.new_order
examples:
OrderCreateWebhookRequestExample:
summary: Default orderCreateWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.new_order
metadata:
payload:
externalIdentifiers: {}
currencyCode: EUR
status: NEW_ORDER
items:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
customer: {}
customerNote: Please include extra napkins!
deliveryInfo: {}
orderTotal: {}
orderTotalV2: {}
customerPayments:
- {}
fulfillmentInfo: {}
promotionsDetails:
- {}
preparationTime: {}
responses:
'200':
$ref: '#/components/responses/200'
'202':
$ref: '#/components/responses/202'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
orderUpdate:
post:
tags:
- Manager Orders Webhooks
summary: Otter Order Update Webhook
operationId: orderUpdateWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/Order'
- example:
eventType: orders.update
examples:
OrderUpdateWebhookRequestExample:
summary: Default orderUpdateWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.update
metadata:
payload:
externalIdentifiers: {}
currencyCode: EUR
status: NEW_ORDER
items:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
customer: {}
customerNote: Please include extra napkins!
deliveryInfo: {}
orderTotal: {}
orderTotalV2: {}
customerPayments:
- {}
fulfillmentInfo: {}
promotionsDetails:
- {}
preparationTime: {}
responses:
'200':
$ref: '#/components/responses/200'
'202':
$ref: '#/components/responses/202'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
intentToCancelOrder:
post:
tags:
- Orders Webhooks
summary: Otter Intent to Cancel Order Webhook
operationId: intentToCancelOrderWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/IntentToCancelEvent'
- example:
eventType: orders.cancel_order
examples:
IntentToCancelOrderWebhookRequestExample:
summary: Default intentToCancelOrderWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.cancel_order
metadata:
payload:
externalIdentifiers: {}
cancellationReason: REASON_UNKNOWN
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
orderStatusUpdate:
post:
tags:
- Orders Webhooks
summary: Otter Order Status Update Webhook
operationId: orderStatusUpdateWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/OrderStatusHistory'
- example:
eventType: orders.order_status_update
examples:
OrderStatusUpdateWebhookRequestExample:
summary: Default orderStatusUpdateWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.order_status_update
metadata:
payload:
orderStatusHistory:
- {}
orderAcceptedInfo: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
posInjectionStateUpdate:
post:
tags:
- Orders Webhooks
summary: Otter Pos Injection State Update Webhook
operationId: posInjectionStateUpdateWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/PosInjectionStateUpdateEvent'
- example:
eventType: orders.pos_injection_state_update
examples:
PosInjectionStateUpdateWebhookRequestExample:
summary: Default posInjectionStateUpdateWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.pos_injection_state_update
metadata:
payload:
externalIdentifiers: {}
injectionState: UNKNOWN
injectionIssue: UNKNOWN_INJECTION_ISSUE
additionalData: &id028
ticketData: Some value for the TicketData
customField: customValue
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
orderConfirm:
post:
tags:
- Manager Orders Webhooks
summary: Otter Order Confirm Notification Webhook
operationId: orderConfirmWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/OrderConfirmEvent'
- example:
eventType: orders.confirm
examples:
OrderConfirmWebhookRequestExample:
summary: Default orderConfirmWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.confirm
metadata:
payload:
orderId: 69f60a06-c335-46d9-b5a1-97f1a211c514
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
orderReady:
post:
tags:
- Manager Orders Webhooks
summary: Otter Order Ready Status Notification Webhook
operationId: orderReady
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/OrderReadyEvent'
- example:
eventType: orders.order_ready
examples:
OrderReadyRequestExample:
summary: Default orderReady request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.order_ready
metadata:
payload:
orderId: 69f60a06-c335-46d9-b5a1-97f1a211c514
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
orderHandedOff:
post:
tags:
- Manager Orders Webhooks
summary: Otter Order Handed Off Status Notification Webhook
operationId: orderHandedOff
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/OrderHandedOffEvent'
- example:
eventType: orders.order_handed_off
examples:
OrderHandedOffRequestExample:
summary: Default orderHandedOff request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.order_handed_off
metadata:
payload:
orderId: 69f60a06-c335-46d9-b5a1-97f1a211c514
courierPhone: 415-234-3212
courierBodyTempFahrenheit: 36.6
isCourierWearingMask: true
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
orderFulfilled:
post:
tags:
- Manager Orders Webhooks
summary: Otter Order Fulfilled Status Notification Webhook
operationId: orderFulfilled
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/OrderFulfilledEvent'
- example:
eventType: orders.order_fulfilled
examples:
OrderFulfilledRequestExample:
summary: Default orderFulfilled request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: orders.order_fulfilled
metadata:
payload:
orderId: 69f60a06-c335-46d9-b5a1-97f1a211c514
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
menuPublish:
post:
tags:
- Menus Webhooks
summary: Otter Menu Publish Webhook
description: "Webhook to trigger a menu publish.\nIf successful, we expect a [**menu publish callback**](/api-reference/#operation/menuPublishCallback). If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead."
operationId: menuPublishWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/MenuPublishEvent'
- example:
eventType: menus.menu_publish
examples:
MenuPublishWebhookRequestExample:
summary: Default menuPublishWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: menus.menu_publish
metadata:
payload:
menuData: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
sendMenu:
post:
tags:
- Menus Webhooks
summary: Otter Send Menu Webhook
description: "Webhook to trigger a send menu.\nIf successful, we expect a [**menu send callback**](/api-reference/#operation/menuSendCallback). If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead."
operationId: sendMenuWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/NullEvent'
- example:
eventType: menus.send_menu
examples:
SendMenuWebhookRequestExample:
summary: Default sendMenuWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: menus.send_menu
metadata:
payload: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
updateMenuEntitiesAvailabilities:
post:
tags:
- Menus Webhooks
summary: Otter Update Menu Entities Availabilities Webhook
description: "Webhook to trigger an entities availabilities update.\nIf successful, we expect an [**update menu entities availabilities callback**](/api-reference/#operation/updateMenuEntitiesAvailabilitiesCallback). If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead."
operationId: updateMenuEntitiesAvailabilitiesWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/BulkUpdateItemStatus'
- example:
eventType: menus.update_menu_entities_availabilities
examples:
UpdateMenuEntitiesAvailabilitiesWebhookRequestExample:
summary: Default updateMenuEntitiesAvailabilitiesWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: menus.update_menu_entities_availabilities
metadata:
payload:
updates:
- {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
upsertMenuHours:
post:
tags:
- Menus Webhooks
summary: Otter Upsert Menu Hours Webhook
description: "Webhook to trigger a menu hours update.\nIf successful, we expect a [**menu upsert hours callback**](/api-reference/#operation/menuUpsertHours). If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead."
operationId: upsertMenuHoursWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/UpsertHoursEvent'
- example:
eventType: menus.upsert_hours
examples:
UpsertMenuHoursWebhookRequestExample:
summary: Default upsertMenuHoursWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: menus.upsert_hours
metadata:
payload:
menuHoursData: &id029
da0e4e94-5670-4175-897a-3b7dde45bed5:
timeZone: America/Los_Angeles
regularHours:
- days:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
timeRanges:
- start: 08:00
end: 22:00
specialHours:
- date: '2021-12-31'
timeRanges:
- start: 08:00
end: 22:00
type: CLOSED
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
pauseStore:
post:
tags:
- Storefront Webhooks
summary: Otter Pause Store Webhook
operationId: pauseStoreWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/NullEvent'
- example:
eventType: storefront.pause_store
examples:
PauseStoreWebhookRequestExample:
summary: Default pauseStoreWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: storefront.pause_store
metadata:
payload: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
unpauseStore:
post:
tags:
- Storefront Webhooks
summary: Otter Unpause Store Webhook
operationId: unpauseStoreWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/UnpauseStoreEvent'
- example:
eventType: storefront.unpause_store
examples:
UnpauseStoreWebhookRequestExample:
summary: Default unpauseStoreWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: storefront.unpause_store
metadata:
payload: 4109d2c9-8bc5-413c-af3e-1c92aa381e41
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
getStoreAvailability:
post:
tags:
- Storefront Webhooks
summary: Otter Get Store Availability Webhook
operationId: getStoreAvailabilityWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/NullEvent'
- example:
eventType: storefront.get_store_availability
examples:
GetStoreAvailabilityWebhookRequestExample:
summary: Default getStoreAvailabilityWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: storefront.get_store_availability
metadata:
payload: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
getStoreHoursConfiguration:
post:
tags:
- Storefront Webhooks
summary: Otter Get Store Hours Configuration Webhook
operationId: getStoreHoursConfigurationWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/NullEvent'
- example:
eventType: storefront.get_store_hours
examples:
GetStoreHoursConfigurationWebhookRequestExample:
summary: Default getStoreHoursConfigurationWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: storefront.get_store_hours
metadata:
payload: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
deliveryStatusUpdate:
post:
tags:
- Delivery Webhooks
summary: Otter Update Delivery Status Webhook
operationId: deliveryStatusUpdateWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/DeliveryStatusUpdateEvent'
- example:
eventType: delivery.delivery_status_update
examples:
DeliveryStatusUpdateWebhookRequestExample:
summary: Default deliveryStatusUpdateWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: delivery.delivery_status_update
metadata:
payload:
provider: doordash
courier: {}
estimatedDeliveryTime: '2007-12-03T10:15:30+01:00'
estimatedPickupTime: '2007-12-03T10:15:30+01:00'
status: REQUESTED
deliveryStatus: REQUESTED
currencyCode: EUR
baseFee: 1.0
extraFee: 1.0
totalFee: 1.0
distance: {}
updatedTime: '2007-12-03T10:15:30+01:00'
deliveryTrackingUrl: https://www.doordash.com/delivery/track/1234567890
dropoffInfo: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
requestDeliveryQuotes:
post:
tags:
- Delivery Webhooks
summary: Otter Request Delivery Quotes Webhook
operationId: requestDeliveryQuotesWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/RequestDeliveryQuoteEvent'
- example:
eventType: delivery.request_quote
examples:
RequestDeliveryQuotesWebhookRequestExample:
summary: Default requestDeliveryQuotesWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: delivery.request_quote
metadata:
payload:
deliveryReferenceId: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
provider: doordash
preferredPickupDuration: 0
pickupAddress: {}
dropoffAddress: {}
destinationAddress: {}
pickUpLocationId: d197bd64-a037-4b6e-aad7-06918e7e2d75
orderSubTotal: 15
currencyCode: KRW
containsAlcoholicItem: true
customerPayments:
- {}
orderExternalIdentifiers: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
acceptDelivery:
post:
tags:
- Delivery Webhooks
summary: Otter Accept Delivery Webhook
operationId: acceptDeliveryWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/AcceptDeliveryEvent'
- example:
eventType: delivery.accept
examples:
AcceptDeliveryWebhookRequestExample:
summary: Default acceptDeliveryWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: delivery.accept
metadata:
payload:
deliveryReferenceId: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
provider: doordash
preferredPickupTime: '2007-12-03T10:15:30+01:00'
pickupOrderId: 19dc56c8-4497-4392-a612-9f81beb5fe5f
pickupNote: Left side of the restaurant
pickupAddress: {}
dropoffNote: Please ring the doorbell
dropoffAddress: {}
customer: {}
customerPayments:
- {}
currencyCode: KRW
customerTip: {}
orderSubTotal: 15
pickUpLocationId: d197bd64-a037-4b6e-aad7-06918e7e2d75
containsAlcoholicItem: true
pickUpInstructions: string
store: {}
orderItems:
- {}
ofoDisplayId: 5989
ofoSlug: ifood
pickUpInfo: {}
orderExternalIdentifiers: {}
dropoffInstructions: {}
deliveryFee: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
cancelDelivery:
post:
tags:
- Delivery Webhooks
summary: Otter Cancel Delivery Webhook
operationId: cancelDeliveryWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/CancelDeliveryEvent'
- example:
eventType: delivery.cancel
examples:
CancelDeliveryWebhookRequestExample:
summary: Default cancelDeliveryWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: delivery.cancel
metadata:
payload:
deliveryReferenceId: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
updateDeliveryRequest:
post:
tags:
- Delivery Webhooks
summary: Otter Update Delivery Request Webhook
operationId: updateDeliveryRequestWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/UpdateDeliveryRequestEvent'
- example:
eventType: delivery.update_request
examples:
UpdateDeliveryRequestWebhookRequestExample:
summary: Default updateDeliveryRequestWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: delivery.update_request
metadata:
payload:
deliveryReferenceId: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
provider: doordash
currencyCode: USD
customerPayments:
- {}
customerTip: {}
pickUpInfo: {}
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
reportGenerated:
post:
tags:
- Reports Webhooks
summary: Otter Report Generated Webhook
operationId: reportGeneratedWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/ReportGeneratedEvent'
- example:
eventType: reports.report_generated
examples:
ReportGeneratedWebhookRequestExample:
summary: Default reportGeneratedWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: reports.report_generated
metadata:
payload:
reportUrl: https://example.com/
jobId: 38ab397f-b142-4b06-b70c-40c68a408bea
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
ping:
post:
tags:
- Ping Webhooks
summary: Otter Ping Webhook
description: Used to validate the integration without side effects
operationId: pingWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/PingEvent'
- example:
eventType: ping.ping
examples:
PingWebhookRequestExample:
summary: Default pingWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: ping.ping
metadata:
payload:
message: Hello World
responses:
2XX:
$ref: '#/components/responses/2XX'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
upsertStore:
post:
tags:
- Account Pairing Webhooks
summary: Otter Upsert Store
description: Sent when a store is created or updated in `Public API` internal systems.
If metadata contains a `Store ID`, it means a request to update an existent store, otherwise, it's a creation operation.
It provides the store and credentials data needed to validate the store and create a new `Store ID` in the partner application.
At this point, the store is in `onboarding state` waiting the partner application to finish the onboarding process by providing the validated `Store ID`.
operationId: upsertStorelinkWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/UpsertStorelinkEvent'
- example:
eventType: stores.upsert
examples:
UpsertStorelinkWebhookRequestExample:
summary: Default upsertStorelinkWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: stores.upsert
metadata:
payload:
credentialsSchemaVersion: '1.0'
credentials: &id030
- key: email
value: test@email.com
- key: password
value: test-pwd-1234
storeInfo: &id001
name: Store Public Name
address: Some Street, 1234
currencyCode: USD
timezone: America/Los_Angeles
internalStoreId: 51608e41-5d9e-477f-ae02-8c0c68036d5d
responses:
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'409':
description: The provided credentials already exists in another store.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
UpsertStorelinkWebhook409Example:
summary: Default upsertStorelinkWebhook 409 response
x-microcks-default: true
value:
message: The request body is invalid.
details:
- attribute: Order Currency Code
message: Order Currency Code must be exactly 3 characters
'422':
description: The provided credentials are not compatible with the provided schema version.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
UpsertStorelinkWebhook422Example:
summary: Default upsertStorelinkWebhook 422 response
x-microcks-default: true
value:
message: The request body is invalid.
details:
- attribute: Order Currency Code
message: Order Currency Code must be exactly 3 characters
2XX:
description: 'The provided credentials are compatible with the provided schema version, successfully saved in the partner application database and available for the validation process (establishing a connection with the service related to the Application ID, e.g.: UberEats).'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
removeStore:
post:
tags:
- Account Pairing Webhooks
summary: Otter Remove Store
description: Sent when a store is removed from our system. Contains information about the store for which the event was triggered.
operationId: removeStoreWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotification'
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/RemoveStorelinkEvent'
- example:
eventType: stores.remove
examples:
RemoveStoreWebhookRequestExample:
summary: Default removeStoreWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: stores.remove
metadata:
payload:
storeInfo: *id001
responses:
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
2XX:
description: The store credentials for the service related to the Application ID were successfully removed from the partner application database.
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
fetchCredentials:
post:
tags:
- Account Pairing Webhooks
summary: Otter Fetch Credentials (synchronously)
description: Synchronously returns the last version of the credentials schema needed to create and validate a store in the partner application. If the request contains the `Store ID`, it also returns the saved store credentials corresponding to the provided `Store ID`.
operationId: fetchCredentialsWebhook
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/EventNotificationBase'
- $ref: '#/components/schemas/OptionalStoreIdInMetadata'
- example:
eventType: stores.fetch_credentials
- type: object
properties:
metadata:
type: object
properties:
payload:
$ref: '#/components/schemas/FetchCredentialsEvent'
examples:
FetchCredentialsWebhookRequestExample:
summary: Default fetchCredentialsWebhook request
x-microcks-default: true
value:
eventId: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime: '2007-12-03T10:15:30+01:00'
eventType: stores.fetch_credentials
metadata:
payload:
credentials: &id031
- key: email
value: test@email.com
- key: password
value: test-pwd-1234
responses:
'200':
description: The credentials schema and, if the request contains the Store ID, the correspondent store credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/ViewCredentialsArray'
examples:
FetchCredentialsWebhook200Example:
summary: Default fetchCredentialsWebhook 200 response
x-microcks-default: true
value:
credentialsSchemaVersion: '1.0'
credentials: &id032
- key: email
label: Email
value: foodstore@email.com
- key: password
label: Password
value: test-pwd-1234
- key: language
label: Choose the language
inputType: SELECT
selectOptions:
- English
- Portuguese
- key: supported_sizes
label: Choose all supported sizes
inputType: SELECT
selectOptions:
- SMALL
- MEDIUM
- LARGE
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
paths:
/v1/orders:
post:
tags:
- Orders Endpoints
summary: Otter Create Order
description: "`RATE LIMIT: 32 per minute`\n"
operationId: createOrder
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
examples:
CreateOrderRequestExample:
summary: Default createOrder request
x-microcks-default: true
value:
externalIdentifiers:
id: 69f60a06-c335-46d9-b5a1-97f1a211c514
friendlyId: ABCDE
source: ubereats
sourceType: POINT_OF_SALE
sourceExternalIdentifiers: {}
currencyCode: EUR
status: NEW_ORDER
items:
- quantity: 1
skuPrice: 5.9
id: 33e0418f-3d56-4360-ba03-18fc5f8844a3
lineItemId: 2f91f9f3-2d7e-4898-ae81-00fe06ed7dbf
skuId: 867b8fdc-cf7b-4fc3-b7e0-4c7b68d8b1cc
name: Juicy Cheeseburger
note: Please cook to well done!
categoryId: 303de078-870d-4349-928b-946869d4d69b
internalCategoryId: 76a66bba-48fb-4bac-80ee-2616a5ca1ab9
categoryName: Burgers
internalCategoryName: Burgers
stationId: 5247b8a1-77de-4844-b024-cb59fcec59bd
price: 5.9
modifiers:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
customer:
name: Jane Doe
phone: +1-555-555-5555
phoneCode: 111 11 111
email: email@email.com
personalIdentifiers: {}
customerNote: Please include extra napkins!
deliveryInfo:
courier: {}
destination: {}
licensePlate: ABC 123
makeModel: Honda CR-V
lastKnownLocation: {}
dropoffInstructions: {}
note: Gate code 123
orderTotal:
subtotal: 11.97
claimedSubtotal: 1.0
discount: 1
tax: 1.1
tip: 2
deliveryFee: 5
total: 19.07
couponCode: VWXYZ98765
orderTotalV2:
customerTotal: {}
customerPayment: {}
payout: {}
customerPayments:
- value: 2
processingStatus: COLLECTABLE
paymentMethod: CASH
paymentAuthorizer: UNKNOWN_TYPE
cardInfo: {}
externalPaymentType: string
paymentRecords:
- {}
loyaltyInfo: {}
fulfillmentInfo:
pickupTime: '2007-12-03T10:15:30+01:00'
estimatedPickupTime: '2007-12-03T10:15:30+01:00'
deliveryTime: '2007-12-03T10:15:30+01:00'
fulfillmentMode: DELIVERY
schedulingType: ASAP
courierStatus: COURIER_ASSIGNED
tableIdentifier: R-45
promotionsDetails:
- externalId: store_123
name: 20% off, up to $5
value: 2
preparationTime:
estimatedPreparationTime: PT30M
required: true
responses:
'200':
description: The order was successfully created.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderReference'
examples:
CreateOrder200Example:
summary: Default createOrder 200 response
x-microcks-default: true
value:
externalIdentifiers:
id: 69f60a06-c335-46d9-b5a1-97f1a211c514
friendlyId: ABCDE
source: ubereats
sourceType: POINT_OF_SALE
sourceExternalIdentifiers: {}
storeId: ckdss-store-id
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- orders.create
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/orders/{orderId}:
put:
tags:
- Orders Endpoints
summary: Otter Update Order
description: "`RATE LIMIT: 32 per minute`\n"
operationId: updateOrder
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
examples:
UpdateOrderRequestExample:
summary: Default updateOrder request
x-microcks-default: true
value:
externalIdentifiers:
id: 69f60a06-c335-46d9-b5a1-97f1a211c514
friendlyId: ABCDE
source: ubereats
sourceType: POINT_OF_SALE
sourceExternalIdentifiers: {}
currencyCode: EUR
status: NEW_ORDER
items:
- quantity: 1
skuPrice: 5.9
id: 33e0418f-3d56-4360-ba03-18fc5f8844a3
lineItemId: 2f91f9f3-2d7e-4898-ae81-00fe06ed7dbf
skuId: 867b8fdc-cf7b-4fc3-b7e0-4c7b68d8b1cc
name: Juicy Cheeseburger
note: Please cook to well done!
categoryId: 303de078-870d-4349-928b-946869d4d69b
internalCategoryId: 76a66bba-48fb-4bac-80ee-2616a5ca1ab9
categoryName: Burgers
internalCategoryName: Burgers
stationId: 5247b8a1-77de-4844-b024-cb59fcec59bd
price: 5.9
modifiers:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
customer:
name: Jane Doe
phone: +1-555-555-5555
phoneCode: 111 11 111
email: email@email.com
personalIdentifiers: {}
customerNote: Please include extra napkins!
deliveryInfo:
courier: {}
destination: {}
licensePlate: ABC 123
makeModel: Honda CR-V
lastKnownLocation: {}
dropoffInstructions: {}
note: Gate code 123
orderTotal:
subtotal: 11.97
claimedSubtotal: 1.0
discount: 1
tax: 1.1
tip: 2
deliveryFee: 5
total: 19.07
couponCode: VWXYZ98765
orderTotalV2:
customerTotal: {}
customerPayment: {}
payout: {}
customerPayments:
- value: 2
processingStatus: COLLECTABLE
paymentMethod: CASH
paymentAuthorizer: UNKNOWN_TYPE
cardInfo: {}
externalPaymentType: string
paymentRecords:
- {}
loyaltyInfo: {}
fulfillmentInfo:
pickupTime: '2007-12-03T10:15:30+01:00'
estimatedPickupTime: '2007-12-03T10:15:30+01:00'
deliveryTime: '2007-12-03T10:15:30+01:00'
fulfillmentMode: DELIVERY
schedulingType: ASAP
courierStatus: COURIER_ASSIGNED
tableIdentifier: R-45
promotionsDetails:
- externalId: store_123
name: 20% off, up to $5
value: 2
preparationTime:
estimatedPreparationTime: PT30M
required: true
responses:
'200':
description: The order was successfully updated.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderReference'
examples:
UpdateOrder200Example:
summary: Default updateOrder 200 response
x-microcks-default: true
value:
externalIdentifiers:
id: 69f60a06-c335-46d9-b5a1-97f1a211c514
friendlyId: ABCDE
source: ubereats
sourceType: POINT_OF_SALE
sourceExternalIdentifiers: {}
storeId: ckdss-store-id
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- orders.update
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/orders/{orderId}/status:
post:
tags:
- Orders Endpoints
summary: Otter Update Order Status
description: "`RATE LIMIT: 32 per minute`\n"
operationId: updateOrderStatus
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdOptionalHeader'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderStatusUpdateRequest'
examples:
UpdateOrderStatusRequestExample:
summary: Default updateOrderStatus request
x-microcks-default: true
value:
orderStatus: PREPARED
required: true
responses:
'202':
description: The order status was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- orders.update
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/orders/{orderId}/payments:
put:
tags:
- Orders Endpoints
summary: Otter Update Order Customer Payment
description: "`RATE LIMIT: 8 per minute`\n\nNotice that this operation do not completely replace the existent customer payment, instead, it overwrites the field if the latest update is a non-null value. If the update value is null, the existent value will continue to be used.\n"
operationId: updateOrderCustomerPayment
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderCustomerPaymentUpdateRequest'
examples:
UpdateOrderCustomerPaymentRequestExample:
summary: Default updateOrderCustomerPayment request
x-microcks-default: true
value:
currencyCode: EUR
customerPayment:
- value: 2
processingStatus: COLLECTABLE
paymentMethod: CASH
paymentAuthorizer: UNKNOWN_TYPE
cardInfo: {}
externalPaymentType: string
paymentRecords:
- {}
loyaltyInfo: {}
orderTotal:
subtotal: 11.97
claimedSubtotal: 1.0
discount: 1
tax: 1.1
tip: 2
deliveryFee: 5
total: 19.07
couponCode: VWXYZ98765
orderTotalsV2:
customerTotal: {}
customerPayment: {}
payout: {}
required: true
responses:
'200':
description: The order payment information was successfully updated.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- orders.update
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/orders/{orderId}/delivery:
put:
tags:
- Orders Endpoints
summary: Otter Update Order Delivery Information
description: "`RATE LIMIT: 8 per minute`\n"
operationId: updateOrderDeliveryInfo
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDeliveryInfoUpdateRequest'
examples:
UpdateOrderDeliveryInfoRequestExample:
summary: Default updateOrderDeliveryInfo request
x-microcks-default: true
value:
deliveryInfo:
courier: {}
destination: {}
licensePlate: ABC 123
makeModel: Honda CR-V
lastKnownLocation: {}
dropoffInstructions: {}
note: Gate code 123
required: true
responses:
'202':
description: The order delivery information was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- orders.update
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/orders/past-orders:
post:
tags:
- Orders Endpoints
summary: Otter Upload Past Orders
description: "`RATE LIMIT: 32 per minute`; orders must have a status of FULFILLED, REJECTED, or CANCELED\n"
operationId: uploadPastOrders
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UploadPastOrdersRequest'
examples:
UploadPastOrdersRequestExample:
summary: Default uploadPastOrders request
x-microcks-default: true
value:
orders:
- externalIdentifiers: {}
currencyCode: EUR
status: NEW_ORDER
items:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
customer: {}
customerNote: Please include extra napkins!
deliveryInfo: {}
orderTotal: {}
orderTotalV2: {}
customerPayments:
- {}
fulfillmentInfo: {}
promotionsDetails:
- {}
preparationTime: {}
required: true
responses:
'200':
description: The orders was successfully uploaded.
content:
application/json:
schema:
$ref: '#/components/schemas/UploadPastOrdersResponse'
examples:
UploadPastOrders200Example:
summary: Default uploadPastOrders 200 response
x-microcks-default: true
value:
orderReferences:
- externalIdentifiers: {}
storeId: ckdss-store-id
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- orders.create
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/orders/order-created:
post:
tags:
- Manager Order Endpoints
summary: Otter Notify the Result of a Create Order Event
description: "`RATE LIMIT: 32 per minute`\n"
operationId: orderCreated
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
responses:
'200':
description: The Create Order event result was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/orders:
get:
tags:
- Manager Order Endpoints
summary: Otter Fetch Order Feed for a Store
operationId: managerGetOrderFeed
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/opaquePaginationToken'
- $ref: '#/components/parameters/minDateTime'
- $ref: '#/components/parameters/maxDateTime'
responses:
'200':
description: Order feed was successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/OrderFeed'
examples:
ManagerGetOrderFeed200Example:
summary: Default managerGetOrderFeed 200 response
x-microcks-default: true
value:
orders:
- externalIdentifiers: {}
currencyCode: EUR
status: NEW_ORDER
items:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
customer: {}
customerNote: Please include extra napkins!
deliveryInfo: {}
orderTotal: {}
orderTotalV2: {}
customerPayments:
- {}
fulfillmentInfo: {}
promotionsDetails:
- {}
preparationTime: {}
offsetToken: H12MAF2fFaFFFa
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}:
get:
tags:
- Manager Order Endpoints
summary: Otter Fetch Order with Manager Info
operationId: getManagerOrder
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/orderId'
- $ref: '#/components/parameters/source'
responses:
'200':
description: Order information was successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/OrderWithManagerInfo'
examples:
GetManagerOrder200Example:
summary: Default getManagerOrder 200 response
x-microcks-default: true
value:
order:
externalIdentifiers: {}
currencyCode: EUR
status: NEW_ORDER
items:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
customer: {}
customerNote: Please include extra napkins!
deliveryInfo: {}
orderTotal: {}
orderTotalV2: {}
customerPayments:
- {}
fulfillmentInfo: {}
promotionsDetails:
- {}
preparationTime: {}
injectionState: UNKNOWN
orderCancelDetails:
cancelSource: UNKNOWN
injectionEvent: UNKNOWN
orderIssues:
orderIssues:
- {}
itemIssues:
- {}
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/confirm:
post:
tags:
- Manager Order Endpoints
summary: Otter Request Order Confirmation
description: "`RATE LIMIT: 32 per minute`\n"
operationId: requestOrderConfirmation
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ManagerConfirmOrderRequest'
examples:
RequestOrderConfirmationRequestExample:
summary: Default requestOrderConfirmation request
x-microcks-default: true
value:
estimatedPrepTimeMinutes: 15
required: false
responses:
'202':
description: The order confirmation request was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/cancel:
post:
tags:
- Manager Order Endpoints
summary: Otter Request Order Cancelation
description: "`RATE LIMIT: 32 per minute`\n"
operationId: requestOrderCancelation
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ManagerCancelOrderRequest'
examples:
RequestOrderCancelationRequestExample:
summary: Default requestOrderCancelation request
x-microcks-default: true
value:
cancellationReason: REASON_UNKNOWN
cancelingParty:
name: Jane Doe
phone: +1-555-555-5555
phoneCode: 111 11 111
email: email@email.com
personalIdentifiers: {}
required: true
responses:
'202':
description: The order cancelation request was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/ready-to-pickup:
post:
tags:
- Manager Order Endpoints
summary: Otter Mark an Order as Ready to Pickup
description: "`RATE LIMIT: 32 per minute`\n"
operationId: markAsReadyToPickup
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
responses:
'202':
description: The order was successfully marked as ready to pickup.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/create-packaging-component:
post:
tags:
- Manager Order Endpoints
summary: Otter Create a Packaging Component
description: "`RATE LIMIT: 32 per minute`\n"
operationId: createPackagingOrderComponent
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
responses:
'200':
description: The packaging component was successfully created.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderComponentId'
examples:
CreatePackagingOrderComponent200Example:
summary: Default createPackagingOrderComponent 200 response
x-microcks-default: true
value:
orderComponentId: 69f60a06-c335-46d9-b5a1-97f1a211c514
orderComponentOrderId: 69f60a06-c335-46d9-b5a1-97f1a211c514
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/fulfill:
post:
tags:
- Manager Order Endpoints
summary: Otter Mark an Order as Fulfilled
description: "`RATE LIMIT: 32 per minute`\n"
operationId: markAsFulfilled
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
responses:
'202':
description: The order was successfully marked as fulfilled.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/close:
post:
tags:
- Manager Order Endpoints
summary: Otter Mark a Dine-in (open-tab) Order as Closed
description: "Marks an open-tab dine-in order as closed. The closing party is always the merchant/POS (system). `RATE LIMIT: 32 per minute`\n"
operationId: markDineInOrderClosed
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
responses:
'202':
description: The order was successfully marked as closed.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'409':
description: Order could not be closed (e.g. already closed or not an open-tab order).
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/items:
put:
tags:
- Manager Order Endpoints
summary: Otter Update Order Customer Items
description: "Updates customer items for a dine-in order (quantity change, price adjustment, or add item). Only supported when integration slug is d2c-eater-website, order fulfillment type is dine-in, and the order tab is open (order is modifiable). Modifying party and modification request ID are set by the endpoint. `RATE LIMIT: 8 per minute`\n"
operationId: managerUpdateOrderCustomerItems
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderCustomerItemsUpdateRequest'
examples:
ManagerUpdateOrderCustomerItemsRequestExample:
summary: Default managerUpdateOrderCustomerItems request
x-microcks-default: true
value:
currencyCode: USD
customerItemModifications: []
required: true
responses:
'202':
description: The order customer items update was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'409':
description: "Customer items update is not allowed (e.g. slug is not d2c-eater-website, order is not dine-in, or order tab is not open).\n"
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/order/v1/sources/{source}/orders/{orderId}/prep-time:
post:
tags:
- Manager Order Endpoints
summary: Otter Update Order Prep Time
description: "`RATE LIMIT: 32 per minute`\n"
operationId: updateOrderPrepTime
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source'
- $ref: '#/components/parameters/orderId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderPrepTimeUpdateRequest'
examples:
UpdateOrderPrepTimeRequestExample:
summary: Default updateOrderPrepTime request
x-microcks-default: true
value:
prepTimeMinutes: 1780000000000
required: true
responses:
'202':
description: The order new preparation time was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- orders.update
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/storefront/v1/storefront/pause:
post:
tags:
- Manager Storefront Endpoints
summary: Otter Request Pausing Storefronts of a Store
description: "`RATE LIMIT: 8 per minute`\n"
operationId: pauseStorefronts
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PauseRequest'
examples:
PauseStorefrontsRequestExample:
summary: Default pauseStorefronts request
x-microcks-default: true
value:
start: '2007-12-03T10:15:30+01:00'
end: '2007-12-03T10:15:30+01:00'
comment: Some comment
reason: STORE_MAINTENANCE
required: true
responses:
'200':
description: The pause request was successfully accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/PauseResponse'
examples:
PauseStorefronts200Example:
summary: Default pauseStorefronts 200 response
x-microcks-default: true
value:
requestId: store_123
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.storefront
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/storefront/v1/storefront/unpause:
post:
tags:
- Manager Storefront Endpoints
summary: Otter Request Unpausing Storefronts of a Store
description: "`RATE LIMIT: 8 per minute`\n"
operationId: unpauseStorefronts
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UnpauseRequest'
examples:
UnpauseStorefrontsRequestExample:
summary: Default unpauseStorefronts request
x-microcks-default: true
value:
comment: Some comment
required: true
responses:
'200':
description: The unpause request was successfully accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/UnpauseResponse'
examples:
UnpauseStorefronts200Example:
summary: Default unpauseStorefronts 200 response
x-microcks-default: true
value:
requestId: store_123
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.storefront
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/storefront/v1/storefront/pause/request/{requestId}/status:
get:
tags:
- Manager Storefront Endpoints
summary: Otter Get the Process Status Details of a Pause Request
description: "`RATE LIMIT: 8 per minute`\n"
operationId: getPauseRequestStatus
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/requestId'
responses:
'200':
description: The get request processing details was successfully accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessingStatusResponse'
examples:
GetPauseRequestStatus200Example:
summary: Default getPauseRequestStatus 200 response
x-microcks-default: true
value:
processRequestStatuses:
- requestId: store_123
provider: doordash
startedAt: '2007-12-03T10:15:30+01:00'
finishedAt: '2007-12-03T10:15:30+01:00'
stateInfo:
- {}
requestStatus: UNKNOWN
currentState: UNKNOWN
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.storefront
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/storefront/v1/storefront/unpause/request/{requestId}/status:
get:
tags:
- Manager Storefront Endpoints
summary: Otter Get the Process Status Details of an Unpause Request
description: "`RATE LIMIT: 8 per minute`\n"
operationId: getUnpauseRequestStatus
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/requestId'
responses:
'200':
description: The get request processing details was successfully accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessingStatusResponse'
examples:
GetUnpauseRequestStatus200Example:
summary: Default getUnpauseRequestStatus 200 response
x-microcks-default: true
value:
processRequestStatuses:
- requestId: store_123
provider: doordash
startedAt: '2007-12-03T10:15:30+01:00'
finishedAt: '2007-12-03T10:15:30+01:00'
stateInfo:
- {}
requestStatus: UNKNOWN
currentState: UNKNOWN
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.storefront
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/menus:
get:
tags:
- Manager Menu Endpoints
summary: Otter Get the Menus for a Store
description: "`RATE LIMIT: 8 per minute`\n"
operationId: getMenu
parameters:
- $ref: '#/components/parameters/storeIdHeader'
responses:
'200':
description: The store's menu.
content:
application/json:
schema:
$ref: '#/components/schemas/Menus'
examples:
GetMenu200Example:
summary: Default getMenu 200 response
x-microcks-default: true
value:
photos: &id007
c75d9460-5d48-423d-8d01-f825fd5b1672:
id: c75d9460-5d48-423d-8d01-f825fd5b1672
fileName: c75d9460-5d48-423d-8d01-f825fd5b1672.jpeg
url: https://example.com/photos/c75d9460-5d48-423d-8d01-f825fd5b1672.jpeg
categories: &id008
b01485b0-034a-47c5-8a0a-0eeca08bf994:
name: Drinks
description: All drink items served up nice and fresh!
id: b01485b0-034a-47c5-8a0a-0eeca08bf994
itemIds:
- fa4f0192-4c4e-4455-9db8-61d428c34969
modifierGroups: &id009
f4c69056-3ae3-4517-9294-5ceec8df5f81:
id: f4c69056-3ae3-4517-9294-5ceec8df5f81
name: Add Straw
minimumSelections: 0
maximumSelections: 1
defaultModifierSelectionData:
defaultModifierSelections:
- itemId: 6d53cf04-9d62-40f5-a8b3-706e3377668f
selectionQuantity: 1
itemIds:
- 6d53cf04-9d62-40f5-a8b3-706e3377668f
type: DEFAULT
exposedThirdPartyInfos:
- externalId: ff6dd693-5e55-4a92-a359-ea61b23ed423
externalServiceSlug: 3PD
menus: &id010
ff6dd693-5e55-4a92-a359-ea61b23ed423:
id: ff6dd693-5e55-4a92-a359-ea61b23ed423
name: Tasty BBQ
categoryIds:
- b01485b0-034a-47c5-8a0a-0eeca08bf994
fulfillmentModes:
- DELIVERY
description: Cooking up BBQ deliciousness from around the globe!
hours:
intervals:
- day: MONDAY
fromHour: 7
fromMinute: 30
toHour: 22
toMinute: 0
additionalCharges:
- chargeType: PACKAGING_CHARGE
flatCharge:
currencyCode: USD
amount: 1.5
items: &id011
fa4f0192-4c4e-4455-9db8-61d428c34969:
id: fa4f0192-4c4e-4455-9db8-61d428c34969
name: Canned Coke
description: Best soda pop ever made
price:
currencyCode: USD
amount: 7.65
status:
saleStatus: FOR_SALE
modifierGroupIds:
- f4c69056-3ae3-4517-9294-5ceec8df5f81
photoIds:
- c75d9460-5d48-423d-8d01-f825fd5b1672
priceOverrides:
- rules:
- type: FulfillmentModeOverrideRule
fulfillmentMode: PICK_UP
price:
currencyCode: USD
amount: 7
skuDetails:
skuSlug: canned-coke-355ml
skuId: 3bac7aed-c8c1-4bfa-a98a-350317e55072
dietaryClassifications:
- tag: VEGAN
allergenClassifications:
- tag: GLUTEN
containsAllergen: false
- tag: PEANUT
containsAllergen: true
storageRequirements:
- tag: COLD
- tag: AVOID_SUNLIGHT
additives:
- flavor enhancers
- food coloring
containsAlcohol: false
nutritionalInfo:
energyKcal:
low: 1
high: 100
nutritionContent:
servingSizeInGrams: 100
servingSizeInMilliliters: 100
fats: 100.2
saturatedFats: 3.5
monoUnsaturatedFats: 5.2,
polyUnsaturatedFats: 1.3,
carbohydrates: 3.2,
sugar: 101,
polyols: 1.1,
starch: 1.2,
protein: 1.3,
salt: 1.4,
sodium: 1.5,
fibres: 1.6,
vitaminC: 1.7,
calcium: 1.8,
magnesium: 1.9,
chloride: 2.0,
fluoride: 2.1,
potassium: 2.2,
caffeine: 2.3,
energy: 2.4
servings:
min: 1
max: 2
producerInformation: The Coca-Cola Company
distributorInformation: The Coca-Cola Company
countryOfOriginIso2: US
additionalCharges:
- chargeType: PACKAGING_CHARGE
percentageCharge:
decimalValue: 0.015
tax:
percentageValue:
decimalValue: 0.513
isValueAddedTax: true
6d53cf04-9d62-40f5-a8b3-706e3377668f:
id: 6d53cf04-9d62-40f5-a8b3-706e3377668f
name: Paper straw
description: A paper straw
price:
currencyCode: USD
amount: 0.5
status:
saleStatus: FOR_SALE
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.read
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
tags:
- Menus Endpoints
summary: Otter Upsert Menus for a Store
description: "`RATE LIMIT: 2 per minute`\n"
operationId: upsertMenu
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MenusUpsertRequest'
examples:
UpsertMenuRequestExample:
summary: Default upsertMenu request
x-microcks-default: true
value:
categories: &id012
b01485b0-034a-47c5-8a0a-0eeca08bf994:
name: Drinks
description: All drink items served up nice and fresh!
id: b01485b0-034a-47c5-8a0a-0eeca08bf994
itemIds:
- fa4f0192-4c4e-4455-9db8-61d428c34969
modifierGroups: &id013
f4c69056-3ae3-4517-9294-5ceec8df5f81:
id: f4c69056-3ae3-4517-9294-5ceec8df5f81
name: Add Straw
minimumSelections: 0
maximumSelections: 1
defaultModifierSelectionData:
defaultModifierSelections:
- itemId: 6d53cf04-9d62-40f5-a8b3-706e3377668f
selectionQuantity: 1
itemIds:
- 6d53cf04-9d62-40f5-a8b3-706e3377668f
type: DEFAULT
exposedThirdPartyInfos:
- externalId: ff6dd693-5e55-4a92-a359-ea61b23ed423
externalServiceSlug: 3PD
menus: &id014
ff6dd693-5e55-4a92-a359-ea61b23ed423:
id: ff6dd693-5e55-4a92-a359-ea61b23ed423
name: Tasty BBQ
categoryIds:
- b01485b0-034a-47c5-8a0a-0eeca08bf994
fulfillmentModes:
- DELIVERY
description: Cooking up BBQ deliciousness from around the globe!
hours:
intervals:
- day: MONDAY
fromHour: 7
fromMinute: 30
toHour: 22
toMinute: 0
additionalCharges:
- chargeType: PACKAGING_CHARGE
flatCharge:
currencyCode: USD
amount: 1.5
items: &id015
fa4f0192-4c4e-4455-9db8-61d428c34969:
id: fa4f0192-4c4e-4455-9db8-61d428c34969
name: Canned Coke
description: Best soda pop ever made
price:
currencyCode: USD
amount: 7.65
status:
saleStatus: FOR_SALE
modifierGroupIds:
- f4c69056-3ae3-4517-9294-5ceec8df5f81
photoUrls:
- https://example.com/photos/c75d9460-5d48-423d-8d01-f825fd5b1672.jpeg
priceOverrides:
- rules:
- externalServiceSlug: ubereats
currencyCode: USD
amount: 7
skuDetails:
skuSlug: canned-coke-355ml
dietaryClassifications:
- tag: VEGAN
allergenClassifications:
- tag: GLUTEN
containsAllergen: false
- tag: PEANUT
containsAllergen: true
storageRequirements:
- tag: FROZEN
6d53cf04-9d62-40f5-a8b3-706e3377668f:
id: 6d53cf04-9d62-40f5-a8b3-706e3377668f
name: Paper straw
description: A paper straw
price:
currencyCode: USD
amount: 0.5
status:
saleStatus: FOR_SALE
type: DEFAULT
required: true
responses:
'202':
description: The menu update will be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuAsynchronousJob'
examples:
UpsertMenu202Example:
summary: Default upsertMenu 202 response
x-microcks-default: true
value:
jobReference:
id: c75d9460-5d48-423d-8d01-f825fd5b1672
status: PENDING
jobType: PUBLISH
publishJobState: &id002
rappi:
status: FAILED
message: Failed to publish menu due to error ...
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.upsert
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/menus/jobs/{jobId}:
get:
tags:
- Manager Menu Endpoints
summary: Otter Get the Async Menu Job Status
description: "`RATE LIMIT: 8 per minute`\n"
operationId: getAsyncJobStatus
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- name: jobId
in: path
required: true
schema:
type: string
description: The unique identifier of the job.
example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4
responses:
'200':
description: The menu async job status.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuAsynchronousJob'
examples:
GetAsyncJobStatus200Example:
summary: Default getAsyncJobStatus 200 response
x-microcks-default: true
value:
jobReference:
id: c75d9460-5d48-423d-8d01-f825fd5b1672
status: PENDING
jobType: PUBLISH
publishJobState: *id002
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.async_job.read
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/menus/publish:
post:
tags:
- Menus Endpoints
summary: Otter Notify the Result of a Publish Menu Event
description: "`RATE LIMIT: 8 per minute`\n\nSuccessful callback response for the [**publish menu**](/api-reference/#operation/menuPublishWebhook) webhook. If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead. See [**failed event flow**](/docs/menus-integrations-failed-event-flow/) for details.\n"
operationId: menuPublishCallback
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertFullMenuEventCallback'
examples:
MenuPublishCallbackRequestExample:
summary: Default menuPublishCallback request
x-microcks-default: true
value:
requestedToCreatedEntityIds: &id016
1ecd8573-c033-4a55-9d69-4e99bb0397b4: ABCDEFGHIJK1234
required: true
responses:
'204':
description: The Publish menu event result was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.publish
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/menus/current:
post:
tags:
- Menus Endpoints
summary: Otter Notify the Result of a Send Menu Event
description: "`RATE LIMIT: 4 per minute`\n\nSuccessful callback response for the [**send menu**](/api-reference/#operation/menuSendCallback) webhook. If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead. See [**failed event flow**](/docs/menus-integrations-failed-event-flow/) for details.\n"
operationId: menuSendCallback
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SendMenuEventCallback'
examples:
MenuSendCallbackRequestExample:
summary: Default menuSendCallback request
x-microcks-default: true
value:
menuData:
menus: &id017
ff6dd693-5e55-4a92-a359-ea61b23ed423:
id: ff6dd693-5e55-4a92-a359-ea61b23ed423
name: Tasty BBQ
categoryIds:
- b01485b0-034a-47c5-8a0a-0eeca08bf994
fulfillmentModes:
- DELIVERY
description: Cooking up BBQ deliciousness from around the globe!
hoursData:
timeZone: America/Los_Angeles
regularHours:
- days:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
timeRanges:
- start: 08:00
end: 22:00
specialHours:
- date: '2021-12-31'
timeRanges:
- start: 08:00
end: 22:00
type: CLOSED
additionalCharges:
- chargeType: PACKAGING_CHARGE
percentageCharge:
decimalValue: 0.03
exposedThirdPartyInfos:
- externalId: ff6dd693-5e55-4a92-a359-ea61b23ed423
externalServiceSlug: 3PD
categories: &id018
b01485b0-034a-47c5-8a0a-0eeca08bf994:
name: Drinks
description: All drink items served up nice and fresh!
id: b01485b0-034a-47c5-8a0a-0eeca08bf994
itemIds:
- fa4f0192-4c4e-4455-9db8-61d428c34969
items: &id019
fa4f0192-4c4e-4455-9db8-61d428c34969:
id: fa4f0192-4c4e-4455-9db8-61d428c34969
name: Canned Coke
description: Best soda pop ever made
price:
currencyCode: USD
amount: 7.65
status:
saleStatus: FOR_SALE
modifierGroupIds:
- f4c69056-3ae3-4517-9294-5ceec8df5f81
photoIds:
- c75d9460-5d48-423d-8d01-f825fd5b1672
priceOverrides:
- rules:
- type: FulfillmentModeOverrideRule
fulfillmentMode: PICK_UP
price:
currencyCode: USD
amount: 7
skuDetails:
skuSlug: canned-coke-355ml
dietaryClassifications:
- tag: VEGAN
allergenClassifications:
- tag: GLUTEN
containsAllergen: false
- tag: PEANUT
containsAllergen: true
storageRequirements:
- tag: COLD
- tag: AVOID_SUNLIGHT
additives:
- flavor enhancers
- food coloring
containsAlcohol: false
nutritionalInfo:
energyKcal:
low: 1
high: 100
nutritionContent:
servingSizeInGrams: 100
servingSizeInMilliliters: 100
fats: 100.2
saturatedFats: 3.5
monoUnsaturatedFats: 5.2,
polyUnsaturatedFats: 1.3,
carbohydrates: 3.2,
sugar: 101,
polyols: 1.1,
starch: 1.2,
protein: 1.3,
salt: 1.4,
sodium: 1.5,
fibres: 1.6,
vitaminC: 1.7,
calcium: 1.8,
magnesium: 1.9,
chloride: 2.0,
fluoride: 2.1,
potassium: 2.2,
caffeine: 2.3,
energy: 2.4
servings:
min: 1
max: 2
producerInformation: The Coca-Cola Company
distributorInformation: The Coca-Cola Company
countryOfOriginIso2: US
additionalCharges:
- chargeType: PACKAGING_CHARGE
flatCharge:
currencyCode: USD
amount: 1.5
tax:
percentageValue:
decimalValue: 0.513
isValueAddedTax: true
exposedThirdPartyInfos:
- externalId: ff6dd693-5e55-4a92-a359-ea61b23ed423
externalServiceSlug: 3PD
6d53cf04-9d62-40f5-a8b3-706e3377668f:
id: 6d53cf04-9d62-40f5-a8b3-706e3377668f
name: Paper straw
description: A paper straw
price:
currencyCode: USD
amount: 0.5
status:
saleStatus: FOR_SALE
modifierGroups: &id020
f4c69056-3ae3-4517-9294-5ceec8df5f81:
id: f4c69056-3ae3-4517-9294-5ceec8df5f81
name: Add Straw
minimumSelections: 0
maximumSelections: 1
defaultModifierSelectionData:
defaultModifierSelections:
- itemId: 6d53cf04-9d62-40f5-a8b3-706e3377668f
selectionQuantity: 1
itemIds:
- 6d53cf04-9d62-40f5-a8b3-706e3377668f
type: DEFAULT
exposedThirdPartyInfos:
- externalId: ff6dd693-5e55-4a92-a359-ea61b23ed423
externalServiceSlug: 3PD
photos: &id021
c75d9460-5d48-423d-8d01-f825fd5b1672:
id: c75d9460-5d48-423d-8d01-f825fd5b1672
fileName: c75d9460-5d48-423d-8d01-f825fd5b1672.jpeg
url: https://example.com/photos/c75d9460-5d48-423d-8d01-f825fd5b1672.jpeg
required: true
responses:
'204':
description: The Send Menu event result was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.get_current
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/menus/hours:
post:
tags:
- Menus Endpoints
summary: Otter Notify the Receival of a Upsert Hours Menu Event
description: "`RATE LIMIT: 8 per minute`\n\nSuccessful callback response for the [**upsert hours**](/api-reference/#operation/upsertMenuHoursWebhook) webhook. If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead. See [**failed event flow**](/docs/menus-integrations-failed-event-flow/) for details.\n"
operationId: menuUpsertHours
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
responses:
'204':
description: The Upsert Hours Menu event result was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.upsert_hours
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/menus/menu-sync:
post:
tags:
- Menus Endpoints
summary: Otter Synchronize Store Menu with POS Menu
description: This endpoint is used to synchronize the store menu with the connected POS.
operationId: posMenuSync
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PosMenuSyncRequest'
examples:
PosMenuSyncRequestExample:
summary: Default posMenuSync request
x-microcks-default: true
value:
shouldPublishChanges: true
useCustomOptions: true
customBulkResolutionOptions:
updateNames: true
updatePrices: true
updateDescriptions: true
createUnmatchedEntities: true
deleteMissingEntities: true
bootstrapPhotosToEntities: true
copyEntityPaths: true
updateItemSuspensionStatus: true
updateHours: true
assignItemsToLocations: true
unassignItemsFromLocations: true
updateMenuOrganization: true
updateItemArrangement: true
updateModifierGroupRules: true
updateTaxes: true
required: false
responses:
'202':
description: The Menu Sync will be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMenuSyncResponse'
examples:
PosMenuSync202Example:
summary: Default posMenuSync 202 response
x-microcks-default: true
value:
jobId: c75d9460-5d48-423d-8d01-f825fd5b1672
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.sync
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/menus/entity/availability/bulk:
post:
tags:
- Menus Endpoints
summary: Otter Notify the Result of an Update Menu Entities Availabilities Event
description: "`RATE LIMIT: 32 per minute`\n\nSuccessful callback response for the [**update menu entities availabilities**](/api-reference/#operation/updateMenuEntitiesAvailabilitiesWebhook) webhook. If an error occurred, please publish a [**callback error**](/api-reference/#operation/publishError) instead. See [**failed event flow**](/docs/menus-integrations-failed-event-flow/) for details.\n"
operationId: updateMenuEntitiesAvailabilitiesCallback
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
responses:
'204':
description: The Update Menu Entities Availabilities menu entity event result was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- menus.entity_suspension
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/menu/v1/menus/publish-targets:
get:
tags:
- Manager Menu Endpoints
summary: Otter Get the Publish-targets for a Store
description: "`RATE LIMIT: 2 per minute`\n"
operationId: managerGetMenuPublishTargets
parameters:
- $ref: '#/components/parameters/storeIdHeader'
responses:
'200':
description: The store's menu publish-targets.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuPublishTargets'
examples:
ManagerGetMenuPublishTargets200Example:
summary: Default managerGetMenuPublishTargets 200 response
x-microcks-default: true
value:
menuPublishTargets: &id025
rappi:
status: PUBLISH_IN_PROGRESS
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/menu/v1/menus/publish:
post:
tags:
- Manager Menu Endpoints
summary: Otter Publish Menus to Targets for a Store
description: "`RATE LIMIT: 2 per minute`\n"
operationId: managerPublishMenu
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MenuPublishRequest'
examples:
ManagerPublishMenuRequestExample:
summary: Default managerPublishMenu request
x-microcks-default: true
value:
menuPublishTargets: &id022
- doordash
- ubereats
required: true
responses:
'202':
description: The menu publish will be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuPublishResponse'
examples:
ManagerPublishMenu202Example:
summary: Default managerPublishMenu 202 response
x-microcks-default: true
value:
requestSubmitted: true
jobId: c75d9460-5d48-423d-8d01-f825fd5b1672
menuPublishTargets:
menuPublishTargets: &id003
rappi:
status: PUBLISH_IN_PROGRESS
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'409':
description: Conflicting Menu targets.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuPublishResponse'
examples:
ManagerPublishMenu409Example:
summary: Default managerPublishMenu 409 response
x-microcks-default: true
value:
requestSubmitted: true
jobId: c75d9460-5d48-423d-8d01-f825fd5b1672
menuPublishTargets:
menuPublishTargets: *id003
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/menu/v1/menus/menu-sync:
post:
tags:
- Manager Menu Endpoints
summary: Otter Synchronize Store Menu with POS Menu
description: "`RATE LIMIT: 2 per minute`\n"
operationId: menuSync
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PosMenuSyncRequest'
examples:
MenuSyncRequestExample:
summary: Default menuSync request
x-microcks-default: true
value:
shouldPublishChanges: true
useCustomOptions: true
customBulkResolutionOptions:
updateNames: true
updatePrices: true
updateDescriptions: true
createUnmatchedEntities: true
deleteMissingEntities: true
bootstrapPhotosToEntities: true
copyEntityPaths: true
updateItemSuspensionStatus: true
updateHours: true
assignItemsToLocations: true
unassignItemsFromLocations: true
updateMenuOrganization: true
updateItemArrangement: true
updateModifierGroupRules: true
updateTaxes: true
required: false
responses:
'202':
description: The Menu Sync will be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/PosMenuSyncResponse'
examples:
MenuSync202Example:
summary: Default menuSync 202 response
x-microcks-default: true
value:
jobId: c75d9460-5d48-423d-8d01-f825fd5b1672
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/menu/v1/menus/entities/availability/suspend:
post:
tags:
- Manager Menu Endpoints
summary: Otter Suspend Menu Entities Targets for a Store
description: "`RATE LIMIT: 16 per minute`\n"
operationId: managerSuspendMenuEntities
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SuspendItemsRequest'
examples:
ManagerSuspendMenuEntitiesRequestExample:
summary: Default managerSuspendMenuEntities request
x-microcks-default: true
value:
entityIds: &id023
- 9cc4bb5e-bc97-40d9-af28-c02ef1483610
note: Out of item
status:
isIndefinite: true
suspendedUntil: '2007-12-03T10:15:30+01:00'
required: true
responses:
'202':
description: The suspend menu entities will be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuAsynchronousJob'
examples:
ManagerSuspendMenuEntities202Example:
summary: Default managerSuspendMenuEntities 202 response
x-microcks-default: true
value:
jobReference:
id: c75d9460-5d48-423d-8d01-f825fd5b1672
status: PENDING
jobType: PUBLISH
publishJobState: *id002
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/menu/v1/menus/entities/availability/unsuspend:
post:
tags:
- Manager Menu Endpoints
summary: Otter Unsuspend Menu Entities Targets for a Store
description: "`RATE LIMIT: 16 per minute`\n"
operationId: managerUnsuspendMenuEntities
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UnsuspendItemsRequest'
examples:
ManagerUnsuspendMenuEntitiesRequestExample:
summary: Default managerUnsuspendMenuEntities request
x-microcks-default: true
value:
entityIds: &id024
- 9cc4bb5e-bc97-40d9-af28-c02ef1483610
note: Item back in stock
required: true
responses:
'202':
description: The suspend menu entities will be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuAsynchronousJob'
examples:
ManagerUnsuspendMenuEntities202Example:
summary: Default managerUnsuspendMenuEntities 202 response
x-microcks-default: true
value:
jobReference:
id: c75d9460-5d48-423d-8d01-f825fd5b1672
status: PENDING
jobType: PUBLISH
publishJobState: *id002
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/menu/v1/bootstrap:
post:
tags:
- Manager Menu Endpoints
summary: Otter Bootstrap Menus for a Store
description: "`RATE LIMIT: 2 per minute`\n"
operationId: managerBootstrap
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BootstrapMenuRequest'
examples:
ManagerBootstrapRequestExample:
summary: Default managerBootstrap request
x-microcks-default: true
value:
templateName: My Store's Menu
externalServiceSlug: ubereats-api
enableTemplate: true
stationId: 9cc4bb5e-bc97-40d9-af28-c02ef1483610
posSlug: pos-slug
required: true
responses:
'202':
description: The menu will be bootstrapped.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuAsynchronousJob'
examples:
ManagerBootstrap202Example:
summary: Default managerBootstrap 202 response
x-microcks-default: true
value:
jobReference:
id: c75d9460-5d48-423d-8d01-f825fd5b1672
status: PENDING
jobType: PUBLISH
publishJobState: *id002
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.menus
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/storefront/availability:
post:
tags:
- Storefront Endpoints
summary: Otter Notify About Store Availability Change
description: "`RATE LIMIT: 16 per minute`\n"
operationId: postStoreAvailabilityChange
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdOptionalHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StoreAvailabilityEventResult'
examples:
PostStoreAvailabilityChangeRequestExample:
summary: Default postStoreAvailabilityChange request
x-microcks-default: true
value:
storeState: OPEN
statusChangedAt: '2007-12-03T10:15:30+01:00'
eventResultMetadata:
operationStatus: SUCCEEDED
additionalInformation: Completed without problems.
operationFinishedAt: '2007-12-03T10:15:30+01:00'
required: true
responses:
'204':
description: The store availability change was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- storefront.store_availability
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/storefront/hours:
post:
tags:
- Storefront Endpoints
summary: Otter Notify About Store Hours Configuration Change
description: "`RATE LIMIT: 16 per minute`\n"
operationId: postStoreHoursConfigurationChange
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdOptionalHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StoreHoursConfigurationEventResult'
examples:
PostStoreHoursConfigurationChangeRequestExample:
summary: Default postStoreHoursConfigurationChange request
x-microcks-default: true
value:
storeHoursConfiguration:
deliveryHours: {}
pickupHours: {}
timezone: America/Los_Angeles
statusChangedAt: '2007-12-03T10:15:30+01:00'
eventResultMetadata:
operationStatus: SUCCEEDED
additionalInformation: Completed without problems.
operationFinishedAt: '2007-12-03T10:15:30+01:00'
required: true
responses:
'204':
description: The store hours configuration change was successfully processed.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- storefront.store_hours_configuration
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/storefront/pause:
post:
tags:
- Storefront Endpoints
summary: Otter Notify the Result of a Pause Request Event
description: "`RATE LIMIT: 8 per minute`\n"
operationId: postPauseStoreEventResult
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PauseStoreEventResult'
examples:
PostPauseStoreEventResultRequestExample:
summary: Default postPauseStoreEventResult request
x-microcks-default: true
value:
closureId: 4109d2c9-8bc5-413c-af3e-1c92aa381e41
eventResultMetadata:
operationStatus: SUCCEEDED
additionalInformation: Completed without problems.
operationFinishedAt: '2007-12-03T10:15:30+01:00'
required: true
responses:
'204':
description: The pause store event result was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- storefront.store_pause_unpause
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/storefront/unpause:
post:
tags:
- Storefront Endpoints
summary: Otter Notify the Result of an Unpause Request Event
description: "`RATE LIMIT: 8 per minute`\n"
operationId: postUnpauseStoreEventResult
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UnpauseStoreEventResult'
examples:
PostUnpauseStoreEventResultRequestExample:
summary: Default postUnpauseStoreEventResult request
x-microcks-default: true
value:
eventResultMetadata:
operationStatus: SUCCEEDED
additionalInformation: Completed without problems.
operationFinishedAt: '2007-12-03T10:15:30+01:00'
required: true
responses:
'204':
description: The unpause store event result was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- storefront.store_pause_unpause
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/storefront/eater-side/status:
post:
tags:
- Storefront Endpoints
summary: Otter Notify About Store Availability Change from the Eater Side
description: "`RATE LIMIT: 16 per minute`\n"
operationId: postEaterSideStoreAvailabilityChange
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdOptionalHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StoreAvailabilityEventResult'
examples:
PostEaterSideStoreAvailabilityChangeRequestExample:
summary: Default postEaterSideStoreAvailabilityChange request
x-microcks-default: true
value:
storeState: OPEN
statusChangedAt: '2007-12-03T10:15:30+01:00'
eventResultMetadata:
operationStatus: SUCCEEDED
additionalInformation: Completed without problems.
operationFinishedAt: '2007-12-03T10:15:30+01:00'
required: true
responses:
'204':
description: The store availability change was successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- storefront.store_availability
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/storefront/eater-side/hours:
post:
tags:
- Storefront Endpoints
summary: Otter Notify About Store Hours Configuration Change on Eater Side
description: "`RATE LIMIT: 16 per minute`\n"
operationId: postEaterSideStoreHoursConfigurationChange
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdOptionalHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StoreHoursConfigurationEventResult'
examples:
PostEaterSideStoreHoursConfigurationChangeRequestExample:
summary: Default postEaterSideStoreHoursConfigurationChange request
x-microcks-default: true
value:
storeHoursConfiguration:
deliveryHours: {}
pickupHours: {}
timezone: America/Los_Angeles
statusChangedAt: '2007-12-03T10:15:30+01:00'
eventResultMetadata:
operationStatus: SUCCEEDED
additionalInformation: Completed without problems.
operationFinishedAt: '2007-12-03T10:15:30+01:00'
required: true
responses:
'204':
description: The store hours configuration change was successfully processed.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- storefront.store_hours_configuration
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/delivery/{deliveryReferenceId}/status:
put:
tags:
- Delivery Endpoints
summary: Otter Update Delivery Status
description: "`RATE LIMIT: 8 per minute`\n"
operationId: updateDeliveryStatus
parameters:
- $ref: '#/components/parameters/deliveryReferenceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryStatusUpdateRequest'
examples:
UpdateDeliveryStatusRequestExample:
summary: Default updateDeliveryStatus request
x-microcks-default: true
value:
deliveryStatus: REQUESTED
estimatedDeliveryTime: '2007-12-03T10:15:30+01:00'
estimatedPickupTime: '2007-12-03T10:15:30+01:00'
courier:
name: Jane Doe
phone: +1-555-555-5555
phoneCode: 111 11 111
email: email@email.com
personalIdentifiers: {}
location:
latitude: 38.8977
longitude: 77.0365
createdAt: '2007-12-03T10:15:30+01:00'
vehicleInformation:
vehicleType: WALKER
licensePlate: ABCD 123
makeModel: Honda Civic
currencyCode: EUR
cost:
baseCost: 4.99
extraCost: 0.99
providerDeliveryId: store_123
dropoffInfo:
courierNote: string
proofOfDelivery: {}
deliveryTrackingUrl: https://example.com/resource
required: true
responses:
'204':
description: The event callback was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- delivery.provider
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/delivery/{deliveryReferenceId}/quotes:
post:
tags:
- Delivery Endpoints
summary: Otter Notify the Result of a Request Delivery Quote Event
description: "`RATE LIMIT: 8 per minute`\n"
operationId: requestDeliveryQuoteCallback
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
- $ref: '#/components/parameters/deliveryReferenceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RequestDeliveryQuoteCallbackRequest'
examples:
RequestDeliveryQuoteCallbackRequestExample:
summary: Default requestDeliveryQuoteCallback request
x-microcks-default: true
value:
minPickupDuration: 5
maxPickupDuration: 10
deliveryDistance:
unit: KILOMETERS
value: 1.0
currencyCode: EUR
cost:
baseCost: 4.99
extraCost: 0.99
provider: doordash
fulfillmentPath:
- name: rappi
type: FULFILLMENT_PROCESSOR
createdAt: '2007-12-03T10:15:30+01:00'
accountBalance: 1068.32
required: true
responses:
'204':
description: The event callback was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- delivery.provider
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/delivery/{deliveryReferenceId}/accept:
post:
tags:
- Delivery Endpoints
summary: Otter Notify the Result of an Accept Delivery Event
description: "`RATE LIMIT: 8 per minute`\n"
operationId: acceptDeliveryCallback
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
- $ref: '#/components/parameters/deliveryReferenceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AcceptDeliveryCallbackRequest'
examples:
AcceptDeliveryCallbackRequestExample:
summary: Default acceptDeliveryCallback request
x-microcks-default: true
value:
deliveryDistance:
unit: KILOMETERS
value: 1.0
currencyCode: EUR
cost:
baseCost: 4.99
extraCost: 0.99
fulfillmentPath:
- name: rappi
type: FULFILLMENT_PROCESSOR
estimatedDeliveryTime: '2007-12-03T10:15:30+01:00'
estimatedPickupTime: '2007-12-03T10:15:30+01:00'
confirmedAt: '2007-12-03T10:15:30+01:00'
deliveryTrackingUrl: www.example.com
providerDeliveryId: store_123
required: true
responses:
'204':
description: The event callback was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- delivery.provider
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/delivery/{deliveryReferenceId}/cancel:
post:
tags:
- Delivery Endpoints
summary: Otter Notify the Result of a Cancel Delivery Event
description: "`RATE LIMIT: 8 per minute`\n"
operationId: cancelDeliveryCallback
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
- $ref: '#/components/parameters/deliveryReferenceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CancelDeliveryCallbackRequest'
examples:
CancelDeliveryCallbackRequestExample:
summary: Default cancelDeliveryCallback request
x-microcks-default: true
value:
canceledAt: '2007-12-03T10:15:30+01:00'
required: true
responses:
'204':
description: The event callback was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- delivery.provider
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/delivery/callback/error:
post:
tags:
- Delivery Endpoints
summary: Otter Publish Delivery Callback Error
description: "`RATE LIMIT: 16 per minute`\n"
operationId: deliveryCallbackError
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventCallbackError'
examples:
DeliveryCallbackErrorRequestExample:
summary: Default deliveryCallbackError request
x-microcks-default: true
value:
errorCode: NOT_FOUND
errorMessage: The store was not found.
required: true
responses:
'200':
description: The callback error was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- callback.error.write
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/delivery/{deliveryReferenceId}/update:
post:
tags:
- Delivery Endpoints
summary: Otter Notify the Result of an Update Delivery Request Event
description: "`RATE LIMIT: 8 per minute`\n"
operationId: updateDeliveryRequestCallback
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
- $ref: '#/components/parameters/deliveryReferenceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDeliveryRequestCallbackRequest'
examples:
UpdateDeliveryRequestCallbackRequestExample:
summary: Default updateDeliveryRequestCallback request
x-microcks-default: true
value:
currencyCode: EUR
cost:
baseCost: 4.99
extraCost: 0.99
required: true
responses:
'204':
description: The event callback was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- delivery.provider
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/callback/error:
post:
tags:
- Callback Endpoints
summary: Otter Publish Callback Error
description: "`RATE LIMIT: 16 per minute` \n\nThis is the generalized callback error that should be used to return failures for all webhooks, unless otherwise specified. See [**failed event flow**](/docs/menus-integrations-failed-event-flow/) for details.\n"
operationId: publishError
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventCallbackError'
examples:
PublishErrorRequestExample:
summary: Default publishError request
x-microcks-default: true
value:
errorCode: NOT_FOUND
errorMessage: The store was not found.
required: true
responses:
'200':
description: The callback error was successfully accepted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- callback.error.write
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/ping:
get:
tags:
- Ping Endpoints
summary: Otter Ping the System
description: "`RATE LIMIT: 8 per minute`\n"
operationId: ping
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- name: X-Echo-Error
in: header
required: false
allowEmptyValue: true
schema:
type: string
description: The error message to be returned by the endpoint, for testing purposes.
example: ping test error message
responses:
'200':
description: The ping was successfully received.
content:
application/json:
schema:
$ref: '#/components/schemas/PongObject'
examples:
Ping200Example:
summary: Default ping 200 response
x-microcks-default: true
value:
response: pong
currentTime: '2007-12-03T10:15:30+01:00'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'418':
description: I am a teapot.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
Ping418Example:
summary: Default ping 418 response
x-microcks-default: true
value:
message: The request body is invalid.
details:
- attribute: Order Currency Code
message: Order Currency Code must be exactly 3 characters
security:
- OAuth2.0:
- ping
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/reports/{jobId}:
get:
tags:
- Reports Endpoints
summary: Otter Request Status of the Report Using JobId
description: "`RATE LIMIT: 2 per minute`\n"
operationId: getReportStatus
parameters:
- $ref: '#/components/parameters/jobId'
responses:
'200':
description: Report is found
content:
application/json:
schema:
$ref: '#/components/schemas/GetReportStatusResponse'
examples:
GetReportStatus200Example:
summary: Default getReportStatus 200 response
x-microcks-default: true
value:
status: IN_PROGRESS
payload:
reportUrl: https://example.com/path/to/report.csv.gz
errorMessage: Report generation error. Please reach out to support and provide jobId
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- reports.generate_report
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/reports/generate:
post:
tags:
- Reports Endpoints
summary: Otter Request a Business Report for Multiple Stores
operationId: generateReportMulti
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateReportMultiRequest'
examples:
GenerateReportMultiRequestExample:
summary: Default generateReportMulti request
x-microcks-default: true
value:
reportType: ORDER_STORES
start: '2021-10-01'
end: '2021-10-01'
externalStoreIds: &id026
- brand1-acbdef
- brand1-fghjkl
- brand2-qwerty
externalServiceSlugs: &id027
- ubereats
- postmates
language: string
required: true
responses:
'200':
description: The request was successfully processed and report is being generated
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateReportResponse'
examples:
GenerateReportMulti200Example:
summary: Default generateReportMulti 200 response
x-microcks-default: true
value:
jobId: 38ab397f-b142-4b06-b70c-40c68a408bea
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- reports.generate_report
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/reviews/reply:
post:
tags:
- Reviews Endpoints
summary: Otter Reply or Schedule a Reply to a Review
operationId: reviewReply
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ReviewReplyRequest'
examples:
ReviewReplyRequestExample:
summary: Default reviewReply request
x-microcks-default: true
value:
reviewId: review-56e9-46be
externalStoreId: order-1fa4-479c
serviceSlug: ubereats
replyText: Thank you very much.
scheduledAt: 1697727006
required: true
responses:
'200':
description: The reply was successfully posted
content:
application/json:
schema:
$ref: '#/components/schemas/ReviewReplyResponse'
examples:
ReviewReply200Example:
summary: Default reviewReply 200 response
x-microcks-default: true
value:
replyId: reply-f34f-4d35
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- reviews.reply
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/auth/token:
post:
tags:
- Auth Endpoints
summary: Otter Generate Token
description: Client credentials in the request-body and HTTP Basic Auth are supported.
operationId: requestToken
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OAuthTokenGenerationRequest'
required: true
responses:
'200':
description: The token was successfully generated.
content:
application/json:
schema:
$ref: '#/components/schemas/HydraToken'
examples:
RequestToken200Example:
summary: Default requestToken 200 response
x-microcks-default: true
value:
access_token: oMahtBwBbnZeh4Q66mSuLFmk2V0_CLCKVt0aYcNJlcg.yditzjwCP7yp0PgR6AzQR3wQ1rTdCjkcPeAMuyfK-NU
expires_in: 2627999
scope: ping orders.create
token_type: bearer
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'422':
$ref: '#/components/responses/422'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/auth/oauth2/authorize:
get:
tags:
- Auth Endpoints
summary: Otter OAuth 2.0 Authorize Endpoint
description: Request a user's authorization to perform action on their behalf
operationId: oauth2Authorize
parameters:
- in: query
name: client_id
required: true
schema:
type: string
description: The ID of the client (also known as the Application ID).
example: store_123
- in: query
name: redirect_uri
required: true
schema:
type: string
description: The URI to where the user should be redirected when the flow is successfully completed. It must be previously registered at Developer Portal in the application settings.
example: https://example.com/resource
- in: query
name: response_type
required: true
schema:
type: string
description: Specifies the expected response type. Only "code" is accepted.
example: string
- in: query
name: scope
required: true
schema:
type: string
description: The scope to request, multiple scopes are passed delimited by a space character.
example: string
- in: query
name: state
required: true
schema:
type: string
description: Can be used to store request-specific data. The server will return the unmodified state value back to the application.
example: string
- in: query
name: code_challenge
required: false
schema:
type: string
description: A code verifier generated by the client application transformed by applying a cryptographic hash function, such as SHA-256, and encoding the result using URL-safe Base64 encoding.
example: string
- in: query
name: code_challenge_method
required: false
schema:
type: string
description: Method used to transform the code verifier. The most common method is "S256", which stands for SHA-256.
example: string
responses:
'302':
description: The token was successfully generated.
headers:
Location:
schema:
type: string
description: Redirect URI
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'422':
$ref: '#/components/responses/422'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/stores:
post:
tags:
- Account Pairing Endpoints
summary: Otter Complete Store Onboarding
description: "`RATE LIMIT: 2 per minute`\n\nThe asynchronous callback of the Upsert Store Webhook. The partner application will use this endpoint to inform if the store data and credentials provided through the `Upsert Store Webhook` were enough to create/update and validate the store. If informing success, the `Store ID` must be provided to complete the store onboarding process. If informing failure, use the `Error Message` field to provide details about the problem.\n"
operationId: upsertStorelinkEventResultEndpoint
parameters:
- $ref: '#/components/parameters/applicationIdHeader'
- $ref: '#/components/parameters/eventIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertStorelinkEventResultRequest'
examples:
UpsertStorelinkEventResultEndpointRequestExample:
summary: Default upsertStorelinkEventResultEndpoint request
x-microcks-default: true
value:
success: true
storeId: partner-store-unique-identifier
errorMessage:
message: The request body is invalid.
details:
- {}
required: true
responses:
'204':
description: If informing success, it means the store onboarding process is complete. If informing failure, it means new credentials need to be provided through the Upsert Store Webhook.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- stores.manage
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/stores/status:
put:
tags:
- Account Pairing Endpoints
summary: Otter Update Store Status
description: "`RATE LIMIT: 2 per minute`\n\nThe partner application should call this endpoint when needing to change the status of a store that already completed the onboarding process.\n"
operationId: updateStoreStatusEndpoint
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateStorelinkStatusRequest'
examples:
UpdateStoreStatusEndpointRequestExample:
summary: Default updateStoreStatusEndpoint request
x-microcks-default: true
value:
status: SUSPENDED
message: Authentication is failing with current credentials. Suspending store while the retry process is in progress.
required: true
responses:
'204':
description: The store status was successfully updated.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- stores.manage
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/finance/v1/financial-transactions:
post:
tags:
- Finance Endpoints
summary: Otter Post Financial Transactions
operationId: postFinancialTransactions
description: Post financial data related to a given order.
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialTransaction'
examples:
PostFinancialTransactionsRequestExample:
summary: Default postFinancialTransactions request
x-microcks-default: true
value:
orderIdentifiers:
id: 69f60a06-c335-46d9-b5a1-97f1a211c514
source: ubereats
id: store_123
pending: true
currencyCode: EUR
createdAt: '2007-12-03T10:15:30+01:00'
customerId: store_123
notes: string
type: PAYMENT
payout:
id: store_123
date: '2021-10-01'
orderItems:
- id: store_123
name: Sample Name
issues:
- {}
issues:
- type: MISSING_ITEM
data:
foodSales: {}
feeForRestaurantProvidedDelivery: {}
restaurantFundedDiscount: {}
voucherDiscount: {}
promotionDiscount: {}
operatorDiscount: {}
loyaltyDiscount: {}
tipForRestaurant: {}
adjustments: {}
packingFee: {}
bagFee: {}
serviceProviderDiscount: {}
tipForServiceProviderCourier: {}
feeForServiceProviderDelivery: {}
smallOrderFee: {}
serviceFee: {}
otherFee: {}
netPayout: {}
couponCodes: &id006
- TACOWED5OFF
required: true
responses:
'202':
description: The financial transaction for the order was successfully processed.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- finance
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/finance/v1/financial-invoices:
post:
tags:
- Finance Endpoints
summary: Otter Post a Financial Invoice
operationId: postFinancialInvoice
description: Post a financial invoice containing payout and financial data for orders in a given period of time.
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialInvoice'
examples:
PostFinancialInvoiceRequestExample:
summary: Default postFinancialInvoice request
x-microcks-default: true
value:
sourceService: ubereats
payout:
id: store_123
date: '2021-10-01'
summary: {}
total: 19.07
financialTransactions:
- orderIdentifiers: {}
id: store_123
createdAt: '2007-12-03T10:15:30+01:00'
customerId: store_123
notes: string
type: PAYMENT
orderItems:
- {}
issues:
- {}
data: {}
currencyCode: EUR
required: true
responses:
'202':
description: The financial transaction for the order was successfully processed.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- finance
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/inventories/v1/summaries:
get:
tags:
- Inventory Endpoints
summary: Otter List Inventory Summaries
operationId: listInventorySummaries
description: "`RATE LIMIT: 32 per minute`\n\nList inventory summaries by the requested parameters.\n"
parameters:
- $ref: '#/components/parameters/inventory-summary-limit'
- $ref: '#/components/parameters/opaquePaginationToken'
- $ref: '#/components/parameters/storeIdHeader'
responses:
'200':
description: The inventory summaries were successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/InventorySummariesResponse'
examples:
ListInventorySummaries200Example:
summary: Default listInventorySummaries 200 response
x-microcks-default: true
value:
inventorySummaries:
- id: ZDlhYTc1NjUtMzU3Z
gtin: '00049000608779'
name: Coca-Cola Classic Coke Soft Drink 12 oz. can
slug: coca-cola-classic-soft-drink-12-oz-can
externalId: some-id-from-a-vendor-123
sellableQuantity: 42
unsellableQuantity: 42
inboundQuantity: 8
nextToken: H12MAF2fFaFFFa
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- catalog
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/inventories/v1/shipments:
get:
tags:
- Inventory Endpoints
summary: Otter List Shipments
operationId: listInventoryShipments
description: "`RATE LIMIT: 8 per minute`\n\nList shipments by the requested parameters.\n"
parameters:
- $ref: '#/components/parameters/inventory-limit'
- $ref: '#/components/parameters/opaquePaginationToken'
- $ref: '#/components/parameters/storeIdHeader'
responses:
'200':
description: The shipments were successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/ListShipmentsResponse'
examples:
ListInventoryShipments200Example:
summary: Default listInventoryShipments 200 response
x-microcks-default: true
value:
shipments:
- id: 18695c43-c670-4c57-a714-e0d7b215db20
deliveryInfo: {}
lineItems:
- {}
stateChanges:
- {}
nextToken: H12MAF2fFaFFFa
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- catalog
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
tags:
- Inventory Endpoints
summary: Otter Create Shipment
operationId: createShipment
description: "`RATE LIMIT: 32 per minute`\n\nCreate a new shipment.\n"
parameters:
- $ref: '#/components/parameters/storeIdHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateShipmentRequest'
examples:
CreateShipmentRequestExample:
summary: Default createShipment request
x-microcks-default: true
value:
deliveryInfo: {}
lineItems:
- id: 1b8aec80-21aa-43f1-b510-2199ac54156a
slug: pizza-pepperoni-12-inch
externalId: id-in-external-system
manifestQuantity: 5
receivedSellableQuantity: 5
receivedUnsellableQuantity: 5
required: true
responses:
'200':
description: The shipment was successfully created.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateShipmentResponse'
examples:
CreateShipment200Example:
summary: Default createShipment 200 response
x-microcks-default: true
value:
id: 18695c43-c670-4c57-a714-e0d7b215db20
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- catalog
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/organization/v1/organization:
get:
tags:
- Organization Endpoints
summary: Otter Get the Organization Managed by the User.
operationId: organizationGetOrganization
responses:
'200':
description: The organization managed by the user.
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
examples:
OrganizationGetOrganization200Example:
summary: Default organizationGetOrganization 200 response
x-microcks-default: true
value:
id: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name: Organization name 1
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.read
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/organization/v1/organization/brands/{brandId}:
get:
tags:
- Organization Endpoints
summary: Otter Get a Brand of the Organization Managed by the User.
operationId: organizationGetBrand
parameters:
- $ref: '#/components/parameters/brandId'
responses:
'200':
description: The requested brand.
content:
application/json:
schema:
$ref: '#/components/schemas/Brand'
examples:
OrganizationGetBrand200Example:
summary: Default organizationGetBrand 200 response
x-microcks-default: true
value:
id: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name: Brand name 1
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.read
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/organization/v1/organization/brands:
get:
tags:
- Organization Endpoints
summary: Otter Get the List of Brands of the Organization Managed by the User.
operationId: organizationListBrands
parameters:
- $ref: '#/components/parameters/limit-2'
- $ref: '#/components/parameters/opaquePaginationToken'
responses:
'200':
description: The list of brands that belong to the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ListBrandsResponse'
examples:
OrganizationListBrands200Example:
summary: Default organizationListBrands 200 response
x-microcks-default: true
value:
items:
- id: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name: Brand name 1
offsetToken: H12MAF2fFaFFFa
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.read
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/organization/v1/organization/brands/{brandId}/stores/{storeId}:
get:
tags:
- Organization Endpoints
summary: Otter Get a Store of the Organization Managed by the User.
operationId: organizationGetStore
parameters:
- $ref: '#/components/parameters/brandId'
- $ref: '#/components/parameters/storeId'
responses:
'200':
description: The requested store.
content:
application/json:
schema:
$ref: '#/components/schemas/Store'
examples:
OrganizationGetStore200Example:
summary: Default organizationGetStore 200 response
x-microcks-default: true
value:
id: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name: Store name 1
address:
fullAddress: 123 Sample Street Ste 100, San Francisco, CA 94103
postalCode: '20500'
city: Washington
state: DC
countryCode: US
addressLines: &id004
- 1600 Pennsylvania Avenue NW
- 123 Sample Street Ste 100, San Francisco, CA 94103
linesOfAddress: &id005
- 1600 Pennsylvania Avenue NW
- 123 Sample Street Ste 100, San Francisco, CA 94103
location: {}
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.read
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/organization/v1/organization/brands/{brandId}/stores:
get:
tags:
- Organization Endpoints
summary: Otter Get the List of Stores of a Given Brand.
operationId: organizationListStores
parameters:
- $ref: '#/components/parameters/brandId'
- $ref: '#/components/parameters/limit-2'
- $ref: '#/components/parameters/opaquePaginationToken'
responses:
'200':
description: The list of stores of the selected brand.
content:
application/json:
schema:
$ref: '#/components/schemas/ListStoresResponse'
examples:
OrganizationListStores200Example:
summary: Default organizationListStores 200 response
x-microcks-default: true
value:
items:
- id: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name: Store name 1
address: {}
offsetToken: H12MAF2fFaFFFa
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.read
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/organization/v1/organization/brands/{brandId}/stores/{storeId}/connection:
get:
tags:
- Organization Endpoints
summary: Otter Get the Partner Application Connection with the Selected Store.
operationId: organizationGetConnection
parameters:
- $ref: '#/components/parameters/brandId'
- $ref: '#/components/parameters/storeId'
responses:
'200':
description: The information about the partner application connection.
content:
application/json:
schema:
$ref: '#/components/schemas/Connection'
examples:
OrganizationGetConnection200Example:
summary: Default organizationGetConnection 200 response
x-microcks-default: true
value:
storeId: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.service_integration
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
tags:
- Organization Endpoints
summary: Otter Create a Connection for the Partner Application with the Selected Store.
operationId: organizationCreateConnection
parameters:
- $ref: '#/components/parameters/brandId'
- $ref: '#/components/parameters/storeId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConnectionRequest'
examples:
OrganizationCreateConnectionRequestExample:
summary: Default organizationCreateConnection request
x-microcks-default: true
value:
storeId: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
required: true
responses:
'204':
description: The connection was successfully created.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'409':
$ref: '#/components/responses/409'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.service_integration
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
tags:
- Organization Endpoints
summary: Otter Delete the Connection Between the Partner Application and the Selected Store.
operationId: organizationDeleteConnection
parameters:
- $ref: '#/components/parameters/brandId'
- $ref: '#/components/parameters/storeId'
responses:
'204':
description: The connection was successfully deleted.
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- organization.service_integration
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/market-intel/discovered-stores:
post:
tags:
- Market Intel Endpoints
summary: Otter Notify Stores Discovered at the Geolocations
operationId: postDiscoverStoresResult
parameters:
- $ref: '#/components/parameters/eventIdOptionalHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DiscoverStoresEventResult'
examples:
PostDiscoverStoresResultRequestExample:
summary: Default postDiscoverStoresResult request
x-microcks-default: true
value:
storesDiscovered:
- storeDetails: {}
locationBasedInformation: {}
storeRankings:
- category: Fast Food
ids:
- 123456
location: {}
required: true
responses:
'204':
description: The stores discovered updates are successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- marketintel.service_integration
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/market-intel/store-details:
post:
tags:
- Storefront Endpoints
summary: Otter Notify About Store Details Update
operationId: postGetStoreDetailsResult
parameters:
- $ref: '#/components/parameters/eventIdOptionalHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetStoreDetailsEventResult'
examples:
PostGetStoreDetailsResultRequestExample:
summary: Default postGetStoreDetailsResult request
x-microcks-default: true
value:
superRegion: LATAM
storeDetails:
- regionId: LATAM-N
provider: ubereats-provider
id: 12345
storeUrl: 30
location: {}
address: {}
phoneNumbers:
- 613-123-4567
storeName: McDonald's
menu: {}
storeHours: {}
tags:
- chinese
storeBannerPhotoUrl: https://www.ubereats.com/ca/store/mcdonalds-1000-rideau-street/1QY5X6QcQX2Q4Z3Z3QZQYQ.jpg
storeRating: {}
coordinates: {}
storeSales: {}
avgBasketAmount: 25.21
storePromotions:
- {}
storeChain: {}
storeDeliveryInformation: {}
logoPhotoUrl: https://www.ubereats.com/ca/store/mcdonalds-1000-rideau-street/1QY5X6QcQX2Q4Z3Z3QZQYQ.jpg
priceLevel: {}
required: true
responses:
'204':
description: The store details updates were successfully processed
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- marketintel.service_integration
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/loyalty/v1/{source}/user/enrollment-config:
get:
tags:
- Manager Loyalty Endpoints
summary: Otter Get Enrollment Config for a Loyalty Provider
description: "`RATE LIMIT: 8 per minute`\n"
operationId: getEnrollmentConfig
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source-2'
responses:
'200':
description: Enrollment config for the loyalty provider.
content:
application/json:
schema:
$ref: '#/components/schemas/GetEnrollmentConfigResponse'
examples:
GetEnrollmentConfig200Example:
summary: Default getEnrollmentConfig 200 response
x-microcks-default: true
value:
enrollmentFields:
- key: full_name
required: true
type: FULL_NAME
label: First Name and Last Name
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/loyalty/v1/{source}/user:
get:
tags:
- Manager Loyalty Endpoints
summary: Otter Get User by Id
description: "`RATE LIMIT: 8 per minute`\n"
operationId: getUser
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source-2'
- $ref: '#/components/parameters/id'
responses:
'200':
description: Get user response.
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserResponse'
examples:
GetUser200Example:
summary: Default getUser 200 response
x-microcks-default: true
value:
userAccount:
id: somestring
userFields:
- {}
balances:
- {}
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
tags:
- Manager Loyalty Endpoints
summary: Otter Create a Loyalty User
description: "`RATE LIMIT: 8 per minute`\n"
operationId: createUser
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source-2'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
examples:
CreateUserRequestExample:
summary: Default createUser request
x-microcks-default: true
value:
userFields:
- key: full_name
value: john doe
required: true
responses:
'200':
description: Create user response.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserResponse'
examples:
CreateUser200Example:
summary: Default createUser 200 response
x-microcks-default: true
value:
user:
id: somestring
userFields:
- {}
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/loyalty/v1/{source}/user/search:
get:
tags:
- Manager Loyalty Endpoints
summary: Otter Search Loyalty Users
description: "`RATE LIMIT: 8 per minute`\n"
operationId: searchUsers
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/opaquePaginationToken'
- $ref: '#/components/parameters/limit-3'
- $ref: '#/components/parameters/source-2'
- $ref: '#/components/parameters/term'
responses:
'200':
description: Search users response.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchUsersResponse'
examples:
SearchUsers200Example:
summary: Default searchUsers 200 response
x-microcks-default: true
value:
users:
- id: somestring
userFields:
- {}
offsetToken: H12MAF2fFaFFFa
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/loyalty/v1/{source}/rewards/evaluate:
post:
tags:
- Manager Loyalty Endpoints
summary: Otter Compute Applicable Rewards
description: "`Supply both userId and order to get a list of applicable rewards for an order. Supply only userId to get a list of rewards the user can redeem` `RATE LIMIT: 8 per minute`\n"
operationId: computeApplicableRewards
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source-2'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ComputeApplicableRewardsRequest'
examples:
ComputeApplicableRewardsRequestExample:
summary: Default computeApplicableRewards request
x-microcks-default: true
value:
userId: someidstring
order:
id: someidstring
currencyCode: USD
items:
- {}
totals: {}
required: true
responses:
'200':
description: Compute applicable rewards response.
content:
application/json:
schema:
$ref: '#/components/schemas/ComputeApplicableRewardsResponse'
examples:
ComputeApplicableRewards200Example:
summary: Default computeApplicableRewards 200 response
x-microcks-default: true
value:
rewards:
- id: someidstring
type: SUBTOTAL
cost: 20
costType: POINT
trigger: {}
subtotal: {}
menus:
- {}
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/loyalty/v1/{source}/rewards/simulate:
post:
tags:
- Manager Loyalty Endpoints
summary: Otter Simulate Rewards
description: "`Show what the effects will be after applying the selected rewards, and start the rewards transaction, only call this when user selected some reward, otherwise skip this call and use redeemAndAccumulateRewards API call.` `RATE LIMIT: 8 per minute`\n"
operationId: simulateRewards
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source-2'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SimulateRewardsRequest'
examples:
SimulateRewardsRequestExample:
summary: Default simulateRewards request
x-microcks-default: true
value:
userId: someidstring
order:
id: someidstring
currencyCode: USD
items:
- {}
totals: {}
selectedRewards:
- id: someidstring
amount: 19.07
menus: {}
required: true
responses:
'200':
description: Simulate rewards response.
content:
application/json:
schema:
$ref: '#/components/schemas/SimulateRewardsResponse'
examples:
SimulateRewards200Example:
summary: Default simulateRewards 200 response
x-microcks-default: true
value:
transactionId: someidstring
rewardEffect:
subtotal: {}
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/loyalty/v1/{source}/rewards/redeem-and-accumulate:
post:
tags:
- Manager Loyalty Endpoints
summary: Otter Redeem and Accumulate Rewards
description: "`Redeem existing rewards and accumulate new rewards` `RATE LIMIT: 8 per minute`\n"
operationId: redeemAndAccumulateRewards
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source-2'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RedeemAndAccumulateRewardsRequest'
examples:
RedeemAndAccumulateRewardsRequestExample:
summary: Default redeemAndAccumulateRewards request
x-microcks-default: true
value:
userId: someidstring
order:
id: someidstring
currencyCode: USD
items:
- {}
totals: {}
selectedRewards:
- id: someidstring
amount: 19.07
menus: {}
required: true
responses:
'200':
description: Redeem and accumulate response.
content:
application/json:
schema:
$ref: '#/components/schemas/RedeemAndAccumulateRewardsResponse'
examples:
RedeemAndAccumulateRewards200Example:
summary: Default redeemAndAccumulateRewards 200 response
x-microcks-default: true
value:
transactionId: someidstring
rewardEffect:
subtotal: {}
accumulatedRewards:
- amount: 19.07
type: POINT
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/manager/loyalty/v1/{source}/rewards/refund:
post:
tags:
- Manager Loyalty Endpoints
summary: Otter Refund Rewards
description: "`RATE LIMIT: 8 per minute`\n"
operationId: refundRewards
parameters:
- $ref: '#/components/parameters/storeIdHeader'
- $ref: '#/components/parameters/source-2'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RefundRewardsRequest'
examples:
RefundRewardsRequestExample:
summary: Default refundRewards request
x-microcks-default: true
value:
userId: someidstring
orderId: someidstring
required: true
responses:
'200':
description: Refund rewards response.
content:
application/json:
schema:
$ref: '#/components/schemas/RefundRewardsResponse'
examples:
RefundRewards200Example:
summary: Default refundRewards 200 response
x-microcks-default: true
value:
transactionId: someidstring
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- manager.loyalty
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/v1/eater/order-history:
post:
tags:
- Direct Orders Endpoints
summary: Otter Query Eater's Related History Orders
description: "`Provide an external eater ID to get a list of order related to that eater.`\n"
operationId: eaterOrderHistory
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/EaterOrderHistoryRequest'
required: true
responses:
'200':
description: Eater order history response.
content:
application/json:
schema:
$ref: '#/components/schemas/EaterOrderHistoryResponse'
examples:
EaterOrderHistory200Example:
summary: Default eaterOrderHistory 200 response
x-microcks-default: true
value:
orders:
- id: 69f60a06-c335-46d9-b5a1-97f1a211c514
status: NEW_ORDER
items:
- {}
orderedAt: '2007-12-03T10:15:30+01:00'
orderTotal: 19.07
currencyCode: USD
pickupTime: '2007-12-03T10:15:30+01:00'
store: {}
orderAgainUrl: /store/0179860e-8a89-39c2-b9b1-7276683d09f1
nextPageToken: H12MAF2fFaFFFa
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'422':
$ref: '#/components/responses/422'
security:
- OAuth2.0:
- direct.orders
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
securitySchemes:
OAuth2.0:
type: oauth2
description: "The **Authorization API** is based on the [OAuth2.0 protocol](https://tools.ietf.org/html/rfc6749), supporting the (Client Credentials)[https://datatracker.ietf.org/doc/html/rfc6749#section-4.4] and the (Authorization Code)[https://datatracker.ietf.org/doc/html/rfc6749#section-4.1] flows. Resources expect a valid token sent as a `Bearer` token in the HTTP `Authorization` header.\n### Scopes\nScopes must be configured by our internal team to be enabled for an app. Once the scopes are configured they can be enabled on the Application Settings Page in Developer Portal. Each endpoint requires a given scope that can be verified on each endpoint documentation. When generating an OAuth2.0 token multiple scopes can be requested.\n\n### Authorization Code Flow\nTo perform this flow, the authorization code flow must be enabled in the Application Settings Page in Developer Portal. When enabling the flow it is mandatory to provide a redirect URI pointing to your application. Once the flow is complete we will redirect the user to this URI passing the 'code' and 'state' parameters.\nThe Authorization Code flow provides a temporary code that the client application can exchange for an access token. To start the flow the application must request the user authorization. This is done by sending a request to https://{{public-api-url}}/v1/auth/oauth2/authorize.\nExample\n```\ncurl --location 'https://{{public-api-url}}/v1/auth/oauth2/authorize?client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]&response_type=code&scope=organization.read&state=8A9D16B4C3E25F6A'\n```\nThis call will return a 302 redirecting the user to our authorization page. If the user approves the application, we will redirect to configured URI passing the authorization code in the query parameter 'code'. The 'state' parameter is also sent to ensure the source of the data.\nWith the authorization code, the client application can generate the token.\n### Client Credentials Flow\nThe client_credentials flow does not require any steps before generating the token. Once your application is ready, and the client_id and client_secret are available, the token can be generated by following the instructions in the next section.\n\n### Generate Token\nTo generate the token, use the `Client ID` and `Client Secret` (provided during onboarding), and optionally the authorization code obtained after performing the Authorization Code flow, to the [Token Auth endpoint](#operation/requestToken) endpoint. The result of this invocation is a token that is valid for a pre-determined time or until it is manually revoked.\n\nThe access token obtained will be sent as a `Bearer` value of the `Authorization` HTTP header.\n\nClient credentials in the request-body and HTTP Basic Auth are supported.\n\n#### Request Example for client_credentials\n```\ncurl --location --request POST 'https://{{public-api-url}}/v1/auth/token' \\\n --header 'Content-Type: application/x-www-form-urlencoded' \\\n --data-urlencode 'scope=ping' \\\n --data-urlencode 'grant_type=client_credentials' \\\n --data-urlencode 'client_id=[APPLICATION_ID]' \\\n --data-urlencode 'client_secret=[CLIENT_SECRET]'\n\n```\n#### Request Example for authorization_code\n```\ncurl --location --request POST 'https://{{public-api-url}}/v1/auth/token' \\\n --header 'Content-Type: application/x-www-form-urlencoded' \\\n --data-urlencode 'scope=ping' \\\n --data-urlencode 'grant_type=authorization_code' \\\n --data-urlencode 'client_id=[APPLICATION_ID]' \\\n --data-urlencode 'client_secret=[CLIENT_SECRET]' \\\n --data-urlencode 'code=[code]' \\\n --data-urlencode 'redirect_uri=[redirect_uri]'\n\n```\n#### Response Example\n```\n{\n \"access_token\": \"oMahtBwBbnZeh4Q66mSuLFmk2V0_CLCKVt0aYcNJlcg.yditzjwCP7yp0PgR6AzQR3wQ1rTdCjkcPeAMuyfK-NU\",\n \"expires_in\": 2627999,\n \"scope\": \"ping orders.create\",\n \"token_type\": \"bearer\"\n}\n```\n\n### Token Usage\n\nThe token provided in field `access_token` is used to authenticate when consuming the API endpoints. Send the token value in the `Authorization` header of every
request. The token expiration time is represented in the field `expired_in`, in seconds. Currently, all tokens are valid for 30 days and should be stored and re-used while still valid.\n\nNote that occasionally, a 401 error may be returned for a valid token due to an internal service issue. Such occurrences should be rare. To prevent exposing potential vulnerabilities to attackers, the Public API does not disclose other types of errors in the authentication flow if for any reason the token can't be validated (when it's a valid token then it's ok to return 5XX or other 4XX though - such as 403). In such scenarios, although the internal auth flow avoids retries to prevent attacks, if the token is known to be valid and not expired, a retry with a backoff interval by the client is advised. Another option is to request a new token.\n\n#### Example\n\n```\ncurl --location --request GET 'https://{{public-api-url}}/v1/ping' \\\n --header 'Authorization: Bearer ' \\\n --header 'X-Store-Id: '\n\n```\n"
flows:
clientCredentials:
tokenUrl: /v1/auth/token
scopes:
catalog: Permission to interact with product inventory for existing stores.
delivery.provider: Permission to provide delivery services for existing orders.
finance: Permission to provide financial data for orders/stores.
manager.menus: Permission to manage menus.
manager.orders: Permission to manage orders.
manager.storefront: Permission to manage storefront.
menus.async_job.read: Permission to read the status of a menu upsert job.
menus.entity_suspension: Permission to notify the result of a menu entity availability update, after being requested by a webhook event.
menus.get_current: Permission to send the current state of a menu, after being requested by a webhook event.
menus.publish: Permission to notify the result of a publish menus operation for a given store.
menus.read: Permission to read the current menus for a given store.
menus.upsert: Permission to create/update menus for a given store.
menus.upsert_hours: Permission to notify the receiving of the upsert hours menu event, after being requested by a webhook event.
orders.create: Permission to create new order for a given store.
orders.read: Permission to read orders and connected data.
orders.update: Permission to create and update new orders for a given store.
ping: Permission to ping the system.
reports.generate_report: Permission to request reports for given store(s) and period of time.
reviews.reply: Permission to reply to reviews.
storefront.store_pause_unpause: Permission to notify the result of a pause/unpause operation, after being requested by a webhook event.
storefront.store_availability: Permission to send the current state of store.
storefront.store_hours_configuration: Permission to send the current store hours configuration.
stores.manage: Permission to onboard stores and update the identifier.
callback.error.write: Token has permission to send failed webhook event results.
manager.loyalty: Permission to interact with loyalty services.
direct.orders: Permission to interact with direct order services.
store.read: Permission to query store information.
authorizationCode:
authorizationUrl: /v1/auth/oauth2/authorize
tokenUrl: /v1/auth/token
scopes:
organization.read: Permission to read data for organization/brands/stores on behalf of a user.
organization.service_integration: Permission to manage the your integration with a given store on behalf of a user.
schemas:
StoreId:
type: string
description: The unique identifier of the store in the partner application. This ID, along with the `Application ID`, will be used to match the correct store when performing operations. It cannot be longer than 255 characters and must only contain printable ASCII characters. During on-boarding, this ID will be similar to `onboarding:905bb725-b141-4a9b-832a-1f254f772c94` (where the UUID is the Internal Store ID). During off-boarding, this field will be filled with the last known Store ID, or with an empty string, in case none is found. In that case, please fall back to the provided `internalStoreId` (a.k.a. Sku-Sku ID).
example: partner-store-unique-identifier
SourceExternalIdentifiers:
type: object
nullable: true
properties:
id:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
friendlyId:
type: string
description: ID used for driver pickup and restaurant management.
example: ABCDE
source:
type: string
description: Describes the source of the order, typically from a food ordering marketplace.
example: ubereats
sourceType:
type: string
description: source type of the order
enum:
- POINT_OF_SALE
- ORDERING_MARKETPLACE
- AGGREGATOR
- CUSTOMER_INTERACTION
example: POINT_OF_SALE
sourceExternalIdentifiers:
nullable: true
$ref: '#/components/schemas/SourceExternalIdentifiers'
description: The external identifiers.
OrderExternalIdentifiers:
required:
- friendlyId
- id
type: object
properties:
id:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
friendlyId:
type: string
description: ID used for driver pickup and restaurant management.
example: ABCDE
source:
type: string
nullable: true
description: Describes the source of the order, typically from a food ordering marketplace.
example: ubereats
sourceType:
type: string
nullable: true
description: source type of the order
enum:
- POINT_OF_SALE
- ORDERING_MARKETPLACE
- AGGREGATOR
- CUSTOMER_INTERACTION
example: POINT_OF_SALE
sourceExternalIdentifiers:
nullable: true
$ref: '#/components/schemas/SourceExternalIdentifiers'
description: The external identifiers.
ItemModifier:
required:
- quantity
type: object
properties:
quantity:
minimum: 1
maximum: 1000
type: integer
description: The number of times the modifier was applied to the given item.
format: int32
example: 1
skuPrice:
type: number
nullable: true
description: The stored sku price of this item
readOnly: true
example: 1
id:
type: string
nullable: true
description: The unique ID of the modifier product.
example: d7a21692-9195-43aa-a58f-5395bba8a804
lineItemId:
type: string
nullable: true
description: The unique ID of the instance of a modifier in an order. Instances of the same modifier across different orders will have different line item IDs. Multiple instances of the same modifier in one order will have different line item IDs if their modifiers are different.
readOnly: true
example: 2f91f9f3-2d7e-4898-ae81-00fe06ed7dbf
skuId:
type: string
nullable: true
description: sku ID of the item.
example: 867b8fdc-cf7b-4fc3-b7e0-4c7b68d8b1cc
name:
type: string
nullable: true
description: The name of the modifier as displayed to the customer.
example: Avocado
price:
type: number
nullable: true
description: The price of the sold modifier.
example: 1
groupName:
type: string
nullable: true
description: The parent group of the modifier item
example: Add ons
groupId:
type: string
nullable: true
description: The unique ID of the parent group
example: fb52b138-7ac4-42c1-bfd8-664d57113a41
stationId:
type: string
nullable: true
description: The ID of the station the modifier item is assigned to.
readOnly: true
example: a49cbd3e-94e2-462d-a6de-1985e5d98d1c
modifiers:
type: array
nullable: true
description: Nested modifiers applied to the item.
maxItems: 100
items:
$ref: '#/components/schemas/ItemModifier'
Item:
required:
- quantity
type: object
properties:
quantity:
minimum: 1
maximum: 1000
type: integer
description: The quantity of the item ordered by the customer.
format: int32
example: 1
skuPrice:
type: number
nullable: true
description: The stored sku price of this item
readOnly: true
example: 5.9
id:
type: string
nullable: true
description: The unique ID of the item.
example: 33e0418f-3d56-4360-ba03-18fc5f8844a3
lineItemId:
type: string
nullable: true
description: The unique ID of the instance of an item in an order. Instances of the same item across different orders will have different line item IDs. Multiple instances of the same item in one order will have different line item IDs if their modifiers are different.
readOnly: true
example: 2f91f9f3-2d7e-4898-ae81-00fe06ed7dbf
skuId:
type: string
nullable: true
description: sku ID of the item.
example: 867b8fdc-cf7b-4fc3-b7e0-4c7b68d8b1cc
name:
type: string
nullable: true
description: The name of the item as displayed to the customer.
example: Juicy Cheeseburger
note:
type: string
nullable: true
description: An optional item-level note provided by the customer.
example: Please cook to well done!
categoryId:
deprecated: true
type: string
nullable: true
description: The unique ID of the category of this item.
example: 303de078-870d-4349-928b-946869d4d69b
internalCategoryId:
type: string
nullable: true
description: Otter's internal identifier for the item's category
example: 76a66bba-48fb-4bac-80ee-2616a5ca1ab9
categoryName:
deprecated: true
type: string
nullable: true
description: The name of the category of this item.
example: Burgers
internalCategoryName:
type: string
nullable: true
description: Otter's internal name for the item's category
example: Burgers
stationId:
type: string
nullable: true
description: The ID of the station the item is assigned to.
readOnly: true
example: 5247b8a1-77de-4844-b024-cb59fcec59bd
price:
type: number
nullable: true
description: The price of the sold item.
example: 5.9
modifiers:
type: array
nullable: true
description: Modifiers to the base item.
maxItems: 100
items:
$ref: '#/components/schemas/ItemModifier'
PersonalIdentifiers:
type: object
nullable: true
properties:
taxIdentificationNumber:
type: string
nullable: true
description: Person tax identification number.
example: 1234567890
serviceProviderId:
type: string
nullable: true
description: External service provider ID i.e. Courier Id.
example: 12345ba6-789e-123f-4e56-d78db90d123b
description: The person's personal identifiers (e.g. tax identification number).
Person:
type: object
nullable: true
properties:
name:
type: string
nullable: true
description: The person's name as it should be displayed.
example: Jane Doe
maxLength: 255
phone:
type: string
nullable: true
description: The person's phone number.
example: +1-555-555-5555
maxLength: 25
phoneCode:
type: string
nullable: true
description: A code or extension of the phone number.
example: 111 11 111
maxLength: 25
email:
type: string
nullable: true
description: The person's email address.
example: email@email.com
personalIdentifiers:
$ref: '#/components/schemas/PersonalIdentifiers'
description: The recipient information.
Courier:
type: object
nullable: true
properties:
name:
type: string
description: The person's name as it should be displayed.
nullable: true
example: Jane Doe
phone:
type: string
description: The person's phone number.
nullable: true
example: +1-555-555-5555
phoneCode:
type: string
nullable: true
description: A code or extension of the phone number.
example: 111 11 111
email:
type: string
description: The person's email address.
nullable: true
example: email@email.com
personalIdentifiers:
$ref: '#/components/schemas/PersonalIdentifiers'
description: Details about the delivery courier.
Location:
required:
- latitude
- longitude
type: object
nullable: true
properties:
latitude:
type: number
description: The latitude of the location.
format: double
example: 38.8977
longitude:
type: number
description: The longitude of the location.
format: double
example: 77.0365
description: Latitude and longitude of the address.
Address:
type: object
nullable: true
properties:
fullAddress:
type: string
nullable: true
description: Full, human comprehensible address. It is usually formatted in the order appropriate for your locale.
example: 123 Sample Street Ste 100, San Francisco, CA 94103
postalCode:
type: string
description: Postal code of the address.
example: '20500'
city:
type: string
description: The city/town portion of the address.
example: Washington
state:
type: string
description: Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, or a prefecture.
example: DC
countryCode:
type: string
description: CLDR country code. See http://cldr.unicode.org/
example: US
addressLines:
type: array
nullable: true
description: Address lines (e.g. street, PO Box, or company name) or the full single line address (e.g. street, city, state, country, zip).
example: *id004
items:
type: string
linesOfAddress:
type: array
nullable: true
deprecated: true
description: 'Deprecated: use addressLines. Address lines (e.g. street, PO Box, or company name) or the full single line address (e.g. street, city, state, country, zip).'
example: *id005
items:
type: string
location:
$ref: '#/components/schemas/Location'
description: Order delivery address.
SignatureRequirement:
type: object
nullable: true
properties:
enabled:
type: boolean
description: Marks the signature requirement as required.
example: true
collectSignerName:
type: boolean
description: Whether the signer's name should be collected.
example: true
collectSignerRelationship:
type: boolean
description: Whether the signer's relationship with the intended recipient should be collected.
example: true
description: Enables and configure the signature requirement.
PictureRequirement:
type: object
nullable: true
properties:
enabled:
type: boolean
description: Marks the picture requirement as required.
example: true
description: Enables and configure the picture requirement.
VerificationRequirements:
type: object
nullable: true
properties:
signatureRequirement:
$ref: '#/components/schemas/SignatureRequirement'
pictureRequirement:
$ref: '#/components/schemas/PictureRequirement'
description: Verification requirements for the delivery.
DropoffInstructions:
type: object
nullable: true
properties:
dropoffType:
type: string
description: The drop-off type for the delivery.
enum:
- MEET_AT_DOOR
- LEAVE_AT_DOOR
- MEET_IN_LOBBY
example: MEET_AT_DOOR
verificationRequirements:
$ref: '#/components/schemas/VerificationRequirements'
description: Requirements to verify the completion of the delivery.
DeliveryInfo:
type: object
nullable: true
properties:
courier:
$ref: '#/components/schemas/Courier'
destination:
$ref: '#/components/schemas/Address'
licensePlate:
type: string
nullable: true
description: License plate of a vehicle used by the courier.
example: ABC 123
makeModel:
type: string
nullable: true
description: Make and model of a vehicle used by the courier.
example: Honda CR-V
lastKnownLocation:
$ref: '#/components/schemas/Location'
dropoffInstructions:
$ref: '#/components/schemas/DropoffInstructions'
note:
type: string
nullable: true
description: Special delivery instructions, if any.
example: Gate code 123
description: Information on order's delivery process.
OrderTotal:
required:
- subtotal
type: object
properties:
subtotal:
type: number
description: The order's subtotal, as the sum of all item and modifier prices.
example: 11.97
claimedSubtotal:
type: number
nullable: true
description: The order's claimed subtotal, without guaranteeing this will match calculated subtotal.
example: 1.0
discount:
type: number
nullable: true
description: Any discount amount for the order.
example: 1
tax:
type: number
nullable: true
description: Tax paid by the customer.
example: 1.1
tip:
type: number
nullable: true
description: Tip paid by the customer.
example: 2
deliveryFee:
type: number
nullable: true
description: Delivery fee.
example: 5
total:
type: number
nullable: true
description: Order total including everything paid by the customer.
example: 19.07
couponCode:
type: string
nullable: true
description: Coupon code applied to the order.
example: VWXYZ98765
description: Details about values of the order.
SimpleFinanceLine:
required:
- subType
- name
- value
type: object
properties:
subType:
type: string
nullable: false
enum:
- VALUE
- TAX
- VALUE_WITH_TAX
- VAT
description: type of the finance line.
example: VALUE
name:
type: string
nullable: false
description: name of the finance line.
example: sales tax.
value:
type: number
nullable: false
description: money amount.
example: 3.4
description: simple finance line.
CompositeFinanceLine:
required:
- breakdown
type: object
properties:
breakdown:
type: array
minItems: 1
description: Breakdown values for the finance line.
items:
$ref: '#/components/schemas/SimpleFinanceLine'
description: composite finance line can represent a value, tax and VAT for a given line as a list of SimpleFinanceLine objects
FinancialData:
required:
- foodSales
type: object
properties:
foodSales:
nullable: false
description: Breakdown of the total value of items within the order.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
feeForRestaurantProvidedDelivery:
nullable: true
description: Extra charge to the customer when order is delivered by the store itself.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
restaurantFundedDiscount:
nullable: true
description: Discount funded by the restaurant.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
voucherDiscount:
nullable: true
description: Discount provided by voucher.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
promotionDiscount:
nullable: true
description: Discount provided by item promotion.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
operatorDiscount:
nullable: true
description: Discount provided by operator when the order was placed.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
loyaltyDiscount:
nullable: true
description: Discount provided by loyalty programs.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
tipForRestaurant:
nullable: true
description: Tip for the restaurant.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
adjustments:
nullable: true
description: Any adjustments that may happen to the order total value.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
packingFee:
nullable: true
description: Fee charged to the customer for the process of packing and fulfilling the order.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
bagFee:
nullable: true
description: Fee charged to the customer for providing bags for the order.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
serviceProviderDiscount:
nullable: true
description: Discount funded by the service provider (order source).
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
tipForServiceProviderCourier:
nullable: true
description: Tip for the courier from the service provider.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
feeForServiceProviderDelivery:
nullable: true
description: Fee charged to the customer for a delivery provided by the service provider.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
smallOrderFee:
nullable: true
description: Fee charged to the customer when the order value is less than the minimum value.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
serviceFee:
nullable: true
description: Any service fees charged by the service provider to the customer.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
otherFee:
nullable: true
description: All the extra costs that the customer has to pay, are different from tips, delivery fees, bag fees, packing fees, and service fees.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
netPayout:
nullable: true
description: The net payout received by the store.
allOf:
- $ref: '#/components/schemas/CompositeFinanceLine'
couponCodes:
nullable: true
type: array
items:
type: string
description: Any codes entered by the customer at order checkout.
example: *id006
description: "Breakdown of order values. Represents total values, fees, discounts, and any possible adjustments that may happen in the order value.\n\nBreakdown lists can be used to represent aggregate values (e.g. order total value) or, when available, can accurately represent the values of each item/fee/tax/charges related to the order.\n\nAll objects in breakdown lists have a required property \"subType\". Allowed values are:\n\n**VALUE**: represent the net value of the order/item/fee. Should be used in the following cases:\n - when the amount does not contain taxes or VAT\n - when tax/VAT is a known value, in that case, the list must contain an object with subtype TAX or VAT representing this value.\n\n**TAX**: represent the tax value for the order/item/fee. Should be used when tax amount is available, in that case, this information should be part of the breakdown list with the \"VALUE\" as the net amount, example below:\n\n\n ```\n \"breakdown\": [\n {\n \"name\": \"Item 1\",\n \"value\": 10,\n \"subType\": \"VALUE\"\n },\n {\n \"name\": \"Item 1 - Tax\",\n \"value\": 2,\n \"subType\": \"TAX\"\n }\n ]\n ```\n\n\n**VAT**: represents the amount for value-added tax. Should be used when the order/item/fee contains VAT. In that case, this information should be part of the breakdown list with the \"VALUE\" as net amount, example below:\n\n\n ```\n \"breakdown\": [\n {\n \"name\": \"Item 1\",\n \"value\": 12,\n \"subType\": \"VALUE\"\n },\n {\n \"name\": \"Item 1 - Tax\",\n \"value\": 2,\n \"subType\": \"VAT\"\n }\n ]\n ```\n\n\n**VALUE_WITH_TAX**: represents the gross value of the order/item/fee. Should be used when the value includes tax/VAT and values related to taxation are not available.\n\n\n ```\n \"breakdown\": [\n {\n \"name\": \"Item 1\",\n \"value\": 12,\n \"subType\": \"VALUE_WITH_TAX\"\n }\n ]\n ```"
CustomerPaymentV2:
type: object
nullable: true
properties:
customerPaymentDue:
type: number
nullable: true
description: The portion of the overall order cost that will be collected when the order is delivered, or when picked up by the customer at the store. This field should not be set if the order was pre-paid.
example: 1
customerPrepayment:
type: number
nullable: true
description: The portion of the overall order cost that was paid upfront by the customer (online payment), with the remaining portion in the customerPaymentDue. In most cases the order value will be covered entirely by prepayment or entirely by payment_due. But in some cases mixing is allowed.
example: 1
customerAmountToReturn:
type: number
nullable: true
description: "Change (cash back) to be returned to the customer by the courier or store when the order has payment due value.\n\n Scenario:\n 1. Customer places an order for $7.50.\n 2. In the service app, after selecting Cash as payment type, the customer is presented with an additional field to indicate that order will be paid with a single $20 bill.\n 3. When the order is delivered, the courier should have $12.50 in cash on hand to complete the transaction.\n"
example: 1
paymentDueToRestaurant:
type: number
nullable: true
description: The portion of the overall order cost that was received directly by restaurant/store when the order is delivered or picked up. Should be used when customerPaymentDue is set. If payment due is entirely received by the store, customerPaymentDue and paymentDueToRestaurant will have the same value.
example: 1
description: Details about customer payment.
Payout:
type: object
nullable: true
properties:
payoutFromServiceProvider:
type: number
nullable: true
description: Payout amount that will be received from service provider (usually the order source).
example: 1
payoutFrom3rdParty:
type: number
nullable: true
description: Payout amount that will be received from any 3rd party organization involved.
example: 1
cashPayout:
type: number
nullable: true
description: Payout amount received from orders paid in cash directly to the store.
example: 1
description: Details on payout.
OrderTotalV2:
required:
- customerTotal
type: object
nullable: true
properties:
customerTotal:
nullable: false
allOf:
- $ref: '#/components/schemas/FinancialData'
customerPayment:
nullable: true
description: The customer perspective, each price field in this model is meant to represent the values the customer paid/received and how. Values must match amounts and payment methods described in customerPayments.
allOf:
- $ref: '#/components/schemas/CustomerPaymentV2'
payout:
nullable: true
description: Breakdown of net payout received by the store. Optional object, should be provided when payout information is available during the order lifecycle.
allOf:
- $ref: '#/components/schemas/Payout'
description: V2 for details about values of the order, provides richer objects allowing to capture taxes, misc charges, payments more precisely.
CardInfo:
required:
- paymentNetwork
- type
type: object
nullable: true
deprecated: true
description: Additional card information.
properties:
paymentNetwork:
type: string
description: The payment network (aka card brand or card scheme) for this card.
enum:
- MASTERCARD
- MASTERCARD_MAESTRO
- VISA
- AMEX
- DINERS
- ELO
- HIPERCARD
- BANRICOMPRAS
- NUGO
- GOODCARD
- ELO_MAIS
- GREENCARD
- VEROCARD
- COOPER
- NUTRICARD
- VR
- SODEXO
- OTHER
example: MASTERCARD
type:
type: string
description: The payment type of the card.
enum:
- CREDIT
- DEBIT
- VOUCHER
- OTHER
example: CREDIT
RecordProviderType:
type: string
enum:
- ALLINPAY
- CHECKOUT
- CSS
- MERCADO_PAGO
- OLIVENETWORKS
- SHOUQIANBA
- STRIPE
- UNIONPAY
- VAN_DAOU
- VAN_JTNET
- VAN_KICC
- VAN_KIS
- VAN_KOVAN
- VAN_KSNET
- VAN_NICE
- VAN_SMARTRO
- UNKNOWN
example: STRIPE
description: The type of payment provider.
RecordPaymentType:
type: string
enum:
- ACH_CREDIT
- ACH_DEBIT
- ACSS_DEBIT
- ALIPAY_MINIAPP
- ALI_PAY
- BACS_DEBIT
- BANK_TRANSFER
- BECS_DEBIT
- BOLETO
- CARD
- CARD_PRESENT
- CASH
- CHECK
- CHECKOUT_SESSION
- ETC
- EXTERNAL_CASH_BALANCE
- GIFT_CARD
- INTERNAL_CASH_BALANCE
- KAKAO_PAY
- LIABILITY_BALANCE
- LINKED_BANK_ACCOUNT
- NAVER_PAY
- PIX
- QRCODE
- QRCODE_ALIPAY
- QRCODE_WECHAT
- SEPA_DEBIT
- SPEI_BANK_TRANSFER
- WALLET
- WECHAT_PAY
- UNKNOWN
example: CARD
description: The type of payment method.
CardBrandType:
type: string
enum:
- UNKNOWN
- AMEX
- DINERS_CLUB
- DISCOVER
- JCB
- MASTERCARD
- UNION_PAY
- VISA
- GIROCARD
- EFTPOS_AU
- INTERAC
description: The brand of the card.
example: VISA
CardFundingType:
type: string
enum:
- UNKNOWN
- CREDIT
- DEBIT
- PREPAID
description: The funding type of the card.
example: CREDIT
CardWalletType:
type: string
enum:
- UNKNOWN
- APPLE_PAY
- GOOGLE_PAY
description: The type of wallet associated with the card.
example: APPLE_PAY
PaymentDetailsCard:
type: object
description: Details of a card payment method.
properties:
brandType:
$ref: '#/components/schemas/CardBrandType'
expiration:
type: object
properties:
year:
type: integer
description: The expiration year of the card.
example: 2025
month:
type: integer
description: The expiration month of the card.
example: 12
fundingType:
$ref: '#/components/schemas/CardFundingType'
walletType:
$ref: '#/components/schemas/CardWalletType'
lastFour:
type: string
description: The last four digits of the card.
example: '1234'
walletLastFour:
type: string
description: The last four digits of the wallet account.
example: '5678'
authorizationCode:
type: string
description: The authorization code for the card.
example: auth_code_123
applicationPreferredName:
type: string
description: The preferred name of the application.
example: MyApp
fingerprint:
type: string
description: The fingerprint of the card.
example: fingerprint_abc123
readMethod:
type: string
description: The method used to read the card.
example: chip
MandateStatus:
type: string
enum:
- ACTIVE
- INACTIVE
- PENDING
description: The status of the mandate.
example: ACTIVE
PaymentDetailsBacs:
type: object
description: Details of a BACS payment method in the UK.
properties:
mandateStatus:
$ref: '#/components/schemas/MandateStatus'
lastFour:
type: string
description: The last four digits of the BACS account.
example: '9876'
sortCode:
type: string
description: The sort code of the BACS account.
example: 12-34-56
mandateId:
type: string
description: The mandate ID for the BACS account.
example: mandate_123
reference:
type: string
description: The reference for the BACS payment.
example: reference_abc
url:
type: string
description: The URL for the BACS payment details.
example: http://example.com/bacs
PaymentDetailsAcss:
type: object
description: Details of an ACSS payment method in Canada.
properties:
mandateStatus:
$ref: '#/components/schemas/MandateStatus'
acceptedAt:
type: string
format: date-time
description: The timestamp when the mandate was accepted.
example: '2023-01-01T12:00:00Z'
lastFour:
type: string
description: The last four digits of the ACSS account.
example: '6543'
transitNumber:
type: string
description: The transit number of the ACSS account.
example: '11001'
institutionNumber:
type: string
description: The institution number of the ACSS account.
example: '001'
bankName:
type: string
description: The name of the bank.
example: Bank of Examples
mandateId:
type: string
description: The mandate ID for the ACSS account.
example: acss_mandate_456
transactionType:
type: string
description: The type of transaction.
example: recurring
intervalDescription:
type: string
description: The description of the transaction interval.
example: monthly
PaymentDetailsBecs:
type: object
description: Details of a BECS payment method in Australia.
properties:
mandateStatus:
$ref: '#/components/schemas/MandateStatus'
lastFour:
type: string
description: The last four digits of the BECS account.
example: '3210'
bsbNumber:
type: string
description: The BSB number of the BECS account.
example: 062-001
mandateId:
type: string
description: The mandate ID for the BECS account.
example: becs_mandate_789
url:
type: string
description: The URL for the BECS payment details.
example: http://example.com/becs
PaymentDetailsSepa:
type: object
description: Details of a SEPA payment method in EU countries.
properties:
mandateStatus:
$ref: '#/components/schemas/MandateStatus'
lastFour:
type: string
description: The last four digits of the SEPA account.
example: '4321'
branchCode:
type: string
description: The branch code of the SEPA account.
example: branch_001
bankCode:
type: string
description: The bank code of the SEPA account.
example: bank_001
countryCode:
type: string
description: The country code of the SEPA account.
example: DE
mandateId:
type: string
description: The mandate ID for the SEPA account.
example: sepa_mandate_012
reference:
type: string
description: The reference for the SEPA payment.
example: reference_xyz
url:
type: string
description: The URL for the SEPA payment details.
example: http://example.com/sepa
AccountHolderType:
type: string
enum:
- INDIVIDUAL
- COMPANY
description: The type of account holder.
example: INDIVIDUAL
AccountType:
type: string
enum:
- CHECKING
- SAVINGS
description: The type of ACH account.
example: CHECKING
PaymentDetailsAch:
type: object
description: Details of a debit ACH payment method in the US.
properties:
accountHolderType:
$ref: '#/components/schemas/AccountHolderType'
accountType:
$ref: '#/components/schemas/AccountType'
mandateStatus:
$ref: '#/components/schemas/MandateStatus'
lastFour:
type: string
description: The last four digits of the ACH account.
example: '7890'
routingNumber:
type: string
description: The routing number of the ACH account.
example: '123456789'
bankName:
type: string
description: The name of the bank.
example: Example Bank
mandateId:
type: string
description: The mandate ID for the ACH account.
example: ach_mandate_345
PaymentRecord:
type: object
description: Represents the details and metadata of a payment method used in transactions.
properties:
otterPaymentRecordId:
type: string
description: The identifier for the payment record in the Otter system, for reference.
example: otter_123456789
recordProviderType:
description: The type of payment provider.
$ref: '#/components/schemas/RecordProviderType'
recordPaymentType:
description: The type of payment method.
$ref: '#/components/schemas/RecordPaymentType'
paymentRecordId:
type: string
description: The identifier for the payment record from the payment provider.
example: pm_123456789
payerId:
type: string
description: The identifier for the payer from the payment provider.
example: payer_123456789
balanceTransactionId:
type: string
description: The balance transaction ID from the payment provider.
example: ext_bt_123456789
paymentDetails:
description: One of the possible payment method details, depending on the payment method type.
oneOf:
- $ref: '#/components/schemas/PaymentDetailsCard'
- $ref: '#/components/schemas/PaymentDetailsBacs'
- $ref: '#/components/schemas/PaymentDetailsAcss'
- $ref: '#/components/schemas/PaymentDetailsBecs'
- $ref: '#/components/schemas/PaymentDetailsSepa'
- $ref: '#/components/schemas/PaymentDetailsAch'
LoyaltyInfo:
type: object
nullable: true
description: The customer's loyalty information.
properties:
hasMembershipPass:
type: boolean
description: Indicates if the customer has a membership pass.
example: true
CustomerPayment:
required:
- paymentMethod
- processingStatus
- value
type: object
properties:
value:
type: number
description: The portion of the overall amount that needs to be paid.
example: 2
processingStatus:
type: string
description: The processing status of the payment. (PROCESSED is only valid when the payment method is CARD)
enum:
- COLLECTABLE
- PROCESSED
example: COLLECTABLE
paymentMethod:
type: string
description: The method of payment.
enum:
- CASH
- CARD
- UNKNOWN
- OTHER
- CHEQUE
- GIFT_CARD
example: CASH
paymentAuthorizer:
type: string
description: A payment system type responsible for a card transaction (containing information for payment network and payment type).
nullable: true
enum:
- UNKNOWN_TYPE
- OTHER_TYPE
- MASTERCARD
- MASTERCARD_MAESTRO
- MASTERCARD_DEBIT
- VISA
- VISA_DEBIT
- AMEX
- VISA_ELECTORN
- DINERS
- ELO
- ELO_DEBIT
- HIPERCARD
- BANRICOMPRAS
- BANRICOMPRAS_DEBIT
- NUGO
- GOODCARD
- VERDECARD
- CARNET
- CHEF_CARD
- GER_CC_CREDITO
- TERMINAL_BANCARIA
- DEBIT
- QR_CODE
- RAPPI_PAY
- DISCOVER
- VALE_GREEN_CARD_PAPEL
- VALE_GREEN_CARD_CARD
- VALE_REFEISUL
- VALE_VEROCARD
- VALE_VR_SMART
- VALE_SODEXO
- VALE_TICKET_RESTAURANTE
- VALE_ALELO
- VALE_BEN_VIS
- VALE_COOPER_CARD
- NUTRICARD_REFEICAO_E_ALIMENTACAO
- APPLE_PAY_MASTERCARD
- APPLE_PAY_VISA
- APPLE_PAY_AMEX
- GOOGLE_PAY_ELO
- GOOGLE_PAY_MASTERCARD
- GOOGLE_PAY_VISA
- MOVILE_PAY
- MOVILE_PAY_AMEX
- MOVILE_PAY_DINERS
- MOVILE_PAY_ELO
- MOVILE_PAY_HIPERCARD
- MOVILE_PAY_MASTERCARD
- MOVILE_PAY_VISA
- IFOOD_CORP
- LOOP_CLUB
- PAYPAL
- PSE
- PIX
example: UNKNOWN_TYPE
cardInfo:
nullable: true
deprecated: true
$ref: '#/components/schemas/CardInfo'
externalPaymentType:
type: string
description: External payment type string. Should be only used if not mapped by any value of paymentAuthorizer, and it's value is OTHER_TYPE.
nullable: true
example: string
paymentRecords:
type: array
nullable: true
description: '[WIP - in development, not supported yet] List of payment records, including method and card details and ids from payment processing entities.'
items:
$ref: '#/components/schemas/PaymentRecord'
loyaltyInfo:
$ref: '#/components/schemas/LoyaltyInfo'
FulfillmentInfo:
type: object
nullable: true
properties:
pickupTime:
type: string
nullable: true
description: Time (in UTC) specified by the provider when the courier or customer is expected to pick up the order.
format: date-time
example: '2007-12-03T10:15:30+01:00'
estimatedPickupTime:
type: string
nullable: true
description: Time (in UTC) estimated by the platform when the courier or customer is likely to pick up the order. This estimation takes into account preparation time, order readiness, and other logistical factors.
format: date-time
example: '2007-12-03T10:15:30+01:00'
deliveryTime:
type: string
nullable: true
description: Estimated time (in UTC) when the order is expected to be delivered. This should be filled in if FulfillmentMode is delivery.
format: date-time
example: '2007-12-03T10:15:30+01:00'
fulfillmentMode:
type: string
description: How an order is expected to be fulfilled.
default: DELIVERY
enum:
- DELIVERY
- RESTAURANT_DELIVERY
- PICKUP
- DINE_IN
- DRIVE_THROUGH
example: DELIVERY
schedulingType:
type: string
nullable: true
description: Describes whether this order should be cooked as soon as possible, or some time in the future. Please use the pickupTime and/or deliveryTime to indicate when. If no scheduling type is provided, we assume the order should be prepared as soon as possible.
enum:
- ASAP
- FIXED_TIME
example: ASAP
courierStatus:
type: string
nullable: true
description: The status of the courier.
enum:
- COURIER_ASSIGNED
- COURIER_ON_ROUTE_TO_PICKUP
- COURIER_ARRIVED
- COURIER_PICKED_UP_FOOD
- COURIER_COMPLETED
example: COURIER_ASSIGNED
tableIdentifier:
type: string
nullable: true
description: The table identification for dine-in orders.
example: R-45
description: Information on order fulfillment.
PromotionDetails:
type: object
nullable: true
description: Order promotion details.
properties:
externalId:
type: string
description: External promotion identifier.
example: store_123
name:
type: string
description: Promotion name.
example: 20% off, up to $5
value:
type: number
description: Promotion value.
example: 2
PreparationTime:
type: object
nullable: true
description: Preparation time information for an order.
properties:
estimatedPreparationTime:
type: string
description: Preparation time estimated by the order provider. Use the Standard ISO 8601 Duration format (E.g. PT1H30M for 1 hour, 30 minutes).
example: PT30M
Order:
required:
- currencyCode
- externalIdentifiers
- status
type: object
properties:
externalIdentifiers:
$ref: '#/components/schemas/OrderExternalIdentifiers'
currencyCode:
maxLength: 3
minLength: 3
type: string
description: The 3-letter currency code (ISO 4217) to use for all monetary values in this order.
example: EUR
status:
type: string
description: The status of the order.
enum:
- NEW_ORDER
- CONFIRMED
- PICKED_UP
- CANCELED
- FULFILLED
- PREPARED
- REJECTED
- UNKNOWN
example: NEW_ORDER
items:
type: array
description: Items ordered.
maxItems: 100
items:
$ref: '#/components/schemas/Item'
orderedAt:
type: string
nullable: true
description: The date (in UTC) when the order was placed by the customer.
format: date-time
example: '2007-12-03T10:15:30+01:00'
customer:
$ref: '#/components/schemas/Person'
customerNote:
type: string
nullable: true
description: An order-level note provided by the customer.
example: Please include extra napkins!
deliveryInfo:
$ref: '#/components/schemas/DeliveryInfo'
orderTotal:
nullable: true
$ref: '#/components/schemas/OrderTotal'
orderTotalV2:
nullable: true
$ref: '#/components/schemas/OrderTotalV2'
customerPayments:
type: array
nullable: true
description: Details about the payments made by the customer.
items:
$ref: '#/components/schemas/CustomerPayment'
fulfillmentInfo:
$ref: '#/components/schemas/FulfillmentInfo'
promotionsDetails:
type: array
nullable: true
description: '[WIP - in development, not supported yet] Details about the promotions applied to this order. The sum of values should be equal to the sum of order total discounts."'
items:
$ref: '#/components/schemas/PromotionDetails'
preparationTime:
nullable: true
$ref: '#/components/schemas/PreparationTime'
description: An order placed by a customer.
OrderReference:
required:
- externalIdentifiers
- storeId
type: object
properties:
externalIdentifiers:
$ref: '#/components/schemas/OrderExternalIdentifiers'
storeId:
type: string
description: The identifier of the store.
example: ckdss-store-id
description: An order reference.
ErrorDetail:
type: object
properties:
attribute:
type: string
description: The error attribute.
example: Order Currency Code
message:
type: string
description: The error detail description.
example: Order Currency Code must be exactly 3 characters
description: The error detail response object.
ErrorMessage:
type: object
properties:
message:
type: string
description: The error description.
example: The request body is invalid.
details:
type: array
description: The error details.
items:
$ref: '#/components/schemas/ErrorDetail'
description: The error response object.
OrderStatusUpdateRequest:
required:
- orderStatus
type: object
properties:
orderStatus:
type: string
description: The requested status to transition the order to.
enum:
- PREPARED
- CANCELED
- FULFILLED
example: PREPARED
description: The request to change an order status.
OrderCustomerPaymentUpdateRequest:
required:
- currencyCode
- customerPayment
type: object
properties:
currencyCode:
maxLength: 3
minLength: 3
type: string
description: The 3-letter currency code (ISO 4217) to use for all monetary values in this order.
example: EUR
customerPayment:
type: array
description: The requested customer payment to transition the order to.
items:
$ref: '#/components/schemas/CustomerPayment'
orderTotal:
nullable: true
$ref: '#/components/schemas/OrderTotal'
orderTotalsV2:
nullable: true
$ref: '#/components/schemas/OrderTotalV2'
description: The request to update customer payment for an order.
RequiredDeliveryInfo:
type: object
properties:
courier:
$ref: '#/components/schemas/Courier'
destination:
$ref: '#/components/schemas/Address'
licensePlate:
type: string
nullable: true
description: License plate of a vehicle used by the courier.
example: ABC 123
makeModel:
type: string
nullable: true
description: Make and model of a vehicle used by the courier.
example: Honda CR-V
lastKnownLocation:
$ref: '#/components/schemas/Location'
dropoffInstructions:
$ref: '#/components/schemas/DropoffInstructions'
note:
type: string
nullable: true
description: Special delivery instructions, if any.
example: Gate code 123
description: Information on order's delivery process.
OrderDeliveryInfoUpdateRequest:
required:
- deliveryInfo
type: object
properties:
deliveryInfo:
$ref: '#/components/schemas/RequiredDeliveryInfo'
description: The request to update an order delivery info status.
UploadPastOrdersRequest:
required:
- orders
type: object
properties:
orders:
type: array
description: The past orders you are trying to upload
maxItems: 100
items:
$ref: '#/components/schemas/Order'
description: The request to create past orders (read only).
UploadPastOrdersResponse:
required:
- orderReferences
type: object
properties:
orderReferences:
type: array
description: References for orders that were successfully uploaded.
items:
$ref: '#/components/schemas/OrderReference'
description: The response to create a past order (read only).
OrderIdentifier:
required:
- id
- source
type: object
properties:
id:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
source:
type: string
description: Describes the source of the order, typically from a food ordering marketplace.
example: ubereats
description: The external identifiers of the order.
POSOrderStatusUpdateRequest:
required:
- orderExternalIdentifiers
- orderStatus
type: object
properties:
orderStatus:
type: string
description: The requested status to transition the order to.
enum:
- CONFIRMED
- CANCELED
example: CONFIRMED
orderExternalIdentifiers:
$ref: '#/components/schemas/OrderIdentifier'
description: The request to change an order status.
OrderFeed:
required:
- orders
type: object
properties:
orders:
type: array
description: Array of Orders
items:
$ref: '#/components/schemas/Order'
offsetToken:
type: string
description: Opaque token used to fetch the following page. If not set, no more orders are available.
example: H12MAF2fFaFFFa
description: An order feed response
ManagerOrderCancelDetails:
required:
- cancelSource
type: object
properties:
cancelSource:
type: string
description: Source of the order cancellation
enum:
- UNKNOWN
- OPERATOR
- SERVICE_PROVIDER
example: UNKNOWN
description: Details about a canceled manager order
ManagerOrderIssue:
required:
- code
type: object
properties:
code:
type: string
description: The specific issues with this item
enum:
- UNKNOWN
- MENU_RESOLUTION_FAILED
- NO_SUPPORTED_POS
- VALIDATION_ONLY
- POS_VENDOR_ERROR
- INTERNAL_ERROR
- MISCONFIGURED_INTEGRATION
- CANCEL_FAILED
example: MENU_RESOLUTION_FAILED
description:
type: string
description: A friendly description describing what went wrong
example: Order contains unreconciled items
description: Issue codes for issues encountered when processing a manager order
ManagerItemIssue:
required:
- code
type: object
properties:
code:
type: string
description: The error code indicating the type of error
enum:
- UNKNOWN
- ITEM_MISMATCH
- INCOMPLETE_MENU
- NO_PARENT_ENTITY
- MULTIPLE_PARENT_ENTITIES
- MISCONFIGURED_INTEGRATION
- INVALID_PARENT_ENTITY_SETUP
- CATEGORY_MISSING
- EXTERNAL_MODIFIER_GROUP_MISSING
- INTERNAL_MODIFIER_GROUP_MISSING
example: ITEM_MISMATCH
description:
type: string
description: A friendly description describing what went wrong
example: Item not found
description: A detailed issue encountered with this item or modifier
ManagerItemIssues:
type: object
properties:
externalId:
type: string
description: External id of the item
example: external-item-id
itemIssues:
type: array
description: The specific issues with this item
items:
$ref: '#/components/schemas/ManagerItemIssue'
description: Manager item or modifier issues
ManagerOrderIssues:
type: object
properties:
orderIssues:
type: array
description: The specific issues with this order
items:
$ref: '#/components/schemas/ManagerOrderIssue'
itemIssues:
type: array
description: The specific issues with individual items or modifiers on this order
items:
$ref: '#/components/schemas/ManagerItemIssues'
description: Manager order issues
OrderWithManagerInfo:
required:
- order
- injectionState
- injectionEvent
type: object
properties:
order:
$ref: '#/components/schemas/Order'
injectionState:
type: string
description: Current Manager injection state
enum:
- UNKNOWN
- PENDING
- SUCCEEDED
- FAILED_ATTEMPT
- MANUAL_INJECTION_SUCCEEDED
- MANUAL_INJECTION_REQUIRED
- SUCCEEDED_WITH_UNLINKED_ITEM
- ORDER_CANCELED
- ORDER_CANCEL_FAILED
- ORDER_REJECTED
- ORDER_REJECT_FAILED
- RE_INJECTION_REQUESTED
- RE_INJECTION_PENDING
example: UNKNOWN
orderCancelDetails:
nullable: true
description: If canceled - specific details about why this order was canceled
$ref: '#/components/schemas/ManagerOrderCancelDetails'
injectionEvent:
type: string
description: The order event that triggered order injection into manager
enum:
- UNKNOWN
- ORDER_CREATE
- ORDER_ACCEPT
- ORDER_IMPORT
- ORDER_RE_INJECT
example: UNKNOWN
orderIssues:
description: Issues encountered with this manager order
$ref: '#/components/schemas/ManagerOrderIssues'
description: An order placed by a customer with manager injection details
ManagerConfirmOrderRequest:
type: object
properties:
estimatedPrepTimeMinutes:
type: integer
nullable: true
description: Estimated order preparation time in minutes.
example: 15
description: The request to confirm an order.
ManagerCancelOrderRequest:
required:
- cancellationReason
type: object
properties:
cancellationReason:
type: string
description: The reason for cancellation.
enum:
- REASON_UNKNOWN
- DUPLICATE_ORDER
- UNAVAILABLE_ITEM
- FRAUDULENT_EATER
- RESTAURANT_INTERNAL_ISSUE
- KITCHEN_CLOSED
- CUSTOMER_CALLED_TO_CANCEL
- RESTAURANT_TOO_BUSY
- CANNOT_COMPLETE_CUSTOMER_REQUEST
- UNACCEPTED_ORDER
- RESTAURANT_CANCELED
- AUTOMATICALLY_CANCELED
- LATE_DELIVERY
- COURIER_NOT_FOUND
- CUSTOMER_NOT_FOUND
- UNABLE_TO_DELIVER
- ALL_ITEMS_OUT_OF_STOCK
- ALL_ITEMS_EXPIRED
- ALL_ITEMS_DAMAGED
- LABOR_UNAVAILABLE
- REASON_OTHER
example: REASON_UNKNOWN
cancelingParty:
$ref: '#/components/schemas/Person'
description: The request to cancel an order.
OrderComponentId:
type: object
properties:
orderComponentId:
type: string
description: The id of the order component for the order component ticket.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
orderComponentOrderId:
type: string
description: The id of the order for the order component ticket.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
QuantityUpdatedModification:
required:
- customerItemIds
- quantity
- oldQuantity
type: object
properties:
customerItemIds:
type: array
description: Unique IDs for the ordered customer items (station item can map to multiple).
minItems: 1
items:
type: string
quantity:
type: number
minimum: 0
format: int32
description: New quantity (0 to remove item).
example: 1.0
oldQuantity:
type: number
minimum: 0
format: int32
description: Previous quantity.
example: 1.0
OrderPriceAdjustedModification:
required:
- delta
type: object
properties:
delta:
type: number
description: Total adjustment on the order (positive = up charge, negative = refund).
example: -2.5
ItemAddedModification:
required:
- addedItem
type: object
properties:
addedItem:
$ref: '#/components/schemas/Item'
description: The customer item added to the order. Include any modifiers on this item via its modifiers array.
CustomerItemModification:
type: object
description: One modification to apply. Exactly one of quantityUpdated, priceAdjusted, or itemAdded must be set.
properties:
quantityUpdated:
$ref: '#/components/schemas/QuantityUpdatedModification'
description: Change quantity for existing item(s). Set quantity to 0 to remove.
priceAdjusted:
$ref: '#/components/schemas/OrderPriceAdjustedModification'
description: Adjust order subtotal (positive = up charge, negative = refund).
itemAdded:
$ref: '#/components/schemas/ItemAddedModification'
description: Add a new item to the order.
oneOf:
- required:
- quantityUpdated
- required:
- priceAdjusted
- required:
- itemAdded
OrderCustomerItemsUpdateRequest:
required:
- customerItemModifications
type: object
properties:
currencyCode:
type: string
description: 3-letter currency code (ISO 4217) for monetary values in this request (e.g. delta in price_adjusted, item/modifier prices in item_added). If omitted, USD is used.
minLength: 3
maxLength: 3
example: USD
nullable: true
customerItemModifications:
type: array
description: List of modifications to apply (quantity change, price adjustment, or item added).
minItems: 1
items:
$ref: '#/components/schemas/CustomerItemModification'
description: Request to update order customer items. Only supported for dine-in orders when slug is d2c-eater-website and the order tab is open. Modifying party and modification request ID are set by the endpoint.
OrderPrepTimeUpdateRequest:
required:
- prepTimeMinutes
type: object
properties:
prepTimeMinutes:
type: integer
description: The requested preparation time to transition the order to.
example: 1780000000000
description: The request to change an order prep time.
PauseReason:
type: string
description: Reason for pausing the storefronts
enum:
- STORE_MAINTENANCE
- OTHER
PauseRequest:
type: object
properties:
start:
type: string
nullable: true
description: Start time for the pause. Executed immediately if not set.
format: date-time
example: '2007-12-03T10:15:30+01:00'
end:
type: string
nullable: true
description: Time when the pause should expire. If not provided, uses the default which is 4 AM at store timezone.
format: date-time
example: '2007-12-03T10:15:30+01:00'
comment:
type: string
nullable: true
description: Comment for the pause
example: Some comment
reason:
$ref: '#/components/schemas/PauseReason'
description: Pause request parameters
PauseResponse:
type: object
properties:
requestId:
type: string
description: The requestId of the pause request.
example: store_123
description: Pause response details
UnpauseRequest:
type: object
properties:
comment:
type: string
nullable: true
description: Comment for the unpause
example: Some comment
description: Unpause request parameters
UnpauseResponse:
type: object
properties:
requestId:
type: string
description: The requestId of the unpause request.
example: store_123
description: Unpause response details
RequestState:
type: string
description: State of the requested operation
enum:
- UNKNOWN
- QUEUED
- IN_PROGRESS
- PROVIDER_REQUEST_IN_PROGRESS
- VALIDATION
- COMPLETED
- FAILED
- CANCELLED
Status:
type: string
description: Status of the operation
enum:
- UNKNOWN
- SUCCESS
- FAIL
- IN_PROGRESS
OperationType:
type: string
description: Type of the operation
enum:
- UNKNOWN
- PAUSE
- UNPAUSE
StorefrontError:
type: object
properties:
errorType:
type: string
description: The type of the error.
example: string
message:
type: string
description: The error messageß.
example: string
description: Unpause response details
RequestAction:
type: object
properties:
operationType:
$ref: '#/components/schemas/OperationType'
status:
$ref: '#/components/schemas/Status'
retryAttempt:
type: number
description: The current retry attempt.
example: 2
error:
nullable: true
$ref: '#/components/schemas/StorefrontError'
description: Request action details of the current state
RequestStateInfo:
type: object
properties:
startedAt:
type: string
nullable: true
description: The time at which the request was started.
format: date-time
example: '2007-12-03T10:15:30+01:00'
state:
$ref: '#/components/schemas/RequestState'
status:
$ref: '#/components/schemas/Status'
finishedAt:
type: string
nullable: true
description: The time at which the request was completed.
format: date-time
example: '2007-12-03T10:15:30+01:00'
action:
type: array
minItems: 0
description: List of request actions.
items:
$ref: '#/components/schemas/RequestAction'
error:
nullable: true
$ref: '#/components/schemas/StorefrontError'
description: Request state details
ProcessStoreServiceProviderStatus:
type: object
properties:
requestId:
type: string
description: The request id of the operation specific to service provider.
example: store_123
provider:
type: string
description: The service provider.
example: doordash
startedAt:
type: string
nullable: true
description: The time at which the provider level request was started.
format: date-time
example: '2007-12-03T10:15:30+01:00'
finishedAt:
type: string
nullable: true
description: The time at which the provider level request was completed.
format: date-time
example: '2007-12-03T10:15:30+01:00'
stateInfo:
type: array
minItems: 0
description: List of request state details.
items:
$ref: '#/components/schemas/RequestStateInfo'
requestStatus:
$ref: '#/components/schemas/Status'
currentState:
$ref: '#/components/schemas/RequestState'
description: Provider level request status details
ProcessingStatusResponse:
type: object
properties:
processRequestStatuses:
type: array
minItems: 0
description: List of provider level requests
items:
$ref: '#/components/schemas/ProcessStoreServiceProviderStatus'
description: Processing status response
Photo:
title: All photos for the store, indexed by ID
required:
- contentType
- fileName
- id
- url
type: object
properties:
url:
type: string
description: URL of the photo.
example: https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png
fileName:
type: string
description: File name
example: image.jpg
id:
type: string
description: Identifier of the Photo.
example: e9174f75-a293-4908-bba7-9db69871ad81
contentType:
type: string
description: 'The media type of the file. Deprecated: Use the media type served from the photo URL instead.'
example: image/jpeg, image/png
deprecated: true
description: All data required to represent a Photo for an entity in menus.
ExposedThirdPartyInfo:
required:
- externalId
- externalServiceSlug
type: object
properties:
externalId:
type: string
description: 'The identifier that exists in the third party system. '
example: da0e4e94-5670-4175-897a-3b7dde45bed5
externalServiceSlug:
type: string
description: The slug of the third party service.
example: tasty-bbq
description: Information about a third party service that is exposed to the another service. Usually, this is used to expose an POS ID to an OFO.
Category:
required:
- id
- name
type: object
properties:
id:
type: string
description: The identifier that exists in the third party system. During a menu publish event, uuidV4 ids will be generated for new entities that do not yet exist in the internal menu.
example: b01485b0-034a-47c5-8a0a-0eeca08bf994
name:
type: string
description: Name of Category.
example: Drinks
description:
type: string
description: Description of Category.
example: All drink items served up nice and fresh!
itemIds:
type: array
default: []
description: All items in the category.
items:
type: string
example:
- fa4f0192-4c4e-4455-9db8-61d428c34969
photoIds:
type: array
description: A list of Photo references associated with the Category.
default: []
items:
type: string
exposedThirdPartyInfos:
type: array
default: []
description: Additional information about the menu that should be exposed to third party
items:
$ref: '#/components/schemas/ExposedThirdPartyInfo'
description: Categories contain a list of Item references.
DefaultModifierSelection:
required:
- itemId
- selectionQuantity
type: object
properties:
itemId:
type: string
description: The id of the modifier item that this default selection pertains to. This id must be present in the item ids of the modifier group.
example: da0e4e94-5670-4175-897a-3b7dde45bed5
selectionQuantity:
minimum: 0
type: integer
description: The default quantity of the modifier item to be selected.
format: int32
example: 0
description: A default modifier selection consists of a reference to the modifier and the default selected quantity of that modifier.
DefaultModifierSelectionData:
required:
- defaultModifierSelections
type: object
properties:
defaultModifierSelections:
type: array
description: The default modifier selections for this modifier group.
items:
$ref: '#/components/schemas/DefaultModifierSelection'
description: The default modifiers selections for a modifier group.
ModifierGroup:
title: All ModifierGroups for the Store, indexed by ID
required:
- id
- name
type: object
properties:
id:
type: string
description: The identifier that exists in the third party system. During a menu publish event, uuidV4 ids will be generated for new entities that do not yet exist in the internal menu.
example: da0e4e94-5670-4175-897a-3b7dde45bed5
name:
type: string
description: Name of ModifierGroup.
example: Choose your type of bagel
minimumSelections:
minimum: 0
type: integer
description: Minimum number of selections customers can make in this ModifierGroup. 0 means no min limits.
format: int32
example: 0
maximumSelections:
minimum: 0
type: integer
description: Maximum number of selections customers can make in this ModifierGroup. 0 means no max limits.
format: int32
example: 0
maxPerModifierSelectionQuantity:
minimum: 0
default: 1
type: integer
description: Maximum number of selections customers can make for each modifier item in this ModifierGroup. 0 means there is no limit to how many times they can select a single modifier item. If not specified, a value of 1 will be used as the default value.
format: int32
example: 0
defaultModifierSelectionData:
$ref: '#/components/schemas/DefaultModifierSelectionData'
itemIds:
type: array
default: []
description: Identifiers of each Item within this ModifierGroup.
items:
type: string
description:
type: string
description: The description for this modifier group.
example: Choose any of these delicious types of bagels
type:
type: string
description: 'Experimental: The type of this modifier group, for informative purposes. It can be one of the following values: `DEFAULT`, `UPSELL`, `INGREDIENT_REMOVAL`, `INGREDIENT_ADD`, `PREPARE_INSTRUCTIONS`, `SIZE_MODIFICATION`, `PACKAGING_INSTRUCTION` and `CONDIMENT`.'
example: DEFAULT
exposedThirdPartyInfos:
type: array
default: []
description: Additional information about the menu that should be exposed to third party
items:
$ref: '#/components/schemas/ExposedThirdPartyInfo'
description: Items are sold on the menu. Modifiers to items are items themselves and their relationship is defined by ModifierGroup.
HourInterval:
type: object
properties:
day:
type: string
description: Day of the week.
example: Monday
enum:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
fromHour:
maximum: 23
minimum: 0
type: integer
description: Beginning hour of interval.
format: int32
example: 8
fromMinute:
maximum: 59
minimum: 0
type: integer
description: Beginning minute of interval.
format: int32
example: 0
toHour:
maximum: 23
minimum: 0
type: integer
description: Ending hour of interval.
format: int32
example: 20
toMinute:
maximum: 59
minimum: 0
type: integer
description: Ending minute of interval.
format: int32
example: 45
description: Represents the beginning and ending of operating time for a menu specific to a Day.
Hours:
required:
- intervals
type: object
properties:
intervals:
type: array
minItems: 1
description: List of HourIntervals.
items:
$ref: '#/components/schemas/HourInterval'
description: Hours are represented as a list of HourIntervals.
Money:
required:
- amount
- currencyCode
type: object
properties:
currencyCode:
maxLength: 3
minLength: 3
type: string
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: EUR
amount:
minimum: 0
exclusiveMinimum: false
type: number
description: Amount value.
example: 25.21
description: Money amount.
example: 25.21
PercentageValue:
required:
- decimalValue
type: object
properties:
decimalValue:
minimum: 0
type: number
description: Percentage value in decimal format.
example: 0.513
description: Percentage value in decimal format.
example: A decimalValue of 0.513 will equate to 51.3%
UnitPriceAndCount:
required:
- unitPrice
- count
type: object
properties:
unitPrice:
$ref: '#/components/schemas/Money'
count:
minimum: 1
type: integer
description: The count for the additional charge.
example: 3
description: Unit price and count for additional charges.
example: 3 x $25.21
AdditionalCharge:
required:
- chargeType
type: object
properties:
chargeType:
type: string
description: The type of the additional charge.
enum:
- PACKAGING_CHARGE
- CONTAINER_DEPOSIT
example: PACKAGING_CHARGE
flatCharge:
$ref: '#/components/schemas/Money'
percentageCharge:
$ref: '#/components/schemas/PercentageValue'
unitPriceAndCount:
$ref: '#/components/schemas/UnitPriceAndCount'
description: Additional charge to apply. Exactly one of either flatCharge or percentageCharge should be provided.
Menu_POS:
title: All Menus for the store, indexed by ID
required:
- id
- name
type: object
properties:
id:
type: string
description: Internal identifier for Menu.
example: ff6dd693-5e55-4a92-a359-ea61b23ed423
name:
type: string
description: Name of the Menu.
example: Tasty BBQ
categoryIds:
type: array
default: []
description: Identifiers of the categories within this Menu.
items:
type: string
fulfillmentModes:
type: array
default: []
description: The ways in which this menu may be fulfilled. If no values are specified, it is assumed that all fulfillment types are allowed.
items:
type: string
description: How an item from a menu is allowed to be fulfilled when ordered by a user.
enum:
- DELIVERY
- PICK_UP
- DINE_IN
description:
type: string
description: Description of the Menu.
example: Cooking up BBQ deliciousness from around the globe!
hours:
$ref: '#/components/schemas/Hours'
additionalCharges:
type: array
nullable: true
description: Additional charges to apply for this menu. All additional charges specified on a menu will only be applied once per order.
items:
$ref: '#/components/schemas/AdditionalCharge'
description: A menu for a store.
ItemStatus:
required:
- saleStatus
type: object
properties:
saleStatus:
type: string
description: The sale status of the item.
example: TEMPORARILY_NOT_FOR_SALE
enum:
- FOR_SALE
- INDEFINITELY_NOT_FOR_SALE
- TEMPORARILY_NOT_FOR_SALE
suspendedUntil:
type: string
nullable: true
description: 'ISO-8601 timestamp representing the time the saleStatus value is supposed to change to FOR_SALE. Set only when current saleStatus value is TEMPORARILY_NOT_FOR_SALE. E.g.: 2020-11-23T21:33:51Z, 2007-12-03T10:15:30+01:00'
format: date-time
example: '2007-12-03T10:15:30+01:00'
description: Represents whether an Item is for sale, indefinitely not for sale, or not for sale until a specific time.
OverrideRule:
required:
- externalServiceSlug
type: object
properties:
externalServiceSlug:
type: string
description: 'The service slug for which this rule should apply. E.g.: If externalServiceSlug is UberEats, then the priceOverride should be applied to UberEats.'
example: ubereats
description: Override rule for when to apply price overrides
ItemPriceOverride:
required:
- amount
- currencyCode
- rules
type: object
properties:
rules:
type: array
minItems: 1
description: Override rules for when this price override should be applied.
items:
$ref: '#/components/schemas/OverrideRule'
currencyCode:
maxLength: 3
minLength: 3
type: string
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: EUR
amount:
type: number
description: Amount the Item costs
example: 25.21
description: Price override for an item
SkuBarcode:
type: object
properties:
barcodeType:
type: string
description: The type of the barcode.
enum:
- UPC
- GTIN
- ASIN
- INTERNAL
example: UPC
value:
type: string
description: The value of the barcode.
example: 049000028904 (UPC)
description: A barcode for the product which may be common types like UPC, GTIN, ASIN or an internal type.
DietaryClassification:
type: object
properties:
tag:
type: string
description: The type of dietary classification.
enum:
- VEGAN
- VEGETARIAN
- NON_VEGETARIAN
- EGG
- KOSHER
- HALAL
- PLANT_BASED
- PALEO
- KETO
example: VEGAN
description: Dietary classification information.
AllergenClassification:
type: object
properties:
tag:
type: string
description: The type of allergen classification.
enum:
- GLUTEN
- DAIRY
- WHEAT
- RYE
- BARLEY
- OAT
- SPELT
- KAMUT
- CRUSTACEAN
- MOLLUSK
- EGG
- FISH
- PEANUT
- SOYBEAN
- NUT
- ALMOND
- HAZELNUT
- WALNUT
- CASHEW
- PECAN
- BRAZIL_NUT
- PISTACHIO
- MACADAMIA_NUT
- QUEENSLAND_NUT
- LUPIN
- CELERY
- MUSTARD
- SESAME_SEED
- SULFITE
- CAFFEINE
- PHENYLALANINE
example: GLUTEN
containsAllergen:
type: boolean
description: Indication of whether or not the product contains this allergen. If the status of the allergen is unknown, a classification should not be provided for this product.
example: true
description: Allergen classification information.
StorageRequirement:
type: object
properties:
tag:
type: string
description: Storage requirements for the product.
enum:
- FROZEN
- COLD
- DRY
- ROOM_TEMPERATURE
- AVOID_SUNLIGHT
example: FROZEN
description: Storage requirements for the product.
EnergyKcal:
type: object
properties:
low:
type: number
description: The minimum calorie value for an item.
example: 1
high:
type: number
description: The maximum calorie value for an item.
example: 100
description: The calorie range of the item. If only one calorie value is known, set both low and high to that value.
NutritionContent:
type: object
properties:
servingSizeInGrams:
type: number
description: The serving size in grams. This field and the servingSizeInMilliliters field are mutually exclusive.
example: 100
servingSizeInMilliliters:
type: number
description: The serving size in milliliters. This field and the servingSizeInGrams are mutually exclusive.
example: 100
fats:
type: number
description: The fats in grams per serving size.
example: 2.3
saturatedFats:
type: number
description: The saturated fats in grams per serving size.
example: 1.4
monoUnsaturatedFats:
type: number
description: The mono unsaturated fats in grams per serving size.
example: 1.5
polyUnsaturatedFats:
type: number
description: The poly unsaturated fats in grams per serving size.
example: 5.3
carbohydrates:
type: number
description: The carbohydrates in grams per serving size.
example: 1.8
sugar:
type: number
description: The sugar in grams per serving size.
example: 1.7
polyols:
type: number
description: The polyols in grams per serving size.
example: 9.3
starch:
type: number
description: The starch in grams per serving size.
example: 1.1
protein:
type: number
description: The protein in grams per serving size.
example: 7.3
salt:
type: number
description: The salt in grams per serving size.
example: 1.5
sodium:
type: number
description: The sodium in grams per serving size.
example: 0.3
fibres:
type: number
description: The fibres in grams per serving size.
example: 1.9
vitaminC:
type: number
description: The vitamin C in milligrams per serving size.
example: 9.3
calcium:
type: number
description: The calcium in milligrams per serving size.
example: 1.2
magnesium:
type: number
description: The magnesium in milligrams per serving size.
example: 1.3
chloride:
type: number
description: The chloride in milligrams per serving size.
example: 1.3
fluoride:
type: number
description: The fluoride in milligrams per serving size.
example: 3.3
potassium:
type: number
description: The potassium in milligrams per serving size.
example: 22.3
caffeine:
type: number
description: The caffeine in milligrams per serving size.
example: 81.3
energy:
type: number
description: The energy in kcal per serving size.
example: 991.3
description: The nutrition content of the item.
NutritionalInfo:
type: object
properties:
energyKcal:
$ref: '#/components/schemas/EnergyKcal'
nutritionContent:
$ref: '#/components/schemas/NutritionContent'
description: The nutritional information of an item.
Servings:
type: object
properties:
min:
type: integer
description: The minimum value of servings.
example: 1
max:
type: integer
description: The maximum value of servings.
example: 2
description: The number of people an item serves. If only one serving value is known, set both min and max to that value.
SkuDetails:
type: object
properties:
skuSlug:
type: string
description: A system-unique, human-readable identifier for the product.
example: russet-potato-fries-200g
skuId:
type: string
description: A unique identifier for the product.
example: 3bac7aed-c8c1-4bfa-a98a-350317e55072
barcodes:
type: array
description: Barcodes for this product.
items:
$ref: '#/components/schemas/SkuBarcode'
dietaryClassifications:
type: array
description: All dietary classifications that apply to the product.
items:
$ref: '#/components/schemas/DietaryClassification'
allergenClassifications:
type: array
description: All allergens that are present in the product.
items:
$ref: '#/components/schemas/AllergenClassification'
storageRequirements:
type: array
description: All storage requirements that apply to the product.
items:
$ref: '#/components/schemas/StorageRequirement'
additives:
type: array
default: []
description: All additives present in the item. Additives are free strings.
items:
type: string
example:
- flavor enhancers
- emulsifiers
- antioxidants
countryOfOriginIso2:
maxLength: 2
minLength: 2
type: string
description: The 2-letter country ISO2 code for where the product originated from.
example:
- US
- CN
- DE
containsAlcohol:
type: boolean
description: Indicates whether or not this product contains alcohol.
example: true
nutritionalInfo:
$ref: '#/components/schemas/NutritionalInfo'
description: The nutritional information for the product.
servings:
$ref: '#/components/schemas/Servings'
description: The number of servings for the product.
producerInformation:
type: string
description: Information about the producer of this product. May or may not be the same as the distributor.
example: The Coca-Cola Company
distributorInformation:
type: string
description: Information about the distributor of this product. May or may not be the same as the producer.
example: The Coca-Cola Company
description: Details of the product being prepared or a pre-packaged good being sold. Includes information such as UPC barcode, unique identifiers, or classification information.
ItemTax:
required:
- percentageValue
- isValueAddedTax
type: object
properties:
percentageValue:
$ref: '#/components/schemas/PercentageValue'
description: Specify the percentage value of the tax.
isValueAddedTax:
type: boolean
description: Whether this tax is a value-added tax.
example: true
description: The tax configuration.
MenuItem_POS:
title: All Items for the store, indexed by ID
required:
- id
- name
- photoIds
- price
- status
type: object
properties:
id:
type: string
minLength: 1
description: Internal identifier of this Item.
example: faa4c79f-480d-4de1-bc34-5fb74ef082ef
name:
type: string
description: Name of this Item
example: Bagel
photoIds:
type: array
description: A list of Photo references associated with the Item.
items:
type: string
price:
$ref: '#/components/schemas/Money'
status:
$ref: '#/components/schemas/ItemStatus'
description:
type: string
description: Description of this Item
example: Delicious bagel!
modifierGroupIds:
type: array
default: []
description: Identifiers of each ModifierGroup within this Item.
items:
type: string
example: 7152ee6e-e941-45c1-9008-2e306b479114
priceOverrides:
type: array
nullable: true
description: Specify price overrides for different service slugs.
items:
$ref: '#/components/schemas/ItemPriceOverride'
skuDetails:
$ref: '#/components/schemas/SkuDetails'
additionalCharges:
type: array
nullable: true
description: Additional charges to apply for this item. Additional charges will be applied for every instance of this item within an order.
items:
$ref: '#/components/schemas/AdditionalCharge'
tax:
$ref: '#/components/schemas/ItemTax'
description: The tax configuration for the menu item.
description: Items are sold on the Menu. Modifiers to items are items themselves and their relationship is defined by ModifierGroup.
Menus:
required:
- categories
- modifierGroups
- photos
type: object
properties:
photos:
title: All photos for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: photoId
$ref: '#/components/schemas/Photo'
example: *id007
categories:
title: All Categories for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: categoryId
$ref: '#/components/schemas/Category'
example: *id008
modifierGroups:
title: All ModifierGroups for the Store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: modifierGroupId
$ref: '#/components/schemas/ModifierGroup'
example: *id009
menus:
title: All Menus for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: menuId
$ref: '#/components/schemas/Menu_POS'
example: *id010
items:
title: All Items for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: itemId
$ref: '#/components/schemas/MenuItem_POS'
example: *id011
description: All menus associated with a store.
ModifierGroupUpdateRequest:
title: All ModifierGroups for the Store, indexed by ID
required:
- id
- name
type: object
properties:
id:
type: string
description: Identifier for ModifierGroup.
example: db5740de-429c-4f06-b264-3d41dce6d8c3
name:
type: string
description: Name of ModifierGroup.
example: Choose your type of bagel
minimumSelections:
minimum: 0
type: integer
description: Minimum number of selections customers can make in this ModifierGroup. 0 means no min limits.
format: int32
example: 0
maximumSelections:
minimum: 0
type: integer
description: Maximum number of selections customers can make in this ModifierGroup. 0 means no max limits.
format: int32
example: 0
maxPerModifierSelectionQuantity:
minimum: 0
type: integer
description: Maximum number of selections customers can make for each modifier item in this ModifierGroup. 0 means there is no limit to how many times they can select a single modifier item. If not specified, a value of 1 will be used as the default value.
format: int32
example: 0
defaultModifierSelectionData:
$ref: '#/components/schemas/DefaultModifierSelectionData'
itemIds:
type: array
default: []
description: Identifiers of each Item within this ModifierGroup.
items:
type: string
description:
type: string
description: Description for this ModifierGroup.
example: Choose any of these delicious types of bagels
type:
type: string
description: 'Experimental: The type of this modifier group, for informative purposes. It can be one of the following values: `DEFAULT`, `UPSELL`, `INGREDIENT_REMOVAL`, `INGREDIENT_ADD`, `PREPARE_INSTRUCTIONS`, `SIZE_MODIFICATION`, `PACKAGING_INSTRUCTION` and `CONDIMENT`.'
example: DEFAULT
description: Items are sold on the menu. Modifiers to items are items themselves and their relationship is defined by ModifierGroup.
ItemUpdateRequest:
title: All Items for the store, indexed by ID
required:
- id
- name
- price
- status
- description
type: object
properties:
id:
type: string
description: Identifier of this Item.
example: faa4c79f-480d-4de1-bc34-5fb74ef082ef
name:
type: string
description: Name of this Item
example: Bagel
price:
$ref: '#/components/schemas/Money'
status:
$ref: '#/components/schemas/ItemStatus'
description:
type: string
description: Description of this Item
example: Delicious bagel!
modifierGroupIds:
type: array
default: []
description: Identifiers of each ModifierGroup within this Item.
items:
type: string
example: 7152ee6e-e941-45c1-9008-2e306b479114
priceOverrides:
type: array
nullable: true
description: Specify price overrides for different service slugs.
items:
$ref: '#/components/schemas/ItemPriceOverride'
photoUrls:
type: array
nullable: true
description: List of photoUrls to associate with the Item. This is used only for POST/PUT requests.
items:
type: string
skuDetails:
$ref: '#/components/schemas/SkuDetails'
description: Items are sold on the Menu. Modifiers to items are items themselves and their relationship is defined by ModifierGroup.
MenusUpsertRequest:
required:
- categories
- menus
- modifierGroups
type: object
properties:
categories:
title: All Categories for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: categoryId
$ref: '#/components/schemas/Category'
example: *id012
modifierGroups:
title: All ModifierGroups for the Store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: modifierGroupId
$ref: '#/components/schemas/ModifierGroupUpdateRequest'
example: *id013
menus:
title: All Menus for the store, indexed by ID
type: object
minProperties: 1
additionalProperties:
x-additionalPropertiesName: menuId
$ref: '#/components/schemas/Menu_POS'
example: *id014
items:
title: All Items for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: itemId
$ref: '#/components/schemas/ItemUpdateRequest'
example: *id015
description: All menus associated with a store.
JobReference:
type: object
properties:
id:
type: string
description: Unique identifier of the job.
format: uuid
example: c75d9460-5d48-423d-8d01-f825fd5b1672
status:
type: string
description: The status of the job.
enum:
- PENDING
- FAILED
- SUCCESS
- UNKNOWN
example: PENDING
description: The job reference.
MenuJobType:
type: string
description: Type of job.
enum:
- UPSERT
- PUBLISH
- UPDATE_AVAILABILITY
- SYNC
- UNKNOWN
example: PUBLISH
MenuPublishJobState:
type: object
properties:
status:
type: string
description: Status of the menu publish.
enum:
- PENDING
- FAILED
- SUCCESS
- UNKNOWN
example: PENDING
message:
type: string
nullable: true
description: Only present if status is FAILED. Contains the error message returned by our menu systems.
example: string
description: Information about the menu publish target.
MenuJobPublishState:
type: object
nullable: true
additionalProperties:
x-additionalPropertiesName: menuPublishTarget
$ref: '#/components/schemas/MenuPublishJobState'
description: Only present if the MenuJobType is PUBLISH. Contains a map of MenuPublishTarget services to their corresponding statuses.
example: *id002
MenuAsynchronousJob:
type: object
properties:
jobReference:
$ref: '#/components/schemas/JobReference'
jobType:
$ref: '#/components/schemas/MenuJobType'
publishJobState:
$ref: '#/components/schemas/MenuJobPublishState'
description: The job created to process the menu request.
MenuAsyncJobType:
enum:
- TEMPLATE_MENU_SYNC
MenuAsyncLatestJobForStoreResponse:
type: object
properties:
latestJobs:
type: array
minItems: 0
items:
$ref: '#/components/schemas/MenuAsynchronousJob'
description: The list of latest Job and its children for the store and the specified job type.
UpsertFullMenuEventCallback:
required:
- requestedToCreatedEntityIds
type: object
properties:
requestedToCreatedEntityIds:
type: object
additionalProperties:
x-additionalPropertiesName: menuId
type: string
example: *id016
description: A map for entities created by the Upsert containing the IDs of the requested entities mapped to the IDs of entities created by the request. Our system will use the IDs returned in this map to send updates to these entities in future requests. **NOTE -** A empty map can be used on requestedToCreatedEntityIds to use the same menu IDs that were previously defined.
TimeRange:
required:
- end
- start
type: object
properties:
start:
type: string
description: Start time of the range in 24 hour format.
example: 08:00
end:
type: string
description: End time of the range in 24 hour format.
example: 22:00
description: Time range in a given date.
RegularHours:
required:
- days
- timeRanges
type: object
properties:
days:
type: array
description: The day of the week this configuration applies.
items:
type: string
description: Day of the week.
enum:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
timeRanges:
type: array
description: Hours range applied to the provided day of the week
items:
$ref: '#/components/schemas/TimeRange'
description: Describes the configuration of regular hours.
SpecialHours:
required:
- date
- timeRanges
- type
type: object
properties:
date:
type: string
description: Date the special hour configuration applies.
format: date
example: '2021-10-01'
timeRanges:
type: array
minItems: 0
description: Hours range applied to configured date. For open days, the timeRanges field is required. For closed days, the timeRanges field is ignored.
items:
$ref: '#/components/schemas/TimeRange'
type:
type: string
description: Store state that should be applied during the configured special hour. If this field is set to CLOSED, the timeRanges field is ignored.
enum:
- OPEN
- CLOSED
example: OPEN
description: Describes the configuration of special store hours.
HoursData:
required:
- regularHours
- specialHours
- timeZone
type: object
properties:
timeZone:
type: string
description: TimeZone of all times under it. (https://www.joda.org/joda-time/timezones.html)
format: timezone-id
example: America/Los_Angeles
regularHours:
type: array
description: List of regular hours configuration.
items:
$ref: '#/components/schemas/RegularHours'
specialHours:
type: array
description: List of special hours configuration, for occasions like Christmas, Thanksgiving, or any other holidays.
items:
$ref: '#/components/schemas/SpecialHours'
description: Represents hours configuration with regular hours and special hours.
Menu_3PD:
title: All Menus for the store, indexed by ID
required:
- id
- name
type: object
properties:
id:
type: string
description: The identifier that exists in the third party system. During a menu publish event, uuidV4 ids will be generated for new entities that do not yet exist in the internal menu.
example: da0e4e94-5670-4175-897a-3b7dde45bed5
name:
type: string
description: Name of the Menu.
example: Tasty BBQ
categoryIds:
type: array
default: []
description: Identifiers of the categories within this Menu.
items:
type: string
fulfillmentModes:
type: array
default: []
description: The ways in which this menu may be fulfilled. If no values are specified, it is assumed that all fulfillment types are allowed.
items:
type: string
description: How an item from a menu is allowed to be fulfilled when ordered by a user.
enum:
- DELIVERY
- PICK_UP
- DINE_IN
description:
type: string
description: Description of the Menu.
example: Cooking up BBQ deliciousness from around the globe!
hoursData:
$ref: '#/components/schemas/HoursData'
additionalCharges:
type: array
nullable: true
description: Additional charges to apply for this menu. All additional charges specified on a menu will only be applied once per order.
items:
$ref: '#/components/schemas/AdditionalCharge'
exposedThirdPartyInfos:
type: array
default: []
description: Additional information about the menu that should be exposed to third party
items:
$ref: '#/components/schemas/ExposedThirdPartyInfo'
description: A Menu for a store.
OverrideRule_3PD:
required:
- type
type: object
properties:
type:
type: string
example: string
description: Specification for rules to apply overrides (e.g. PriceOverride).
discriminator:
propertyName: type
mapping:
PATH: '#/components/schemas/EntityPathOverrideRule'
FULFILLMENT_MODE: '#/components/schemas/FulfillmentModeOverrideRule'
SERVICE: '#/components/schemas/ServiceOverrideRule'
EntityPathOverrideRule:
required:
- entityIds
type: object
allOf:
- $ref: '#/components/schemas/OverrideRule_3PD'
- type: object
properties:
entityIds:
type: array
description: EntityPath for this rule.
items:
type: string
FulfillmentModeOverrideRule:
required:
- fulfillmentMode
type: object
allOf:
- $ref: '#/components/schemas/OverrideRule_3PD'
- type: object
properties:
fulfillmentMode:
type: string
description: The fulfillment mode for which the override rule should apply.
ServiceOverrideRule:
required:
- serviceSlug
type: object
allOf:
- $ref: '#/components/schemas/OverrideRule_3PD'
- type: object
properties:
serviceSlug:
type: string
description: The service for which the override rule should apply. The list of relevant service slugs can be provided by your integration partner. This feature is only available to point-of-sale system providers.
PriceOverride:
required:
- price
- rules
type: object
properties:
price:
$ref: '#/components/schemas/Money'
rules:
type: array
minItems: 1
description: Override rules for when this price override should be applied.
items:
$ref: '#/components/schemas/OverrideRule_3PD'
description: Price override for an item
MenuItem_3PD:
title: All Items for the store, indexed by ID
required:
- id
- name
- photoIds
- price
- priceOverrides
- status
type: object
properties:
id:
type: string
minLength: 1
description: The identifier that exists in the third party system. During a menu publish event, uuidV4 ids will be generated for new entities that do not yet exist in the internal menu.
example: da0e4e94-5670-4175-897a-3b7dde45bed5
name:
type: string
description: Name of this Item
example: Bagel
photoIds:
type: array
description: A list of Photo references associated with the Item.
items:
type: string
price:
$ref: '#/components/schemas/Money'
priceOverrides:
type: array
description: Specify price overrides.
items:
$ref: '#/components/schemas/PriceOverride'
status:
$ref: '#/components/schemas/ItemStatus'
description:
type: string
description: Description of this Item
example: Delicious bagel!
modifierGroupIds:
type: array
default: []
description: Identifiers of each ModifierGroup within this Item.
items:
type: string
example: 7152ee6e-e941-45c1-9008-2e306b479114
skuDetails:
$ref: '#/components/schemas/SkuDetails'
additionalCharges:
type: array
nullable: true
description: Additional charges to apply for this item. Additional charges will be applied for every instance of this item within an order.
items:
$ref: '#/components/schemas/AdditionalCharge'
tax:
$ref: '#/components/schemas/ItemTax'
description: The tax configuration for the menu item.
exposedThirdPartyInfos:
type: array
default: []
description: Additional information about the menu that should be exposed to third party
items:
$ref: '#/components/schemas/ExposedThirdPartyInfo'
description: Items are sold on the Menu. Modifiers to items are items themselves and their relationship is defined by ModifierGroup.
MenuData:
required:
- categories
- items
- menus
- modifierGroups
- photos
type: object
properties:
menus:
title: All Menus for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: menuId
$ref: '#/components/schemas/Menu_3PD'
example: *id017
categories:
title: All Categories for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: categoryId
$ref: '#/components/schemas/Category'
example: *id018
items:
title: All Items for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: itemId
$ref: '#/components/schemas/MenuItem_3PD'
example: *id019
modifierGroups:
title: All ModifierGroups for the Store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: modifierGroupId
$ref: '#/components/schemas/ModifierGroup'
example: *id020
photos:
title: All photos for the store, indexed by ID
type: object
additionalProperties:
x-additionalPropertiesName: photoId
$ref: '#/components/schemas/Photo'
example: *id021
description: MenuData contains all menu entities, and their relations.
SendMenuEventCallback:
required:
- menuData
type: object
properties:
menuData:
$ref: '#/components/schemas/MenuData'
CustomBulkResolutionOptions:
type: object
nullable: true
properties:
updateNames:
type: boolean
description: Update the linked entity's names to match the linked external entity's.
example: true
updatePrices:
type: boolean
description: Update the linked entity's price to match the linked external entity's.
example: true
updateDescriptions:
type: boolean
description: Update the linked entity's description to match the linked external entity's.
example: true
createUnmatchedEntities:
type: boolean
description: Create unmatched external entities in the menu.
example: true
deleteMissingEntities:
type: boolean
description: Delete entities that are missing external links.
example: true
bootstrapPhotosToEntities:
type: boolean
description: Bootstrap linked item photos.
example: true
copyEntityPaths:
type: boolean
description: Copies the entity paths from the external menu.
example: true
updateItemSuspensionStatus:
type: boolean
description: Update Item suspension status.
example: true
updateHours:
type: boolean
description: Update menu hours.
example: true
assignItemsToLocations:
type: boolean
description: If an item exists at a location in the POS, it will automatically be assigned to that location.
example: true
unassignItemsFromLocations:
type: boolean
description: If an item is removed from a location in the POS, it will automatically be unassigned from that location.
example: true
updateMenuOrganization:
type: boolean
description: The organization of modifiers into modifier groups, modifier groups into items and items into categories will be replicated from the POS menu.
example: true
updateItemArrangement:
type: boolean
description: The arrangement of menu products as displayed in your POS will be replicated.
example: true
updateModifierGroupRules:
type: boolean
description: Update modifier group selection rules.
example: true
updateTaxes:
type: boolean
description: Update taxes.
example: true
PosMenuSyncRequest:
type: object
properties:
shouldPublishChanges:
type: boolean
nullable: true
description: Whether or not to publish changes to external services after bulk resolution.
example: true
useCustomOptions:
type: boolean
nullable: true
description: If true, use `customBulkResolutionOptions` instead of menu configuration.
example: true
customBulkResolutionOptions:
nullable: true
$ref: '#/components/schemas/CustomBulkResolutionOptions'
PosMenuSyncResponse:
type: object
properties:
jobId:
type: string
nullable: true
description: Only present if the request succeeds. Job ID to check on the status with the MenuAsyncJob endpoint.
format: uuid
example: c75d9460-5d48-423d-8d01-f825fd5b1672
MenuPublishRequest:
type: object
properties:
menuPublishTargets:
type: array
description: MenuPublishTargets to publish to.
example: *id022
items:
type: string
description: MenuPublishTargets to publish to.
example: '["doordash","ubereats"]'
MenuPublishTarget:
type: object
properties:
status:
type: string
description: The status of a menu publish target.
enum:
- READY
- PUBLISH_IN_PROGRESS
- ERROR
example: READY
description: Information about the target.
MenuPublishResponseMenuPublishTargets:
type: object
nullable: true
properties:
menuPublishTargets:
type: object
additionalProperties:
x-additionalPropertiesName: menuPublishTargetName
$ref: '#/components/schemas/MenuPublishTarget'
description: Map of MenuPublishTarget names to their targets. The target can only be published to if the status is READY.
example: *id003
description: Only present if the request fails. Meant to help debugging why the request failed.
MenuPublishResponse:
type: object
properties:
requestSubmitted:
type: boolean
description: Whether the request was submitted or not.
example: true
jobId:
type: string
nullable: true
description: Only present if the request succeeds. Job ID to check on the status with the MenuAsyncJob endpoint.
format: uuid
example: c75d9460-5d48-423d-8d01-f825fd5b1672
menuPublishTargets:
$ref: '#/components/schemas/MenuPublishResponseMenuPublishTargets'
SuspensionStatus:
required:
- isIndefinite
type: object
properties:
isIndefinite:
type: boolean
description: True if the suspension is indefinite
example: true
suspendedUntil:
type: string
nullable: true
description: 'ISO-8601 timestamp representing the time the saleStatus value is supposed to change to FOR_SALE. Set only when current saleStatus value is TEMPORARILY_NOT_FOR_SALE. E.g.: 2020-11-23T21:33:51Z, 2007-12-03T10:15:30+01:00'
format: date-time
example: '2007-12-03T10:15:30+01:00'
description: The type of suspension this will be.
SuspendItemsRequest:
required:
- entityIds
- note
- status
type: object
properties:
entityIds:
type: array
description: Entity IDs to suspend. These should be the IDs as you represent them in your system.
example: *id023
items:
type: string
description: Entity IDs to suspend.
example: '["9cc4bb5e-bc97-40d9-af28-c02ef1483610","9929290d-31eb-425d-8732-17c4074ac75e"]'
note:
type: string
description: The reason you are suspending the items.
example: Out of item
status:
$ref: '#/components/schemas/SuspensionStatus'
UnsuspendItemsRequest:
type: object
properties:
entityIds:
type: array
description: Entity IDs to unsuspend. These should be the IDs as you represent them in your system.
example: *id024
items:
type: string
description: Entity IDs to unsuspend.
example: '["9cc4bb5e-bc97-40d9-af28-c02ef1483610","9929290d-31eb-425d-8732-17c4074ac75e"]'
note:
type: string
description: The reason you are unsuspending the items.
example: Item back in stock
MenuPublishTargets:
type: object
properties:
menuPublishTargets:
type: object
additionalProperties:
x-additionalPropertiesName: menuPublishTargetName
$ref: '#/components/schemas/MenuPublishTarget'
example: *id025
description: Map of MenuPublishTarget names to their targets. The target can only be published to if the status is READY.
BootstrapMenuRequest:
required:
- templateName
- externalServiceSlug
type: object
properties:
templateName:
type: string
description: Name for the bootstrapped template menu
example: My Store's Menu
externalServiceSlug:
type: string
description: The external service from which to bootstrap menu data
example: ubereats-api
enableTemplate:
type: boolean
description: Whether or not to enable the template at the bootstrapped store
nullable: true
example: true
stationId:
type: string
nullable: true
description: The id of the station to which to assign bootstrapped items, unnecessary for brick and mortar
example: 9cc4bb5e-bc97-40d9-af28-c02ef1483610
posSlug:
type: string
nullable: true
description: The slug for the POS to connect to
example: pos-slug
EventResultMetadata:
type: object
nullable: true
properties:
operationStatus:
type: string
description: Status of the operation requested by an event.
enum:
- SUCCEEDED
- INTERNAL_ERROR
- AUTHENTICATION_FAILURE
- AUTHORIZATION_FAILURE
- UNKNOWN_FAILURE
- INVALID_STORE_STATE
- INVALID_STORE_CONFIGURATION
- OPERATION_NOT_SUPPORTED
- IGNORED_ALREADY_IN_REQUESTED_STATE
- INVALID_REQUEST
example: SUCCEEDED
additionalInformation:
type: string
nullable: true
description: Additional details about the event result, if available.
example: Completed without problems.
operationFinishedAt:
type: string
description: Time when the processing of the event finished.
format: date-time
example: '2007-12-03T10:15:30+01:00'
description: Information about the result of a storefront event.
StoreAvailabilityEventResult:
type: object
properties:
storeState:
type: string
nullable: true
description: Represents the current state of a store.
enum:
- OPEN
- OFF_HOUR
- SERVICE_PROVIDER_PAUSED
- OPERATOR_PAUSED
- SERVICE_PROVIDER_PAUSED_COURIERS_UNAVAILABLE
- STORE_UNAVAILABLE
- HOLIDAY_HOUR
- MENU_UNAVAILABLE
- SERVICE_PROVIDER_PAUSED_MISCONFIGURED
- OPEN_FOR_PICKUP_ONLY
- OPEN_FOR_DELIVERY_ONLY
- CLOSED_FOR_UNDETERMINED_REASON
example: OPEN
statusChangedAt:
type: string
nullable: true
description: The time when the store changed to the current state.
format: date-time
example: '2007-12-03T10:15:30+01:00'
eventResultMetadata:
$ref: '#/components/schemas/EventResultMetadata'
description: The current state of a store.
Storefront_TimeRange:
type: object
properties:
startTime:
type: string
description: Start time of the range in 24 hour format.
example: 08:00
endTime:
type: string
description: End time of the range in 24 hour format.
example: 08:00
description: Time range in a given date.
Storefront_RegularHours:
required:
- dayOfWeek
- timeRanges
type: object
properties:
dayOfWeek:
type: string
description: Day of the week.
enum:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
example: MONDAY
timeRanges:
type: array
minItems: 1
description: Hours range applied to the provided day of the week
items:
$ref: '#/components/schemas/Storefront_TimeRange'
description: Describes the configuration of regular hours.
Storefront_SpecialHours:
required:
- date
- timeRanges
- specialHourType
type: object
properties:
date:
type: string
description: Date the special hour configuration applies.
format: date
example: '2021-10-01'
timeRanges:
type: array
minItems: 1
description: Hours range applied to configured date.
items:
$ref: '#/components/schemas/Storefront_TimeRange'
specialHourType:
type: string
description: Store state that should be applied during the configured special hour.
enum:
- OPEN
- CLOSED
example: OPEN
description: Describes the configuration of special store hours.
StoreHours:
type: object
nullable: true
properties:
regularHours:
type: array
description: List of regular hours configuration.
items:
$ref: '#/components/schemas/Storefront_RegularHours'
specialHours:
type: array
nullable: true
description: List of special hours configuration.
items:
$ref: '#/components/schemas/Storefront_SpecialHours'
description: Represents store hours configuration with regular hours and special hours.
StoreHoursConfiguration:
required:
- timezone
type: object
properties:
deliveryHours:
$ref: '#/components/schemas/StoreHours'
pickupHours:
$ref: '#/components/schemas/StoreHours'
timezone:
type: string
description: The store time zone identifier. (e.g. America/New_York)
example: America/Los_Angeles
description: The current store hours configuration of a store.
StoreHoursConfigurationEventResult:
type: object
properties:
storeHoursConfiguration:
$ref: '#/components/schemas/StoreHoursConfiguration'
statusChangedAt:
type: string
description: The time when the store hours configuration changed.
format: date-time
example: '2007-12-03T10:15:30+01:00'
eventResultMetadata:
$ref: '#/components/schemas/EventResultMetadata'
description: The current store hours configuration.
RequiredEventResultMetadata:
type: object
properties:
operationStatus:
type: string
description: Status of the operation requested by an event.
enum:
- SUCCEEDED
- INTERNAL_ERROR
- AUTHENTICATION_FAILURE
- AUTHORIZATION_FAILURE
- UNKNOWN_FAILURE
- INVALID_STORE_STATE
- INVALID_STORE_CONFIGURATION
- OPERATION_NOT_SUPPORTED
- IGNORED_ALREADY_IN_REQUESTED_STATE
- INVALID_REQUEST
example: SUCCEEDED
additionalInformation:
type: string
nullable: true
description: Additional details about the event result, if available.
example: Completed without problems.
operationFinishedAt:
type: string
description: Time when the processing of the event finished.
format: date-time
example: '2007-12-03T10:15:30+01:00'
description: Information about the result of a storefront event.
PauseStoreEventResult:
type: object
properties:
closureId:
type: string
description: ID required to unpause a store, if available
example: 4109d2c9-8bc5-413c-af3e-1c92aa381e41
eventResultMetadata:
$ref: '#/components/schemas/RequiredEventResultMetadata'
description: Result of an event that requested to pause a store.
UnpauseStoreEventResult:
type: object
properties:
eventResultMetadata:
$ref: '#/components/schemas/RequiredEventResultMetadata'
description: Result of an event that requested to unpause a store.
DeliveryStatus:
type: string
description: The status of the delivery.
enum:
- REQUESTED
- ALLOCATED
- PICKED_UP
- COMPLETED
- CANCELED
- ARRIVED_AT_PICKUP
- ARRIVED_AT_DROP_OFF
VehicleInformation:
type: object
nullable: true
properties:
vehicleType:
type: string
description: The type of vehicle used to fulfill the delivery.
enum:
- WALKER
- MOTORCYCLE
- BICYCLE
- CAR
- VAN
example: WALKER
licensePlate:
type: string
nullable: true
description: The license plate of the vehicle used to fulfill the delivery.
example: ABCD 123
makeModel:
type: string
nullable: true
description: The make and model of the vehicle used to fulfill the delivery.
example: Honda Civic
DeliveryCost:
type: object
properties:
baseCost:
type: number
format: double
description: Base delivery cost value.
example: 4.99
extraCost:
type: number
format: double
description: Extra delivery cost value.
example: 0.99
description: Delivery cost details.
SignatureProof:
type: object
nullable: true
properties:
signatureImageUrl:
type: string
description: Signature image url.
example: https://example.com/resource
signerName:
nullable: true
type: string
description: The name of the signer.
example: Sample Name
signerRelationship:
nullable: true
type: string
description: The relationship of signer to the intended recipient.
example: string
description: Signature info captured.
PictureProof:
type: object
nullable: true
properties:
pictureUrl:
type: string
description: Image url.
example: https://example.com/resource
description: Picture info captured.
VerificationProof:
type: object
nullable: true
properties:
signatureProof:
nullable: true
$ref: '#/components/schemas/SignatureProof'
pictureProof:
nullable: true
$ref: '#/components/schemas/PictureProof'
description: Verification details.
DropoffInfo:
type: object
nullable: true
properties:
courierNote:
nullable: true
type: string
description: Courier supplied dropoff note.
example: string
proofOfDelivery:
nullable: true
$ref: '#/components/schemas/VerificationProof'
description: Proof of delivery.
description: Delivery dropoff details.
DeliveryStatusUpdateRequest:
type: object
properties:
deliveryStatus:
$ref: '#/components/schemas/DeliveryStatus'
estimatedDeliveryTime:
type: string
nullable: true
description: The expected delivery time.
format: date-time
example: '2007-12-03T10:15:30+01:00'
estimatedPickupTime:
type: string
nullable: true
description: The expected pickup time.
format: date-time
example: '2007-12-03T10:15:30+01:00'
courier:
$ref: '#/components/schemas/Person'
location:
$ref: '#/components/schemas/Location'
createdAt:
type: string
description: The time that the update was created.
format: date-time
example: '2007-12-03T10:15:30+01:00'
vehicleInformation:
nullable: true
$ref: '#/components/schemas/VehicleInformation'
currencyCode:
type: string
nullable: true
minLength: 3
maxLength: 3
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: EUR
cost:
nullable: true
$ref: '#/components/schemas/DeliveryCost'
providerDeliveryId:
type: string
nullable: true
description: The provider's internal identifier for the delivery used for tracking purposes.
example: store_123
dropoffInfo:
nullable: true
$ref: '#/components/schemas/DropoffInfo'
description: Details on delivery dropoff.
deliveryTrackingUrl:
type: string
nullable: true
description: Delivery tracking url.
example: https://example.com/resource
description: Update delivery status request.
Distance:
type: object
nullable: true
properties:
unit:
type: string
description: Distance unit value.
enum:
- KILOMETERS
- MILES
example: KILOMETERS
value:
type: number
description: Distance value.
example: 1.0
description: Delivery distance.
FulfillmentPathEntity:
type: object
properties:
name:
type: string
minLength: 1
description: Describes the entity name.
example: rappi
type:
type: string
description: Type of entities in the fulfillment path.
enum:
- FULFILLMENT_PROCESSOR
- INTERMEDIARY
example: FULFILLMENT_PROCESSOR
description: Delivery distance.
RequestDeliveryQuoteCallbackRequest:
type: object
properties:
minPickupDuration:
type: integer
minimum: 0
format: int32
description: Minimum time required for courier to arrive at pickup location in minutes It is an estimation.
example: 5
maxPickupDuration:
type: integer
nullable: true
description: Maximum time that the courier's arrival at pick up location can be delayed. If not provided, it will default to 60 minutes or minPickUpDuration, whichever is greater. This value is an estimation and expressed in minutes.
format: int32
example: 10
deliveryDistance:
$ref: '#/components/schemas/Distance'
currencyCode:
type: string
minLength: 3
maxLength: 3
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: EUR
cost:
$ref: '#/components/schemas/DeliveryCost'
provider:
type: string
nullable: true
description: Delivery Service Provider Slug.
example: doordash
fulfillmentPath:
type: array
nullable: true
description: List of entities involved in the fulfillment processing path.
items:
$ref: '#/components/schemas/FulfillmentPathEntity'
createdAt:
type: string
description: The time that the quote was created.
format: date-time
example: '2007-12-03T10:15:30+01:00'
accountBalance:
type: number
nullable: true
description: The remaining account balance of the requester for the delivery provider.
example: 1068.32
description: Delivery quote information.
AcceptDeliveryCallbackRequest:
type: object
properties:
deliveryDistance:
$ref: '#/components/schemas/Distance'
currencyCode:
type: string
minLength: 3
maxLength: 3
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: EUR
cost:
$ref: '#/components/schemas/DeliveryCost'
fulfillmentPath:
type: array
nullable: true
description: List of entities involved in the fulfillment processing path.
items:
$ref: '#/components/schemas/FulfillmentPathEntity'
estimatedDeliveryTime:
type: string
nullable: true
description: The expected delivery time.
format: date-time
example: '2007-12-03T10:15:30+01:00'
estimatedPickupTime:
type: string
nullable: true
description: The expected pickup time.
format: date-time
example: '2007-12-03T10:15:30+01:00'
confirmedAt:
type: string
description: The time that the request was accepted.
format: date-time
example: '2007-12-03T10:15:30+01:00'
deliveryTrackingUrl:
type: string
nullable: true
description: URL to a web page that tracks the delivery.
example: www.example.com
providerDeliveryId:
type: string
nullable: true
description: The provider's internal identifier for the delivery used for tracking purposes.
example: store_123
description: Delivery information.
CancelDeliveryCallbackRequest:
type: object
properties:
canceledAt:
type: string
description: The time that the request was cancelled.
format: date-time
example: '2007-12-03T10:15:30+01:00'
description: Cancellation result callback request.
EventCallbackError:
type: object
properties:
errorCode:
type: string
description: "Errors that occur processing the webhook, modeled after Google's gRPC error codes.\nFor callback errors responding to menu-related webhooks, any error with status code in: \"INVALID_ARGUMENT\", \"FAILED_PRECONDITION\", \"NOT_FOUND\", \"PERMISSION_DENIED\", \"ALREADY_EXISTS\", \"UNIMPLEMENTED\", \"DATA_LOSS\", \"UNAUTHENTICATED\" will be considered fatal and will fail the operation without retrying."
enum:
- CANCELLED
- UNKNOWN
- INVALID_ARGUMENT
- FAILED_PRECONDITION
- DEADLINE_EXCEEDED
- NOT_FOUND
- PERMISSION_DENIED
- ALREADY_EXISTS
- RESOURCE_EXHAUSTED
- ABORTED
- OUT_OF_RANGE
- UNIMPLEMENTED
- INTERNAL
- UNAVAILABLE
- DATA_LOSS
- UNAUTHENTICATED
example: NOT_FOUND
errorMessage:
type: string
nullable: true
description: Additional information about the error. This message will be displayed to the user, so ideally it should be friendly.
example: The store was not found.
description: The error container for a processed callback.
UpdateDeliveryRequestCallbackRequest:
type: object
properties:
currencyCode:
type: string
nullable: true
minLength: 3
maxLength: 3
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: EUR
cost:
nullable: true
$ref: '#/components/schemas/DeliveryCost'
description: Updated delivery cost.
description: Updated Delivery information.
PongObject:
type: object
properties:
response:
type: string
description: A text response.
example: pong
currentTime:
type: string
format: date-time
description: The current timestamp.
example: '2007-12-03T10:15:30+01:00'
JobId:
type: string
description: ID used to track the job created for generating report.
example: 38ab397f-b142-4b06-b70c-40c68a408bea
GetReportStatusResponse:
type: object
properties:
status:
description: Report export status
type: string
enum:
- IN_PROGRESS
- READY
- ERROR
- EXPIRED
example: IN_PROGRESS
payload:
type: object
properties:
reportUrl:
type: string
nullable: true
description: Url to download the report. It will be available only if status is "READY"
example: https://example.com/path/to/report.csv.gz
errorMessage:
type: string
nullable: true
description: Error message. It will be available only if status is "ERROR"
example: Report generation error. Please reach out to support and provide jobId
GenerateReportMultiRequest:
type: object
properties:
reportType:
type: string
description: Type of report to generate
example: ORDER_STORES
enum:
- ORDER_STORES
- ORDER_ITEMS
- PAYOUT_TRANSACTIONS
- RATINGS_AND_REVIEWS
start:
type: string
description: Report start date
format: date
example: '2021-10-01'
end:
type: string
description: Report end date
format: date
example: '2021-10-01'
externalStoreIds:
type: array
nullable: false
description: List of external store IDs to filter the orders with. At least one value is required. Max is 5000. Fails the requests if one or more invalid external store ID is passed
example: *id026
items:
type: string
description: List of external store IDs to filter the orders with. At least one value is required. Fails the requests if one or more invalid external store ID is passed
example: '["brand1-acbdef", "brand1-fghjkl", "brand2-qwerty"]'
externalServiceSlugs:
type: array
nullable: true
description: List of external service slugs to fetch orders from. Default to all services
example: *id027
items:
type: string
description: List of external service slugs to fetch orders from. Default to all services
example: '["ubereats","postmates"]'
language:
type: string
nullable: true
description: Language of the report. Ignored by ORDER_STORES report Optional. Falls back to English if empty.
example: string
description: The request to generate a report for multiple stores.
GenerateReportResponse:
type: object
properties:
jobId:
$ref: '#/components/schemas/JobId'
description: The response to a generate report request
ReviewReplyRequest:
type: object
properties:
reviewId:
type: string
description: The review ID.
example: review-56e9-46be
externalStoreId:
type: string
description: External store ID of the review you are responding to. Fails the requests if invalid external store ID is passed.
example: order-1fa4-479c
serviceSlug:
type: string
description: The slug of the service for the review.
example: ubereats
replyText:
type: string
description: The reply text.
example: Thank you very much.
scheduledAt:
type: number
description: The scheduled timestamp (seconds) to reply to the review.
format: double
example: 1697727006
nullable: true
description: The request to reply to a review.
ReviewReplyResponse:
type: object
properties:
replyId:
type: string
description: The reply ID. Returned if no scheduled timestamp was provided.
example: reply-f34f-4d35
nullable: true
description: The response to reply to a review.
OAuthTokenGenerationRequest:
required:
- grant_type
- scope
type: object
properties:
client_id:
type: string
description: The ID of the client (also known as the Application ID).
format: uuid
example: c75d9460-5d48-423d-8d01-f825fd5b1672
client_secret:
type: string
description: The secret of the client.
example: string
grant_type:
type: string
description: The OAuth2.0 grant types supported.
enum:
- client_credentials
- authorization_code
example: client_credentials
scope:
type: string
description: The scope to request, multiple scopes are passed delimited by a space character.
example: scope1 scope2
code:
type: string
nullable: true
description: The authorization code obtained from the server when performing the authorization code flow. It is required to exchange the code for an access token that will be used to perform actions on behalf of a user.
example: 8A9D16B4C3E25F6A
redirect_uri:
type: string
nullable: true
description: The redirect URI that was included in the initial authorization request. The value must be an exact match of the previously used URI, otherwise the request will be rejected.
example: https://example.com/callback
code_verifier:
type: string
nullable: true
description: If the code_challenge parameter was included in the initial authorization requests, the application must now provide the code verifier. The value is the plaintext string that was used to calculate the hash that was previously sent in the code_challenge parameter.
example: Th7UHJdLswIYQxwSg29DbK1a_d9o41uNMTRmuH0PM8zyoMAQ
description: The entity to request a token, following the OAuth2.0 protocol.
HydraToken:
type: object
properties:
access_token:
type: string
description: The auth token used when consuming the API endpoints.
example: oMahtBwBbnZeh4Q66mSuLFmk2V0_CLCKVt0aYcNJlcg.yditzjwCP7yp0PgR6AzQR3wQ1rTdCjkcPeAMuyfK-NU
expires_in:
type: integer
format: int64
description: The token expiration time in seconds.
example: 2627999
scope:
type: string
description: The scopes available for the token.
example: ping orders.create
token_type:
type: string
description: The token type is always "bearer".
example: bearer
ApplicationId:
type: string
description: The plain-text Application ID, provided at partner onboarding, also available on Developer Portal.
example: 5045c1c3-694f-4392-b43b-e765cd89c8b8
UpsertStorelinkEventResultRequest:
required:
- success
type: object
properties:
success:
type: boolean
description: Indicates if the partner application successfully created and validated the credential provided through the `Upsert Store Webhook`.
example: true
storeId:
nullable: true
type: string
description: The unique identifier of the store in the partner application. This ID, along with the `Application ID`, will be used to match the correct store when performing operations. It cannot be longer than 255 characters and must only contain printable ASCII characters.
example: partner-store-unique-identifier
errorMessage:
nullable: true
type: object
properties:
message:
type: string
description: The error description.
example: The request body is invalid.
details:
type: array
description: The error details.
items:
$ref: '#/components/schemas/ErrorDetail'
description: The error response object.
UpdateStorelinkStatusRequest:
required:
- status
type: object
properties:
status:
type: string
description: 'The new status of the store. ACTIVE: store ready to perform operations again; SUSPENDED: temporarily disables the store; INVALID: current credentials will no longer work, new credentials needed.'
enum:
- ACTIVE
- SUSPENDED
- INVALID
example: SUSPENDED
message:
nullable: true
type: string
description: Optional message to explain the reason of the status update.
example: Authentication is failing with current credentials. Suspending store while the retry process is in progress.
OrderIdentifierFinance:
required:
- id
type: object
properties:
id:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
source:
type: string
nullable: true
description: Describes the source of the order, typically from a food ordering marketplace.
example: ubereats
description: The external identifiers of the order.
PayoutInfo:
required:
- id
- date
type: object
properties:
id:
type: string
description: Payout identifier.
example: store_123
date:
type: string
description: The payout date.
format: date
example: '2021-10-01'
OrderIssue:
required:
- type
type: object
properties:
type:
type: string
description: Order issue type.
enum:
- MISSING_ITEM
- INCOMPLETE
- WRONG_INGREDIENTS
- WRONG_SIZE
- WRONG_INSTRUCTIONS
- TEMPERATURE_COLD
- WRONG_ORDER
- POOR_QUALITY
- HANDLED_POORLY
- WRONG_ITEM
- WRONG_QUANTITY
- LATE_TO_COURIER
example: MISSING_ITEM
OrderItemInformation:
required:
- id
type: object
properties:
id:
type: string
description: Regular item identifier.
example: store_123
name:
type: string
nullable: true
description: Item name
example: Sample Name
issues:
type: array
nullable: true
description: Order issues that relate to this item.
items:
$ref: '#/components/schemas/OrderIssue'
FinancialTransaction:
required:
- id
- orderIdentifiers
- pending
- currencyCode
- createdAt
- type
- data
type: object
properties:
orderIdentifiers:
$ref: '#/components/schemas/OrderIdentifierFinance'
id:
type: string
description: External financial transaction identifier.
example: store_123
pending:
type: boolean
description: Whether the transaction can be updated in the future.
example: true
currencyCode:
maxLength: 3
minLength: 3
type: string
description: The 3-letter currency code (ISO 4217) to use for all monetary values in this order.
example: EUR
createdAt:
type: string
description: The date (in UTC) when the financial transaction was created.
format: date-time
example: '2007-12-03T10:15:30+01:00'
customerId:
type: string
nullable: true
description: Customer identifier.
example: store_123
notes:
type: string
nullable: true
description: General notes about the financial transaction.
example: string
type:
type: string
description: Financial transaction operation type.
enum:
- PAYMENT
- ADJUSTMENT
- CANCELLATION
- MISC
example: PAYMENT
payout:
nullable: true
$ref: '#/components/schemas/PayoutInfo'
orderItems:
type: array
nullable: true
description: Detailed financial per order item.
items:
$ref: '#/components/schemas/OrderItemInformation'
issues:
type: array
nullable: true
description: List of issues that might have happened with the order.
items:
$ref: '#/components/schemas/OrderIssue'
data:
$ref: '#/components/schemas/FinancialData'
InvoicePayoutInfo:
required:
- id
- date
type: object
properties:
id:
type: string
description: Payout identifier.
example: store_123
date:
type: string
description: The payout date.
format: date
example: '2021-10-01'
summary:
$ref: '#/components/schemas/FinancialData'
total:
type: number
nullable: true
description: Total payout value. Should only be used if summary is not provided.
example: 19.07
SimpleOrderIdentifierFinance:
required:
- id
type: object
properties:
id:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
description: The external identifiers of the order.
SimpleFinancialTransaction:
required:
- id
- orderIdentifiers
- createdAt
- type
- data
type: object
properties:
orderIdentifiers:
$ref: '#/components/schemas/SimpleOrderIdentifierFinance'
id:
type: string
description: External financial transaction identifier.
example: store_123
createdAt:
type: string
description: The date (in UTC) when the financial transaction was created.
format: date-time
example: '2007-12-03T10:15:30+01:00'
customerId:
type: string
nullable: true
description: Customer identifier.
example: store_123
notes:
type: string
nullable: true
description: General notes about the financial transaction.
example: string
type:
type: string
description: Financial transaction operation type.
enum:
- PAYMENT
- ADJUSTMENT
- CANCELLATION
- MISC
example: PAYMENT
orderItems:
type: array
nullable: true
description: Detailed financial per order item.
items:
$ref: '#/components/schemas/OrderItemInformation'
issues:
type: array
nullable: true
description: List of issues that might have happened with the order.
items:
$ref: '#/components/schemas/OrderIssue'
data:
$ref: '#/components/schemas/FinancialData'
FinancialInvoice:
required:
- payout
- financialTransactions
type: object
properties:
sourceService:
type: string
nullable: true
description: Describes the source of the order, typically from a food ordering marketplace.
example: ubereats
payout:
$ref: '#/components/schemas/InvoicePayoutInfo'
financialTransactions:
type: array
description: List of financial transactions related to this invoice.
items:
$ref: '#/components/schemas/SimpleFinancialTransaction'
currencyCode:
maxLength: 3
minLength: 3
type: string
description: The 3-letter currency code (ISO 4217) to use for all monetary values in this order.
example: EUR
Gtin:
type: string
description: A 14 digit Global Trade Item Number (GTIN). For GTIN values that are shorter than 14 digits, value will be padded with leading zeroes.
example: '00049000608779'
InventorySummary:
required:
- id
- name
- sellableQuantity
type: object
properties:
id:
type: string
description: A unique identifier for the product.
example: ZDlhYTc1NjUtMzU3Z
gtin:
$ref: '#/components/schemas/Gtin'
name:
type: string
description: The name of the product.
example: Coca-Cola Classic Coke Soft Drink 12 oz. can
slug:
type: string
description: short, unique human-readable id for the product
example: coca-cola-classic-soft-drink-12-oz-can
externalId:
type: string
description: id of the product provided by the seller
example: some-id-from-a-vendor-123
sellableQuantity:
type: integer
description: The total quantity of the product ready to be sold. Does not include pending or in-progress shipments.
example: 42
unsellableQuantity:
type: integer
description: The total quantity of the product that is in the facility but unable to be sold. This will include inventory that is damaged, expired or otherwise unsellable.
example: 42
inboundQuantity:
type: integer
description: The total quantity of the product inbound to the facility or waiting at the facility to be processed.
example: 8
description: The inventory summary for a specific product.
InventorySummariesResponse:
type: object
properties:
inventorySummaries:
type: array
description: A list of the inventory summaries.
maxItems: 100
items:
$ref: '#/components/schemas/InventorySummary'
nextToken:
type: string
description: Opaque token used to fetch the following page. If set, pass the value of nextToken to the next request. If not set, no more results are available.
example: H12MAF2fFaFFFa
DeliveryWindow:
required:
- start
- end
type: object
description: The delivery window in which the shipment is expected to arrive at the destination.
properties:
start:
type: string
description: ISO-8601 timestamp representing the start of the time range.
format: date-time
example: '2007-12-03T10:15:30+01:00'
end:
type: string
description: ISO-8601 timestamp representing the end of the time range.
format: date-time
example: '2007-12-03T10:15:30+01:00'
DeliveryMetadata:
required:
- deliveryWindow
- deliveryType
type: object
properties:
deliveryWindow:
$ref: '#/components/schemas/DeliveryWindow'
description: The delivery window for the shipment.
deliveryType:
type: string
description: The type of delivery service for this shipment.
example: string
additionalProperties: true
SelfDropDeliveryInfo:
allOf:
- $ref: '#/components/schemas/DeliveryMetadata'
- required:
- delivererName
type: object
description: Detailed delivery information for self-delivered shipments.
properties:
delivererName:
type: string
description: The name of the deliverer.
example: Local Delivery Service
delivererEmailAddress:
type: string
description: The email address of the deliverer.
example: foo.bar@deliver.com
additionalProperties: true
CourierServiceDeliveryInfo:
allOf:
- $ref: '#/components/schemas/DeliveryMetadata'
- required:
- courierName
type: object
description: Detailed delivery information for shipments using small point-to-point courier operations that may offer specialized services (scheduling, chill chain, etc).
properties:
courierName:
type: string
description: The name of the company delivering the shipment.
example: Express Local Delivery Services
trackingId:
type: string
description: The tracking ID for this shipment
example: 18492b99ad000
additionalProperties: true
ParcelCarrierDeliveryInfo:
allOf:
- $ref: '#/components/schemas/DeliveryMetadata'
- required:
- carrierName
type: object
description: Detailed delivery information for standard postal carriers who deliver parcel shipments.
properties:
carrierName:
type: string
description: The name of the company delivering the shipment.
enum:
- FED_EX
- UPS
- ON_TRAC
- DHL
- CORREOS
- ESTAFETA
- BR_POST
- TNT
- OTHER
trackingNumber:
type: string
description: The tracking number for this shipment
example: 18492b99ad000
additionalProperties: true
ShipmentDeliveryInfo:
type: object
description: Delivery information for a shipment.
discriminator:
propertyName: deliveryType
mapping:
selfDropDeliveryInfo: '#/components/schemas/SelfDropDeliveryInfo'
courierServiceDeliveryInfo: '#/components/schemas/CourierServiceDeliveryInfo'
parcelCarrierDeliveryInfo: '#/components/schemas/ParcelCarrierDeliveryInfo'
oneOf:
- $ref: '#/components/schemas/CourierServiceDeliveryInfo'
- $ref: '#/components/schemas/ParcelCarrierDeliveryInfo'
- $ref: '#/components/schemas/SelfDropDeliveryInfo'
ShipmentLineItem:
required:
- id
- manifestQuantity
type: object
properties:
id:
type: string
description: A CSS SKU UUID for the product.
example: 1b8aec80-21aa-43f1-b510-2199ac54156a
manifestQuantity:
type: integer
description: The expected quantity of the product in the shipment.
example: 5
receivedSellableQuantity:
type: integer
description: The quantity of the product in the shipment received that was sellable.
example: 5
receivedUnsellableQuantity:
type: integer
description: The quantity of the product in the shipment received that was unsellable (damaged, expired, etc.).
example: 5
ShipmentState:
type: string
description: The state of the shipment.
enum:
- SCHEDULED
- ARRIVED
- STOCKING
- CLOSED
- CANCELED
ShipmentStateChange:
required:
- timestamp
- state
type: object
properties:
state:
$ref: '#/components/schemas/ShipmentState'
timestamp:
type: string
description: ISO-8601 timestamp representing when the state change occurred.
format: date-time
example: '2007-12-03T10:15:30+01:00'
Shipment:
required:
- id
- deliveryInfo
- lineItems
- stateChanges
type: object
properties:
id:
type: string
description: A UUID for the shipment.
example: 18695c43-c670-4c57-a714-e0d7b215db20
deliveryInfo:
$ref: '#/components/schemas/ShipmentDeliveryInfo'
lineItems:
type: array
description: A list of the shipment line items.
items:
$ref: '#/components/schemas/ShipmentLineItem'
stateChanges:
type: array
minItems: 1
description: The state changes for the shipment. The final state change represents the current state of the shipment.
items:
$ref: '#/components/schemas/ShipmentStateChange'
ListShipmentsResponse:
type: object
properties:
shipments:
type: array
description: A list of shipments.
maxItems: 50
items:
$ref: '#/components/schemas/Shipment'
nextToken:
type: string
description: Opaque token used to fetch the following page. If set, pass the value of nextToken to the next request. If not set, no more results are available.
example: H12MAF2fFaFFFa
CreateShipmentLineItem:
required:
- manifestQuantity
type: object
properties:
id:
type: string
description: A CSS SKU UUID for the product. One of id, slug or externalId is required.
example: 1b8aec80-21aa-43f1-b510-2199ac54156a
slug:
type: string
description: A CSS SKU slug for the product. One of id, slug or externalId is required.
example: pizza-pepperoni-12-inch
externalId:
type: string
description: A SKU external ID for the product. One of id, slug or externalId is required.
example: id-in-external-system
manifestQuantity:
type: integer
description: The expected quantity of the product in the shipment.
example: 5
receivedSellableQuantity:
type: integer
description: The quantity of the product in the shipment received that was sellable.
example: 5
receivedUnsellableQuantity:
type: integer
description: The quantity of the product in the shipment received that was unsellable (damaged, expired, etc.).
example: 5
CreateShipmentRequest:
required:
- deliveryInfo
- lineItems
type: object
properties:
deliveryInfo:
$ref: '#/components/schemas/ShipmentDeliveryInfo'
lineItems:
type: array
description: A list of the shipment line items.
items:
$ref: '#/components/schemas/CreateShipmentLineItem'
CreateShipmentResponse:
required:
- id
type: object
properties:
id:
type: string
description: A unique identifier for the shipment.
example: 18695c43-c670-4c57-a714-e0d7b215db20
description: A response containing information about the created shipment.
Organization:
required:
- id
- name
type: object
properties:
id:
type: string
description: Organization identifier.
example: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name:
type: string
description: Organization name.
example: Organization name 1
Brand:
required:
- id
- name
type: object
properties:
id:
type: string
description: Brand identifier.
example: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name:
type: string
description: Brand name.
example: Brand name 1
ListBrandsResponse:
required:
- items
type: object
properties:
items:
type: array
description: Array of brands.
items:
$ref: '#/components/schemas/Brand'
offsetToken:
type: string
description: Opaque token used to fetch the following page. If not set, no more brands are available.
example: H12MAF2fFaFFFa
Store:
required:
- id
- name
- address
type: object
properties:
id:
type: string
description: Store identifier.
example: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name:
type: string
description: Store name.
example: Store name 1
address:
$ref: '#/components/schemas/Address'
ListStoresResponse:
required:
- items
type: object
properties:
items:
type: array
description: Array of Stores
items:
$ref: '#/components/schemas/Store'
offsetToken:
type: string
description: Opaque token used to fetch the following page. If not set, no more stores are available.
example: H12MAF2fFaFFFa
Connection:
required:
- storeId
type: object
properties:
storeId:
type: string
description: The unique identifier of the store in the partner application. This is the ID, along with the Application ID, used to match the correct store when performing operations.
example: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
CreateConnectionRequest:
required:
- storeId
type: object
properties:
storeId:
type: string
description: The unique identifier of the store in the partner application. This is the ID, along with the Application ID, used to match the correct store when performing operations.
example: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
Marketintel_GeoLocationInformation:
type: object
properties:
regionId:
type: string
description: The region id of the geographical location.
example:
- LATAM-N
superRegion:
type: string
description: The super region of the geographical location.
example:
- LATAM
h3Index:
type: string
description: The H3Index value of the geographic location.
example:
- 886d344c81fffff
searchText:
type: string
nullable: true
description: The text used to search for stores.
example:
- chinese food
address:
type: object
description: The address of the geographical location.
$ref: '#/components/schemas/Address'
description: The geographical location information used to discover stores. This information will need be pass back with the result.
Marketintel_StoreMenu:
type: object
properties:
category:
type: string
nullable: true
description: The grouping category name.
example: Fast Food
ids:
type: array
description: The list of external store ids in the list in rank order.
items:
type: string
description: The external id the store
example: 123456
location:
type: object
description: The geographic location of the stores that was searched from.
description: The Store listing in ranking order based on category.
Marketintel_TimeRange:
required:
- end
- start
type: object
properties:
start:
type: string
description: Start time of the range in 24 hour format.
example: 08:00
end:
type: string
description: End time of the range in 24 hour format.
example: 22:00
description: Time range in a given date.
Marketintel_RegularHours:
required:
- days
- timeRanges
type: object
properties:
days:
type: array
description: The day of the week this configuration applies.
items:
type: string
description: Day of the week.
enum:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
timeRanges:
type: array
description: Hours range applied to the provided day of the week
items:
$ref: '#/components/schemas/Marketintel_TimeRange'
description: Describes the configuration of regular hours.
Marketintel_SpecialHours:
required:
- date
- timeRanges
- type
type: object
properties:
date:
type: string
description: Date the special hour configuration applies.
format: date
example: '2021-10-01'
timeRanges:
type: array
minItems: 1
description: Hours range applied to configured date.
items:
$ref: '#/components/schemas/Marketintel_TimeRange'
type:
type: string
description: Store state that should be applied during the configured special hour.
enum:
- OPEN
- CLOSED
example: OPEN
description: Describes the configuration of special store hours.
Marketintel_HoursData:
required:
- regularHours
- specialHours
- timeZone
type: object
properties:
timeZone:
type: string
description: TimeZone of all times under it. (https://www.joda.org/joda-time/timezones.html)
format: timezone-id
example: America/Los_Angeles
regularHours:
type: array
description: List of regular hours configuration.
items:
$ref: '#/components/schemas/Marketintel_RegularHours'
specialHours:
type: array
description: List of special hours configuration, for occasions like Christmas, Thanksgiving, or any other holidays.
items:
$ref: '#/components/schemas/Marketintel_SpecialHours'
description: Represents hours configuration with regular hours and special hours.
Marketintel_StoreRating:
type: object
properties:
ratingScore:
type: number
nullable: true
description: The normalized rating score of the store.
example: 2
estimatedRatingCount:
type: integer
nullable: true
description: The estimated number of scores in the rating.
example: 100
displayRatingCount:
type: string
nullable: true
description: The display text of the number of scores in the rating.
example:
- 20+
- 20
description: The Store rating information. At least one of the ratingScore, estimatedRatingCount or displayRatingCount need to be present.
Marketintel_Coordinates:
type: object
properties:
coordinatesType:
type: string
description: Coordinates type
enum:
- WGS84
- GCJ02
example: WGS84
location:
type: object
description: The longitude and latitude of a location.
$ref: '#/components/schemas/Location'
description: The geographical coordinates of a location.
Marketintel_StoreSales:
type: object
properties:
periodType:
type: string
nullable: true
description: The period type of the sales data
example:
numberOfSales:
type: integer
nullable: true
description: The number of sales.
example: 100
displayNumberOfSales:
type: string
nullable: true
description: The display text of the number of sales.
example:
- 20
- 20+
description: The Store Sales information. At least one of the periodType, numberOfSales or displayNumberOfSales need to be present.
Marketintel_StorePromotion:
type: object
properties:
displayName:
type: string
nullable: true
description: The name of the promotion.
example: Flat rate discount on Christmas day
promotionType:
type: string
nullable: true
description: The type of promotion.
example: Flat rate discount
campaignType:
type: string
nullable: true
description: The type of promotion campaign.
example: Christmas
promotionId:
type: string
nullable: true
description: The external promotion id.
example: 12345
description: The Store Promotion information. At least one of the displayName, promotionType, campaignType or promotionId need to be present.
Marketintel_StoreChain:
type: object
properties:
chainId:
type: string
nullable: true
description: The external chain id.
example: 1
chainName:
type: string
nullable: true
description: The name of the chain.
example: Macdonalds
description: The Store Chain information.
Marketintel_StoreDeliveryInformation:
type: object
properties:
minDeliveryBasketSize:
type: object
nullable: true
description: The minimum basket value of the order needed for delivery
$ref: '#/components/schemas/Money'
deliveryFee:
type: object
nullable: true
description: The delivery fee for the order
$ref: '#/components/schemas/Money'
deliveryType:
type: string
nullable: true
description: The delivery type for the order
example: Third Party
deliveryTimeMinutes:
type: integer
nullable: true
description: The estimated delivery time in minutes
example: 30
description: The Store delivery information.
Marketintel_StorePriceLevel:
type: object
properties:
priceLevel:
type: number
nullable: true
description: The price level of the store in numeric rating.
example: 3
priceLevelName:
type: string
nullable: true
description: The price level of the store in text.
example: $$$
description: The Store Price Level information. At least one of the price level or price level name need to be present.
Marketintel_StoreDetails:
type: object
properties:
regionId:
type: string
nullable: true
description: The region that store belongs to.
example: LATAM-N
provider:
type: string
description: The store information provider
example: ubereats-provider
id:
type: string
description: The external store id
example: 12345
storeUrl:
type: string
nullable: true
description: The store url
example: 30
location:
type: object
description: The Geographic location used to discover the store
$ref: '#/components/schemas/Marketintel_GeoLocationInformation'
address:
type: object
nullable: true
description: The store address
$ref: '#/components/schemas/Address'
phoneNumbers:
type: array
minItems: 0
description: The store phone numbers.
items:
type: string
example: 613-123-4567
storeName:
type: string
nullable: true
description: The name of the store.
example: McDonald's
menu:
type: object
nullable: true
description: The store menu.
$ref: '#/components/schemas/Marketintel_StoreMenu'
storeHours:
type: object
nullable: true
description: The store hours.
$ref: '#/components/schemas/Marketintel_HoursData'
tags:
type: array
minItems: 0
description: The store tags
items:
description: The store tag
example: chinese
storeBannerPhotoUrl:
type: string
nullable: true
description: The store bannel photo url.
example: https://www.ubereats.com/ca/store/mcdonalds-1000-rideau-street/1QY5X6QcQX2Q4Z3Z3QZQYQ.jpg
storeRating:
type: object
nullable: true
description: The store ratings.
$ref: '#/components/schemas/Marketintel_StoreRating'
coordinates:
type: object
nullable: true
description: The coordinates of the store.
$ref: '#/components/schemas/Marketintel_Coordinates'
storeSales:
type: object
nullable: true
description: The store sales information.
$ref: '#/components/schemas/Marketintel_StoreSales'
avgBasketAmount:
type: object
nullable: true
description: The average order amount.
$ref: '#/components/schemas/Money'
storePromotions:
type: array
minItems: 0
description: The store promotions.
items:
$ref: '#/components/schemas/Marketintel_StorePromotion'
storeChain:
type: object
description: The store chain information.
$ref: '#/components/schemas/Marketintel_StoreChain'
storeDeliveryInformation:
type: object
nullable: true
description: The Store delivery information.
$ref: '#/components/schemas/Marketintel_StoreDeliveryInformation'
logoPhotoUrl:
type: string
nullable: true
description: The store photo url.
example: https://www.ubereats.com/ca/store/mcdonalds-1000-rideau-street/1QY5X6QcQX2Q4Z3Z3QZQYQ.jpg
priceLevel:
type: string
nullable: true
description: The estimated delivery time in minutes.
$ref: '#/components/schemas/Marketintel_StorePriceLevel'
description: The Store delivery information.
Marketintel_LocationBasedInformation:
type: object
properties:
estimatedDeliveryTimeInSeconds:
type: integer
nullable: true
description: The estimated delivery time in seconds
example: 1200
distanceInMeters:
type: integer
nullable: true
description: The distance in meters
example: 3000
description: The estimated delivery time of the store and delivery distance from the store. At least one of the attributes need to be set.
DiscoveredStore:
type: object
properties:
storeDetails:
type: object
description: The store details.
$ref: '#/components/schemas/Marketintel_StoreDetails'
locationBasedInformation:
type: object
nullable: true
description: The location information of the store.
$ref: '#/components/schemas/Marketintel_LocationBasedInformation'
description: The discovered store information.
Marketintel_StoreListing:
type: object
properties:
category:
type: string
nullable: true
description: The grouping category name.
example: Fast Food
ids:
type: array
description: The list of external store ids in the list in rank order.
items:
type: string
description: The external id the store
example: 123456
location:
type: object
description: The geographic location of the stores that was searched from.
description: The Store listing in ranking order based on category.
DiscoverStoresEventResult:
type: object
properties:
storesDiscovered:
type: array
minItems: 0
description: Represents a list of discovered stores.
items:
$ref: '#/components/schemas/DiscoveredStore'
storeRankings:
type: array
minItems: 0
description: Represents the store rankings.
items:
$ref: '#/components/schemas/Marketintel_StoreListing'
description: The result of an event that request to find stores at the provided geolocations.
GetStoreDetailsEventResult:
type: object
properties:
superRegion:
type: string
description: Represents a super region geographical mapping.
example: LATAM
storeDetails:
type: array
minItems: 0
description: Represents a list of stores
items:
$ref: '#/components/schemas/Marketintel_StoreDetails'
description: The result of an event that request to store details.
EnrollmentField:
type: object
properties:
key:
type: string
description: The key of field, will be used in the Create User API.
example: full_name
required:
type: boolean
description: Whether this field is required when creating a user.
example: true
type:
type: string
description: The type of field, frontend can use type to decide which input to use. i.e. use a date picker for DATE type, use a text input for EMAIL/FULL_NAME type.
example: FULL_NAME
enum:
- TEXT
- NUMBER
- EMAIL
- PASSWORD
- PHONE
- DATE
- DATE_TIME
- URL
- FULL_NAME
- ADDRESS
label:
type: string
description: This can be used as the field input's label on the frontend.
example: First Name and Last Name
GetEnrollmentConfigResponse:
type: object
properties:
enrollmentFields:
type: array
description: The fields that can be passed into when creating a new loyalty user.
items:
$ref: '#/components/schemas/EnrollmentField'
description: Response body for GetEnrollmentConfig API call.
UserField:
type: object
properties:
key:
type: string
description: The key of field, this is retrieved from GetEnrollmentConfig API call.
example: full_name
value:
type: string
description: The value of the field.
example: john doe
UserBalance:
type: object
properties:
amount:
type: number
description: Balance amount.
example: 19.07
type:
type: string
description: The type of balance.
example: POINT
enum:
- POINT
- DOLLAR
UserAccount:
type: object
properties:
id:
type: string
description: The user identifier.
example: somestring
userFields:
type: array
description: The user info fields.
items:
$ref: '#/components/schemas/UserField'
balances:
type: array
description: The user's current balances.
items:
$ref: '#/components/schemas/UserBalance'
GetUserResponse:
type: object
properties:
userAccount:
$ref: '#/components/schemas/UserAccount'
description: Response body for GetUser API call.
CreateUserRequest:
required:
- userFields
type: object
properties:
userFields:
type: array
description: The user info fields for the new user.
items:
$ref: '#/components/schemas/UserField'
description: Request body for CreateUser API call.
User:
type: object
properties:
id:
type: string
description: The user identifier.
example: somestring
userFields:
type: array
description: The user info fields.
items:
$ref: '#/components/schemas/UserField'
CreateUserResponse:
type: object
properties:
user:
$ref: '#/components/schemas/User'
description: Response body for CreateUser API call.
SearchUsersResponse:
type: object
properties:
users:
type: array
description: The users that matches the search condition.
items:
$ref: '#/components/schemas/User'
offsetToken:
type: string
description: Opaque token used to fetch the following page. If not set, no more results are available.
example: H12MAF2fFaFFFa
description: Response body for SearchUsers API call.
Item-2:
type: object
properties:
id:
type: string
description: The id of the item in the partner's system.
example: someidstring
displayName:
type: string
description: Name of the item.
example: Cheese Burger
quantity:
type: number
description: Quantity of item ordered.
example: 1
price:
type: number
description: Price of item.
example: 19.07
modifiers:
oneOf:
- type: array
description: The modifiers of an item, such as size(small, medium, large), modifier share the same model as item, just in case we have nested modifiers.
items:
$ref: '#/components/schemas/Item-2'
- type: 'null'
Totals:
type: object
properties:
subTotal:
type: number
description: Order subtotal.
example: 29.07
tax:
type: number
description: Order tax.
example: 10
discount:
type: number
description: Order discount.
example: 9.07
total:
type: number
description: Order total.
example: 30
Order-2:
type: object
properties:
id:
type: string
description: The id of the order in the partner's system.
example: someidstring
currencyCode:
type: string
description: Currency code.
example: USD
items:
type: array
description: The ordered items in the order.
items:
$ref: '#/components/schemas/Item-2'
totals:
$ref: '#/components/schemas/Totals'
ComputeApplicableRewardsRequest:
required:
- userId
type: object
properties:
userId:
type: string
description: The id of the user.
example: someidstring
order:
oneOf:
- $ref: '#/components/schemas/Order-2'
- type: 'null'
description: Request body for ComputeApplicableRewards API call.
TriggerMenu:
type: object
properties:
entityId:
type: string
description: The id of the entity.
example: someidstring
entityType:
type: string
description: The type of entity.
example: ITEM
enum:
- ITEM
- CATEGORY
minimumPurchaseQuantity:
type: number
description: Minimum quantity need to be purchased to activate the trigger.
example: 1
Trigger:
type: object
properties:
menus:
type: array
description: The item/category preconditions to redeem this reward, for example, buy any drinks to get a free Burger.
items:
$ref: '#/components/schemas/TriggerMenu'
description: The preconditions to redeem this reward, for example, buy Fries to get a free Burger. Nullable, if null, this reward can be unconditionally redeemed.
SubtotalReward:
type: object
properties:
amount:
type: number
description: Discount amount, if it's percentage discount, the percentage amount shown is in basis points, ie 1000 = 10% discount.
example: 20
type:
type: string
description: The type of discount, absolute or percentage.
example: ABSOLUTE_DISCOUNT
enum:
- ABSOLUTE_DISCOUNT
- PERCENT_DISCOUNT
MenusReward:
type: object
properties:
entityId:
type: string
description: The id of the entity, currently it's the item id.
example: someidstring
amount:
type: number
description: Discount amount, if it's percentage discount, the percentage amount shown is in basis points, ie 1000 = 10% discount.
example: 20
type:
type: string
description: The type of discount, absolute or percentage.
example: ABSOLUTE_DISCOUNT
enum:
- ABSOLUTE_DISCOUNT
- PERCENT_DISCOUNT
Reward:
type: object
properties:
id:
type: string
description: The id of the reward.
example: someidstring
type:
type: string
description: The type of reward.
example: SUBTOTAL
enum:
- SUBTOTAL
- MENUS
cost:
oneOf:
- type: number
description: Cost of the reward, nullable, if null this reward can only be redeem once.
example: 20
- type: 'null'
costType:
oneOf:
- type: string
description: The type of cost, nullable, if null this reward can only be redeem once.
example: POINT
enum:
- POINT
- DOLLAR
- type: 'null'
trigger:
oneOf:
- $ref: '#/components/schemas/Trigger'
- type: 'null'
subtotal:
oneOf:
- $ref: '#/components/schemas/SubtotalReward'
- type: 'null'
menus:
oneOf:
- type: array
description: Item rewards, user can select from one of the items.
items:
$ref: '#/components/schemas/MenusReward'
- type: 'null'
ComputeApplicableRewardsResponse:
type: object
properties:
rewards:
type: array
description: List of rewards the user can redeem, depending on the reward type, only one of subtotal/menus will be present.
items:
$ref: '#/components/schemas/Reward'
description: Response body for ComputeApplicableRewards API call.
SelectedMenuReward:
type: object
properties:
entityId:
type: string
description: The id of the selected item.
example: someidstring
description: Indicates the item the user want to redeem, if reward type is MENUS, this should be present.
SelectedReward:
type: object
properties:
id:
type: string
description: The ID of reward.
example: someidstring
amount:
type: number
description: The amount that was deducted.
example: 19.07
menus:
oneOf:
- $ref: '#/components/schemas/SelectedMenuReward'
- type: 'null'
SimulateRewardsRequest:
required:
- userId
- order
- selectedRewards
type: object
properties:
userId:
type: string
description: The id of the user.
example: someidstring
order:
$ref: '#/components/schemas/Order-2'
selectedRewards:
type: array
description: Selected rewards, currently only support one reward, if multiple rewards are passed it will throw an error.
items:
$ref: '#/components/schemas/SelectedReward'
description: Request body for SimulateRewards API call.
Subtotal:
type: object
properties:
amount:
type: number
description: The amount that was discounted.
example: 19.07
RewardEffect:
type: object
properties:
subtotal:
$ref: '#/components/schemas/Subtotal'
description: Shows how much is deducted from total.
SimulateRewardsResponse:
type: object
properties:
transactionId:
type: string
description: The id of the transaction.
example: someidstring
rewardEffect:
type: object
description: Effect after applying the reward.
$ref: '#/components/schemas/RewardEffect'
description: Response body for SimulateRewards API call.
RedeemAndAccumulateRewardsRequest:
required:
- userId
- order
- selectedRewards
type: object
properties:
userId:
type: string
description: The id of the user.
example: someidstring
order:
$ref: '#/components/schemas/Order-2'
selectedRewards:
type: array
description: Selected rewards, currently only support one reward, if multiple rewards are passed it will throw an error.
items:
$ref: '#/components/schemas/SelectedReward'
description: Request body for RedeemAndAccumulateRewards API call.
RedeemAndAccumulateRewardsResponse:
type: object
properties:
transactionId:
type: string
description: The id of the transaction.
example: someidstring
rewardEffect:
$ref: '#/components/schemas/RewardEffect'
accumulatedRewards:
type: array
description: List of rewards accumulated.
items:
$ref: '#/components/schemas/UserBalance'
description: Response body for RedeemAndAccumulateRewards API call.
RefundRewardsRequest:
required:
- userId
- orderId
type: object
properties:
userId:
type: string
description: The id of the user.
example: someidstring
orderId:
type: string
description: The id of the order.
example: someidstring
description: Request body for RefundRewards API call.
RefundRewardsResponse:
type: object
properties:
transactionId:
type: string
description: The transaction id of the refund.
example: someidstring
description: Response body for RefundRewardsResponse API call.
EaterOrderHistoryRequest:
required:
- limit
- eaterId
type: object
properties:
limit:
type: number
description: Max number of orders to retrieve per page
format: 10
example: 1.0
pageToken:
type: string
description: Opaque token used for paging. Query parameters must be URL encoded.
example: CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)
eaterId:
type: string
description: External eater's Id
example: eater-12345
source:
type: string
description: Order placed from which source
example: venmo
description: Request parameters to fetch eater's order history
Item-3:
required:
- name
type: object
properties:
quantity:
minimum: 1
maximum: 1000
type: integer
description: The quantity of the item ordered by the customer.
format: int32
example: 1
id:
type: string
nullable: true
description: The unique ID of the item.
example: 33e0418f-3d56-4360-ba03-18fc5f8844a3
name:
type: string
nullable: true
description: The name of the item as displayed to the customer.
example: Juicy Cheeseburger
Store-2:
required:
- id
- name
- address
type: object
properties:
id:
type: string
description: Store identifier.
example: 9208071e-5f7a-444a-b3a7-4a57ff3f614e
name:
type: string
description: Store name.
example: Store name 1
logoUrl:
type: string
description: store's logo image url.
example: https://blob-storage.com/photos/storefront-photos/228da7b3-a254-47f4-b82f-5cf29e89b2b9.jpeg
bannerUrl:
type: string
description: store's banner image url.
example: https://blob-storage.com/photos/storefront-photos/4abd6b2e-e0f1-467c-a60b-c2e33922573f.jpeg
phoneNumber:
type: string
description: store's phone number.
example: 2124567890
address:
$ref: '#/components/schemas/Address'
EaterOrder:
required:
- currencyCode
- status
type: object
properties:
id:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
status:
type: string
description: The status of the order.
enum:
- NEW_ORDER
- CONFIRMED
- PICKED_UP
- CANCELED
- FULFILLED
- PREPARED
- REJECTED
- UNKNOWN
example: NEW_ORDER
items:
type: array
description: Items ordered.
maxItems: 100
items:
$ref: '#/components/schemas/Item-3'
orderedAt:
type: string
nullable: true
description: The date (in UTC) when the order was placed by the customer.
format: date-time
example: '2007-12-03T10:15:30+01:00'
orderTotal:
type: number
nullable: true
description: Order total including everything paid by the customer.
example: 19.07
currencyCode:
maxLength: 3
minLength: 3
type: string
description: The 3-letter currency code (ISO 4217) to use for all monetary values in this order.
example: USD
pickupTime:
type: string
nullable: true
description: Time (in UTC) specified by the provider when the courier or customer is expected to pick up the order.
format: date-time
example: '2007-12-03T10:15:30+01:00'
store:
$ref: '#/components/schemas/Store-2'
orderAgainUrl:
type: string
description: The link url for reordering.
example: /store/0179860e-8a89-39c2-b9b1-7276683d09f1
description: An order placed by a customer.
EaterOrderHistoryResponse:
required:
- orders
type: object
properties:
orders:
type: array
description: List of orders placed by the user. Each item contains details about a specific order.
items:
$ref: '#/components/schemas/EaterOrder'
nextPageToken:
type: string
description: Opaque token used to fetch the following page. If not set, no more orders are available.
example: H12MAF2fFaFFFa
description: Response body containing the user's order history.
OrgInfo:
type: object
description: Represents the org information.
required:
- id
- name
properties:
id:
type: string
description: Css org id.
example: store_123
name:
type: string
description: Css org name.
example: Main Street Cafe
BrandInfo:
type: object
description: Represents the brand information.
required:
- id
- name
- createdAt
properties:
id:
type: string
description: Css brand id.
example: store_123
name:
type: string
description: Css brand name.
example: Main Street Cafe
createdAt:
type: string
format: date-time
description: The date and time when the brand was created.
example: '2023-01-15T10:00:00Z'
StoreInfo:
type: object
description: Represents the store information.
required:
- id
- name
- createdAt
- currency
- brandInfo
- orgInfo
properties:
id:
type: string
description: Css store id.
example: store_123
name:
type: string
description: Css Store name.
example: Main Street Cafe
createdAt:
type: string
format: date-time
description: The date and time when the store was created.
example: '2023-01-15T10:00:00Z'
currency:
type: string
description: The currency code used by the store.
example: USD
orgInfo:
$ref: '#/components/schemas/OrgInfo'
brandInfo:
$ref: '#/components/schemas/BrandInfo'
MetadataObject:
type: object
properties:
storeId:
$ref: '#/components/schemas/StoreId'
applicationId:
type: string
description: The plain-text Application ID, provided at partner onboarding, also available on Developer Portal.
example: ad4ff59d-04c0-4c7d-8ca3-e3a673f8443d
resourceId:
type: string
description: Identifier of the resource that this event refers to, if needed.
example: resource-id-if-needed
payload:
type: object
description: Object containing details of the given event, if needed.
resourceHref:
type: string
description: The full endpoint to fetch the details of the resource, if needed.
example: resource-href-id-if-needed
description: Information about the event.
EventNotification:
type: object
properties:
eventId:
type: string
description: Unique identifier of the event.
format: uuid
example: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime:
type: string
description: Date of event occurrence.
format: date-time
example: '2007-12-03T10:15:30+01:00'
eventType:
type: string
description: The type of the event.
example: string
metadata:
$ref: '#/components/schemas/MetadataObject'
description: Notification message sent on relevant events.
IntentToCancelEvent:
type: object
properties:
externalIdentifiers:
$ref: '#/components/schemas/OrderExternalIdentifiers'
cancellationReason:
type: string
description: The reason for a cancellation.
enum:
- REASON_UNKNOWN
- DUPLICATE_ORDER
- UNAVAILABLE_ITEM
- FRAUDULENT_EATER
- RESTAURANT_INTERNAL_ISSUE
- KITCHEN_CLOSED
- CUSTOMER_CALLED_TO_CANCEL
- CANNOT_COMPLETE_CUSTOMER_REQUEST
- RESTAURANT_TOO_BUSY
- UNACCEPTED_ORDER
- RESTAURANT_CANCELED
- AUTOMATICALLY_CANCELED
- LATE_DELIVERY
- COURIER_NOT_FOUND
- CUSTOMER_NOT_FOUND
- UNABLE_TO_DELIVER
example: REASON_UNKNOWN
description: Event that request the intent to cancel an order.
OrderStatusEvent:
type: object
properties:
status:
type: string
description: Events that represent updates on order status.
enum:
- ORDER_ACCEPTED
- ORDER_HANDED_OFF
- ORDER_READY_TO_PICKUP
- ORDER_FULFILLED
example: ORDER_ACCEPTED
eventTime:
type: string
description: The time when this OrderStatusUpdateEvent occurred
format: date-time
example: '2007-12-03T10:15:30+01:00'
OrderStatusHistory:
type: object
description: The Order Status Update History and extra data.
properties:
orderStatusHistory:
type: array
description: Array of OrderStatusEvent
items:
$ref: '#/components/schemas/OrderStatusEvent'
orderAcceptedInfo:
type: object
nullable: true
description: '[NEW] Extra information added once the order was accepted by the restaurant. This field is nullable.'
properties:
preparationTimeInMinutes:
type: integer
description: '[NEW] The time in minutes the restaurant says it will take to prepare the order.'
required:
- preparationTimeInMinutes
PosInjectionStateUpdateEvent:
type: object
properties:
externalIdentifiers:
$ref: '#/components/schemas/OrderExternalIdentifiers'
injectionState:
type: string
description: "Injection state for an order. \n * `UNKNOWN` Injection state unknown. \n * `SUCCEEDED` Injection has succeeded. \n * `INJECTION_FAILING` Injection attempts failing. Will retry. \n * `INJECTION_FAILED` Injection Failed. \n * `MANUAL_INJECTION_SUCCEEDED` Injection was done manually. \n * `MANUAL_INJECTION_REQUIRED` Manual injection is required. \n * `SUCCEEDED_WITH_UNLINKED_ITEMS` Injection has succeeded, but there were open items."
enum:
- UNKNOWN
- SUCCEEDED
- INJECTION_FAILING
- INJECTION_FAILED
- MANUAL_INJECTION_SUCCEEDED
- MANUAL_INJECTION_REQUIRED
- SUCCEEDED_WITH_UNLINKED_ITEMS
example: UNKNOWN
injectionIssue:
type: string
description: "Injection issue for an order. * `UNKNOWN_INJECTION_ISSUE`: The issue is unknown. \n * `NO_INJECTABLE_EXTERNAL_SERVICE`: No external service is available for injection. \n * `ITEM_MAPPING_FAILED`: Failed to map items from the order. \n * `INCOMPLETE_ITEM_MAPPING`: Some items could not be mapped, but others were successfully injected. \n * `UNKNOWN_ORDER_ISSUE`: The order has an unidentified issue preventing injection. \n * `ORDER_TOO_OLD`: The order is too old to be injected. \n * `ORDER_IMMUTABLE`: The order cannot be modified or injected. \n * `ORDER_ORIGINATED_FROM_POS`: The order originated from the POS system and does not require injection. \n * `ORDER_PENDING_ACCEPT_EXPIRED`: The order was not accepted in time, preventing injection. \n * `INTEGRATION_ERROR`: A general integration error occurred during injection."
enum:
- UNKNOWN_INJECTION_ISSUE
- NO_INJECTABLE_EXTERNAL_SERVICE
- ITEM_MAPPING_FAILED
- INCOMPLETE_ITEM_MAPPING
- UNKNOWN_ORDER_ISSUE
- ORDER_TOO_OLD
- ORDER_IMMUTABLE
- ORDER_ORIGINATED_FROM_POS
- ORDER_PENDING_ACCEPT_EXPIRED
- INTEGRATION_ERROR
example: UNKNOWN_INJECTION_ISSUE
additionalData:
type: object
description: Additional data for integration-specific data
example: *id028
description: Event that describes current POS injection state
OrderConfirmEvent:
type: object
properties:
orderId:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
description: Event notifiying that the order has acquired status CONFIRMED.
OrderReadyEvent:
type: object
properties:
orderId:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
description: Event notifiying that the order has acquired status READY.
OrderHandedOffEvent:
type: object
properties:
orderId:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
courierPhone:
nullable: true
type: string
description: The phone number of the courier.
example: 415-234-3212
courierBodyTempFahrenheit:
nullable: true
type: number
description: The temperature of the courier in fahrenheit.
example: 36.6
isCourierWearingMask:
nullable: true
type: boolean
description: Whether or not the courier is wearing a mask.
example: true
description: Event notifiying that the order has acquired status HANDED OFF.
OrderFulfilledEvent:
type: object
properties:
orderId:
type: string
description: Unique ID for the order that was placed.
example: 69f60a06-c335-46d9-b5a1-97f1a211c514
description: Event notifiying that the order has acquired status FULFILLED.
MenuPublishEvent:
required:
- menuData
type: object
properties:
menuData:
$ref: '#/components/schemas/MenuData'
description: Event data containing the upserted MenuData.
NullEvent:
type: object
nullable: true
description: Empty event payload.
ItemSelector:
required:
- id
type: object
properties:
id:
type: string
description: Identifier of the item.
example: 06ef2722-cbf2-11ec-9d64-0242ac120002
isModifier:
type: boolean
description: True, if the item is used as a modifier.
example: true
description: Used to select a specific item.
UpdateItemStatusEntry:
required:
- selector
- status
type: object
properties:
selector:
$ref: '#/components/schemas/ItemSelector'
status:
$ref: '#/components/schemas/ItemStatus'
description: Update the status of an Item to the provided value.
BulkUpdateItemStatus:
required:
- updates
type: object
properties:
updates:
type: array
minItems: 1
description: List of item status updates.
items:
$ref: '#/components/schemas/UpdateItemStatusEntry'
description: Event data containing list of item status updates.
UpsertHoursEvent:
required:
- menuHoursData
type: object
properties:
menuHoursData:
type: object
additionalProperties:
x-additionalPropertiesName: menuId
$ref: '#/components/schemas/HoursData'
description: Menu IDs to Hours
example: *id029
description: Event data containing all Menu Hours.
UnpauseStoreEvent:
type: string
description: Closure ID. Required to unpause a store, if available.
example: 4109d2c9-8bc5-413c-af3e-1c92aa381e41
DeliveryStatusUpdateEvent:
type: object
properties:
provider:
type: string
description: Describes the provider of the delivery.
example: doordash
courier:
$ref: '#/components/schemas/Courier'
estimatedDeliveryTime:
type: string
nullable: true
description: The expected delivery time.
format: date-time
example: '2007-12-03T10:15:30+01:00'
estimatedPickupTime:
type: string
nullable: true
description: The expected pickup time.
format: date-time
example: '2007-12-03T10:15:30+01:00'
status:
$ref: '#/components/schemas/DeliveryStatus'
deliveryStatus:
$ref: '#/components/schemas/DeliveryStatus'
currencyCode:
type: string
minLength: 3
maxLength: 3
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: EUR
nullable: true
baseFee:
type: number
format: double
nullable: true
example: 1.0
extraFee:
type: number
format: double
nullable: true
example: 1.0
totalFee:
type: number
format: double
nullable: true
example: 1.0
distance:
$ref: '#/components/schemas/Distance'
updatedTime:
type: string
nullable: true
description: The time that the delivery status was updated.
format: date-time
example: '2007-12-03T10:15:30+01:00'
deliveryTrackingUrl:
type: string
format: uri
nullable: true
description: The URL to track the delivery.
example: https://www.doordash.com/delivery/track/1234567890
dropoffInfo:
$ref: '#/components/schemas/DropoffInfo'
description: Event that represent a status update for a delivery.
RequiredAddress:
type: object
properties:
fullAddress:
type: string
nullable: true
description: Full, human comprehensible address. It is usually formatted in the order appropriate for your locale. Currently only populated for cases in which only single-line address is available.
example: 123 Sample Street Ste 100, San Francisco, CA 94103
postalCode:
type: string
description: Postal code of the address.
example: '20500'
city:
type: string
description: The city/town portion of the address.
example: Washington
state:
type: string
description: Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, or a prefecture.
example: DC
countryCode:
type: string
description: CLDR country code. See http://cldr.unicode.org/
example: US
addressLines:
type: array
nullable: true
description: Address lines (e.g. street, PO Box, or company name) or the full single line address (e.g. street, city, state, country, zip).
example:
- 1600 Pennsylvania Avenue NW
- 123 Sample Street Ste 100, San Francisco, CA 94103
items:
type: string
linesOfAddress:
type: array
nullable: true
deprecated: true
description: 'Deprecated: use addressLines. Address lines (e.g. street, PO Box, or company name) or the full single line address (e.g. street, city, state, country, zip).'
example:
- 1600 Pennsylvania Avenue NW
- 123 Sample Street Ste 100, San Francisco, CA 94103
items:
type: string
location:
$ref: '#/components/schemas/Location'
description: Address.
RequestDeliveryQuoteEvent:
type: object
properties:
deliveryReferenceId:
type: string
description: Generated delivery reference id.
example: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
provider:
type: string
description: the pre-configured fulfillment provider slug in the onboarding process.
example: doordash
preferredPickupDuration:
type: integer
description: Preferred time for courier to arrive to pick up order. Value expressed in minutes and is relative to time delivery request is made. If not provided, or if the value is 0, please treat it as an ASAP request.
format: int32
example: 0
pickupAddress:
allOf:
- $ref: '#/components/schemas/RequiredAddress'
description: Order pickup address.
dropoffAddress:
allOf:
- $ref: '#/components/schemas/RequiredAddress'
description: Order drop-off address.
destinationAddress:
allOf:
- $ref: '#/components/schemas/RequiredAddress'
description: Order destination address. Deprecated in favor of dropoffAddress.
deprecated: true
pickUpLocationId:
type: string
nullable: true
description: An identifier for the pick up location
example: d197bd64-a037-4b6e-aad7-06918e7e2d75
orderSubTotal:
type: number
nullable: true
description: The sum of all item and modifier pricing
example: 15
currencyCode:
type: string
nullable: true
minLength: 3
maxLength: 3
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: KRW
containsAlcoholicItem:
type: boolean
nullable: true
description: Whether or not the order contains an alcoholic item.
example: true
customerPayments:
type: array
nullable: true
description: Processed and collectible payments from the customer.
items:
$ref: '#/components/schemas/CustomerPayment'
orderExternalIdentifiers:
nullable: true
$ref: '#/components/schemas/OrderExternalIdentifiers'
description: ID info associated with the order in external system, which is utilized for 3pl integrations.
RequiredPerson:
type: object
properties:
name:
type: string
nullable: true
description: The person's name as it should be displayed.
example: Jane Doe
maxLength: 255
phone:
type: string
nullable: true
description: The person's phone number.
example: +1-555-555-5555
maxLength: 25
phoneCode:
type: string
nullable: true
description: A code or extension of the phone number.
example: 111 11 111
maxLength: 25
email:
type: string
nullable: true
description: The person's email address.
example: email@email.com
personalIdentifiers:
$ref: '#/components/schemas/PersonalIdentifiers'
description: Details about the customer who placed the order.
CustomerTip:
type: object
nullable: true
required:
- value
properties:
value:
type: number
description: The amount that the customer tipped.
example: 2
Store-3:
type: object
nullable: true
properties:
name:
type: string
nullable: true
description: The name of the store.
example: Chipotle
phone:
type: string
nullable: true
description: The phone number to contact the store.
example: +1-555-555-5555
ModifierItem:
type: object
nullable: true
properties:
modifierId:
type: string
nullable: true
description: ID for this modifier.
example: store_123
name:
type: string
nullable: true
description: Human-readable name for this modifier.
example: Sample Name
price:
type: number
nullable: true
description: Per-unit price of this modifier.
example: 1.0
quantity:
type: number
nullable: true
description: Number of units of this modifier being added to the item.
example: 1.0
modifiers:
type: array
nullable: true
description: Nested modifier items.
items:
$ref: '#/components/schemas/ModifierItem'
Item-4:
type: object
nullable: true
properties:
name:
type: string
nullable: true
description: Human-readable name for this item.
example: Sample Name
price:
type: number
nullable: true
description: Per-unit price. This value excludes modifier prices.
example: 1.0
quantity:
type: number
nullable: true
description: Number of units of this item being ordered.
example: 1.0
itemId:
type: string
nullable: true
description: ID for this item.
example: store_123
modifiers:
type: array
nullable: true
description: Any modifiers attached to this item.
items:
$ref: '#/components/schemas/ModifierItem'
PickUpInfo:
type: object
nullable: true
properties:
readyAtTime:
type: string
description: The timestamp the order(s) became ready for pick up by a courier. If not provided, the order is not yet ready to be picked up.
format: date-time
example: '2007-12-03T10:15:30+01:00'
description: Pick up information for delivery.
DeliveryFee:
type: object
nullable: true
required:
- value
properties:
value:
type: number
description: The delivery fee paid by the customer.
example: 2
AcceptDeliveryEvent:
type: object
properties:
deliveryReferenceId:
type: string
description: Generated delivery reference id.
example: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
provider:
type: string
description: the pre-configured fulfillment provider slug in the onboarding process.
example: doordash
preferredPickupTime:
type: string
description: Preferred time for courier to arrive to pick up order. If not provided or if the timestamp is in the past, treat it as an ASAP request.
format: date-time
example: '2007-12-03T10:15:30+01:00'
pickupOrderId:
type: string
description: An identifier used for picking up order from pickup address.
example: 19dc56c8-4497-4392-a612-9f81beb5fe5f
pickupNote:
type: string
nullable: true
deprecated: true
description: Additional information to instruct couriers how to pickup the order. Deprecated in favor of pickUpInstructions.
example: Left side of the restaurant
pickupAddress:
allOf:
- $ref: '#/components/schemas/RequiredAddress'
description: Order pickup address.
dropoffNote:
type: string
nullable: true
description: Additional information to instruct couriers how to dropoff the order.
example: Please ring the doorbell
dropoffAddress:
allOf:
- $ref: '#/components/schemas/RequiredAddress'
description: Order drop-off address.
customer:
$ref: '#/components/schemas/RequiredPerson'
customerPayments:
type: array
nullable: true
description: Processed and collectible payments from the customer.
items:
$ref: '#/components/schemas/CustomerPayment'
currencyCode:
type: string
minLength: 3
maxLength: 3
nullable: true
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: KRW
customerTip:
$ref: '#/components/schemas/CustomerTip'
orderSubTotal:
type: number
nullable: true
description: The sum of all item and modifier pricing
example: 15
pickUpLocationId:
type: string
nullable: true
description: An identifier for the pick up location
example: d197bd64-a037-4b6e-aad7-06918e7e2d75
containsAlcoholicItem:
type: boolean
nullable: true
description: Whether or not the order contains an alcoholic item.
example: true
pickUpInstructions:
type: string
nullable: true
description: Additional information to instruct couriers how to pickup the order.
example: string
store:
$ref: '#/components/schemas/Store-3'
orderItems:
type: array
nullable: true
description: Items and modifiers in the order.
items:
$ref: '#/components/schemas/Item-4'
ofoDisplayId:
type: string
nullable: true
description: An identifier used to reference the order in the order source.
example: 5989
ofoSlug:
type: string
nullable: true
description: Slug to identify the OFO that is the source of order.
example: ifood
pickUpInfo:
$ref: '#/components/schemas/PickUpInfo'
orderExternalIdentifiers:
nullable: true
$ref: '#/components/schemas/OrderExternalIdentifiers'
description: ID info associated with the order in the external system, which is utilized for 3pl integrations.
dropoffInstructions:
nullable: true
$ref: '#/components/schemas/DropoffInstructions'
description: Information to instruct couriers how to dropoff the order.
deliveryFee:
$ref: '#/components/schemas/DeliveryFee'
CancelDeliveryEvent:
type: object
properties:
deliveryReferenceId:
type: string
description: Generated delivery reference id.
example: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
UpdateDeliveryRequestEvent:
type: object
properties:
deliveryReferenceId:
type: string
description: Generated delivery reference id.
example: d1a5e7c6-a79a-49bc-83bf-4169cd9c9dda
provider:
type: string
description: the pre-configured fulfillment provider slug in the onboarding process.
example: doordash
currencyCode:
type: string
minLength: 3
maxLength: 3
nullable: true
description: The 3-letter currency code (ISO 4217) to use for all monetary values.
example: USD
customerPayments:
type: array
nullable: true
description: Processed and collectible payments from the customer.
items:
$ref: '#/components/schemas/CustomerPayment'
customerTip:
$ref: '#/components/schemas/CustomerTip'
pickUpInfo:
$ref: '#/components/schemas/PickUpInfo'
ReportGeneratedEvent:
type: object
properties:
reportUrl:
type: string
description: Public URL to download generated report
example: https://example.com/
jobId:
type: string
description: Job id as returned by /v1/reports call
example: 38ab397f-b142-4b06-b70c-40c68a408bea
description: Event data containing metadata of the generated report
PingEvent:
type: object
properties:
message:
type: string
example: Hello World
FulfilledCredential:
required:
- key
- value
type: object
properties:
key:
type: string
description: The key of the credential.
example: userEmail
value:
type: string
description: The value of the credential.
example: test-user@gmail.com
StoreInfo-2:
required:
- name
- address
- currencyCode
- timezone
- internalStoreId
type: object
description: Useful information about the store.
properties:
name:
type: string
description: The store name.
example: Sample Name
address:
type: string
description: The store address.
example: string
currencyCode:
type: string
description: The currency code for the store.
example: USD
timezone:
type: string
description: The store timezone.
example: string
internalStoreId:
type: string
description: Our internal store identifier, also known as "SkuSku ID".
example: store_123
example: *id001
UpsertStorelinkEvent:
required:
- credentialsSchemaVersion
- credentials
- storeInfo
type: object
properties:
credentialsSchemaVersion:
type: string
description: The version of the credentials schema.
example: '1.0'
credentials:
type: array
description: Array of fulfilled credentials containing its keys and values.
items:
$ref: '#/components/schemas/FulfilledCredential'
example: *id030
storeInfo:
$ref: '#/components/schemas/StoreInfo-2'
RemoveStorelinkEvent:
required:
- storeInfo
type: object
properties:
storeInfo:
$ref: '#/components/schemas/StoreInfo-2'
EventNotificationBase:
required:
- eventId
- eventTime
- eventType
- metadata
type: object
properties:
eventId:
type: string
description: Unique identifier of the event.
format: uuid
example: c75d9460-5d48-423d-8d01-f825fd5b1672
eventTime:
type: string
description: Date of event occurrence.
format: date-time
example: '2007-12-03T10:15:30+01:00'
eventType:
type: string
description: The type of event.
example: string
description: Notification message sent on relevant events.
OptionalStoreIdInMetadata:
type: object
properties:
metadata:
type: object
properties:
storeId:
$ref: '#/components/schemas/StoreId'
ExistingCredential:
required:
- key
- value
type: object
properties:
key:
type: string
description: The key of the credential.
example: userEmail
value:
type: string
description: The value of the credential.
example: test-user@gmail.com
FetchCredentialsEvent:
type: object
properties:
credentials:
type: array
description: Array of existing credentials added so far. It's used by multi step onboarding to verify if other credentials are needed based on existing ones values.
items:
$ref: '#/components/schemas/ExistingCredential'
example: *id031
CredentialsSchemaVersion:
type: string
description: The version of the credentials schema.
example: '1.0'
ViewCredential:
required:
- key
- label
type: object
properties:
key:
type: string
description: The key of the credential.
example: userEmail
label:
type: string
description: The friendly name of the credential.
example: User Email
value:
type: string
description: The value of the credential. Only returned if the Store ID was provided in the request.
example: test-user@gmail.com
inputType:
type: string
description: The type of input
enum:
- TEXT
- SELECT
- MULTI_SELECT
default: TEXT
example: TEXT
selectOptions:
type: array
description: options to select when type is `SELECT` or `MULTI_SELECT`
items:
type: string
ViewCredentialsArray:
type: object
properties:
credentialsSchemaVersion:
$ref: '#/components/schemas/CredentialsSchemaVersion'
credentials:
type: array
description: Array of credentials containing its keys, labels and values.
items:
$ref: '#/components/schemas/ViewCredential'
example: *id032
parameters:
storeIdHeader:
name: X-Store-Id
in: header
required: true
schema:
$ref: '#/components/schemas/StoreId'
orderId:
name: orderId
in: path
required: true
schema:
type: string
description: A unique identifier of the order in a UUID format.
example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4
eventIdOptionalHeader:
name: X-Event-Id
in: header
required: false
schema:
type: string
description: Optional unique identifier of the event that this callback refers to.
example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c
eventIdHeader:
name: X-Event-Id
in: header
required: true
schema:
type: string
description: Unique identifier of the event that this callback refers to.
example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c
limit:
name: limit
in: query
required: true
schema:
type: string
description: Max number of orders to retrieve
example: 5
opaquePaginationToken:
name: token
in: query
required: false
schema:
type: string
description: Opaque token used for paging. Query parameters must be URL encoded.
example: CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)
minDateTime:
name: minDateTime
in: query
required: false
schema:
type: string
description: Minimum date/time filter in ISO 8601 format with time zone. Limited to the past 20 days.
example: '2023-07-20T10:15:30-05:00'
maxDateTime:
name: maxDateTime
in: query
required: false
schema:
type: string
description: Maximum date/time filter in ISO 8601 format with time zone.
example: '2023-08-15T10:15:30-05:00'
source:
name: source
in: path
required: true
schema:
type: string
description: Describes the source of the order, typically from a food ordering marketplace.
example: ubereats
requestId:
name: requestId
in: path
required: true
schema:
type: string
description: A unique identifier of the order in a UUID format.
example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4
deliveryReferenceId:
name: deliveryReferenceId
in: path
required: true
schema:
type: string
description: A unique identifier of the delivery in a UUID format.
example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4
jobId:
name: jobId
in: path
required: true
schema:
$ref: '#/components/schemas/JobId'
applicationIdHeader:
name: X-Application-Id
in: header
required: true
schema:
$ref: '#/components/schemas/ApplicationId'
inventory-summary-limit:
name: limit
in: query
required: false
schema:
type: string
description: Max number of entities to retrieve
example: 5
maximum: 200
inventory-limit:
name: limit
in: query
required: false
schema:
type: string
description: Max number of entities to retrieve
example: 5
maximum: 50
brandId:
name: brandId
in: path
required: true
schema:
type: string
description: A unique identifier of a brand in a UUID format.
example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4
limit-2:
name: limit
in: query
required: true
schema:
type: string
description: Max number of stores to retrieve
example: 5
storeId:
name: storeId
in: path
required: true
schema:
type: string
description: A unique identifier of a store in a UUID format.
example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4
source-2:
name: source
in: path
required: true
schema:
type: string
description: Loyalty provider source
example: css-loyalty
id:
name: id
in: query
required: true
schema:
type: string
description: User's id
example: somestring
limit-3:
name: limit
in: query
required: true
schema:
type: string
description: Max number of items to retrieve (minimum 1, maximum is 10, anything smaller/larger than min/max resets to min/max)
example: 5
term:
name: term
in: query
required: true
schema:
type: string
description: Used to search for users in the loyalty program. The search is case-sensitive and will match any part of the user's fields.
example: john
responses:
'200':
description: Return 200 status to indicate that the data was processed successfully
'202':
description: Return 202 status to indicate that the data was accepted for processing
'400':
description: The request is malformed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'401':
description: Invalid authorization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: Authorization not valid for the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: Resource not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'409':
description: The connection between the partner application and the store already exists.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: The request body is not valid.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
2XX:
description: Return any 2XX status to indicate that the data was received successfully
x-tagGroups:
- name: Endpoints
tags:
- Account Pairing Endpoints
- Auth Endpoints
- Callback Endpoints
- Delivery Endpoints
- Finance Endpoints
- Inventory Endpoints
- Manager Menu Endpoints
- Manager Order Endpoints
- Manager Storefront Endpoints
- Menus Endpoints
- Orders Endpoints
- Organization Endpoints
- Ping Endpoints
- Reports Endpoints
- Reviews Endpoints
- Storefront Endpoints
- Manager Loyalty Endpoints
- Direct Orders Endpoints
- Store Endpoints
- name: Webhooks
tags:
- Account Pairing Webhooks
- Delivery Webhooks
- Manager Orders Webhooks
- Menus Webhooks
- Orders Webhooks
- Ping Webhooks
- Reports Webhooks
- Storefront Webhooks