Skip to content

Commit 8988a2c

Browse files
committed
Definition list, UP reference
1 parent bd965e1 commit 8988a2c

File tree

2 files changed

+48
-25
lines changed

2 files changed

+48
-25
lines changed

content.md

Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,39 +28,57 @@ Typical use cases:
2828

2929
## Terminology
3030

31-
_(Push) backend:_ Part of a WebDAV-Push server that interacts with a specific push transport. In context of this document, there's only one backend for Web Push.
31+
If parts of a term are in brackets, it means that those parts may or may not be written together with the other parts. However it means the same in any case.
3232

33-
_Push notification:_ push message or delivery of a push message
33+
(Push) backend
34+
: Part of a WebDAV-Push server that interacts with a specific push transport. In context of this document, there's only one backend for Web Push.
3435

35-
_Push message:_ Actual network message that is sent from the WebDAV-Push server over a push service to the WebDAV-Push client. Notifies the client that a specific collection (identified by its push topic) has changed.
36+
Push notification
37+
: push message or delivery of a push message
3638

37-
In Web Push context, a server can send a push message (more exact, "request delivery of a push message") by `POST`ing the message to the client's subscription URL.
39+
Push message
40+
: Actual network message that is sent from the WebDAV-Push server over a push service to the WebDAV-Push client. Notifies the client that a specific collection (identified by its push topic) has changed.
41+
42+
In Web Push context, a server can send a push message (more exact, "request delivery of a push message") by `POST`ing the message to the client's subscription URL.
3843

39-
_Push service:_ Infrastructure that implements a specific push transport. The push service is the actual network service between WebDAV-Push server and WebDAV-Push client. For instance, if the push transport is Web Push and the client is a Web app, the push service would be provided by the vendor of the browser that the client runs in.
44+
Push service
45+
: Infrastructure that implements a specific push transport. The push service is the actual network service between WebDAV-Push server and WebDAV-Push client.
46+
47+
For instance, if the push transport is Web Push and the client is a Web app, the push service would be provided by the vendor of the browser that the client runs in.
4048

41-
_(Push) subscription (URL)_: The information that the client needs to provide to the server so that the server can send push notifications.
49+
(Push) subscription (URL)
50+
: The information that the client needs to provide to the server so that the server can send push notifications.
51+
52+
If the transport is Web Push, the term _(push) subscription (URL)_ as used in this document is equivalent to the Web Push term _push resource_. So for instance, a client could have connected to its Web Push service and receive `https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV` as the subscription URL.
4253

43-
If the transport is Web Push, the term _(push) subscription (URL)_ as used in this document is equivalent to the Web Push term _push resource_. So for instance, a client could have connected to its Web Push service and receive `https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV` as the subscription URL.
54+
(Push) topic
55+
: Character sequence that identifies a WebDAV collection for push purposes (unique per WebDAV server). A specific collection could be reachable at different URLs, but it can only have one push topic.
4456

45-
_(Push) topic:_ Character sequence that identifies a WebDAV collection for push purposes (unique per WebDAV server). A specific collection could be reachable at different URLs, but it can only have one push topic.
57+
(Push) transport
58+
: Protocol that defines an actual push mechanism. In this document, Web Push is the only defined push transport. 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 (like it's done for Web Push in Appendix A). A push transport implementation may or may not involve a push service.
4659

47-
_(Push) transport:_ Protocol that defines an actual push mechanism. In this document, Web Push is the only defined push transport. 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 (like it's done for Web Push in Appendix A). A push transport implementation may or may not involve a push service.
60+
Rewrite proxy
61+
: Push services sometimes require authentication from their users and consider their user to be an application vendor who has control over both the server and the client. For instance, a push service could be used by the vendor of a weather app who controls both the servers that deliver weather data and the clients, which are mobile apps that show the weather data. Both servers and clients can authenticate against the push service with the same private key.
62+
63+
When however the server and clients are not in control of the same entity, like when the server is a WebDAV-Push server and the client is a mobile app that is not related to the server vendor, client and server can't have the same private key to authenticate against the push service. In that case, the client vendor may need to operate a rewrite proxy that receives each push message delivery request from a server, sign it with the same private key as the client and forwards it to the push service.
4864

49-
_Rewrite proxy:_ Push services sometimes require authentication from their users and consider their user to be an application vendor who has control over both the server and the client. For instance, a push service could be used by the vendor of a weather app who controls both the servers that deliver weather data and the clients, which are mobile apps that show the weather data. Both servers and clients can authenticate against the push service with the same private key.
65+
{{UnifiedPush}}
66+
: Implementation of Web Push that is not bound to browsers or infrastructure of browser vendors. Can be used by desktop and mobile applications and with various custom (also self-hosted) push services.
5067

51-
When however the server and clients are not in control of the same entity, like when the server is a WebDAV-Push server and the client is a mobile app that is not related to the server vendor, client and server can't have the same private key to authenticate against the push service. In that case, the client vendor may need to operate a rewrite proxy that receives each push message delivery request from a server, sign it with the same private key as the client and forwards it to the push service.
68+
(W3C) Push API
69+
: API for Web applications to use push notifications over Web Push
5270

53-
_UnifiedPush:_ Implementation of Web Push that is not bound to browsers or infrastructure of browser vendors. Can be used by desktop and mobile applications and with various custom (also self-hosted) push services.
71+
Web Push
72+
: "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 of RFC 8030 (namely chapter 6 and HTTP/2 delivery between push service and client) specify implementation details that may be done by other means without changing the meaning of the RFC for WebDAV-Push servers and clients. There are also additional standards that can be considered to belong to Web Push (like VAPID, RFC 8292 and Message Encryption, RFC 8291).
5473

55-
_W3C Push API:_ API for Web applications to use push notifications over Web Push
74+
WebDAV-Push
75+
: WebDAV-based protocol to notify clients about updates in collections using a push transport (vs. polling)
5676

57-
_Web Push:_ "protocol for the delivery of real-time events to user agents", defined by RFC 8030. 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 of RFC 8030 (namely chapter 6 and HTTP/2 delivery between push service and client) specify implementation details that may be done by other means without changing the meaning of the RFC for WebDAV-Push servers and clients. There are also additional standards that can be considered to belong to Web Push (like VAPID, RFC 8292 and Message Encryption, RFC 8291).
77+
(WebDAV-Push) client
78+
: WebDAV client that supports WebDAV-Push, for instance a CalDAV/CardDAV app on a mobile device
5879

59-
_WebDAV-Push:_ WebDAV-based protocol to notify clients about updates in collections using a push transport (vs. polling)
60-
61-
_(WebDAV-Push) client:_ WebDAV client that supports WebDAV-Push, for instance a CalDAV/CardDAV app on a mobile device
62-
63-
_(WebDAV-Push) server:_ WebDAV server (for instance a CalDAV/CardDAV server) that implements WebDAV-Push
80+
(WebDAV-Push) server
81+
: WebDAV server (for instance a CalDAV/CardDAV server) that implements WebDAV-Push
6482

6583

6684
## WebDAV server with support for WebDAV-Push
@@ -230,7 +248,7 @@ Sample request for Web Push:
230248
POST https://example.com/webdav/collection/
231249
Content-Type: application/xml; charset="utf-8"
232250
233-
\<?xml version="1.0" encoding="utf-8" ?\>
251+
<?xml version="1.0" encoding="utf-8" ?>
234252
<push-register xmlns="DAV:Push">
235253
<subscription>
236254
<web-push-subscription>
@@ -339,7 +357,7 @@ The push message body contains the topic of the changed collection.
339357
Sample push message body:
340358

341359
~~~
342-
\<?xml version="1.0" encoding="utf-8" ?\>
360+
<?xml version="1.0" encoding="utf-8" ?>
343361
<push-message xmlns="DAV:Push">
344362
<topic>O7M1nQ7cKkKTKsoS_j6Z3w</topic>
345363
</push-message>
@@ -356,7 +374,7 @@ Shall multiple enqueued (and not yet delivered) push messages for the same colle
356374
single one (like _Replacing push messages_ with the `Topic` header in RFC 8030)? Maybe use a
357375
timestamp? Shall this be specified in general, per transport or not at all?
358376

359-
CTag?
377+
CTag / sync-token?
360378

361379
How often / batch / delay?
362380

@@ -422,12 +440,12 @@ Corresponding terminology:
422440
* (WebDAV-Push) _push server_ ↔ (RFC 8030) _application server_
423441
* (WebDAV-Push) _push client_ (or _redirect proxy_) ↔ (RFC 8030) _user agent_
424442

425-
Usage of Message Encryption {{RFC8291}} and VAPID {{RFC8292}} is recommended. If future protocol extensions become used by push services, WebDAV-Push servers should implement them as well, if
443+
Usage of Message Encryption {{RFC8291}} and VAPID {{RFC8292}} is RECOMMENDED. If future protocol extensions become used by push services, WebDAV-Push servers should implement them as well, if
426444
applicable.
427445

428446
A WebDAV-Push server should use the collection topic as `Topic` header in push messages to replace previous notifications for the same collection.
429447

430-
> **NOTE**: [UnifiedPush](https://unifiedpush.org/) (UP) is a specification which is intentionally designed as a 100% compatible subset of Web Push, together with a software that can be used to implement these documents. From a WebDAV-Push server perspective, UP endpoints can be seen as Web Push resources.
448+
> [Non-normative, should probably be removed] **NOTE**: {{UnifiedPush}} (UP) is a specification which is intentionally designed as a 100% compatible subset of Web Push, together with a software that can be used to implement these documents. From a WebDAV-Push server perspective, UP endpoints can be seen as Web Push resources.
431449
432450
<!-- <artwork type="svg" src="images/unifiedpush-flowchart.svg"/> -->
433451

@@ -470,7 +488,7 @@ Example:
470488

471489
The push message is delivered via `POST` to the push resource, with `Content-Type: application/xml; charset="UTF-8"`.
472490

473-
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.
491+
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.
474492

475493
The exact algorithm to derive the `Topic` header from the push topic can be chosen by the server.
476494

webdav-push.mkd

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ normative:
2727
RFC8292:
2828
RFC9110:
2929

30+
informative:
31+
UnifiedPush:
32+
title: UnifiedPush
33+
target: https://unifiedpush.org
34+
date: false
3035

3136
--- abstract
3237

0 commit comments

Comments
 (0)