Public API (v1)

Download OpenAPI specification:Download

License: Proprietary

Overview

The API endpoints are developed around RESTful principles secure via the OAuth2.0 protocol.

Beyond the entry points, the API also provides a line of communication into your system via webhooks.

For testing purposes, we offer a staging environment. Also, more detailed information about the business rules and workflows can be found on the Documentation Section

Versioning

Each API is versioned individually, but we follow these rules:

  • Non breaking changes (eg: adding new fields) are added in the current version without previous communication
  • Breaking changes (fields removal, semantic changed or schema update) have the version incremented
  • 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)
  • Once users migrate to the new version, we will deprecate the old ones
  • Once there is a new version for an API, we won't accept new integrations targeting old versions

API General Definitions

The APIs use resource-oriented URLs communicating, primarily, via JSON and leveraging the HTTP headers, response status codes, and verbs.

To exemplify how the API is to be consumed, consider a fake GET resource endpoint invocation below:

curl --request GET 'https://{{public-api-url}}/v1/resource/123' \
--header 'Authorization: Bearer 34fdabeeafds=' --header 'X-Store-Id: 321'
Header Description
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 guide.
X-Store-Id The ID of the store in your system this call acts on behalf of.

All resource endpoints expect the Authorization header, the remaining headers are explicitly stated in the individual endpoint documentation section.

With these headers, the system will:

  • Validate the client token, making sure the call is originating from a trusted source.
  • Validate that the Application has the permission to access the v1/resource/{id} resource via the Application's pre-configured scopes.
  • Translate your X-Store-Id to our internal store ID (e.g. AAA).
  • Validate and retrieve resource AAA, that is associated to your Application via store id 321.

POST/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).

curl --location --request POST 'https://{{public-api-url}}/v1/resource' \
--header 'Authorization: Bearer 34fdabeeafds=' --header 'X-Store-Id: 321'
--data '{"foo": "bar"}'

API Authentication/Authorization

OAuth2.0

The Authorization API is based on the OAuth2.0 protocol, 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.

Scopes

Scopes 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.

Authorization Code Flow

To 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. The 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. Example

curl --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'

This 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. With the authorization code, the client application can generate the token.

Client Credentials Flow

The 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.

Generate Token

To 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 endpoint. The result of this invocation is a token that is valid for a pre-determined time or until it is manually revoked.

The access token obtained will be sent as a Bearer value of the Authorization HTTP header.

Client credentials in the request-body and HTTP Basic Auth are supported.

Request Example for client_credentials

curl --location --request POST 'https://{{public-api-url}}/v1/auth/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'scope=ping' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'client_id=[APPLICATION_ID]' \
  --data-urlencode 'client_secret=[CLIENT_SECRET]'

Request Example for authorization_code

curl --location --request POST 'https://{{public-api-url}}/v1/auth/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'scope=ping' \
  --data-urlencode 'grant_type=authorization_code' \
  --data-urlencode 'client_id=[APPLICATION_ID]' \
  --data-urlencode 'client_secret=[CLIENT_SECRET]' \
  --data-urlencode 'code=[code]' \
  --data-urlencode 'redirect_uri=[redirect_uri]'

Response Example

{
  "access_token": "oMahtBwBbnZeh4Q66mSuLFmk2V0_CLCKVt0aYcNJlcg.yditzjwCP7yp0PgR6AzQR3wQ1rTdCjkcPeAMuyfK-NU",
  "expires_in": 2627999,
  "scope": "ping orders.create",
  "token_type": "bearer"
}

Token Usage

The 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.

Note 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.

Example

curl --location --request GET 'https://{{public-api-url}}/v1/ping' \
  --header 'Authorization: Bearer <access_token>' \
  --header 'X-Store-Id: <storeId>'
Security Scheme Type OAuth2
clientCredentials OAuth Flow
Token URL: /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 OAuth Flow
Authorization URL: /v1/auth/oauth2/authorize
Token URL: /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.

Webhook

The Public API is able to send notifications to your system via HTTP POST requests.

Every 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 for more details.

Please work with your Account Representative to setup your Application's Webhook configurations.

Example Base-URL = https://{{your-server-url}}/webhook

Notification Schema

Name Type Description
eventId string Unique id of the event.
eventTime string The time the event occurred.
eventType string The type of event (e.g. create_order).
metadata.storeId string Id of the store for which the event is being published.
metadata.applicationId string Id of the application for which the event is being published.
metadata.resourceId string The external identifier of the resource that this event refers to.
metadata.resourceHref string The endpoint to fetch the details of the resource.
metadata.payload object The event object which will be detailed in each Webhook description.

Notification Request Example

curl --location --request POST 'https://{{your-server-url}}/webhook' \
--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' \
--header 'Authorization: MAC <hash signature>' \
--header 'Content-Type: application/json' \
--data-raw '{
   "eventId": "123456",
   "eventTime": "2020-10-10T20:06:02:123Z",
   "eventType": "orders.new_order",
   "metadata": {
      "storeId": "755fd19a-7562-487a-b615-171a9f89d669",
      "applicationId": "e22f94b3-967c-4e26-bf39-9e364066b68b",
      "resourceHref": "https://{{public-api-url}}/v1/orders/bf9f1d81-f213-496e-a026-91b6af44996c",
      "resourceId": "bf9f1d81-f213-496e-a026-91b6af44996c",
      "payload": {}
   }
}

Expected Response

The partner application should return an HTTP 200 response code with an empty response body to acknowledge receipt of the webhook event.

Rate Limiting

Please, refer to Rate Limiting Guide for more details.

Error codes

The 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.

4XX Client-Side Errors

Client-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. If 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. For 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.

5XX Server-Side Errors

Server-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. Server-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. For 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. If you continually receive server-side errors, reach out to our support team for further assistance.

Account Pairing

Endpoints to manage store onboarding and status

Complete Store Onboarding

RATE LIMIT: 2 per minute

The 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.

Authorizations:
OAuth2.0 (stores.manage)
header Parameters
X-Application-Id
required
string (ApplicationId)
Example: 5045c1c3-694f-4392-b43b-e765cd89c8b8

The plain-text Application ID, provided at partner onboarding, also available on Developer Portal.

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
success
required
boolean

Indicates if the partner application successfully created and validated the credential provided through the Upsert Store Webhook.

storeId
string or null

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.

object or null

The error response object.

Responses

Request samples

Content type
application/json
{
  • "success": true,
  • "storeId": "partner-store-unique-identifier",
  • "errorMessage": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Update Store Status

RATE LIMIT: 2 per minute

The partner application should call this endpoint when needing to change the status of a store that already completed the onboarding process.

Authorizations:
OAuth2.0 (stores.manage)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
status
required
string
Enum: "ACTIVE" "SUSPENDED" "INVALID"

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.

message
string or null

Optional message to explain the reason of the status update.

Responses

Request samples

Content type
application/json
{
  • "status": "SUSPENDED",
  • "message": "Authentication is failing with current credentials. Suspending store while the retry process is in progress."
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Auth

Endpoints to handle token management.

Generate token

Client credentials in the request-body and HTTP Basic Auth are supported.

Request Body schema: application/x-www-form-urlencoded
client_id
string <uuid>

The ID of the client (also known as the Application ID).

client_secret
string

The secret of the client.

grant_type
required
string
Enum: "client_credentials" "authorization_code"

The OAuth2.0 grant types supported.

scope
required
string

The scope to request, multiple scopes are passed delimited by a space character.

code
string or null

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.

redirect_uri
string or null

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.

code_verifier
string or null

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.

Responses

Response samples

Content type
application/json
{
  • "access_token": "oMahtBwBbnZeh4Q66mSuLFmk2V0_CLCKVt0aYcNJlcg.yditzjwCP7yp0PgR6AzQR3wQ1rTdCjkcPeAMuyfK-NU",
  • "expires_in": 2627999,
  • "scope": "ping orders.create",
  • "token_type": "bearer"
}

OAuth 2.0 Authorize Endpoint

Request a user's authorization to perform action on their behalf

query Parameters
client_id
required
string

The ID of the client (also known as the Application ID).

redirect_uri
required
string

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.

response_type
required
string

Specifies the expected response type. Only "code" is accepted.

scope
required
string

The scope to request, multiple scopes are passed delimited by a space character.

state
required
string

Can be used to store request-specific data. The server will return the unmodified state value back to the application.

code_challenge
string

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.

code_challenge_method
string

Method used to transform the code verifier. The most common method is "S256", which stands for SHA-256.

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Callback

Endpoints for callback management.

Publish callback error

RATE LIMIT: 16 per minute

This is the generalized callback error that should be used to return failures for all webhooks, unless otherwise specified. See failed event flow for details.

Authorizations:
OAuth2.0 (callback.error.write)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
errorCode
string
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"

Errors that occur processing the webhook, modeled after Google's gRPC error codes. For 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.

errorMessage
string or null

Additional information about the error. This message will be displayed to the user, so ideally it should be friendly.

Responses

Request samples

Content type
application/json
{
  • "errorCode": "NOT_FOUND",
  • "errorMessage": "The store was not found."
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Delivery

Endpoints to manage delivery.

Update delivery status

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (delivery.provider)
path Parameters
deliveryReferenceId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the delivery in a UUID format.

Request Body schema: application/json
deliveryStatus
string (DeliveryStatus)
Enum: "REQUESTED" "ALLOCATED" "PICKED_UP" "COMPLETED" "CANCELED" "ARRIVED_AT_PICKUP" "ARRIVED_AT_DROP_OFF"

The status of the delivery.

estimatedDeliveryTime
string or null <date-time>

The expected delivery time.

estimatedPickupTime
string or null <date-time>

The expected pickup time.

object or null (Person)

The recipient information.

object or null (Location)

Latitude and longitude of the address.

createdAt
string <date-time>

The time that the update was created.

object or null (VehicleInformation)
currencyCode
string or null 3 characters

The 3-letter currency code (ISO 4217) to use for all monetary values.

object (DeliveryCost)

Delivery cost details.

providerDeliveryId
string or null

The provider's internal identifier for the delivery used for tracking purposes.

object or null (DropoffInfo)

Delivery dropoff details.

deliveryTrackingUrl
string or null

Delivery tracking url.

Responses

Request samples

Content type
application/json
{
  • "deliveryStatus": "REQUESTED",
  • "estimatedDeliveryTime": "2007-12-03T10:15:30+01:00",
  • "estimatedPickupTime": "2007-12-03T10:15:30+01:00",
  • "courier": {
    },
  • "location": {
    },
  • "createdAt": "2007-12-03T10:15:30+01:00",
  • "vehicleInformation": {
    },
  • "currencyCode": "EUR",
  • "cost": {
    },
  • "providerDeliveryId": "string",
  • "dropoffInfo": {
    },
  • "deliveryTrackingUrl": "string"
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the result of a request delivery quote event

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (delivery.provider)
path Parameters
deliveryReferenceId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the delivery in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
minPickupDuration
integer <int32> >= 0

Minimum time required for courier to arrive at pickup location in minutes It is an estimation.

maxPickupDuration
integer or null <int32>

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.

object or null (Distance)

Delivery distance.

currencyCode
string 3 characters

The 3-letter currency code (ISO 4217) to use for all monetary values.

object (DeliveryCost)

Delivery cost details.

provider
string or null

Delivery Service Provider Slug.

Array of objects or null (FulfillmentPathEntity)

List of entities involved in the fulfillment processing path.

createdAt
string <date-time>

The time that the quote was created.

accountBalance
number or null

The remaining account balance of the requester for the delivery provider.

Responses

Request samples

Content type
application/json
{
  • "minPickupDuration": 5,
  • "maxPickupDuration": 10,
  • "deliveryDistance": {
    },
  • "currencyCode": "EUR",
  • "cost": {
    },
  • "provider": "doordash",
  • "fulfillmentPath": [
    ],
  • "createdAt": "2007-12-03T10:15:30+01:00",
  • "accountBalance": 1068.32
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the result of an accept delivery event

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (delivery.provider)
path Parameters
deliveryReferenceId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the delivery in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
object or null (Distance)

Delivery distance.

currencyCode
string 3 characters

The 3-letter currency code (ISO 4217) to use for all monetary values.

object (DeliveryCost)

Delivery cost details.

Array of objects or null (FulfillmentPathEntity)

List of entities involved in the fulfillment processing path.

estimatedDeliveryTime
string or null <date-time>

The expected delivery time.

estimatedPickupTime
string or null <date-time>

The expected pickup time.

confirmedAt
string <date-time>

The time that the request was accepted.

deliveryTrackingUrl
string or null

URL to a web page that tracks the delivery.

providerDeliveryId
string or null

The provider's internal identifier for the delivery used for tracking purposes.

Responses

Request samples

Content type
application/json
{
  • "deliveryDistance": {
    },
  • "currencyCode": "EUR",
  • "cost": {
    },
  • "fulfillmentPath": [
    ],
  • "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": "string"
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the result of a cancel delivery event

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (delivery.provider)
path Parameters
deliveryReferenceId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the delivery in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
canceledAt
string <date-time>

The time that the request was cancelled.

Responses

Request samples

Content type
application/json
{
  • "canceledAt": "2007-12-03T10:15:30+01:00"
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Publish delivery callback error

RATE LIMIT: 16 per minute

Authorizations:
OAuth2.0 (callback.error.write)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
errorCode
string
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"

Errors that occur processing the webhook, modeled after Google's gRPC error codes. For 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.

errorMessage
string or null

Additional information about the error. This message will be displayed to the user, so ideally it should be friendly.

Responses

Request samples

Content type
application/json
{
  • "errorCode": "NOT_FOUND",
  • "errorMessage": "The store was not found."
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the result of an update delivery request event

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (delivery.provider)
path Parameters
deliveryReferenceId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the delivery in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
currencyCode
string or null 3 characters

The 3-letter currency code (ISO 4217) to use for all monetary values.

object (DeliveryCost)

Delivery cost details.

Responses

Request samples

Content type
application/json
{
  • "currencyCode": "EUR",
  • "cost": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Finance

Endpoints to handle financial data.

Post financial transactions

Post financial data related to a given order.

Authorizations:
OAuth2.0 (finance)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
object (OrderIdentifierFinance)

The external identifiers of the order.

id
required
string

External financial transaction identifier.

pending
required
boolean

Whether the transaction can be updated in the future.

currencyCode
required
string 3 characters

The 3-letter currency code (ISO 4217) to use for all monetary values in this order.

createdAt
required
string <date-time>

The date (in UTC) when the financial transaction was created.

customerId
string or null

Customer identifier.

notes
string or null

General notes about the financial transaction.

type
required
string
Enum: "PAYMENT" "ADJUSTMENT" "CANCELLATION" "MISC"

Financial transaction operation type.

object (PayoutInfo)
Array of objects or null (OrderItemInformation)

Detailed financial per order item.

Array of objects or null (OrderIssue)

List of issues that might have happened with the order.

required
object (FinancialData)

Breakdown of order values. Represents total values, fees, discounts, and any possible adjustments that may happen in the order value.

Breakdown 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.

All objects in breakdown lists have a required property "subType". Allowed values are:

VALUE: represent the net value of the order/item/fee. Should be used in the following cases:

  • when the amount does not contain taxes or VAT
  • when tax/VAT is a known value, in that case, the list must contain an object with subtype TAX or VAT representing this value.

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:

  "breakdown": [
      {
          "name": "Item 1",
          "value": 10,
          "subType": "VALUE"
      },
      {
          "name": "Item 1 - Tax",
          "value": 2,
          "subType": "TAX"
      }
  ]

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:

  "breakdown": [
      {
          "name": "Item 1",
          "value": 12,
          "subType": "VALUE"
      },
      {
          "name": "Item 1 - Tax",
          "value": 2,
          "subType": "VAT"
      }
  ]

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.

  "breakdown": [
      {
          "name": "Item 1",
          "value": 12,
          "subType": "VALUE_WITH_TAX"
      }
  ]

Responses

Request samples

Content type
application/json
{
  • "orderIdentifiers": {
    },
  • "id": "string",
  • "pending": true,
  • "currencyCode": "EUR",
  • "createdAt": "2007-12-03T10:15:30+01:00",
  • "customerId": "string",
  • "notes": "string",
  • "type": "PAYMENT",
  • "payout": {
    },
  • "orderItems": [
    ],
  • "issues": [
    ],
  • "data": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Post a financial invoice

Post a financial invoice containing payout and financial data for orders in a given period of time.

Authorizations:
OAuth2.0 (finance)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
sourceService
string or null

Describes the source of the order, typically from a food ordering marketplace.

required
object (InvoicePayoutInfo)
required
Array of objects (SimpleFinancialTransaction) [ items ]

List of financial transactions related to this invoice.

currencyCode
string 3 characters

The 3-letter currency code (ISO 4217) to use for all monetary values in this order.

Responses

Request samples

Content type
application/json
{
  • "sourceService": "ubereats",
  • "payout": {
    },
  • "financialTransactions": [
    ],
  • "currencyCode": "EUR"
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Inventory

Endpoints to interact with product inventory.

List inventory summaries

RATE LIMIT: 32 per minute

List inventory summaries by the requested parameters.

Authorizations:
OAuth2.0 (catalog)
query Parameters
limit
string <= 200
Example: limit=5

Max number of entities to retrieve

token
string
Example: token=CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)

Opaque token used for paging. Query parameters must be URL encoded.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "inventorySummaries": [
    ],
  • "nextToken": "H12MAF2fFaFFFa"
}

List shipments

RATE LIMIT: 8 per minute

List shipments by the requested parameters.

Authorizations:
OAuth2.0 (catalog)
query Parameters
limit
string <= 50
Example: limit=5

Max number of entities to retrieve

token
string
Example: token=CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)

Opaque token used for paging. Query parameters must be URL encoded.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "shipments": [
    ],
  • "nextToken": "H12MAF2fFaFFFa"
}

Create shipment

RATE LIMIT: 32 per minute

Create a new shipment.

Authorizations:
OAuth2.0 (catalog)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
object (ShipmentDeliveryInfo)

Delivery information for a shipment.

required
Array of objects (CreateShipmentLineItem) [ items ]

A list of the shipment line items.

Responses

Request samples

Content type
application/json
{
  • "deliveryInfo": {
    },
  • "lineItems": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "18695c43-c670-4c57-a714-e0d7b215db20"
}

Menus Manager

Endpoints for applications managing menus related data and operations.

Get the menus for a store

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (menus.read)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "photos": {},
  • "categories": {
    },
  • "modifierGroups": {
    },
  • "menus": {
    },
  • "items": {
    }
}

Get the async menu job status

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (menus.async_job.read)
path Parameters
jobId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

The unique identifier of the job.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "jobReference": {
    },
  • "jobType": "PUBLISH",
  • "publishJobState": {
    }
}

Get the publish-targets for a store

RATE LIMIT: 2 per minute

Authorizations:
OAuth2.0 (manager.menus)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "menuPublishTargets": {
    }
}

Publish menus to targets for a store

RATE LIMIT: 2 per minute

Authorizations:
OAuth2.0 (manager.menus)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
menuPublishTargets
Array of strings

MenuPublishTargets to publish to.

Responses

Request samples

Content type
application/json
{
  • "menuPublishTargets": [
    ]
}

Response samples

Content type
application/json
{
  • "requestSubmitted": true,
  • "jobId": "9d222c6d-893e-4e79-8201-3c9ca16a0f39",
  • "menuPublishTargets": {
    }
}

Synchronize store menu with POS menu

RATE LIMIT: 2 per minute

Authorizations:
OAuth2.0 (manager.menus)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
shouldPublishChanges
boolean or null

Whether or not to publish changes to external services after bulk resolution.

useCustomOptions
boolean or null

If true, use customBulkResolutionOptions instead of menu configuration.

object or null (CustomBulkResolutionOptions)

Responses

Request samples

Content type
application/json
{
  • "shouldPublishChanges": true,
  • "useCustomOptions": true,
  • "customBulkResolutionOptions": {
    }
}

Response samples

Content type
application/json
{
  • "jobId": "9d222c6d-893e-4e79-8201-3c9ca16a0f39"
}

Suspend menu entities targets for a store

RATE LIMIT: 16 per minute

Authorizations:
OAuth2.0 (manager.menus)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
entityIds
required
Array of strings

Entity IDs to suspend. These should be the IDs as you represent them in your system.

note
required
string

The reason you are suspending the items.

required
object (SuspensionStatus)

The type of suspension this will be.

Responses

Request samples

Content type
application/json
{
  • "entityIds": [
    ],
  • "note": "Out of item",
  • "status": {
    }
}

Response samples

Content type
application/json
{
  • "jobReference": {
    },
  • "jobType": "PUBLISH",
  • "publishJobState": {
    }
}

Unsuspend menu entities targets for a store

RATE LIMIT: 16 per minute

Authorizations:
OAuth2.0 (manager.menus)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
entityIds
Array of strings

Entity IDs to unsuspend. These should be the IDs as you represent them in your system.

note
string

The reason you are unsuspending the items.

Responses

Request samples

Content type
application/json
{
  • "entityIds": [
    ],
  • "note": "Item back in stock"
}

Response samples

Content type
application/json
{
  • "jobReference": {
    },
  • "jobType": "PUBLISH",
  • "publishJobState": {
    }
}

Bootstrap menus for a store

RATE LIMIT: 2 per minute

Authorizations:
OAuth2.0 (manager.menus)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
templateName
required
string

Name for the bootstrapped template menu

externalServiceSlug
required
string

The external service from which to bootstrap menu data

enableTemplate
boolean or null

Whether or not to enable the template at the bootstrapped store

stationId
string or null

The id of the station to which to assign bootstrapped items, unnecessary for brick and mortar

posSlug
string or null

The slug for the POS to connect to

Responses

Request samples

Content type
application/json
{
  • "templateName": "My Store's Menu",
  • "externalServiceSlug": "ubereats-api",
  • "enableTemplate": true,
  • "stationId": "9cc4bb5e-bc97-40d9-af28-c02ef1483610",
  • "posSlug": "pos-slug"
}

Response samples

Content type
application/json
{
  • "jobReference": {
    },
  • "jobType": "PUBLISH",
  • "publishJobState": {
    }
}

Orders Manager (POS, BI &amp; Reports)

Endpoints for applications that act on the merchant/store side of an order rather than as the ordering marketplace — typically Point-of-Sale (POS) systems, Business Intelligence (BI) tools, and reporting integrations.

This domain lets a merchant-side application retrieve a store's orders and manage them on the store's behalf as they progress through their lifecycle.

Notify the result of a Create Order event

RATE LIMIT: 32 per minute

Callback used by a merchant-side integration to acknowledge the result of an order-creation webhook it received. Send the X-Event-Id of the original webhook event so the platform can correlate the acknowledgement with the order it created.

Authorizations:
OAuth2.0 (manager.orders)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Fetch order feed for a store

RATE LIMIT: 32 per minute

Returns a paginated feed of the store's orders, most useful for POS, BI, and reporting integrations that periodically poll for new and updated orders.

Use limit to control page size and the opaque pagination token to page through results — when the response offsetToken is absent, no more orders are available. Narrow the window with minDateTime / maxDateTime (ISO 8601 with time zone). The lookback window is bounded by the platform's retention period (currently up to the past 20 days).

Authorizations:
OAuth2.0 (manager.orders)
query Parameters
limit
required
string
Example: limit=5

Max number of orders to retrieve

token
string
Example: token=CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)

Opaque token used for paging. Query parameters must be URL encoded.

minDateTime
string
Example: minDateTime=2023-07-20T10:15:30-05:00

Minimum date/time filter in ISO 8601 format with time zone. Limited to the past 20 days.

maxDateTime
string
Example: maxDateTime=2023-08-15T10:15:30-05:00

Maximum date/time filter in ISO 8601 format with time zone.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "orders": [
    ],
  • "offsetToken": "H12MAF2fFaFFFa"
}

Fetch order with Manager Info

RATE LIMIT: 32 per minute

Returns the full detail of a single order for the given source (the ordering marketplace the order came from, e.g. ubereats), enriched with merchant-side information: the current POS injectionState, the injectionEvent that triggered it, any orderIssues, and cancellation details when applicable.

Item and modifier identifiers in the returned order are the store's external (POS) identifiers, so they line up with the merchant's own catalog.

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "order": {
    },
  • "injectionState": "UNKNOWN",
  • "orderCancelDetails": {
    },
  • "injectionEvent": "UNKNOWN",
  • "orderIssues": {
    }
}

Request order confirmation

RATE LIMIT: 32 per minute

Confirms (accepts) the order for the given source on behalf of the store — the typical action a POS takes when the merchant accepts an incoming order. Optionally include estimatedPrepTimeMinutes to communicate how long the order will take to prepare. Processed asynchronously; returns 202 Accepted.

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
estimatedPrepTimeMinutes
integer or null

Estimated order preparation time in minutes.

Responses

Request samples

Content type
application/json
{
  • "estimatedPrepTimeMinutes": 15
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Request order cancelation

RATE LIMIT: 32 per minute

Cancels (rejects) the order for the given source on behalf of the store. A cancellationReason is required; optionally include the cancelingParty to record who initiated the cancellation. Processed asynchronously; returns 202 Accepted.

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
cancellationReason
required
string
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"

The reason for cancellation.

object or null (Person)

The recipient information.

Responses

Request samples

Content type
application/json
{
  • "cancellationReason": "REASON_UNKNOWN",
  • "cancelingParty": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Mark an order as ready to pickup

RATE LIMIT: 32 per minute

Signals that the store has finished preparing the order for the given source and it is ready for the courier or customer to collect. Marks all of the order's station tickets as prepared. Processed asynchronously; returns 202 Accepted.

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Create a packaging component

RATE LIMIT: 32 per minute

Creates a packaging component (a packaging ticket) for the order of the given source, used by kitchen/station workflows to print or track packaging for the order. Returns the identifiers of the created order component.

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "orderComponentId": "69f60a06-c335-46d9-b5a1-97f1a211c514",
  • "orderComponentOrderId": "69f60a06-c335-46d9-b5a1-97f1a211c514"
}

Mark an order as fulfilled

RATE LIMIT: 32 per minute

Marks the order for the given source as handed off / fulfilled — the final operational step, once the order has been given to the courier or customer. Processed asynchronously; returns 202 Accepted.

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Mark a dine-in (open-tab) order as closed

Marks an open-tab dine-in order as closed. The closing party is always the merchant/POS (system). RATE LIMIT: 32 per minute

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Update order customer items

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

Authorizations:
OAuth2.0 (manager.orders)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
currencyCode
string or null 3 characters

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.

required
Array of objects or objects or objects (CustomerItemModification) non-empty [ items ]

List of modifications to apply (quantity change, price adjustment, or item added).

Responses

Request samples

Content type
application/json
{
  • "currencyCode": "USD",
  • "customerItemModifications": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Update order prep time

RATE LIMIT: 32 per minute

Updates the estimated preparation time (in minutes) for the order of the given source, e.g. when the kitchen revises its estimate after the order was confirmed. Unlike the other manager endpoints, this one uses the orders.update scope. Processed asynchronously; returns 202 Accepted.

Authorizations:
OAuth2.0 (orders.update)
path Parameters
source
required
string
Example: ubereats

The source the order is managed under. This is the value reported as externalIdentifiers.source by the order feed (fetch order feed) — always read it from the feed rather than assuming it matches the original marketplace label. For orders submitted through the Orders API it is the submitting integration's own source identifier, which can differ from the marketplace source that was set on the order when it was created.

orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
prepTimeMinutes
required
integer

The requested preparation time to transition the order to.

Responses

Request samples

Content type
application/json
{
  • "prepTimeMinutes": 0
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Storefront Manager

Endpoints for applications managing storefront related data and operations.

Request pausing storefronts of a store

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.storefront)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
start
string or null <date-time>

Start time for the pause. Executed immediately if not set.

end
string or null <date-time>

Time when the pause should expire. If not provided, uses the default which is 4 AM at store timezone.

comment
string or null

Comment for the pause

reason
string (PauseReason)
Enum: "STORE_MAINTENANCE" "OTHER"

Reason for pausing the storefronts

Responses

Request samples

Content type
application/json
{
  • "start": "2007-12-03T10:15:30+01:00",
  • "end": "2007-12-03T10:15:30+01:00",
  • "comment": "Some comment",
  • "reason": "STORE_MAINTENANCE"
}

Response samples

Content type
application/json
{
  • "requestId": "string"
}

Request unpausing storefronts of a store

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.storefront)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
comment
string or null

Comment for the unpause

Responses

Request samples

Content type
application/json
{
  • "comment": "Some comment"
}

Response samples

Content type
application/json
{
  • "requestId": "string"
}

Get the process status details of a pause request

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.storefront)
path Parameters
requestId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "processRequestStatuses": [
    ]
}

Get the process status details of an unpause request

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.storefront)
path Parameters
requestId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "processRequestStatuses": [
    ]
}

Menus

Endpoints to manage menus.

Upsert menus for a store

RATE LIMIT: 2 per minute

Authorizations:
OAuth2.0 (menus.upsert)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
object (All Categories for the store, indexed by ID)
required
object (All ModifierGroups for the Store, indexed by ID)
required
object (All Menus for the store, indexed by ID)
object (All Items for the store, indexed by ID)

Responses

Request samples

Content type
application/json
{
  • "categories": {
    },
  • "modifierGroups": {
    },
  • "menus": {
    },
  • "items": {
    }
}

Response samples

Content type
application/json
{
  • "jobReference": {
    },
  • "jobType": "PUBLISH",
  • "publishJobState": {
    }
}

Notify the result of a Publish Menu event

RATE LIMIT: 8 per minute

Successful callback response for the publish menu webhook. If an error occurred, please publish a callback error instead. See failed event flow for details.

Authorizations:
OAuth2.0 (menus.publish)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
required
object

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.

Responses

Request samples

Content type
application/json
{
  • "requestedToCreatedEntityIds": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the result of a Send Menu event

RATE LIMIT: 4 per minute

Successful callback response for the send menu webhook. If an error occurred, please publish a callback error instead. See failed event flow for details.

Authorizations:
OAuth2.0 (menus.get_current)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
required
object (MenuData)

MenuData contains all menu entities, and their relations.

Responses

Request samples

Content type
application/json
{
  • "menuData": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the receival of a Upsert Hours Menu event

RATE LIMIT: 8 per minute

Successful callback response for the upsert hours webhook. If an error occurred, please publish a callback error instead. See failed event flow for details.

Authorizations:
OAuth2.0 (menus.upsert_hours)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Synchronize store menu with POS menu

This endpoint is used to synchronize the store menu with the connected POS.

Authorizations:
OAuth2.0 (menus.sync)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
shouldPublishChanges
boolean or null

Whether or not to publish changes to external services after bulk resolution.

useCustomOptions
boolean or null

If true, use customBulkResolutionOptions instead of menu configuration.

object or null (CustomBulkResolutionOptions)

Responses

Request samples

Content type
application/json
{
  • "shouldPublishChanges": true,
  • "useCustomOptions": true,
  • "customBulkResolutionOptions": {
    }
}

Response samples

Content type
application/json
{
  • "jobId": "9d222c6d-893e-4e79-8201-3c9ca16a0f39"
}

Notify the result of an Update Menu Entities Availabilities event

RATE LIMIT: 32 per minute

Successful callback response for the update menu entities availabilities webhook. If an error occurred, please publish a callback error instead. See failed event flow for details.

Authorizations:
OAuth2.0 (menus.entity_suspension)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Orders

Endpoints used by ordering marketplaces and other order sources to send orders to a store and keep them up to date.

This domain lets an order source submit new orders as customers place them, reflect later changes as the orders progress, and backfill historical orders for reporting.

Create order

RATE LIMIT: 32 per minute

Pushes a new order into Otter for the store identified by the X-Store-Id header. Used by ordering marketplaces and other order sources when a customer places an order.

Provide the order's line items, fulfillment information, customer payments, and exactly one financial breakdown — orderTotal (V1) or orderTotalV2 (V2). New integrations should prefer orderTotalV2. All monetary values use the major unit of the order's currencyCode.

The response returns the order reference (Otter id, friendlyId, and storeId) you can use to correlate and update the order later.

Authorizations:
OAuth2.0 (orders.create)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
object

Identifiers that tie this order back to your system and to the source it originated from (marketplace, aggregator, POS). Used to correlate the order across platforms.

currencyCode
required
string 3 characters

The 3-letter currency code (ISO 4217) used for all monetary values in this order (item prices, modifier prices, and every amount in orderTotal / orderTotalV2). All amounts are expressed in the major unit of this currency (for example 12.50), never in minor units (cents).

status
required
string
Enum: "NEW_ORDER" "CONFIRMED" "PICKED_UP" "CANCELED" "FULFILLED" "PREPARED" "REJECTED" "PREVISIT_COMPLETED" "PREVISIT_NO_SHOW" "UNKNOWN"

The current status of the order. When creating an order this is typically NEW_ORDER (awaiting confirmation) or CONFIRMED. UNKNOWN is returned only when the status cannot be mapped.

Array of objects (Item) <= 100 items [ items ]

The items ordered by the customer, including their modifiers. If you send an order with an empty list, the platform creates a single placeholder "Custom item" priced at the order subtotal.

orderedAt
string or null <date-time>

The date (in UTC) when the order was placed by the customer.

object or null

The customer who placed the order.

customerNote
string or null

An order-level note provided by the customer.

object or null (DeliveryInfo)

Information on order's delivery process.

object or null

Flat, customer-facing financial breakdown (V1). At least one of orderTotal or orderTotalV2 is required. Prefer orderTotalV2 for new integrations.

object or null

Richer, line-itemized financial breakdown (V2), covering the customer charges, how they were settled, the store payout, and the marketplace charges. At least one of orderTotal or orderTotalV2 is required; if both are sent, orderTotalV2 takes precedence for the financial breakdown.

Array of objects or null (CustomerPayment)

How the customer paid, as one entry per payment portion (amount, method, and processing status). These entries must be consistent with the amounts and methods described in orderTotalV2.customerPayment when V2 is used.

object or null (FulfillmentInfo)

Information on order fulfillment.

Array of objects or null or null (PromotionDetails)

[WIP - in development, not supported yet] Details about the promotions applied to this order. The sum of these values should equal the sum of the order's discounts.

object or null (PreparationTime)

Preparation time information for an order.

Responses

Request samples

Content type
application/json
{
  • "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": {
    }
}

Response samples

Content type
application/json
{
  • "externalIdentifiers": {
    },
  • "storeId": "ckdss-store-id"
}

Update order

RATE LIMIT: 32 per minute

Replaces the order identified by orderId with the full order payload provided in the request body. Send the complete order representation (the same shape used to create it), not a partial patch.

To change only the status, customer payment, or delivery information, prefer the dedicated /status, /payments, and /delivery endpoints. Returns 404 if no order matches the given orderId for this store.

Authorizations:
OAuth2.0 (orders.update)
path Parameters
orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
object

Identifiers that tie this order back to your system and to the source it originated from (marketplace, aggregator, POS). Used to correlate the order across platforms.

currencyCode
required
string 3 characters

The 3-letter currency code (ISO 4217) used for all monetary values in this order (item prices, modifier prices, and every amount in orderTotal / orderTotalV2). All amounts are expressed in the major unit of this currency (for example 12.50), never in minor units (cents).

status
required
string
Enum: "NEW_ORDER" "CONFIRMED" "PICKED_UP" "CANCELED" "FULFILLED" "PREPARED" "REJECTED" "PREVISIT_COMPLETED" "PREVISIT_NO_SHOW" "UNKNOWN"

The current status of the order. When creating an order this is typically NEW_ORDER (awaiting confirmation) or CONFIRMED. UNKNOWN is returned only when the status cannot be mapped.

Array of objects (Item) <= 100 items [ items ]

The items ordered by the customer, including their modifiers. If you send an order with an empty list, the platform creates a single placeholder "Custom item" priced at the order subtotal.

orderedAt
string or null <date-time>

The date (in UTC) when the order was placed by the customer.

object or null

The customer who placed the order.

customerNote
string or null

An order-level note provided by the customer.

object or null (DeliveryInfo)

Information on order's delivery process.

object or null

Flat, customer-facing financial breakdown (V1). At least one of orderTotal or orderTotalV2 is required. Prefer orderTotalV2 for new integrations.

object or null

Richer, line-itemized financial breakdown (V2), covering the customer charges, how they were settled, the store payout, and the marketplace charges. At least one of orderTotal or orderTotalV2 is required; if both are sent, orderTotalV2 takes precedence for the financial breakdown.

Array of objects or null (CustomerPayment)

How the customer paid, as one entry per payment portion (amount, method, and processing status). These entries must be consistent with the amounts and methods described in orderTotalV2.customerPayment when V2 is used.

object or null (FulfillmentInfo)

Information on order fulfillment.

Array of objects or null or null (PromotionDetails)

[WIP - in development, not supported yet] Details about the promotions applied to this order. The sum of these values should equal the sum of the order's discounts.

object or null (PreparationTime)

Preparation time information for an order.

Responses

Request samples

Content type
application/json
{
  • "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": {
    }
}

Response samples

Content type
application/json
{
  • "externalIdentifiers": {
    },
  • "storeId": "ckdss-store-id"
}

Update order status

RATE LIMIT: 32 per minute

Transitions the order identified by orderId to a new status. Only PREPARED, CANCELED, and FULFILLED are accepted by this endpoint.

When transitioning to CANCELED, you may include the optional X-Event-Id header to acknowledge a cancellation that the platform requested via the intent-to-cancel webhook. The order lifecycle is asynchronous, so a successful call returns 202 Accepted.

Authorizations:
OAuth2.0 (orders.update)
path Parameters
orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Optional unique identifier of the event that this callback refers to.

Request Body schema: application/json
orderStatus
required
string
Enum: "PREPARED" "CANCELED" "FULFILLED"

The requested status to transition the order to.

Responses

Request samples

Content type
application/json
{
  • "orderStatus": "PREPARED"
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Update order customer payment

RATE LIMIT: 8 per minute

Updates the customer payment and financial breakdown for the order identified by orderId.

This is a merge, not a full replace: each field is overwritten only when the request supplies a non-null value for it. Fields sent as null (or omitted) keep their existing value. Provide the financial breakdown via orderTotal (V1) or orderTotalsV2 (V2); when V2 is sent it is validated for consistency with the V1 aggregates. The update is processed asynchronously and returns 202 Accepted.

Authorizations:
OAuth2.0 (orders.update)
path Parameters
orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
currencyCode
required
string 3 characters

The 3-letter currency code (ISO 4217) to use for all monetary values in this order.

required
Array of objects (CustomerPayment) [ items ]

The requested customer payment to transition the order to.

object (OrderTotal)

Flat, customer-facing breakdown of an order's monetary values (V1).

orderTotal captures only what the customer was charged, as a small set of aggregate figures. It cannot express per-line taxes, the source of a discount, the split of tips/delivery fees between the store and the marketplace, or the store's net payout and the marketplace's charges. For any of those, prefer the richer orderTotalV2.

When creating or updating an order you must supply at least one of orderTotal or orderTotalV2. You may send both; if you do, orderTotalV2 takes precedence for the financial breakdown and the orderTotal aggregates are checked against it for consistency. All values are in the major unit of the order's currencyCode.

object or null (OrderTotalV2)

Richer, line-itemized breakdown of an order's monetary values (V2).

orderTotalV2 is the preferred way to describe order economics. Where the V1 orderTotal exposes only flat customer-facing aggregates, V2 captures four distinct perspectives, each as its own object:

  • customerTotal — what the customer was charged (food, fees, taxes, discounts, tips), with per-line tax/VAT detail.

  • customerPayment — how that total was settled (prepaid vs. collectable, cash change, amount collected directly by the store).

  • payout — what the store actually receives.

  • serviceProviderCharge — what the marketplace deducts (commission, processing, withholdings, etc.).

Sign conventions: charges the customer pays are positive; discounts are negative. All amounts are in the major unit of the order's currencyCode.

When creating or updating an order you must supply at least one of orderTotal or orderTotalV2. You may send both; when both are present orderTotalV2 takes precedence for the financial breakdown. In that case the platform also performs a soft consistency check between the V1 aggregates and the V2 line items (within a ±0.01 tolerance): total against the sum of the customer-charge lines, tax against the sum of all tax lines, discount against the funded-discount lines, deliveryFee against the delivery-fee lines, and tip against the tip lines. A mismatch is logged/recorded for monitoring but does not reject the request.

Responses

Request samples

Content type
application/json
{
  • "currencyCode": "EUR",
  • "customerPayment": [
    ],
  • "orderTotal": {
    },
  • "orderTotalsV2": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Update order delivery information

RATE LIMIT: 8 per minute

Updates the delivery information for the order identified by orderId — courier details, destination address, vehicle, last known location, and dropoff instructions. Use it to keep delivery state current as the courier progresses. The update is processed asynchronously and returns 202 Accepted.

Authorizations:
OAuth2.0 (orders.update)
path Parameters
orderId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of the order in a UUID format.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
object (RequiredDeliveryInfo)

Information on order's delivery process.

Responses

Request samples

Content type
application/json
{
  • "deliveryInfo": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Upload past orders

RATE LIMIT: 32 per minute; orders must have a status of FULFILLED, REJECTED, or CANCELED.

Backfills already-completed orders for reporting and analytics. Uploaded orders are stored as read-only and are not displayed in operational views — they exist purely to make historical data available to BI and reporting tools. Up to 100 orders can be uploaded per request.

Authorizations:
OAuth2.0 (orders.create)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
Array of objects (Order) <= 100 items [ items ]

The past orders you are trying to upload

Responses

Request samples

Content type
application/json
{
  • "orders": [
    ]
}

Response samples

Content type
application/json
{
  • "orderReferences": [
    ]
}

Organization

Endpoints to interact with with organizations/brands/stores and with integration connections.

Get the organization managed by the user.

Authorizations:
OAuth2.0 (organization.read)

Responses

Response samples

Content type
application/json
{
  • "id": "9208071e-5f7a-444a-b3a7-4a57ff3f614e",
  • "name": "Organization name 1"
}

Get a brand of the organization managed by the user.

Authorizations:
OAuth2.0 (organization.read)
path Parameters
brandId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a brand in a UUID format.

Responses

Response samples

Content type
application/json
{
  • "id": "9208071e-5f7a-444a-b3a7-4a57ff3f614e",
  • "name": "Brand name 1"
}

Get the list of brands of the organization managed by the user.

Authorizations:
OAuth2.0 (organization.read)
query Parameters
limit
required
string
Example: limit=5

Max number of stores to retrieve

token
string
Example: token=CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)

Opaque token used for paging. Query parameters must be URL encoded.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offsetToken": "H12MAF2fFaFFFa"
}

Get a store of the organization managed by the user.

Authorizations:
OAuth2.0 (organization.read)
path Parameters
brandId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a brand in a UUID format.

storeId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a store in a UUID format.

Responses

Response samples

Content type
application/json
{
  • "id": "9208071e-5f7a-444a-b3a7-4a57ff3f614e",
  • "name": "Store name 1",
  • "address": {
    }
}

Get the list of stores of a given brand.

Authorizations:
OAuth2.0 (organization.read)
path Parameters
brandId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a brand in a UUID format.

query Parameters
limit
required
string
Example: limit=5

Max number of stores to retrieve

token
string
Example: token=CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)

Opaque token used for paging. Query parameters must be URL encoded.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offsetToken": "H12MAF2fFaFFFa"
}

Get the partner application connection with the selected store.

Authorizations:
OAuth2.0 (organization.service_integration)
path Parameters
brandId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a brand in a UUID format.

storeId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a store in a UUID format.

Responses

Response samples

Content type
application/json
{
  • "storeId": "9208071e-5f7a-444a-b3a7-4a57ff3f614e"
}

Create a connection for the partner application with the selected store.

Authorizations:
OAuth2.0 (organization.service_integration)
path Parameters
brandId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a brand in a UUID format.

storeId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a store in a UUID format.

Request Body schema: application/json
storeId
required
string

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.

Responses

Request samples

Content type
application/json
{
  • "storeId": "9208071e-5f7a-444a-b3a7-4a57ff3f614e"
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Delete the connection between the partner application and the selected store.

Authorizations:
OAuth2.0 (organization.service_integration)
path Parameters
brandId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a brand in a UUID format.

storeId
required
string
Example: 295f76b4-5725-4bf5-a8ab-97943dbdc3b4

A unique identifier of a store in a UUID format.

Responses

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Ping

Endpoints to ping and test system authentication.

Ping the system

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (ping)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Echo-Error
string
Example: ping test error message

The error message to be returned by the endpoint, for testing purposes.

Responses

Response samples

Content type
application/json
{
  • "response": "pong",
  • "currentTime": "2007-12-03T10:15:30+01:00"
}

Reports

Endpoints to reports generation operations

Request status of the report using jobId

RATE LIMIT: 2 per minute

Authorizations:
OAuth2.0 (reports.generate_report)
path Parameters
jobId
required
string (JobId)
Example: 38ab397f-b142-4b06-b70c-40c68a408bea

ID used to track the job created for generating report.

Responses

Response samples

Content type
application/json
{}

Request a business report for multiple stores

Authorizations:
OAuth2.0 (reports.generate_report)
Request Body schema: application/json
reportType
string
Enum: "ORDER_STORES" "ORDER_ITEMS" "PAYOUT_TRANSACTIONS" "RATINGS_AND_REVIEWS"

Type of report to generate

start
string <date>

Report start date

end
string <date>

Report end date

externalStoreIds
Array of strings

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

externalServiceSlugs
Array of strings or null

List of external service slugs to fetch orders from. Default to all services

language
string or null

Language of the report. Ignored by ORDER_STORES report Optional. Falls back to English if empty.

Responses

Request samples

Content type
application/json
{
  • "reportType": "ORDER_STORES",
  • "start": "2021-10-01",
  • "end": "2021-10-01",
  • "externalStoreIds": [
    ],
  • "externalServiceSlugs": [
    ],
  • "language": "string"
}

Response samples

Content type
application/json
{
  • "jobId": "38ab397f-b142-4b06-b70c-40c68a408bea"
}

Reviews

Endpoints for review operations

Reply or schedule a reply to a review

Authorizations:
OAuth2.0 (reviews.reply)
Request Body schema: application/json
reviewId
string

The review ID.

externalStoreId
string

External store ID of the review you are responding to. Fails the requests if invalid external store ID is passed.

serviceSlug
string

The slug of the service for the review.

replyText
string

The reply text.

scheduledAt
number or null <double>

The scheduled timestamp (seconds) to reply to the review.

Responses

Request samples

Content type
application/json
{
  • "reviewId": "review-56e9-46be",
  • "externalStoreId": "order-1fa4-479c",
  • "serviceSlug": "ubereats",
  • "replyText": "Thank you very much.",
  • "scheduledAt": 1697727006
}

Response samples

Content type
application/json
{
  • "replyId": "reply-f34f-4d35"
}

Storefront

Endpoints to manage storefront state

Notify about store availability change

RATE LIMIT: 16 per minute

Authorizations:
OAuth2.0 (storefront.store_availability)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Optional unique identifier of the event that this callback refers to.

Request Body schema: application/json
storeState
string or null
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"

Represents the current state of a store.

statusChangedAt
string or null <date-time>

The time when the store changed to the current state.

object or null (EventResultMetadata)

Information about the result of a storefront event.

Responses

Request samples

Content type
application/json
{
  • "storeState": "OPEN",
  • "statusChangedAt": "2007-12-03T10:15:30+01:00",
  • "eventResultMetadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify about store hours configuration change

RATE LIMIT: 16 per minute

Authorizations:
OAuth2.0 (storefront.store_hours_configuration)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Optional unique identifier of the event that this callback refers to.

Request Body schema: application/json
object (StoreHoursConfiguration)

The current store hours configuration of a store.

statusChangedAt
string <date-time>

The time when the store hours configuration changed.

object or null (EventResultMetadata)

Information about the result of a storefront event.

Responses

Request samples

Content type
application/json
{
  • "storeHoursConfiguration": {
    },
  • "statusChangedAt": "2007-12-03T10:15:30+01:00",
  • "eventResultMetadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the result of a pause request event

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (storefront.store_pause_unpause)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
closureId
string

ID required to unpause a store, if available

object (RequiredEventResultMetadata)

Information about the result of a storefront event.

Responses

Request samples

Content type
application/json
{
  • "closureId": "4109d2c9-8bc5-413c-af3e-1c92aa381e41",
  • "eventResultMetadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify the result of an unpause request event

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (storefront.store_pause_unpause)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
required
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Unique identifier of the event that this callback refers to.

Request Body schema: application/json
object (RequiredEventResultMetadata)

Information about the result of a storefront event.

Responses

Request samples

Content type
application/json
{
  • "eventResultMetadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify about store availability change from the eater side

RATE LIMIT: 16 per minute

Authorizations:
OAuth2.0 (storefront.store_availability)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Optional unique identifier of the event that this callback refers to.

Request Body schema: application/json
storeState
string or null
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"

Represents the current state of a store.

statusChangedAt
string or null <date-time>

The time when the store changed to the current state.

object or null (EventResultMetadata)

Information about the result of a storefront event.

Responses

Request samples

Content type
application/json
{
  • "storeState": "OPEN",
  • "statusChangedAt": "2007-12-03T10:15:30+01:00",
  • "eventResultMetadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify about store hours configuration change on eater side

RATE LIMIT: 16 per minute

Authorizations:
OAuth2.0 (storefront.store_hours_configuration)
header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

X-Event-Id
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Optional unique identifier of the event that this callback refers to.

Request Body schema: application/json
object (StoreHoursConfiguration)

The current store hours configuration of a store.

statusChangedAt
string <date-time>

The time when the store hours configuration changed.

object or null (EventResultMetadata)

Information about the result of a storefront event.

Responses

Request samples

Content type
application/json
{
  • "storeHoursConfiguration": {
    },
  • "statusChangedAt": "2007-12-03T10:15:30+01:00",
  • "eventResultMetadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Notify about store details update

Authorizations:
OAuth2.0 (marketintel.service_integration)
header Parameters
X-Event-Id
string
Example: cf0ce51b-d74e-40d3-b177-1925ab4edc0c

Optional unique identifier of the event that this callback refers to.

Request Body schema: application/json
superRegion
string

Represents a super region geographical mapping.

Array of objects (Marketintel_StoreDetails) >= 0 items [ items ]

Represents a list of stores

Responses

Request samples

Content type
application/json
{
  • "superRegion": "LATAM",
  • "storeDetails": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Loyalty Manager

Endpoints to manage loyalty.

Get enrollment config for a loyalty provider

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "enrollmentFields": [
    ]
}

Get user by id

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

query Parameters
id
required
string
Example: id=somestring

User's id

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "userAccount": {
    }
}

Create a loyalty user

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
required
Array of objects (UserField) [ items ]

The user info fields for the new user.

Responses

Request samples

Content type
application/json
{
  • "userFields": [
    ]
}

Response samples

Content type
application/json
{
  • "user": {
    }
}

Search loyalty users

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

query Parameters
token
string
Example: token=CgwI09+kjQYQwOvF2AM=/(urlencoded:CgwI09%2BkjQYQwOvF2AM%3D)

Opaque token used for paging. Query parameters must be URL encoded.

limit
required
string
Example: limit=5

Max number of items to retrieve (minimum 1, maximum is 10, anything smaller/larger than min/max resets to min/max)

term
required
string
Example: term=john

Used to search for users in the loyalty program. The search is case-sensitive and will match any part of the user's fields.

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Responses

Response samples

Content type
application/json
{
  • "users": [
    ],
  • "offsetToken": "H12MAF2fFaFFFa"
}

Compute applicable rewards

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

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
userId
required
string

The id of the user.

Order-2 (object) or null

Responses

Request samples

Content type
application/json
{
  • "userId": "someidstring",
  • "order": {
    }
}

Response samples

Content type
application/json
{
  • "rewards": [
    ]
}

Simulate rewards

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

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
userId
required
string

The id of the user.

required
object (Order-2)
required
Array of objects (SelectedReward) [ items ]

Selected rewards, currently only support one reward, if multiple rewards are passed it will throw an error.

Responses

Request samples

Content type
application/json
{
  • "userId": "someidstring",
  • "order": {
    },
  • "selectedRewards": [
    ]
}

Response samples

Content type
application/json
{
  • "transactionId": "someidstring",
  • "rewardEffect": {
    }
}

Redeem and accumulate rewards

Redeem existing rewards and accumulate new rewards RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
userId
required
string

The id of the user.

required
object (Order-2)
required
Array of objects (SelectedReward) [ items ]

Selected rewards, currently only support one reward, if multiple rewards are passed it will throw an error.

Responses

Request samples

Content type
application/json
{
  • "userId": "someidstring",
  • "order": {
    },
  • "selectedRewards": [
    ]
}

Response samples

Content type
application/json
{
  • "transactionId": "someidstring",
  • "rewardEffect": {
    },
  • "accumulatedRewards": [
    ]
}

Refund rewards

RATE LIMIT: 8 per minute

Authorizations:
OAuth2.0 (manager.loyalty)
path Parameters
source
required
string
Example: css-loyalty

Loyalty provider source

header Parameters
X-Store-Id
required
string (StoreId)
Example: partner-store-unique-identifier

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).

Request Body schema: application/json
userId
required
string

The id of the user.

orderId
required
string

The id of the order.

Responses

Request samples

Content type
application/json
{
  • "userId": "someidstring",
  • "orderId": "someidstring"
}

Response samples

Content type
application/json
{
  • "transactionId": "someidstring"
}

Direct Orders

Endpoints to get orders directly.

query eater's related history orders

Provide an external eater ID to get a list of order related to that eater.

Authorizations:
OAuth2.0 (direct.orders)
Request Body schema: application/x-www-form-urlencoded
limit
required
number <10>

Max number of orders to retrieve per page

pageToken
string

Opaque token used for paging. Query parameters must be URL encoded.

eaterId
required
string

External eater's Id

source
string

Order placed from which source

Responses

Response samples

Content type
application/json
{
  • "orders": [
    ],
  • "nextPageToken": "H12MAF2fFaFFFa"
}

Store

Endpoints to get store information.

Account Pairing Webhooks

Webhooks to manage store onboarding and status

Upsert Store Webhook

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.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "stores.upsert",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Remove Store Webhook

Sent when a store is removed from our system. Contains information about the store for which the event was triggered.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "stores.remove",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "message": "The request body is invalid.",
  • "details": [
    ]
}

Fetch Credentials (synchronously) Webhook

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.

Request Body schema: application/json
eventId
required
string <uuid>

Unique identifier of the event.

eventTime
required
string <date-time>

Date of event occurrence.

eventType
required
string

The type of event.

required
object

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "stores.fetch_credentials",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "credentialsSchemaVersion": "1.0",
  • "credentials": [
    ]
}

Delivery Webhooks

Webhooks from the delivery domain.

Update delivery status webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "delivery.delivery_status_update",
  • "metadata": {
    }
}

Request delivery quotes webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "delivery.request_quote",
  • "metadata": {
    }
}

Accept delivery webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "delivery.accept",
  • "metadata": {
    }
}

Cancel delivery webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "delivery.cancel",
  • "metadata": {
    }
}

Update delivery request webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "delivery.update_request",
  • "metadata": {
    }
}

Orders Manager Webhooks (POS, BI &amp; Reports)

Webhooks delivered to merchant-side applications (POS, BI, and reporting integrations) so they can react to changes in an order as it progresses through its lifecycle.

Order creation webhook Webhook

Notifies a merchant-side integration (POS/BI) that a new order has been created for the store, delivering the full order payload. Acknowledge it via the order-created callback.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.new_order",
  • "metadata": {
    }
}

Order update webhook Webhook

Notifies a merchant-side integration (POS/BI) that an existing order has changed, delivering the updated order payload.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.update",
  • "metadata": {
    }
}

Order confirm notification webhook Webhook

Notifies a merchant-side integration that an order has been confirmed (accepted), including the estimated preparation time when available.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.confirm",
  • "metadata": {
    }
}

Order Ready status notification webhook Webhook

Notifies a merchant-side integration that an order has been marked ready for pickup by the courier or customer.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.order_ready",
  • "metadata": {
    }
}

Order Handed Off status notification webhook Webhook

Notifies a merchant-side integration that an order has been handed off to the courier or customer.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.order_handed_off",
  • "metadata": {
    }
}

Order Fulfilled status notification webhook Webhook

Notifies a merchant-side integration that an order has reached its final fulfilled state.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.order_fulfilled",
  • "metadata": {
    }
}

Menus Webhooks

Webhooks from menus domain.

Menu publish webhook Webhook

Webhook to trigger a menu publish. If successful, we expect a menu publish callback. If an error occurred, please publish a callback error instead.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "menus.menu_publish",
  • "metadata": {
    }
}

Send menu webhook Webhook

Webhook to trigger a send menu. If successful, we expect a menu send callback. If an error occurred, please publish a callback error instead.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "menus.send_menu",
  • "metadata": {
    }
}

Update menu entities availabilities webhook Webhook

Webhook to trigger an entities availabilities update. If successful, we expect an update menu entities availabilities callback. If an error occurred, please publish a callback error instead.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "menus.update_menu_entities_availabilities",
  • "metadata": {
    }
}

Upsert menu hours webhook Webhook

Webhook to trigger a menu hours update. If successful, we expect a menu upsert hours callback. If an error occurred, please publish a callback error instead.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "menus.upsert_hours",
  • "metadata": {
    }
}

Orders Webhooks

Webhooks from orders domains.

Intent to cancel order webhook Webhook

Notifies the order source that the platform intends to cancel an order (for example, requested by the store). The source should react and, when applicable, acknowledge the cancellation via the update order status endpoint with status CANCELED.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.cancel_order",
  • "metadata": {
    }
}

Order status update webhook Webhook

Notifies the order source of a change in an order's status, delivering the order's status history.

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.order_status_update",
  • "metadata": {
    }
}

Pos injection state update webhook Webhook

Notifies the order source of a change in the order's POS injection state (for example, whether the order was successfully injected into the store's POS, requires manual injection, or failed).

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "orders.pos_injection_state_update",
  • "metadata": {
    }
}

Ping Webhooks

Webhooks to ping and test the system integration.

Ping webhook Webhook

Used to validate the integration without side effects

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "ping.ping",
  • "metadata": {
    }
}

Reports Webhooks

Webhooks from the reports generation operations

Report generated webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "reports.report_generated",
  • "metadata": {
    }
}

Storefront Webhooks

Webhooks from storefront domain.

Pause store webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "storefront.pause_store",
  • "metadata": {
    }
}

Unpause store webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "storefront.unpause_store",
  • "metadata": {
    }
}

Get store availability webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "storefront.get_store_availability",
  • "metadata": {
    }
}

Get store hours configuration webhook Webhook

Request Body schema: application/json
eventId
string <uuid>

Unique identifier of the event.

eventTime
string <date-time>

Date of event occurrence.

eventType
string

The type of the event.

object

Information about the event.

Responses

Request samples

Content type
application/json
{
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "eventTime": "2007-12-03T10:15:30+01:00",
  • "eventType": "storefront.get_store_hours",
  • "metadata": {
    }
}