TrellisDevelopers
API reference

Catalog

GET
/catalog/products

Commerce7 basis: Products, Collections, and Departments. This slice supports restaurant menu items, retail SKUs, modifiers, and gift card products.

Query Parameters

q?string
locationId?string

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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  }}
POST
/catalog/products

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
POST
/catalog/quick-edit/bulk

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

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"      ]    }  ]}
GET
/catalog/open-items/settings

Query Parameters

locationId*string

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
PUT
/catalog/open-items/settings

Query Parameters

locationId*string

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
GET
/catalog/products/{id}

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
PUT
/catalog/products/{id}

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
GET
/catalog/modifier-groups

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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  }}
POST
/catalog/modifier-groups

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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  }}
DELETE
/catalog/modifier-groups/{id}

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"
Empty
PUT
/catalog/modifier-groups/{id}

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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  }}
GET
/catalog/menus

Restaurant-focused menu composition with modifier groups. This is the bridge between retail catalog data and service-specific POS presentation.

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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  }}
POST
/catalog/menus

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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}
GET
/catalog/menus/{id}

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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}
DELETE
/catalog/menus/{id}

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"
Empty
PUT
/catalog/menus/{id}

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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}
GET
/catalog/menus/{id}/publication

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"    }  ]}
PUT
/catalog/menus/{id}/draft

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
POST
/catalog/menus/{id}/review

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
POST
/catalog/menus/{id}/publish

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.

idempotency-key*string
Length8 <= length <= 200

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/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}
POST
/catalog/menus/{id}/rollback

Path Parameters

id*string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.

idempotency-key*string
Length8 <= length <= 200

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/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}
GET
/catalog/menu-settings/{kind}

Path Parameters

kind*||||

Query Parameters

locationId*string
Length1 <= length
restaurantGuid?string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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}
POST
/catalog/menu-settings/{kind}

Path Parameters

kind*||||

Query Parameters

locationId*string
Length1 <= length
restaurantGuid?string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
PUT
/catalog/menu-settings/{kind}/order

Path Parameters

kind*||||

Query Parameters

locationId*string
Length1 <= length
restaurantGuid?string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"    }  ]}
PUT
/catalog/menu-settings/{kind}/{id}

Path Parameters

kind*||||
id*string
Length1 <= length

Query Parameters

locationId*string
Length1 <= length
restaurantGuid?string
Length1 <= length

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

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"}
GET
/menus/v3/menus

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.

toast-restaurant-external-id*string

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"
null
GET
/menus/v3/metadata

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.

toast-restaurant-external-id*string

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"
null
GET
/menus/v2/menus

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.

toast-restaurant-external-id*string

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"
null
GET
/menus/v2/metadata

Header Parameters

x-tenant-id?string

Selects the tenant by id. When both tenant headers are omitted, the server falls back to the configured default tenant slug.

x-tenant-slug?string

Selects the tenant by slug. Use this when you know the tenant slug instead of the tenant id.

x-location-id?string

Adds a location scope to the request for location-aware reads, writes, and audit entries.

x-auth-provider?"hexclave"

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"
x-auth-user-id?string

Temporary auth subject used to resolve the acting staff user through the staff auth identity mapping.

toast-restaurant-external-id*string

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