calendaring_jmap.objects.busy_interval module#

JMAP BusyPeriod object.

Represents one interval of a Principal/getAvailability response (draft-ietf-jmap-calendars section 2.2), or one computed client-side by the CalendarEvent/query fallback path when a server doesn't implement that method. Read-only: nothing here is ever sent back to the server, so there is no to_jmap.

class calendaring_jmap.objects.busy_interval.BusyInterval(start, end, busy_status, event=None)[source]#

Bases: object

One busy/free interval.

Variables:
  • start (str) – Start of the interval (UTCDateTime string, always Z-suffixed). Normalized to this one shape regardless of whether it came from Principal/getAvailability or the CalendarEvent/query fallback, since RFC 8984 allows a JSCalendar start to be UTC, time-zone-qualified, or floating; a floating start has no true UTC equivalent and is treated as UTC.

  • end (str) – End of the interval (UTCDateTime string), same normalization as start.

  • busy_status (str) – One of "confirmed", "tentative", "unavailable" (see constants.BUSY_STATUS_*).

  • event (JMAPCalendarObject | None) – The underlying event, when the server populated it. This can be None even when details were requested: confirmed live that this happens when the caller lacks mayReadItems, the event is marked private, or (Stalwart-specific) the caller didn't also pass a server-supported eventProperties list.

busy_status: str#
end: str#
event: JMAPCalendarObject | None = None#
classmethod from_jmap(data)[source]#

Construct a BusyInterval from a raw JMAP BusyPeriod JSON dict.

Unknown keys in data are silently ignored so that forward compatibility is maintained as the spec evolves.

Return type:

BusyInterval

start: str#

Last updated on 2026-11-01.