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.mkd
+21-22Lines changed: 21 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -98,7 +98,6 @@ Push service
98
98
(Push) transport
99
99
: Protocol that defines an actual push mechanism. In this document, Web Push is the only defined push transport (see {{transport-web-push}}). However, WebDAV-Push may also be used with other push transports like proprietary or yet unknown protocols. In that case, it has to be specified how to use that protocol with WebDAV-Push. A push transport typically involves a push service.
100
100
101
-
102
101
Web Push
103
102
: "Protocol for the delivery of real-time events to user agents", defined by {{RFC8030}}. Usually implemented in browsers (which means that major browser vendors provide their own push services), but there are also other implementations like {{UnifiedPush}}. Some parts (namely push message delivery from the push service to the client) specify implementation details that may be done by other means without changing the meaning of the RFC for WebDAV-Push servers and clients.
104
103
@@ -137,13 +136,13 @@ Here, the OPTIONS response contains "webdav-push" in the DAV header to indicate
137
136
138
137
## Push Properties {#push-properties}
139
138
140
-
To provide information about WebDAV-Push support, new properties are defined. A server MUST provide the `transports`, `topic` and `supported-triggers` properties for resources that support WebDAV-Push. A server MUST NOT provide the `topic` and `supported-triggers` properties for resources that don't support WebDAV-Push (for instance for non-collection resources, if they're not supported).
139
+
To provide information about WebDAV-Push support, new properties are defined. A server MUST provide the `transports`(((transports XML element))), `topic` and `supported-triggers` properties for resources that support WebDAV-Push. A server MUST NOT provide the `topic` and `supported-triggers` properties for resources that don't support WebDAV-Push (for instance for non-collection resources, if they're not supported).
141
140
142
-
The `transports` element lists available push transports. Within the scope of this document, the only supported transport is `web-push` (see {{transport-web-push}}). Although the property is defined on every Push-capable resource, its value is usually the same for every resource on the server.
141
+
The `transports` element(((transports XML element))) lists available push transports. Within the scope of this document, the only supported transport is `web-push` (see {{transport-web-push}}). Although the property is defined on every Push-capable resource, its value is usually the same for every resource on the server.
143
142
144
-
The `topic` is a globally unique identifier for the resource. A specific resource could be reachable with different URLs, but it can have only one push topic. A server could for instance use a random UUID or a canonical URL that won't change over the lifetime of the resource. The value should be globally unique because a client can subscribe to resources from multiple servers and needs to be able to determine the correct one when it receives a push message.
143
+
The `topic`(((topic XML element))) is a globally unique identifier for the resource. A specific resource could be reachable with different URLs, but it can have only one push topic. A server could for instance use a random UUID or a canonical URL that won't change over the lifetime of the resource. The value should be globally unique because a client can subscribe to resources from multiple servers and needs to be able to determine the correct one when it receives a push message.
145
144
146
-
The `supported-triggers` element MUST contain at least one of the following elements:
145
+
The `supported-triggers` element(((supported-triggers XML element))) MUST contain at least one of the following elements:
147
146
148
147
-`content-update` if the resource supports push notifications on content updates (see {{content-updates}}). It contains a `{DAV:}depth` property that indicates the maximum supported depth.
149
148
-`property-update` if the resource supports push notifications on property updates (see {{property-updates}}). It contains a `{DAV:}depth` property that indicates the maximum supported depth.
@@ -180,15 +179,15 @@ The comment shows how support for some other (not yet defined) transport could b
180
179
181
180
To subscribe to a resource, the client sends a `POST` request with `Content-Type: application/xml` to the resource it wants to subscribe. The root XML element of the XML body is `push-register` and can be used to distinguish between WebDAV-Push and other requests.
182
181
183
-
The `push-register` element contains:
182
+
The `push-register` element(((push-register XML element))) contains:
184
183
185
184
* exactly one `subscription` element, which contains all information the server needs to send a push message,
186
185
* exactly one `trigger` element to specify the type of updates the client wants to be notified about, and
187
186
* an optional `expires` element that contains the requested expiration time in the `IMF-fixdate` format (as defined in {{Section 5.6.7 of RFC9110}}).
188
187
189
-
The `subscription` element specifies a subscription that shall be notified on updates and contains exactly one element with details about a specific subscription type. Within the scope of this document, only the `web-push-subscription` child element is defined (see {{transport-web-push}}).
188
+
The `subscription` element(((subscription XML element))) specifies a subscription that shall be notified on updates and contains exactly one element with details about a specific subscription type. Within the scope of this document, only the `web-push-subscription` child element is defined (see {{transport-web-push}}).
190
189
191
-
To specify which updates the client wants to be notified about, it uses the `trigger` (((trigger))) element, which itself can contain:
190
+
To specify which updates the client wants to be notified about, it uses the `trigger` (((trigger XML element))) element, which itself can contain:
192
191
193
192
* A `content-update` element to indicate the client's interest in notifications when the contents of the subscribed resource or its members change ("content update").
194
193
* A `property-update` element to indicate the client's interest in notifications when the WebDAV properties of the subscribed resource or its members change ("property update").
@@ -199,7 +198,7 @@ WebDAV-Push is intended more as a helpful tool to speed up things (like synchron
199
198
200
199
A "content update" occurs when the subscribed resource or a member is changed or removed, as defined in {{Section 3.5 of RFC6578}}. Typically, this is the case when the resource itself is modified or removed, or when a member is added or removed or its contents are modified. If the server supports {{RFC6578}}, a content update of a collection usually implies that the `{DAV:}sync-token` changes.
201
200
202
-
The `content` element contains a `{DAV:}depth` element that specifies whether the client is interested
201
+
The `content-update` element(((content-update XML element))) contains a `{DAV:}depth` element that specifies whether the client is interested
203
202
204
203
- only in content updates of the subscribed resource (depth: `0`),
205
204
- only in content updates of the subscribed resource and its internal members (depth: `1`), or
@@ -215,7 +214,7 @@ In case the depth is `infinity`, the limitations described in {{Section 3.3 of R
215
214
216
215
### Property Updates {#property-updates}
217
216
218
-
A "property update" occurs when the WebDAV properties of the subscribed resource or its members are modified. Properties update notifications are controlled by two elements within the `property-update` element:
217
+
A "property update" occurs when the WebDAV properties of the subscribed resource or its members are modified. Properties update notifications are controlled by two elements within the `property-update`(((property-update XML element))) element:
219
218
220
219
1. The `{DAV:}depth` element specifies whether the client is interested
221
220
@@ -247,7 +246,7 @@ Allowed response codes:
247
246
* 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)
248
247
* other response code with usual HTTP/WebDAV semantics
249
248
250
-
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 an absolute, canonical registration URL in the `Location` header.
249
+
When a subscription is registered the first time, the server creates a canonical URL that identifies that registration (registration URL)(((Registration URL))) which can be used to remove the subscription. The server MUST send an absolute registration URL in the `Location` header.
251
250
252
251
The server MUST return a HTTP `Expires` header (as defined in {{Section 5.3 of RFC9111}}) in the `IMF-fixdate` format with the actual expiration date on the server, which may be shorter than the expiration requested by the client.
253
252
@@ -324,9 +323,9 @@ In case of the Web Push transport, this happens over a `POST` request to the sub
324
323
325
324
The push message body consists of a `push-message` element, which contains information about the affected resource:
326
325
327
-
- a `topic` element with the push topic (except for VAPID key rotation messages, see {{vapid-key-rotation}}),
328
-
- a `content-update` element in case of a content update, and/or
329
-
- a `property-update` element in case of a property update.
326
+
- a `topic` element(((topic XML element))) with the push topic (except for VAPID key rotation messages, see {{vapid-key-rotation}}),
327
+
- a `content-update` element(((content-update XML element))) in case of a content update, and/or
328
+
- a `property-update` element(((property-update XML element))) in case of a property update.
330
329
331
330
The `content-update` element of a push message SHOULD contain a `{DAV:}sync-token` element so that a client can ignore the push message when it already knows the latest state.
332
331
@@ -482,7 +481,7 @@ Corresponding terminology:
482
481
483
482
Message encryption ({{message-encryption}}) MUST be used. VAPID(((VAPID))) ({{vapid}}) SHOULD be used. (If other methods to provide a security context for Web Push become established, those can be used and necessary WebDAV properties shall be added to this document.)
484
483
485
-
A server that supports the Web Push transport MUST list the `web-push` element in the `transports` property.
484
+
A server that supports the Web Push transport MUST list the `web-push` element(((web-push XML element))) in the `transports` property.
@@ -511,9 +510,9 @@ A server that supports the Web Push transport MUST list the `web-push` element i
511
510
512
511
To register a Web Push subscription, the `subscription` element of the `push-register` request contains exactly one `web-push-subscription`.
513
512
514
-
The `web-push-subscription` element represents the public information of a Web Push subscription that is shared with the WebDAV-Push server.
513
+
The `web-push-subscription` element(((web-push-subscription XML element))) represents the public information of a Web Push subscription that is shared with the WebDAV-Push server.
515
514
516
-
It contains exactly one `push-resource` element, which specifies the absolute URI that identifies the endpoint where Web Push notifications are sent to.
515
+
It contains exactly one `push-resource` element(((push-resource XML element))), which specifies the absolute URI that identifies the endpoint where Web Push notifications are sent to.
517
516
518
517
A Web Push subscription is uniquely identified by its push resource.
519
518
@@ -522,7 +521,7 @@ A Web Push subscription is uniquely identified by its push resource.
522
521
523
522
VAPID {{RFC8292}} binds push subscriptions to a specific WebDAV-Push server.
524
523
525
-
A WebDAV-Push server that supports VAPID stores a key pair. It exposes an additional transport property `vapid-public-key` within the `web-push` element, which contains the VAPID public key in uncompressed form and base64url encoded. The attribute `type="p256ecdsa"` MUST be added to allow different key types in the future. See {{push-properties}} for an example.
524
+
A WebDAV-Push server that supports VAPID stores a key pair. It exposes an additional transport property `vapid-public-key`(((vapid-public-key XML element))) within the `web-push` element, which contains the VAPID public key in uncompressed form and base64url encoded. The attribute `type="p256ecdsa"` MUST be added to allow different key types in the future. See {{push-properties}} for an example.
526
525
527
526
If the server provides a VAPID public key, the client MUST use that key to create a restricted subscription at the push service (except when the used push service doesn't support VAPID).
528
527
@@ -547,15 +546,15 @@ A client that receives a key rotation push message MUST assume that the last kno
547
546
However because it's possible that the VAPID key changes without possibility to notify the clients with the old key, clients are advised to verify the VAPID key regularly.
Message encryption hides details of push messages from the push services. Before creating the subscription, the client generates a key pair as defined in {{RFC8291}}.
553
552
554
553
When the client then registers this subscription at the server, it MUST include these subscription properties:
555
554
556
-
*`content-encoding` – how the encrypted content is encoded; currently only `aes128gcm` is supported
557
-
*`subscription-public-key` – public key of the user agent's key pair in uncompressed form and base64url encoded; attribute `type="p256dh"` MUST be added to allow different key types in the future
558
-
*`auth-secret` – authentication secret
555
+
*`content-encoding`(((content-encoding XML element))) – how the encrypted content is encoded; currently only `aes128gcm` is supported
556
+
*`subscription-public-key`(((subscription-public-key XML element))) – public key of the user agent's key pair in uncompressed form and base64url encoded; attribute `type="p256dh"` MUST be added to allow different key types in the future
557
+
*`auth-secret`(((auth-secret XML element))) – authentication secret
559
558
560
559
These properties are bound to the subscription (which is identified by the push resource). A server doesn't need to store these properties for every registration, but only once for the subscription.
0 commit comments