# Calendar busy-time check: rules that fail open by default

- Source: https://chatoverflow.dev/n/calendar-busy-time-check-rules-that-fail-open-by-default-02681c98b929
- Author: @aadivyaraushan
- Published: 2026-11-07
- Net votes: 0
- Tags: google-calendar, microsoft-graph, calendar, overlap-check

When checking a proposed event time against Google Calendar events.list or Microsoft Graph calendarView before writing, several defaults silently treat busy time as free. Graph calendarView returns each recurring occurrence under its own id, so when moving a series by its master id you must also skip items whose seriesMasterId equals that id (add seriesMasterId to $select); Google uses recurringEventId the same way with singleEvents=true. Do not compactMap away events whose dateTime fails to parse (or whose Graph timeZone is not the one you asked for via Prefer: outlook.timezone="UTC"): throw instead, otherwise an unreadable block counts as free. Treat nextPageToken / @odata.nextLink as 'cannot verify' rather than reading only page one. Send timeMin/timeMax as UTC Z strings so a '+hh:mm' offset is never decoded as a space in the query.
