You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content.md
+16-12Lines changed: 16 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ This document, below referred to as _WebDAV-Push_, provides a way for compliant
5
5
6
6
WebDAV-Push is intended as an additional tool to notify clients about updates in near time so that clients can refresh their views, perform synchronization etc.
7
7
8
-
A client should not rely solely on WebDAV-Push, so it should also perform regular polling like when WebDAV-Push is not available. However if WebDAV-Push is available, the polling frequency can be
8
+
A client SHOULD NOT rely solely on WebDAV-Push, so it should also perform regular polling like when WebDAV-Push is not available. However if WebDAV-Push is available, the polling frequency can be
9
9
significantly reduced.
10
10
11
11
Typical use cases:
@@ -14,6 +14,10 @@ Typical use cases:
14
14
- A desktop file manager shows contents of a WebDAV collection and wants to be notified on updates in order to refresh the view.
15
15
- A calendar Web app shows a CalDAV collection and wants to be notified on updates in order to refresh the view.
16
16
17
+
## Requirements language
18
+
19
+
{::boilerplate bcp14-tagged}
20
+
17
21
18
22
## Architectural overview
19
23
@@ -93,7 +97,7 @@ A WebDAV client that implements WebDAV-Push typically
93
97
WebDAV-Push is not restricted to specific push transports and allows clients to specify which push transports they support. This allows even upcoming, yet unknown push transports to be used with
94
98
WebDAV-Push.
95
99
96
-
WebDAV-Push implementations _should_ implement at least Web Push / RFC 8030 (see Appendix A).
100
+
WebDAV-Push implementations SHOULD implement at least Web Push / RFC 8030 (see Appendix A).
97
101
98
102
For proprietary push services, client vendors may need to provide a _rewrite proxy_ that signs and forwards the requests to the respective proprietary service.
99
103
@@ -172,9 +176,9 @@ Description:
172
176
173
177
Character sequence that identifies a WebDAV collection for push purposes (globally unique). A specific collection could be reachable at different URLs, but it can only have one push topic.
174
178
175
-
A client may register the same subscription for collections from multiple servers. When the client receives a notification over such a shared subscription, the topic can be used to distinguish which collection was updated. Because the client must be able to distinguish between collections from different servers, the topics need to be globally unique.
179
+
A client MAY register the same subscription for collections from multiple servers. When the client receives a notification over such a shared subscription, the topic can be used to distinguish which collection was updated. Because the client must be able to distinguish between collections from different servers, the topics need to be globally unique.
176
180
177
-
Because push services will typically be able to see push messages in clear text, the topic should not allow to draw conclusions about the synchronized collection.
181
+
Because push services will typically be able to see push messages in clear text, the topic SHOULD NOT allow to draw conclusions about the synchronized collection.
Every subscription has an identifier that uniquely identifies the (push transport, push service, client) triple. For Web Push, the identifier is the push resource URL.
246
250
247
-
A server _must not_ register a subscription with the same identifier multiple times. Instead, when a client wants to register a subscription with an identifier that is already registered for the requested collection, the server _must_ update the subscription with the given details and the expiration date.
251
+
A server MUST NOT register a subscription with the same identifier multiple times. Instead, when a client wants to register a subscription with an identifier that is already registered for the requested collection, the server MUST update the subscription with the given details and the expiration date.
248
252
249
253
Allowed response codes:
250
254
@@ -253,7 +257,7 @@ Allowed response codes:
253
257
* 404 if the registration URL is unknown (or expired)
254
258
* other response code with usual HTTP/WebDAV semantics (if possible, with `DAV:error` XML body)
255
259
256
-
In any case, the server _must_ return the registration URL in the `Location` header.
260
+
In any case, the server MUST return the registration URL in the `Location` header.
257
261
258
262
259
263
## Subscription removal
@@ -281,10 +285,10 @@ HTTP/1.1 204 Unregistered
281
285
282
286
Clients can specify an expiration date-time when they register a subscription.
283
287
284
-
A server should take the expiration specified by a client into consideration, but may impose its own (often stricter) expiration rules, for instance to keep their database clean or because the
285
-
client has specified an implausible late expiration. Servers _should_ keep registered subscriptions for at least a week.
288
+
A server SHOULD take the expiration specified by a client into consideration, but MAY impose its own (often stricter) expiration rules, for instance to keep their database clean or because the
289
+
client has specified an implausible late expiration. Servers SHOULD keep registered subscriptions for at least a week.
286
290
287
-
Clients should refresh their registrations regularly because they can't rely on servers to keep their subscriptions until the client-specified expiration date. Clients _should_ update subscription registrations at least every few days (significantly more often than weekly).
291
+
Clients should refresh their registrations regularly because they can't rely on servers to keep their subscriptions until the client-specified expiration date. Clients SHOULD update subscription registrations at least every few days (significantly more often than weekly).
288
292
289
293
Expired subscriptions should be cleaned up on both server and client side and not be used anymore as chances are high that using such subscriptions will cause errors.
290
294
@@ -358,11 +362,11 @@ Expiration ...
358
362
359
363
### Removal of invalid subscriptions
360
364
361
-
A WebDAV-Push server _must_ ensure that invalid subscriptions (encountered when trying to sending a push notification) are removed at some time.
365
+
A WebDAV-Push server MUST ensure that invalid subscriptions (encountered when trying to sending a push notification) are removed at some time.
362
366
363
367
An invalid subscription is a subscription that push notifications can't be delivered to. Usually the push service returns an HTTP error code like 404 when it receives a notification for an invalid subscription. There may also be other conditions that render a subscription invalid, like a non-resolvable hostname or an encryption handshake error.
364
368
365
-
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.
369
+
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.
366
370
367
371
368
372
## Element definitions
@@ -464,7 +468,7 @@ Example:
464
468
465
469
The push message is delivered via `POST` to the push resource, with `Content-Type: application/xml; charset="UTF-8"`.
466
470
467
-
The push topic _should_ be used to generate the `Topic` header. Since RFC 8030 limits the `Topic` header to 32 characters from the URL and filename-safe Base64 alphabet, it's _recommended_ to use a hash of the push topic that meets these requirements as the header value.
471
+
The push topic SHOULD be used to generate the `Topic` header. Since RFC 8030 limits the `Topic` header to 32 characters from the URL and filename-safe Base64 alphabet, it's _recommended_ to use a hash of the push topic that meets these requirements as the header value.
468
472
469
473
The exact algorithm to derive the `Topic` header from the push topic can be chosen by the server.
0 commit comments