Calendar/Graph webhook vs polling support #2

Closed
opened 2026-09-01 19:27:56 +00:00 by haylan · 1 comment
Owner

Part of #1

Question

Does Nextcloud CalDAV (as Mail-in-a-Box bundles it) support webhook/push notification of calendar changes, or is polling (with WebDAV sync-token, RFC 6578) the only option? Separately, does Microsoft Graph support webhook change notifications for calendar events (subscriptions API), and what's needed to wire it up (subscription renewal cadence, validation endpoint, tenant requirements)? This fact gates the refresh-trigger-mechanism ticket — the user prefers webhooks where a source supports them.

Part of #1 ## Question Does Nextcloud CalDAV (as Mail-in-a-Box bundles it) support webhook/push notification of calendar changes, or is polling (with WebDAV sync-token, RFC 6578) the only option? Separately, does Microsoft Graph support webhook change notifications for calendar events (subscriptions API), and what's needed to wire it up (subscription renewal cadence, validation endpoint, tenant requirements)? This fact gates the refresh-trigger-mechanism ticket — the user prefers webhooks where a source supports them.
haylan added the wayfinder:research label 2026-09-01 19:28:24 +00:00
Author
Owner

Researched in docs/research/smart-tablet-screen-calendar-webhooks.md.

Nextcloud/Mail-in-a-Box: Mail-in-a-Box pins Nextcloud 27.1.11 (its setup script), but Nextcloud's Webhooks app (webhook_listeners, bundled in nextcloud/server) only exists from Nextcloud 30.0.0 onward and isn't enabled by default even there. So no webhook path is realistically available on a Mail-in-a-Box box today - the only mechanism is WebDAV Collection Sync (RFC 6578 sync-token), which still requires client-initiated polling but avoids full re-fetch.

Microsoft Graph: /subscriptions fully supports the event resource (personal + work/school accounts). Creating a subscription requires a synchronous validation-token handshake (echo the token as text/plain within 10s). Notifications are basic (id + resource path, no event body) delivered as a changeNotificationCollection. Max subscription duration for events is 10,080 minutes (under 7 days) - subscriptions are NOT indefinite and must be renewed via PATCH before expiry.

Recommendation for #5: sync-token polling for Nextcloud/CalDAV; real webhook subscription + scheduled PATCH-renewal job (plus a low-frequency polling fallback) for Graph.

Researched in docs/research/smart-tablet-screen-calendar-webhooks.md. Nextcloud/Mail-in-a-Box: Mail-in-a-Box pins Nextcloud 27.1.11 (its setup script), but Nextcloud's Webhooks app (webhook_listeners, bundled in nextcloud/server) only exists from Nextcloud 30.0.0 onward and isn't enabled by default even there. So no webhook path is realistically available on a Mail-in-a-Box box today - the only mechanism is WebDAV Collection Sync (RFC 6578 sync-token), which still requires client-initiated polling but avoids full re-fetch. Microsoft Graph: /subscriptions fully supports the event resource (personal + work/school accounts). Creating a subscription requires a synchronous validation-token handshake (echo the token as text/plain within 10s). Notifications are basic (id + resource path, no event body) delivered as a changeNotificationCollection. Max subscription duration for events is 10,080 minutes (under 7 days) - subscriptions are NOT indefinite and must be renewed via PATCH before expiry. Recommendation for #5: sync-token polling for Nextcloud/CalDAV; real webhook subscription + scheduled PATCH-renewal job (plus a low-frequency polling fallback) for Graph.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: haylan/Smart-Tablet-Screen#2