Toast · Schema

ModifierOption

Information about a modifier option configured for this restaurant.

RestaurantsPoint Of SalePaymentsOnline OrderingDeliveryLoyaltyGift CardsMenusOrdersKitchenLaborSchedulingInventoryHospitalityPartner Integrations

Properties

Name Type Description
referenceId integer An integer identifier that is used to refer to this modifier option by modifier option groups that contain it.
name string A descriptive name for this modifier option, for example, "Cheese" or "Pepperoni". To avoid menu ingestion failures, if the `name` value for a modifier option is an empty string or `null`, the menus A
kitchenName string The name of the modifier option as it appears on kitchen tickets. The `kitchenName` can include both numbers and letters. This value contains an empty string if a kitchen name has not been configured
guid string A unique identifier for this modifier option's item reference, assigned by the Toast POS system. For a detailed description of a modifier option's item reference, see multiLocationId object
masterId object
description string An optional short description of this modifier option.
posName object
posButtonColorLight object
posButtonColorDark object
prepStations array An array of GUIDs for the prep stations that have been assigned to this modifier option. If a modifier option's item reference has prep stations assigned to it, then the modifier option uses those pre
image object
visibility object
price number The price of this modifier option. In Toast Web, a modifier option may: * Inherit its price from a parent modifier group. * Use the price specified for its modifier option pricingStrategy string A string that indicates how this modifier option has been priced. If `pricingStrategy` is: * GROUP_PRICE, then the modifier option inherits its price from a parent modifier group. * Any value other th
pricingRules object A `PricingRules` object with information about how to calculate the price for this modifier option. You use a modifier option's `pricingRules` object, in conjunction with its `pricingStrategy` value,
salesCategory object
taxInfo array The `taxInfo` value on the `ModifierOption` object has been deprecated. An upcoming release will introduce new configuration settings for the taxes on a modifier option. The `taxInfo` value will not a
modifierOptionTaxInfo object
itemTags array An array of `ItemTag` objects that are assigned to this modifier option. Item tags are used to assign identifying characteristics to a modifier option, for example, vegetarian, gluten-free, alcohol.
plu string The price lookup (PLU) code for this modifier option. The PLU code can contain both numbers and letters. This value contains an empty string if a PLU code has not been defined.
sku string The stock keeping unit (SKU) identifier for this modifier option. The SKU identifier can contain both numbers and letters. This value contains an empty string if a SKU has not been defined.
calories integer The number of calories in this modifier option. The calories value can be any positive or negative integer, or zero. This value is null if a calories amount has not been configured for the modifier op
contentAdvisories object
unitOfMeasure string The unit of measure used to determine the price of the modifier option. For example, $10.00 per gram. The default is `NONE`, which means that the item is not meant to be measured during a sale. Values
isDefault boolean Indicates whether this modifier option is included on the menu item by default. _Important:_ If a menu item is configured to use default modifiers and you submit an order to the orders API for that me
allowsDuplicates boolean Indicates whether the modifier option may be added to a menu item multiple times. If a modifier option belongs to a modifier group whose `isMultiSelect` value is FALSE, then the Toast POS system sets
portions array An array of `Portion` objects that define the portions that this modifier option can be added to. For example, for a pizza menu item, you could define 1st Half and 2nd Half portions and this modifier
prepTime integer The amount of time, in seconds, that it takes to prepare this modifier option. This value is null if a prep time has not been specified for the modifier option.

*Related topics*
modifierGroupReferences
array An array of `referenceId`s for `ModifierGroup` objects. These objects define nested modifier groups contained in this modifier option. For example, you can have an entree that has a Sides modifier gro
length object
height object
width object
dimensionUnitOfMeasure object
weight object
weightUnitOfMeasure object
images object
guestCount object
sortOrder integer A number determining the order in which this modifier option should appear on kitchen tickets. The sort order value can be any positive or negative integer, or zero. This value is null if a sort order
allergens array Reserved for future functionality. Not currently supported for external integrations.
View JSON Schema on GitHub

JSON Schema

menus-modifier-option-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/toast-tab/refs/heads/main/json-schema/menus-modifier-option-schema.json",
  "title": "ModifierOption",
  "description": "Information about a modifier option configured for this restaurant.\n",
  "type": "object",
  "properties": {
    "referenceId": {
      "description": "An integer identifier that is used to refer to this modifier option by modifier option groups that contain it.\n",
      "type": "integer",
      "example": 1
    },
    "name": {
      "description": "A descriptive name for this modifier option, for example, \"Cheese\" or \"Pepperoni\".\n          \nTo avoid menu ingestion failures, if the `name` value for a modifier option is an empty string or `null`, the menus API updates it to the string `Missing name` in the returned menus data. A modifier option has a blank name if both its item reference name and its modifier override name are missing.\n\nNote that, while this solution allows menu ingestion to proceed without failure, it does allow a modifier option with the name `Missing name` to appear in a restaurant\u2019s menu, creating potential confusion for guests and employees. Also, the menus API only updates the returned data. It does not update the modifier option in the Toast database, meaning the name will still be blank when looking at the modifier option in Toast Web.\n\nTo fix the issue in Toast Web, the restaurant must identify the parent menu entity for the modifier option, view its details page in Toast Web, and then locate and fix the modifier option with the blank name.\n\nFor a detailed description of a modifier option's item reference, see <a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">Understanding a modifier option\u2019s item reference</a> in the Toast Platform Guide.\n",
      "type": "string",
      "example": "Example Name"
    },
    "kitchenName": {
      "description": "The name of the modifier option as it appears on kitchen tickets. The `kitchenName` can include both numbers and letters. This value contains an empty string if a kitchen name has not been configured for the modifier option.\n",
      "type": "string",
      "example": "Example Name"
    },
    "guid": {
      "description": "A unique identifier for this modifier option's item reference, assigned by the Toast POS system. For a detailed description of a modifier option's item reference, see <a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">Understanding a modifier option\u2019s item reference</a> in the Toast Platform Guide.\n",
      "type": "string",
      "example": "5a401af8-d2e2-4090-8c45-9f87b8b6c4d1"
    },
    "multiLocationId": {
      "$ref": "#/$defs/MultiLocationId"
    },
    "masterId": {
      "$ref": "#/$defs/MasterId"
    },
    "description": {
      "description": "An optional short description of this modifier option.\n",
      "type": "string",
      "example": "string"
    },
    "posName": {
      "$ref": "#/$defs/PosName"
    },
    "posButtonColorLight": {
      "$ref": "#/$defs/PosButtonColorLight"
    },
    "posButtonColorDark": {
      "$ref": "#/$defs/PosButtonColorDark"
    },
    "prepStations": {
      "type": "array",
      "description": "An array of GUIDs for the prep stations that have been assigned to this modifier option.\n\nIf a modifier option's item reference has prep stations assigned to it, then the modifier option uses those prep stations. If the modifier option's item reference *does not* have prep stations assigned to it, then the modifier option inherits the prep stations of the menu group, menu item, or modifier (in the case of nested modifiers) it is modifying.\n\nThe array is empty if no prep stations have been assigned to the modifier option.<br>\n<br>\n*Related topics:*<br>\n<a href=\"https://doc.toasttab.com/doc/platformguide/platformKitchenRoutingOverview.html\">Routing to prep stations</a>\n<a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">Understanding a modifier option\u2019s item reference</a>\n",
      "items": {
        "type": "string"
      }
    },
    "image": {
      "$ref": "#/$defs/Image"
    },
    "visibility": {
      "$ref": "#/$defs/Visibility"
    },
    "price": {
      "type": "number",
      "format": "double",
      "description": "The price of this modifier option.\n\nIn Toast Web, a modifier option may:\n  * Inherit its price from a parent modifier group.\n  * Use the price specified for its modifier option <a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">item reference</a>.\n  * Specify a price that overrides the price defined for its item reference.\n\nThe `price` value is populated differently depending on which of these pricing scenarios is used for the modifier option. The sections below describe how the `price` value is populated in these different scenarios.\n\n_Note:_ To determine how a modifier option has been priced, you can inspect the modifier option's `pricingStrategy` value. If it is GROUP_PRICE, then the modifier option is inheriting its price from a parent modifier group. If it is any value other than GROUP_PRICE (for example, MENU_SPECIFIC_PRICE or TIME_SPECIFIC PRICE), then the modifier option is using either the price specified for its item reference or an override price (override prices always use the BASE_PRICE strategy).\n\n_Modifier Option Inherits Its Price from a Parent Modifier Group_\n\nIf the modifier option inherits its price from a parent modifier group and that group uses the:\n  * Fixed Price pricing strategy, then the modifier option's `price` value is populated with the fixed price specified for the parent modifier group. No additional calculations are required.\n  * Size Price, Sequence Price, or Size/Sequence pricing strategy, then the modifier option's `price` value is null. You must use the _parent modifier group's_ `pricingStrategy` and `pricingRules` values to calculate the modifier option's price.\n\n_Modifier Option Specifies an Override Price_\n\nIf the modifier option specifies an override price, the `price` value is set to that override price. No additional calculations are required.\n\n_Modifier Option Uses the Price from Its Item Reference_\n\nIf a modifier option uses the price from its underlying item reference, then the `price` value is populated using the same logic as the `price` value for a `MenuItem` object:\n  * For base prices, the `price` value is populated with the specified base price.\n  * For menu-specific prices, the `price` value is resolved based on the current menu. For example, consider a modifier option that is included in both Lunch and Dinner menus and is priced at $1 for the Lunch menu and $2 for the Dinner menu. In the fully resolved JSON returned by the menus API, this modifier option would appear twice, once as a child of the Lunch menu with a `price` value of $1, and again as a child of the Dinner menu with a `price` value of $2.\n\n  If this same modifier option is added to a Breakfast menu but a menu-specific price is not defined for the Breakfast menu, then the `price` value for the instance of the modifier option that appears in the Breakfast menu JSON is populated with the base price from the menu-specific price configuration. Menu-specific price configurations include a base price that functions as a default price when a menu-specific price cannot be resolved.\n  \n  * For location-specific prices, the `price` value is resolved based on the current location. For example, consider a modifier option that costs $2 in the Boston location and $3 in the New York location. When you retrieve menu data for the Boston location, this modifier option's `price` value is $2. When you retrieve menu data for the New York location, the modifier option's `price` value is $3.\n  * For time-specific prices, the `price` value is populated with the base price that is specified as part of the time-specific price configuration. This base price functions as a default price for the modifier option during times of the day when a time-specific price has not been defined. For example, consider a modifier option that costs $1 from noon to 2pm and $2 during the rest of the day. The `price` value for this item would be $2. You must use _this modifier option's_ `pricingStrategy` and `pricingRules` values to calculate the price of the modifier option during time periods for which a time-specific price has been defined.\n  * For size prices, the `price` value is null. You must use _this modifier option's_ `pricingStrategy` and `pricingRules` values to calculate the price of the modifier option for different sizes.\n  * For open prices, the `price` value is null.\n\nIf the modifier option is priced using a price level, the `price` value reflects the pricing strategy used for the price level, using the same logic described above. For example, consider a price level that applies a size price to the modifier option it is assigned to. In this case, the `price` value for the modifier option is null and you must use this modifier option's `pricingStrategy` and `pricingRules` values to calculate the price of the modifier option for different sizes.\n_Note:_ For detailed information on modifier option pricing and pricing strategies, see the <a href=\"https://doc.toasttab.com/doc/platformguide/adminToastPosPricingFeatures.html\">Menu pricing</a> section in the Toast Platform Guide.\n",
      "x-nullable": true,
      "example": 1.0
    },
    "pricingStrategy": {
      "type": "string",
      "description": "A string that indicates how this modifier option has been priced. If `pricingStrategy` is:\n  * GROUP_PRICE, then the modifier option inherits its price from a parent modifier group.\n  * Any value other than GROUP_PRICE (for example, MENU_SPECIFIC_PRICE or TIME_SPECIFIC PRICE), then the modifier option is using either the price specified for its <a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">item reference</a> or an override price (override prices always use the BASE_PRICE strategy).\n\nIf the modifier option is using the price of its underlying item reference, and that item reference is priced using the Location Specific Price pricing strategy, then the `pricingStrategy` value indicates which pricing strategy is used at the current location. For example, consider a modifier option that uses a menu-specific price at the Boston location and a base price at the New York location. When you retrieve the menu data for the Boston location, the `pricingStrategy` for the modifier option is MENU_SPECIFIC_PRICE. When you retrieve menu data for the New York location, the `pricingStrategy` for the modifier option is BASE_PRICE.\n\nIf the modifier option is using the price of its underlying item reference, and that item reference is priced using a price level, then the `pricingStrategy` value indicates which pricing strategy is used for that price level. For example, if the \"Special Toppings\" price level uses a time-specific price, then the `pricingStrategy` value for a modifier option that is assigned the \"Special Toppings\" price level is TIME_SPECIFIC_PRICE.\n\nIt is important to understand which `pricingRules` object to use when modifier option prices must be calculated. If the `pricingStrategy` value is:\n  * BASE_PRICE or MENU_SPECIFIC_PRICE,  then you can retrieve the modifier option's price from its `price` value. No additional calculations are required.\n  * GROUP_PRICE, then you must use the `pricingStrategy` and `pricingRules` values from _the modifier option's parent modifier group_ to calculate the modifier option's price.\n  * TIME_SPECIFIC_PRICE or SIZE_PRICE, then you must use the rules provided in _this modifier option's_ `pricingRules` value to calculate the price for the modifier option.\n",
      "example": "string"
    },
    "pricingRules": {
      "type": "object",
      "description": "A `PricingRules` object with information about how to calculate the price for this modifier option. You use a modifier option's `pricingRules` object, in conjunction with its `pricingStrategy` value, to calculate a price for the modifier option when the modifier option is _individually priced_ and its `price` value is null.\n\n_Note:_ If the modifier option is priced at the group level, you must use the `pricingRules` object of its parent modifier group to calculate its price. A modifier option is priced at the group level if its `pricingStrategy` value is GROUP_PRICE.\n\nThe `pricingRules` object takes different forms depending on the pricing strategy configured for the modifier option. Use the `pricingStrategy` value to determine which pricing strategy has been used so that you can properly interpret the data in the `pricingRules` object. For the BASE_PRICE, and MENU_SPECIFIC_PRICE pricing strategies, the `pricingRules` object is null because you can retrieve the price from the `price` value without additional calculation. For the OPEN_PRICE pricing strategy, the `pricingRules` object is also null (the price of a modifier option whose item reference uses the Open Price pricing strategy is specified at the time that the modifier option is ordered). For the TIME_SPECIFIC_PRICE and SIZE_PRICE pricing strategies, the `pricingRules` object contains additional values that you use to calculate the modifier option's price.\n",
      "items": {
        "$ref": "#/$defs/PricingRules"
      },
      "x-nullable": true
    },
    "salesCategory": {
      "$ref": "#/$defs/SalesCategory"
    },
    "taxInfo": {
      "type": "array",
      "description": "The `taxInfo` value on the `ModifierOption` object has been deprecated. An upcoming release will introduce new configuration settings for the taxes on a modifier option. The `taxInfo` value will not accurately represent these additional configurations. Your integration should switch to using the `modifierOptionTaxInfo` value instead. See <a href=\"https://doc.toasttab.com/doc/devguide/apiUsingTaxInfoAndModifierOptionTaxInfoToCalculateTaxesForMenuItemsAndModOptions.html\">Using taxInfo and modifierOptionTaxInfo to calculate taxes for menu items and modifier options</a> in the Toast Developer Guide for more information. \n",
      "items": {
        "type": "string"
      }
    },
    "modifierOptionTaxInfo": {
      "$ref": "#/$defs/ModifierOptionTaxInfo"
    },
    "itemTags": {
      "type": "array",
      "description": "An array of `ItemTag` objects that are assigned to this modifier option. Item tags are used to assign identifying characteristics to a modifier option, for example, vegetarian, gluten-free, alcohol.\n",
      "items": {
        "$ref": "#/$defs/ItemTag"
      }
    },
    "plu": {
      "type": "string",
      "description": "The price lookup (PLU) code for this modifier option. The PLU code can contain both numbers and letters. This value contains an empty string if a PLU code has not been defined.\n",
      "example": "string"
    },
    "sku": {
      "type": "string",
      "description": "The stock keeping unit (SKU) identifier for this modifier option. The SKU identifier can contain both numbers and letters. This value contains an empty string if a SKU has not been defined.\n",
      "example": "string"
    },
    "calories": {
      "type": "integer",
      "description": "The number of calories in this modifier option. The calories value can be any positive or negative integer, or zero. This value is null if a calories amount has not been configured for the modifier option.\n",
      "x-nullable": true,
      "example": 1
    },
    "contentAdvisories": {
      "$ref": "#/$defs/ContentAdvisories"
    },
    "unitOfMeasure": {
      "type": "string",
      "enum": [
        "NONE",
        "LB",
        "OZ",
        "KG",
        "G",
        "GAL",
        "L",
        "ML",
        "FL_OZ",
        "M",
        "CM",
        "FT",
        "IN",
        "YD"
      ],
      "description": "The unit of measure used to determine the price of the modifier option. For example, $10.00 per gram.\n\nThe default is `NONE`, which means that the item is not meant to be measured during a sale.\n\nValues are:\n* `NONE` - The item is not meant to be measured.\n* `LB` - Weighed in pounds.\n* `OZ` - Weighed in ounces.\n* `KG` - Weighed in kilograms.\n* `G` - Weighed in grams.\n* `GAL` - Measured in gallons.\n* `L` - Measured in liters.\n* `ML` - Measured in milliliters.\n* `FL_OZ` - Measured in fluid ounces.\n* `M` - Measured in meters.\n* `CM` - Measured in centimeters.\n* `FT` - Measured in feet.\n* `IN` - Measured in inches.\n* `YD` - Measured in yards.\n",
      "example": "NONE"
    },
    "isDefault": {
      "type": "boolean",
      "description": "Indicates whether this modifier option is included on the menu item by default.\n\n_Important:_ If a menu item is configured to use default modifiers and you submit an order to the orders API for that menu item but you omit those default modifiers, then the Toast POS system assumes you want to omit the default modifiers and they will not be included in the order. For example, consider a Burger menu item that has Lettuce and Tomato as default modifiers. If you submit an order to the orders API for the Burger menu item but omit the Lettuce and Tomato default modifiers in the request, the order ticket will include the Burger but not the Lettuce and Tomato modifier options.\n",
      "example": true
    },
    "allowsDuplicates": {
      "type": "boolean",
      "description": "Indicates whether the modifier option may be added to a menu item multiple times.\n\nIf a modifier option belongs to a modifier group whose `isMultiSelect` value is FALSE, then the Toast POS system sets the modifier option\u2019s `allowsDuplicates` value to FALSE to prevent more than one modifier option being selected for the group.\n",
      "example": true
    },
    "portions": {
      "type": "array",
      "description": "An array of `Portion` objects that define the portions that this modifier option can be added to. For example, for a pizza menu item, you could define 1st Half and 2nd Half portions and this modifier option could be added to either portion. See <a href=\"https://doc.toasttab.com/doc/platformguide/adminPortionsOverview.html\">Portions overview</a> in the Toast Platform Guide for more information.\n",
      "minItems": 0,
      "items": {
        "$ref": "#/$defs/Portion"
      }
    },
    "prepTime": {
      "type": "integer",
      "description": "The amount of time, in seconds, that it takes to prepare this modifier option. This value is null if a prep time has not been specified for the modifier option.<br>\n<br>\n*Related topics*<br>\n<a href=\"https://doc.toasttab.com/doc/platformguide/adminFireByPrepTime.html\">Using prep times to automate item firing</a><br>\n",
      "format": "int32",
      "x-nullable": true,
      "example": 1
    },
    "modifierGroupReferences": {
      "type": "array",
      "description": "An array of `referenceId`s for `ModifierGroup` objects. These objects define nested modifier groups contained in this modifier option. For example, you can have an entree that has a Sides modifier group that contains a Salad modifier option. The Salad modifier option has its own modifier group, Salad Dressing, that includes Ranch, Vinaigrette, and Blue Cheese modifier options. Salad Dressing is a nested modifier group and the individual salad dressings are nested modifier options.\n",
      "minItems": 0,
      "items": {
        "type": "integer"
      }
    },
    "length": {
      "$ref": "#/$defs/Length"
    },
    "height": {
      "$ref": "#/$defs/Height"
    },
    "width": {
      "$ref": "#/$defs/Width"
    },
    "dimensionUnitOfMeasure": {
      "$ref": "#/$defs/DimensionUnitOfMeasure"
    },
    "weight": {
      "$ref": "#/$defs/Weight"
    },
    "weightUnitOfMeasure": {
      "$ref": "#/$defs/WeightUnitOfMeasure"
    },
    "images": {
      "$ref": "#/$defs/Images"
    },
    "guestCount": {
      "$ref": "#/$defs/GuestCount"
    },
    "sortOrder": {
      "type": "integer",
      "description": "A number determining the order in which this modifier option should appear on kitchen tickets. The sort order value can be any positive or negative integer, or zero. This value is null if a sort order has not been configured for the modifier option.\n",
      "x-nullable": true,
      "example": 1
    },
    "allergens": {
      "type": "array",
      "description": "Reserved for future functionality. Not currently supported for external integrations.\n",
      "minItems": 0,
      "items": {
        "$ref": "#/$defs/AllergenItem"
      },
      "x-nullable": true
    }
  },
  "$defs": {
    "MultiLocationId": {
      "type": "string",
      "description": "An identifier that is used to identify and consolidate menu entities that are versions of each other.\n\n`multiLocationId` replaces `masterId`. `multiLocationId` and `masterId` always have the same value.\n\nMenu entities can be versioned. Those versions can be assigned to specific restaurant locations, or groups of locations, in a management group. For example, you could have two versions of a burger, one for a Boston location and another for a New York City location. Versioned menu entities share the majority of, but not all of, their data. For example, the Boston version is called the Minuteman Burger and has pickles, while the New York City version is called the Empire Burger and does not.\n\nYou use the `multiLocationId` to identify menu entities that are versions of each other. To continue the example above, the Minuteman Burger in the JSON returned for the Boston location has the same `multilocationId` as the Empire Burger in the JSON returned for the New York City location. These matching `multlocationId` values indicate that the two items are related versions of the same item. In Toast reports, this allows a restaurant to track sales of the burger across both locations.\n\nThe Toast POS system ensures that once a `multilocationId` value is assigned to a set of versions within a management group, that `multiLocationId` is not used for any other version sets in the same management group. It does not guarantee, however, that the `multiLocationId` is not used by another management group to identify a set of versions within it.\n\nSee <a href=\"https://doc.toasttab.com/doc/devguide/portalToastIdentifiers.html\">Toast identifiers</a> in the Toast Developer Guide for more information on the `multiLocationId` and its relationship to other Toast identifiers.\n\nSee <a href=\"https://doc.toasttab.com/doc/platformguide/sharingMenusAndOtherInformationAmongRestaurants.html\">Enterprise module overview</a> in the Toast Platform Guide for more information on the enterprise module and versioning.\n"
    },
    "MasterId": {
      "type": "integer",
      "format": "int64",
      "description": "This value is deprecated. Instead of `masterId`, use `multiLocationId`.\n\nAn identifier that is used to identify and consolidate menu entities that are versions of each other.\n"
    },
    "PosName": {
      "type": "string",
      "description": "The button label name that appears for this menu entity in the Toast POS app. `posName` contains an empty string if a `posName` has not been defined for the menu entity and the `name` value is used for the button label instead.\n"
    },
    "PosButtonColorLight": {
      "type": "string",
      "description": "The color of the menu entity's button on the Toast POS app, when the app is running in light mode.\n     \nWhen an employee configures a POS button's color, they select a color pairing that consists of two colors, one for light mode and one for dark mode. `posButtonColorLight` contains the HEX code for the light mode color.\n\n`posButtonColorLight` defaults to `#f7f7f7`, the HEX code when the `WHITE` color pairing is chosen.\n\nThe following list shows the possible HEX codes for `posButtonColorLight`, with the associated color pairing in parentheses.\n\n* #f7f7f7 (WHITE)\n* #ffe6e9 (TERRACOTTA_1)\n* #efa49f (TERRACOTTA_2)\n* #f07166 (TERRACOTTA_3)\n* #e45a4e (TERRACOTTA_4)\n* #fbd9b6 (ORANGE_1)\n* #f7be6e (ORANGE_2)\n* #f98c1f (ORANGE_3)\n* #e56f1a (ORANGE_4)    \n* #fbf5b6 (YELLOW_1)\n* #fed850 (YELLOW_2)\n* #e9b10c (YELLOW_3)\n* #c78605 (YELLOW_4)      \n* #e8f7d4 (GRASS_1)\n* #afe26c (GRASS_2)\n* #71b314 (GRASS_3)\n* #32a206 (GRASS_4)      \n* #e3f0fb (SKY_1)\n* #9fc5f0 (SKY_2)\n* #77a5e4 (SKY_3)\n* #558edd (SKY_4)      \n* #f1e3fd (LAVENDER_1)\n* #dab2f7 (LAVENDER_2)\n* #b26ee2 (LAVENDER_3)\n* #a270db (LAVENDER_4)      \n* #d0d0d0 (GRAY_1)\n* #c3c3c3 (GRAY_2)\n* #b1b1b1 (GRAY_3)\n* #989898 (GRAY_4)\n"
    },
    "PosButtonColorDark": {
      "type": "string",
      "description": "The color of the menu entity's button on the Toast POS app, when the app is running in dark mode.\n     \nWhen an employee configures a POS button's color, they select a color pairing that consists of two colors, one for light mode and one for dark mode. `posButtonColorDark` contains the HEX code for the dark mode color.\n\n`posButtonColorDark` defaults to `#1a1c23`, the HEX code when the `WHITE` color pairing is chosen.\n\nThe following list shows the possible HEX codes for `posButtonColorDark`, with the associated color pairing in parentheses.\n\n* #1a1c23 (WHITE)\n* #7e635d (TERRACOTTA_1)\n* #74504D (TERRACOTTA_2)\n* #722e25 (TERRACOTTA_3)\n* #561408 (TERRACOTTA_4)\n* #8f5f3d (ORANGE_1)\n* #7e4116 (ORANGE_2)\n* #803500 (ORANGE_3)\n* #682d03 (ORANGE_4)    \n* #7e6b44 (YELLOW_1)\n* #7b5f27 (YELLOW_2)\n* #7c5000 (YELLOW_3)\n* #633d09 (YELLOW_4)      \n* #657552 (GRASS_1)\n* #556e34 (GRASS_2)\n* #37570a (GRASS_3)\n* #113a00 (GRASS_4)      \n* #637486 (SKY_1)\n* #4d6074 (SKY_2)\n* #2a456b (SKY_3)\n* #213554 (SKY_4)      \n* #78668a (LAVENDER_1)\n* #5e4776 (LAVENDER_2)\n* #402960 (LAVENDER_3)\n* #25174f (LAVENDER_4)      \n* #6c6c6c (GRAY_1)\n* #5f5f5f (GRAY_2)\n* #474747 (GRAY_3)\n* #404040 (GRAY_4)\n"
    },
    "Image": {
      "type": "string",
      "description": "The URL to an image that has been uploaded for this menu entity. This value is null if no image has been specified.\n",
      "x-nullable": true
    },
    "Visibility": {
      "type": "array",
      "description": "An array of strings that indicate where this menu entity is visible:\n\n* POS: The menu entity is visible in the Toast POS app. \n\n* KIOSK: The menu entity is visible on a Toast kiosk. \n\n* TOAST_ONLINE_ORDERING: The menu entity is visible in the Toast online\n  ordering site for this restaurant. \n\n* ORDERING_PARTNERS: The restaurants wants this menu entity to be visible\n  on online ordering sites that integrate with the Toast POS system using the orders API. \n\n* GRUBHUB: Deprecated. The menu entity is included during a menu sync to\n  Grubhub and will be visible on the Grubhub online ordering service after a\n  menu sync has completed. _Note:_ Conceptually, the _Grubhub_ configuration\n  option that was associated with the `GRUBHUB` string in this array has\n  been replaced by the more general _Online orders: Ordering partners_\n  configuration option and restaurants that used the _Grubhub_ option have\n  been automatically migrated to the new _Online orders: Ordering partners_\n  option. This means that any menu entity that had the _Grubhub_ option set\n  to _Yes_ will now have the _Online orders: Ordering partners_ option\n  enabled and the `ORDERING_PARTNERS` enum will be present in the\n  `visibility` array for it. To support backwards compatibility, the\n  `visibility` array for these entities will also continue to contain the\n  `GRUBHUB` enum for a short period of time. See <a\n  href=\"https://doc.toasttab.com/doc/devguide/apiDeprecatedApiFunctions.html#apiMenuEntityVisibilityEnhancements\">Menu\n  Visibility Enhancements (Rolled Out)</a> for more information.\n\nThe `visibility` array is empty if the menu entity is not configured to be visible for any of the use cases listed above.\n",
      "items": {
        "type": "string",
        "enum": [
          "POS",
          "KIOSK",
          "GRUBHUB",
          "TOAST_ONLINE_ORDERING",
          "ORDERING_PARTNERS"
        ]
      }
    },
    "PricingRules": {
      "type": "object",
      "description": "The PricingRules object is a multi-use object that provides pricing rules for:\n  * A menu item or modifier option <a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">item reference</a> that uses the Time Specific Price or Size Price pricing strategy.\n  * A modifier group that uses the Size Price, Sequence Price, or Size/Sequence Price pricing strategy.\n",
      "properties": {
        "timeSpecificPricingRules": {
          "description": "An array of `TimeSpecificPrice` objects that define the time-specific prices for a menu item or modifier option <a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">item reference</a> that uses the Time Specific Price pricing strategy. If the menu item or modifier option item reference does not use time-specific prices, this array is empty.\n",
          "type": "array",
          "items": {
            "$ref": "#/$defs/TimeSpecificPrice"
          }
        },
        "sizeSpecificPricingGuid": {
          "description": "The GUID of a Size modifier group that defines sizes and prices for a menu item or a modifier option <a href=\"https://doc.toasttab.com/doc/platformguide/adminPricingModifierOptions.html#adminUnderstandingAModifierOptionsItemReference\">item reference</a> that uses the Size Price pricing strategy.\n\nIf the menu item or modifier option item reference does not use the Size Price pricing strategy, then `sizeSpecificPricingGuid` is null.\n\nThe Toast POS system automatically creates a Size modifier group when you choose the Size Price pricing strategy for a menu item or modifier option item reference and stores the sizes and prices you specify in it. You use the `sizeSpecificPricingGuid` value to locate the correct Size modifier group to use when pricing a menu item or modifier option item reference that uses size pricing. In the JSON fragment below, you can see that the Cheese Pizza menu item uses the SIZE_PRICE pricing strategy and the Size modifier group where the sizes and prices for Cheese Pizza are defined has a GUID that ends in `31b0`.\n\n```\n{\n  \"restaurantGuid\": \"2071fb81-988b-4d75-b8dc-c5c17cff9706\",\n  ...\n  \"menus\": [\n    {\n      \"name\": \"Dinner\",\n      \"guid\": \"ddd681de-3c12-4d45-b8b1-a5b2ea898210\",\n      ...\n      \"menuGroups\": [\n        {\n          \"name\": \"Pizza\",\n          \"guid\": \"dc868006-919a-4950-a4cc-3a03f9770fd7\",\n          ...\n          \"menuItems\": [\n            {\n              \"name\": \"Cheese Pizza\",\n              \"guid\": \"95c5d500-8d92-46f2-bec4-fb2a42a46621\",\n              ...\n              \"price\": null,\n              \"pricingStrategy\": \"SIZE_PRICE\",\n              \"pricingRules\": {\n                \"timeSpecificPricingRules\": [],\n                \"sizeSpecificPricingGuid\": \"23c02762-9d6a-4d3f-a298-71c989bf31b0\",\n                \"sizeSequencePricingRules\": []\n              },\n              ...\n              \"modifierGroupReferences\": [\n                2,\n                6,\n                ...\n              ],\n              ...\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"modifierGroupReferences\": {\n    ...\n    \"2\": {\n      \"referenceId\": 2,\n      \"name\": \"Size\",\n      \"guid\": \"23c02762-9d6a-4d3f-a298-71c989bf31b0\",\n      ...\n      \"pricingStrategy\": \"NONE\",\n      \"pricingRules\": null,\n      ...\n      \"modifierOptionReferences\": [\n        12,\n        13\n      ],\n      ...\n    },\n    ...\n  },\n  \"modifierOptionReferences\": {\n    ...\n    \"12\": {\n      \"referenceId\": 12,\n      \"name\": \"Small\",\n      \"guid\": \"352244f2-a952-4a3a-a3ae-7775fa221ce7\",\n      ...\n      \"price\": 8.0,\n      \"pricingStrategy\": \"BASE_PRICE\",\n      \"pricingRules\": null,\n      ...\n      \"modifierGroupReferences\": []\n    },\n    \"13\": {\n      \"referenceId\": 13,\n      \"name\": \"Large\",\n      \"guid\": \"4ff89bca-b448-4892-bc4c-62c37a28ac

# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/toast-tab/refs/heads/main/json-schema/menus-modifier-option-schema.json