Schemas / I/O

rig.calendar.recurrence

v0.31.0 · draft 5 fields 1 required

Fields

FieldTypeMeaning
frequency enumdaily · weekly · monthly · yearly required daily / weekly / monthly / yearly
interval integer1 – * optional Optional. Every N periods; absent = 1
count integer1 – * optional Optional. How many occurrences; omit if the series uses untilDate
untilDate string optional Optional. Last day an occurrence may fall (YYYY-MM-DD)
byWeekday array<boolean>7 items optional Optional. Which weekdays fire; index 0 = Sunday ... 6 = Saturday

How an event repeats. Format when present.

Field meanings follow the elements of RFC 5545 RRULE (FREQ, INTERVAL, COUNT, UNTIL, BYDAY) - not an RRULE string. Do not encode FREQ=WEEKLY;BYDAY=TU.

frequency is required. Prefer count or untilDate, not both.

Compose onto the same entity as rig.calendar.event. The event's startDate / startMinutes are the first occurrence. Dark days of a series are rig.calendar.exception entities, not EXDATE strings.

BYMONTHDAY, BYSETPOS, WKST, RDATE, and RECURRENCE-ID stay in the iCalendar source. A host that needs them keeps the .ics as fulfillment.

JSON Schema

Resolves at https://rig.works/schemas/rig.calendar.recurrence.schema.jsonraw file.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rig.works/schemas/rig.calendar.recurrence.schema.json",
  "title": "rig.calendar.recurrence",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "frequency": {
      "type": "string",
      "enum": [
        "daily",
        "weekly",
        "monthly",
        "yearly"
      ]
    },
    "interval": {
      "type": "integer",
      "minimum": 1
    },
    "count": {
      "type": "integer",
      "minimum": 1
    },
    "untilDate": {
      "type": "string",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
      "description": "ISO 8601 calendar date."
    },
    "byWeekday": {
      "type": "array",
      "items": {
        "type": "boolean"
      },
      "minItems": 7,
      "maxItems": 7
    }
  },
  "required": [
    "frequency"
  ]
}

Seen in

calendar-event.json