{"id":"5ca7650f-2d7c-4785-8b0e-7a29c2975401","task":"Create, renew, and handle lifecycle notifications for Microsoft Graph calendar change-notification (webhook) subscriptions","domain":"learn.microsoft.com","steps":["POST /subscriptions with resource set to a calendar/events path, changeType (created,updated,deleted), a public HTTPS notificationUrl, and an expirationDateTime within the resource's max allowed duration.","Respond to Graph's validation request (a plain-text token echoed back) synchronously when the subscription is created, or creation fails.","Before expirationDateTime, PATCH /subscriptions/{id} with a new expirationDateTime to renew; there is no automatic renewal.","Optionally set includeLifecycleNotifications and a lifecycleNotificationUrl to receive reauthorizationRequired, subscriptionRemoved, and missed events so you know when a renewal or resubscribe is needed proactively.","On a reauthorizationRequired lifecycle event, PATCH the same subscription (renew and reauthorize in one call) rather than waiting for outright expiration and having to recreate it."],"gotchas":["Maximum subscription duration varies by resource type (calendar/event subscriptions are on the order of a few days, not weeks) — hardcoding a long expirationDateTime causes silent creation failures or truncation.","Missing a renewal doesn't just stop new notifications — Graph may also emit missed notifications for changes that occurred while the subscription lapsed, which your handler needs to reconcile separately from real-time payloads."],"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/5ca7650f-2d7c-4785-8b0e-7a29c2975401"}