
API reference menu-feed.schema.json
Menu feed
A restaurant's live menu as Blizzfull serves it from GET /items/getFullMenu: its categories, their items, each item's sizes and option groups, and what is available right now.
JSON Schema apiv2.blizzfull.com/schema/menu-feed.schema.json Copy on this site
About
Use it to show the menu and to build orders. An order line names the item's id, its size's id, and its choices as optionSelections, where optionGroupId is the option group's linkageID on that item and optionItemId is the option's id.
It is a different shape from the menu import format (blizzfullMenuSchema.json): this feed uses Blizzfull's IDs, dollar prices as strings, and the restaurant's current availability.
New fields may be added at any time. Ignore fields you don't recognise.
MenuFeed
The document Category[]
[
{
"id": "26900",
"name": "Combos",
"shortName": "combos",
"description": "",
"parent": "0",
"position": "0",
"specialType": null,
"active": true,
"displayOnly": false,
"secret": false,
"isMenu": false,
"availableTimeData": null,
"availableFrom": null,
"availableUntil": null,
"media": null,
"children": null,
"items": [
{
"id": 166519,
"name": "Hungry Combo",
"description": "Tenders or wings, a flavor, a side and a drink.",
"category": "26900",
"categoryName": "Combos",
"categoryShortName": "combos",
"price": "16.50",
"inactive": false,
"inactiveEnds": null,
"sizeable": false,
"sizes": null,
"media": null,
"spicy": false,
"vegetarian": false,
"gf": false,
"keto": false,
"alcoholic": false,
"taxExempt": false,
"orderTypeRestriction": "",
"options": [],
"fooditems": [
{
"id": 221801,
"name": "Hungry Combo",
"description": "",
"options": [
{
"linkageID": "216385",
"id": "97001",
"componentID": "221801",
"title": "Choose a style",
"phrase": "",
"kitchenname": "",
"type": "TYPE_SINGLE_SELECT",
"required": true,
"position": "1",
"defaultIndex": 0,
"extraProps": null,
"sizeEffects": null,
"items": [
{
"id": "441415",
"name": "6 Tenders",
"cost": 0,
"default": 0,
"unavailableUntil": "0",
"position": 1,
"media": null,
"subOptions": null
},
{
"id": "441416",
"name": "8 Wings",
"cost": 0,
"default": 0,
"unavailableUntil": "0",
"position": 2,
"media": null,
"subOptions": null
}
]
},
{
"linkageID": "216386",
"id": "97002",
"componentID": "221801",
"title": "Choose a flavor",
"phrase": "",
"kitchenname": "",
"type": "TYPE_SINGLE_SELECT",
"required": true,
"position": "2",
"defaultIndex": 0,
"extraProps": null,
"sizeEffects": null,
"items": [
{
"id": "441417",
"name": "Lemon Pepper",
"cost": 0,
"default": 0,
"unavailableUntil": "0",
"position": 1,
"media": null,
"subOptions": null
},
{
"id": "441418",
"name": "Mango Habanero",
"cost": 0.5,
"default": 0,
"unavailableUntil": "0",
"position": 2,
"media": null,
"subOptions": null
}
]
}
]
}
]
}
]
}
]Category
object
A section of the menu. Items tagged vegan, gluten free, keto or spicy also appear again in the restaurant's matching special category, and items in no category are listed last under Uncategorized (id 0).
Used by MenuFeed, Category.children
The category's Blizzfull ID.
shortNamestringA URL-safe name.
descriptionstringparentstring | integerThe parent category's ID, or 0 for a top-level category.
positionstring | integerDisplay order among its siblings; the array is already sorted by it.
specialTypestring | nullSet on the restaurant's automatic dietary categories (
gluten-free,vegan,keto,spicy), whose items also appear in their own categories. Null otherwise.activebooleanFalse when the restaurant has hidden the category.
displayOnlybooleanTrue when the category is shown but can't be ordered from.
secretbooleanTrue when the category is hidden from the public menu.
isMenubooleanavailableTimeDatainteger[][] | nullWhen the category can be ordered, by weekday from Sunday: seven
[start, end]pairs in minutes on a clock that starts at 4 AM (240 is 4:00 AM, 1680 is 4:00 AM the next day). Null means whenever the restaurant is open.availableFromstring | nullFirst date the category can be ordered, or null.
availableUntilstring | nullLast date the category can be ordered, or null.
Images, or null.
Subcategories, with the same fields. Null when there are none.
Item
object
Something a customer can order.
Used by Category.items
The item's Blizzfull ID: an order line's
id.internal.descriptionstringcategorystringThe ID of the item's home category.
categoryNamestringcategoryShortNamestringThe price in dollars, as a decimal string (
"13.99"). For a sized item, its cheapest size.Whether the item can be ordered now.
false: available."86": sold out (untilinactiveEnds, when set)."nonexistent": removed from the menu. It is nevertrue.inactiveEndsstring | nullWhen a sold-out item comes back, as Unix seconds in a string.
"4294967295"means until someone turns it back on. Null when available.sizeablebooleanTrue when the item comes in sizes.
The item's sizes, or null when it has none.
The item's parts. Always one entry, which holds the item's option groups.
optionsarrayUnused; always empty. Option groups are under
fooditems[].options.Images, or null.
spicybooleanvegetarianbooleanThe vegan badge.
gfbooleanGluten free.
ketobooleanspecialtybooleanalcoholicbooleanTrue when ID must be checked on hand-off.
taxExemptbooleanorderTypeRestrictionstringWhen set (
take-out,delivery,for-here), the item can only be ordered that way. Empty for any.appliesToWebAppbooleanOffered on the website and app.
appliesToKioskbooleanOffered at kiosks.
The self-order kiosk is a paid add-on.
appliesToPosbooleanOffered at the register.
calorieRangestringAs
min-max;0-0when not set.customTagsobject[]The restaurant's own labels for the item.
textstringcolorstringbgcolorstringinternalOnlybooleanTrue when the label is for staff only: don't show it to customers.
autoAddbooleanstockintegerposDataobject | nullData a point-of-sale integration keeps on the item.
Size
object
One size of an item.
Used by Item.sizes
The size's Blizzfull ID: an order line's
size.id.internal.The item's whole price in this size, in dollars, as a decimal string. Not an add-on to
price.
FoodItem
object
The item's part that holds its option groups.
Used by Item.fooditems
idintegernamestringdescriptionstringThe item's option groups, in display order.
OptionGroup
object
A set of choices on this item, such as wing flavors.
Used by FoodItem.options, Option.subOptions
linkageIDstringThis group's link to this item. Send it as
optionGroupIdin an order'soptionSelections. Unique per item; the same group on another item has a differentlinkageID.The option group's own ID, shared by every item it is attached to.
componentIDstringThe group's name.
phrasestringThe prompt shown to customers (
Choose your sauce). May be empty.kitchennamestringThe name printed for the kitchen. May be empty.
How the customer chooses.
TYPE_SINGLE_SELECT: one option (selected: 1).TYPE_MULTI_SELECT: any options.TYPE_UNIT_STEPPER: a count of each (selectedis the count).TYPE_VARIABLE_AMOUNT: a level of each (selected1 light, 2 regular, 3 extra).requiredbooleanTrue when the customer must choose.
positionstring | integerDisplay order; the array is already sorted by it.
defaultIndexintegerextraPropsobject | nullLimits for this group on this item, when set.
maxSelectableinteger | stringThe most options a customer may choose.
minSelectableinteger | stringThe fewest options a customer must choose.
minRequiredinteger | stringmaxCombinedAmountinteger | stringFor a stepper, the most units in total.
amountIncludedinteger | stringHow many choices are included free.
sizeEffectsobject | nullOption prices that change with the item's size:
items[optionID][sizeID]is the option's price in dollars for that size. Null when prices don't change by size.The options, in display order.
Option
object
One choice in a group.
Used by OptionGroup.items
The option's Blizzfull ID: send it as
optionItemId.The option's pre-selected value: 0 when not pre-selected, otherwise the count or level.
minstringFor a stepper: the fewest of this option, as a decimal string.
maxstringFor a stepper: the most of this option, as a decimal string.
positionintegermediastring | nullsubOptionsOptionGroup[] | nullGroups that open when this option is chosen, with the same fields as a group (no
linkageID: inoptionSelections, a nested group is named by itsid). Null when there are none.
Media
object | null
Images, or null.
Used by Category.media, Item.media
standardobject[]

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