The full attendee list (normalized). The watcher confirms the agent identity is among them.
OptionalEndThe meeting's scheduled end time (UTC), when known.
The platform's stable unique id for the event (Graph event.id, Google event.id). The
watcher dedupes on this so the same invite never spawns two scheduled bridges.
OptionalJoinThe online-meeting join URL (Graph onlineMeeting.joinUrl, Google hangoutLink /
conferenceData.entryPoints[].uri). May be absent for a non-online event — the watcher skips
invites with no join URL (there is nothing to bridge to).
OptionalOrganizerThe organizer (normalized).
The meeting's scheduled start time (UTC) — becomes the bridge's ScheduledStartTime.
OptionalSubjectHuman-readable subject/title of the meeting, when available (for diagnostics + display).
A normalized calendar invite — the provider-agnostic shape every ICalendarSource adapter returns, regardless of whether it came from Microsoft Graph (
/me/events) or the Google Calendar API. The CalendarWatcher consumes only this shape, so adding a new calendar backend never touches the watcher.