Availability
5 API calls in this section.
Set Location State
/restaurant/locations/:locationId/stateToggles operational state for a location. When is_manual_mode=true, manual_is_open controls open/closed regardless of schedules.
1curl --request POST "$ONDI_BASE_URL/restaurant/locations/:locationId/state" \2 --header "Authorization: Bearer {{access_token}}" \3 --header "Content-Type: application/json" \4 --data '{5 "is_manual_mode": true,6 "manual_is_open": false7}'1{2 "is_manual_mode": true,3 "manual_is_open": false4}Path parameters
locationIdRequiredRequest body fields
is_manual_modeExampleExample field from the request body.
manual_is_openExampleExample field from the request body.
Headers
AuthorizationOptionalBearer {{access_token}}
Responses
1{2 "success": true,3 "data": {4 "id": "{{locationId}}",5 "is_manual_mode": true,6 "manual_is_open": false,7 "availability_version": 428 }9}Set Menu State
/restaurant/menus/:menuId/stateSet a menu to automatic (schedule-driven) or manual (manual_is_active=true/false). Bumps location availability_version by trigger.
1curl --request POST "$ONDI_BASE_URL/restaurant/menus/:menuId/state" \2 --header "Authorization: Bearer {{access_token}}" \3 --header "Content-Type: application/json" \4 --data '{5 "activation_mode": "manual",6 "manual_is_active": true7}'1{2 "activation_mode": "manual",3 "manual_is_active": true4}Path parameters
menuIdRequiredRequest body fields
activation_modeExampleExample field from the request body.
manual_is_activeExampleExample field from the request body.
Headers
AuthorizationOptionalBearer {{access_token}}
Responses
1{2 "success": true,3 "data": {4 "id": "{{menuId}}",5 "location_id": "{{locationId}}",6 "activation_mode": "manual",7 "manual_is_active": true8 }9}List Active Menus
/restaurant/locations/:locationId/menus/activeReturns menus active 'now' in the location time zone. Manual active menus are included.
1curl --request GET "$ONDI_BASE_URL/restaurant/locations/:locationId/menus/active" \2 --header "Authorization: Bearer {{access_token}}"Path parameters
locationIdRequiredHeaders
AuthorizationOptionalBearer {{access_token}}
Responses
1{2 "success": true,3 "data": [4 {5 "id": "{{menuId}}",6 "location_id": "{{locationId}}",7 "name": {8 "en": "Lunch"9 },10 "activation_mode": "automatic",11 "manual_is_active": false12 }13 ]14}List Available Products (now)
/restaurant/locations/:locationId/products/available?category_id={{category_id}}&limit=12&page=1Lists currently available products (Location Open ∧ Any Menu Active ∧ Product Enabled) using optimized RPC.
1curl --request GET "$ONDI_BASE_URL/restaurant/locations/:locationId/products/available?category_id={{category_id}}&limit=12&page=1" \2 --header "Authorization: Bearer {{access_token}}"Path parameters
locationIdRequiredQuery parameters
category_idOptional{{category_id}}
limitOptional12
pageOptional1
Headers
AuthorizationOptionalBearer {{access_token}}
Responses
1{2 "success": true,3 "data": [4 {5 "id": "{{productId}}",6 "location_id": "{{locationId}}",7 "category": {8 "id": "{{category_id}}",9 "name": {10 "en": "Burgers"11 }12 },13 "name": {14 "en": "Cheeseburger"15 },16 "description": {},17 "is_active": true,18 "images": [],19 "primary_variant": {20 "id": "{{variantId}}",21 "price": 8.99,22 "is_primary": true23 },24 "variant_count": 2,25 "created_at": "2025-11-10T10:00:00Z"26 }27 ],28 "page": 1,29 "limit": 1230}List Available Products (at)
/restaurant/locations/:locationId/products/available?at=2025-12-25T12:00:00ZLists available products at a specific timestamp (time-travel) using RPC.
1curl --request GET "$ONDI_BASE_URL/restaurant/locations/:locationId/products/available?at=2025-12-25T12:00:00Z" \2 --header "Authorization: Bearer {{access_token}}"Path parameters
locationIdRequiredQuery parameters
atOptional2025-12-25T12:00:00Z
Headers
AuthorizationOptionalBearer {{access_token}}
Responses
1{2 "success": true,3 "data": [ ... ],4 "page": 1,5 "limit": 126}