This guide will be removed on April 29, 2022. Please use our new, easier-to-use Toast technical documentation site. All updated content is on the new site.

Menus

This section describes information about each menu entity at your restaurant.

Menu

The following table shows the information about each menu at your restaurant from from the menu data export.

Field

Description

Data Type

entityType

The type of the menu component described by this JSON object. The value for a menu object is Menu.

String

name

A descriptive identifier for the menu. For example, Food or Drinks.

String

guid

The unique identifier for the menu, assigned by the Toast POS.

String

description

A written description of the menu.

String

groups

A JSON array of ??? objects.

JSON array

idString

This field is for Toast internal use only.

String

orderableOnline

Indicates whether the menu is available for online ordering. Valid values are true and false. This field is a Boolean version of the orderableOnlineStatus field.

Boolean

orderableOnlineStatus

Indicates whether the menu is available for online ordering. Valid values are YES and NO. This field is a string version of the orderableOnline field.

String

visibility

Indicates where the menu is displayed and who can see it. Values are:

  • ALL - The menu is visible to everyone. For example, the menu is seen by restaurant employees using a Toast POS device and by restaurant guests using the online ordering page.

  • POS_ONLY - The menu is visible only on Toast POS devices (including kiosks).

  • NONE - The menu is hidden from everyone.

String

startTime

The time of day when a time-based menu becomes available. The value is in milliseconds (for example, 41400000) since the start of the restaurant's day (the day starts at 0). When converted to 24-hour clock time, the result should be the same as the startTimeHHmm field.

Int

endTime

The time of day when a time-based menu stops being available. The value is in milliseconds (for example, 57600000) since the start of the restaurant's day (the day starts at 0). When converted to 24-hour clock time, the result should be the same as the endTimeHHmm field.

Int

startTimeHHmm

The time of day when a time-based menu becomes available. The time is in 24-hour HHmm format (for example, 15:45). This value is a conversion of the startTime field to a more readable format (the day starts at 00:00).

String

endTimeHHmm

The time of day when a time-based menu stops being available. The time is in 24-hour HHmm format (for example, 19:35). This value is a conversion of the endTime field to a more readable format (the day starts at 00:00).

String

startTimeLocalStandardTime

The time of day when a time-based menu becomes available. The value is in milliseconds since the start of the restaurant's day (the day starts at 0). The value adds the restaurant timezone's offset (for example, -5 hours in a 23400000 value). Note that Daylight Saving Time (DST) is ignored. When converted to 24-hour clock time, the result should be the same as the startTimeHHmm field.

Int

endTimeLocalStandardTime

The time of day when a time-based menu stops being available. The value is in milliseconds since the start of the restaurant's day (the day starts at 0). The value adds the restaurant timezone's offset (for example, -5 hours in a 36900000 value). Note that Daylight Saving Time (DST) is ignored. When converted to 24-hour clock time, the result should be the same as the startTimeLocalStandardTime field.

Int

startTimeHHmmLocalStandardTime

The time of day when a time-based menu becomes available. The time is in 24-hour HHmm format (for example, 15:45). This value is a conversion of the startTimeLocalStandardTime field to a more readable format (the day starts at 00:00).

String

endTimeHHmmLocalStandardTime

The time of day when a time-based menu stops being available. The time is in 24-hour HHmm format (for example, 19:35). This value is a conversion of the endTimeLocalStandardTime field to a more readable format (the day starts at 00:00).

String

availableAllTimes

Indicates whether the menu is available at all times of the day. If the value is false, then the startTime* fields and the endTime* fields list when this time-based menu is available.

Boolean

availableAllDays

Indicates whether the menu is available each day of the week.

Boolean

daysAvailableString

A JSON array of strings that lists the days of the week when the menu is available. The days are listed in an abbreviated format, such as Sun or Thurs.

In this example, the menu is available on all days except for Sunday and Saturday:

"daysAvailableString": [
   "Mon",
   "Tues",
   "Wed",
   "Thurs",
   "Fri"
]

JSON array

daysAvailableBits

This field is a numeric version of the daysAvailableString field and is for Toast internal use only.

Int

imageLink

A URL to an image located on Amazon S3. For example:

https://s3.amazonaws.com/toasttab/restaurants/restaurant-59760/menu/items/5/item-4989_149066.jpg

String

MenuGroup

The following table shows the information about each menu group at your restaurant from the menu data export.

Field

Description

Data Type

entityType

The type of the menu component described by this JSON object. The value for a menu object is MenuGroup.

String

name

A descriptive identifier for the menu group. For example, Appetizers or Entrees.

String

guid

The unique identifier for the menu group, assigned by the Toast POS.

String

description

A written description of the menu group.

String

subgroups

An array of other MenuGroup objects. For example, Red Wine is the menu group and it has the subgroups By the Glass and By the Bottle.

JSON array

items

An array of ??? objects.

JSON array

idString

This field is for Toast internal use only.

String

imageLink

A URL to an image located on Amazon S3. For example:

https://s3.amazonaws.com/toasttab/restaurants/restaurant-59760/menu/items/5/item-4989_149066.jpg

String

orderableOnline

Indicates whether the menu group is available for online ordering.

Boolean

visibility

Indicates where the menu group is displayed and who can see it. Values are:

  • ALL - The menu group is visible to everyone. For example, the menu group is seen by restaurant employees using a Toast POS device and by restaurant guests using the online ordering page.

  • POS_ONLY - The menu group is visible only on Toast POS devices (including kiosks).

  • NONE - The menu group is hidden from everyone.

String

MenuItem

The following table shows the information about each menu item at your restaurant from the menu data export.

Field

Description

Data Type

entityType

The type of the menu component described by this JSON object. The value for a menu item object is MenuItem.

String

name

A descriptive identifier for the menu item. For example, Caesar Salad or Lemonade.

String

guid

The unique identifier for the menu item, assigned by the Toast POS.

String

description

A written description of the menu item.

String

sku

The stock keeping unit (SKU) identifier for the item.

String

plu

The price lookup (PLU) code for the item.

String

maxSelections

This value only applies to items in a ??? object.

Integer

price

The amount of money that the item costs, expressed in U.S. dollars. All currency in Toast is treated the same and uses the dollar symbol $. There is no conversion between currency.

Currency

prices

An array of menu-specific prices for the item. If an item is included in more than one menu, it can have different prices on each menu. For example, if you have a Lunch menu and a Dinner menu, a menu item can belong to both menus and have one price for the Lunch menu and a higher price for the Dinner menu.

JSON array

isDefault

Whether or not the item is selected unless a customer chooses to decline it.

Boolean

optionGroups

An array of ??? objects.

JSON array

idString

This field is for Toast internal use only.

String

itemGroupGuid

The unique identifier of the menu group to which this menu item belongs.

String

calories

The caloric value for this menu item. The value can be any positive or negative integer, or zero.

Integer

imageLink

A URL to an image located on Amazon S3. For example:

https://s3.amazonaws.com/toasttab/restaurants/restaurant-59760/menu/items/5/item-4989_149066.jpg

String

orderableOnline

Indicates whether the menu item is available for online ordering.

Boolean

visibility

Indicates where the menu item is displayed and who can see it. Values are:

  • ALL - The menu item is visible to everyone. For example, the menu item is seen by restaurant employees using a Toast POS device and by restaurant guests using the online ordering page.

  • POS_ONLY - The menu item is visible only on Toast POS devices (including kiosks).

  • NONE - The menu item is hidden from everyone.

String

MenuOptionGroup

The following table shows the information about each menu option group, or modifier group, at your restaurant from the menu data export.

Field

Description

Data Type

entityType

The type of the menu component described by this JSON object. The value for a menu option group object is MenuOptionGroup.

String

name

A descriptive identifier for the menu option group. For example, Substitutions or Extras.

String

guid

The unique identifier for the menu option group, assigned by the Toast POS.

String

minSelections

The minimum number of options that a customer can choose from the menu option group. If a server must make a selection from the menu option group, the value is 1. For example, a menu item might require that a customer choose an option from a menu option group that specifies the level of doneness.

Integer

maxSelections

The maximum number of options that a customer can choose from the menu option group. If a customer can choose an unlimited number of options from a menu option group, the value is null.

As an example of a menu option group with a maximum greater than one, assume this configuration:

Group: Cheese
Items: ( Cheddar, American, Swiss )
maxSelections: 2
minSelections: 1

This means:

  • You can select AT MOST two different cheeses from this group to apply on the item (the maxSelections value).

  • You must select AT LEAST one cheese from this group to apply on the item (the minSelections value).

Integer or null

pricingMode

Indicates how the options in the menu option group affect the price of the menu items they are applied to. Values are:

  • ADJUSTS_PRICE - Choosing an option from the menu option group affects the price of the menu item it applies to. The amount of the adjustment depends on the price of the option applied.

  • FIXED_PRICE - Choosing an item from the menu option group affects the price of the item it applies to. The amount of the adjustment is set at the menu option group level and applies to all options in the group. Note that this does not necessarily mean that all options in the group have an identical price. It means that all options in the group are treated the same way with respect to pricing. For example, if the menu option group uses sequence pricing, and the first two options are free while the third is $1, the specific modifier that costs $1 is arbitrary. Fixed refers to the fact that the pricing is fixed at the modifier group level, not that the price of each option in the group is constant.

  • INCLUDED - Choosing an option from the menu option group does not affect the price of the menu item it applies to (because the price of the option is included in the price of the menu item it applies to).

String

pricingStrategy

Indicates the way prices are set for the options in this menu option group. Values are:

  • NONE - Indicates that no pricing strategy is defined for this menu option group. pricingStrategy is set to NONE if the pricingMode is set to ADJUSTS_PRICE (prices are set on individual items in the menu option group, not on the menu option group itself, so there is no pricing strategy for the menu option group as a whole) or INCLUDED (no additional cost is charged for the options in the menu option group).

  • BASE_PRICE - The pricing strategy for the menu option group is a constant price that does not change based on other conditions (such as size, sequence of ordering, and so on). For example, all of the options in the menu option group cost $1 at all times.

  • SEQUENCE_PRICE - The pricing strategy for the menu option group is Sequence Price. With sequence pricing, the order in which options are specified determines the cost of each option, for example, the first option costs $1.00, the second costs $1.50, and the third costs $1.75.

  • UNSUPPORTED_STRATEGY - The pricing strategy for the menu option group is one that, while it is supported internally in the Toast POS system, it is not yet supported for use via API. Currently, two pricing strategies are unsupported by the API, Size Price and Size/Sequence Price.

String

pricingStrategyRules

An object that contains the pricing rules for the chosen pricingStrategy. If the pricing strategy is NONE or UNSUPPORTED_STRATEGY, this object is set to NONE.

JSON object

defaultOptionsChargePrice

Indicates whether the prices associated with the menu option group's default options are added to the cost of the menu items they modify. Values are:

  • NO - The option price is ignored. No change is made to the cost of the menu item.

  • YES - The option price is added to the cost of the menu item.

String

defaultOptionsSubstitutionPricing

Indicates whether substitution pricing is enabled for the menu options group. Values are:

  • NO - Substitution pricing is not enabled. Removing a default option from a menu item has no impact on the price of the menu item.

  • YES - Substitution pricing is enabled. Substitution pricing allows a guest to remove one or more default options from a menu item and apply the value of those options toward the purchase of one or more different options. For example, a guest orders a salad that comes with chicken by default but asks to substitute salmon for the chicken. The price of the chicken option is $7. The price of the salmon option is $9. In this case, the Toast POS system calculates the difference and charges the substitution price of $2 for the salmon (not the regular price of $9).

There are two scenarios that can occur with substitution pricing:

  • If the substitution options cost the same as or less than the default options, then no price adjustments occur. The menu item costs the same as it does with the default options.

  • If the substitution options cost more than the default options, then the Toast POS system calculates the difference in price and reprices the substitution options accordingly. For example, if you remove a default option that costs $10 and replace it with two options that cost $8 and $7, then the cost of the replacement options is $5 ($8 + $7 - $10 = $5).

String

items

An array of the objects that represent the options in the menu option group.

JSON array

idString

This field is for Toast internal use only.

String

visibility

Indicates where the menu option group is displayed and who can see it. Values are:

  • ALL - The menu option group is visible to everyone. For example, the menu option group is seen by restaurant employees using a Toast POS device and by restaurant guests using the online ordering page.

  • POS_ONLY - The menu option group is visible only on Toast POS devices (including kiosks).

  • NONE - The menu option group is hidden from everyone.

String

PricingStrategyRules

The following table shows the information about the pricing strategy for the modifier groups at your restaurant from the menu data export.

Field

Description

Data Type

basePrice

Used when the pricingStrategy is set to BASE_PRICE. Defines a constant price for all of the options in the menu options group. For example:

"optionGroups": [ 
{
  "guid": "7aeae7d5-8891-4fa1-bcbd-647ad1f16c66",
  "name": "Toppings",
  ...
  "pricingStrategy":"BASE_PRICE",
  "pricingStategyRules": {
    "basePrice": 1.00
    }
  ...
}

Number

numberOfLevels

Used when the pricingStrategy is set to SEQUENCE_PRICE. Defines the number of levels for the sequence price. For example, if you have three levels, you can set a price for the first option added to the order, the second option added to the order, and all options added from the third option on. Used in conjunction with the sequencePrices array.

Number

sequencePrices

Sets the price for each level defined in the numberOfLevels value. For example:

"optionGroups": [ 
{
  "guid": "7aeae7d5-8891-4fa1-bcbd-647ad1f16c66",
  "name": "Toppings",
  ...
  "pricingStrategy": "SEQUENCE_PRICE",
  "pricingStrategyRules": {
    "numberOfLevels": 3,
    "sequencePrices": [
      0.50,
      0.75,
      1.00,
    ]
  }
  ...
}

JSON array