Skip to content

Commit e964cc1

Browse files
committed
Reordering
1 parent da01157 commit e964cc1

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

content.mkd

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ A _content update_ occurs when a member is changed or removed, as defined in {{S
206206

207207
The `content` element contains a `{DAV:}sync-level` element that specifies whether the client is interested only in changes of internal members (value: `1`) or of all members (value: `infinite`).
208208

209-
A server SHOULD support content update notifications with a `{DAV:}sync-level` of at least `1` for every Push-capable collection. In case the `{DAV:sync-level}` is `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.
209+
A server SHOULD support content update notifications with a `{DAV:}sync-level` of at least `1` for every Push-capable collection. If a collection doesn't support the content update trigger with the requested `{DAV:}sync-level`, it MUST fall back to the lowest supported value instead. If the collection doesn't support the content update trigger at all, it MUST be ignored.
210210

211-
If a collection doesn't support the content update trigger with the requested `{DAV:}sync-level`, it MUST fall back to the lowest supported value instead. If the collection doesn't support the content update trigger at all, it MUST be ignored.
211+
In case the `{DAV:sync-level}` is `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.
212212

213213
### Property Updates {#property-updates}
214214

@@ -220,23 +220,23 @@ A _property update_ occurs when the WebDAV properties of the collection or its m
220220
* A depth of `1` means that the client is interested in property updates of the subscribed collection and its internal members.
221221
* A depth of `infinite` means that the client is interested in property updates of the subscribed collection and all its members.
222222

223-
In case the `{DAV:}depth` is `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.
224-
225223
If the collection doesn't support the property update trigger with the requested `{DAV:}depth`, it MUST fall back to the lowest supported value instead. If the collection doesn't support the property update trigger at all, it MUST be ignored.
226224

227-
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 present and contains properties for which property update notifications are not supported, the server MUST ignore those properties.
225+
In case the `{DAV:}depth` is `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.
226+
227+
2. The optional `{DAV:}prop` element (as used in a `PROPFIND` request) specifies a list of properties that the client is interested in. This 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 present and contains properties for which property update notifications are not supported, the server MUST ignore those unsupported properties.
228228

229-
If the `{DAV:}prop` element is empty or not present, the server chooses the properties that it considers to be useful for the client. Also, a server MAY ignore the contents of a `{DAV:prop}` element at all and treat it like if it was empty or not present.
229+
If the `{DAV:}prop` element is empty or not present, the server chooses a list of properties that it considers to be useful for the client. Also, a server MAY ignore the contents of a `{DAV:prop}` element at all and treat it like if it was empty or not present.
230230

231231
### Response
232232

233233
Allowed response codes:
234234

235-
* 201 if the subscription was registered and the server wants to return additional information, like encryption details that are only valid for this subscription. The format if this details is specified by the respective transport definition.
236-
* 204 if the subscription was registered without additional information available
235+
* 201 if the subscription was registered and the server wants to return additional information, like encryption details that are only valid for this subscription. The format of these details is specified by the respective transport definition.
236+
* 204 if the subscription was registered without additional information
237237
* 403 with precondition `invalid-subscription` when the request doesn't contain a valid `subscription`
238238
* 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
239-
* 403 with precondition `no-supported-trigger` when the request doesn't contain a trigger or when all requested triggers have been ignored (because they're not supported)
239+
* 403 with precondition `no-supported-trigger` when the request doesn't contain a trigger or when all requested triggers are ignored (because they're not supported)
240240
* other response code with usual HTTP/WebDAV semantics
241241

242242
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.
@@ -257,7 +257,7 @@ Location: https://example.com/webdav/subscriptions/io6Efei4ooph
257257
Expires: Wed, 02 Oct 2024 07:28:00 GMT
258258
~~~
259259

260-
Example 2: If a client registers a content update trigger with a `{DAV:}sync-level` of `infinite` and a property update trigger with a `{DAV:}depth` of `1`, but the collection supports only content update triggers with a `{DAV:}sync-level` of `infinite` and doesn't support the property update trigger at all, it registers the subscription and responds with 201.
260+
Example 2: If a client registers a content update trigger with a `{DAV:}sync-level` of `infinite` and a property update trigger with a `{DAV:}depth` of `1`, but the collection supports only content update triggers with a `{DAV:}sync-level` of `1` and doesn't support the property update trigger at all, it registers the subscription and responds with 201. Notifications will then only be sent on content updates with a `{DAV:}sync-level` of `1` (trigger downgraded by server). On property updates, notifications will not be sent (trigger ignored by server).
261261

262262
Example 3: If a client registers a property update trigger with a `{DAV:}depth` of `0` and the collection doesn't support property update triggers at all, the server ignores the trigger. So all triggers of the request are ignored and the server responds with 403 with `no-supported-trigger`.
263263

@@ -353,11 +353,7 @@ A server MAY use some logic like remembering the last successful delivery plus s
353353

354354
## Client Guidelines
355355

356-
Before registering a subscription, a client SHOULD check the available triggers. The client SHOULD NOT register a subscription for unsupported triggers. The client MUST be prepared to receive an error when it registers a subscription with unsupported triggers.
357-
358-
For instance, if a server only supports content updates with a `{DAV:}sync-level` of 1, the client shouldn't register a subscription with an infinite `{DAV:}sync-level` or with a property update trigger, as this would cause an error.
359-
360-
[^todo] Not useful if supported triggers change – ignore unsupported triggers instead?
356+
Before registering a subscription, a client SHOULD check whether the transport is supported and which triggers are supported (usually with the same `PROPFIND` request that requests details like the VAPID public key). The client MUST expect the server to downgrade or ignore certain triggers when they're not (fully) supported. The client MUST be prepared to receive an error when it registers a subscription with only unsupported triggers.
361357

362358

363359
## CalDAV/CardDAV

0 commit comments

Comments
 (0)