Toast · Schema

Availability

Information about when a menu is available for use.

RestaurantsPoint Of SalePaymentsOnline OrderingDeliveryLoyaltyGift CardsMenusOrdersKitchenLaborSchedulingInventoryHospitalityPartner Integrations

Properties

Name Type Description
alwaysAvailable boolean 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 a
schedule array 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 `sche
View JSON Schema on GitHub

JSON Schema

menus-availability-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-availability-schema.json",
  "title": "Availability",
  "description": "Information about when a menu is available for use.\n",
  "type": "object",
  "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"
      }
    }
  },
  "$defs": {
    "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"
        }
      }
    }
  }
}