Menu Management - API Actions
This page contains all the API actions related to the menu.
Contents
After guests have selected a store for in-restaurant orders or inputted a delivery address (different service modes), they will navigate through the menu.
For menu content, Sanity is the source of the truth.
For pricing & availability (P&A), this document focuses on the scenarios where the source of truth is the POS.
The menu content is mostly managed on a brand/market-level (e.g. Burger King UK) whereas pricing & availability is more granularly managed on restaurant-level.
The Brand Menu refers to the global menu in a given brand/market for content, whereas the Store Menu refers to the restaurant-level menu for pricing & availability.
Before moving into the API Actions, there are 3 important parameters to clarify:
Channel - The touchpoint where the guest interacts with our platforms. For example, whitelabel (web and mobile), Kiosk, Glovo, UberEats. For Menu API actions, this parameter is a string without pre-defined enums.
Service mode - The mode (way) the guests are being served. In most Menu API Actions, this parameter is an enum. While some APIs have these enums defined on a higher-level with values
"pickup"
"delivery"
, some have it on a more granular level with values"CURBSIDE"
"DELIVERY"
"DRIVE_THRU"
"EAT_IN"
"TABLE_SERVICE"
"TAKEOUT"
."pickup"
refers to In-Restaurant in general (Pickup, Dine-In, Drive-Thru, Table Service, Curbside).Store Id - A unique identifier within RBI for each restaurant.
API Actions - Brand Menu
GET Brand Menu Endpoint
The GET Brand Menu endpoint is used to retrieve the full brand menu for a given channel. The brand menu is not store specific, but it is the source of menu content used to generate the store menu. Different than the store menu, the brand menu does not have any pricing & availability information.
This endpoint is used when the vendor needs the menu content for populating various touchpoints. Some examples of these touchpoints are aggregator platforms (e.g. Uber Eats) or kiosks. The POS or vendor needs to indicate what channel
they want to pull the menu for.
Menu Content Updated Webhook
Menu Content Updated events are dispatched when there are changes to content in the Content Management System (Sanity). This webhook provides information with what ids were created, updated or deleted for any menu document, including menu items, offers and rewards. Sanity documents that aren’t menu-related won’t be broadcasted in this webhook.
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.
This webhook boradcasts changes to the brand menu since the content is not store nor service mode specific, the store id or service mode aren’t present in the payload.
API Actions - Store Menu
To ensure guests are seeing the correct pricing and availability, the POS must indicate whether each PLU is available or not for each store and service mode (delivery or pickup). If the PLU is available, the POS must provide a price for it.
Receiving data for each service mode is needed in all cases, even if the POS does not manage delivery and pickup availability separately.
GET Store Menu PLUs Endpoint
This endpoint retrieves price & availability for all entries in the store's menu by PLU for a given service mode (delivery or pickup), as well as additional version metadata referring to the latest version of the menu.
The plus
query parameter in the endpoint allows you to specify a list of PLUs (e.g. plus=1000&plus=1001
) to filter the results in case the whole store menu is not needed.
This endpoint requires these parameters to return a response: storeId
, serviceMode
and channel
.
Store Menu Version Webhook
Store Menu Version events are dispatched via this webhook 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.
You will observe eventType: "MENU_PRICES_AVAILABILITY_UPDATE"
being delivered to provide an object containing the current status and which operation happened.
The changes in data will be classified as:
"created": [],
"deleted": [],
"updated": [],
Note that this webhook is different to the https://rbictg.atlassian.net/wiki/spaces/RDP/pages/5285970207/Menu+Management+-+API+Actions#Menu-Event-Webhook, Store Menu Version events also contain information on which data has changed and therefore removes the need to have a full sync of the menu for every update as that is a lengthy process.
GET Store Menu Diff Endpoint
For a given store, serviceMode and channel combination, this endpoint 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.
The https://rbictg.atlassian.net/wiki/spaces/RDP/pages/5285970207/Menu+Management+-+API+Actions#Store-Menu-Version-Webhook will trigger whenever there’s a change to a store menu
That webhook provides all the information on the menu changes, including a version change number.
With that version change number, you can use the https://rbictg.atlassian.net/wiki/spaces/RDP/pages/5285970207/Menu+Management+-+API+Actions#GET-Store-Menu-Diff-Endpoint to pull again a ‘report’ of what changed in the menu for a specific store, service mode and channel.
This endpoint is therefore usually used in conjunction with the https://rbictg.atlassian.net/wiki/spaces/RDP/pages/5285970207/Menu+Management+-+API+Actions#Store-Menu-Version-Webhook .
Update (PUT) Store Menu PLUs Endpoint
This endpoint allows updating multiple PLU pricing & availability values for multiple stores for a given service mode and channel. In the request body, the partner can specify plus
, region
, channel
, serviceMode
and storeIds
. storeIds
supports an array of strings, whereas plus
is an array of objects specifying the values of availability, price and PLU.
Menu Event Webhook
This webhook is a more generic webhook similar to the https://rbictg.atlassian.net/wiki/spaces/RDP/pages/5285970207/Menu+Management+-+API+Actions#Store-Menu-Version-Webhook .
It is being published upon menu pricing & availability changes, however it doesn’t specify which data points have specifically changed. Therefore, upon receiving this webhook update, vendors usually do a full sync of the menu to fetch the most up-to-date version of the menu,