
API reference blizzfullMenuSchema.json
Blizzfull Menu (import)
A whole menu, as a point of sale or partner sends it to Blizzfull to create or update a restaurant's menu.
JSON Schema apiv2.blizzfull.com/schema/blizzfullMenuSchema.json Copy on this site
About
How an import works:
- Every ID is yours (the sender's): categories, items, sizes, option groups and options. Blizzfull remembers which of its records each of your IDs became, so importing the same IDs again updates those records in place. Keep IDs stable. An option's ID only needs to be unique within its group.
- Arrays are ordered: the menu shows categories, items, groups and options in the order you send them.
- Prices are dollars as numbers (
9.99), not cents. - Option groups are defined once in
option_groupsand attached to items (or whole categories) by ID throughgroups. Only groups that something attaches are imported; the same goes forsizes. - Unknown fields are ignored, so you can send extra data.
Used by POST /menu/import (request), POST /menu/importExternalPOSMenu/{posName} (request)
MenuImport
The document object
The menu's categories, in display order. Each holds items and, one level deep, subcategories (
children).Every option group the menu uses (toppings, sauces, sides, cooking temperatures), defined once and attached to items and categories by ID. Send an empty array when there are none.
Every size the menu uses (Small, 12", 6 Pcs), defined once and attached to items by ID with a price for each item. Send an empty array when there are none. An object keyed by size ID is also accepted.
merchantobjectOptional settings for the restaurant itself rather than its menu. Sending this changes the live restaurant immediately.
hoursobjectWhen the restaurant takes orders, separately for delivery and pickup.
Ordering hours by weekday, or for one date (
MM/DD). Each value is a list of[open, close]ranges in 24-hourHH:MM. A weekday you leave out is closed.Ordering hours by weekday, or for one date (
MM/DD). Each value is a list of[open, close]ranges in 24-hourHH:MM. A weekday you leave out is closed.
No other keys.
pausedbooleanTrue stops the restaurant taking orders; false resumes.
custom_mapsobject | arrayExtra ID mappings a point-of-sale integration keeps with the menu (for example, how its modifier combinations map to its own items). Stored as given; Blizzfull does not interpret it.
enforceSyncCompatibilityintegerOnly for
POST /menu/importExternalPOSMenu/{posName}: the menu-sync version you built against. The current version is1; an import is refused if it doesn't match. Ignored by other imports.
{
"categories": [
{
"id": "wings",
"name": "Wings",
"items": [
{
"id": "w6",
"name": "6 Wings",
"price": 9.99,
"tags": [
"spicy"
],
"groups": [
{
"id": "flavors",
"required": true
}
]
}
]
}
],
"option_groups": [
{
"id": "flavors",
"name": "Flavor",
"type": "TYPE_SINGLE_SELECT",
"options": [
{
"id": "buffalo",
"name": "Buffalo",
"price": 0
},
{
"id": "lemon-pepper",
"name": "Lemon Pepper",
"price": 0.5
}
]
}
],
"sizes": []
}id
integer | string
Your ID for the record. Must be stable between imports and must not be 0 or empty.
Used by category.id, item.id, item_size.id, size.id, option_group.id, option.id, option.sub_options.id, option_group_link.id, option_link.id, option_link.sizePriceOverrides.id, option_link.sub_options.id, option_link.sub_options.options.id
images
string | string[]
Image URLs: one string, or an array of strings. Each must be absolute, public and point at an image; Blizzfull downloads them during the import, and a URL that is not an image stops the import.
Used by category.imageURL, category.imageUrl, item.imageURL, item.imageUrl
store_hours
object
Ordering hours by weekday, or for one date (MM/DD). Each value is a list of [open, close] ranges in 24-hour HH:MM. A weekday you leave out is closed.
Used by MenuImport.merchant.hours.delivery, MenuImport.merchant.hours.pickup
No other keys.
time_range
string[]
An [open, close] pair in 24-hour HH:MM.
Used by store_hours.key, category_hours.key
category_hours
object
When a category can be ordered, by weekday: {"monday": [["11:00", "14:45"]]}. Only the first range of each day is used. Times run from 04:00 to 28:00 (4 AM the next morning), and ["00:00", "00:00"] closes the day. A weekday you leave out is closed, so {} hides the category all week. Leave hours out entirely for a category available whenever the restaurant is open.
Used by category.hours
category
object Category
A section of the menu holding items, and optionally one level of subcategories.
Used by MenuImport.categories, category.children
Your ID for the record. Must be stable between imports and must not be 0 or empty.
descriptionstringactivebooleanFalse hides the category, whatever its hours. Defaults to true. Applied when an existing category is updated; a newly created category is always shown.
When a category can be ordered, by weekday:
{"monday": [["11:00", "14:45"]]}. Only the first range of each day is used. Times run from 04:00 to 28:00 (4 AM the next morning), and["00:00", "00:00"]closes the day. A weekday you leave out is closed, so{}hides the category all week. Leavehoursout entirely for a category available whenever the restaurant is open.Image URLs: one string, or an array of strings. Each must be absolute, public and point at an image; Blizzfull downloads them during the import, and a URL that is not an image stops the import.
Older spelling of
imageURL, used whenimageURLis absent.Option groups attached to every item in the category, placed before each item's own groups.
The category's items, in display order. An item ID that appears in more than one category is imported once, in the last category it appears in.
Subcategories. One level only: a subcategory's own
childrenare ignored.
item
object Menu item
Something a customer can order, with a flat price or a price per size, and the option groups that customize it.
Used by category.items
Your ID for the record. Must be stable between imports and must not be 0 or empty.
descriptionstring | nullThe base price in dollars. For a sized item, each size's price is added to this.
activeboolean | integertrue(or left out): on the menu.false: hidden. A Unix timestamp: sold out (86'd) until then.0: sold out until turned back on.availableDatesobject[]tagsstring[]Dietary and other badges. Recognized:
spicy,specialty,vegan,gf(gluten free),keto,alcoholic, and the upper-case formsHOT,SPICY,SPECIALTY,VEGAN,GLUTEN_FREE. Anything else is ignored, includingvegetarian: sendvegan.Image URLs: one string, or an array of strings. Each must be absolute, public and point at an image; Blizzfull downloads them during the import, and a URL that is not an image stops the import.
Older spelling of
imageURL, used whenimageURLis absent.The sizes this item comes in, each with its price for this item. The item's displayed price becomes its cheapest size.
The option groups that customize this item, in display order. Send an empty array when there are none.
skustringYour SKU, kept for loyalty-program matching.
loyaltyMapstringLoyalty-program product codes for the item, comma separated.
loyaltyTagsstring[] | stringLoyalty-program tags for the item: an array, or one comma-separated string.
item_size
object Item size
One size of this item and what it adds to the item's price.
Used by item.sizes
A size from the top-level
sizes, or a new size defined here withname.Dollars added to the item's
pricefor this size. With a base price of 5 and a size price of 1, the size costs 6.namestringThe size's name, when it is not in the top-level
sizes.
size
object Size
A size, priced per item where items attach it.
Used by MenuImport.sizes
Your ID for the record. Must be stable between imports and must not be 0 or empty.
namestring
option_group
object Option group
A set of choices, such as wing flavors or burger toppings. How customers choose depends on type.
Used by MenuImport.option_groups
Your ID for the record. Must be stable between imports and must not be 0 or empty.
typestringTYPE_SINGLE_SELECT: pick one.TYPE_MULTI_SELECT: pick any.TYPE_UNIT_STEPPER: pick a quantity of each.TYPE_VARIABLE_AMOUNT: pick a level of each (light, regular, extra). When left out, it is inferred:allow_quantityabove 0 makes a stepper,force_minandforce_maxboth 1 make a single select, anything else a multi select.allow_quantitynumberUsed only to infer
typewhen it is absent: above 0 means a unit stepper.force_minnumberUsed only to infer
typewhen it is absent. Set limits per item on the group link instead.force_maxnumberUsed only to infer
typewhen it is absent. Set limits per item on the group link instead.The choices, in display order. Send an empty array for a group with none.
option
object Option
One choice in an option group, such as Buffalo or Extra Cheese.
Used by option_group.options
Your ID for the option, unique within its group.
What the option adds, in dollars. May be 0 or negative.
inactiveEndsnumberSold out until this Unix time. Leave it out for an available option. Applied when an existing option is updated, not when it is first created.
min_unitsintegerFor a
TYPE_UNIT_STEPPERgroup: the fewest of this option a customer may choose.max_unitsintegerFor a
TYPE_UNIT_STEPPERgroup: the most of this option a customer may choose.sub_optionsobject[]Ignored: options keep the order they are sent in.
option_group_link
object Option group link
Attaches an option group to an item or category, with any rules and defaults for that item.
Used by category.groups, item.groups
The option group's ID.
requiredboolean | integer | stringTrue means the customer must choose from this group. Also accepts 1, "1" and "true".
force_minnumberFor multi-select groups, the fewest options a customer must choose; for unit steppers, the fewest units. Ignored for single-select and variable-amount groups.
force_maxnumberFor multi-select groups, the most options a customer may choose; for unit steppers, the most units in total. Ignored for single-select and variable-amount groups.
free_optionsnumberHow many choices are included free before options start costing extra. Options selected by default don't count. Ignored for single-select groups.
Per-item settings for particular options of the group: defaults, size prices and nested groups. It does not limit which options appear; every option in the group is offered.
option_link
object Option settings for an item
Settings for one option of the group, on this item only.
Used by option_group_link.options
The option's ID within the group.
defaultinteger | booleanPre-selects the option: the quantity or level, or true. 0 or false leaves it unselected. A single-select group with no defaults pre-selects its first option.
sizePriceOverridesobject[]sub_optionsobject[]Nested groups this option opens on this item, with their defaults. This is what attaches a nested group.
The nested option group's ID.
optionsobject[]

A mom-and-pop should never lose to a chain on anything.
With Blizzfull, it doesn’t have to.
2,500+ restaurants served24/7 support(213) 529-3956