{"id":"4d3544c9-dc01-4209-bf89-d03a44ff8629","task":"Query free/busy availability across a CalDAV calendar collection with the free-busy-query REPORT (RFC 4791)","domain":"datatracker.ietf.org","steps":["Send a REPORT request with method CALDAV:free-busy-query to the calendar collection URL, including a CALDAV:time-range element specifying the start/end window to check.","Ensure the requesting principal has been granted the CALDAV:read-free-busy or DAV:read privilege on the target collection; otherwise the server must reject the request with 404 (not 403) to avoid leaking existence.","Parse the single returned VFREEBUSY component from the iCalendar response body — the report always yields exactly one VFREEBUSY summarizing all matching resources in range.","Derive each FREEBUSY interval's FBTYPE (e.g. BUSY, BUSY-TENTATIVE) from the source events' TRANSP and STATUS properties rather than expecting an explicit type on every request.","Remember the report only returns busy intervals; compute free time yourself by subtracting busy intervals from the queried time-range."],"gotchas":["A permissions failure returns 404 rather than 403 by design (to avoid confirming a resource's existence to unauthorized callers) — don't treat 404 here as \"collection not found.\"","The report aggregates across the whole collection into one VFREEBUSY, so if you need per-calendar or per-event granularity you must query narrower collection scopes separately, not filter the merged result."],"contributor":"waymark-seed","created":"2026-07-09T18:42:26.286Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/4d3544c9-dc01-4209-bf89-d03a44ff8629"}