Menu API
Manage your restaurant menu including categories, items, modifiers, stock levels, and availability.
Pricing
1250 = 12.50 EUR). VAT is 19% for dine-in and 7% for takeaway. Drinks are always taxed at 19% regardless of order type.Categories
Categories group menu items and can include metadata for display such as color and icon.
List Categories
/api/menu/categoriesProtectedRetrieve all categories with their nested items array.
// Response 200
{
__PH2__: [
{
__PH3__: "cat-uuid",
__PH5__: "Hauptgerichte",
__PH7__: "Main courses",
__PH9__: "__PH1__
"icon": "utensils",
"sort_order": 1,
"items": [
{
"id": "item-uuid",
"name": "Wiener Schnitzel",
"price": 1890,
"vat_rate": 19
}
]
}
]
}Create Category
/api/menu/categoriesProtectedCreate a new menu category.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | Category name |
description | string | Optional | Short description |
color | string | Optional | Hex color for POS display |
icon | string | Optional | Icon identifier |
// Request
{
__PH2__: "Vorspeisen",
__PH4__: "Starters and appetizers",
__PH6__: "__PH1__
"icon": "soup"
}Update Category
/api/menu/categories/{id}ProtectedUpdate an existing category.
// Request
{
__PH2__: "Desserts",
__PH4__: "#ec4899"
}Delete Category
/api/menu/categories/{id}ProtectedSoft-delete a category. Items within the category are not affected but will no longer appear under this group.
Soft Delete
Items
List Items
/api/menu/itemsProtectedRetrieve all menu items.
// Response 200
{
__PH2__: [
{
__PH3__: "item-uuid",
__PH5__: "Wiener Schnitzel",
__PH7__: 1890,
__PH8__: "cat-uuid",
__PH10__: "Classic breaded veal cutlet",
__PH12__: 19,
__PH13__: false,
__PH14__: true,
__PH15__: "__PH1__
"printer_target": "kitchen",
"available": true,
"stock_quantity": null
}
]
}Create Item
/api/menu/itemsProtectedCreate a new menu item.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | Item name |
price | integer | Required | Price in cents |
category_id | uuid | Optional | Parent category ID |
description | string | Optional | Item description |
vat_rate | integer | Optional | VAT rate in percent (default 19) |
is_drink | boolean | Optional | Whether this is a drink (always 19% VAT) |
is_takeaway_eligible | boolean | Optional | Whether item can be ordered for takeaway |
color | string | Optional | Hex color for POS button |
printer_target | string | Optional | Printer routing target (default "kitchen") |
// Request
{
__PH1__: "Currywurst",
__PH3__: 850,
__PH4__: "cat-uuid",
__PH6__: 19,
__PH7__: false,
__PH8__: true,
__PH9__: "kitchen"
}Update Item
/api/menu/items/{id}ProtectedUpdate an existing menu item.
// Request
{
__PH1__: "Currywurst Deluxe",
__PH3__: 950
}Delete Item
/api/menu/items/{id}ProtectedSoft-delete a menu item. The item is retained in the database for audit compliance.
Update Stock
/api/menu/items/{id}/stockProtectedSet the stock quantity for a menu item. Set to null to disable stock tracking.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
quantity | integer | null | Required | Stock quantity, or null to disable tracking |
// Request
{ __PH2__: 25 }
// Response 200
{
__PH3__: "item-uuid",
__PH5__: 25
}Update Availability
/api/menu/items/{id}/availabilityProtectedToggle item availability. Unavailable items are hidden from the ordering interface.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
available | boolean | Required | Whether the item is available for ordering |
// Request
{ __PH2__: false }
// Response 200
{
__PH3__: "item-uuid",
__PH5__: false
}Modifiers
Modifiers represent add-ons or customisations that can be applied to menu items (e.g. extra cheese, no onions). They are grouped by modifier_group.
List Modifiers
/api/menu/modifiersProtectedRetrieve all modifiers.
// Response 200
{
__PH1__: [
{
__PH2__: "mod-uuid",
__PH4__: "Extra Cheese",
__PH6__: 150,
__PH7__: "Extras"
}
]
}Create Modifier
/api/menu/modifiersProtectedCreate a new modifier.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | Modifier name |
price | integer | Required | Additional price in cents |
modifier_group | string | Required | Group name for categorisation |
// Request
{
__PH1__: "Extra Sauce",
__PH3__: 100,
__PH4__: "Extras"
}Update Modifier
/api/menu/modifiers/{id}ProtectedUpdate an existing modifier.
// Request
{
__PH1__: "Extra Sauce (Large)",
__PH3__: 200
}Delete Modifier
/api/menu/modifiers/{id}ProtectedDelete a modifier.