Skip to main content

Menus

Browse Restaurant Menu (Public)

Public API

Restaurant browsing endpoints are publicly accessible. No authentication required.

GET /v1/restaurants/:restaurant_id/menu

Browse a restaurant's menu without authentication. Ideal for customer-facing apps and online ordering.

curl https://dev.api.olympuscloud.ai/v1/restaurants/550e8400-e29b-41d4-a716-446655449110/menu
EndpointDescription
GET /v1/restaurants/:id/menu/categoriesList menu categories
GET /v1/restaurants/:id/menu/itemsList all menu items
GET /v1/restaurants/:id/menu/items/:item_idGet specific menu item
GET /v1/restaurants/:id/menu/pricingGet menu pricing

Authenticated API

Menu management endpoints require a valid JWT Bearer token with staff roles.

List Menus

GET /v1/commerce/menus

curl https://dev.api.olympuscloud.ai/v1/commerce/menus \
-H "Authorization: Bearer $TOKEN"

Create Menu

POST /v1/commerce/menus

FieldTypeRequiredDescription
namestringYesMenu name (e.g., "Lunch Menu")
descriptionstringNoMenu description
currencystringYesISO 4217 currency code
location_idstring (UUID)NoLocation-specific menu
metadataobjectNoCustom metadata
curl -X POST https://dev.api.olympuscloud.ai/v1/commerce/menus \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "Dinner Menu",
"currency": "USD",
"description": "Evening dining selections"
}'

Response

{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tenant_id": "550e8400-e29b-41d4-a716-446655449100",
"name": "Dinner Menu",
"description": "Evening dining selections",
"currency": "USD",
"is_active": true,
"metadata": {},
"created_at": "2026-02-19T15:30:00Z",
"updated_at": "2026-02-19T15:30:00Z"
}

Create Menu Item

POST /v1/menu/items

FieldTypeRequiredDescription
menu_idstring (UUID)YesParent menu
namestringYesItem name
pricenumberYesPrice
currencystringYesCurrency code
descriptionstringNoItem description
category_idstring (UUID)NoCategory to place item in
tagsarray of stringsNoTags like ["vegetarian", "gluten-free"]
allergensarray of stringsNoAllergens like ["peanuts", "dairy"]
skustringNoPOS SKU code
plustringNoPrice Look-Up code
image_urlstringNoPrimary image URL
display_orderintegerNoSort order within category
curl -X POST https://dev.api.olympuscloud.ai/v1/menu/items \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"menu_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Margherita Pizza",
"price": 14.99,
"currency": "USD",
"description": "Fresh mozzarella, tomato sauce, basil",
"tags": ["vegetarian"],
"allergens": ["dairy", "gluten"]
}'

Response

{
"id": "d4e5f6a7-b8c9-0123-defg-456789012345",
"menu_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tenant_id": "550e8400-e29b-41d4-a716-446655449100",
"name": "Margherita Pizza",
"description": "Fresh mozzarella, tomato sauce, basil",
"price": 14.99,
"currency": "USD",
"tags": ["vegetarian"],
"allergens": ["dairy", "gluten"],
"is_active": true,
"is_86ed": false,
"display_order": 0,
"created_at": "2026-02-19T15:30:00Z",
"updated_at": "2026-02-19T15:30:00Z"
}

Get Menu Item

GET /v1/menu/items/:id

curl https://dev.api.olympuscloud.ai/v1/menu/items/d4e5f6a7-b8c9-0123-defg-456789012345 \
-H "Authorization: Bearer $TOKEN"

Update Menu Item

PATCH /v1/menu/items/:id

curl -X PATCH https://dev.api.olympuscloud.ai/v1/menu/items/ITEM_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"price": 15.99}'

Update Availability (86 an Item)

PATCH /v1/menu/items/:id/availability

Mark an item as unavailable ("86'd" in restaurant terminology):

curl -X PATCH https://dev.api.olympuscloud.ai/v1/menu/items/ITEM_ID/availability \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"is_86ed": true, "eighty_six_reason": "Out of fresh basil"}'

Delete Menu Item

DELETE /v1/menu/items/:id

curl -X DELETE https://dev.api.olympuscloud.ai/v1/menu/items/ITEM_ID \
-H "Authorization: Bearer $TOKEN"

GET /v1/menu/categories

curl https://dev.api.olympuscloud.ai/v1/menu/categories \
-H "Authorization: Bearer $TOKEN"

Response

[
{
"id": "cat-uuid-1",
"menu_id": "menu-uuid",
"name": "Appetizers",
"description": "Start your meal",
"display_order": 1,
"is_active": true,
"children": [],
"items": [...]
},
{
"id": "cat-uuid-2",
"menu_id": "menu-uuid",
"name": "Entrees",
"display_order": 2,
"is_active": true,
"children": [],
"items": [...]
}
]

Categories support nesting via the parent_id field, allowing subcategories like "Entrees > Pasta" or "Drinks > Wine > Red Wine".