RBI Partners API (0.0.1)

Download OpenAPI specification:Download

Introduction

The Partner API allows external partners to integrate with RBI's consumer platform.

POS Vendor API

The POS Vendor API is intended for RBI partners implementing a point-of-sale (POS) system in a restaurant. The partner updates and queries for Store, Menu, and Order status information via the following POS Vendor API endpoints :

  • Get Store Status get the current availability of a restaurant for ordering
  • Update Store Status provide updated availability of a restaurant for ordering
  • Get Menu PLUs get the current pricing and availability of all menu items at a restaurant
  • Update Menu PLUs provide updated pricing and availability of all menu items at a restaurant
  • Get Order get the most up to date information about the order
  • Order Event provide updated status of an order that has been previously priced or committed via webhook
  • Payment Capture Capture the pre-authorized order payment

The partner subscribes to the following POS Vendor API webhooks :

  • Price Order given order details, validate the order and return a reference to the order and the price
  • Commit Order given a reference to a priced order, commit the order to be sent to a restaurant
  • Fire Order given a reference to a committed order with a future fireOrderInSeconds, update the order so that the restaurant starts preparation immediately
  • Order Event get notified on status updates of an order that has been previously priced or committed
  • Ticket Event get notified on submission of support tickets
  • Store Support Ticket Event get notified on submission of support tickets
  • General Support Ticket Event get notified on submission of support tickets
  • User Signup used to synchronize RBI users with a Partner

POS Vendor API: Ordering Flow

The ordering flow proceeds with the following logical steps :

1. Order Configuration & Pricing

sequenceDiagram
    actor app as RBI App
    participant api as RBI Partners API
    participant partner as POS Partner Middleware
    app->>api: Visit checkout page
    api->>+partner: Webhook: ORDER_PRICE
    partner-->>-api: 201 / 202
  • A guest configures an order using the RBI mobile application or website.
  • The guest completes configuration of their order and proceeds to the checkout page.
  • Price Order Webhook Reference
    • RBI sends a payload containing details of the order and a unique RBI order ID (orderId) to a predefined partner webhook URL.
    • Partner responds with a unique partner reference ID for the priced order (referenceId), and the price of the order.

Notes

  • The Order Configuration & Pricing steps may happen multiple times during the order flow as a guest configures and re-configures their order. In this scenario, RBI will send the same RBI orderId in each Price Order payload.
  • A partner may (optionally) return the same partner referenceId in each response to the same RBI orderId.

2. Commit Order

sequenceDiagram
    actor app as RBI App
    participant api as RBI Partners API
    participant partner as POS Partner Middleware
    app->>api: Complete checkout
    api->>+partner: Webhook: ORDER_COMMIT
    partner-->>-api: 201 / 202
  • A guest accepts the latest order configuration and price returned by the partner, and either makes payment or accepts responsibility for future payment of the order.
  • Commit Order Webhook Reference
    • RBI sends a payload containing the RBI orderId and partner referenceId for the successfully priced order, along with additional information including payment details and ready time.
    • Partner responds to acknowledge that the order has been successfully committed in the POS system.

Notes

  • Refer to the webhook reference for expected behavior of the POS based on the fireOrderInSeconds field in the payload.

3. (Optional) Fire Order

sequenceDiagram
    participant api as RBI Partners API
    participant partner as POS Partner Middleware
    api->>api: Change in order ready time
    api->>+partner: Webhook: ORDER_FIRE
    partner-->>-api: 201 / 202
  • A condition changes, such that an order that was initially placed for a future date / time should instead be prepared immediately. For example :
    • A delivery driver has arrived on location earlier than expected.
    • A customer has amended the ready time on their order using the mobile application or website.
  • Fire Order Webhook Reference
    • RBI sends a payload containing the RBI orderId and partner referenceId for the successfully committed order.
    • Partner responds to acknowledge that the order will be prepared immediately by the restaurant.

4. Order Preparation & Status Updates

  • As the order is prepared in the restaurant, the partner provides updates to RBI regarding the status of the order. These updates drive guest notifications and process orchestration (Order Event Endpoint Reference)
sequenceDiagram
    participant api as RBI Partners API
    participant partner as POS Partner Middleware
    partner->>api: Order Event
    api-->>partner: 201
sequenceDiagram
    participant api as RBI Partners API
    participant partner as POS Partner Middleware
    api->>api: Order changed
    api->>partner: Webhook: ORDER_EVENT
    partner-->>api: 201

Notes

  • Order statuses must move forward in the lifecycle shown on the diagram below. Status updates that do not move the order status forward will be disregarded.
stateDiagram-v2
    [*] --> CREATED
    CREATED --> PRICED
    CREATED --> ERROR
    PRICED --> COMMITTED
    PRICED --> CANCELED
    PRICED  --> ERROR
    COMMITTED --> PREPARING
    COMMITTED --> ERROR
    COMMITTED --> CANCELED
    PREPARING --> PREPARED
    PREPARING --> DONE
    PREPARING --> ERROR
    PREPARING --> CANCELED
    PREPARED --> DONE
    PREPARED --> ERROR
    DONE --> [*]
    ERROR --> [*]
    CANCELED --> [*]

Delivery Vendor API

The Delivery Vendor API is intended for RBI partners providing delivery fulfillment services for an RBI restaurant or group of restaurants.

The partner subscribes to the following Delivery Vendor API webhooks :

  • Create Quote given a delivery address, provide fulfillment details including pickup store, estimated time, and cost
  • Apply Quote given a delivery address, pickup store and order details, provide estimated time and final cost
  • Create Delivery given a reference to a delivery quote and additional order details, create a delivery order for fulfillment
  • Quote Delivery (deprecated) given a delivery address, provide fulfillment details including pickup store, estimated time, and cost (this webhook has been replaced by Create Quote and Apply Quote to make the two use cases more distinguishable)
  • Delivery Event get notified on delivery status updates

The partner updates delivery status information via a single Delivery Vendor API endpoint :

  • Delivery Event provide updated status and fulfillment information for a delivery order

Delivery Vendor API: Fulfillment Flow

The delivery fulfillment flow proceeds with the following logical steps :

1. Delivery Address Selection / First Quote

sequenceDiagram
    actor app as RBI App
    participant api as RBI Partner Service
    participant partner as Partners Integration
    app->>api: Click "Deliver Here"
    api->>+partner: Webhook: Quote
    partner-->>-api: 200
  • A guest enters a delivery address in the RBI mobile application or website and clicks "Deliver Here".
  • Create Quote Webhook Reference
    • RBI sends a payload containing the delivery address to a predefined partner webhook URL.
    • Partner responds with a unique partner quote ID, and (if available) fulfillment details including pickup store and estimated cost.

2. Delivery Confirmation / Second Quote

sequenceDiagram
    actor app as RBI App
    participant api as RBI Partner Service
    participant partner as Partners Integration
    app->>api: Go to checkout page
    api->>+partner: Webhook: Quote
    partner-->>-api: 200
  • A guest configures an order using the RBI mobile application or website.
  • The guest completes configuration of their order and proceeds to the checkout page.
  • Apply Quote Webhook Reference
    • RBI again sends a payload containing the delivery address, pickup store and order details to a predefined partner webhook URL.
    • Partner responds with a unique partner quote ID and fulfillment details including estimated time and final cost.

Notes

  • RBI will call the Quote Delivery webhook a second time when the guest reaches the checkout page. As some time may have passed while the guest is configuring the order, this second call is to ensure that a delivery quote is still available immediately prior to payment.

3. Create Delivery Order

sequenceDiagram
    actor app as RBI App
    participant api as RBI Partner Service
    participant partner as Partners Integration
    app->>api: Complete checkout
    api->>+partner: Webhook: Create Delivery
    partner-->>-api: 201
  • A guest accepts the order configuration and delivery quote details, and either makes payment or accepts responsibility for future payment of the order.
  • Create Delivery Webhook Reference
    • RBI sends a payload containing the RBI orderId and partner quoteId for the successful quote, along with additional order information.
    • Partner responds to acknowledge that the delivery request has been successfully placed and will be fulfilled.

4. Delivery Status Updates

sequenceDiagram
    participant api as RBI Partners API
    participant partner as Partners Integration
    partner->>api: Delivery Event
    api-->>partner: 204

Notes

  • Delivery statuses must move forward in the lifecycle shown on the diagram below. Status updates that do not move the delivery status forward will be disregarded.
stateDiagram-v2
    [*] -->  DELIVERY_CREATED
    DELIVERY_CREATED --> DRIVER_ASSIGNED
    DELIVERY_CREATED --> ORDER_CANCELLED
    DRIVER_ASSIGNED --> DRIVER_UNASSIGNED
    DRIVER_ASSIGNED --> DRIVER_STARTING
    DRIVER_ASSIGNED --> DRIVER_AT_STORE
    DRIVER_ASSIGNED --> ORDER_PICKED_UP
    DRIVER_ASSIGNED --> DRIVER_AT_CUSTOMER
    DRIVER_ASSIGNED --> ORDER_DROPPED_OFF
    DRIVER_ASSIGNED --> ORDER_CANCELLED
    DRIVER_UNASSIGNED --> DRIVER_ASSIGNED
    DRIVER_UNASSIGNED --> ORDER_CANCELLED
    DRIVER_STARTING --> DRIVER_AT_STORE
    DRIVER_STARTING --> ORDER_PICKED_UP
    DRIVER_STARTING --> DRIVER_AT_CUSTOMER
    DRIVER_STARTING --> ORDER_DROPPED_OFF
    DRIVER_STARTING --> ORDER_CANCELLED
    DRIVER_AT_STORE --> ORDER_PICKED_UP
    DRIVER_AT_STORE --> DRIVER_AT_CUSTOMER
    DRIVER_AT_STORE --> ORDER_DROPPED_OFF
    DRIVER_AT_STORE --> ORDER_CANCELLED
    ORDER_PICKED_UP --> DRIVER_AT_CUSTOMER
    ORDER_PICKED_UP --> ORDER_DROPPED_OFF
    ORDER_PICKED_UP --> ORDER_CANCELLED
    DRIVER_AT_CUSTOMER --> ORDER_DROPPED_OFF
    DRIVER_AT_CUSTOMER --> ORDER_CANCELLED
    ORDER_DROPPED_OFF --> [*]
    ORDER_CANCELLED --> [*]
  • As events occur in the delivery process, the partner provides updates to RBI regarding the current status of the delivery. These updates drive guest notifications and process orchestration.
  • Delivery Event Endpoint Reference

Developer API

The Developer API is provided for Partners to manage their integrations with RBI.

Documentation can be found under:

https://euc1-staging-{brand}-partners-admin.rbictg.com/docs

HMAC Signatures

Every Integration created through the Developer API is saved to DB with a UUID value called secret. This value can be also passed as a parameter or even updated later on. To learn more refer to the Developer API documentation.

sequenceDiagram
    actor partner as Partner
    participant api as RBI Developer API
    participant db as RBI DB
    partner->>+api: Create integration
    api->>+db: Save integration
    Note over api,db: secret: uuid()

When dispatching webhooks, RBI will create an HMAC signature using the shared secret value and the payload. This signature is conveyed by the x-signature header. Partners can validate authenticity of the request and integrity of data by using the same hashing mechanism and comparing signatures. Only RBI and Partner have access to the shared secret value, so if the contents of the payload or header were altered, the signatures will not match.

sequenceDiagram
    participant service as RBI Partner Service
    participant partner as Partner API
    service->>+partner: Webhook callback
    Note over service,partner: x-signature: xyz

Example of request validation:

import { createHmac, timingSafeEqual } from 'crypto';

const validateRequestExample = async (request) => {
  const signature = request.headers['x-signature'];
  const secret = await getSecret();

  const digest = createHmac('sha256', secret).update(JSON.stringify(request.body)).digest('hex');

  const digestBuffer = Buffer.from(digest, 'utf8');
  const checksumBuffer = Buffer.from(signature, 'utf8');

  return checksumBuffer.length === digest.length && timingSafeEqual(digestBuffer, checksumBuffer);
};

To learn more about HMAC signatures go to https://www.okta.com/identity-101/hmac/

Offers

Assign an offer

Use this endpoint to create an offer for a Loyalty Id

Authorizations:
bearer
Request Body schema: application/json
required
baseConfigId
required
string (BaseConfigId)
Example: "3bd7ce07-509b-40ed-9f3b-cd1bd3f7ad17"

Base Config Id Id of the base offer configuration.

This can be grabbed from a Sanity offer.

userId
required
string (UserId)
Example: "4d01a317-f902-4388-8143-d8d4b7812b6a"

Target user for the offer.

loyaltyId
string (LoyaltyId)
Example: "b51d12ca-f92d-4955-bcc0-c5c533526f51"

Target loyalty user for the offer. Note that most users are identified using User Id instead of Loyalty Id.

partnerPlatform
string (PartnerPlatform)
Example: "Homeria"

Name of the platform the partner is using to perform the request. This is used to track the offer within Snowflake.

offerName
string (OfferName)
Example: "3% Off"

This is an optional name to assign to the offer.

rank
number (Rank)
Example: "1677779551233"

Rank of priority for the offer

Optional value to set in what order this offer works when other offers are present

startDate
string (StartDate)
Example: "2023-03-02T17:58:33.077Z"

Starting date for the offer Set this value if you need the offer to be valid from a certain date. This will default to the date of creation.

endDate
string (EndDate)
Example: "2024-03-02T17:58:33.077Z"

Finish date for the offer Set this value to add an expiration date for the offer

Responses

Request samples

Content type
application/json
{
  • "baseConfigId": "3bd7ce07-509b-40ed-9f3b-cd1bd3f7ad17",
  • "userId": "4d01a317-f902-4388-8143-d8d4b7812b6a",
  • "loyaltyId": "b51d12ca-f92d-4955-bcc0-c5c533526f51",
  • "partnerPlatform": "Homeria",
  • "offerName": "3% Off",
  • "rank": 1677779551233,
  • "startDate": "2023-03-02T17:58:33.077Z",
  • "endDate": "2024-03-02T17:58:33.077Z"
}

Response samples

Content type
application/json
{ }

Order

Price Webhook Callback

Use this endpoint to respond asynchronously to a price order webhook request from Partner API.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

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

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Commit Webhook Callback

Use this endpoint to respond asynchronously to a commit order webhook request from Partner API.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

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

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Fire Webhook Callback

Use this endpoint to respond asynchronously to a fire order webhook request from Partner API.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

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

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Get Orders by Phone Number

Get Orders by Phone Number.

Use this endpoint to get all orders ids related to a phone number.

Authorizations:
bearer
path Parameters
deliveryPhoneNumber
required
string

Delivery Phone Number

query Parameters
startingDate
string

Filter lookups based on the creation date.

Responses

Response samples

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

Get Order

Get order.

Use this endpoint to get the most up to date information about the order.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

Responses

Response samples

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

Order Event

Use this endpoint to provide updated status of an order that has been previously priced or committed via webhook.

Status updates that do not move the order status forward will be disregarded.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

Request Body schema: application/json
required
externalReferenceId
string (ExternalReferenceId)

External reference ID. An example might be the external menu selection ID, customer ID or order ID.

status
required
string (OrderStatus)
Enum: "CREATED" "PRICED" "COMMITTED" "PREPARING" "PREPARED" "DONE" "CANCELED" "ERROR"

Order status, representing current state of order in its lifecycle.

When transitioning the order status, the status must always advance further in the lifecycle. All other transitions are invalid.

Status Description
CREATED Order has been created.
PRICED Order has been priced. The POS has provided price information for the order.
COMMITTED Order has been committed. The POS has accepted the order.
PREPARING Order is being prepared in the restaurant
PREPARED Order has been prepared and is ready for pickup or delivery.
DONE Order is done. This is the final state for a successful order.
CANCELED Order has been cancelled.
ERROR Error with the order. Customer should be notified and refunded.
Array of objects (Order Error)
Deprecated

Any errors which occurred during order processing. Deprecated - Use partnerErrors instead.

Array of ItemNotAvailable (object) or ItemPriceMismatch (object) or ItemNotFound (object) or StoreNotFound (object) or StoreClosed (object) or StoreNotOperating (object) or OrderNotFound (object) or OrderCancelled (object) (Partner Error)

Any errors which occurred during order processing, which includes errors related to items, stores, or orders.

Responses

Request samples

Content type
application/json
{
  • "externalReferenceId": "string",
  • "status": "CREATED",
  • "errors": [
    ],
  • "partnerErrors": [
    ]
}

Response samples

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

Fire order

Fire a committed order to the kitchen for preparation.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

Responses

Response samples

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

Issue order refund

Attempt to issue an order refund.

This request doesn't execute a refund it only asynchronously sends a request to issue an order refund.

Limited access - only for allowed partners

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

Request Body schema: application/json
required
issueId
string (IssueId)
Enum: "7247" "6685" "7305" "7253" "7255" "7417" "7417" "6686" "7313" "7313" "6316" "7331" "6319" "6315" "6315" "6320" "7454" "6865" "6849" "6867" "6850" "6850" "6859" "6905" "6905" "6865" "6848" "6906" "6889" "6889" "6862" "6893" "6905" "6542" "7454" "7454" "7454" "7454" "7454" "6735" "6864" "6865" "6863" "6846" "6865" "6865" "6864" "7502" "7502" "7502" "7504" "7500" "7501"
Example: "6320"

IssueId of Sanity Support Subcategories

Popeyes

Description IssueId
Technical issue on app 7247
Technical issue on website 6685
App didn't Load 7305
Delivery 7253
Payment 7255
Log In/ Log Out 7417
Email Issue 7417
Other 6686

BurgerKing

Description IssueId
Technical issue on app 7313
Technical issue on website 7313
App didn't Load 6316
Delivery 7331
Payment 6319
Log In/ Log Out 6315
Email Issue 6315
Other 6320

Tim Hortons

Description IssueId
Account - Can't Access Email 7454
Account - Lost Balances (Loyalty & Tim Card) 6865
Account - Other 6849
App Access - Network Errors 6867
App Access - Non Stop Downloading 6850
App Access - Non Stop Loading 6850
General Inquiry - Ordering 6859
Loyalty - Error Linking Card to Account 6905
Loyalty - Linked to Another Account 6905
Loyalty - Lost My Balance 6865
Loyalty - Missing Birthday Offer 6848
Loyalty - Scan Doesn't Work 6906
Loyalty - Awarded Incorrect Amount of Points on Order 6889
Loyalty - Incorrect Region for Account 6889
Loyalty - Offer Wasn't Applied to Order 6862
Loyalty - Other 6893
Loyalty - Unable to Update Birthday 6905
Other 6542
Sign In - Email Link Doesnt Work 7454
Sign In - Error Message on Sign In 7454
Sign In - Account Doesn't/Already Exists 7454
Sign In - Email Link Not Received 7454
Sign In - I've Been Logged Out 7454
Tim Card - Double Charged 6735
Tim Card - Error Registering to Account 6864
Tim Card - Lost My Balance 6865
Tim Card - Not Able to Add Funds 6863
Tim Card - Other 6846
Tim Card - Showing Incorrect Amount 6865
Non-Tech - Loyalty 6865
Non-Tech - Other 6864
RUTR - Didn't earn a roll 7502
RUTR - Didn't earn the correct # of rolls 7502
RUTR - My roll was unrolled for me 7502
RUTR - Didn't receive offer prize 7504
RUTR - Error rolling rim 7500
RUTR - Other 7501
primaryReason
required
string (PrimaryReason)
Enum: "CATERING_ORDER_DECLINED" "CATERING_ORDER_ERROR" "CATERING_ORDER_TIME_OUT" "CUSTOMER_OVERCHARGED" "CUSTOMER_REQUESTED_CANCEL_ORDER" "FOOD_QUALITY_ISSUE" "INCORRECT_CUSTOMIZATION" "ITEMS_OUT_OF_STOCK" "MISSING_OR_INCORRECT_ITEM" "MOBILE_ORDERING_TECHNICAL_ISSUE" "ORDER_ARRIVED_LATE" "ORDER_CANCELLED" "ORDER_COMMIT_ERROR" "ORDER_NEVER_ARRIVED" "ORDER_WAS_DAMAGED" "OTHER_ADD_COMMENT" "RECEIVED_INCORRECT_ORDER" "RESTAURANT_CLOSED" "RESTAURANT_COULDNT_FIND_ORDER"

Reason of the attempt to an order refund

refundMethod
required
string (RefundMethod)
Enum: "CUSTOMER" "SUPPORT" "AUTO"

Choose which workflow of the refund is run

CUSTOMER: It's run when a customer requested a refund. This flow will leave a slug about the refund in the Support Ticket based on chosen issueId. This flow sends an email to customer about money refund.

SUPPORT: This flow should be executed when Support Team executes the refund. It sends an email to customer about money refund.

AUTO: This flow sends an email to customer about order cancellation

requestedAmountCents
required
number <integer> (Amount)
Example: "100"

Attempt for the amount of cents to refund

Responses

Request samples

Content type
application/json
{
  • "issueId": "6320",
  • "primaryReason": "CATERING_ORDER_DECLINED",
  • "refundMethod": "CUSTOMER",
  • "requestedAmountCents": 100
}

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Order notifications to customer

Notify RBI about the lead time to when the order is scheduled to fire.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

Request Body schema: application/json
required
type
required
string
Enum: "EMAIL" "PUSH"
required
object

Responses

Request samples

Content type
application/json
{
  • "type": "EMAIL",
  • "params": {
    }
}

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Payment

Payment Capture

Utilize this endpoint to capture the pre-authorized amount, which will be triggered before the order is ready for processing.

This allows customers some time to cancel their orders, thereby preventing unnecessary refund API calls for each canceled order

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

Responses

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Delivery

Delivery Create

Creates a delivery for a single order

Authorizations:
bearer
path Parameters
orderId
required
string
Example: dd0c7c09-4769-40d8-9d05

Unique ID representing an order

header Parameters
x-ui-region
required
string
Example: US

Country or region of the order restaurant.

Format is in the Unicode Common Locale Data Repository (CLDR). For example, the code for the United States is US. For the full list of codes, refer to the CLDR Chart.

Responses

Response samples

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

Delivery Event

Update delivery details for a single order

Authorizations:
bearer
path Parameters
orderId
required
string

Unique ID representing an order

Request Body schema: application/json
required
status
required
string (DeliveryStatus)
Enum: "DELIVERY_CREATED" "DRIVER_ASSIGNED" "DRIVER_STARTING" "DRIVER_AT_STORE" "ORDER_PICKED_UP" "DRIVER_AT_CUSTOMER" "ORDER_DROPPED_OFF" "DRIVER_UNASSIGNED" "ORDER_CANCELLED" "ERROR"

Delivery status, representing current state of delivery order in its lifecycle.

Status Description
DELIVERY_CREATED Delivery has been created
DRIVER_ASSIGNED A driver has been assigned to the order. Should provide all details on courier that are available.
DRIVER_STARTING The driver is starting. Should provide location if available.
DRIVER_AT_STORE The driver has arrived at the store. Should provide location if available.
ORDER_PICKED_UP The driver has left the store. Should provide location if available.
DRIVER_AT_CUSTOMER The driver has arrived as the customer's location. Should provide location if available.
ORDER_DROPPED_OFF The delivery has been completed.
DRIVER_UNASSIGNED Driver has been unassigned from the order. Another driver should be assigned.
ORDER_CANCELLED Delivery has been cancelled. Should provide details on cancellation if available. Use this event if a fatal error has occurred preventing us from continuing with the order.
ERROR The Delivery has a problem in the delivery moment.
object (TimeInterval)

The time window during which the pickup is expected.

object (TimeInterval)

The time window during which the delivery is expected.

dropoffEta
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

Extimated dropoff time (ETA)

object

Optionally provided cancellation details if the fulfillment provider has cancelled for any reason

object (Courier)

Courier information

pincode
string
Example: "1234"

In cases of suspected fraud, the last-mile provider can generate a PIN code to confirm the delivery

Responses

Request samples

Content type
application/json
{
  • "status": "DELIVERY_CREATED",
  • "pickupWindow": {
    },
  • "dropoffWindow": {
    },
  • "dropoffEta": "1991-02-11T20:30:19Z",
  • "cancellation": {
    },
  • "courier": {
    },
  • "pincode": 1234
}

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Store

List stores

Store List.

Use this endpoint get a list of stores and their info.

Pagination

Pagination is provided in a cursor-basis. For each set of results, a cursor will be returned as part of the response's meta. Providing this cursor to the next call will fetch the next page of the result set.

The max amount of restaurants to be returned is controlled by limit

Authorizations:
bearer
query Parameters
limit
integer (Limit) [ 1 .. 100 ]
Default: 20
Example: limit=10

Number of results to fetch

cursor
string (Cursor)
Example: cursor=cursor-id

Pagination cursor

header Parameters
x-ui-region
string
Example: US

The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address.

For the full list of country codes, refer to the CLDR Chart.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ]
}

Get Store Details

Store (restaurant) details.

Use this endpoint get the full details of a specific store.

Authorizations:
bearer
path Parameters
storeId
required
string

Unique ID representing a store

header Parameters
x-ui-region
string
Example: US

The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address.

For the full list of country codes, refer to the CLDR Chart.

Responses

Response samples

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

Get Store Status

Get store status.

Use this endpoint to determine whether a store is available for ordering.

Authorizations:
bearer
path Parameters
storeId
required
string

Unique ID representing a store

Responses

Response samples

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

Update Store Status

Update heartbeat status for a given store. This endpoint should be executed periodically (eg. every 5 minutes).

Authorizations:
bearer
path Parameters
storeId
required
string

Unique ID representing a store

Request Body schema: application/json
required
isOnline
required
boolean

Whether the store is "online" (able to receive mobile orders).

Responses

Request samples

Content type
application/json
{
  • "isOnline": true
}

Response samples

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

Menu

Get Full Store Menu

Get full menu for an individual store

The menu response is a "flat" JSON (it doesn't have nested structures). All fields are root level properties, so you can refer to them simply by ID. The below example is a walk-through from menu to modifier.

Tenders example Type ID Name
Menu Group menu_1 Menu
Section Group 4763b543-2d04-40a6-8b95-d55750ec554a Tenders
Picker Group xdgrygmaqSf78Pjdh6UrTF 3Pc Tenders Meal
picker_pickerAspect Group xdgrygmaqSf78Pjdh6UrTF-76b9c2d3-536e-46bb-a060-f805a63b0063 Choose a Size
picker_pickerAspectOption Group xdgrygmaqSf78Pjdh6UrTF-medium Large Combo
picker_pickerAspect_pickerAspectOption_pickerAspect Group xdgrygmaqSf78Pjdh6UrTF-76b9c2d3-536e-46bb-a060-f805a63b0063-medium-b376ee07-5ba9-464d-a3b0-e79ad3643e2a Choice of Tenders Preparation
picker_pickerAspectOption_pickerAspectOption2 Group xdgrygmaqSf78Pjdh6UrTF-medium-spicy Spicy
combo Combo 00cc6fc6-5ce7-4361-aa95-9d6d726b5bbd 3Pc Tenders Medium Combo - Spicy
comboSlot Group group_item_40961 Main Item
comboSlotOption Group option_group_item_40961 N/A
item Item item_40961 3Pc Tenders - Spicy
modifierGroup Group ModifierGroup_60 Sauces - 1 Included
modifier Modifier modifierMultiplier_1-00-163758 Tartar Sauce

Default entry: For each Picker & Modifier Group, each group will have a property, “defaultSelection”. DefaultSelection will have an ID for an entry that is default for that group

GROUPS: The menu has four types: Combo, Item, Group and Modifier. The group type exists to wrap relevant references to walk through the menu. Only Combo, Item and Modifier will be passed to and committed to POS in Cart.

Types of Groups Description Display type
Menu Group of Sections List
Section Section is a broad container. It can contain pickers, items , combos as well as other sections List
Picker Pickers allows an step by step selection process that ultimate resolve in Combos or Item. Pickers have only one immediate child, a reference to the first aspect. Single entry
Picker Aspect Group of Picker Aspect Options Select
Picker Aspect Option Group of picker Options - References the next aspect for the picker. The picker options of the last aspect reference the final selection result (combo/item) Single entry
Combo Slot Group of Combo Slot Options Select
Combo Slot Option References Combo Slot Option Single entry
Modifier Group Group of Modifiers Multi-select
Group display type Description
List Group of Sections & Pickers(subsections)
Single-Entry One option that maps to options to select from (Size, Choice of Prep)
Select Group with Single Selection Option
Multi-Select Group with Multiple Selection Options
Authorizations:
bearer
path Parameters
storeId
required
string (StoreId) ^\d+$
Example: 42

Unique Store ID

channel
required
string (Channel Name)
Example: whitelabel

Channel name

serviceMode
required
string (Service Mode)
Enum: "CURBSIDE" "DELIVERY" "DRIVE_THRU" "EAT_IN" "TABLE_SERVICE" "TAKEOUT"
Example: TAKEOUT

Service mode

query Parameters
override
any (Override)
Value: "lateNight"
Example: override=lateNight

The override param is used to handle menu operations using the override pricing

version
string
Example: version=1

Menu version ID

header Parameters
x-ui-region
string
Example: US

The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address.

For the full list of country codes, refer to the CLDR Chart.

Responses

Response samples

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

Get Brand Menu

Get full brand-menu for a channel. The brand-menu is not store specific, but it is the source of content used to generate the store-menu. Differently from the store-menu, the brand-menu does not have any price and availability information.

Authorizations:
bearer
path Parameters
channel
required
string (Channel Name)
Example: whitelabel

Channel name

Responses

Response samples

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

Get Menu PLUs (deprecated)

Get price and availability for all entries in the store's menu, by PLU.

Authorizations:
bearer
path Parameters
storeId
required
string (StoreId) ^\d+$
Example: 42

Unique Store ID

Responses

Response samples

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

Update Menu PLUs (deprecated)

Update PLUs store in the store menu, setting price and availability

Updates are made according to the "PLU" or partner specific identifier associated with each menu entry. Any PLU which is not included in this request will be marked as unavailable for all configured channels.

Authorizations:
bearer
path Parameters
storeId
required
string

Unique ID representing a store

Request Body schema: application/json
required
required
Array of objects

All PLUs available in the store menu with price information

Responses

Request samples

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

Response samples

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

Get Store Menu PLUs

Get price and availability for all entries in the store's menu, by PLU.

Authorizations:
bearer
path Parameters
storeId
required
string (StoreId) ^\d+$
Example: 42

Unique Store ID

serviceMode
required
string (Service Mode)
Enum: "pickup" "delivery"
Example: delivery

Service mode

channel
required
string (Channel Name)
Example: whitelabel

Channel name

query Parameters
plus
Array of strings
Example: plus=1000&plus=1001

The plus attribute allows users to specify a list of plus to filter the results.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Update Store Menu PLUs

Updates multiple PLU pricing and availability for multiple stores, given a serviceMode.

Authorizations:
bearer
Request Body schema: application/json
required
Array of objects (Store Menu Plu)
channel
required
string (Channel)
Example: "whitelabel"

Store's Channel

region
required
string (Region)
Example: "US"

Country described using ISO Country Code 2 characters

serviceMode
required
string
Example: "delivery"

Plu Serivce Mode

storeIds
required
Array of strings
Example: "100"

The ids of stores where the PLUs should be updated

Responses

Request samples

Content type
application/json
{
  • "plus": [
    ],
  • "channel": "whitelabel",
  • "region": "US",
  • "serviceMode": "delivery",
  • "storeIds": [
    ]
}

Response samples

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

Get Store Menu Diff

For a given store, serviceMode and channel combination, it provides a history of versions starting from the provided version number. This history contains key/value pairs where the keys refer to a given version and the value contains one object with the created, updated and deleted information for the given version.

Authorizations:
bearer
path Parameters
storeId
required
string (StoreId) ^\d+$
Example: 42

Unique Store ID

serviceMode
required
string (Service Mode)
Enum: "pickup" "delivery"
Example: delivery

Service mode

channel
required
string (Channel Name)
Example: whitelabel

Channel name

version
required
number (Timestamp)
Example: 1679400708

This is the starting point from which the diff with the latest version will be generated from.

Responses

Response samples

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

Users

Sign a user up

Use this endpoint to sign up a new user

Authorizations:
bearer
Request Body schema: application/json
required
dob
string
Example: "1980-02-02"

Date of Birth in YYYY-MM-DD format.

name
string
Example: "John Smith"

Customer name

phoneNumber
string
Example: "+35123123131"

Customer phone number starting with the country code.

username
required
string
Example: "username@example.com"

Customer username.

acceptedPromotionalEmails
boolean
Example: "true"

Whether customer accepts promotional email

acceptedPush
boolean
Example: "true"

Whether customer accepts push notification

gender
string
Enum: "FEMALE" "MALE"

Customer gender

required
object (Address)

Customer address

Array of objects

Any errors which occurred during order processing

Responses

Request samples

Content type
application/json
{
  • "dob": "1980-02-02",
  • "name": "John Smith",
  • "phoneNumber": "+35123123131",
  • "username": "username@example.com",
  • "acceptedPromotionalEmails": true,
  • "acceptedPush": true,
  • "gender": "FEMALE",
  • "address": {
    },
  • "favoriteStores": [
    ]
}

Response samples

Content type
application/json
{
  • "userId": "0ad6deb7-cbef-4fae-9a3c-6fd035f4x9xf"
}

Delete user

Use this endpoint to delete existing user

Authorizations:
bearer
path Parameters
userId
required
string

Unique User ID representing an RBI User

Responses

Response samples

Content type
application/json
{ }

Send a user event

Use this endpoint to send a user event. One of congitoId or email is required in order to identify user

Authorizations:
bearer
Request Body schema: application/json
required
cognitoId
string
Example: "b73e218d-aa5c-45bd-8cf2-58f6a49769a4"

User ID.

email
string
Example: "user-email@example.com"

User email.

type
required
string
Value: "UPDATE_COMMUNICATION_PREFERENCES"

Event type.

object

Optional payload for updates.

Responses

Request samples

Content type
application/json
{
  • "cognitoId": "b73e218d-aa5c-45bd-8cf2-58f6a49769a4",
  • "email": "user-email@example.com",
  • "type": "UPDATE_COMMUNICATION_PREFERENCES",
  • "communicationPreferences": {
    }
}

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Tickets

Submit a Ticket

Use this endpoint to submit a new support ticket for async processing

Authorizations:
bearer
Request Body schema: application/json
required
id
required
string (UUID)

A UUID that universally identifies the ticket

category
required
string (Category)

The category of the ticket

subcategory
string (Subcategory)

The subcategory of the ticket

subcategoryId
string (SubcategoryID)

The subcategoryId of the ticket

source
required
string (Source)
Enum: "app" "googleFoodOrdering" "grubhub" "kiosk" "uber" "waitr" "web"

The source of the ticket

comments
string (Comments)

Comments

status
required
string (Status)
Enum: "OPEN" "CLOSED"

Status of the ticket

created
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

The time that the case was created.

required
object (Customer-2)

Customer submitting the ticket

orderId
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Unique identifier for an order

escalated
boolean (Escalated)

Indicate if the ticket is being escalated from a previous ticket

type
string (Type)
Enum: "STORE" "GENERAL"

Resolution type for the ticket

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "category": "string",
  • "subcategory": "string",
  • "subcategoryId": "string",
  • "source": "app",
  • "comments": "string",
  • "status": "OPEN",
  • "created": "1991-02-11T20:30:19Z",
  • "customer": {
    },
  • "orderId": "00000000-0000-0000-0000-000000000000",
  • "escalated": true,
  • "type": "STORE"
}

Response samples

Content type
application/json
{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Aggregators

Price order from aggregators

Price a new order.

The price order API must be called to create a new order and to validate the cart prices and item availability with the POS. When the Price Order request returns a success reponse, a subsequent Commit Order request should (but is not guarenteed to) succeed.

Price requests can fail for a variety of reasons. For example:

  • Restaurant - The restaurant is unavailable.
  • Menu - An item in the cart is unavailable or violates permitted constraints.
  • Loyalty - Invalid user details were provided or a discount redemption failed.
  • POS - The order failed to price or inject.
Authorizations:
bearer
header Parameters
x-ui-region
string
Example: US

The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address.

For the full list of country codes, refer to the CLDR Chart.

Request Body schema: application/json
required
channel
required
string (Platform)
Enum: "biteninja" "bookingall" "doordash" "googlefoodordering" "grubhub" "skip" "uber"

Third party platforms

Platform Information
biteninja Bite Ninja - https://biteninja.com
bookingall WinRest 360 - Booking All - https://pt.winrest360.com/booking-all/
doordash DoorDash - https://www.doordash.com
googlefoodordering "Order with Google" (a.k.a. Google Food Ordering) - https://food.google.com
grubhub Grubhub - https://www.grubhub.com
skip Skip the Dishes - https://www.skipthedishes.com
uber UberEats - https://www.ubereats.com
externalReferenceId
string (ExternalReferenceId)

External reference ID. An example might be the external menu selection ID, customer ID or order ID.

number
string (OrderNumber)
Example: "1234"

A human readable number used to identify the order by customers

referralPlatform
string (ReferralPlatform)
Enum: "boltfood" "glovo" "justeat" "smood" "ubereats" "wolt"
Example: "ubereats"

The name of ReferralVendor where client placed the order

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

serviceMode
required
string (ServiceMode)
Enum: "CURBSIDE" "DELIVERY" "DRIVE_THRU" "EAT_IN" "TABLE_SERVICE" "TAKEOUT"
Example: "TAKEOUT"

How a customer would like their order served.

Note that not all service modes will be available at all restaurants.

required
object (AggregatorCart)

Cart representing a customer's selections from the menu

required
object (Customer)

Customer personal details

object (Charges)

Order pricing details

object (Address-2)

Standardized representation of a physical address

Responses

Request samples

Content type
application/json
{
  • "channel": "biteninja",
  • "externalReferenceId": "string",
  • "number": "1234",
  • "referralPlatform": "ubereats",
  • "storeId": "42",
  • "serviceMode": "TAKEOUT",
  • "cart": {
    },
  • "customer": {
    },
  • "charges": {
    },
  • "deliveryAddress": {
    }
}

Response samples

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

Commit order from aggregators

Commit an order.

Authorizations:
bearer
path Parameters
orderId
required
string

Unique Order ID

header Parameters
x-ui-region
string
Example: US

The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address.

For the full list of country codes, refer to the CLDR Chart.

Request Body schema: application/json
required
channel
required
string (Platform)
Enum: "biteninja" "bookingall" "doordash" "googlefoodordering" "grubhub" "skip" "uber"

Third party platforms

Platform Information
biteninja Bite Ninja - https://biteninja.com
bookingall WinRest 360 - Booking All - https://pt.winrest360.com/booking-all/
doordash DoorDash - https://www.doordash.com
googlefoodordering "Order with Google" (a.k.a. Google Food Ordering) - https://food.google.com
grubhub Grubhub - https://www.grubhub.com
skip Skip the Dishes - https://www.skipthedishes.com
uber UberEats - https://www.ubereats.com
object (Charges)

Order pricing details

paymentMethod
required
string (PaymentMethod)
Enum: "CREDIT_CARD" "APPLE_PAY" "GOOGLE_PAY" "PAYPAL" "GIFTCARD" "CASH" "UNPAID"

How the customer has paid or will pay

fireOrderInSeconds
required
integer or null (FireOrderInSeconds) [ 0 .. 100000 ]
Example: "600"

Lead time in seconds before an injected order should be fired to the kitchen for preparation.

  • fireOrderInSeconds=0 fire the order immediately to the kitchen.
  • fireOrderInSeconds=null hold the order in the POS without firing, requiring an explicit Fire Order call.
readyInSeconds
integer or null (ReadyInSeconds) >= 0
Example: "600"

Time in seconds when the order will be ready.

This value incorporates the order preparationTimeInSeconds plus the value of fireOrderInSeconds. When fireOrderInSeconds=0, then readyInSeconds will match the value of preparationTimeInSeconds, and when fireOrderInSeconds=null, then readyInSeconds=null as well.

Responses

Request samples

Content type
application/json
{
  • "channel": "biteninja",
  • "charges": {
    },
  • "paymentMethod": "CREDIT_CARD",
  • "fireOrderInSeconds": 600,
  • "readyInSeconds": 600
}

Response samples

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

Insert an order without price validations

This request creates an order with committed status from aggregators without doing the validations on price.

Authorizations:
bearer
Request Body schema: application/json
required
channel
required
string (Platform)
Enum: "biteninja" "bookingall" "doordash" "googlefoodordering" "grubhub" "skip" "uber"

Third party platforms

Platform Information
biteninja Bite Ninja - https://biteninja.com
bookingall WinRest 360 - Booking All - https://pt.winrest360.com/booking-all/
doordash DoorDash - https://www.doordash.com
googlefoodordering "Order with Google" (a.k.a. Google Food Ordering) - https://food.google.com
grubhub Grubhub - https://www.grubhub.com
skip Skip the Dishes - https://www.skipthedishes.com
uber UberEats - https://www.ubereats.com
deliveryMode
string (DeliveryMode)
Enum: "MANAGED_BY_STORE" "MANAGED_EXTERNALLY"

It indicates who is responsible to deliver the order.

Status Description
MANAGED_BY_STORE When the responsability to deliver the order is from the restaurant.
MANAGED_EXTERNALLY When the responsability to deliver the order is external to the restaurant.
externalReferenceId
string (ExternalReferenceId)

External reference ID. An example might be the external menu selection ID, customer ID or order ID.

number
string (OrderNumber)
Example: "1234"

A human readable number used to identify the order by customers

referralPlatform
string (ReferralPlatform)
Enum: "boltfood" "glovo" "justeat" "smood" "ubereats" "wolt"
Example: "ubereats"

The name of ReferralVendor where client placed the order

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

serviceMode
required
string (ServiceMode)
Enum: "CURBSIDE" "DELIVERY" "DRIVE_THRU" "EAT_IN" "TABLE_SERVICE" "TAKEOUT"
Example: "TAKEOUT"

How a customer would like their order served.

Note that not all service modes will be available at all restaurants.

required
object (AggregatorCart)

Cart representing a customer's selections from the menu

required
object (Customer)

Customer personal details

object (Charges)

Order pricing details

object (Address-2)

Standardized representation of a physical address

paymentMethod
required
string (PaymentMethod)
Enum: "CREDIT_CARD" "APPLE_PAY" "GOOGLE_PAY" "PAYPAL" "GIFTCARD" "CASH" "UNPAID"

How the customer has paid or will pay

fireOrderInSeconds
required
integer or null (FireOrderInSeconds) [ 0 .. 100000 ]
Example: "600"

Lead time in seconds before an injected order should be fired to the kitchen for preparation.

  • fireOrderInSeconds=0 fire the order immediately to the kitchen.
  • fireOrderInSeconds=null hold the order in the POS without firing, requiring an explicit Fire Order call.
readyInSeconds
integer or null (ReadyInSeconds) >= 0
Example: "600"

Time in seconds when the order will be ready.

This value incorporates the order preparationTimeInSeconds plus the value of fireOrderInSeconds. When fireOrderInSeconds=0, then readyInSeconds will match the value of preparationTimeInSeconds, and when fireOrderInSeconds=null, then readyInSeconds=null as well.

status
required
string (OrderStatus)
Enum: "CREATED" "PRICED" "COMMITTED" "PREPARING" "PREPARED" "DONE" "CANCELED" "ERROR"

Order status, representing current state of order in its lifecycle.

When transitioning the order status, the status must always advance further in the lifecycle. All other transitions are invalid.

Status Description
CREATED Order has been created.
PRICED Order has been priced. The POS has provided price information for the order.
COMMITTED Order has been committed. The POS has accepted the order.
PREPARING Order is being prepared in the restaurant
PREPARED Order has been prepared and is ready for pickup or delivery.
DONE Order is done. This is the final state for a successful order.
CANCELED Order has been cancelled.
ERROR Error with the order. Customer should be notified and refunded.
instructions
string

Instruction for the delivery.

Responses

Request samples

Content type
application/json
{
  • "channel": "biteninja",
  • "deliveryMode": "MANAGED_BY_STORE",
  • "externalReferenceId": "string",
  • "number": "1234",
  • "referralPlatform": "ubereats",
  • "storeId": "42",
  • "serviceMode": "TAKEOUT",
  • "cart": {
    },
  • "customer": {
    },
  • "charges": {
    },
  • "deliveryAddress": {
    },
  • "paymentMethod": "CREDIT_CARD",
  • "fireOrderInSeconds": 600,
  • "readyInSeconds": 600,
  • "status": "CREATED",
  • "instructions": "string"
}

Response samples

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

DMP

DMP Store Event

Use this endpoint to provide updated status of a store that has been previously setted as AVAILABLE or UNAVAILABLE via webhook.

Authorizations:
bearer
path Parameters
storeId
required
string (StoreId) ^\d+$
Example: 42

Unique Store ID

Request Body schema: application/json
required
id
required
string (id)

Unique identifier for an event (uuid format)

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

type
required
string (DmpEventType)
Enum: "ORDERING_AVAILABLE" "ORDERING_UNAVAILABLE"

The type of the event triggered by DMP

Type Description
ORDERING_AVAILABLE When the restaurant is available to receive orders
ORDERING_UNAVAILABLE When the restaurant for some reason paused the service, and is not available to receive orders
time
required
string (Time)

Time that the event was triggered in ISOString format

description
string (Description)

Description of the reason to the event be triggered on DMP

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "storeId": "42",
  • "type": "ORDERING_AVAILABLE",
  • "time": "string",
  • "description": "string"
}

Order

Price Order Webhook

Webhook to price an order.

We price an order to confirm how much a customer will be charged. It's also an opportunity to provide feedback on on item level price and availability and surface any applicable discounts.

Webhook type string in the webhook configuration: ORDER_PRICE

Request Body schema: application/json
required
callbackUrl
required
string

URL for responding asynchronously to this request

required
object (Cart)

Cart representing a customer's selections from the menu

channel
required
string (OrderChannel)
Enum: "WHITELABEL_IN_STORE" "WHITELABEL_DELIVERY"

The channel is the platform by which an order is made

externalReferenceId
string (ExternalReferenceId)

External reference ID. An example might be the external menu selection ID, customer ID or order ID.

Array of objects (Fees)

All applicable fees for an order

id
required
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Unique identifier for an order

instructions
Array of strings (Instructions)
Example: "TABLE-1"

Additional information regarding the order (e.g. table number)

number
string (OrderNumber)
Example: "1234"

A human readable number used to identify the order by customers

referralPlatform
string (ReferralPlatform)
Enum: "boltfood" "glovo" "justeat" "smood" "ubereats" "wolt"
Example: "ubereats"

The name of ReferralVendor where client placed the order

serviceMode
required
string (ServiceMode)
Enum: "CURBSIDE" "DELIVERY" "DRIVE_THRU" "EAT_IN" "TABLE_SERVICE" "TAKEOUT"
Example: "TAKEOUT"

How a customer would like their order served.

Note that not all service modes will be available at all restaurants.

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

Array of objects (OrderDiscounts)

Any discounts which ought to be applied to the order or a specific item in the order

Responses

Request samples

Content type
application/json
{
  • "callbackUrl": "string",
  • "cart": {
    },
  • "channel": "WHITELABEL_IN_STORE",
  • "externalReferenceId": "string",
  • "fees": [
    ],
  • "id": "00000000-0000-0000-0000-000000000000",
  • "instructions": [
    ],
  • "number": "1234",
  • "referralPlatform": "ubereats",
  • "serviceMode": "TAKEOUT",
  • "storeId": "42",
  • "orderDiscounts": [
    ]
}

Response samples

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

Commit Order Webhook

Webhook to commit an order.

By default, committing an order sends the order to the kitchen for preparation. We use the fireOrderInSeconds field to indicate whether the order should be prepare the order at a point in the future, or wait until we send a subsequent "fire" request.

Webhook type string in the webhook configuration: ORDER_COMMIT

Request Body schema: application/json
required
id
required
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Internal order ID

externalReferenceId
required
string (ExternalReferenceId)

Partner's order ID

callbackUrl
required
string

URL to provide events for this order.

required
object (Customer)

Customer personal details

Array of objects (Fees)

All applicable fees for an order

required
object (Payment)
fireOrderInSeconds
required
integer or null (FireOrderInSeconds) [ 0 .. 100000 ]
Example: "600"

Lead time in seconds before an injected order should be fired to the kitchen for preparation.

  • fireOrderInSeconds=0 fire the order immediately to the kitchen.
  • fireOrderInSeconds=null hold the order in the POS without firing, requiring an explicit Fire Order call.
readyInSeconds
integer or null (ReadyInSeconds) >= 0
Example: "600"

Time in seconds when the order will be ready.

This value incorporates the order preparationTimeInSeconds plus the value of fireOrderInSeconds. When fireOrderInSeconds=0, then readyInSeconds will match the value of preparationTimeInSeconds, and when fireOrderInSeconds=null, then readyInSeconds=null as well.

Responses

Request samples

Content type
application/json
{
  • "id": "00000000-0000-0000-0000-000000000000",
  • "externalReferenceId": "string",
  • "callbackUrl": "string",
  • "customer": {
    },
  • "fees": [
    ],
  • "payment": {
    },
  • "fireOrderInSeconds": 600,
  • "readyInSeconds": 600
}

Response samples

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

Fire Order Webhook

Webhook to fire an order.

Firing an order means that we should begin preparation of an order which was previously committed

Webhook type string in the webhook configuration: ORDER_FIRE

Request Body schema: application/json
required
id
required
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Internal order ID

externalReferenceId
required
string (ExternalReferenceId)

Partner's order ID

callbackUrl
required
string

URL to provide events for this order.

Responses

Request samples

Content type
application/json
{
  • "id": "00000000-0000-0000-0000-000000000000",
  • "externalReferenceId": "string",
  • "callbackUrl": "string"
}

Response samples

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

Order Event Webhook

Webhook for an order event

Webhook type string in the webhook configuration: ORDER_EVENT

Request Body schema: application/json
required
id
required
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Internal order ID

externalReferenceId
required
string (ExternalReferenceId)

Partner's order ID

fireOrderInSeconds
integer or null (FireOrderInSeconds) [ 0 .. 100000 ]
Example: "600"

Lead time in seconds before an injected order should be fired to the kitchen for preparation.

  • fireOrderInSeconds=0 fire the order immediately to the kitchen.
  • fireOrderInSeconds=null hold the order in the POS without firing, requiring an explicit Fire Order call.
status
required
string (OrderStatus)
Enum: "CREATED" "PRICED" "COMMITTED" "PREPARING" "PREPARED" "DONE" "CANCELED" "ERROR"

Order status, representing current state of order in its lifecycle.

When transitioning the order status, the status must always advance further in the lifecycle. All other transitions are invalid.

Status Description
CREATED Order has been created.
PRICED Order has been priced. The POS has provided price information for the order.
COMMITTED Order has been committed. The POS has accepted the order.
PREPARING Order is being prepared in the restaurant
PREPARED Order has been prepared and is ready for pickup or delivery.
DONE Order is done. This is the final state for a successful order.
CANCELED Order has been cancelled.
ERROR Error with the order. Customer should be notified and refunded.
Array of objects (Order Error)
Deprecated

Any errors which occurred during order processing. Deprecated - Use partnerErrors instead.

Array of ItemNotAvailable (object) or ItemPriceMismatch (object) or ItemNotFound (object) or StoreNotFound (object) or StoreClosed (object) or StoreNotOperating (object) or OrderNotFound (object) or OrderCancelled (object) (Partner Error)

Any errors which occurred during order processing, which includes errors related to items, stores, or orders.

Responses

Request samples

Content type
application/json
{
  • "id": "00000000-0000-0000-0000-000000000000",
  • "externalReferenceId": "string",
  • "fireOrderInSeconds": 600,
  • "status": "CREATED",
  • "errors": [
    ],
  • "partnerErrors": [
    ]
}

Response samples

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

Delivery

Delivery Event Webhook

Webhook for an delivery event

Webhook type string in the webhook configuration: DELIVERY_EVENT

Request Body schema: application/json
required
orderId
required
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Internal order ID

externalReferenceId
required
string (ExternalReferenceId)

Partner's order ID

status
required
string (DeliveryStatus)
Enum: "DELIVERY_CREATED" "DRIVER_ASSIGNED" "DRIVER_STARTING" "DRIVER_AT_STORE" "ORDER_PICKED_UP" "DRIVER_AT_CUSTOMER" "ORDER_DROPPED_OFF" "DRIVER_UNASSIGNED" "ORDER_CANCELLED" "ERROR"

Delivery status, representing current state of delivery order in its lifecycle.

Status Description
DELIVERY_CREATED Delivery has been created
DRIVER_ASSIGNED A driver has been assigned to the order. Should provide all details on courier that are available.
DRIVER_STARTING The driver is starting. Should provide location if available.
DRIVER_AT_STORE The driver has arrived at the store. Should provide location if available.
ORDER_PICKED_UP The driver has left the store. Should provide location if available.
DRIVER_AT_CUSTOMER The driver has arrived as the customer's location. Should provide location if available.
ORDER_DROPPED_OFF The delivery has been completed.
DRIVER_UNASSIGNED Driver has been unassigned from the order. Another driver should be assigned.
ORDER_CANCELLED Delivery has been cancelled. Should provide details on cancellation if available. Use this event if a fatal error has occurred preventing us from continuing with the order.
ERROR The Delivery has a problem in the delivery moment.
object (TimeInterval)

The time window during which the pickup is expected.

object (TimeInterval)

The time window during which the delivery is expected.

dropoffEta
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

Extimated dropoff time (ETA)

object

Optionally provided cancellation details if the fulfillment provider has cancelled for any reason

object (Courier)

Courier information

pincode
string
Example: "1234"

In cases of suspected fraud, the last-mile provider can generate a PIN code to confirm the delivery

Responses

Request samples

Content type
application/json
{
  • "orderId": "00000000-0000-0000-0000-000000000000",
  • "externalReferenceId": "string",
  • "status": "DELIVERY_CREATED",
  • "pickupWindow": {
    },
  • "dropoffWindow": {
    },
  • "dropoffEta": "1991-02-11T20:30:19Z",
  • "cancellation": {
    },
  • "courier": {
    },
  • "pincode": 1234
}

Quote (deprecated) Webhook

Webhook to receive quote requests.

We use quote requests to determine whether any drivers are available to fulfill a delivery order.

Webhook type string in the webhook configuration: DELIVERY_QUOTE

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

Cart representing a customer's selections from the menu

required
object (Address-2)

Standardized representation of a physical address

storeId
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

Responses

Request samples

Content type
application/json
{
  • "cart": {
    },
  • "deliveryAddress": {
    },
  • "storeId": "42"
}

Response samples

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

Create Quote Webhook

Webhook to receive quote requests.

We use create quote requests to determine whether any restaurants are available to fulfill an order and provide estimated delivery costs.

Webhook type string in the webhook configuration: DELIVERY_QUOTE_CREATE

Request Body schema: application/json
required
required
object (Address-2)

Standardized representation of a physical address

Array of objects (StoreAddress)

Addresses of restaurants which are eligible to fulfill the order

Responses

Request samples

Content type
application/json
{
  • "deliveryAddress": {
    },
  • "pickupAddresses": [
    ]
}

Response samples

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

Apply Quote Webhook

Webhook to receive quote requests.

We use apply quote requests to provide final delivery costs for specific order and specific restaurant.

Webhook type string in the webhook configuration: DELIVERY_QUOTE_APPLY

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

Cart representing a customer's selections from the menu

required
object (Address-2)

Standardized representation of a physical address

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

Array of objects (OrderDiscounts)

Any discounts which ought to be applied to the order or a specific item in the order

Responses

Request samples

Content type
application/json
{
  • "cart": {
    },
  • "deliveryAddress": {
    },
  • "storeId": "42",
  • "orderDiscounts": [
    ]
}

Response samples

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

Create Delivery Webhook

Create a delivery order

Webhook type string in the webhook configuration: DELIVERY_CREATE

Request Body schema: application/json
required
orderId
required
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Unique identifier for an order

quoteId
required
string

The unique identifier of the quote applied to the order.

number
string
Example: "123"

Order ID as it should be displayed to the guest

required
object (Cart)

Cart representing a customer's selections from the menu

channel
string (DeliveryChannel)
Enum: "app" "biteninja" "bookingall" "doordash" "googleFoodOrdering" "grubhub" "internal" "kiosk" "skip uber" "waitr" "web" "boltfood" "glovo" "justeat" "smood" "ubereats" "wolt"

The channel is the platform by which an order is made

required
object (Customer)

Customer personal details

Array of objects (Fees)

All applicable fees for an order

fireOrderInSeconds
required
integer or null (FireOrderInSeconds) [ 0 .. 100000 ]
Example: "600"

Lead time in seconds before an injected order should be fired to the kitchen for preparation.

  • fireOrderInSeconds=0 fire the order immediately to the kitchen.
  • fireOrderInSeconds=null hold the order in the POS without firing, requiring an explicit Fire Order call.
required
object (Payment)
required
object (Address-2)

Standardized representation of a physical address

Array of objects (AdditionalDetails)

This are additional fields that can be specified in the CMS, to be entered by the user at checkout.

instructions
string

Instruction for the delivery.

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

Array of objects (OrderDiscounts)

Any discounts which ought to be applied to the order or a specific item in the order

object (PreOrderTimeSlot)

Representation of pre order time slot, a range in time, lasting from start to end.

Responses

Request samples

Content type
application/json
{
  • "orderId": "00000000-0000-0000-0000-000000000000",
  • "quoteId": "string",
  • "number": 123,
  • "cart": {
    },
  • "channel": "app",
  • "customer": {
    },
  • "fees": [
    ],
  • "fireOrderInSeconds": 600,
  • "payment": {
    },
  • "deliveryAddress": {
    },
  • "additionalDetails": [
    ],
  • "instructions": "string",
  • "storeId": "42",
  • "orderDiscounts": [
    ],
  • "selectedPreOrderTimeSlot": {
    }
}

Response samples

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

Store

Store Heartbeat Webhook

Webhook to update the heartbeat status.

A schedule is established to update the heartbeat status via a webhook, and the frequency of the associated heartbeat requests is every fifteen minutes.

Webhook type string in the webhook configuration: STORE_HEARTBEAT

Request Body schema: application/json
required
storeId
required
string
Example: "99999"

An ID of the store.

Responses

Request samples

Content type
application/json
{
  • "storeId": "99999"
}

Response samples

Content type
application/json
{
  • "isOnline": true
}

Store Updated Event Webhook

Store updated events are dispatched when a store's availability or metadata has changed.

The availability of individual stores can change regularly for a variety of reasons. In some cases a store may be experiencing a temporary outage, or a more widespread outage may be affecting the Point of Sale (POS) vendor. In addition, store operators can update operating hours and service modes, and expect these changes to be reflected across all supported platforms.

When these "STORE_UPDATED" events are delivered, a request must be made to the provided callbackUrl to fetch the latest store details.

header Parameters
x-signature
string

A hex encoded HMAC signature

Request Body schema: application/json
required
brand
required
string (Brand)
Enum: "BK" "PLK" "TH"
Example: "PLK"
callbackUrl
required
string <url>
Example: "https://partners-bk.rbictg.com/api/v1/stores/42"

URL from which the updated store details may be retrieved.

eventTime
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

Store update event time.

eventType
required
string
Value: "STORE_UPDATED"

Webhook event type.

region
required
string (Region)
Example: "US"

Region The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address. For example, the code for the United States is US.

For the full list of codes, refer to the CLDR Chart.

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

Responses

Request samples

Content type
application/json
{}

Menu

Store Menu Version Webhook

Store Menu Version events are dispatched when a store's menu changes.

Menus can change for a variety of reasons. Some stores may update the availability of an item to make it unavailable for orders ("stock out"). Operators also make frequent changes to menu prices throughout the day, and at the brand-level menu entries are being added and removed continuously.

These "MENU_PRICES_AVAILABILITY_UPDATE" will be delivered providing an object containing the current status of the object and which operation happened.

Webhook type string in the webhook configuration: MENU_PRICES_AVAILABILITY_UPDATE

Request Body schema: application/json
required
brand
required
string (Brand)
Enum: "BK" "PLK" "TH"
Example: "PLK"
channel
required
string (Channel)
Example: "whitelabel"

Store's Channel

chunk
number
Example: "0"

The plu updates for a given version may happen in chunks. This is responsible for identifying to which chunk it belongs.

required
object
eventTime
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

When the store menu version update occurred

eventType
required
string
Value: "MENU_PRICES_AVAILABILITY_UPDATE"

Menu event type

region
required
string (Region)
Example: "US"

Region The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address. For example, the code for the United States is US.

For the full list of codes, refer to the CLDR Chart.

serviceMode
required
string (PosDataServiceMode)
Enum: "pickup" "delivery"
Example: "delivery"

Menu service mode

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

version
required
number
Example: "20240108163635030"

This is a digit only ISO 8601 timestamp that refers to when the plu updates were received

Responses

Request samples

Content type
application/json
{
  • "brand": "PLK",
  • "channel": "whitelabel",
  • "chunk": 0,
  • "data": {
    },
  • "eventTime": "1991-02-11T20:30:19Z",
  • "eventType": "MENU_PRICES_AVAILABILITY_UPDATE",
  • "region": "US",
  • "serviceMode": "delivery",
  • "storeId": "42",
  • "version": 20240108163635030
}

Menu Event Webhook

Webhook for a menu event

Request Body schema: application/json
required
brand
required
string (Brand)
Enum: "BK" "PLK" "TH"
Example: "PLK"
eventTime
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

When the menu update occurred

eventType
required
string
Value: "MENU_UPDATED"

Menu event type

region
string (Region)
Example: "US"

Region The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address. For example, the code for the United States is US.

For the full list of codes, refer to the CLDR Chart.

serviceMode
required
string (ServiceMode)
Enum: "CURBSIDE" "DELIVERY" "DRIVE_THRU" "EAT_IN" "TABLE_SERVICE" "TAKEOUT"
Example: "TAKEOUT"

Menu service mode

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

Responses

Request samples

Content type
application/json
{
  • "brand": "PLK",
  • "eventTime": "1991-02-11T20:30:19Z",
  • "eventType": "MENU_UPDATED",
  • "region": "US",
  • "serviceMode": "TAKEOUT",
  • "storeId": "42"
}

Menu Content Updated Webhook

Menu Content Updated events are dispatched when there are changes to content in the CMS.

This webhook provides information with what ids were created, updated or deleted considering the menu entries, configOffersEntries, systemWideOffersEntries and rewardEntries.

It will also provide a versionId field so when retrieving the menu, you can compare it against the menu's metadata.

This will let consumers know if the version they're consuming is up to date with the latest webhook call.

Please, notice that content is not store nor serviceMode specific, so storeId/serviceMode won't be present in the payload.

Request Body schema: application/json
required
brand
required
string (Brand)
Enum: "BK" "PLK" "TH"
Example: "PLK"
channel
required
string (Channel)
Example: "whitelabel"

Store's Channel

required
object
eventTime
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

When the store menu version update occurred

eventType
required
string
Value: "MENU_CONTENT_UPDATED"

Menu event type

region
required
string (Region)
Example: "US"

Region The Unicode Common Locale Data Repository (CLDR) region code of the country or region of the address. For example, the code for the United States is US.

For the full list of codes, refer to the CLDR Chart.

version
required
number
Example: "20240108163635030"

This is a digit only ISO 8601 timestamp that refers to when the content changed. On the menu, it will be under meta.version

Responses

Request samples

Content type
application/json
{
  • "brand": "PLK",
  • "channel": "whitelabel",
  • "data": {
    },
  • "eventTime": "1991-02-11T20:30:19Z",
  • "eventType": "MENU_CONTENT_UPDATED",
  • "region": "US",
  • "version": 20240108163635030
}

Support Ticket

Ticket Event (deprecated) Webhook

Webhook for a ticket event. (deprecated: use STORE_SUPPORT_TICKET_EVENT instead)

A ticket event is generated when a guest raises a support request via the Whitelabel app. This webhook then forwards the event to the relevant support system depending on configured business rules. Currently, we support forwarding ticket events to Salesforce and the Delivery Management Platform.

Webhook type string in the webhook configuration: TICKET_EVENT

Request Body schema: application/json
required
id
required
string (UUID)

A UUID that universally identifies the ticket

category
required
string (Category)

The category of the ticket

subcategory
string (Subcategory)

The subcategory of the ticket

subcategoryId
string (SubcategoryID)

The subcategoryId of the ticket

source
required
string (Source)
Enum: "app" "googleFoodOrdering" "grubhub" "kiosk" "uber" "waitr" "web"

The source of the ticket

comments
string (Comments)

Comments

status
required
string (Status)
Enum: "OPEN" "CLOSED"

Status of the ticket

created
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

The time that the case was created.

required
object (Customer-2)

Customer submitting the ticket

orderId
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Internal order ID

escalated
boolean (Escalated)

Indicates if the ticket has been escalated from a previous ticket or not

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "category": "string",
  • "subcategory": "string",
  • "subcategoryId": "string",
  • "source": "app",
  • "comments": "string",
  • "status": "OPEN",
  • "created": "1991-02-11T20:30:19Z",
  • "customer": {
    },
  • "orderId": "00000000-0000-0000-0000-000000000000",
  • "escalated": true
}

Store Support Ticket Event Webhook

Webhook for a store ticket event.

These tickets are related to issues that should be addressed within a time frame by the store, such as an order that arrived cold or late. The store support ticket is intended to prompt the support system associated with the store to take action to resolve the issue.

Webhook type string in the webhook configuration: STORE_SUPPORT_TICKET_EVENT

Request Body schema: application/json
required
id
required
string (UUID)

A UUID that universally identifies the ticket

category
required
string (Category)

The category of the ticket

subcategory
string (Subcategory)

The subcategory of the ticket

subcategoryId
string (SubcategoryID)

The subcategoryId of the ticket

source
required
string (Source)
Enum: "app" "googleFoodOrdering" "grubhub" "kiosk" "uber" "waitr" "web"

The source of the ticket

comments
string (Comments)

Comments

status
required
string (Status)
Enum: "OPEN" "CLOSED"

Status of the ticket

created
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

The time that the case was created.

required
object (Customer-2)

Customer submitting the ticket

orderId
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Internal order ID

escalated
boolean (Escalated)

Indicates if the ticket has been escalated from a previous ticket or not

type
string
Value: "STORE"

Resolution type for the ticket

orderDate
string (OrderDate)

The incident date in YYYY-MM-DD format

storeId
string

The Store ID where the user raised the ticket

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "category": "string",
  • "subcategory": "string",
  • "subcategoryId": "string",
  • "source": "app",
  • "comments": "string",
  • "status": "OPEN",
  • "created": "1991-02-11T20:30:19Z",
  • "customer": {
    },
  • "orderId": "00000000-0000-0000-0000-000000000000",
  • "escalated": true,
  • "type": "STORE",
  • "orderDate": "string",
  • "storeId": "string"
}

General Support Ticket Event Webhook

Webhook for a general ticket event.

These tickets are for issues that do not necessarily require immediate action from the store, such as a complaint or suggestion. General support tickets are intended to be handled by the support team, who will take appropriate action to resolve the issue or respond to the request.

Webhook type string in the webhook configuration: GENERAL_SUPPORT_TICKET_EVENT

Request Body schema: application/json
required
id
required
string (UUID)

A UUID that universally identifies the ticket

category
required
string (Category)

The category of the ticket

subcategory
string (Subcategory)

The subcategory of the ticket

subcategoryId
string (SubcategoryID)

The subcategoryId of the ticket

source
required
string (Source)
Enum: "app" "googleFoodOrdering" "grubhub" "kiosk" "uber" "waitr" "web"

The source of the ticket

comments
string (Comments)

Comments

status
required
string (Status)
Enum: "OPEN" "CLOSED"

Status of the ticket

created
required
string <ISO 8601 Date Time> (DateTime)
Example: "1991-02-11T20:30:19Z"

The time that the case was created.

required
object (Customer-2)

Customer submitting the ticket

orderId
string (OrderId)
Example: "00000000-0000-0000-0000-000000000000"

Internal order ID

escalated
boolean (Escalated)

Indicates if the ticket has been escalated from a previous ticket or not

type
string
Value: "GENERAL"

Resolution type for the ticket

orderDate
string (OrderDate)

The incident date in YYYY-MM-DD format

storeId
string

The Store ID where the user raised the ticket

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "category": "string",
  • "subcategory": "string",
  • "subcategoryId": "string",
  • "source": "app",
  • "comments": "string",
  • "status": "OPEN",
  • "created": "1991-02-11T20:30:19Z",
  • "customer": {
    },
  • "orderId": "00000000-0000-0000-0000-000000000000",
  • "escalated": true,
  • "type": "GENERAL",
  • "orderDate": "string",
  • "storeId": "string"
}

DMP Store Event

DMP Store event Webhook

Webhook type string in the webhook configuration: DMP_STORE_EVENT

Request Body schema: application/json
required
id
required
string (id)

Unique identifier for an event (uuid format)

storeId
required
string (StoreId) ^\d+$
Example: "42"

Unique Store ID

type
required
string (DmpEventType)
Enum: "ORDERING_AVAILABLE" "ORDERING_UNAVAILABLE"

The type of the event triggered by DMP

Type Description
ORDERING_AVAILABLE When the restaurant is available to receive orders
ORDERING_UNAVAILABLE When the restaurant for some reason paused the service, and is not available to receive orders
time
required
string (Time)
Example: "2022-07-14T10:27:32-03:00"

Time that the event was triggered in ISOString format

description
string (Description)
Example: "NO_DRIVERS_AVAILABLE"

Description of the reason to the event be triggered on DMP

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "storeId": "42",
  • "type": "ORDERING_AVAILABLE",
  • "time": "2022-07-14T10:27:32-03:00",
  • "description": "NO_DRIVERS_AVAILABLE"
}

User

Signup Webhook

Rolling Out: This feature is not available in all partners at the moment. Contact us if you need this feature enabled.

The webhook through which RBI sends user sign up information. This webhook is used to synchronize RBI users with a Partner. Webhook type string in the webhook configuration: USER_SIGN_UP

Request Body schema: application/json
required
userId
required
string
Example: "25ab9948-d4c4-4643-84b2-44b9608b860a"

Customer Id, its unique cognito id.

firstName
string
Example: "John"

Customer firstname

lastName
string
Example: "Smith"

Customer lastname

phone
string
Example: "+35123123131"

Customer phone number starting with the country code.

email
required
string
Example: "username@example.com"

Customer username, must be a valid email address.

acceptedPromotionalEmails
boolean
Example: "true"

Whether customer accepts promotional email

loyaltyId
string
Example: "af570946-7a70-4d18-a02b-86d9a2a6eea2"

If loyalty enable in market, store loyaltyId along with user details

Responses

Request samples

Content type
application/json
{
  • "userId": "25ab9948-d4c4-4643-84b2-44b9608b860a",
  • "firstName": "John",
  • "lastName": "Smith",
  • "phone": "+35123123131",
  • "email": "username@example.com",
  • "acceptedPromotionalEmails": true,
  • "loyaltyId": "af570946-7a70-4d18-a02b-86d9a2a6eea2"
}

Error

status
number
Example: "400"

HTTP status code

code
required
string
Example: "ValidationError"

Unique error code. Same as errors[0].code

message
required
string
Example: "isAvailable must be a boolean value"

Human readable error mesage. Same as errors[0].message

required
Array of objects

All errors

{
  • "status": 400,
  • "code": "ValidationError",
  • "message": "isAvailable must be a boolean value",
  • "errors": [
    ]
}

Webhook

type
required
string
Enum: "DELIVERY_CREATE" "DELIVERY_EVENT" "DELIVERY_QUOTE" "DELIVERY_QUOTE_APPLY" "DELIVERY_QUOTE_CREATE" "MENU_EVENT" "MENU_PRICES_AVAILABILITY_UPDATE" "ORDER_COMMIT" "ORDER_EVENT" "ORDER_FIRE" "ORDER_PRICE" "STORE_HEARTBEAT" "TICKET_EVENT" "STORE_SUPPORT_TICKET_EVENT" "GENERAL_SUPPORT_TICKET_EVENT" "USER_SIGN_UP"
Example: "ORDER_PRICE"

Type of webhook which is trigger in a specific action

Type Webhook
DELIVERY_CREATE Create Delivery
DELIVERY_EVENT Delivery Event
DELIVERY_QUOTE Quote (deprecated)
DELIVERY_QUOTE_APPLY Apply Quote
DELIVERY_QUOTE_CREATE Create Quote
MENU_EVENT Menu Event
MENU_PRICES_AVAILABILITY_UPDATE Menu Version
ORDER_COMMIT Commit Order
ORDER_EVENT Order Event
ORDER_FIRE Fire Order
ORDER_PRICE Price Order
STORE_HEARTBEAT Store Heartbeat
TICKET_EVENT Ticket Event (deprecated)
STORE_SUPPORT_TICKET_EVENT Store Support Ticket Event
GENERAL_SUPPORT_TICKET_EVENT General Support Ticket Event
USER_SIGN_UP Partner User Signup
url
required
string
Example: "https://partnert.example.com/order_price"

Endpoint on partner side that should receive the webhook call

{}