Catalog
Commerce7 basis: Products, Collections, and Departments. This slice supports restaurant menu items, retail SKUs, modifiers, and gift card products.
Query Parameters
Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/products" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "products": [ { "id": "string", "internalKey": "string", "barcode": "string", "sku": "string", "title": "string", "description": "string", "posLabel": "string", "kitchenLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "imageUrls": [ "string" ], "tags": [ { "id": "string", "name": "string" } ], "salesCategory": "string", "plu": "string", "calories": 0, "nutrition": { "calories": 0 }, "unitOfMeasure": "string", "guestCount": 0, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "string" }, "weight": { "value": 0, "unit": "string" }, "sortOrder": 0, "discountable": true, "deferredRevenue": true, "contentAdvisories": { "containsAlcohol": true }, "taxRateIds": [ "string" ], "overrideItemTaxRates": true, "kind": "restaurant_menu_item", "status": "draft", "category": "string", "price": 0, "pricingStrategy": "base", "taxCode": "food", "modifierGroupIds": [ "string" ], "trackInventory": true, "availableLocationIds": [ "string" ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepTimeSeconds": 0, "portionIds": [ "string" ], "sizePricing": [ { "sizeName": "string", "price": 0 } ], "stockState": { "mode": "in_stock", "quantityRemaining": 0, "locations": [ { "locationId": "string", "mode": "in_stock", "quantityRemaining": 0 } ] }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "metadata": { "property1": null, "property2": null }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "page": { "total": 0 }}Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/products" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "sku": "string", "title": "string", "kind": "restaurant_menu_item", "category": "string", "price": 0, "taxCode": "food", "trackInventory": true, "availableLocationIds": [ "string" ] }'{ "id": "string", "internalKey": "string", "barcode": "string", "sku": "string", "title": "string", "description": "string", "posLabel": "string", "kitchenLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "imageUrls": [ "string" ], "tags": [ { "id": "string", "name": "string" } ], "salesCategory": "string", "plu": "string", "calories": 0, "nutrition": { "calories": 0 }, "unitOfMeasure": "string", "guestCount": 0, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "string" }, "weight": { "value": 0, "unit": "string" }, "sortOrder": 0, "discountable": true, "deferredRevenue": true, "contentAdvisories": { "containsAlcohol": true }, "taxRateIds": [ "string" ], "overrideItemTaxRates": true, "kind": "restaurant_menu_item", "status": "draft", "category": "string", "price": 0, "pricingStrategy": "base", "taxCode": "food", "modifierGroupIds": [ "string" ], "trackInventory": true, "availableLocationIds": [ "string" ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepTimeSeconds": 0, "portionIds": [ "string" ], "sizePricing": [ { "sizeName": "string", "price": 0 } ], "stockState": { "mode": "in_stock", "quantityRemaining": 0, "locations": [ { "locationId": "string", "mode": "in_stock", "quantityRemaining": 0 } ] }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "metadata": { "property1": null, "property2": null }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Toast-style Quick Edit support inside the existing catalog API. Supports bulk 86 and quantity mutations, menu availability changes, manager overrides, audit logging, and immediate inventory/kitchen propagation.
Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/quick-edit/bulk" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "locationId": "string" }'{ "authorization": { "mode": "disabled", "actorRoles": [ "string" ], "overrideStaffUserId": "string", "overrideRoles": [ "string" ] }, "products": [ { "id": "string", "internalKey": "string", "barcode": "string", "sku": "string", "title": "string", "description": "string", "posLabel": "string", "kitchenLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "imageUrls": [ "string" ], "tags": [ { "id": "string", "name": "string" } ], "salesCategory": "string", "plu": "string", "calories": 0, "nutrition": { "calories": 0 }, "unitOfMeasure": "string", "guestCount": 0, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "string" }, "weight": { "value": 0, "unit": "string" }, "sortOrder": 0, "discountable": true, "deferredRevenue": true, "contentAdvisories": { "containsAlcohol": true }, "taxRateIds": [ "string" ], "overrideItemTaxRates": true, "kind": "restaurant_menu_item", "status": "draft", "category": "string", "price": 0, "pricingStrategy": "base", "taxCode": "food", "modifierGroupIds": [ "string" ], "trackInventory": true, "availableLocationIds": [ "string" ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepTimeSeconds": 0, "portionIds": [ "string" ], "sizePricing": [ { "sizeName": "string", "price": 0 } ], "stockState": { "mode": "in_stock", "quantityRemaining": 0, "locations": [ { "locationId": "string", "mode": "in_stock", "quantityRemaining": 0 } ] }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "metadata": { "property1": null, "property2": null }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "menus": [ { "id": "string", "title": "string", "icon": "string", "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "highResImageUrl": "string", "serviceType": "restaurant", "locationIds": [ "string" ], "productIds": [ "string" ], "modifierGroups": [ { "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null } } ], "groups": [ { "id": "string", "title": "string", "icon": "string", "subgroupIds": [ "string" ], "productIds": [ "string" ], "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "tags": [ { "id": "string", "name": "string" } ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "sortOrder": 0 } ], "preModifierGroups": [ { "id": "string", "title": "string", "options": [ { "id": "string", "label": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "position": "prefix", "fixedPrice": 0, "multiplicationFactor": 0, "chargeAsExtra": true, "plu": "string" } ] } ], "portions": [ { "id": "string", "label": "string", "posLabel": "string", "priceMultiplier": 0, "modifierGroupIds": [ "string" ] } ], "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ], "eligibility": { "fulfillmentModes": [ "dine_in" ], "serviceModes": [ "table_service" ], "diningOptions": [ { "behavior": "DINE_IN", "curbside": true } ], "dayparts": [ { "id": "string", "label": "string", "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ] } ] }, "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "kitchen": { "prepStations": [ { "id": "string", "title": "string", "supportedFulfillmentModes": [ "dine_in" ], "fulfillmentTargets": [ "prep" ], "printingMode": "always", "printerId": "string", "expediterRouting": "send_to_expediter", "connectedPrepStationIds": [ "string" ] } ], "assemblyLines": [ { "id": "string", "title": "string", "prepStationIds": [ "string" ] } ], "itemRoutingRules": [ { "id": "string", "conditionType": "fulfillment_mode", "conditionValue": "string", "rerouteFromPrepStationId": "string", "rerouteToPrepStationIds": [ "string" ] } ], "defaultModifierRouting": "with_parent", "kdsTicketMode": "single_ticket", "consolidateIdenticalItems": true, "showOtherPrepStations": true, "previewTickets": true, "fireItemsByPrepTime": true, "sendingCourses": "send_all_immediately", "expediterCanFireAhead": true, "heldTicketsVisibleOnPrep": true, "kdsAppearance": { "ticketLayout": "dynamic", "rows": 1, "columns": 1, "textSize": "small", "displayTheme": "light" }, "courseFireSchedule": [ { "course": "string", "delaySeconds": 0 } ] }, "metadata": { "property1": null, "property2": null }, "active": true } ], "inventorySync": [ { "productId": "string", "inventoryItemId": "string", "locationId": "string", "onHand": 0, "reserved": 0, "available": 0, "action": "Reset" } ], "affectedOpenOrders": [ { "orderId": "string", "orderNumber": 0, "status": "string", "matchingProductIds": [ "string" ] } ]}Query Parameters
Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/open-items/settings?locationId=string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "tenantId": "string", "locationId": "string", "enabled": true, "posOnly": true, "allowCustomName": true, "allowCustomPrice": true, "allowOpenPriceItems": true, "allowedRoles": [ "string" ], "allowedScopes": [ "food" ], "defaultScope": "food", "scopeDefaults": [ { "scope": "food", "category": "string", "salesCategory": "string", "taxCode": "food", "prepTimeSeconds": 0, "modifierGroupIds": [ "string" ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" } } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Query Parameters
Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/catalog/open-items/settings?locationId=string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{}'{ "tenantId": "string", "locationId": "string", "enabled": true, "posOnly": true, "allowCustomName": true, "allowCustomPrice": true, "allowOpenPriceItems": true, "allowedRoles": [ "string" ], "allowedScopes": [ "food" ], "defaultScope": "food", "scopeDefaults": [ { "scope": "food", "category": "string", "salesCategory": "string", "taxCode": "food", "prepTimeSeconds": 0, "modifierGroupIds": [ "string" ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" } } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/products/string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "id": "string", "internalKey": "string", "barcode": "string", "sku": "string", "title": "string", "description": "string", "posLabel": "string", "kitchenLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "imageUrls": [ "string" ], "tags": [ { "id": "string", "name": "string" } ], "salesCategory": "string", "plu": "string", "calories": 0, "nutrition": { "calories": 0 }, "unitOfMeasure": "string", "guestCount": 0, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "string" }, "weight": { "value": 0, "unit": "string" }, "sortOrder": 0, "discountable": true, "deferredRevenue": true, "contentAdvisories": { "containsAlcohol": true }, "taxRateIds": [ "string" ], "overrideItemTaxRates": true, "kind": "restaurant_menu_item", "status": "draft", "category": "string", "price": 0, "pricingStrategy": "base", "taxCode": "food", "modifierGroupIds": [ "string" ], "trackInventory": true, "availableLocationIds": [ "string" ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepTimeSeconds": 0, "portionIds": [ "string" ], "sizePricing": [ { "sizeName": "string", "price": 0 } ], "stockState": { "mode": "in_stock", "quantityRemaining": 0, "locations": [ { "locationId": "string", "mode": "in_stock", "quantityRemaining": 0 } ] }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "metadata": { "property1": null, "property2": null }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/catalog/products/string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "internalKey": "string", "barcode": "string", "sku": "string", "title": "string", "description": "string", "posLabel": "string", "kitchenLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "imageUrls": [ "string" ], "tags": [ { "id": "string", "name": "string" } ], "salesCategory": "string", "plu": "string", "calories": 0, "nutrition": { "calories": 0 }, "unitOfMeasure": "string", "guestCount": 0, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "string" }, "weight": { "value": 0, "unit": "string" }, "sortOrder": 0, "discountable": true, "deferredRevenue": true, "contentAdvisories": { "containsAlcohol": true }, "taxRateIds": [ "string" ], "overrideItemTaxRates": true, "kind": "restaurant_menu_item", "status": "draft", "category": "string", "price": 0, "pricingStrategy": "base", "taxCode": "food", "modifierGroupIds": [ "string" ], "trackInventory": true, "availableLocationIds": [ "string" ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepTimeSeconds": 0, "portionIds": [ "string" ], "sizePricing": [ { "sizeName": "string", "price": 0 } ], "stockState": { "mode": "in_stock", "quantityRemaining": 0, "locations": [ { "locationId": "string", "mode": "in_stock", "quantityRemaining": 0 } ] }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "metadata": { "property1": null, "property2": null }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/modifier-groups" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "modifierGroups": [ { "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null } } ], "page": { "total": 0 }}Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/modifier-groups" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "title": "string", "minSelections": 0, "maxSelections": 0, "modifierProductIds": [ "string" ] }'{ "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null }}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
curl -X DELETE "https://example.com/catalog/modifier-groups/string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/catalog/modifier-groups/string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null }}Restaurant-focused menu composition with modifier groups. This is the bridge between retail catalog data and service-specific POS presentation.
Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/menus" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "menus": [ { "id": "string", "title": "string", "icon": "string", "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "highResImageUrl": "string", "serviceType": "restaurant", "locationIds": [ "string" ], "productIds": [ "string" ], "modifierGroups": [ { "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null } } ], "groups": [ { "id": "string", "title": "string", "icon": "string", "subgroupIds": [ "string" ], "productIds": [ "string" ], "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "tags": [ { "id": "string", "name": "string" } ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "sortOrder": 0 } ], "preModifierGroups": [ { "id": "string", "title": "string", "options": [ { "id": "string", "label": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "position": "prefix", "fixedPrice": 0, "multiplicationFactor": 0, "chargeAsExtra": true, "plu": "string" } ] } ], "portions": [ { "id": "string", "label": "string", "posLabel": "string", "priceMultiplier": 0, "modifierGroupIds": [ "string" ] } ], "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ], "eligibility": { "fulfillmentModes": [ "dine_in" ], "serviceModes": [ "table_service" ], "diningOptions": [ { "behavior": "DINE_IN", "curbside": true } ], "dayparts": [ { "id": "string", "label": "string", "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ] } ] }, "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "kitchen": { "prepStations": [ { "id": "string", "title": "string", "supportedFulfillmentModes": [ "dine_in" ], "fulfillmentTargets": [ "prep" ], "printingMode": "always", "printerId": "string", "expediterRouting": "send_to_expediter", "connectedPrepStationIds": [ "string" ] } ], "assemblyLines": [ { "id": "string", "title": "string", "prepStationIds": [ "string" ] } ], "itemRoutingRules": [ { "id": "string", "conditionType": "fulfillment_mode", "conditionValue": "string", "rerouteFromPrepStationId": "string", "rerouteToPrepStationIds": [ "string" ] } ], "defaultModifierRouting": "with_parent", "kdsTicketMode": "single_ticket", "consolidateIdenticalItems": true, "showOtherPrepStations": true, "previewTickets": true, "fireItemsByPrepTime": true, "sendingCourses": "send_all_immediately", "expediterCanFireAhead": true, "heldTicketsVisibleOnPrep": true, "kdsAppearance": { "ticketLayout": "dynamic", "rows": 1, "columns": 1, "textSize": "small", "displayTheme": "light" }, "courseFireSchedule": [ { "course": "string", "delaySeconds": 0 } ] }, "metadata": { "property1": null, "property2": null }, "active": true } ], "page": { "total": 0 }}Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/menus" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "title": "string", "serviceType": "restaurant", "locationIds": [ "string" ], "productIds": [ "string" ], "modifierGroups": [ { "id": "string", "title": "string", "minSelections": 0, "maxSelections": 0, "modifierProductIds": [ "string" ] } ] }'{ "id": "string", "title": "string", "icon": "string", "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "highResImageUrl": "string", "serviceType": "restaurant", "locationIds": [ "string" ], "productIds": [ "string" ], "modifierGroups": [ { "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null } } ], "groups": [ { "id": "string", "title": "string", "icon": "string", "subgroupIds": [ "string" ], "productIds": [ "string" ], "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "tags": [ { "id": "string", "name": "string" } ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "sortOrder": 0 } ], "preModifierGroups": [ { "id": "string", "title": "string", "options": [ { "id": "string", "label": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "position": "prefix", "fixedPrice": 0, "multiplicationFactor": 0, "chargeAsExtra": true, "plu": "string" } ] } ], "portions": [ { "id": "string", "label": "string", "posLabel": "string", "priceMultiplier": 0, "modifierGroupIds": [ "string" ] } ], "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ], "eligibility": { "fulfillmentModes": [ "dine_in" ], "serviceModes": [ "table_service" ], "diningOptions": [ { "behavior": "DINE_IN", "curbside": true } ], "dayparts": [ { "id": "string", "label": "string", "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ] } ] }, "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "kitchen": { "prepStations": [ { "id": "string", "title": "string", "supportedFulfillmentModes": [ "dine_in" ], "fulfillmentTargets": [ "prep" ], "printingMode": "always", "printerId": "string", "expediterRouting": "send_to_expediter", "connectedPrepStationIds": [ "string" ] } ], "assemblyLines": [ { "id": "string", "title": "string", "prepStationIds": [ "string" ] } ], "itemRoutingRules": [ { "id": "string", "conditionType": "fulfillment_mode", "conditionValue": "string", "rerouteFromPrepStationId": "string", "rerouteToPrepStationIds": [ "string" ] } ], "defaultModifierRouting": "with_parent", "kdsTicketMode": "single_ticket", "consolidateIdenticalItems": true, "showOtherPrepStations": true, "previewTickets": true, "fireItemsByPrepTime": true, "sendingCourses": "send_all_immediately", "expediterCanFireAhead": true, "heldTicketsVisibleOnPrep": true, "kdsAppearance": { "ticketLayout": "dynamic", "rows": 1, "columns": 1, "textSize": "small", "displayTheme": "light" }, "courseFireSchedule": [ { "course": "string", "delaySeconds": 0 } ] }, "metadata": { "property1": null, "property2": null }, "active": true}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/menus/string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "id": "string", "title": "string", "icon": "string", "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "highResImageUrl": "string", "serviceType": "restaurant", "locationIds": [ "string" ], "productIds": [ "string" ], "modifierGroups": [ { "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null } } ], "groups": [ { "id": "string", "title": "string", "icon": "string", "subgroupIds": [ "string" ], "productIds": [ "string" ], "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "tags": [ { "id": "string", "name": "string" } ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "sortOrder": 0 } ], "preModifierGroups": [ { "id": "string", "title": "string", "options": [ { "id": "string", "label": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "position": "prefix", "fixedPrice": 0, "multiplicationFactor": 0, "chargeAsExtra": true, "plu": "string" } ] } ], "portions": [ { "id": "string", "label": "string", "posLabel": "string", "priceMultiplier": 0, "modifierGroupIds": [ "string" ] } ], "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ], "eligibility": { "fulfillmentModes": [ "dine_in" ], "serviceModes": [ "table_service" ], "diningOptions": [ { "behavior": "DINE_IN", "curbside": true } ], "dayparts": [ { "id": "string", "label": "string", "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ] } ] }, "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "kitchen": { "prepStations": [ { "id": "string", "title": "string", "supportedFulfillmentModes": [ "dine_in" ], "fulfillmentTargets": [ "prep" ], "printingMode": "always", "printerId": "string", "expediterRouting": "send_to_expediter", "connectedPrepStationIds": [ "string" ] } ], "assemblyLines": [ { "id": "string", "title": "string", "prepStationIds": [ "string" ] } ], "itemRoutingRules": [ { "id": "string", "conditionType": "fulfillment_mode", "conditionValue": "string", "rerouteFromPrepStationId": "string", "rerouteToPrepStationIds": [ "string" ] } ], "defaultModifierRouting": "with_parent", "kdsTicketMode": "single_ticket", "consolidateIdenticalItems": true, "showOtherPrepStations": true, "previewTickets": true, "fireItemsByPrepTime": true, "sendingCourses": "send_all_immediately", "expediterCanFireAhead": true, "heldTicketsVisibleOnPrep": true, "kdsAppearance": { "ticketLayout": "dynamic", "rows": 1, "columns": 1, "textSize": "small", "displayTheme": "light" }, "courseFireSchedule": [ { "course": "string", "delaySeconds": 0 } ] }, "metadata": { "property1": null, "property2": null }, "active": true}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
curl -X DELETE "https://example.com/catalog/menus/string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/catalog/menus/string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "title": "string", "icon": "string", "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "highResImageUrl": "string", "serviceType": "restaurant", "locationIds": [ "string" ], "productIds": [ "string" ], "modifierGroups": [ { "id": "string", "title": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "minSelections": 0, "maxSelections": 0, "sortOrder": 0, "modifierProductIds": [ "string" ], "requiredMode": "REQUIRED", "behavior": "required", "pricingStrategy": "no_charge", "groupPrice": 0, "sizePrices": [ { "sizeName": "string", "price": 0, "modifierPrices": [ { "modifierProductId": "string", "price": 0 } ] } ], "sequencePrices": [ { "ordinal": 1, "price": 0 } ], "sizeSequencePrices": [ { "sizeName": "string", "sequencePrices": [ { "ordinal": 1, "price": 0 } ] } ], "defaultModifierProductIds": [ "string" ], "allowDuplicates": true, "maxDuplicateQuantity": 1, "perModifierDuplicateLimits": [ { "modifierProductId": "string", "allowDuplicates": true, "maxQuantity": 1 } ], "preModifierGroupId": "string", "displayOrder": "listed", "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "prepMode": "integral", "prepTimeSeconds": 0, "defaultModifierPricingMode": "charge", "enableSubstitutionPricing": true, "sizeSelectionMode": "inherit_parent", "portionIds": [ "string" ], "modifierItemReferences": [ { "productId": "string", "overrideName": "string", "overrideBasePrice": 0, "pricingStrategy": "base", "menuPrices": [ { "menuId": "string", "price": 0 } ], "locationPrices": [ { "locationId": "string", "price": 0 } ], "sizePrices": [ { "sizeName": "string", "price": 0 } ], "timePrices": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string", "price": 0 } ] } ], "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "basedOnMenuGroupId": "string", "metadata": { "property1": null, "property2": null } } ], "groups": [ { "id": "string", "title": "string", "icon": "string", "subgroupIds": [ "string" ], "productIds": [ "string" ], "description": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "imageUrl": "string", "tags": [ { "id": "string", "name": "string" } ], "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "routing": { "prepStationIds": [ "string" ], "assemblyLineId": "string", "modifierRouting": "inherit", "ticketDestination": "prep_only" }, "sortOrder": 0 } ], "preModifierGroups": [ { "id": "string", "title": "string", "options": [ { "id": "string", "label": "string", "posLabel": "string", "buttonColor": { "light": "string", "dark": "string" }, "position": "prefix", "fixedPrice": 0, "multiplicationFactor": 0, "chargeAsExtra": true, "plu": "string" } ] } ], "portions": [ { "id": "string", "label": "string", "posLabel": "string", "priceMultiplier": 0, "modifierGroupIds": [ "string" ] } ], "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ], "eligibility": { "fulfillmentModes": [ "dine_in" ], "serviceModes": [ "table_service" ], "diningOptions": [ { "behavior": "DINE_IN", "curbside": true } ], "dayparts": [ { "id": "string", "label": "string", "availability": [ { "days": [ "mon" ], "startTime": "string", "endTime": "string" } ] } ] }, "visibility": { "pos": true, "online": true, "kiosk": true, "partners": true }, "kitchen": { "prepStations": [ { "id": "string", "title": "string", "supportedFulfillmentModes": [ "dine_in" ], "fulfillmentTargets": [ "prep" ], "printingMode": "always", "printerId": "string", "expediterRouting": "send_to_expediter", "connectedPrepStationIds": [ "string" ] } ], "assemblyLines": [ { "id": "string", "title": "string", "prepStationIds": [ "string" ] } ], "itemRoutingRules": [ { "id": "string", "conditionType": "fulfillment_mode", "conditionValue": "string", "rerouteFromPrepStationId": "string", "rerouteToPrepStationIds": [ "string" ] } ], "defaultModifierRouting": "with_parent", "kdsTicketMode": "single_ticket", "consolidateIdenticalItems": true, "showOtherPrepStations": true, "previewTickets": true, "fireItemsByPrepTime": true, "sendingCourses": "send_all_immediately", "expediterCanFireAhead": true, "heldTicketsVisibleOnPrep": true, "kdsAppearance": { "ticketLayout": "dynamic", "rows": 1, "columns": 1, "textSize": "small", "displayTheme": "light" }, "courseFireSchedule": [ { "course": "string", "delaySeconds": 0 } ] }, "metadata": { "property1": null, "property2": null }, "active": true}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/menus/string/publication" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "menuId": "string", "draft": { "id": "string", "menuId": "string", "revisionNumber": 0, "version": 0, "status": "draft", "definition": { "property1": null, "property2": null }, "baseMenuUpdatedAt": "2019-08-24T14:15:22Z", "reviewedAt": "2019-08-24T14:15:22Z", "publishedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "published": { "id": "string", "menuId": "string", "revisionNumber": 0, "version": 0, "status": "draft", "definition": { "property1": null, "property2": null }, "baseMenuUpdatedAt": "2019-08-24T14:15:22Z", "reviewedAt": "2019-08-24T14:15:22Z", "publishedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "revisions": [ { "id": "string", "menuId": "string", "revisionNumber": 0, "version": 0, "status": "draft", "definition": { "property1": null, "property2": null }, "baseMenuUpdatedAt": "2019-08-24T14:15:22Z", "reviewedAt": "2019-08-24T14:15:22Z", "publishedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ]}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/catalog/menus/string/draft" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "expectedVersion": 0, "changes": { "property1": null, "property2": null } }'{ "id": "string", "menuId": "string", "revisionNumber": 0, "version": 0, "status": "draft", "definition": { "property1": null, "property2": null }, "baseMenuUpdatedAt": "2019-08-24T14:15:22Z", "reviewedAt": "2019-08-24T14:15:22Z", "publishedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/menus/string/review" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "expectedVersion": 1 }'{ "id": "string", "menuId": "string", "revisionNumber": 0, "version": 0, "status": "draft", "definition": { "property1": null, "property2": null }, "baseMenuUpdatedAt": "2019-08-24T14:15:22Z", "reviewedAt": "2019-08-24T14:15:22Z", "publishedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
8 <= length <= 200Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/menus/string/publish" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "idempotency-key: stringst" \ -H "Content-Type: application/json" \ -d '{ "expectedVersion": 1 }'{ "property1": null, "property2": null}Path Parameters
1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
8 <= length <= 200Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/menus/string/rollback" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "idempotency-key: stringst" \ -H "Content-Type: application/json" \ -d '{ "revisionId": "string", "expectedCurrentRevisionId": "string" }'{ "property1": null, "property2": null}Path Parameters
Query Parameters
1 <= length1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/catalog/menu-settings/sales-categories?locationId=string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123"{ "settings": [ { "id": "string", "kind": "sales-categories", "name": "string", "description": "string", "status": "active", "sortOrder": 0, "metadata": {}, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "total": 0}Path Parameters
Query Parameters
1 <= length1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/catalog/menu-settings/sales-categories?locationId=string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{ "id": "string", "kind": "sales-categories", "name": "string", "description": "string", "status": "active", "sortOrder": 0, "metadata": {}, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Path Parameters
Query Parameters
1 <= length1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/catalog/menu-settings/sales-categories/order?locationId=string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{ "orderedIds": [ "string" ] }'{ "settings": [ { "id": "string", "kind": "sales-categories", "name": "string", "description": "string", "status": "active", "sortOrder": 0, "metadata": {}, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ]}Path Parameters
1 <= lengthQuery Parameters
1 <= length1 <= lengthHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PUT "https://example.com/catalog/menu-settings/sales-categories/string?locationId=string" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "kind": "sales-categories", "name": "string", "description": "string", "status": "active", "sortOrder": 0, "metadata": {}, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}Header Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/menus/v3/menus" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "toast-restaurant-external-id: string"nullHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/menus/v3/metadata" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "toast-restaurant-external-id: string"nullHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/menus/v2/menus" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "toast-restaurant-external-id: string"nullHeader Parameters
Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.
Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.
Adds a location scope to the request for location-aware reads, writes, and audit entries.
Test-only Hexclave provider identifier used with x-auth-user-id when trusted identity headers are explicitly enabled. Production clients must use a Hexclave bearer token.
Value in
- "hexclave"
Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.
Response Body
application/json
curl -X GET "https://example.com/menus/v2/metadata" \ -H "x-tenant-id: tenant-local" \ -H "x-tenant-slug: trellis-local" \ -H "x-location-id: loc-tasting-room" \ -H "x-auth-provider: hexclave" \ -H "x-auth-user-id: user_abc123" \ -H "toast-restaurant-external-id: string"null