Skip to main content
NameTypeDescription
idstringUnique identifier of the catalog
namestringName of the catalog
categoriesCategoriesCategories of the catalog
productsProductsProducts of the catalog
skusSkusSkus of the catalog
optionListsOption ListsOption Lists of the catalog
optionsOptionsOptions of the catalog
discountsDiscountsDiscounts of the catalog
dealsDealsBundle deals of the catalog

Categories

NameTypeDescription
internalIdstringUnique internal identifier of the category, optimized for LLM readability
namestringName of the category

Products

Products represent menu items that customers can order. Each product can have various restrictions that control when and how they can be ordered.
NameTypeDescription
internalIdstringUnique internal identifier of the product, optimized for LLM readability
namestringName of the product
categoryNamestringName of the category this product is part of
descriptionstring (optional)Description of this product
isAvailablebooleanWhether the product is currently available for ordering
restrictionRestriction (optional)Availability restrictions for this product

Product Examples

{
  "internalId": "breakfast_special",
  "name": "Full English Breakfast",
  "categoryName": "Breakfast",
  "description": "Eggs, bacon, sausages, beans, toast and hash browns",
  "isAvailable": true,
  "restriction": {
    "dow": {
      "monday": true,
      "tuesday": true,
      "wednesday": true,
      "thursday": true,
      "friday": true,
      "saturday": true,
      "sunday": true
    },
    "startTime": "06:00",
    "endTime": "11:30",
    "availableForDelivery": true,
    "availableForPickup": true
  }
}
{
  "internalId": "weekend_brunch_cocktail",
  "name": "Bottomless Mimosas",
  "categoryName": "Beverages",
  "description": "Unlimited mimosas with weekend brunch",
  "isAvailable": true,
  "restriction": {
    "dow": {
      "monday": false,
      "tuesday": false,
      "wednesday": false,
      "thursday": false,
      "friday": false,
      "saturday": true,
      "sunday": true
    },
    "startTime": "10:00",
    "endTime": "15:00",
    "availableForDelivery": false,
    "availableForPickup": true
  }
}

Restriction

Product restrictions control when and how products can be ordered. All restriction fields are optional - if not specified, no restrictions apply.
NameTypeDescription
dowDaysOfWeekDays of the week when the product is available
startTimestring (optional)Start time for availability (HH:MM format, 24-hour)
endTimestring (optional)End time for availability (HH:MM format, 24-hour)
startDatestring (optional)Start date for availability (ISO 8601 date string)
endDatestring (optional)End date for availability (ISO 8601 date string)
availableForDeliverybooleanWhether the product is available for delivery orders
availableForPickupbooleanWhether the product is available for pickup orders

DaysOfWeek

Specifies which days of the week a product is available. If a day is set to false or omitted, the product is not available on that day.
NameTypeDescription
mondaybooleanAvailable on Monday
tuesdaybooleanAvailable on Tuesday
wednesdaybooleanAvailable on Wednesday
thursdaybooleanAvailable on Thursday
fridaybooleanAvailable on Friday
saturdaybooleanAvailable on Saturday
sundaybooleanAvailable on Sunday

Skus

SKUs (Stock Keeping Units) represent specific variants of products, such as different sizes or configurations. Atm we only accept one sku per product.
NameTypeDescription
internalIdstringUnique internal identifier of the sku, optimized for LLM readability
productInternalIdstringInternal Id of the product this sku is part of
pricePricePrice of this sku
optionListInternalIdsstring[]Internal Ids of the option lists that are associated to this sku

SKU Examples

{
  "internalId": "pizza_margherita_large",
  "productInternalId": "pizza_margherita",
  "price": { "amount": 14, "currency": "EUR" },
  "optionListInternalIds": ["crust_types", "extra_toppings"]
}
{
  "internalId": "coffee_espresso_single",
  "productInternalId": "coffee_espresso",
  "price": { "amount": 2.5, "currency": "EUR" },
  "optionListInternalIds": ["milk_options", "sweeteners"]
}

Option Lists

NameTypeDescription
internalIdstringUnique internal identifier of the option list, optimized for LLM readability
namestringName of the option list
minSelectionsnumber (optional)Minimum number of options that can be selected in this option list
maxSelectionsnumber (optional)Maximum number of options that can be selected in this option list

Options

NameTypeDescription
internalIdstringUnique internal identifier of the option, optimized for LLM readability
namestringName of the option
optionListInternalIdstringInternal id of the option list this option is part of
optionListNamestringName of the option list this option is part of
pricePricePrice of this option

Discounts

NameTypeDescription
idstringUnique identifier of the discount
namestringName of the discount
descriptionstring (optional)Description of the discount
imageIdstring (optional)Image identifier for the discount
isActivebooleanWhether the discount is currently active
discountConditionDiscount ConditionConditions that must be met for the discount to apply
discountTypeDiscount TypeType of discount
discountDataDiscount DataSpecific data for the discount based on its type

Discount Condition

NameTypeDescription
startDateDate (optional)Start date for the discount validity period
endDateDate (optional)End date for the discount validity period
minOrderAmountnumber (optional)Minimum order amount required to apply the discount
maxNumberOfCustomerOrdersnumber (optional)Maximum number of times a customer can use this discount
promotionCodestring (optional)Promotion code required to apply the discount
productIdsstring[] (optional)List of product IDs the discount applies to
customerIdsstring[] (optional)List of customer IDs eligible for this discount

Discount Type

The discount type can be one of the following values:
  • "percentage" - Percentage-based discount
  • "fixed" - Fixed amount discount
  • "free_product" - Free product discount
  • "bogo" - Buy One Get One discount
  • "free_shipping" - Free shipping discount

Discount Data

The discount data structure varies based on the discount type:

Percentage Discount

NameTypeDescription
percentagenumberPercentage value of the discount (0-100)
maxDiscountAmountnumber (optional)Maximum discount amount that can be applied

Fixed Discount

NameTypeDescription
amountnumberFixed amount to discount

Free Product Discount

NameTypeDescription
productIdstringID of the product that will be free

BOGO Discount

NameTypeDescription
productIdsstring[]List of product IDs eligible for BOGO discount

Free Shipping Discount

This discount type has no additional data fields.

Deals

Deals represent bundle offers with multiple products at special pricing. Customers can select specific SKUs for each deal line.
NameTypeDescription
internalIdstringUnique internal identifier of the deal, optimized for LLM readability
namestringName of the deal
refstring (optional)Reference code for the deal
descriptionstring (optional)Description of the deal
categoryIdstringCategory ID this deal belongs to
pricePricePrice of the complete deal
linesDeal LinesLines that make up this deal

Deal Lines

Each deal line represents a group of products that the customer can choose from within the deal.
NameTypeDescription
idstringUnique identifier of the deal line
namestring (optional)Name of the deal line (e.g., “Choose a Pizza”)
skusDeal Line SKUsAvailable SKUs for this deal line

Deal Line SKUs

These are the specific product variants available for selection in each deal line.
NameTypeDescription
skuInternalIdstringInternal ID of the SKU that can be selected for this deal line
pricePrice (optional)Premium for this item. If undefined the base deal price remains the same else we add this premium

Example Deal Structure

{
  "internalId": "family_combo",
  "name": "Family Combo",
  "description": "Perfect for families - 2 large pizzas, sides and drinks",
  "categoryId": "combos",
  "price": { "amount": 3500, "currency": "EUR" },
  "lines": [
    {
      "id": "pizza_line_1",
      "name": "Choose your first pizza",
      "skus": [
        { "skuInternalId": "pizza_margherita_large" },
        { "skuInternalId": "pizza_pepperoni_large" },
        { "skuInternalId": "pizza_hawaiian_large" }
      ]
    },
    {
      "id": "pizza_line_2",
      "name": "Choose your second pizza",
      "skus": [
        { "skuInternalId": "pizza_margherita_large" },
        { "skuInternalId": "pizza_pepperoni_large" }
      ]
    },
    {
      "id": "drink_line",
      "name": "Choose a drink",
      "skus": [{ "skuInternalId": "coke_2l" }, { "skuInternalId": "sprite_2l" }]
    }
  ]
}

Deal Validation Rules

  • Each deal line must have exactly one SKU selected when ordering
  • Selected SKUs must be available and part of the deal line’s allowed SKUs
  • Deal pricing is applied to the entire bundle, not individual items
  • Options can be selected for each SKU within the deal structure