This applies to all entity types that have menus: restaurants, nightlife, spa/salon.
A restaurant with menus has at least one menu category that contains at least one menu.
Menus have at least one section.
Sections can contain menu items (things you can order). Sections may also contain sub-sections that contain menu items.
Menus have names. They optionally can have a description and/or a disclaimer.
Sections optionally can have a name, a description, and/or a disclaimer.
Sub-sections can have names, but not descriptions or disclaimers.
Menu items have names. They optionally can have a description and/or a price. Prices are strings with no format requirement.
This is the conceptual structure in a pseudo-code object format:
Restaurant menu categories [
{
Menu category name,
Menus [
{
Menu name,
Menu description (optional),
Menu disclaimer (optional)
Sections [
{
Section name (optional),
Section description (optional),
Section disclaimer (optional),
Items (optional) [
{
Item name,
Item description (optional),
Item price (optional)
}
],
Sub-sections (optional) [
{
Sub-section name (optional),
Items [
{
Item name,
Item description (optional),
Item price (optional)
}
]
}
]
}
]
}
]
}
]
Below is some sample output. It does not contain all possible optional attributes. Important: menus, sections, and sub-sections all have the attribute name sections.
{
"menuCategories": [
"category": "Cuisine",
"sections": [ //array of menus
{
"name": "Dinner",
"desc": "Traditional Italian delights",
"disclaimer": "All prices and menu options subject to change. Holidays are subject to special menus and pricing.",
"sections": [ //array of sections
{ //section that contains items, but no sub-sections
"name": "Insalate — Salads",
"items": [
{
"name": "Polpa de Granchio E Farro",
"desc": "crabmeat | organic quinoa |\nbaby greens\n"
}
]
},
{ //section that contains only sub-sections
"name": "Crostini, Focaccine, Pizzette",
"sections": [
{ //sub-section
"name": "Crostini — Toasted Bread",
"items": [
{
"name": "Fegatini di Pollo",
"desc": "chicken liver | capers | pepperoncino",
"price": "12"
},
{
"name": "Bruschetta al Pomodoro",
"desc": "tomatoes | basil | garlic oil",
"price": "9.50"
}
]
}
]
}
]
}
]
]
}
Use menu/section/sub-section names as titles or headings.
Display a menu's or section's description before any child entities.
Display a menu's or section's disclaimer after any child entities.
Preserve the order of array elements in the Content API output.
If a section contains both items and sub-sections, display the items before the sub-sections. The items effectively become a first sub-section without a heading.
It is expected that section names appear more prominently than sub-section names. Given Content API output, these would be identified based on hierarchy depth. Displaying 3c4b86c9eb7807b32fa05822094e9eb5b25fb9981fd347eafb04e0e3ed7ec95d.download.