Skip to content

Commit baeb875

Browse files
committed
Index entries for important XML elements (closes #92)
1 parent f731fa4 commit baeb875

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

content.mkd

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ Push service
9898
(Push) transport
9999
: 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.
100100

101-
102101
Web Push
103102
: "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.
104103

@@ -137,13 +136,13 @@ Here, the OPTIONS response contains "webdav-push" in the DAV header to indicate
137136

138137
## Push Properties {#push-properties}
139138

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).
141140

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.
143142

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.
145144

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:
147146

148147
- `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.
149148
- `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
180179

181180
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.
182181

183-
The `push-register` element contains:
182+
The `push-register` element(((push-register XML element))) contains:
184183

185184
* exactly one `subscription` element, which contains all information the server needs to send a push message,
186185
* exactly one `trigger` element to specify the type of updates the client wants to be notified about, and
187186
* an optional `expires` element that contains the requested expiration time in the `IMF-fixdate` format (as defined in {{Section 5.6.7 of RFC9110}}).
188187

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}}).
190189

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:
192191

193192
* 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").
194193
* 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
199198

200199
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.
201200

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
203202

204203
- only in content updates of the subscribed resource (depth: `0`),
205204
- 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
215214

216215
### Property Updates {#property-updates}
217216

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:
219218

220219
1. The `{DAV:}depth` element specifies whether the client is interested
221220

@@ -247,7 +246,7 @@ Allowed response codes:
247246
* 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)
248247
* other response code with usual HTTP/WebDAV semantics
249248

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.
251250

252251
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.
253252

@@ -324,9 +323,9 @@ In case of the Web Push transport, this happens over a `POST` request to the sub
324323

325324
The push message body consists of a `push-message` element, which contains information about the affected resource:
326325

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.
330329

331330
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.
332331

@@ -482,7 +481,7 @@ Corresponding terminology:
482481

483482
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.)
484483

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.
486485

487486
~~~goat
488487
.--------------------. .--------------. .--------------------.
@@ -511,9 +510,9 @@ A server that supports the Web Push transport MUST list the `web-push` element i
511510

512511
To register a Web Push subscription, the `subscription` element of the `push-register` request contains exactly one `web-push-subscription`.
513512

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.
515514

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.
517516

518517
A Web Push subscription is uniquely identified by its push resource.
519518

@@ -522,7 +521,7 @@ A Web Push subscription is uniquely identified by its push resource.
522521

523522
VAPID {{RFC8292}} binds push subscriptions to a specific WebDAV-Push server.
524523

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.
526525

527526
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).
528527

@@ -547,15 +546,15 @@ A client that receives a key rotation push message MUST assume that the last kno
547546
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.
548547

549548

550-
## Message Encryption {#message-encryption}
549+
## Message Encryption(((Encryption))) {#message-encryption}
551550

552551
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}}.
553552

554553
When the client then registers this subscription at the server, it MUST include these subscription properties:
555554

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
559558

560559
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.
561560

0 commit comments

Comments
 (0)