Recurrence

A Recurrence is the structured representation of an ISO 8601-2 §13 recurring time interval. Adopted by MeetingSeries and inline by Meeting for in-meeting patterns (e.g. coffee breaks every 90 minutes).

Unlike iCalendar RRULE (an opaque string), the structured form is queryable — each BYxxx part is its own attribute, so consumers can filter, project, and reason about recurrence without re-implementing the RFC 5545 grammar.

Fields

Field Type Description
freq enum secondly, minutely, hourly, daily, weekly, monthly, yearly.
interval integer Default 1. 2 = every other.
count integer Maximum occurrences.
until datetime Cutoff datetime.
by_day RecurrenceByDay[] Days of week, optionally ordinal (+1 for first, -1 for last).
by_month_day integer[] Day of month (1-31, or negative).
by_month integer[] Month (1-12).
by_week_no integer[] Week of year (1-53).
by_year_day integer[] Day of year (1-366).
by_hour integer[] Hour (0-23).
by_minute integer[] Minute (0-59).
by_second integer[] Second (0-60).
by_set_pos integer[] Set-position filter (e.g. -1 for last of set).
week_start string MO (default), SU, SA.

RecurrenceByDay

Field Type Description
ordinal integer null for “every”, +1 for first, -1 for last.
weekday string 2-letter day code (MO, TU, WE, TH, FR, SA, SU).

Examples

Every year:

recurrence:
  freq: yearly
  interval: 1

First Monday of every quarter:

recurrence:
  freq: monthly
  interval: 3
  by_day:
    - ordinal: 1
      weekday: MO

Daily at 09:00 and 14:00 for 10 occurrences:

recurrence:
  freq: daily
  count: 10
  by_hour: [9, 14]
  by_minute: [0]

See also