The Menus API provides all the functionality required to create and manage the menus of any food related business, such as restaurants, food trucks, meal prep, and catering. It includes dedicated support for food catalog management, such as labels, modifiers, price variants, and more.
The Menus API contains the following APIs:
It's important to note the following point before starting to code:
Entities in this API can be linked to one or, in certain cases, multiple restaurant locations. To learn how this information is managed, see About Business Locations.
You can create menus without location information and ordering functionality just to showcase restaurant offerings.
Each item, item modifier, item variant, item modifier group, and item label can be shared between different instances of its parent entity. For example, an item can be used in multiple sections, and an item modifier can be used in multiple item modifier groups.
If a restaurant has multiple locations all serving the same exact items, they can simplify item management by using the same items and their sub-entities across each related menu section. Then, when an item is changed, that change is reflected across every menu at every location.
The Menus API supports multiple layers of availability control to give you flexibility in managing when menu items are available for ordering. Availability can be configured for entire menus, entire sections, and individual items.
For an item to be available for ordering, it must be available at all levels. That means the menu and section containing the item must be available, as well as the item itself. A lower level availability setting doesn't override higher level restrictions. For example, if a menu is unavailable, items within that menu won't be available regardless of their individual availability settings.
You don't need to use all availability levels. For example, you could choose to configure availability only at the menu and item level, skipping section-level availability.
Be careful when configuring availability settings across multiple levels, as misconfiguration can prevent items from being available when you expect them to be. Always verify that your availability settings work together as intended.