cimplify

Add-Ons

Modifier groups (toppings, extras, upgrades) returned as part of the product detail response.

Add-ons are not accessed via a separate endpoint. They are included in the response from GET /api/v1/catalogue/products/{id}.

Structure

Each add-on is a group containing options. Groups define selection rules (single vs. multiple, required vs. optional). Each option has its own price.

Example

JSON
{
  "add_ons": [
    {
      "id": "addon_toppings",
      "name": "Pizza Toppings",
      "selection_type": "multiple",
      "is_required": false,
      "min_selections": 0,
      "max_selections": 5,
      "options": [
        { "id": "opt_pepperoni", "name": "Pepperoni", "price": "1.50" },
        { "id": "opt_mushrooms", "name": "Mushrooms", "price": "1.00" },
        { "id": "opt_cheese", "name": "Extra Cheese", "price": "2.00" }
      ]
    },
    {
      "id": "addon_size",
      "name": "Size",
      "selection_type": "single",
      "is_required": true,
      "min_selections": 1,
      "max_selections": 1,
      "options": [
        { "id": "opt_medium", "name": "Medium", "price": "0.00" },
        { "id": "opt_large", "name": "Large", "price": "3.00" }
      ]
    }
  ]
}

Selection Types

TypeDescription
singleOnly one option can be selected (radio buttons)
multipleMultiple options can be selected (checkboxes)
quantityOptions can be added multiple times (counters)

Add-On Group Object

FieldTypeDescription
idstringUnique add-on group identifier
namestringDisplay name
selection_typestringsingle, multiple, or quantity
is_requiredbooleanWhether selection is mandatory
min_selectionsintegerMinimum required selections
max_selectionsintegerMaximum allowed selections
optionsarrayList of option objects

Option Object

FieldTypeDescription
idstringUnique option identifier
namestringOption display name
pricestringAdditional price (decimal string)

Using Add-Ons

Pass selected option IDs to the quote endpoint or when adding items to the cart:

JSON
// POST /api/v1/catalogue/quote
{
  "product_id": "prod_pizza",
  "add_on_option_ids": ["opt_pepperoni", "opt_mushrooms", "opt_large"]
}

// POST /api/v1/cart/items
{
  "item_id": "prod_pizza",
  "quantity": 1,
  "add_on_options": ["opt_pepperoni", "opt_mushrooms", "opt_large"]
}