{
  "type": "Schedule",
  "derivedFrom": "https://pending.schema.org/Schedule",
  "derivedFromPending": true,
  "hasId": false,
  "requiredFields": [
    "type",
    "scheduledEventType",
    "startTime",
    "endTime",
    "scheduleTimezone"
  ],
  "requiredOptions": [
    {
      "description": [
        "While these properties are marked as optional, a data publisher must provide either a `byDay`, `byMonth`, `byMonthDay` or `repeatFrequency` for a schedule."
      ],
      "options": [
        "byDay",
        "byMonth",
        "byMonthDay",
        "repeatFrequency"
      ]
    }
  ],
  "commonTypos": {
    "frequency": "repeatFrequency"
  },
  "recommendedFields": [
    "duration",
    "startDate",
    "endDate",
    "idTemplate",
    "urlTemplate"
  ],
  "inSpec": [
    "type",
    "repeatFrequency",
    "byDay",
    "startDate",
    "endDate",
    "startTime",
    "endTime",
    "repeatCount",
    "byMonth",
    "byMonthDay",
    "exceptDate",
    "duration",
    "scheduledEventType",
    "scheduleTimezone",
    "idTemplate",
    "urlTemplate"
  ],
  "fields": {
    "type": {
      "fieldName": "type",
      "requiredType": "https://schema.org/Text",
      "requiredContent": "Schedule"
    },
    "byDay": {
      "fieldName": "byDay",
      "sameAs": "https://pending.schema.org/byDay",
      "requiredType": "ArrayOf#https://schema.org/DayOfWeek",
      "alternativeTypes": ["ArrayOf#https://schema.org/Text"],
      "example": ["https://schema.org/Monday"],
      "description": [
        "Defines the day of the week upon which the Event takes place.",
        "When using string values, this MUST conform to iCal BYDAY rule."
      ]
    },
    "byMonth": {
      "fieldName": "byMonth",
      "sameAs": "https://pending.schema.org/byMonth",
      "requiredType": "ArrayOf#https://schema.org/Integer",
      "example": [2],
      "description": [
        "Defines the months of the year on which the Event takes place. Specified as an integer between 1 and 12, with 1 representing January."
      ]
    },
    "byMonthDay": {
      "fieldName": "byMonthDay",
      "sameAs": "https://pending.schema.org/byMonthDay",
      "requiredType": "ArrayOf#https://schema.org/Integer",
      "example": [28],
      "description": [
        "Defines the days of the month on which the Event takes place. Specified as an integer between 1 and 31"
      ]
    },
    "duration": {
      "fieldName": "duration",
      "sameAs": "https://schema.org/duration",
      "requiredType": "https://schema.org/Duration",
      "description": [
        "The duration of the event given in [ISO8601] format."
      ],
      "example": "PT1H"
    },
    "endDate": {
      "fieldName": "endDate",
      "sameAs": "https://schema.org/endDate",
      "requiredType": "https://schema.org/Date",
      "description": [
        "The end date of the schedule."
      ],
      "example": "2018-01-27"
    },
    "endTime": {
      "fieldName": "endTime",
      "sameAs": "https://schema.org/endTime",
      "requiredType": "https://schema.org/Time",
      "description": [
        "The end time of the event."
      ],
      "example": "12:00:00"
    },
    "exceptDate": {
      "fieldName": "exceptDate",
      "sameAs": "https://pending.schema.org/exceptDate",
      "requiredType": "ArrayOf#https://schema.org/Date",
      "alternativeTypes": ["ArrayOf#https://schema.org/DateTime"],
      "example": [
        "2016-04-13T17:10:00Z",
        "2016-09-14T17:10:00Z",
        "2016-12-14T18:10:00Z",
        "2016-12-21T18:10:00Z",
        "2016-12-28T18:10:00Z",
        "2017-01-04T18:10:00Z"
      ],
      "description": [
        "Exception dates where the schedule should not generate an event."
      ]
    },
    "idTemplate": {
      "fieldName": "idTemplate",
      "sameAs": "https://openactive.io/idTemplate",
      "requiredType": "https://schema.org/Text",
      "example": "https://api.example.org/session-series/123/{startDate}",
      "description": [
        "An RFC6570 compliant URI template that can be used to generate a unique identifier (`@id`) for every event described by the schedule. This property is required if the data provider is supporting third-party booking via the Open Booking API, or providing complimentary individual `subEvent`s."
      ],
      "valueConstraint": "UriTemplate"
    },
    "repeatCount": {
      "fieldName": "repeatCount",
      "sameAs": "https://pending.schema.org/repeatCount",
      "requiredType": "https://schema.org/Integer",
      "example": 3,
      "description": [
        "Defines the number of times a recurring Event will take place."
      ],
      "minValueInclusive": 1
    },
    "repeatFrequency": {
      "fieldName": "repeatFrequency",
      "sameAs": "https://pending.schema.org/repeatFrequency",
      "requiredType": "https://schema.org/Duration",
      "example": "P1D",
      "description": [
        "Defines the frequency at which Events will occur according to a Schedule. The intervals between events should be defined as a Duration of time."
      ]
    },
    "scheduledEventType": {
      "fieldName": "scheduledEventType",
      "sameAs": "https://openactive.io/scheduledEventType",
      "requiredType": "https://schema.org/Text",
      "options": [
        "Event",
        "HeadlineEvent",
        "SessionSeries",
        "ScheduledSession",
        "CourseInstance"
      ],
      "description": [
        "The type of event this schedule related to."
      ],
      "example": "Event"
    },
    "startDate": {
      "fieldName": "startDate",
      "sameAs": "https://schema.org/startDate",
      "requiredType": "https://schema.org/Date",
      "description": [
        "The start date of the event."
      ],
      "example": "2018-01-27"
    },
    "startTime": {
      "fieldName": "startTime",
      "sameAs": "https://schema.org/startTime",
      "requiredType": "https://schema.org/Time",
      "description": [
        "The start time of the event."
      ],
      "example": "12:00:00"
    },
    "scheduleTimezone": {
      "fieldName": "scheduleTimezone",
      "sameAs": "https://pending.schema.org/scheduleTimezone",
      "requiredType": "https://schema.org/Text",
      "example": "Europe/London",
      "description": [
        "Indicates the timezone for which the time(s) indicated in the Schedule are given. The value provided should be among those listed in the IANA Time Zone Database."
      ]
    },
    "urlTemplate": {
      "fieldName": "urlTemplate",
      "sameAs": "https://schema.org/urlTemplate",
      "requiredType": "https://schema.org/Text",
      "example": "https://example.org/session-series/123/{startDate}",
      "description": [
        "An RFC6570 compliant URI template that can be used to generate a unique `url` for every event described by the schedule. This property is required if the data provider wants to provide participants with a unique URL to book to attend an event."
      ],
      "valueConstraint": "UriTemplate"
    }
  }
}
