OptionalidServer id. Absent on a rule that has not been stored yet.
OptionaltimezoneLegacy. Every rule of a physician is read in ONE zone — the physician's
calendar zone (schedulingTimezone, else the clinic's), set with
timezone on the schedule itself — so leave this absent. A value equal
to that zone is accepted and stored as null; any other value is refused
(rule_zone_mismatch).
OptionaleffectiveInclusive local-date validity range. Absent = open-ended. Ending a
pattern with effectiveUntil rather than deleting it keeps the rule the
past appointments were booked against.
OptionaleffectiveOptionalintervalRepeat every N weeks (default 1 = every week). For N > 1 the rule needs
effectiveFrom: the first occurrence is the first weekday on or after
it, and the pattern repeats every N × 7 days from there — a fortnightly
Tuesday clinic is {weekday: 2, intervalWeeks: 2, effectiveFrom: <its first date>}.
OptionalspecialtyRestrict this window to ONE specialty slug (a dedicated clinic).
OptionalactiveSoft off-switch: an inactive rule publishes nothing but is kept.
One recurring availability window.
weekdayis 0 = Sunday … 6 = Saturday (JSgetDay()), read in the physician's calendar zone.startMinute/endMinuteare minutes from local midnight; a window that would cross midnight is entered as two rules.