Download OpenAPI specification:Download
The Channel Partners API are provided for third party food ordering marketplaces integrating into the Restaurant Brand International (RBI) fulfillment platform.
Webhook requests are signed using hex encoded HMAC signatures.
An HMAC signature is derived for validation using three components:
Using these three pieces of information, compute an HMAC signature using the secret as the key and the body of the request as the message and encode the signature to a hexadecimal string for comparison.
Compare the signature generated using the above information to the signature received in the x-signature header,
if the two signatures match, the request is valid.
| identifier required | string (Identifier) ^(\d{6}|\d{4})$ Example: "1234" An OTP code (6 digit code) or a static Offer code (4 digit code) |
| identifierType required | string (IdentifierType) Enum: "OTP" "OFFER_CODE" Example: "OTP" Determines the type of identifier being sent |
| 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. |
object (IdentifyRequestDetails) |
required | object (IdentifyResponse) |
{- "identifier": "1234",
- "identifierType": "OTP",
- "storeId": "42",
- "serviceMode": "TAKEOUT",
- "details": {
- "operator": "ninja123",
- "terminal": "window-2",
- "transactionId": "ORD-000002"
}
}{- "data": {
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
]
}, - "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "loyalty": {
- "balances": [
- {
- "amount": 0,
- "currency": "string"
}
], - "loyaltyId": "a73ea594-202c-52b4-00a0-1f6b518ef54d",
- "transactionId": "a73ea594-202c-52b4-80af-1f6b518ef54d"
}, - "storeId": "42",
- "serviceMode": "TAKEOUT"
}
}Order updated events are dispatched as an order state transitions.
When these "ORDER_UPDATED" events are delivered, a request must be
made to the provided callbackUrl to fetch the latest order details.
| x-signature | string A hex encoded HMAC signature |
| brand required | string (Brand) Value: "BK" Example: "BK" |
| callbackUrl required | string <url> Example: "https://rbictg.com/api/v1/orders/41" URL from which the updated order contents may be retrieved |
| eventTime required | string <ISO 8601 Date Time> (DateTime) Example: "1991-02-11T20:30:19Z" When the order update occurred |
| eventType required | string Value: "ORDER_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 For the full list of codes, refer to the CLDR Chart. |
| id required | string (OrderId) Example: "example-unique-id" Unique identifier for an order |
{- "brand": "BK",
- "eventTime": "1991-02-11T20:30:19Z",
- "eventType": "ORDER_UPDATED",
- "region": "US",
- "id": "example-unique-id"
}Retrieve an order by ID
| orderId required | string Unique Order ID |
| 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. |
required | object (Order) Representation of an order placed by a customer |
{- "data": {
- "id": "example-unique-id",
- "externalReferenceId": "string",
- "storeId": "42",
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
], - "feedback": [
- {
- "entryId": "entry-id",
- "isAvailable": true,
- "price": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "serviceMode": "TAKEOUT",
- "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "discounts": [
- {
- "type": "DISCOUNT",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
], - "payment": {
- "paymentMethod": "APPLE_PAY"
}, - "posVendor": "BRINK",
- "status": "CREATED",
- "deliveryAddress": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5707 Blue Lagoon Drive",
- "instructions": "string",
- "locality": "Miami-Dade County",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "Blue Lagoon Drive",
- "streetNumber": "5707",
- "sublocality": "string",
- "subpremise": "Suite 101"
}, - "loyaltyPointsEarned": 15,
- "errors": [
- {
- "message": "TERMINAL UPDATE IN PROGRESS",
- "code": "STORE"
}
], - "createdAt": "1991-02-11T20:30:19Z",
- "updatedAt": "1991-02-11T20:30:19Z",
- "fireOrderInSeconds": 600,
- "preparationTimeInSeconds": 300,
- "readyInSeconds": 600
}
}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](#operation/ commitOrder) request should (but is not guarenteed to) succeed.
Price requests can fail for a variety of reasons. For example:
Loyalty
| 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. |
| externalReferenceId | string (ExternalReferenceId) External reference ID. An example might be the external menu selection ID, customer ID or order ID. |
| 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 (Cart) Cart representing a customer's selections from the menu |
required | object (Customer) Customer personal details |
object (Charges) Order pricing details | |
| mpfOrderId | string (MpfOrderId) Example: "123456789" External References for the order. You can use this field to provide additional identifiers or any other string data to the order to be injected. A common use for this is to hold additional external order numbers, like receipt number or third party short order ID. |
object (Address) Standardized representation of a physical address | |
object (Loyalty) User and transaction information regarding loyalty |
required | object (Order) Representation of an order placed by a customer |
{- "externalReferenceId": "string",
- "storeId": "42",
- "serviceMode": "TAKEOUT",
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
]
}, - "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "mpfOrderId": "123456789",
- "deliveryAddress": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5707 Blue Lagoon Drive",
- "instructions": "string",
- "locality": "Miami-Dade County",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "Blue Lagoon Drive",
- "streetNumber": "5707",
- "sublocality": "string",
- "subpremise": "Suite 101"
}, - "loyalty": {
- "loyaltyId": "a73ea594-202c-52b4-00a0-1f6b518ef54d",
- "transactionId": "a73ea594-202c-52b4-80af-1f6b518ef54d"
}
}{- "data": {
- "id": "example-unique-id",
- "externalReferenceId": "string",
- "storeId": "42",
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
], - "feedback": [
- {
- "entryId": "entry-id",
- "isAvailable": true,
- "price": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "serviceMode": "TAKEOUT",
- "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "discounts": [
- {
- "type": "DISCOUNT",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
], - "payment": {
- "paymentMethod": "APPLE_PAY"
}, - "posVendor": "BRINK",
- "status": "CREATED",
- "deliveryAddress": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5707 Blue Lagoon Drive",
- "instructions": "string",
- "locality": "Miami-Dade County",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "Blue Lagoon Drive",
- "streetNumber": "5707",
- "sublocality": "string",
- "subpremise": "Suite 101"
}, - "loyaltyPointsEarned": 15,
- "errors": [
- {
- "message": "TERMINAL UPDATE IN PROGRESS",
- "code": "STORE"
}
], - "createdAt": "1991-02-11T20:30:19Z",
- "updatedAt": "1991-02-11T20:30:19Z",
- "fireOrderInSeconds": 600,
- "preparationTimeInSeconds": 300,
- "readyInSeconds": 600
}
}Commit an order.
| orderId required | string Unique Order ID |
| 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. |
object (Charges) Order pricing details | |
| mpfOrderId | string (MpfOrderId) Example: "123456789" External References for the order. You can use this field to provide additional identifiers or any other string data to the order to be injected. A common use for this is to hold additional external order numbers, like receipt number or third party short order ID. |
| paymentMethod required | string (PaymentMethod) Enum: "APPLE_PAY" "CASH" "CREDIT_CARD" "GIFTCARD" "GOOGLE_PAY" "PAYPAL" "UNPAID" "VENMO" 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.
|
| readyInSeconds | integer or null (ReadyInSeconds) >= 0 Example: 600 Time in seconds when the order will be ready. This value incorporates the order |
required | object (Order) Representation of an order placed by a customer |
{- "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "mpfOrderId": "123456789",
- "paymentMethod": "APPLE_PAY",
- "fireOrderInSeconds": 600,
- "readyInSeconds": 600
}{- "data": {
- "id": "example-unique-id",
- "externalReferenceId": "string",
- "storeId": "42",
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
], - "feedback": [
- {
- "entryId": "entry-id",
- "isAvailable": true,
- "price": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "serviceMode": "TAKEOUT",
- "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "discounts": [
- {
- "type": "DISCOUNT",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
], - "payment": {
- "paymentMethod": "APPLE_PAY"
}, - "posVendor": "BRINK",
- "status": "CREATED",
- "deliveryAddress": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5707 Blue Lagoon Drive",
- "instructions": "string",
- "locality": "Miami-Dade County",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "Blue Lagoon Drive",
- "streetNumber": "5707",
- "sublocality": "string",
- "subpremise": "Suite 101"
}, - "loyaltyPointsEarned": 15,
- "errors": [
- {
- "message": "TERMINAL UPDATE IN PROGRESS",
- "code": "STORE"
}
], - "createdAt": "1991-02-11T20:30:19Z",
- "updatedAt": "1991-02-11T20:30:19Z",
- "fireOrderInSeconds": 600,
- "preparationTimeInSeconds": 300,
- "readyInSeconds": 600
}
}Fire a committed order to the kitchen for preparation.
In cases when an order is committed with some pre-determined lead time (e.g., 30 minutes from now), it may be necessary to "fire" or "release" the order to the kitchen immediately before the original lead time has elapsed.
| orderId required | string Unique Order ID |
| 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. |
required | object (Order) Representation of an order placed by a customer |
{- "data": {
- "id": "example-unique-id",
- "externalReferenceId": "string",
- "storeId": "42",
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
], - "feedback": [
- {
- "entryId": "entry-id",
- "isAvailable": true,
- "price": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "serviceMode": "TAKEOUT",
- "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "discounts": [
- {
- "type": "DISCOUNT",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
], - "payment": {
- "paymentMethod": "APPLE_PAY"
}, - "posVendor": "BRINK",
- "status": "CREATED",
- "deliveryAddress": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5707 Blue Lagoon Drive",
- "instructions": "string",
- "locality": "Miami-Dade County",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "Blue Lagoon Drive",
- "streetNumber": "5707",
- "sublocality": "string",
- "subpremise": "Suite 101"
}, - "loyaltyPointsEarned": 15,
- "errors": [
- {
- "message": "TERMINAL UPDATE IN PROGRESS",
- "code": "STORE"
}
], - "createdAt": "1991-02-11T20:30:19Z",
- "updatedAt": "1991-02-11T20:30:19Z",
- "fireOrderInSeconds": 600,
- "preparationTimeInSeconds": 300,
- "readyInSeconds": 600
}
}Price and commit a new order.
The place order API prices and commits an order asynchronously. Partners receive order changes via the Order Updated webhook.
Place order can fail for the same reasons a Price and Commit calls can fail, but also:
| 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. |
| externalReferenceId | string (ExternalReferenceId) External reference ID. An example might be the external menu selection ID, customer ID or order ID. |
| 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 (Cart) Cart representing a customer's selections from the menu |
required | object (Customer) Customer personal details |
object (Charges) Order pricing details | |
object (Address) Standardized representation of a physical address | |
| paymentMethod required | string (PaymentMethod) Enum: "APPLE_PAY" "CASH" "CREDIT_CARD" "GIFTCARD" "GOOGLE_PAY" "PAYPAL" "UNPAID" "VENMO" 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.
|
| readyInSeconds | integer or null (ReadyInSeconds) >= 0 Example: 600 Time in seconds when the order will be ready. This value incorporates the order |
| mpfOrderId | string (MpfOrderId) Example: "123456789" External References for the order. You can use this field to provide additional identifiers or any other string data to the order to be injected. A common use for this is to hold additional external order numbers, like receipt number or third party short order ID. |
required | object (OrderPlaced) Representation of an order placed by a customer |
{- "externalReferenceId": "string",
- "storeId": "42",
- "serviceMode": "TAKEOUT",
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
]
}, - "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "deliveryAddress": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5707 Blue Lagoon Drive",
- "instructions": "string",
- "locality": "Miami-Dade County",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "Blue Lagoon Drive",
- "streetNumber": "5707",
- "sublocality": "string",
- "subpremise": "Suite 101"
}, - "paymentMethod": "APPLE_PAY",
- "fireOrderInSeconds": 600,
- "readyInSeconds": 600,
- "mpfOrderId": "123456789"
}{- "data": {
- "id": "example-unique-id",
- "externalReferenceId": "string",
- "callbackUrl": "string"
}
}Menu updated 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.
When these "MENU_UPDATED" events are delivered, a request must be
made to the provided callbackUrl to fetch the latest store menu details.
| x-signature | string A hex encoded HMAC signature |
| brand required | string (Brand) Value: "BK" Example: "BK" |
| callbackUrl required | string <url> Example: "https://rbictg.com/api/v1/menus/41?servicemode=DELIVERY&version=1" URL from which the updated menu contents may be retrieved |
| 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" Webhook 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 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 |
| version required | string Unique ID for the menu iteration that triggered the update. Each store menu update for a store and service mode will include a unique version ID. |
{- "brand": "BK",
- "eventTime": "1991-02-11T20:30:19Z",
- "eventType": "MENU_UPDATED",
- "region": "US",
- "serviceMode": "TAKEOUT",
- "storeId": "42",
- "version": "string"
}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 |
| storeId required | string (StoreId) ^\d+$ Example: 42 Unique Store ID |
| serviceMode required | string (Service Mode) Enum: "CURBSIDE" "DELIVERY" "DRIVE_THRU" "EAT_IN" "TABLE_SERVICE" "TAKEOUT" Example: TAKEOUT Service mode |
| version | string Example: version=1 Menu version ID |
| 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. |
required | object (Menu) Store menu |
{- "data": {
- "meta": {
- "brand": "BK",
- "currency": "USD",
- "locale": "en_us",
- "serviceMode": "delivery",
- "version": "xyz1"
}, - "dayParts": [
- {
- "id": "breakfast",
- "daysOfWeek": [
- "saturday",
- "sunday"
], - "startTime": "07:00:00",
- "endTime": "22:00:00"
}
], - "rootMenuEntryId": "entry-id",
- "entries": [
- {
- "id": "entry-id",
- "referenceId": "entry-id",
- "type": "COMBO",
- "groupType": "ASPECT_OPTION",
- "name": "string",
- "description": "string",
- "available": true,
- "image": {
- "url": "string",
- "altText": "string"
}, - "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "options": {
- "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "defaultSelections": [
- "entry-id"
], - "displayType": "LIST",
- "entries": [
- {
- "amount": 0,
- "entryId": "entry-id"
}
]
}, - "dayParts": [
- "breakfast"
], - "nutrition": {
- "calories": {
- "default": 0,
- "displayType": "Range",
- "lowerRange": 0,
- "upperRange": 0
}, - "nutrients": [
- {
- "name": "SODIUM",
- "value": 0,
- "unit": "G"
}
], - "allergens": [
- {
- "allergen": "PEANUTS",
- "contains": 0
}
]
}, - "translations": [
- {
- "lang": "fr",
- "name": "Le Whopper.",
- "description": "Notre sandwich WHOPPER® est fait d'un quart de livre de savoureux bœuf grillé sur le feu, garni de tomates juteuses, de laitue fraîche, de mayonnaise onctueuse, de cornichons croquants et d'oignons blancs émincés.\nLe tout est servi sur un pain aux graines de sésame grillé à point.\n"
}
]
}
], - "systemWideOfferEntries": [
- {
- "id": "foo-offer-entity-id",
- "type": "SYSTEM_WIDE_OFFER",
- "name": "$5 Double Whopper and Small Fries",
- "description": "1 Double Whopper and 1 Small Fries",
- "availability": true,
- "discountType": "PERCENTAGE",
- "discountValue": 40,
- "loyaltyPoints": 100,
- "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "options": {
- "entries": [
- {
- "entryId": "entry-id",
- "type": "ENTRY"
}
]
}
}
], - "rewardEntries": [
- {
- "id": "foo-reward-entity-id",
- "type": "REWARD",
- "name": "4pc Nuggets",
- "description": "4pc Nuggets",
- "availability": true,
- "discountType": "PERCENTAGE",
- "discountValue": 40,
- "loyaltyPoints": "250",
- "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "options": {
- "entries": [
- {
- "entryId": "entry-id",
- "type": "ENTRY"
}
]
}
}
], - "configOfferEntries": [
- {
- "id": "entry-id",
- "type": "CONFIG_OFFER",
- "name": "string",
- "description": "string",
- "availability": true,
- "discountType": "PERCENTAGE",
- "discountValue": 40,
- "loyaltyPoints": "250",
- "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "options": {
- "entries": [
- {
- "entryId": "entry-id",
- "type": "ENTRY"
}
]
}
}
]
}
}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.
| x-signature | string A hex encoded HMAC signature |
| brand required | string (Brand) Value: "BK" Example: "BK" |
| 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 For the full list of codes, refer to the CLDR Chart. |
| storeId required | string (StoreId) ^\d+$ Example: "42" Unique Store ID |
{- "brand": "BK",
- "eventTime": "1991-02-11T20:30:19Z",
- "eventType": "STORE_UPDATED",
- "region": "US",
- "storeId": "42"
}Store (restaurant) details.
Use this endpoint get the full details of a specific store, including the Detailed Availability by service mode
| storeId required | string Unique ID representing a store |
| 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. |
required | object (Store) Information about a store |
{- "data": {
- "availability": {
- "isEnabled": [
- {
- "id": "TAKEOUT",
- "value": true
}
], - "isOpen": true
}, - "franchiseGroupName": "Acme Group",
- "location": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5701 BLUE LAGOON DR, MIAMI, FL 33126",
- "locality": "MIAMI",
- "phoneNumber": "555-555-5555",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "5701 BLUE LAGOON DR"
}, - "name": "Example test lab",
- "posVendor": "BRINK",
- "serviceHour": [
- {
- "serviceMode": "TAKEOUT",
- "timeSlots": [
- {
- "closes": "1991-02-11 23:59:00",
- "date": "1991-02-11",
- "isClosed": true,
- "opens": "1991-02-11 00:00:00"
}
], - "weekdayHours": [
- {
- "text": "Sunday: 12:00 AM - 11:59 PM"
}
]
}
], - "storeId": "42",
- "timezone": "America/New_York"
}
}This endpoint is used to update the status of a store.
| storeId required | string Unique ID representing a store |
| reason | string (Reason) Example: "store was deactivated due to high error rate" Reason for the change in store status |
| 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 For the full list of codes, refer to the CLDR Chart. |
| storeStatus required | string (StoreStatus) Enum: "ACTIVE" "INACTIVE" The current marketplace status of the store |
| updatedAt required | string <ISO 8601 Date Time> (DateTime) Example: "1991-02-11T20:30:19Z" |
{- "reason": "store was deactivated due to high error rate",
- "region": "US",
- "storeStatus": "ACTIVE",
- "updatedAt": "1991-02-11T20:30:19Z"
}{- "status": 400,
- "code": "ValidationError",
- "message": "isAvailable must be a boolean value",
- "errors": [
- {
- "code": "ValidationError",
- "details": "string",
- "message": "string",
- "domain": "string",
- "location": "isAvailable",
- "locationType": "requestBody",
- "sendReport": "string",
- "extendedHelp": "string"
}
]
}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
| limit | integer (Limit) [ 1 .. 100 ] Default: 20 Example: limit=10 Number of results to fetch |
| cursor | string (Cursor) Example: cursor=cursor-id Pagination cursor |
| 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. |
object | |
required | Array of objects (Store) |
{- "meta": {
- "cursor": "cursor-id"
}, - "data": [
- {
- "availability": {
- "isEnabled": [
- {
- "id": "TAKEOUT",
- "value": true
}
], - "isOpen": true
}, - "franchiseGroupName": "Acme Group",
- "location": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5701 BLUE LAGOON DR, MIAMI, FL 33126",
- "locality": "MIAMI",
- "phoneNumber": "555-555-5555",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "5701 BLUE LAGOON DR"
}, - "name": "Example test lab",
- "posVendor": "BRINK",
- "serviceHour": [
- {
- "serviceMode": "TAKEOUT",
- "timeSlots": [
- {
- "closes": "1991-02-11 23:59:00",
- "date": "1991-02-11",
- "isClosed": true,
- "opens": "1991-02-11 00:00:00"
}
], - "weekdayHours": [
- {
- "text": "Sunday: 12:00 AM - 11:59 PM"
}
]
}
], - "storeId": "42",
- "timezone": "America/New_York"
}
]
}| id required | string (OrderId) Example: "example-unique-id" Internal order ID | ||||||||||||||||||
| externalReferenceId | string (ExternalReferenceId) External reference ID. An example might be the external menu selection ID, customer ID or order ID. | ||||||||||||||||||
| storeId required | string (StoreId) ^\d+$ Example: "42" Internal store ID | ||||||||||||||||||
required | object (CartPriced) Cart containing a customer's selections from the menu with prices | ||||||||||||||||||
| 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 (Customer) Customer personal details | ||||||||||||||||||
required | object (Charges) Order pricing details | ||||||||||||||||||
Array of objects (Discounts) Any discounts which ought to be applied to the order | |||||||||||||||||||
object (Payment) | |||||||||||||||||||
| posVendor required | string (PosVendor) Enum: "BRINK" "CARROLS" "NCR" "QDI" "SICOM" The posVendor that is processing the order | ||||||||||||||||||
| 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.
| ||||||||||||||||||
object (Address) Where the order will be delivered (only delivery orders) | |||||||||||||||||||
| loyaltyPointsEarned | integer >= 0 Example: 15 Amount of Loyalty Points earned on this order | ||||||||||||||||||
Array of objects (Order Error) Any errors which occurred during order processing | |||||||||||||||||||
| createdAt required | string <ISO 8601 Date Time> (DateTime) Example: "1991-02-11T20:30:19Z" When the order was first created | ||||||||||||||||||
| updatedAt required | string <ISO 8601 Date Time> (DateTime) Example: "1991-02-11T20:30:19Z" When the order was last updated | ||||||||||||||||||
| 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.
| ||||||||||||||||||
| preparationTimeInSeconds required | integer >= 0 Example: 300 Estimated time it takes to prepare an order | ||||||||||||||||||
| readyInSeconds required | integer or null (ReadyInSeconds) >= 0 Example: 600 Time in seconds when the order will be ready. This value incorporates the order |
{- "id": "example-unique-id",
- "externalReferenceId": "string",
- "storeId": "42",
- "cart": {
- "menuSelections": [
- {
- "id": "item_42",
- "referenceId": "item_603",
- "externalReferenceId": "string",
- "quantity": 1,
- "price": {
- "currency": "USD",
- "amount": 100
}, - "menuSelections": [
- { }
]
}
], - "feedback": [
- {
- "entryId": "entry-id",
- "isAvailable": true,
- "price": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "serviceMode": "TAKEOUT",
- "customer": {
- "id": "string",
- "externalReferenceId": "string",
- "name": "string",
- "username": "string",
- "phone": "+12223334444",
- "email": "user@example.com"
}, - "charges": {
- "tax": {
- "currency": "USD",
- "amount": 100
}, - "mpfTax": {
- "taxRemittedByMpf": {
- "currency": "USD",
- "amount": 100
}, - "isTaxRemittedByMpf": true
}, - "subTotal": {
- "currency": "USD",
- "amount": 100
}, - "total": {
- "currency": "USD",
- "amount": 100
}, - "fees": [
- {
- "type": "BAG_FEE",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
]
}, - "discounts": [
- {
- "type": "DISCOUNT",
- "total": {
- "currency": "USD",
- "amount": 100
}
}
], - "payment": {
- "paymentMethod": "APPLE_PAY"
}, - "posVendor": "BRINK",
- "status": "CREATED",
- "deliveryAddress": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5707 Blue Lagoon Drive",
- "instructions": "string",
- "locality": "Miami-Dade County",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "Blue Lagoon Drive",
- "streetNumber": "5707",
- "sublocality": "string",
- "subpremise": "Suite 101"
}, - "loyaltyPointsEarned": 15,
- "errors": [
- {
- "message": "TERMINAL UPDATE IN PROGRESS",
- "code": "STORE"
}
], - "createdAt": "1991-02-11T20:30:19Z",
- "updatedAt": "1991-02-11T20:30:19Z",
- "fireOrderInSeconds": 600,
- "preparationTimeInSeconds": 300,
- "readyInSeconds": 600
}required | object Metadata about the menu document |
required | Array of objects (Menu availability) Categories of menu availability by day and time |
| rootMenuEntryId required | string (EntryId) Example: "entry-id" Reference to root menu entry |
required | Array of objects (Entry) All valid menu entries |
Array of objects (SystemWideOfferEntry) All System-Wide Offer Entries | |
Array of objects (RewardEntry) All Reward Entries | |
Array of objects (ConfigOfferEntry) All Config Offer Entries |
{- "meta": {
- "brand": "BK",
- "currency": "USD",
- "locale": "en_us",
- "serviceMode": "delivery",
- "version": "xyz1"
}, - "dayParts": [
- {
- "id": "breakfast",
- "daysOfWeek": [
- "saturday",
- "sunday"
], - "startTime": "07:00:00",
- "endTime": "22:00:00"
}
], - "rootMenuEntryId": "entry-id",
- "entries": [
- {
- "id": "entry-id",
- "referenceId": "entry-id",
- "type": "COMBO",
- "groupType": "ASPECT_OPTION",
- "name": "string",
- "description": "string",
- "available": true,
- "image": {
- "url": "string",
- "altText": "string"
}, - "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "options": {
- "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "defaultSelections": [
- "entry-id"
], - "displayType": "LIST",
- "entries": [
- {
- "amount": 0,
- "entryId": "entry-id"
}
]
}, - "dayParts": [
- "breakfast"
], - "nutrition": {
- "calories": {
- "default": 0,
- "displayType": "Range",
- "lowerRange": 0,
- "upperRange": 0
}, - "nutrients": [
- {
- "name": "SODIUM",
- "value": 0,
- "unit": "G"
}
], - "allergens": [
- {
- "allergen": "PEANUTS",
- "contains": 0
}
]
}, - "translations": [
- {
- "lang": "fr",
- "name": "Le Whopper.",
- "description": "Notre sandwich WHOPPER® est fait d'un quart de livre de savoureux bœuf grillé sur le feu, garni de tomates juteuses, de laitue fraîche, de mayonnaise onctueuse, de cornichons croquants et d'oignons blancs émincés.\nLe tout est servi sur un pain aux graines de sésame grillé à point.\n"
}
]
}
], - "systemWideOfferEntries": [
- {
- "id": "foo-offer-entity-id",
- "type": "SYSTEM_WIDE_OFFER",
- "name": "$5 Double Whopper and Small Fries",
- "description": "1 Double Whopper and 1 Small Fries",
- "availability": true,
- "discountType": "PERCENTAGE",
- "discountValue": 40,
- "loyaltyPoints": 100,
- "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "options": {
- "entries": [
- {
- "entryId": "entry-id",
- "type": "ENTRY"
}
]
}
}
], - "rewardEntries": [
- {
- "id": "foo-reward-entity-id",
- "type": "REWARD",
- "name": "4pc Nuggets",
- "description": "4pc Nuggets",
- "availability": true,
- "discountType": "PERCENTAGE",
- "discountValue": 40,
- "loyaltyPoints": "250",
- "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "options": {
- "entries": [
- {
- "entryId": "entry-id",
- "type": "ENTRY"
}
]
}
}
], - "configOfferEntries": [
- {
- "id": "entry-id",
- "type": "CONFIG_OFFER",
- "name": "string",
- "description": "string",
- "availability": true,
- "discountType": "PERCENTAGE",
- "discountValue": 40,
- "loyaltyPoints": "250",
- "price": {
- "default": 0,
- "max": 0,
- "min": 0
}, - "quantityConstraints": {
- "defaultAmount": 0,
- "minAmount": 0,
- "maxAmount": 0
}, - "options": {
- "entries": [
- {
- "entryId": "entry-id",
- "type": "ENTRY"
}
]
}
}
]
}required | object (Available) True if the store is available for ordering. |
| franchiseGroupName | string Example: "Acme Group" Store franchise group name. |
required | object (Location) Information about a store location. |
| name required | string Example: "Example test lab" Store name |
| posVendor required | string (PosVendor) Enum: "BRINK" "CARROLS" "NCR" "QDI" "SICOM" The posVendor that is processing the order |
required | Array of objects (ServiceHour) Store operating hours by serviceMode |
| storeId required | string (StoreId) ^\d+$ Example: "42" Unique Store ID |
| timezone required |
{- "availability": {
- "isEnabled": [
- {
- "id": "TAKEOUT",
- "value": true
}
], - "isOpen": true
}, - "franchiseGroupName": "Acme Group",
- "location": {
- "administrativeArea": "FL",
- "coordinates": {
- "latitude": 25.782379,
- "longitude": -80.289207
}, - "formattedAddress": "5701 BLUE LAGOON DR, MIAMI, FL 33126",
- "locality": "MIAMI",
- "phoneNumber": "555-555-5555",
- "postalCode": "33126",
- "regionCode": "US",
- "route": "5701 BLUE LAGOON DR"
}, - "name": "Example test lab",
- "posVendor": "BRINK",
- "serviceHour": [
- {
- "serviceMode": "TAKEOUT",
- "timeSlots": [
- {
- "closes": "1991-02-11 23:59:00",
- "date": "1991-02-11",
- "isClosed": true,
- "opens": "1991-02-11 00:00:00"
}
], - "weekdayHours": [
- {
- "text": "Sunday: 12:00 AM - 11:59 PM"
}
]
}
], - "storeId": "42",
- "timezone": "America/New_York"
}| 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": [
- {
- "code": "ValidationError",
- "details": "string",
- "message": "string",
- "domain": "string",
- "location": "isAvailable",
- "locationType": "requestBody",
- "sendReport": "string",
- "extendedHelp": "string"
}
]
}