Skip to main content

Items

Defines all items — products and containers — that can appear in a menu.

Top-level structure:

{
"items": {
"<itemId>": { ... }
}
}

Item fields

PropertyTypeRequiredDescription
typestringYes"product" or "container".
titletranslatableContentYesDisplay title.
namestringNoInternal name used for administration purposes; not displayed to guests.
descriptiontranslatableContentNoDisplay description.
images.default.urltranslatableContentYes (if images is present)URL for the default image.
images.double-width.urltranslatableContentNoURL for a double-width image variant.
uiPropertiesobjectNoControls display behaviour and guest interaction. See uiProperties fields.
productionInformationobjectNoProduction time and point configuration. See productionInformation fields.
isMetadataItembooleanNoWhen true, this item is not counted as a selectable purchasable item (e.g. a delivery fee). Defaults to false.
usePriceFromItemreferencedItemNoResolves this item's price from the referenced item instead. See referencedItem fields.
configItemsarray of referencedItemNoChild items available in this container's configurator.
selectionOptions.minintegerNoMinimum number of configItems the guest must select.
selectionOptions.maxintegerNoMaximum number of configItems the guest may select.
badgesarray of { url: translatableContent }NoBadge images displayed on the item.
tagsarray of stringsNoTags for filtering or categorisation.
alternateForarray of referencedItemNoItems this item serves as an alternate for.
barcodesarray of stringsNoBarcodes associated with the item.
mappingDetailsobjectNoFree-form metadata for external system mapping.

Item uiProperties fields

PropertyTypeRequiredDescription
configurator.typestringNoConfigurator style: "default" or "meal". Defaults to "default".
desired.enableQuickAddbooleanNoShows a quick-add button so guests can add the item without opening the configurator. Defaults to false.
desired.enableQuickConfiguratorbooleanNoShows a compact inline configurator on the product listing (e.g. for selecting drink size). Defaults to false.
desired.enableConfiguratorbooleanNoShows a configurator button alongside the quick-add button. Defaults to false.
desired.isVisibleOnReceiptbooleanNoWhen false and the item has no price, the item is omitted from the receipt and only its children are rendered. Defaults to true.
desired.isIgnoredByConfiguratorbooleanNoWhen true, the configurator skips this item. Defaults to false.
desired.isNegatedbooleanNoReverses the selection display in the GUI. Used for "remove" containers. Defaults to false.
guestMessagesarray of guestMessageNoMessages shown to the guest when this item is interacted with.

guestMessage fields

PropertyTypeRequiredDescription
textKeystringYesThe message to display. One of "guestmessages.gluten", "guestmessages.alcohol", or "guestmessages.nicotine".
typestringNo"Once" shows the message only the first time it is triggered per order. "Always" shows it every time. Defaults to "Always".

productionInformation fields

PropertyTypeRequiredDescription
minDurationstringYesMinimum production duration in ISO 8601 duration format (e.g. "PT10M").
maxDurationstringNoMaximum production duration in ISO 8601 duration format.
pointsintegerNoProduction points assigned to this item.

referencedItem fields

Used in configItems, usePriceFromItem, and alternateFor.

PropertyTypeRequiredDescription
referencedItemIdstring (numeric)YesID of the referenced item.
mapPriceGroupsobjectNoMaps source price group IDs to target price group IDs, enabling a different price group for this subtree. The mapped group must use the same currency.
isSelectedbooleanNoWhether the item is pre-selected in the configurator. Defaults to false.

Example:

{
"items": {
"1001": {
"type": "product",
"name": "Latte",
"title": { "value": "Latte" },
"uiProperties": {
"desired": {
"enableQuickAdd": true
}
}
},
"1002": {
"type": "container",
"title": { "value": "Size" },
"configItems": [
{ "referencedItemId": "1003", "isSelected": true },
{ "referencedItemId": "1004" }
],
"selectionOptions": { "min": 1, "max": 1 }
}
}
}