Skip to content

Commit 1037199

Browse files
authored
CalDAV/CardDAV requirements (#74)
* CalDAV/CardDAV requirements * Minor changes * CalDAV Scheduling inbox/outbox SHOULD support content updates
1 parent c32d208 commit 1037199

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

content.mkd

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ A _property update_ occurs when the WebDAV properties of the collection or its m
208208

209209
A server SHOULD support a `depth` of 0 and MAY support `1` and `infinite`. In case of `infinite`, the limitations described in {{Section 3.3 of RFC6578}} apply: notifications about changes in members which are not supported by the `DAV:sync-collection` report may not be sent.
210210

211-
2. The optional `{DAV:}prop` element (as it may be used in a `PROPFIND` request) specified a list of properties that the client is interested in. The list of properties MUST NOT contain properties that represent a content update, especially `{DAV:}getetag`, `{DAV:}getlastmodified` and `{DAV:}sync-token`. If the `{DAV:}prop` element is not present or empty, the server chooses the properties that it considers to be useful for the client. If the `{DAV:}prop` element is present, but contains properties for which property update notifications are not supported, the server MAY ignore those properties, or treat the request as if it was sent with empty `{DAV:prop}`.
211+
2. The optional `{DAV:}prop` element (as it may be used in a `PROPFIND` request) specified a list of properties that the client is interested in. The list of properties MUST NOT contain properties that represent a content update, especially `{DAV:}getetag`, `{DAV:}getlastmodified` and `{DAV:}sync-token`. If the `{DAV:}prop` element is not present or empty, the server chooses the properties that it considers to be useful for the client. If the `{DAV:}prop` element is present, but contains properties for which property update notifications are not supported, the server MAY ignore those properties (instead of rejecting the request with a `trigger-not-supported` response).
212212

213213
### Response
214214

@@ -218,7 +218,7 @@ Allowed response codes:
218218
* 204 if the subscription was registered
219219
* 403 with precondition `invalid-subscription` when the request doesn't contain a valid `subscription`
220220
* 403 with precondition `push-not-available` if WebDAV-Push is not available for this collection or if the user is not allowed to register a push subscription for it
221-
* 403 with precondition `trigger-not-supported` when the request doesn't contain a trigger of when a requested trigger is not supported by the server or the collection
221+
* 403 with precondition `trigger-not-supported` when the request doesn't contain a trigger or when a requested trigger is not supported by the server or the collection
222222
* other response code with usual HTTP/WebDAV semantics
223223

224224
When a subscription is registered the first time, the server creates a URL that identifies that registration (registration URL) which can be used to remove the subscription. The server MUST send the registration URL in the `Location` header.
@@ -239,9 +239,7 @@ Location: https://example.com/webdav/subscriptions/io6Efei4ooph
239239
Expires: Wed, 02 Oct 2024 07:28:00 GMT
240240
~~~
241241

242-
### Preconditions
243-
244-
The `trigger-not-supported` element contains the trigger(s) that are not supported, together with the sync level/depth. If certain requested properties of a property update notification request are not supported, the `{DAV:}prop` element contains only the unsupported properties. If multiple triggers are not supported, the server can return either all of them or the first one and then abort the request.
242+
The `trigger-not-supported` precondition element contains the trigger(s) that are not supported, together with the sync level/depth. If certain requested properties of a property update notification request are not supported, the `{DAV:}prop` element contains only the unsupported properties. If multiple triggers are not supported, the server can return either all of them or the first one and then abort the request.
245243

246244

247245
## Subscription Updates
@@ -330,14 +328,27 @@ An invalid subscription is a subscription that push notifications can't be deliv
330328
A server MAY use some logic like remembering the last successful delivery plus some tolerance interval to defer removal of an invalid subscription for some time. Doing so will make WebDAV-Push more reliable in case of temporary problems and avoid temporal "holes" between subscription removal and re-registration.
331329

332330

331+
333332
# CalDAV/CardDAV
334333

335-
[^todo] Specific implementation notes for CalDAV/CardDAV. Especially a recommendation of what clients shall subscribe to and why:
334+
WebDAV-Push can be used with CalDAV ({{RFC4791}}) and CardDAV ({{RFC6352}}) to provide short-time update notifications when collections (calendars, address books) or entries (contacts, events, …) change.
335+
336+
Depending on the features of a CalDAV/CardDAV client, it could for instance subscribe to:
337+
338+
- content updates of a home-set to become notified about new collections,
339+
- content updates of a collection (usually with a sync-level of 1) to become notified about modified entries,
340+
- property updates of a collection (usually with a depth of zero) to become notified about changes of properties like display name, calendar color and access permissions,
341+
- property updates (for instance display name) of a principal to update real names of collection owners.
336342

337-
* homesets → content updates may trigger calendar list refresh
338-
* calendars / address books → content updates may trigger sync, property updates may trigger calendar meta-data refresh
339-
* principals → keep displayed user data up-to-date
343+
CalDAV/CardDAV servers that support WebDAV-Push SHOULD support:
340344

345+
- content updates with a `{DAV:}sync-level` of at least 1 on
346+
- `calendar-home-set` and `addressbook-home-set` collections,
347+
- calendars and address books (collections which have a `{DAV:}resourcetype` of `{CALDAV:}calendar` or `{CARDDAV:}addressbook`),
348+
- scheduling inbox and outbox collections (collections which have a `{DAV:}resourcetype` of `{CALDAV:}schedule-inbox` or `{CALDAV:}schedule-outbox` as defined in {{Section 2 of RFC6638}});
349+
- property updates with a `{DAV:}depth` of at least 0 on
350+
- calendars and address books,
351+
- principals (collections with have a `{DAV:}resourcetype` of `{DAV:}principal` as defined in {{Section 4 of RFC3744}}).
341352

342353

343354
# Security Considerations

webdav-push.mkd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ normative:
4242
RFC9111:
4343

4444
informative:
45+
RFC3744:
46+
RFC4791:
47+
RFC6352:
48+
RFC6638:
4549
UnifiedPush:
4650
title: UnifiedPush
4751
target: https://unifiedpush.org

0 commit comments

Comments
 (0)