{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/grubhub/main/json-schema/grubhub-periodschedule-schema.json",
"title": "PeriodSchedule",
"x-generated": "2026-09-17",
"x-method": "derived",
"x-source": "openapi/grubhub-merchant-schedules-openapi.yml#/components/schemas/PeriodSchedule",
"type": "object",
"properties": {
"empty": {
"type": "boolean"
}
},
"additionalProperties": {
"type": "array",
"properties": {
"empty": {
"type": "boolean"
}
},
"description": "A collection of the types of schedules for a merchant, the date on which they begin, and the number of days in each schedule's period. Together, this collection defines the outlines of a merchant's pickup and delivery schedules.
Note that the first field, name, is used as the index of the collection.",
"items": {
"$ref": "#/$defs/RepeatingScheduleRuleInterval"
}
},
"description": "A collection of the types of schedules for a merchant, the date on which they begin, and the number of days in each schedule's period. Together, this collection defines the outlines of a merchant's pickup and delivery schedules.
Note that the first field, name, is used as the index of the collection.",
"$defs": {
"Chronology": {
"type": "object",
"properties": {
"zone": {
"$ref": "#/$defs/DateTimeZone"
}
}
},
"DateTimeField": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"$ref": "#/$defs/DateTimeFieldType"
},
"supported": {
"type": "boolean"
},
"lenient": {
"type": "boolean"
},
"duration_field": {
"$ref": "#/$defs/DurationField"
},
"range_duration_field": {
"$ref": "#/$defs/DurationField"
},
"leap_duration_field": {
"$ref": "#/$defs/DurationField"
},
"minimum_value": {
"type": "integer",
"format": "int32"
},
"maximum_value": {
"type": "integer",
"format": "int32"
}
}
},
"DateTimeFieldType": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"duration_type": {
"$ref": "#/$defs/DurationFieldType"
},
"range_duration_type": {
"$ref": "#/$defs/DurationFieldType"
}
}
},
"DateTimeZone": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"fixed": {
"type": "boolean"
}
}
},
"DurationField": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"$ref": "#/$defs/DurationFieldType"
},
"supported": {
"type": "boolean"
},
"unit_millis": {
"type": "integer",
"format": "int64"
},
"precise": {
"type": "boolean"
}
}
},
"DurationFieldType": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
},
"LocalTime": {
"type": "object",
"properties": {
"chronology": {
"$ref": "#/$defs/Chronology"
},
"millis_of_day": {
"type": "integer",
"format": "int32"
},
"hour_of_day": {
"type": "integer",
"format": "int32"
},
"minute_of_hour": {
"type": "integer",
"format": "int32"
},
"second_of_minute": {
"type": "integer",
"format": "int32"
},
"millis_of_second": {
"type": "integer",
"format": "int32"
},
"fields": {
"type": "array",
"items": {
"$ref": "#/$defs/DateTimeField"
}
},
"values": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
},
"field_types": {
"type": "array",
"items": {
"$ref": "#/$defs/DateTimeFieldType"
}
}
}
},
"RepeatingScheduleRuleInterval": {
"required": [
"end_time",
"start_time"
],
"type": "object",
"properties": {
"start_time": {
"$ref": "#/$defs/LocalTime"
},
"end_time": {
"$ref": "#/$defs/LocalTime"
}
}
}
}
}