Skip to content

Commit 846fd07

Browse files
authored
Merge pull request #5874 from rjbs/extensions-dav
docsrc: document DAV extensions
2 parents 9fafb91 + e561950 commit 846fd07

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# CalDAV and CardDAV Extensions
2+
3+
Cyrus implements several proprietary extensions to WebDAV, CalDAV, and CardDAV.
4+
These extensions use Cyrus-specific XML namespaces, distinct from the standard
5+
namespace URIs defined by the relevant RFCs.
6+
7+
## XML Namespaces
8+
9+
The `http://cyrusimap.org/ns/` namespace is used for Cyrus extensions,
10+
conventionally using the prefix `CY`.
11+
12+
## Properties
13+
14+
### `CY:schedule-user-address`
15+
16+
This property can be found on **CalDAV resources**.
17+
18+
This stores the scheduling addresses associated with the authenticated user for
19+
a particular calendar resource. This is populated from the
20+
`X-Schedule-User-Address` header stored with the calendar object in the IMAP
21+
message store. The property is presented as `DAV:href` children containing
22+
`mailto:` URIs.
23+
24+
### `CY:scheduling-enabled`
25+
26+
This property can be found on **CalDAV collections**.
27+
28+
A boolean-like flag that controls whether CalDAV Auto-Schedule ({rfc}`6638`) is
29+
advertised and active for a given calendar collection. When absent or set to
30+
any value other than `F` or `no`, scheduling is enabled (the default). Setting
31+
it to `F` or `no` suppresses the `calendar-auto-schedule` token from the `DAV:`
32+
response header for that collection and prevents automatic iTIP processing for
33+
events stored in it.
34+
35+
This property is read/write via `PROPPATCH`. The `Scheduling-Enabled: F` HTTP
36+
request header has the same suppression effect for individual calendar resource
37+
PUT requests.
38+
39+
### `CY:address-groups`
40+
41+
This property can be found on **CardDAV resources**.
42+
43+
Lists the vCard groups (vCards with `KIND:group`) that contain this contact.
44+
The property element has zero or more `CY:address-group` child elements, each
45+
containing the UID of a group that includes this contact's UID in its member
46+
list.
47+
48+
This property is read-only and is only meaningful on vCard resources.
49+
50+
## Privileges
51+
52+
Cyrus defines several sub-privileges in the `CY` namespace that refine the
53+
standard WebDAV ACL privilege tree. These appear in the
54+
`DAV:supported-privilege-set` response for calendar and address book
55+
collections. They map to underlying Cyrus IMAP ACL bits as noted.
56+
57+
### Under `DAV:write-properties`
58+
59+
| Privilege | Description | IMAP ACL bit |
60+
|----------------------------------|----------------------------------|-----------------|
61+
| `CY:write-properties-collection` | Write properties on a collection | w |
62+
| `CY:write-properties-resource` | Write properties on a resource | n |
63+
64+
These are just the standard `DAV:write-properties` privilege, split into two
65+
because Cyrus stores collection-level properties and resource-level properties
66+
in different IMAP constructs with different ACL bits.
67+
68+
### Under `DAV:bind`
69+
70+
| Privilege | Description | IMAP ACL bit |
71+
|----------------------|------------------------------------|--------------|
72+
| `CY:make-collection` | Create a new sub-collection | k |
73+
| `CY:add-resource` | Add a new resource to a collection | p |
74+
75+
### Under `DAV:unbind`
76+
77+
| Privilege | Description | IMAP ACL bits |
78+
|------------------------|---------------------|----------------|
79+
| `CY:remove-collection` | Delete a collection | x |
80+
| `CY:remove-resource` | Delete a resource | te |
81+

0 commit comments

Comments
 (0)