Menu Integration

Overview

Integrating a menu involves using Menu API endpoints to upload a menu and update availability of these menus to Grubtech. This ensures that the menu is accurately represented with real-time information on what items are available in a specific store.

  1. The Upload Menu endpoint is used to create a menu, along with its associated modifiers, for a specific store.
  2. The Update Availability endpoint is used to update availability of a menu item in a specified menu that is connected to a store.

Menu Flow

Upload Menu

Purpose: Create a menu or update an existing menu on the Grubtech platform.

Request: Send a request with the details of the menu.
Processing: The server processes the request and creates a new menu or updates an existing menu.
Response: The server acknowledges with a successful or failed response.

Update Availability

Purpose: Update the availability information of a specific menu item in a specified menu that is connected to a store.

Request: Send a request specifying the menu and specific menu items and their new availability status for a specific store.
Processing: The server processes the request and updates the availability status of the specified items.
Response: The server responds with the status of the availability update.

Menu APIs

The Upload Menu endpoint is used to create a menu on the Grubtech platform for a specific store. This process includes submitting details about each menu, with the following details:

  • id - A unique identification for the menu.
  • name - Provide the name of the menu.
  • description - Provide a description regarding the menu.
  • imageUrl - Provide a URL pointing to an image of the item.
  • currencyCode - Set the currency code that's applicable for this menu.
  • storeIds - A unique identification for each store that offers this menu.
  • externalData - An optional text field that can be used for POS integrations.
  • items - Lists the items in the menu.
  • modifierGroups - List the modifier groups in the menu.
  • categories - Lists the categories in the menu.

In order to prepare a menu, you should have better understanding of the main components that comprise of the menu:

Menu

The Menu is used to group one or more categories with corresponding category types into a single view. Generally, only one menu is active in a store at a given time. A store can optionally also have separate menus for different fulfillment types (delivery, pick-up).

Category

The category is used to group one or more menu items (type=item) into a single logical section of a menu. (eg. Breakfast, Dinner).

Item

The Item is used to represent everything that a user might select from a store (e.g. an appetizer; a can of soda; a dessert; a pizza topping; a condiment). An item can also be a menu item or a modifier.

Modifier Group

The Modifier Group is used to group items together to select as a customization under a parent item (e.g. “Pizza Toppings”, a modifier group might have “Mushroom” and “Peppers” items as options within it). Different modifier groups can optionally leverage the same items.

The Update Availability endpoint is designed to update the availability information of a specific menu item in a specified menu that is connected to a store. This endpoint ensures real-time information on which items are currently available or out of stock.

This process includes submitting the following details:

  • menuId - A unique identifier for a menu.
  • itemId - A unique identifier for an item.
  • storeId - The store id where the items are associated with.
  • availability - The availability types for an item.

This endpoint is essential for maintaining accurate menu information to display the current status of menu items.

POS Platforms Supporting Nested Modifiers

If your POS platform supports nested modifiers in the menu, follow the process defined to include nested modifiers in the payload. Nested modifiers in a POS (Point of Sale) system allow for complex customization of orders by enabling customers to choose options within options. This functionality is especially useful in the food industries, where customers might want to personalize their orders extensively.

Here's an example of a nested modifier that a POS system can support. Your nested modifier group here is Pizza Toppings. Within this modifier group you will find the nested modifiers:

Pizza Toppings:
Cheese:

  • Mozzarella
  • Cheddar
  • Vegan Cheese

Vegetables:

  • Bell Peppers
  • Onions
  • Olives

Meats:

  • Pepperoni
  • Sausage
  • Bacon

1. Define the Nested Modifier(s)

  • In the payload's item array, define the nested modifier(s) as MODIFIER objects.

2. Create a Nested Modifier Group

  • Create a new modifier group dedicated to your nested modifier(s) within the modifier group array. This group will hold the nested modifier(s) you defined in the previous step.

3. Include Created Nested Modifier ID in the Modifier Group

  • Add the ID of the nested modifier(s) you defined in step 1, into the nested modifier group, you created in step 2. This links the nested modifier(s) to the specific nested modifier group.

4. Create a Parent Modifier with a Nested Modifier Group

  • Create the parent modifier. It contains the nested modifier group you created earlier.
  • In the item array, define the parent modifier as an ITEM object.
  • In the modifier group array of this parent modifier (which is defined as an item), specify the ID of the nested modifier group you created in step 2.

5. Create a Parent Modifier Group

  • Create a new modifier group dedicated to your parent modifier(s) within the modifier group array. This group holds the parent modifier(s) you defined in the previous step.
    Note: Parent modifier group can accommodate both nested and regular modifier(s).

6. Include the Parent Modifier Group in the Main Menu Item

  • Create the main menu item. It contains the parent modifier group you created in step 5.
  • In the main item object, define the parent modifier group ID in the modifier group array.
Image

Refer the section Menu Request to Create a Full Menu example payload for more details.