Toast · Schema

Restaurant

Information about the restaurant whose menu data has been retrieved.

RestaurantsPoint Of SalePaymentsOnline OrderingDeliveryLoyaltyGift CardsMenusOrdersKitchenLaborSchedulingInventoryHospitalityPartner Integrations

Properties

Name Type Description
restaurantGuid string A unique identifier for this restaurant, assigned by the Toast POS system.
lastUpdated string The most recent date and time that this menu's data was published. Use this value to determine if you need to refresh your menu data. The `lastUpdated` value uses the absolute timestamp format describ
restaurantTimeZone string The name of the restaurant's time zone in the IANA time zone database https://www.iana.org/time-zones. For example, "America/New_York".
menus array An array of `Menu` objects that represent the published menus used by this restaurant.
modifierGroupReferences object A map of `ModifierGroup` objects that define the modifier groups used by this restaurant. Each `ModifierGroup` object is presented as a key/value pair. A pair's key matches the `referenceId` of the ob
modifierOptionReferences object A map of `ModifierOption` objects that define the modifier options used by this restaurant. Each `ModifierOption` object is presented as a key/value pair. A pair's key matches the `referenceId` of the
preModifierGroupReferences object A map of `PreModifierGroup` objects that define the premodifier groups used by this restaurant. Each `PreModifierGroup` object is presented as a key/value pair. A pair's key matches the `referenceId`
View JSON Schema on GitHub

JSON Schema

menus-restaurant-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-restaurant-schema.json",
  "title": "Restaurant",
  "description": "Information about the restaurant whose menu data has been retrieved.\n",
  "type": "object",
  "properties": {
    "restaurantGuid": {
      "description": "A unique identifier for this restaurant, assigned by the Toast POS system.\n",
      "type": "string",
      "format": "uuid",
      "example": "5a401af8-d2e2-4090-8c45-9f87b8b6c4d1"
    },
    "lastUpdated": {
      "description": "The most recent date and time that this menu's data was published. Use this value to determine if you need to refresh your menu data. The `lastUpdated` value uses the absolute timestamp format describe in the <a href=\"https://doc.toasttab.com/doc/devguide/api_dates_and_timestamps.html\">Dates and timestamps</a> section of the Toast Developer Guide.\n",
      "type": "string",
      "example": "string"
    },
    "restaurantTimeZone": {
      "description": "The name of the restaurant's time zone in the IANA time zone database https://www.iana.org/time-zones. For example, \"America/New_York\".\n",
      "type": "string",
      "example": "string"
    },
    "menus": {
      "type": "array",
      "description": "An array of `Menu` objects that represent the published menus used by this restaurant.\n",
      "items": {
        "$ref": "#/$defs/Menu"
      }
    },
    "modifierGroupReferences": {
      "description": "A map of `ModifierGroup` objects that define the modifier groups used by this restaurant. Each `ModifierGroup` object is presented as a key/value pair. A pair's key matches the `referenceId` of the object contained in the pair's value, as shown below:\n```\n  \"modifierGroupReferences\": {\n    ...\n    \"3\": {\n      \"referenceId\": 3,\n      \"name\": \"Toppings\",\n      \"guid\": \"58b79986-f88f-411d-ba18-14b1e2441e9d\",\n        ...\n      },\n      ...\n      \"modifierOptionReferences\": [\n        10,\n        11\n      ],\n      ...\n    },\n    ...\n  },\n```\n\nOther menu entities refer to modifier groups using their `referenceId`. Having a key that matches the `referenceId` allows you to locate the correct modifier group in the `modifierGroupReferences` map. For more information on the `referenceId` value, see the <a href=\"https://doc.toasttab.com/doc/devguide/apiUnderstandingGuidsEntityIdentifiersAndMultilocationIds_V2.html\">Understanding GUIDs, referenceIds, and multilocationIds</a> section of the Toast Developer Guide.\n",
      "properties": {
        "identifier": {
          "type": "integer"
        }
      },
      "additionalProperties": {
        "$ref": "#/$defs/ModifierGroup"
      }
    },
    "modifierOptionReferences": {
      "description": "A map of `ModifierOption` objects that define the modifier options used by this restaurant. Each `ModifierOption` object is presented as a key/value pair. A pair's key matches the `referenceId` of the object contained in the pair's value, as shown below:\n```\n\"modifierOptionReferences\": {\n  ...\n  \"10\": {\n    \"referenceId\": 10,\n    \"name\": \"Mushrooms\",\n    \"guid\": \"fa24fee9-76c4-40ba-ae3c-7dfccafdd8d3\",\n    ...\n  },\n  \"11\": {\n    \"referenceId\": 11,\n    \"name\": \"Onions\",\n    \"guid\": \"afee6be7-8280-4c69-a170-9fdf4c76bf7b\",\n    ...\n  },\n  ...\n}\n```\n\nOther menu entities refer to modifier options using their `referenceId`. Having a key that matches the `referenceId` allows you to locate the correct modifier option in the `modifierOptionReferences` map. For more information on the `referenceId` value, see the <a href=\"https://doc.toasttab.com/doc/devguide/apiUnderstandingGuidsEntityIdentifiersAndMultilocationIds_V2.html\">Understanding GUIDs, referenceIds, and multilocationIds</a> section of the Toast Developer Guide.\n",
      "properties": {
        "identifier": {
          "type": "integer"
        }
      },
      "additionalProperties": {
        "$ref": "#/$defs/ModifierOption"
      }
    },
    "preModifierGroupReferences": {
      "description": "A map of `PreModifierGroup` objects that define the premodifier groups used by this restaurant. Each `PreModifierGroup` object is presented as a key/value pair. A pair's key matches the `referenceId` of the object contained in the pair's value, as shown below:\n```\n\"preModifierGroupReferences\": {\n  \"22\": {\n    \"referenceId\": 22,\n    \"guid\": \"07a1a94d-6f7b-46d5-a916-a07fa16bb8e8\",\n    \"name\": \"PreModGroup\",\n    \"preModifiers\": [\n      {\n        \"guid\": \"ad45e697-9356-468e-b7b4-1b23f4d4b8a5\",\n        \"name\": \"EXTRA\",\n        \"fixedPrice\": 1.0,\n        \"multiplicationFactor\": null,\n        \"displayMode\": \"PREFIX\"\n      },\n      {\n        \"guid\": \"483dd4cf-acea-4373-ae76-5f7efd0d529d\",\n        \"name\": \"NO\",\n        \"fixedPrice\": 0.0,\n        \"multiplicationFactor\": null,\n        \"displayMode\": \"PREFIX\"\n      }\n    ]\n  },\n},            \n```\n\nOther menu entities refer to premodifier groups using their `referenceId`. Having a key that matches the `referenceId` allows you to locate the correct premodifier group in the `preModifierGroupReferences` map. For more information on the `referenceId` value, see the <a href=\"https://doc.toasttab.com/doc/devguide/apiUnderstandingGuidsEntityIdentifiersAndMultilocationIds_V2.html\">Understanding GUIDs, referenceIds, and multilocationIds</a> section of the Toast Developer Guide.          \n",
      "properties": {
        "identifier": {
          "type": "integer"
        }
      },
      "additionalProperties": {
        "$ref": "#/$defs/PreModifierGroup"
      }
    }
  },
  "$defs": {
    "Menu": {
      "type": "object",
      "description": "Information about a menu configured for this restaurant.\n",
      "properties": {
        "name": {
          "description": "A descriptive name for this menu, for example, \"Food\" or \"Drinks\".\n",
          "type": "string",
          "example": "Example Name"
        },
        "guid": {
          "description": "A unique identifier for this menu, assigned by the Toast POS system.\n",
          "type": "string",
          "example": "5a401af8-d2e2-4090-8c45-9f87b8b6c4d1"
        },
        "multiLocationId": {
          "$ref": "#/$defs/MultiLocationId"
        },
        "masterId": {
          "$ref": "#/$defs/MasterId"
        },
        "description": {
          "description": "An optional short description for this menu.\n",
          "type": "string",
          "example": "string"
        },
        "posName": {
          "$ref": "#/$defs/PosName"
        },
        "posButtonColorLight": {
          "$ref": "#/$defs/PosButtonColorLight"
        },
        "posButtonColorDark": {
          "$ref": "#/$defs/PosButtonColorDark"
        },
        "highResImage": {
          "type": "string",
          "description": "The URL to a high resolution image that has been uploaded for this menu. The image file must be in JPG, PNG, or SVG format. The `highResImage` value is only available if the Toast Kiosk module has been enabled for this restaurant. This value is null if no high resolution image has been specified.\n",
          "x-nullable": true,
          "example": "string"
        },
        "image": {
          "$ref": "#/$defs/Image"
        },
        "visibility": {
          "$ref": "#/$defs/Visibility"
        },
        "availability": {
          "type": "object",
          "description": "An `Availability` object with information about the days and times this menu is available. If the menu is available 24 hours per day, 7 days per week, this `Availability` object contains a single value, `alwaysAvailable`, that is set to TRUE. If the menu is not available 24 hours per day, 7 days per week, the `alwaysAvailable` value is set to FALSE and the object will also contain a `schedule` value that provides detailed information about the specific days and times this menu is available.\n\n**_Important_**\nThe orders API does not validate against the availability settings of a menu, meaning it is possible to submit an order for an item on a menu when it is not currently available. For this reason, it is particularly important that you check a menu\u2019s `availability` value before placing an order from it.\n",
          "items": {
            "$ref": "#/$defs/Availability"
          }
        },
        "menuGroups": {
          "type": "array",
          "description": "An array of the `MenuGroup` objects contained in this menu.\n",
          "minItems": 0,
          "items": {
            "$ref": "#/$defs/MenuGroup"
          }
        }
      }
    },
    "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"
        ]
      }
    },
    "Availability": {
      "type": "object",
      "description": "Information about when a menu is available for use.\n",
      "properties": {
        "alwaysAvailable": {
          "type": "boolean",
          "description": "Indicates whether this menu is available 24 hours per day, 7 days a week. If `alwaysAvailable` is FALSE, then a `schedule` value is included in the `Availability` object to define the specific times and days a menu is available. If `alwaysAvailable` is TRUE, then the `schedule` value is omitted. \n",
          "example": true
        },
        "schedule": {
          "type": "array",
          "description": "An array of `Schedule` objects that indicate the specific days and times a menu is available. If `alwaysAvailable` is TRUE, then the menu is available 24 hours per day, 7 days per week, and this `schedule` value is omitted from the `Availabilty` object.\n",
          "items": {
            "$ref": "#/$defs/Schedule"
          }
        }
      }
    },
    "Schedule": {
      "type": "object",
      "description": "A multi-use object that is used to:\n\n* Define when a menu is available.\n* Define when a time-specific price is available for a menu item or modifier option.\n\nA `Schedule` object defines a set of days of the week and a set of time ranges for those days. Days that have identical time ranges are grouped into a single `Schedule` object, for example, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, and FRIDAY in the example below have identical time ranges and are in the same `Schedule` object while SATURDAY and SUNDAY are in a separate `Schedule` object because their time ranges differ from the weekday time ranges.\n\n```\n\"availability\": {\n  \"alwaysAvailable\": false,\n  \"schedule\": [\n    {\n      \"days\": [\n        \"MONDAY\", \n        \"TUESDAY\", \n        \"WEDNESDAY\", \n        \"THURSDAY\"\n      ],\n      \"timeRanges\": [\n        {\n          \"start\": \"09:00\",\n          \"end\": \"18:00\"\n        }\n      ]\n    },\n    {\n      \"days\": [\n        \"FRIDAY\", \n        \"SATURDAY\"\n      ],\n      \"timeRanges\": [\n        {\n          \"start\": \"09:00\",\n          \"end\": \"18:00\"\n        },\n        {\n          \"start\": \"20:00\",\n          \"end\": \"23:00\"\n        }\n      ]\n    }\n  ]\n}\n```\n\nTime ranges are in 24-hour HH:MM format.\n\nIf a day is not represented in the `Schedule` objects, the menu or time-specific price is not available on that day.      \n",
      "properties": {
        "days": {
          "type": "array",
          "description": "An array of days of the week that are associated with identical time ranges. The time ranges are defined in a corresponding `timeRanges` value. Names of the days are in upper case, for example, MONDAY.\n",
          "items": {
            "type": "string",
            "description": "A day of the week, for example, SUNDAY or THURSDAY.",
            "enum": [
              "SUNDAY",
              "MONDAY",
              "TUESDAY",
              "WEDNESDAY",
              "THURSDAY",
              "FRIDAY",
              "SATURDAY"
            ]
          }
        },
        "timeRanges": {
          "type": "array",
          "description": "An array of `TimeRange` objects that define the time ranges that a menu or a time-specific price is available on the days defined by the corresponding `days` value. A `TimeRange` object contains a `start` time and an `end` time, expressed in the restaurant\u2019s local time. If both the `start` and `end` times for a given day are 00:00, it indicates that the menu or the time-specific price is available 24 hours on the associated days. Time ranges may also run overnight, for example, a time range that starts at \"07:00\" and ends at \"03:00\" runs from 7am until 3am the next day. \n",
          "items": {
            "$ref": "#/$defs/TimeRange"
          }
        }
      }
    },
    "TimeRange": {
      "type": "object",
      "description": "Represents a time range for when a menu or a time-specific price is available.\n",
      "properties": {
        "start": {
          "type": "string",
          "description": "The start time of the time range. Expressed in the restaurant\u2019s local time.\n",
          "example": "string"
        },
        "end": {
          "type": "string",
          "description": "The end time of the time range. Expressed in the restaurant\u2019s local time.\n",
          "example": "string"
        }
      }
    },
    "MenuGroup": {
      "type": "object",
      "description": "Information about a menu group configured for this restaurant, including an array of menu items contained in the group.\n",
      "properties": {
        "name": {
          "description": "A descriptive name for this menu group, for example, \"Appetizers\" or \"Sandwiches\".\n",
          "type": "string",
          "example": "Example Name"
        },
        "guid": {
          "description": "A unique identifier for this menu group, assigned by the Toast POS system.\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 menu group.\n",
          "type": "string",
          "example": "string"
        },
        "posName": {
          "$ref": "#/$defs/PosName"
        },
        "posButtonColorLight": {
          "$ref": "#/$defs/PosButtonColorLight"
        },
        "posButtonColorDark": {
          "$ref": "#/$defs/PosButtonColorDark"
        },
        "image": {
          "$ref": "#/$defs/Image"
        },
        "visibility": {
          "$ref": "#/$defs/Visibility"
        },
        "itemTags": {
          "type": "array",
          "description": "An array of `ItemTag` objects that are assigned to this menu group. Item tags are used to assign identifying characteristics, for example, vegetarian, gluten-free, or alcohol.\n",
          "items": {
            "$ref": "#/$defs/ItemTag"
          }
        },
        "menuGroups": {
          "type": "array",
          "description": "An array of the `MenuGroup` objects that are children of this menu group. The array is empty if the menu group has no child menu groups.\n",
          "minItems": 0,
          "items": {
            "$ref": "#/$defs/MenuGroup"
          }
        },
        "menuItems": {
          "type": "array",
          "description": "An array of the `MenuItem` objects contained in this menu group.\n",
          "minItems": 0,
          "items": {
            "$ref": "#/$defs/MenuItem"
          }
        }
      }
    },
    "ItemTag": {
      "type": "object",
      "description": "A descriptive term that identifies a characteristic of a menu item or menu group, for example, vegetarian, gluten-free, or alcohol.\n",
      "properties": {
        "name": {
          "description": "A descriptive name for this item tag, for example, \"Vegetarian\" or \"Alcohol\".\n",
          "type": "string",
          "example": "Example Name"
        },
        "guid": {
          "description": "A unique identifier for this item tag category, assigned by the Toast POS system.\n",
          "type": "string",
          "example": "5a401af8-d2e2-4090-8c45-9f87b8b6c4d1"
        }
      }
    },
    "MenuItem": {
      "type": "object",
      "description": "Information about a menu item configured for this restaurant.\n",
      "properties": {
        "name": {
          "description": "A descriptive name for this menu item, for example, \"Caesar Salad\" or \"Turkey Sandwich\".\n\nTo avoid menu ingestion failures, if the `name` value is an empty string or `null`, the menus API updates it to the string `Missing name` in the returned menus data.\n\nNote that, while this solution allows menu ingestion to proceed without failure, it does allow a menu item 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 menu item in the Toast database, meaning the name will still be blank when looking at the menu item in Toast Web.\n\nTo fix the issue in Toast Web, the restaurant must identify the parent menu entity for the menu item or modifier, view its details page in Toast Web, and then locate and fix the item with the blank name.\n",
          "type": "string",
          "example": "Example Name"
        },
        "kitchenName": {
          "type": "string",
          "description": "The name of the menu item 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 menu item.\n",
          "example": "Example Name"
        },
        "guid": {
          "description": "A unique identifier for this menu item, assigned by the Toast POS system.\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 menu item.\n",
          "type": "string",
          "example": "string"
        },
        "posName": {
          "$ref": "#/$defs/PosName"
        },
        "posButtonColorLight": {
          "$ref": "#/$defs/PosButtonColorLight"
        },
        "posButtonColorDark": {
          "$ref": "#/$defs/PosButtonColorDark"
        },
        "image": {
          "$ref": "#/$defs/Image"
        },
        "visibility": {
          "$ref": "#/$defs/Visibility"
        },
        "price": {
          "type": "number",
          "format": "double",
          "description": "The price of this menu item.\n\nIn Toast Web, menu items may have prices assigned to them individually, or they may inherit them from a parent menu group. The `price` value reflects the menu item's fully resolved pricing configuration in the following ways:\n\n  * For base prices, the `price` value is populated with the specified base price.\n  \n  * For menu-specific prices, the `price` value is resolved based on the current menu. For example, consider a menu item that is included in both Lunch and Dinner menus and is priced at $10 for the Lunch menu and $12 for the Dinner menu. In the fully resolved JSON returned by the menus API, this menu item would appear twice, once as a child of the Lunch menu with a `price` value of $10, and again as a child of the Dinner menu with a `price` value of $12.\n  \n  If this same menu item 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 menu item 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 menu item that costs $15 in the Boston location and $20 in the New York location. When you retrieve menu data for the Boston location, this menu item's `price` value is $15. When you retrieve menu data for the New York location, the menu item's `price` value is $20.\n  \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 menu item during times of the day when a time-specific price has not been defined. For example, consider a menu item that costs $8 from noon to 2pm and $10 during the rest of the day. The `price` value for this item would be $10. You must use the `pricingStrategy` and `pricingRules` values for this menu item to calculate the price of the item during time periods for which a time-specific price has been defined.\n  \n  * For size prices, the `price` value is null. You must use this menu item's `pricingStrategy` and `pricingRules` values to calculate the price of the item for different sizes.\n  \n  * For open prices, the `price` value is null.\n\n  \n  If the menu item is priced using a price level, the `price` value reflects the pricing strategy used for that price level, using the same logic described above. For example, consider a price level that applies a size price to the menu items it is assigned to. In this scenario, the `price` value is null and you must use the menu item's `pricingStrategy` and `pricingRules` values to calculate the price of the item for different sizes.\n\n  For more information on menu item 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",
          "enum": [
            "BASE_PRICE",
            "MENU_SPECIFIC_PRICE",
            "TIME_SPECIFIC_PRICE",
            "SIZE_PRICE",
            "OPEN_PRICE"
          ],
          "description": "A string that represents the pricing strategy used for this menu item.\n\nYou use the `pricingStrategy` value, in conjunction with the `pricingRules` value, to calculate the price for a menu item that uses the Time Specific Price or Size Price pricing strategy.\n\nIn Toast Web, menu items may have pricing strategies assigned to them individually, or they may inherit them from a parent menu group. The `pricingStrategy` value indicates the menu item's fully resolved pricing strategy. If the menu item is priced using the:\n  * Base Price pricing strategy, then the `pricingStrategy` value is BASE_PRICE.\n  * Menu Specific Price pricing strategy, then the `pricingStrategy` value is MENU_SPECIFIC_PRICE.\n  * Time Specific Price pricing strategy, then the `pricingStrategy` value is TIME_SPECIFIC_PRICE.\n  * Size Price pricing strategy, then the `pricingStrategy` value is SIZE_PRICE.\n  * Open Price pricing strategy, then the `pricingStrategy` value is OPEN_PRICE.\n\nIf the menu item 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 menu item 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 menu item is MENU_SPECIFIC_PRICE. When you retrieve menu data for the New York location, the `pricingStrategy` for the menu item is BASE_PRICE.\n\nIf the menu item is priced using a price level, then the `pricingStrategy` value indicates which pricing strategy is used for that price level. For example, if the \"Draft Beer\" pricing level uses a time-specific price, then the `pricingStrategy` value for a menu item that is assigned the \"Draft Beer\" pricing level is TIME_SPECIFIC_PRICE.\n\nIf the `pricingStrategy` value is BASE_PRICE or MENU_SPECIFIC_PRICE, you can retrieve the menu item's price from its `price` value.\n\nIf the `pricingStrategy` value is TIME_SPECIFIC_PRICE or SIZE_PRICE, you must use the rules provided in _this menu item's_ `pricingRules` value to calculate the price for it.\n",
          "example": "BASE_PRICE"
        },
        "pricingRules": {
          "type": "object",
          "description": "A `PricingRules` object with information about how to calculate the price for this menu item. You use a menu item's `pricingRules` value, in conjunction with its `pricingStrategy` value, to calculate a price for a menu item that uses a size-specific or time-specific price.\n\nThe `pricingRules` object takes different forms depending on the pricing strategy configured for the menu item. 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` valu

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