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.

Used by GET /items/getFullMenu (response)

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

  • idstring | integerRequired

    The category's Blizzfull ID.

  • namestringRequired
  • shortNamestring

    A URL-safe name.

  • parentstring | integer

    The parent category's ID, or 0 for a top-level category.

  • positionstring | integer

    Display order among its siblings; the array is already sorted by it.

  • specialTypestring | null

    Set on the restaurant's automatic dietary categories (gluten-free, vegan, keto, spicy), whose items also appear in their own categories. Null otherwise.

  • activeboolean

    False when the restaurant has hidden the category.

  • True when the category is shown but can't be ordered from.

  • secretboolean

    True when the category is hidden from the public menu.

  • isMenuboolean
  • availableTimeDatainteger[][] | null

    When 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 | null

    First date the category can be ordered, or null.

  • availableUntilstring | null

    Last date the category can be ordered, or null.

  • Images, or null.

  • Subcategories, with the same fields. Null when there are none.

  • itemsItem[]Required

Item

object

Something a customer can order.

Used by Category.items

  • idintegerRequired

    The item's Blizzfull ID: an order line's id.internal.

  • namestringRequired
  • categorystring

    The ID of the item's home category.

  • pricestringRequired

    The price in dollars, as a decimal string ("13.99"). For a sized item, its cheapest size.

    Example
    "13.99"
  • inactivefalse | "86" | "nonexistent"Required

    Whether the item can be ordered now. false: available. "86": sold out (until inactiveEnds, when set). "nonexistent": removed from the menu. It is never true.

  • inactiveEndsstring | null

    When a sold-out item comes back, as Unix seconds in a string. "4294967295" means until someone turns it back on. Null when available.

  • sizeableboolean

    True when the item comes in sizes.

  • sizesSize[] | null

    The item's sizes, or null when it has none.

  • The item's parts. Always one entry, which holds the item's option groups.

  • optionsarray

    Unused; always empty. Option groups are under fooditems[].options.

  • Images, or null.

  • spicyboolean
  • vegetarianboolean

    The vegan badge.

  • gfboolean

    Gluten free.

  • ketoboolean
  • specialtyboolean
  • alcoholicboolean

    True when ID must be checked on hand-off.

  • taxExemptboolean
  • When set (take-out, delivery, for-here), the item can only be ordered that way. Empty for any.

  • Offered on the website and app.

  • Offered at kiosks.

    The self-order kiosk is a paid add-on.

  • Offered at the register.

  • As min-max; 0-0 when not set.

    Example
    "500-1200"
  • customTagsobject[]

    The restaurant's own labels for the item.

  • autoAddboolean
  • stockinteger
  • posDataobject | null

    Data a point-of-sale integration keeps on the item.

Size

object

One size of an item.

Used by Item.sizes

  • idstringRequired

    The size's Blizzfull ID: an order line's size.id.internal.

  • namestringRequired
    Example
    "6 Pcs"
  • coststringRequired

    The item's whole price in this size, in dollars, as a decimal string. Not an add-on to price.

    Example
    "12.99"

FoodItem

object

The item's part that holds its option groups.

Used by Item.fooditems

OptionGroup

object

A set of choices on this item, such as wing flavors.

Used by FoodItem.options, Option.subOptions

  • linkageIDstring

    This group's link to this item. Send it as optionGroupId in an order's optionSelections. Unique per item; the same group on another item has a different linkageID.

  • idstringRequired

    The option group's own ID, shared by every item it is attached to.

  • titlestringRequired

    The group's name.

  • phrasestring

    The prompt shown to customers (Choose your sauce). May be empty.

  • The name printed for the kitchen. May be empty.

  • typestringRequired

    How the customer chooses. TYPE_SINGLE_SELECT: one option (selected: 1). TYPE_MULTI_SELECT: any options. TYPE_UNIT_STEPPER: a count of each (selected is the count). TYPE_VARIABLE_AMOUNT: a level of each (selected 1 light, 2 regular, 3 extra).

    One of
    "TYPE_SINGLE_SELECT" "TYPE_MULTI_SELECT" "TYPE_UNIT_STEPPER" "TYPE_VARIABLE_AMOUNT"
  • requiredboolean

    True when the customer must choose.

  • positionstring | integer

    Display order; the array is already sorted by it.

  • extraPropsobject | null

    Limits for this group on this item, when set.

  • sizeEffectsobject | null

    Option 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.

  • itemsOption[]Required

    The options, in display order.

Option

object

One choice in a group.

Used by OptionGroup.items

  • idstring | nullRequired

    The option's Blizzfull ID: send it as optionItemId.

  • namestring | nullRequired
  • costnumber | string | objectRequired

    What the option adds, in dollars. For a light/regular/extra option, an object with the price per level: basePrice (regular), light, and extra (dollars, or a percentage of basePrice such as "200%").

    As an object:

  • defaultintegerRequired

    The option's pre-selected value: 0 when not pre-selected, otherwise the count or level.

  • unavailableUntilstring | null

    "0" when available. Otherwise sold out until this Unix time; "4294967295" means until someone turns it back on.

  • minstring

    For a stepper: the fewest of this option, as a decimal string.

  • maxstring

    For a stepper: the most of this option, as a decimal string.

  • positioninteger
  • mediastring | null
  • Groups that open when this option is chosen, with the same fields as a group (no linkageID: in optionSelections, a nested group is named by its id). Null when there are none.

Media

object | null

Images, or null.

Used by Category.media, Item.media

A mom-and-pop should never lose to a chain on anything.

With Blizzfull, it doesn’t have to.

API reference

2,500+ restaurants served24/7 support(213) 529-3956