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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.
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.