Catalog Object Examples
Item Family containing Items
In the example below, the Appetizer Platter
Item Family has 3 Item's (otherwise known as variations). Each size being priced accordingly.
{
"category": [
{
"provider_id": "starters_provider_id",
"name": "Starters",
"item_family_ids": ["platter_provider_id"]
}
],
"item_family": [
{
"provider_id": "platter_provider_id",
"name": "c",
"description": "Appetizer Platter",
"is_active": true,
"modifier_group_ids": [],
"item_ids": [
"small_platter_provider_id",
"large_platter_provider_id",
"party_platter_provider_id"
],
"images": []
}
],
"item": [
{
"provider_id": "small_platter_provider_id",
"name": "Small Platter",
"is_active": true,
"price_amount": 500,
"price_currency": "usd"
},
{
"provider_id": "large_platter_provider_id",
"name": "Large Platter",
"is_active": true,
"price_amount": 800,
"price_currency": "usd"
},
{
"provider_id": "party_platter_provider_id",
"name": "Party Platter",
"is_active": true,
"price_amount": 2000,
"price_currency": "usd"
}
],
"modifier_group": [],
"modifier": [],
"menu": []
}
Item Family with no Items
In the example below, the BLT Sandwich
Item Family does not have any variations. Requiring the price_amount
and price_currency
to be set at the item family level.
{
"category": [
{
"provider_id": "sandwiches_provider_id",
"name": "Sandwiches",
"item_family_ids": ["blt_provider_id"]
}
],
"item_family": [
{
"provider_id": "blt_provider_id",
"name": "BLT Sandwich",
"description": "BLT Sandwich",
"is_active": true,
"price_amount": 1000,
"price_currency": "usd",
"modifier_group_ids": [],
"item_ids": [],
"images": []
}
],
"item": [],
"modifier_group": [],
"modifier": [],
"menu": []
}
86'd Item Family
In the example below, the BLT Sandwich
item family has been marked as 86'd by populating is_active
with a value of false
.
{
"category": [
{
"provider_id": "sandwiches_provider_id",
"name": "Sandwiches",
"item_family_ids": ["blt_provider_id"]
}
],
"item_family": [
{
"provider_id": "blt_provider_id",
"name": "BLT Sandwich",
"description": "BLT Sandwich",
"is_active": false,
"modifier_group_ids": [],
"item_ids": [],
"images": []
}
],
"item": [],
"modifier_group": [],
"modifier": [],
"menu": []
}
Modifier Group with Rules
In the example below, the Fries
modifier group will only allow one modifier option to be selected (maximum_unique_modifiers_allowed
= 1) while having no requirement of a selection (maximum_unique_modifiers_allowed
= 0)
{
"category": [
{
"provider_id": "all_cheeseburgers_provider_id",
"name": "All Cheeseburgers",
"item_family_ids": ["cheeseburger_provider_id"]
}
],
"item_family": [
{
"provider_id": "cheeseburger_provider_id",
"name": "Cheeseburger",
"description": "Cheeseburger",
"is_active": true,
"modifier_group_ids": ["fries_mg_provider_id"],
"item_ids": [],
"images": []
}
],
"item": [],
"modifier_group": [
{
"provider_id": "fries_mg_provider_id",
"name": "Add Fries",
"is_active": true,
"modifier_ids": [
"small_fries_provider_id",
"med_fries_provider_id",
"large_fries_provider_id"
],
"rules": {
"amount_of_modifiers_free": 0,
"minimum_unique_modifiers_allowed": 0,
"maximum_unique_modifiers_allowed": 1
}
}
],
"modifier": [
{
"provider_id": "small_fries_provider_id",
"name": "Small Fry",
"is_active": true,
"price_amount": 250,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "med_fries_provider_id",
"name": "Medium Fry",
"is_active": true,
"price_amount": 350,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "large_fries_provider_id",
"name": "Large Fry",
"is_active": true,
"price_amount": 450,
"price_currency": "usd",
"modifier_group_ids": []
}
],
"menu": []
}
Modifier Group with Rules - No Maximum
In the example below, the Cheese Slice
modifier group will allow infinite modifier options to be selected (maximum_unique_modifiers_allowed
= null) while having no requirement of a selection (maximum_unique_modifiers_allowed
= 0)
{
"category": [
{
"provider_id": "all_cheeseburgers_provider_id",
"name": "All Cheeseburgers",
"item_family_ids": ["cheeseburger_provider_id"]
}
],
"item_family": [
{
"provider_id": "cheeseburger_provider_id",
"name": "Cheeseburger",
"description": "Cheeseburger",
"is_active": true,
"modifier_group_ids": ["cheese_mg_provider_id"],
"item_ids": [],
"images": []
}
],
"item": [],
"modifier_group": [
{
"provider_id": "cheese_mg_provider_id",
"name": "Cheese Slice",
"is_active": true,
"modifier_ids": [
"cheddar_provider_id",
"colby_provider_id",
"parm_provider_id",
"jalapeno_provider_id",
"swiss_provider_id"
],
"rules": {
"minimum_unique_modifiers_allowed": 0
}
}
],
"modifier": [
{
"provider_id": "small_fries_provider_id",
"name": "Small Fry",
"is_active": true,
"price_amount": 250,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "med_fries_provider_id",
"name": "Medium Fry",
"is_active": true,
"price_amount": 350,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "large_fries_provider_id",
"name": "Large Fry",
"is_active": true,
"price_amount": 450,
"price_currency": "usd",
"modifier_group_ids": []
}
],
"menu": []
}
Modifier Group with Item Family Rule Overrides
In the example below, it will allow 1 free modifier from the Fries
modifier group and have the Large Fry
modifier selected by default for the Cheeseburger combo item family only.
{
"category": [
{
"provider_id": "all_cheeseburgers_provider_id",
"name": "All Cheeseburgers",
"item_family_ids": ["cheeseburger_provider_id"]
}
],
"item_family": [
{
"provider_id": "cheeseburger_combo_provider_id",
"name": "Cheeseburger Combo",
"description": "Cheeseburger with Fries",
"is_active": true,
"modifier_group_ids": ["fries_mg_provider_id"],
"item_ids": ["regular_cheeseburger"],
"images": [],
"modifier_group_rules": {
"fries_mg_provider_id": {
"amount_of_modifiers_free": 1,
"default_modifier_quantities": {
"large_fries_provider_id": 1
}
}
}
}
],
"item": [],
"modifier_group": [
{
"provider_id": "fries_mg_provider_id",
"name": "Add Fries",
"is_active": true,
"modifier_ids": [
"small_fries_provider_id",
"med_fries_provider_id",
"large_fries_provider_id"
],
"rules": {
"amount_of_modifiers_free": 0,
"minimum_unique_modifiers_allowed": 0,
"maximum_unique_modifiers_allowed": 1
}
}
],
"modifier": [
{
"provider_id": "small_fries_provider_id",
"name": "Small Fry",
"is_active": true,
"price_amount": 250,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "med_fries_provider_id",
"name": "Medium Fry",
"is_active": true,
"price_amount": 350,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "large_fries_provider_id",
"name": "Large Fry",
"is_active": true,
"price_amount": 450,
"price_currency": "usd",
"modifier_group_ids": []
}
],
"menu": []
}
Item Family with Item Priced Modifiers
In the example below, it uses a similar pattern to the Combo with group overrides, however the selected modifiers will be priced according to the item selected on platforms that support it. For platforms without support they will be priced according to the normal modifier.price_amount
.
{
"category": [
{
"provider_id": "all_cheeseburgers_provider_id",
"name": "All Cheeseburgers",
"item_family_ids": ["cheeseburger_provider_id"]
}
],
"item_family": [
{
"provider_id": "cheeseburger_combo_provider_id",
"name": "Cheeseburger Combo",
"description": "Cheeseburger with Fries",
"is_active": true,
"modifier_group_ids": ["fries_mg_provider_id"],
"item_ids": [
"jr_cheeseburger_combo",
"reg_cheeseburger_combo",
"lg_cheeseburger_combo"
],
"images": [],
"modifier_group_rules": {
"fries_mg_provider_id": {
"amount_of_modifiers_free": 1,
"default_modifier_quantities": {
"large_fries_provider_id": 1
}
}
}
}
],
"item": [
{
"provider_id": "jr_cheeseburger_combo",
"name": "Junior Combo",
"is_active": true,
"price_amount": 500,
"price_currency": "usd",
"modifier_overrides": {
"french_fries": {
"price_amount": 100
}
}
},
{
"provider_id": "reg_cheeseburger_combo",
"name": "Regular Combo",
"is_active": true,
"price_amount": 750,
"price_currency": "usd",
"modifier_overrides": {
"french_fries": {
"price_amount": 200
}
}
},
{
"provider_id": "lg_cheeseburger_combo",
"name": "Large Combo",
"is_active": true,
"price_amount": 1000,
"price_currency": "usd",
"modifier_overrides": {
"french_fries": {
"price_amount": 300
}
}
}
],
"modifier_group": [
{
"provider_id": "fries_mg_provider_id",
"name": "Add Fries",
"is_active": true,
"modifier_ids": ["french_fries"],
"rules": {
"amount_of_modifiers_free": 0,
"minimum_unique_modifiers_allowed": 0,
"maximum_unique_modifiers_allowed": 1
}
}
],
"modifier": [
{
"provider_id": "french_fries",
"name": "French Fries",
"is_active": true,
"price_amount": 100,
"price_currency": "usd",
"modifier_group_ids": []
}
],
"menu": []
}
Nested Modifiers
In the example below, the Appetizer Platter
Item Family has modifier groups which contain modifiers that have their own modifiers. Defining these nested modifiers is approached the same way as with item families, with a modifier_group_ids
array. Similarly, they may have per-modifier override rules that can be set with the modifier_group_rules
field, which can be seen in the Spread Options
Modifier Group below.
{
"category": [
{
"provider_id": "appetizers_provider_id",
"name": "Appetizers",
"item_family_ids": ["platter_provider_id"]
}
],
"item_family": [
{
"provider_id": "platter_provider_id",
"name": "Appetizer Platter",
"description": "Appetizer Platter",
"is_active": true,
"modifier_group_ids": ["platter_mg_provider_id"],
"item_ids": ["small_platter_provider_id", "large_platter_provider_id"],
"images": []
}
],
"item": [
{
"provider_id": "small_platter_provider_id",
"name": "Small Platter",
"is_active": true,
"price_amount": 500,
"price_currency": "usd"
},
{
"provider_id": "large_platter_provider_id",
"name": "Large Platter",
"is_active": true,
"price_amount": 800,
"price_currency": "usd"
}
],
"modifier_group": [
{
"provider_id": "platter_mg_provider_id",
"name": "Platter Options",
"is_active": true,
"modifier_ids": ["chips_platter", "bread_platter"],
"rules": {
"amount_of_modifiers_free": 0,
"minimum_unique_modifiers_allowed": 1,
"maximum_unique_modifiers_allowed": 1
}
},
{
"provider_id": "salsa_mg_provider_id",
"name": "Add Salsa",
"is_active": true,
"modifier_ids": ["mild_provider_id", "hot_provider_id"],
"rules": {
"selection_type": "multiple",
"amount_of_modifiers_free": 1,
"minimum_unique_modifiers_allowed": 0,
"maximum_unique_modifiers_allowed": 2
}
},
{
"provider_id": "spreads_mg_provider_id",
"name": "Spread Options",
"is_active": true,
"modifier_ids": ["berry_jam_provider_id", "butter_provider_id"],
"rules": {
"selection_type": "multiple",
"amount_of_modifiers_free": 1,
"minimum_unique_modifiers_allowed": 0,
"maximum_unique_modifiers_allowed": 2
}
}
],
"modifier": [
{
"provider_id": "chips_platter",
"name": "Chips and Salsa",
"is_active": true,
"price_amount": 0,
"price_currency": "usd",
"modifier_group_ids": ["salsa_mg_provider_id"]
},
{
"provider_id": "bread_platter",
"name": "Bread",
"is_active": true,
"price_amount": 0,
"price_currency": "usd",
"modifier_group_ids": ["spreads_mg_provider_id"],
"modifier_group_rules": {
"spreads_mg_provider_id": {
"minimum_unique_modifiers_allowed": 1
}
}
},
{
"provider_id": "mild_provider_id",
"name": "Mild Salsa",
"is_active": true,
"price_amount": 200,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "hot_provider_id",
"name": "Hot Salsa",
"is_active": true,
"price_amount": 250,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "berry_jam_provider_id",
"name": "Berry Jam",
"is_active": true,
"price_amount": 250,
"price_currency": "usd",
"modifier_group_ids": []
},
{
"provider_id": "butter_provider_id",
"name": "Butter",
"is_active": true,
"price_amount": 200,
"price_currency": "usd",
"modifier_group_ids": []
}
]
}
Menu with Schedule
In the example below the menu is scheduled to open at 10AM and close at 8PM, in the location's timezone provided via Get Locations
{
"category": [
{
"provider_id": "sandwiches_provider_id",
"name": "Sandwiches",
"item_family_ids": ["blt_provider_id"]
}
],
"item_family": [
{
"provider_id": "blt_provider_id",
"name": "BLT Sandwich",
"description": "BLT Sandwich",
"is_active": true,
"price_amount": 1000,
"modifier_group_ids": [],
"item_ids": [],
"images": []
}
],
"item": [],
"modifier_group": [],
"modifier": [],
"menu": [
{
"provider_id": "lunch_and_dinner_provider_id",
"name": "Lunch & Dinner",
"category_ids": ["sandwiches_provider_id"],
"schedule": {
"monday": ["10:00-20:00"],
"tuesday": ["10:00-20:00"],
"wednesday": ["10:00-20:00"],
"thursday": ["10:00-20:00"],
"friday": ["10:00-20:00"],
"saturday": [],
"sunday": []
}
}
]
}
Nested Categories
In the example below, there is a parent category "Coffee" with sub-categories "Lattes" and "Cappuccinos". Note that DSP support varies for nested categories, so the examples below may be flattened into "Coffee - Lattes" and "Coffee - Cappuccinos" on some platforms.
{
"category": [
{
"provider_id": "coffee_provider_id",
"name": "Coffee",
"item_family_ids": [],
"category_ids": ["lattes_provider_id", "cappuccinos_provider_id"]
},
{
"provider_id": "lattes_provider_id",
"name": "Lattes",
"item_family_ids": ["latte_provider_id"]
},
{
"provider_id": "cappuccinos_provider_id",
"name": "Cappuccinos",
"item_family_ids": ["cappuccino_provider_id"]
}
],
"item_family": [
{
"provider_id": "latte_provider_id",
"name": "Latte",
"description": "Latte",
"is_active": true,
"price_amount": 500,
"price_currency": "usd",
"images": []
},
{
"provider_id": "cappuccino_provider_id",
"name": "Cappuccino",
"description": "Cappuccino",
"is_active": true,
"price_amount": 500,
"price_currency": "usd",
"images": []
}
],
"item": [],
"modifier_group": [],
"modifier": []
}
DSP Specific Markups
In the example below, the BLT Sandwich has distinct price markups for Doordash and Uber Eats. The standard price_amount
property will be applied to any DSPs not present in the list.
DSP price overrides are supported for Item Families, Items, and Modifiers. API Spec
NOTE: Markups from the POS will always override those set within the UI
{
"category": [
{
"provider_id": "sandwiches_provider_id",
"name": "Sandwiches",
"item_family_ids": ["blt_provider_id"]
}
],
"item_family": [
{
"provider_id": "blt_provider_id",
"name": "BLT Sandwich",
"description": "BLT Sandwich",
"is_active": true,
"price_amount": 1000,
"price_currency": "usd",
"dsp_price_amount_overrides": [
{
"dsp": "doordash",
"price_amount": 1200
},
{
"dsp": "ubereats",
"price_amount": 1100
}
],
"modifier_group_ids": [],
"item_ids": [],
"images": []
}
],
"item": [],
"modifier_group": [],
"modifier": [],
"menu": []
}