{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/toast/refs/heads/main/json-schema/menus-schedule-schema.json", "title": "Schedule", "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", "type": "object", "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": "#/definitions/TimeRange" } } } }