< draft-dusseault-caldav-14.txt   draft-dusseault-caldav-15.txt >
Network Working Group C. Daboo Network Working Group C. Daboo
Internet-Draft Apple Computer Internet-Draft Apple Computer
Expires: February 25, 2007 B. Desruisseaux Expires: March 17, 2007 B. Desruisseaux
Oracle Oracle
L. Dusseault L. Dusseault
OSAF OSAF
August 24, 2006 September 13, 2006
Calendaring Extensions to WebDAV (CalDAV) Calendaring Extensions to WebDAV (CalDAV)
draft-dusseault-caldav-14 draft-dusseault-caldav-15
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 37 skipping to change at page 1, line 37
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on February 25, 2007. This Internet-Draft will expire on March 17, 2007.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). Copyright (C) The Internet Society (2006).
Abstract Abstract
This document specifies a set of methods, headers, message bodies, This document specifies a set of methods, headers, message bodies,
properties, and reports that define calendar access extensions to the properties, and reports that define calendar access extensions to the
WebDAV protocol. The new protocol elements are intended to make WebDAV protocol. The new protocol elements are intended to make
skipping to change at page 3, line 5 skipping to change at page 3, line 5
6. Calendaring Access Control . . . . . . . . . . . . . . . . . 29 6. Calendaring Access Control . . . . . . . . . . . . . . . . . 29
6.1. Calendaring Privilege . . . . . . . . . . . . . . . . . . 29 6.1. Calendaring Privilege . . . . . . . . . . . . . . . . . . 29
6.1.1. CALDAV:read-free-busy Privilege . . . . . . . . . . . 29 6.1.1. CALDAV:read-free-busy Privilege . . . . . . . . . . . 29
6.2. Additional Principal Property . . . . . . . . . . . . . . 30 6.2. Additional Principal Property . . . . . . . . . . . . . . 30
6.2.1. CALDAV:calendar-home-set Property . . . . . . . . . . 30 6.2.1. CALDAV:calendar-home-set Property . . . . . . . . . . 30
7. Calendaring Reports . . . . . . . . . . . . . . . . . . . . . 31 7. Calendaring Reports . . . . . . . . . . . . . . . . . . . . . 31
7.1. REPORT Method . . . . . . . . . . . . . . . . . . . . . . 31 7.1. REPORT Method . . . . . . . . . . . . . . . . . . . . . . 31
7.2. Ordinary collections . . . . . . . . . . . . . . . . . . 31 7.2. Ordinary collections . . . . . . . . . . . . . . . . . . 31
7.3. Date and floating time . . . . . . . . . . . . . . . . . 32 7.3. Date and floating time . . . . . . . . . . . . . . . . . 32
7.4. Time range filtering . . . . . . . . . . . . . . . . . . 32 7.4. Time range filtering . . . . . . . . . . . . . . . . . . 32
7.5. Partial Retrieval . . . . . . . . . . . . . . . . . . . . 33 7.5. Searching Text: Collations . . . . . . . . . . . . . . . 33
7.6. Non-standard components, properties and parameters . . . 34 7.5.1. CALDAV:supported-collation-set Property . . . . . . . 34
7.7. CALDAV:calendar-query Report . . . . . . . . . . . . . . 34 7.6. Partial Retrieval . . . . . . . . . . . . . . . . . . . . 34
7.7.1. Example: Partial retrieval of events by time range . 36 7.7. Non-standard components, properties and parameters . . . 35
7.7.2. Example: Partial retrieval of recurring events . . . 40 7.8. CALDAV:calendar-query Report . . . . . . . . . . . . . . 35
7.7.3. Example: Expanded retrieval of recurring events . . . 43 7.8.1. Example: Partial retrieval of events by time range . 38
7.7.4. Example: Partial retrieval of stored free busy 7.8.2. Example: Partial retrieval of recurring events . . . 42
components . . . . . . . . . . . . . . . . . . . . . 45 7.8.3. Example: Expanded retrieval of recurring events . . . 45
7.7.5. Example: Retrieval of to-dos by alarm time range . . 47 7.8.4. Example: Partial retrieval of stored free busy
7.7.6. Example: Retrieval of event by UID . . . . . . . . . 49 components . . . . . . . . . . . . . . . . . . . . . 47
7.7.7. Example: Retrieval of events by PARTSTAT . . . . . . 51 7.8.5. Example: Retrieval of to-dos by alarm time range . . 49
7.7.8. Example: Retrieval of events only . . . . . . . . . . 53 7.8.6. Example: Retrieval of event by UID . . . . . . . . . 51
7.7.9. Example: Retrieval of all pending to-dos . . . . . . 57 7.8.7. Example: Retrieval of events by PARTSTAT . . . . . . 53
7.7.10. Example: Attempt to query unsupported property . . . 60 7.8.8. Example: Retrieval of events only . . . . . . . . . . 55
7.8. CALDAV:calendar-multiget Report . . . . . . . . . . . . . 61 7.8.9. Example: Retrieval of all pending to-dos . . . . . . 59
7.8.1. Example: Successful CALDAV:calendar-multiget Report . 62 7.8.10. Example: Attempt to query unsupported property . . . 62
7.9. CALDAV:free-busy-query Report . . . . . . . . . . . . . . 64 7.9. CALDAV:calendar-multiget Report . . . . . . . . . . . . . 63
7.9.1. Example: Successful CALDAV:free-busy-query Report . . 66 7.9.1. Example: Successful CALDAV:calendar-multiget Report . 64
8. Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.10. CALDAV:free-busy-query Report . . . . . . . . . . . . . . 66
8.1. Client-to-client Interoperability . . . . . . . . . . . . 67 7.10.1. Example: Successful CALDAV:free-busy-query Report . . 68
8.2. Synchronization Operations . . . . . . . . . . . . . . . 67 8. Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.2.1. Use of Reports . . . . . . . . . . . . . . . . . . . 67 8.1. Client-to-client Interoperability . . . . . . . . . . . . 69
8.2.1.1. Restrict the Time Range . . . . . . . . . . . . . 67 8.2. Synchronization Operations . . . . . . . . . . . . . . . 69
8.2.1.2. Synchronize by Time Range . . . . . . . . . . . . 67 8.2.1. Use of Reports . . . . . . . . . . . . . . . . . . . 69
8.2.1.3. Synchronization Process . . . . . . . . . . . . . 68 8.2.1.1. Restrict the Time Range . . . . . . . . . . . . . 69
8.2.2. Restrict the Properties Returned . . . . . . . . . . 70 8.2.1.2. Synchronize by Time Range . . . . . . . . . . . . 69
8.3. Use of Locking . . . . . . . . . . . . . . . . . . . . . 70 8.2.1.3. Synchronization Process . . . . . . . . . . . . . 70
8.4. Finding calendars . . . . . . . . . . . . . . . . . . . . 70 8.2.2. Restrict the Properties Returned . . . . . . . . . . 72
8.5. Storing and Using Attachments . . . . . . . . . . . . . . 72 8.3. Use of Locking . . . . . . . . . . . . . . . . . . . . . 72
8.5.1. Inline attachments . . . . . . . . . . . . . . . . . 72 8.4. Finding calendars . . . . . . . . . . . . . . . . . . . . 72
8.5.2. External attachments . . . . . . . . . . . . . . . . 73 8.5. Storing and Using Attachments . . . . . . . . . . . . . . 74
8.6. Storing and Using Alarms . . . . . . . . . . . . . . . . 74 8.5.1. Inline attachments . . . . . . . . . . . . . . . . . 74
9. XML Element Definitions . . . . . . . . . . . . . . . . . . . 75 8.5.2. External attachments . . . . . . . . . . . . . . . . 75
9.1. CALDAV:calendar XML Element . . . . . . . . . . . . . . . 75 8.6. Storing and Using Alarms . . . . . . . . . . . . . . . . 76
9.2. CALDAV:mkcalendar XML Element . . . . . . . . . . . . . . 75 9. XML Element Definitions . . . . . . . . . . . . . . . . . . . 77
9.3. CALDAV:mkcalendar-response XML Element . . . . . . . . . 75 9.1. CALDAV:calendar XML Element . . . . . . . . . . . . . . . 77
9.4. CALDAV:calendar-query XML Element . . . . . . . . . . . . 76 9.2. CALDAV:mkcalendar XML Element . . . . . . . . . . . . . . 77
9.5. CALDAV:calendar-data XML Element . . . . . . . . . . . . 76 9.3. CALDAV:mkcalendar-response XML Element . . . . . . . . . 77
9.5.1. CALDAV:comp XML Element . . . . . . . . . . . . . . . 78 9.4. CALDAV:supported-collation XML Element . . . . . . . . . 78
9.5.2. CALDAV:allcomp XML Element . . . . . . . . . . . . . 78 9.5. CALDAV:calendar-query XML Element . . . . . . . . . . . . 78
9.5.3. CALDAV:allprop XML Element . . . . . . . . . . . . . 78 9.6. CALDAV:calendar-data XML Element . . . . . . . . . . . . 79
9.5.4. CALDAV:prop XML Element . . . . . . . . . . . . . . . 79 9.6.1. CALDAV:comp XML Element . . . . . . . . . . . . . . . 80
9.5.5. CALDAV:expand XML Element . . . . . . . . . . . . . . 80 9.6.2. CALDAV:allcomp XML Element . . . . . . . . . . . . . 80
9.5.6. CALDAV:limit-recurrence-set XML Element . . . . . . . 80 9.6.3. CALDAV:allprop XML Element . . . . . . . . . . . . . 81
9.5.7. CALDAV:limit-freebusy-set XML Element . . . . . . . . 81 9.6.4. CALDAV:prop XML Element . . . . . . . . . . . . . . . 81
9.6. CALDAV:filter XML Element . . . . . . . . . . . . . . . . 82 9.6.5. CALDAV:expand XML Element . . . . . . . . . . . . . . 82
9.6.1. CALDAV:comp-filter XML Element . . . . . . . . . . . 82 9.6.6. CALDAV:limit-recurrence-set XML Element . . . . . . . 83
9.6.2. CALDAV:prop-filter XML Element . . . . . . . . . . . 83 9.6.7. CALDAV:limit-freebusy-set XML Element . . . . . . . . 84
9.6.3. CALDAV:param-filter XML Element . . . . . . . . . . . 84 9.7. CALDAV:filter XML Element . . . . . . . . . . . . . . . . 84
9.6.4. CALDAV:is-not-defined XML Element . . . . . . . . . . 84 9.7.1. CALDAV:comp-filter XML Element . . . . . . . . . . . 85
9.6.5. CALDAV:text-match XML Element . . . . . . . . . . . . 85 9.7.2. CALDAV:prop-filter XML Element . . . . . . . . . . . 85
9.7. CALDAV:timezone XML Element . . . . . . . . . . . . . . . 85 9.7.3. CALDAV:param-filter XML Element . . . . . . . . . . . 86
9.8. CALDAV:time-range XML Element . . . . . . . . . . . . . . 86 9.7.4. CALDAV:is-not-defined XML Element . . . . . . . . . . 87
9.9. CALDAV:calendar-multiget XML Element . . . . . . . . . . 90 9.7.5. CALDAV:text-match XML Element . . . . . . . . . . . . 87
9.10. CALDAV:free-busy-query XML Element . . . . . . . . . . . 91 9.8. CALDAV:timezone XML Element . . . . . . . . . . . . . . . 88
10. Internationalization Considerations . . . . . . . . . . . . . 91 9.9. CALDAV:time-range XML Element . . . . . . . . . . . . . . 88
11. Security Considerations . . . . . . . . . . . . . . . . . . . 91 9.10. CALDAV:calendar-multiget XML Element . . . . . . . . . . 93
12. IANA Consideration . . . . . . . . . . . . . . . . . . . . . 92 9.11. CALDAV:free-busy-query XML Element . . . . . . . . . . . 94
12.1. Namespace Registration . . . . . . . . . . . . . . . . . 92 10. Internationalization Considerations . . . . . . . . . . . . . 94
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 93 11. Security Considerations . . . . . . . . . . . . . . . . . . . 94
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 93 12. IANA Consideration . . . . . . . . . . . . . . . . . . . . . 95
14.1. Normative References . . . . . . . . . . . . . . . . . . 93 12.1. Namespace Registration . . . . . . . . . . . . . . . . . 95
14.2. Informative References . . . . . . . . . . . . . . . . . 94 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 96
Appendix A. CalDAV Method Privilege Table (Normative) . . . . . 94 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 96
Appendix B. Calendar collections used in the examples . . . . . 95 14.1. Normative References . . . . . . . . . . . . . . . . . . 96
14.2. Informative References . . . . . . . . . . . . . . . . . 97
Appendix A. CalDAV Method Privilege Table (Normative) . . . . . 97
Appendix B. Calendar collections used in the examples . . . . . 98
Appendix C. Changes (to be removed prior to publication as an Appendix C. Changes (to be removed prior to publication as an
RFC) . . . . . . . . . . . . . . . . . . . . . . . . 101 RFC) . . . . . . . . . . . . . . . . . . . . . . . . 104
C.1. Changes in -14 . . . . . . . . . . . . . . . . . . . . . 101 C.1. Changes in -15 . . . . . . . . . . . . . . . . . . . . . 104
C.2. Changes in -13 . . . . . . . . . . . . . . . . . . . . . 102 C.2. Changes in -14 . . . . . . . . . . . . . . . . . . . . . 105
C.3. Changes in -12 . . . . . . . . . . . . . . . . . . . . . 102 C.3. Changes in -13 . . . . . . . . . . . . . . . . . . . . . 105
C.4. Changes in -11 . . . . . . . . . . . . . . . . . . . . . 102 C.4. Changes in -12 . . . . . . . . . . . . . . . . . . . . . 106
C.5. Changes in -10 . . . . . . . . . . . . . . . . . . . . . 104 C.5. Changes in -11 . . . . . . . . . . . . . . . . . . . . . 106
C.6. Changes in -09 . . . . . . . . . . . . . . . . . . . . . 104 C.6. Changes in -10 . . . . . . . . . . . . . . . . . . . . . 107
C.7. Changes in -08 . . . . . . . . . . . . . . . . . . . . . 106 C.7. Changes in -09 . . . . . . . . . . . . . . . . . . . . . 108
C.8. Changes in -07 . . . . . . . . . . . . . . . . . . . . . 107 C.8. Changes in -08 . . . . . . . . . . . . . . . . . . . . . 109
C.9. Changes in -06 . . . . . . . . . . . . . . . . . . . . . 107 C.9. Changes in -07 . . . . . . . . . . . . . . . . . . . . . 110
C.10. Changes in -05 . . . . . . . . . . . . . . . . . . . . . 108 C.10. Changes in -06 . . . . . . . . . . . . . . . . . . . . . 111
C.11. Changes in -04 . . . . . . . . . . . . . . . . . . . . . 109 C.11. Changes in -05 . . . . . . . . . . . . . . . . . . . . . 111
C.12. Changes in -03 . . . . . . . . . . . . . . . . . . . . . 109 C.12. Changes in -04 . . . . . . . . . . . . . . . . . . . . . 112
C.13. Changes in -02 . . . . . . . . . . . . . . . . . . . . . 109 C.13. Changes in -03 . . . . . . . . . . . . . . . . . . . . . 113
C.14. Changes in -01 . . . . . . . . . . . . . . . . . . . . . 110 C.14. Changes in -02 . . . . . . . . . . . . . . . . . . . . . 113
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 111 C.15. Changes in -01 . . . . . . . . . . . . . . . . . . . . . 113
Intellectual Property and Copyright Statements . . . . . . . . . 112 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114
Intellectual Property and Copyright Statements . . . . . . . . . 115
1. Introduction 1. Introduction
The concept of using HTTP [RFC2616] and WebDAV [RFC2518] as a basis The concept of using HTTP [RFC2616] and WebDAV [RFC2518] as a basis
for a calendar access protocol is by no means a new concept: it was for a calendar access protocol is by no means a new concept: it was
discussed in the IETF CALSCH working group as early as 1997 or 1998. discussed in the IETF CALSCH working group as early as 1997 or 1998.
Several companies have implemented calendar access protocols using Several companies have implemented calendar access protocols using
HTTP to upload and download iCalendar [RFC2445] objects, and using HTTP to upload and download iCalendar [RFC2445] objects, and using
WebDAV to get listings of resources. However, those implementations WebDAV to get listings of resources. However, those implementations
do not interoperate because there are many small and big decisions to do not interoperate because there are many small and big decisions to
be made in how to model calendaring data as WebDAV resources, as well be made in how to model calendaring data as WebDAV resources, as well
as how to implement required features that aren't already part of as how to implement required features that aren't already part of
WebDAV. This document proposes a way to model calendar data in WebDAV. This document proposes a way to model calendar data in
WebDAV, with additional features to make an interoperable calendar WebDAV, with additional features to make an interoperable calendar
access protocol. access protocol.
Discussion of this specification is taking place on the mailing list
<http://lists.osafoundation.org/mailman/listinfo/ietf-caldav>.
1.1. Notational Conventions 1.1. Notational Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
The term "protected" is used in the Conformance field of property The term "protected" is used in the Conformance field of property
definitions as defined in Section 1.4.2 of [RFC3253]. definitions as defined in Section 1.4.2 of [RFC3253].
When XML element types in the namespaces "DAV:" and When XML element types in the namespaces "DAV:" and
"urn:ietf:params:xml:ns:caldav" are referenced in this document "urn:ietf:params:xml:ns:caldav" are referenced in this document
outside of the context of an XML fragment, the string "DAV:" and outside of the context of an XML fragment, the string "DAV:" and
"CALDAV:" will be prefixed to the element type names respectively. "CALDAV:" will be prefixed to the element type names respectively.
1.2. XML Namespaces and Processing 1.2. XML Namespaces and Processing
Definitions of XML elements in this document use XML element type Definitions of XML elements in this document use XML element type
declarations (as found in XML Document Type Declarations), described declarations (as found in XML Document Type Declarations), described
in Section 3.2 of [W3C.REC-xml-20040204]. in Section 3.2 of [W3C.REC-xml-20060816].
The namespace "urn:ietf:params:xml:ns:caldav" is reserved for the XML The namespace "urn:ietf:params:xml:ns:caldav" is reserved for the XML
elements defined in this specification, its revisions, and related elements defined in this specification, its revisions, and related
CalDAV specifications. XML elements defined by individual CalDAV specifications. XML elements defined by individual
implementations MUST NOT use the "urn:ietf:params:xml:ns:caldav" implementations MUST NOT use the "urn:ietf:params:xml:ns:caldav"
namespace, and instead should use a namespace that they control. namespace, and instead should use a namespace that they control.
The XML declarations used in this document do not include namespace The XML declarations used in this document do not include namespace
information. Thus, implementers MUST NOT use these declarations as information. Thus, implementers must not use these declarations as
the only way to create valid CalDAV properties or to validate CalDAV the only way to create valid CalDAV properties or to validate CalDAV
XML element type. Some of the declarations refer to XML elements XML element type. Some of the declarations refer to XML elements
defined by WebDAV [RFC2518] which use the "DAV:" namespace. Wherever defined by WebDAV [RFC2518] which use the "DAV:" namespace. Wherever
such XML elements appear, they are explicitly prefixed with "DAV:" to such XML elements appear, they are explicitly prefixed with "DAV:" to
avoid confusion. avoid confusion.
Also note that some CalDAV XML element names are identical to WebDAV Also note that some CalDAV XML element names are identical to WebDAV
XML element names, though their namespace differs. Care must be XML element names, though their namespace differs. Care must be
taken not to confuse the two sets of names. taken not to confuse the two sets of names.
skipping to change at page 29, line 50 skipping to change at page 29, line 50
Calendar users often wish to allow other users to see their busy time Calendar users often wish to allow other users to see their busy time
information, without viewing the other details of the calendar information, without viewing the other details of the calendar
components (e.g., location, summary, attendees). This allows a components (e.g., location, summary, attendees). This allows a
significant amount of privacy while still allowing other users to significant amount of privacy while still allowing other users to
schedule meetings at times when the user is likely to be free. schedule meetings at times when the user is likely to be free.
The CALDAV:read-free-busy privilege controls which calendar The CALDAV:read-free-busy privilege controls which calendar
collections, regular collections and calendar object resources are collections, regular collections and calendar object resources are
examined when a CALDAV:free-busy-query REPORT request is processed examined when a CALDAV:free-busy-query REPORT request is processed
(see Section 7.9). This privilege can be granted on calendar (see Section 7.10). This privilege can be granted on calendar
collections, regular collections or calendar object resources. collections, regular collections or calendar object resources.
Servers MUST support this privilege on all calendar collections, Servers MUST support this privilege on all calendar collections,
regular collections and calendar object resources. regular collections and calendar object resources.
<!ELEMENT read-free-busy EMPTY> <!ELEMENT read-free-busy EMPTY>
The CALDAV:read-free-busy privilege MUST be aggregated in the DAV: The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:
read privilege. Servers MUST allow the CALDAV:read-free-busy to be read privilege. Servers MUST allow the CALDAV:read-free-busy to be
granted without the DAV:read privilege being granted. granted without the DAV:read privilege being granted.
skipping to change at page 30, line 33 skipping to change at page 30, line 33
6.2.1. CALDAV:calendar-home-set Property 6.2.1. CALDAV:calendar-home-set Property
Name: calendar-home-set Name: calendar-home-set
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Identifies the URL of any WebDAV collections that contain Purpose: Identifies the URL of any WebDAV collections that contain
calendar collections owned by the associated principal resource. calendar collections owned by the associated principal resource.
Conformance: This property MAY be defined in a principal resource. Conformance: This property SHOULD be defined on a principal resource.
If defined, it MAY be protected and SHOULD NOT be returned by a If defined, it MAY be protected and SHOULD NOT be returned by a
PROPFIND DAV:allprop request (as defined in Section 12.14.1 of PROPFIND DAV:allprop request (as defined in Section 12.14.1 of
[RFC2518]). [RFC2518]).
Description: The CALDAV:calendar-home-set property is meant to allow Description: The CALDAV:calendar-home-set property is meant to allow
users to easily find the calendar collections owned by the users to easily find the calendar collections owned by the
principal. Typically, users will group all the calendar principal. Typically, users will group all the calendar
collections that they own under a common collection. This collections that they own under a common collection. This
property specifies the URL of collections that either are calendar property specifies the URL of collections that either are calendar
collections or ordinary collections that have child or descendant collections or ordinary collections that have child or descendant
skipping to change at page 32, line 52 skipping to change at page 32, line 52
or to specific calendar component properties with date or date-time or to specific calendar component properties with date or date-time
value types. value types.
To determine whether a calendar object resource matches the time To determine whether a calendar object resource matches the time
range filter element, the start and end times for the targeted range filter element, the start and end times for the targeted
component or property are determined and then compared to the component or property are determined and then compared to the
requested time range. If there is an overlap with the requested time requested time range. If there is an overlap with the requested time
range, then the calendar object resource matches the filter element. range, then the calendar object resource matches the filter element.
The rules defined in [RFC2445] for determining the actual start and The rules defined in [RFC2445] for determining the actual start and
end times of calendar components MUST be used, and these are fully end times of calendar components MUST be used, and these are fully
enumerated in Section 9.8 of this document. enumerated in Section 9.9 of this document.
When such time range filtering is used, special consideration must be When such time range filtering is used, special consideration must be
given to recurring calendar components such as VEVENT and VTODO given to recurring calendar components such as VEVENT and VTODO
components. The server MUST expand recurring components to determine components. The server MUST expand recurring components to determine
whether any recurrence instances overlap the specified time range. whether any recurrence instances overlap the specified time range.
If one or more recurrence instances overlap the time range, then the If one or more recurrence instances overlap the time range, then the
calendar object resource matches the filter element. calendar object resource matches the filter element.
7.5. Partial Retrieval 7.5. Searching Text: Collations
Some of the reports defined in this section do text matches of
character strings provided by the client and compared to stored
calendar data. Since iCalendar data is by default encoded in the
UTF-8 charset and may include characters outside of the US-ASCII
charset range in some property and parameter values, there is a need
to ensure that text matching follows well-defined rules.
To deal with this, this specification makes use of the IANA Collation
Registry defined in [I-D.newman-i18n-comparator] to specify
collations that may be used to carry out the text comparison
operations with a well-defined rule.
The comparisons used in CalDAV are all "substring" matches as per
[I-D.newman-i18n-comparator] Section 4.2. Collations supported by
the server MUST support "substring" match operations.
CalDAV servers are REQUIRED to support the "i;ascii-casemap" and
"i;octet" collations as described in [I-D.newman-i18n-comparator],
and MAY support other collations.
Servers MUST advertise the set of collations that they support via
the CALDAV:supported-collation-set property defined on any resource
that supports reports that use collations.
Clients MUST only use collations from the list advertised by the
server.
In the absence of a collation explicitly specified by the client, or
if the client specifies the "default" collation identifier (as
defined in [I-D.newman-i18n-comparator] Section 3.1), the server MUST
default to using "i;ascii-casemap" as the collation.
Wildcards (as defined in [I-D.newman-i18n-comparator] Section 3.2)
MUST NOT be used in the collation identifier.
If the client chooses a collation not supported by the server, the
server MUST respond with a CALDAV:supported-collation precondition
error response.
7.5.1. CALDAV:supported-collation-set Property
Name: supported-collation-set
Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Identifies the set of collations supported by the server for
text matching operations.
Conformance: This property MUST be defined on any resource that
supports a REPORT that does text matching. If defined, it MUST be
protected and SHOULD NOT be returned by a PROPFIND DAV:allprop
request (as defined in Section 12.14.1 of [RFC2518]).
Description: The CALDAV:supported-collation-set property contains
zero or more CALDAV:supported-collation elements which specify the
collection identifiers of the collations supported by the server.
Definition:
<!ELEMENT supported-collation-set (supported-collation*)>
<!ELEMENT supported-collation (#PCDATA)>
Example:
<C:supported-collation-set
xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:supported-collation>i;ascii-casemap</C:supported-collation>
<C:supported-collation>i;octet</C:supported-collation>
</C:supported-collation-set>
7.6. Partial Retrieval
Some calendaring REPORTs defined in this document allow partial Some calendaring REPORTs defined in this document allow partial
retrieval of calendar object resources. A CalDAV client may specify retrieval of calendar object resources. A CalDAV client can specify
what information to return in the body of a calendaring REPORT what information to return in the body of a calendaring REPORT
request. request.
A CalDAV client MAY request particular WebDAV property values, all A CalDAV client can request particular WebDAV property values, all
WebDAV property values, or a list of the names of the resource's WebDAV property values, or a list of the names of the resource's
WebDAV properties. A CalDAV client MAY also request calendar data to WebDAV properties. A CalDAV client can also request calendar data to
be returned and whether all calendar components and properties should be returned and whether all calendar components and properties should
be returned or only particular ones. See CALDAV:calendar-data in be returned or only particular ones. See CALDAV:calendar-data in
Section 9.5. Section 9.6.
By default, the returned calendar data will include the component By default, the returned calendar data will include the component
that defines the recurrence set, referred to as the "master that defines the recurrence set, referred to as the "master
component", as well as the components that define exceptions to the component", as well as the components that define exceptions to the
recurrence set, referred to as the "overridden components". recurrence set, referred to as the "overridden components".
A CalDAV client only interested in the recurrence instances that A CalDAV client only interested in the recurrence instances that
overlap a specified time range MAY request to receive only the overlap a specified time range can request to receive only the
"master component" along with the "overridden components" that impact "master component" along with the "overridden components" that impact
the specified time range and thus limit the data returned by the the specified time range and thus limit the data returned by the
server. See CALDAV:limit-recurrence-set in Section 9.5.6. An server. See CALDAV:limit-recurrence-set in Section 9.6.6. An
overridden component impacts a time range if its current start and overridden component impacts a time range if its current start and
end times overlap the time range, or if the original start and end end times overlap the time range, or if the original start and end
times - the ones that would have been used if the instance were not times - the ones that would have been used if the instance were not
overridden - overlap the time range. overridden - overlap the time range.
A CalDAV client with no support for recurrence properties (i.e., A CalDAV client with no support for recurrence properties (i.e.,
EXDATE, EXRULE, RDATE and RRULE) and possibly VTIMEZONE components, EXDATE, EXRULE, RDATE and RRULE) and possibly VTIMEZONE components,
or a client not willing to perform recurrence expansion because of or a client not willing to perform recurrence expansion because of
limited processing capability MAY request to receive only the limited processing capability can request to receive only the
recurrence instances that overlap a specified time range as separate recurrence instances that overlap a specified time range as separate
calendar components that each define exactly one recurrence instance. calendar components that each define exactly one recurrence instance.
See CALDAV:expand in Section 9.5.5. See CALDAV:expand in Section 9.6.5.
Finally, in the case of VFREEBUSY components, a CalDAV client MAY Finally, in the case of VFREEBUSY components, a CalDAV client can
request to receive only the FREEBUSY property values that overlap a request to receive only the FREEBUSY property values that overlap a
specified time range. See CALDAV:limit-freebusy-set in specified time range. See CALDAV:limit-freebusy-set in
Section 9.5.7. Section 9.6.7.
7.6. Non-standard components, properties and parameters 7.7. Non-standard components, properties and parameters
Servers MUST support the use of non-standard component, property or Servers MUST support the use of non-standard component, property or
parameter names in the CALDAV:calendar-data XML element in parameter names in the CALDAV:calendar-data XML element in
calendaring REPORT requests to allow clients to request that non- calendaring REPORT requests to allow clients to request that non-
standard components, properties and parameters be returned in the standard components, properties and parameters be returned in the
calendar data provided in the response. calendar data provided in the response.
Servers MAY support the use of non-standard component, property or Servers MAY support the use of non-standard component, property or
parameter names in the CALDAV:comp-filter, CALDAV:prop-filter and parameter names in the CALDAV:comp-filter, CALDAV:prop-filter and
CALDAV:param-filter XML elements specified in the CALDAV:filter XML CALDAV:param-filter XML elements specified in the CALDAV:filter XML
element of calendaring REPORT requests. element of calendaring REPORT requests.
Servers MUST fail with the CALDAV:supported-filter precondition if a Servers MUST fail with the CALDAV:supported-filter precondition if a
calendaring REPORT request uses a CALDAV:comp-filter, CALDAV:prop- calendaring REPORT request uses a CALDAV:comp-filter, CALDAV:prop-
filter or CALDAV:param-filter XML element that makes reference to a filter or CALDAV:param-filter XML element that makes reference to a
non-standard component, property or parameter name which the server non-standard component, property or parameter name which the server
does not support queries on. does not support queries on.
7.7. CALDAV:calendar-query Report 7.8. CALDAV:calendar-query Report
The CALDAV:calendar-query REPORT performs a search for all calendar The CALDAV:calendar-query REPORT performs a search for all calendar
object resources that match a specified filter. The response of this object resources that match a specified filter. The response of this
REPORT will contain all the WebDAV properties and calendar object REPORT will contain all the WebDAV properties and calendar object
resource data specified in the request. In the case of the CALDAV: resource data specified in the request. In the case of the CALDAV:
calendar-data XML element, one can explicitly specify the calendar calendar-data XML element, one can explicitly specify the calendar
components and properties that should be returned in the calendar components and properties that should be returned in the calendar
object resource data that matches the filter. object resource data that matches the filter.
The format of this REPORT is modeled on the PROPFIND method. The The format of this REPORT is modeled on the PROPFIND method. The
skipping to change at page 34, line 50 skipping to change at page 36, line 26
elements used to return specific property results. For instance, a elements used to return specific property results. For instance, a
request to retrieve the value of a property which does not exist is request to retrieve the value of a property which does not exist is
an error and MUST be noted with a response XML element which contains an error and MUST be noted with a response XML element which contains
a 404 (Not Found) status value. a 404 (Not Found) status value.
Support for the CALDAV:calendar-query REPORT is REQUIRED. Support for the CALDAV:calendar-query REPORT is REQUIRED.
Marshalling: Marshalling:
The request body MUST be a CALDAV:calendar-query XML element as The request body MUST be a CALDAV:calendar-query XML element as
defined in Section 9.4. defined in Section 9.5.
The request MAY include a Depth header. If no Depth header is The request MAY include a Depth header. If no Depth header is
included, Depth:0 is assumed. included, Depth:0 is assumed.
The response body for a successful request MUST be a DAV: The response body for a successful request MUST be a DAV:
multistatus XML element (i.e., the response uses the same format multistatus XML element (i.e., the response uses the same format
as the response for PROPFIND). In the case where there are no as the response for PROPFIND). In the case where there are no
response elements, the returned DAV:multistatus XML element is response elements, the returned DAV:multistatus XML element is
empty. empty.
The response body for a successful CALDAV:calendar-query REPORT The response body for a successful CALDAV:calendar-query REPORT
request MUST contain a DAV:response element for each iCalendar request MUST contain a DAV:response element for each iCalendar
object that matched the search filter. Calendar data is being object that matched the search filter. Calendar data is being
returned in the CALDAV:calendar-data XML element inside the DAV: returned in the CALDAV:calendar-data XML element inside the DAV:
propstat XML element. propstat XML element.
Preconditions: Preconditions:
(CALDAV:supported-calendar-data): The attributes "content-type" (CALDAV:supported-calendar-data): The attributes "content-type"
and "version" of the CALDAV:calendar-data XML element (see and "version" of the CALDAV:calendar-data XML element (see
Section 9.5) specify a media type supported by the server for Section 9.6) specify a media type supported by the server for
calendar object resources. calendar object resources.
(CALDAV:valid-filter): The CALDAV:filter XML element (see (CALDAV:valid-filter): The CALDAV:filter XML element (see
Section 9.6) specified in the REPORT request MUST be valid. For Section 9.7) specified in the REPORT request MUST be valid. For
instance, a CALDAV:filter cannot nest a <C:comp name="VEVENT"> instance, a CALDAV:filter cannot nest a <C:comp name="VEVENT">
element in a <C:comp name="VTODO"> element, or a CALDAV:filter element in a <C:comp name="VTODO"> element, or a CALDAV:filter
cannot nest a <C:time-range start="..." end="..."> element in a cannot nest a <C:time-range start="..." end="..."> element in a
<C:prop name="SUMMARY"> element. <C:prop name="SUMMARY"> element.
(CALDAV:supported-filter): The CALDAV:comp-filter (see (CALDAV:supported-filter): The CALDAV:comp-filter (see
Section 9.6.1), CALDAV:prop-filter (see Section 9.6.2) and CALDAV: Section 9.7.1), CALDAV:prop-filter (see Section 9.7.2) and CALDAV:
param-filter (see Section 9.6.3) XML elements used in the CALDAV: param-filter (see Section 9.7.3) XML elements used in the CALDAV:
filter XML element (see Section 9.6) in the REPORT request only filter XML element (see Section 9.7) in the REPORT request only
make reference to components, properties and parameters for which make reference to components, properties and parameters for which
queries are supported by the server. i.e., if the CALDAV:filter queries are supported by the server. i.e., if the CALDAV:filter
element attempts to reference an unsupported component, property element attempts to reference an unsupported component, property
or parameter, this precondition is violated. Servers SHOULD or parameter, this precondition is violated. Servers SHOULD
report the CALDAV:comp-filter, CALDAV:prop-filter or CALDAV:param- report the CALDAV:comp-filter, CALDAV:prop-filter or CALDAV:param-
filter for which it does not provide support. filter for which it does not provide support.
<!ELEMENT supported-filter (comp-filter*, <!ELEMENT supported-filter (comp-filter*,
prop-filter*, prop-filter*,
param-filter*)> param-filter*)>
skipping to change at page 36, line 17 skipping to change at page 37, line 40
equal to the value of the CALDAV:min-date-time property value equal to the value of the CALDAV:min-date-time property value
(Section 5.2.6) on the calendar collections being targeted by the (Section 5.2.6) on the calendar collections being targeted by the
REPORT; REPORT;
(CALDAV:max-date-time): Any XML element specifying a range of time (CALDAV:max-date-time): Any XML element specifying a range of time
MUST have its start or end date or time values less than or equal MUST have its start or end date or time values less than or equal
to the value of the CALDAV:max-date-time property value to the value of the CALDAV:max-date-time property value
(Section 5.2.7) on the calendar collections being targeted by the (Section 5.2.7) on the calendar collections being targeted by the
REPORT; REPORT;
(CALDAV:supported-collation): Any XML attribute specifying a
collation MUST specify a collation supported by the server as
described in Section 7.5.
Postconditions: Postconditions:
(DAV:number-of-matches-within-limits): The number of matching (DAV:number-of-matches-within-limits): The number of matching
calendar object resources must fall within server-specific, calendar object resources must fall within server-specific,
predefined limits. For example, this condition might be triggered predefined limits. For example, this condition might be triggered
if a search specification would cause the return of an extremely if a search specification would cause the return of an extremely
large number of responses. large number of responses.
7.7.1. Example: Partial retrieval of events by time range 7.8.1. Example: Partial retrieval of events by time range
In this example, the client requests the server to return specific In this example, the client requests the server to return specific
components and properties of the VEVENT components that overlap the components and properties of the VEVENT components that overlap the
time range from January 4th, 2006 at 00:00:00 AM UTC to January 5th, time range from January 4th, 2006 at 00:00:00 AM UTC to January 5th,
2006 at 00:00:00 AM UTC. In addition the DAV:getetag property is 2006 at 00:00:00 AM UTC. In addition the DAV:getetag property is
also requested and returned as part of the response. Note that the also requested and returned as part of the response. Note that the
first calendar object returned is a recurring event whose first first calendar object returned is a recurring event whose first
instance lies outside of the requested time range, but whose third instance lies outside of the requested time range, but whose third
instance does overlap the time range. Note that due to the CALDAV: instance does overlap the time range. Note that due to the CALDAV:
calendar-data element restrictions, the DTSTAMP property in VEVENT calendar-data element restrictions, the DTSTAMP property in VEVENT
skipping to change at page 40, line 5 skipping to change at page 42, line 5
UID:DC6C50A017428C5216A2F1CD@example.com UID:DC6C50A017428C5216A2F1CD@example.com
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.2. Example: Partial retrieval of recurring events 7.8.2. Example: Partial retrieval of recurring events
In this example, the client requests the server to return VEVENT In this example, the client requests the server to return VEVENT
components that overlap the time range from January 3rd, 2006 at 00: components that overlap the time range from January 3rd, 2006 at 00:
00:00 AM UTC to January 5th, 2006 at 00:00:00 AM UTC. Use of the 00:00 AM UTC to January 5th, 2006 at 00:00:00 AM UTC. Use of the
CALDAV:limit-recurrence-set element causes the server to only return CALDAV:limit-recurrence-set element causes the server to only return
overridden recurrence components that overlap the time range overridden recurrence components that overlap the time range
specified in that element, or that affect other instances that specified in that element, or that affect other instances that
overlap the time range (e.g., in the case of a "THISANDFUTURE" overlap the time range (e.g., in the case of a "THISANDFUTURE"
behavior). In this example the first overridden component in the behavior). In this example the first overridden component in the
matching resource is returned but the second one is not. matching resource is returned but the second one is not.
skipping to change at page 43, line 8 skipping to change at page 45, line 8
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.3. Example: Expanded retrieval of recurring events 7.8.3. Example: Expanded retrieval of recurring events
In this example, the client requests the server to return VEVENT In this example, the client requests the server to return VEVENT
components that overlap the time range from January 2nd, 2006 at 00: components that overlap the time range from January 2nd, 2006 at 00:
00:00 AM UTC to January 5th, 2006 at 00:00:00 AM UTC and to return 00:00 AM UTC to January 5th, 2006 at 00:00:00 AM UTC and to return
recurring calendar components expanded into individual recurrence recurring calendar components expanded into individual recurrence
instance calendar components. Use of the CALDAV:expand element instance calendar components. Use of the CALDAV:expand element
causes the server to only return overridden recurrence instances that causes the server to only return overridden recurrence instances that
overlap the time range specified in that element. overlap the time range specified in that element.
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
skipping to change at page 45, line 19 skipping to change at page 47, line 19
X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.4. Example: Partial retrieval of stored free busy components 7.8.4. Example: Partial retrieval of stored free busy components
In this example, the client requests the server to return the In this example, the client requests the server to return the
VFREEBUSY components that have free busy information that overlap the VFREEBUSY components that have free busy information that overlap the
time range from January 2nd, 2006 at 00:00:00 AM UTC (inclusively) to time range from January 2nd, 2006 at 00:00:00 AM UTC (inclusively) to
January 3rd, 2006 at 00:00:00 AM UTC (exclusively). Use of the January 3rd, 2006 at 00:00:00 AM UTC (exclusively). Use of the
CALDAV:limit-freebusy-set element causes the server to only return CALDAV:limit-freebusy-set element causes the server to only return
the FREEBUSY property values that overlap the time range specified in the FREEBUSY property values that overlap the time range specified in
that element. Note that this is not an example of discovering when that element. Note that this is not an example of discovering when
the calendar owner is busy. the calendar owner is busy.
skipping to change at page 47, line 38 skipping to change at page 49, line 38
FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060102T100000Z/20060102T120000Z FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060102T100000Z/20060102T120000Z
END:VFREEBUSY END:VFREEBUSY
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.5. Example: Retrieval of to-dos by alarm time range 7.8.5. Example: Retrieval of to-dos by alarm time range
In this example, the client requests the server to return the VTODO In this example, the client requests the server to return the VTODO
components that have an alarm trigger scheduled in the specified time components that have an alarm trigger scheduled in the specified time
range. range.
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
>> Request << >> Request <<
REPORT /bernard/work/ HTTP/1.1 REPORT /bernard/work/ HTTP/1.1
skipping to change at page 49, line 43 skipping to change at page 51, line 43
END:VALARM END:VALARM
END:VTODO END:VTODO
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.6. Example: Retrieval of event by UID 7.8.6. Example: Retrieval of event by UID
In this example, the client requests the server to return the VEVENT In this example, the client requests the server to return the VEVENT
component that has the UID property set to component that has the UID property set to
"DC6C50A017428C5216A2F1CD@example.com". "DC6C50A017428C5216A2F1CD@example.com".
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
>> Request << >> Request <<
REPORT /bernard/work/ HTTP/1.1 REPORT /bernard/work/ HTTP/1.1
skipping to change at page 50, line 23 skipping to change at page 52, line 23
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop xmlns:D="DAV:"> <D:prop xmlns:D="DAV:">
<D:getetag/> <D:getetag/>
<C:calendar-data/> <C:calendar-data/>
</D:prop> </D:prop>
<C:filter> <C:filter>
<C:comp-filter name="VCALENDAR"> <C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT"> <C:comp-filter name="VEVENT">
<C:prop-filter name="UID"> <C:prop-filter name="UID">
<C:text-match caseless="no" <C:text-match collation="i;octet"
>DC6C50A017428C5216A2F1CD@example.com</C:text-match> >DC6C50A017428C5216A2F1CD@example.com</C:text-match>
</C:prop-filter> </C:prop-filter>
</C:comp-filter> </C:comp-filter>
</C:comp-filter> </C:comp-filter>
</C:filter> </C:filter>
</C:calendar-query> </C:calendar-query>
>> Response << >> Response <<
HTTP/1.1 207 Multi-Status HTTP/1.1 207 Multi-Status
skipping to change at page 51, line 40 skipping to change at page 53, line 40
X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.7. Example: Retrieval of events by PARTSTAT 7.8.7. Example: Retrieval of events by PARTSTAT
In this example, the client requests the server to return the VEVENT In this example, the client requests the server to return the VEVENT
components that have the ATTENDEE property with the value components that have the ATTENDEE property with the value
"mailto:lisa@example.com" and for which the PARTSTAT parameter is set "mailto:lisa@example.com" and for which the PARTSTAT parameter is set
to "NEEDS-ACTION". to "NEEDS-ACTION".
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
>> Request << >> Request <<
skipping to change at page 52, line 23 skipping to change at page 54, line 23
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop xmlns:D="DAV:"> <D:prop xmlns:D="DAV:">
<D:getetag/> <D:getetag/>
<C:calendar-data/> <C:calendar-data/>
</D:prop> </D:prop>
<C:filter> <C:filter>
<C:comp-filter name="VCALENDAR"> <C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT"> <C:comp-filter name="VEVENT">
<C:prop-filter name="ATTENDEE"> <C:prop-filter name="ATTENDEE">
<C:text-match <C:text-match collation="i;ascii-casemap"
caseless="yes">mailto:lisa@example.com</C:text-match> >mailto:lisa@example.com</C:text-match>
<C:param-filter name="PARTSTAT"> <C:param-filter name="PARTSTAT">
<C:text-match caseless="yes">NEEDS-ACTION</C:text-match> <C:text-match collation="i;ascii-casemap"
>NEEDS-ACTION</C:text-match>
</C:param-filter> </C:param-filter>
</C:prop-filter> </C:prop-filter>
</C:comp-filter> </C:comp-filter>
</C:comp-filter> </C:comp-filter>
</C:filter> </C:filter>
</C:calendar-query> </C:calendar-query>
>> Response << >> Response <<
HTTP/1.1 207 Multi-Status HTTP/1.1 207 Multi-Status
skipping to change at page 53, line 43 skipping to change at page 55, line 44
X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.8. Example: Retrieval of events only 7.8.8. Example: Retrieval of events only
In this example, the client requests the server to return all VEVENT In this example, the client requests the server to return all VEVENT
components. components.
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
>> Request << >> Request <<
REPORT /bernard/work/ HTTP/1.1 REPORT /bernard/work/ HTTP/1.1
Host: cal.example.com Host: cal.example.com
skipping to change at page 57, line 35 skipping to change at page 59, line 35
X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.9. Example: Retrieval of all pending to-dos 7.8.9. Example: Retrieval of all pending to-dos
In this example, the client requests the server to return all VTODO In this example, the client requests the server to return all VTODO
components that do not include a "COMPLETED" property and do not have components that do not include a "COMPLETED" property and do not have
a "STATUS" property value matching "CANCELLED". i.e., VTODOs that a "STATUS" property value matching "CANCELLED". i.e., VTODOs that
still need to be worked on. still need to be worked on.
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
>> Request << >> Request <<
skipping to change at page 60, line 5 skipping to change at page 62, line 5
END:VALARM END:VALARM
END:VTODO END:VTODO
END:VCALENDAR END:VCALENDAR
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.7.10. Example: Attempt to query unsupported property 7.8.10. Example: Attempt to query unsupported property
In this example, the client requests the server to return all VEVENT In this example, the client requests the server to return all VEVENT
components that include an "X-ABC-GUID" property with a value components that include an "X-ABC-GUID" property with a value
matching "ABC". However, the server does not support querying that matching "ABC". However, the server does not support querying that
non-standard property and instead returns and error response. non-standard property and instead returns and error response.
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
>> Request << >> Request <<
skipping to change at page 61, line 5 skipping to change at page 63, line 5
Content-Type: application/xml; charset="utf-8" Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<D:error> <D:error>
<C:supported-filter> <C:supported-filter>
<C:prop-filter name="X-ABC-GUID"/> <C:prop-filter name="X-ABC-GUID"/>
</C:supported-filter> </C:supported-filter>
</D:error> </D:error>
7.8. CALDAV:calendar-multiget Report 7.9. CALDAV:calendar-multiget Report
The CALDAV:calendar-multiget REPORT is used to retrieve specific The CALDAV:calendar-multiget REPORT is used to retrieve specific
calendar object resources from within a collection, if the Request- calendar object resources from within a collection, if the Request-
URI is a collection, or to retrieve a specific calendar object URI is a collection, or to retrieve a specific calendar object
resource, if the Request-URI is a calendar object resource. This resource, if the Request-URI is a calendar object resource. This
REPORT is similar to the CALDAV:calendar-query REPORT (see REPORT is similar to the CALDAV:calendar-query REPORT (see
Section 7.7), except that it takes a list of DAV:href elements Section 7.8), except that it takes a list of DAV:href elements
instead of a CALDAV:filter element to determine which calendar object instead of a CALDAV:filter element to determine which calendar object
resources to return. resources to return.
Support for the calendar-multiget REPORT is REQUIRED. Support for the calendar-multiget REPORT is REQUIRED.
Marshalling: Marshalling:
The request body MUST be a CALDAV:calendar-multiget XML element The request body MUST be a CALDAV:calendar-multiget XML element
(see Section 9.9). If the Request-URI is a collection resource, (see Section 9.10). If the Request-URI is a collection resource,
then the DAV:href elements MUST refer to calendar object resources then the DAV:href elements MUST refer to calendar object resources
within that collection, and they MAY refer to calendar object within that collection, and they MAY refer to calendar object
resources at any depth within the collection. As a result the resources at any depth within the collection. As a result the
"Depth" header MUST be ignored by the server and SHOULD NOT be "Depth" header MUST be ignored by the server and SHOULD NOT be
sent by the client. If the Request-URI refers to a non-collection sent by the client. If the Request-URI refers to a non-collection
resource, then there MUST be a single DAV:href element that is resource, then there MUST be a single DAV:href element that is
equivalent to the Request-URI. equivalent to the Request-URI.
The response body for a successful request MUST be a DAV: The response body for a successful request MUST be a DAV:
multistatus XML element. multistatus XML element.
skipping to change at page 61, line 48 skipping to change at page 63, line 48
In the case of an error accessing any of the provided DAV:href In the case of an error accessing any of the provided DAV:href
resources, the server MUST return the appropriate error status resources, the server MUST return the appropriate error status
code in the DAV:status element of the corresponding DAV:response code in the DAV:status element of the corresponding DAV:response
element. element.
Preconditions: Preconditions:
(CALDAV:supported-calendar-data): The attributes "content-type" (CALDAV:supported-calendar-data): The attributes "content-type"
and "version" of the CALDAV:calendar-data XML elements (see and "version" of the CALDAV:calendar-data XML elements (see
Section 9.5) specify a media type supported by the server for Section 9.6) specify a media type supported by the server for
calendar object resources. calendar object resources.
(CALDAV:min-date-time): Any XML element specifying a range of time (CALDAV:min-date-time): Any XML element specifying a range of time
MUST have its start or end date or time values greater than or MUST have its start or end date or time values greater than or
equal to the value of the CALDAV:min-date-time property value equal to the value of the CALDAV:min-date-time property value
(Section 5.2.6) on the calendar collections being targeted by the (Section 5.2.6) on the calendar collections being targeted by the
REPORT; REPORT;
(CALDAV:max-date-time): Any XML element specifying a range of time (CALDAV:max-date-time): Any XML element specifying a range of time
MUST have its start or end date or time values less than or equal MUST have its start or end date or time values less than or equal
to the value of the CALDAV:max-date-time property value to the value of the CALDAV:max-date-time property value
(Section 5.2.7) on the calendar collections being targeted by the (Section 5.2.7) on the calendar collections being targeted by the
REPORT; REPORT;
Postconditions: Postconditions:
None. None.
7.8.1. Example: Successful CALDAV:calendar-multiget Report 7.9.1. Example: Successful CALDAV:calendar-multiget Report
In this example, the client requests the server to return specific In this example, the client requests the server to return specific
properties of the VEVENT components referenced by specific URIs. In properties of the VEVENT components referenced by specific URIs. In
addition the DAV:getetag property is also requested and returned as addition the DAV:getetag property is also requested and returned as
part of the response. Note that in this example, the resource at part of the response. Note that in this example, the resource at
http://cal.example.com/bernard/work/mtg1.ics does not exist, http://cal.example.com/bernard/work/mtg1.ics does not exist,
resulting in an error status response. resulting in an error status response.
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
skipping to change at page 64, line 8 skipping to change at page 66, line 8
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
<D:response> <D:response>
<D:href>http://cal.example.com/bernard/work/mtg1.ics</D:href> <D:href>http://cal.example.com/bernard/work/mtg1.ics</D:href>
<D:status>HTTP/1.1 404 Not Found</D:status> <D:status>HTTP/1.1 404 Not Found</D:status>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
7.9. CALDAV:free-busy-query Report 7.10. CALDAV:free-busy-query Report
The CALDAV:free-busy-query REPORT generates a VFREEBUSY component The CALDAV:free-busy-query REPORT generates a VFREEBUSY component
containing free busy information for all the calendar object containing free busy information for all the calendar object
resources targeted by the request and which have the CALDAV:read- resources targeted by the request and which have the CALDAV:read-
free-busy or DAV:read privilege granted to the current user. free-busy or DAV:read privilege granted to the current user.
Only VEVENT components without a TRANSP property or with the TRANSP Only VEVENT components without a TRANSP property or with the TRANSP
property set to "OPAQUE", and VFREEBUSY components SHOULD be property set to "OPAQUE", and VFREEBUSY components SHOULD be
considered to generate the free busy time information. considered to generate the free busy time information.
skipping to change at page 65, line 8 skipping to change at page 67, line 8
SHOULD NOT be specified in the returned VFREEBUSY component. Servers SHOULD NOT be specified in the returned VFREEBUSY component. Servers
SHOULD coalesce consecutive or overlapping busy time period of the SHOULD coalesce consecutive or overlapping busy time period of the
same type. Busy time periods with different FBTYPE parameter values same type. Busy time periods with different FBTYPE parameter values
MAY overlap. MAY overlap.
Support for the CALDAV:free-busy-query REPORT is REQUIRED. Support for the CALDAV:free-busy-query REPORT is REQUIRED.
Marshalling: Marshalling:
The request body MUST be a CALDAV:free-busy-query XML element (see The request body MUST be a CALDAV:free-busy-query XML element (see
Section 9.10, which MUST contain exactly one CALDAV:time-range XML Section 9.11, which MUST contain exactly one CALDAV:time-range XML
element, as defined in Section 9.8. element, as defined in Section 9.9.
The request MAY include a Depth header. If no Depth header is The request MAY include a Depth header. If no Depth header is
included, Depth:0 is assumed. included, Depth:0 is assumed.
The response body for a successful request MUST be an iCalendar The response body for a successful request MUST be an iCalendar
object that contains exactly one VFREEBUSY component that object that contains exactly one VFREEBUSY component that
describes the busy time intervals for the calendar object describes the busy time intervals for the calendar object
resources containing VEVENT or VFREEBUSY components that satisfy resources containing VEVENT or VFREEBUSY components that satisfy
the Depth value and for which the current user is at least granted the Depth value and for which the current user is at least granted
the CALDAV:read-free-busy privilege. If no calendar object the CALDAV:read-free-busy privilege. If no calendar object
skipping to change at page 66, line 5 skipping to change at page 68, line 5
Postconditions: Postconditions:
(DAV:number-of-matches-within-limits): The number of matching (DAV:number-of-matches-within-limits): The number of matching
calendar object resources must fall within server-specific, calendar object resources must fall within server-specific,
predefined limits. For example, this postcondition might fail if predefined limits. For example, this postcondition might fail if
the specified CALDAV:time-range would cause an extremely large the specified CALDAV:time-range would cause an extremely large
number calendar object resources to be considered to compute the number calendar object resources to be considered to compute the
response. response.
7.9.1. Example: Successful CALDAV:free-busy-query Report 7.10.1. Example: Successful CALDAV:free-busy-query Report
In this example, the client requests the server to return free busy In this example, the client requests the server to return free busy
information on the calendar collection /bernard/work/, between 9:00 information on the calendar collection /bernard/work/, between 9:00
AM and 5:00 PM EST (2:00 PM and 10:00 PM UTC) on the 4th January AM and 5:00 PM EST (2:00 PM and 10:00 PM UTC) on the 4th January
2006. The server responds indicating two busy time intervals of one 2006. The server responds indicating two busy time intervals of one
hour, one of which is tentative. hour, one of which is tentative.
See Appendix B for the calendar data being targeted by this example. See Appendix B for the calendar data being targeted by this example.
>> Request << >> Request <<
skipping to change at page 71, line 19 skipping to change at page 73, line 19
it. This is somewhat of a barrier for WebDAV usage as well as with it. This is somewhat of a barrier for WebDAV usage as well as with
CalDAV usage. This specification does not offer a way through this CalDAV usage. This specification does not offer a way through this
other than making the information available in the OPTIONS response other than making the information available in the OPTIONS response
should this be requested. should this be requested.
For calendar sharing and scheduling use cases, one might wish to find For calendar sharing and scheduling use cases, one might wish to find
the calendar belonging to another user. If the other user has a the calendar belonging to another user. If the other user has a
calendar in the same repository, that calendar can be found by using calendar in the same repository, that calendar can be found by using
the principal namespace required by WebDAV ACL support. For other the principal namespace required by WebDAV ACL support. For other
cases, the authors have no universal solution but implementers can cases, the authors have no universal solution but implementers can
consider whether to use vCard [RFC2426] or LDAP [RFC2251] standards consider whether to use vCard [RFC2426] or LDAP [RFC4511] standards
together with calendar attributes [RFC2739]. together with calendar attributes [RFC2739].
Because CalDAV requires servers to support WebDAV ACL [RFC3744] Because CalDAV requires servers to support WebDAV ACL [RFC3744]
including principal namespaces, and with the addition of the CALDAV: including principal namespaces, and with the addition of the CALDAV:
calendar-home-set property, there are a couple options for CalDAV calendar-home-set property, there are a couple options for CalDAV
clients to find one's own calendar or another user's calendar. clients to find one's own calendar or another user's calendar.
In this case, a DAV:principal-match REPORT is used to find a named In this case, a DAV:principal-match REPORT is used to find a named
property (the CALDAV:calendar-home-set) on the Principal-URL of the property (the CALDAV:calendar-home-set) on the Principal-URL of the
current user. Using this, a WebDAV client can learn "who am I" and current user. Using this, a WebDAV client can learn "who am I" and
skipping to change at page 73, line 13 skipping to change at page 75, line 13
download the entire calendar object resource even if the download the entire calendar object resource even if the
attachment is unchanged. attachment is unchanged.
8.5.2. External attachments 8.5.2. External attachments
CalDAV clients SHOULD support downloading of external attachments CalDAV clients SHOULD support downloading of external attachments
referenced by arbitrary URI schemes, by either processing them referenced by arbitrary URI schemes, by either processing them
directly, or by passing the attachment URI to a suitable "helper directly, or by passing the attachment URI to a suitable "helper
application" for processing, if such an application exists. CalDAV application" for processing, if such an application exists. CalDAV
clients MUST support downloading of external attachments referenced clients MUST support downloading of external attachments referenced
by the "http" URI scheme, and MAY support downloading of external by the "http" or "https" URI schemes. An external attachment could
attachments referenced by the "https" URI scheme. An external be:
attachment could be:
o In a collection in the calendar collection containing the calendar o In a collection in the calendar collection containing the calendar
object resource; object resource;
o Somewhere else in the same repository that hosts the calendar o Somewhere else in the same repository that hosts the calendar
collection; or collection; or
o On an HTTP or FTP server elsewhere. o On an HTTP or FTP server elsewhere.
CalDAV servers MAY provide support for child collections in calendar CalDAV servers MAY provide support for child collections in calendar
skipping to change at page 76, line 17 skipping to change at page 78, line 17
Purpose: Specifies a response body for a successful MKCALENDAR Purpose: Specifies a response body for a successful MKCALENDAR
request. request.
Description: See Section 5.3.1. Description: See Section 5.3.1.
Definition: Definition:
<!ELEMENT mkcalendar-response ANY> <!ELEMENT mkcalendar-response ANY>
9.4. CALDAV:calendar-query XML Element 9.4. CALDAV:supported-collation XML Element
Name: supported-collation
Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Identifies a single collation via its collation identifier
as defined by [I-D.newman-i18n-comparator].
Description: The CALDAV:supported-collation contains the text of a
collation identifier as described in Section 7.5.1.
Definition:
<!ELEMENT supported-collation (#PCDATA)>
PCDATA value: collation identifier
9.5. CALDAV:calendar-query XML Element
Name: calendar-query Name: calendar-query
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Defines a REPORT for querying calendar object resources. Purpose: Defines a REPORT for querying calendar object resources.
Description: See Section 7.7. Description: See Section 7.8.
Definition: Definition:
<!ELEMENT calendar-query ((DAV:allprop | <!ELEMENT calendar-query ((DAV:allprop |
DAV:propname | DAV:propname |
DAV:prop)?, filter, timezone?)> DAV:prop)?, filter, timezone?)>
9.5. CALDAV:calendar-data XML Element 9.6. CALDAV:calendar-data XML Element
Name: calendar-data Name: calendar-data
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Used to (1) specify a supported media type for calendar Purpose: Used to (1) specify a supported media type for calendar
object resources when nested in the CALDAV:supported-calendar-data object resources when nested in the CALDAV:supported-calendar-data
property; (2) specify which parts of a calendar object resource property; (2) specify which parts of a calendar object resource
should be returned by a given calendaring REPORT; and (3) specify should be returned by a given calendaring REPORT; and (3) specify
the content of a calendar object resource in a response to a the content of a calendar object resource in a response to a
skipping to change at page 78, line 5 skipping to change at page 80, line 19
limit-recurrence-set)?, limit-recurrence-set)?,
limit-freebusy-set?) | limit-freebusy-set?) |
#PCDATA)?> #PCDATA)?>
PCDATA value: iCalendar object PCDATA value: iCalendar object
<!ATTLIST calendar-data content-type CDATA "text/calendar"> <!ATTLIST calendar-data content-type CDATA "text/calendar">
version CDATA "2.0"> version CDATA "2.0">
content-type value: a MIME media type content-type value: a MIME media type
version value: a version string version value: a version string
9.5.1. CALDAV:comp XML Element 9.6.1. CALDAV:comp XML Element
Name: comp Name: comp
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Defines which component types to return. Purpose: Defines which component types to return.
Description: The name value is a calendar component name (e.g., Description: The name value is a calendar component name (e.g.,
"VEVENT"). "VEVENT").
skipping to change at page 78, line 29 skipping to change at page 80, line 43
<!ATTLIST comp name CDATA #REQUIRED> <!ATTLIST comp name CDATA #REQUIRED>
name value: a calendar component name name value: a calendar component name
Note: The CALDAV:prop and CALDAV:allprop elements have the same name Note: The CALDAV:prop and CALDAV:allprop elements have the same name
as the DAV:prop and DAV:allprop elements defined in [RFC2518]. as the DAV:prop and DAV:allprop elements defined in [RFC2518].
However, the CALDAV:prop and CALDAV:allprop element are defined in However, the CALDAV:prop and CALDAV:allprop element are defined in
the "urn:ietf:params:xml:ns:caldav" namespace instead of the the "urn:ietf:params:xml:ns:caldav" namespace instead of the
"DAV:" namespace. "DAV:" namespace.
9.5.2. CALDAV:allcomp XML Element 9.6.2. CALDAV:allcomp XML Element
Name: allcomp Name: allcomp
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies that all components shall be returned. Purpose: Specifies that all components shall be returned.
Description: The CALDAV:allcomp XML element can be used when the Description: The CALDAV:allcomp XML element can be used when the
client wants all types of components returned by a calendaring client wants all types of components returned by a calendaring
REPORT request. REPORT request.
Definition: Definition:
<!ELEMENT allcomp EMPTY> <!ELEMENT allcomp EMPTY>
9.5.3. CALDAV:allprop XML Element 9.6.3. CALDAV:allprop XML Element
Name: allprop Name: allprop
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies that all properties shall be returned. Purpose: Specifies that all properties shall be returned.
Description: The CALDAV:allprop XML element can be used when the Description: The CALDAV:allprop XML element can be used when the
client wants all properties of components returned by a client wants all properties of components returned by a
calendaring REPORT request. calendaring REPORT request.
Definition: Definition:
<!ELEMENT allprop EMPTY> <!ELEMENT allprop EMPTY>
Note: The CALDAV:allprop element has the same name as the DAV:allprop Note: The CALDAV:allprop element has the same name as the DAV:allprop
element defined in [RFC2518]. However, the CALDAV:allprop element element defined in [RFC2518]. However, the CALDAV:allprop element
is defined in the "urn:ietf:params:xml:ns:caldav" namespace is defined in the "urn:ietf:params:xml:ns:caldav" namespace
instead of the "DAV:" namespace. instead of the "DAV:" namespace.
9.5.4. CALDAV:prop XML Element 9.6.4. CALDAV:prop XML Element
Name: prop Name: prop
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Defines which properties to return in the response. Purpose: Defines which properties to return in the response.
Description: The "name" attribute specifies the name of the calendar Description: The "name" attribute specifies the name of the calendar
property to return (e.g., "ATTENDEE"). The "novalue" attribute property to return (e.g., "ATTENDEE"). The "novalue" attribute
can be used by clients to request that the actual value of the can be used by clients to request that the actual value of the
skipping to change at page 80, line 5 skipping to change at page 82, line 19
<!ATTLIST prop name CDATA #REQUIRED <!ATTLIST prop name CDATA #REQUIRED
novalue (yes | no) "no"> novalue (yes | no) "no">
name value: a calendar property name name value: a calendar property name
novalue value: "yes" or "no" novalue value: "yes" or "no"
Note: The CALDAV:prop element has the same name as the DAV:prop Note: The CALDAV:prop element has the same name as the DAV:prop
element defined in [RFC2518]. However, the CALDAV:prop element is element defined in [RFC2518]. However, the CALDAV:prop element is
defined in the "urn:ietf:params:xml:ns:caldav" namespace instead defined in the "urn:ietf:params:xml:ns:caldav" namespace instead
of the "DAV:" namespace. of the "DAV:" namespace.
9.5.5. CALDAV:expand XML Element 9.6.5. CALDAV:expand XML Element
Name: expand Name: expand
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Forces the server to expand recurring components into Purpose: Forces the server to expand recurring components into
individual recurrence instances. individual recurrence instances.
Description: The CALDAV:expand XML element specifies that for a given Description: The CALDAV:expand XML element specifies that for a given
calendaring REPORT request the server MUST expand the recurrence calendaring REPORT request the server MUST expand the recurrence
skipping to change at page 80, line 42 skipping to change at page 83, line 12
Definition: Definition:
<!ELEMENT expand EMPTY> <!ELEMENT expand EMPTY>
<!ATTLIST expand start CDATA #REQUIRED <!ATTLIST expand start CDATA #REQUIRED
end CDATA #REQUIRED> end CDATA #REQUIRED>
start value: an iCalendar "date with UTC time" start value: an iCalendar "date with UTC time"
end value: an iCalendar "date with UTC time" end value: an iCalendar "date with UTC time"
9.5.6. CALDAV:limit-recurrence-set XML Element 9.6.6. CALDAV:limit-recurrence-set XML Element
Name: limit-recurrence-set Name: limit-recurrence-set
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies a time range to limit the set of "overridden Purpose: Specifies a time range to limit the set of "overridden
components" returned by the server. components" returned by the server.
Description: The CALDAV:limit-recurrence-set XML element specifies Description: The CALDAV:limit-recurrence-set XML element specifies
that for a given calendaring REPORT request the server MUST that for a given calendaring REPORT request the server MUST
skipping to change at page 81, line 38 skipping to change at page 84, line 5
Definition: Definition:
<!ELEMENT limit-recurrence-set EMPTY> <!ELEMENT limit-recurrence-set EMPTY>
<!ATTLIST limit-recurrence-set start CDATA #REQUIRED <!ATTLIST limit-recurrence-set start CDATA #REQUIRED
end CDATA #REQUIRED> end CDATA #REQUIRED>
start value: an iCalendar "date with UTC time" start value: an iCalendar "date with UTC time"
end value: an iCalendar "date with UTC time" end value: an iCalendar "date with UTC time"
9.5.7. CALDAV:limit-freebusy-set XML Element 9.6.7. CALDAV:limit-freebusy-set XML Element
Name: limit-freebusy-set Name: limit-freebusy-set
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies a time range to limit the set of FREEBUSY values Purpose: Specifies a time range to limit the set of FREEBUSY values
returned by the server. returned by the server.
Description: The CALDAV:limit-freebusy-set XML element specifies that Description: The CALDAV:limit-freebusy-set XML element specifies that
for a given calendaring REPORT request the server MUST only return for a given calendaring REPORT request the server MUST only return
skipping to change at page 82, line 19 skipping to change at page 84, line 35
Definition: Definition:
<!ELEMENT limit-freebusy-set EMPTY> <!ELEMENT limit-freebusy-set EMPTY>
<!ATTLIST limit-freebusy-set start CDATA #REQUIRED <!ATTLIST limit-freebusy-set start CDATA #REQUIRED
end CDATA #REQUIRED> end CDATA #REQUIRED>
start value: an iCalendar "date with UTC time" start value: an iCalendar "date with UTC time"
end value: an iCalendar "date with UTC time" end value: an iCalendar "date with UTC time"
9.6. CALDAV:filter XML Element 9.7. CALDAV:filter XML Element
Name: filter Name: filter
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies a filter to limit the set of calendar components Purpose: Specifies a filter to limit the set of calendar components
returned by the server. returned by the server.
Description: The CALDAV:filter XML element specifies the search Description: The CALDAV:filter XML element specifies the search
filter used to limit the calendar components returned by a filter used to limit the calendar components returned by a
calendaring REPORT request. calendaring REPORT request.
Definition: Definition:
<!ELEMENT filter (comp-filter)> <!ELEMENT filter (comp-filter)>
9.6.1. CALDAV:comp-filter XML Element 9.7.1. CALDAV:comp-filter XML Element
Name: comp-filter Name: comp-filter
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies search criteria on calendar components. Purpose: Specifies search criteria on calendar components.
Description: The CALDAV:comp-filter XML element specifies the queried Description: The CALDAV:comp-filter XML element specifies the queried
calendar component type (e.g., "VEVENT"). A calendar object calendar component type (e.g., "VEVENT"). A calendar object
resource is said to match a CALDAV:comp-filter if: resource is said to match a CALDAV:comp-filter if:
skipping to change at page 83, line 20 skipping to change at page 85, line 37
not exist, and the CALDAV:is-not-defined element is specified. not exist, and the CALDAV:is-not-defined element is specified.
Definition: Definition:
<!ELEMENT comp-filter (is-not-defined | (time-range?, <!ELEMENT comp-filter (is-not-defined | (time-range?,
prop-filter*, comp-filter*))> prop-filter*, comp-filter*))>
<!ATTLIST comp-filter name CDATA #REQUIRED> <!ATTLIST comp-filter name CDATA #REQUIRED>
name value: a calendar component name (e.g., "VEVENT") name value: a calendar component name (e.g., "VEVENT")
9.6.2. CALDAV:prop-filter XML Element 9.7.2. CALDAV:prop-filter XML Element
Name: prop-filter Name: prop-filter
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies search criteria on calendar properties. Purpose: Specifies search criteria on calendar properties.
Description: The CALDAV:prop-filter XML element specifies a search Description: The CALDAV:prop-filter XML element specifies a search
criteria on a specific calendar property (e.g., CATEGORIES) in the criteria on a specific calendar property (e.g., CATEGORIES) in the
scope of a given CALDAV:comp-filter. A calendar component is said scope of a given CALDAV:comp-filter. A calendar component is said
skipping to change at page 84, line 5 skipping to change at page 86, line 21
Definition: Definition:
<!ELEMENT prop-filter ((is-not-defined | <!ELEMENT prop-filter ((is-not-defined |
((time-range | text-match)?, ((time-range | text-match)?,
param-filter*))> param-filter*))>
<!ATTLIST prop-filter name CDATA #REQUIRED> <!ATTLIST prop-filter name CDATA #REQUIRED>
name value: a calendar property name (e.g., "ATTENDEE") name value: a calendar property name (e.g., "ATTENDEE")
9.6.3. CALDAV:param-filter XML Element 9.7.3. CALDAV:param-filter XML Element
Name: param-filter Name: param-filter
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Limits the search to specific parameter values. Purpose: Limits the search to specific parameter values.
Description: The CALDAV:param-filter XML element specifies a search Description: The CALDAV:param-filter XML element specifies a search
criteria on a specific calendar property parameter (e.g., criteria on a specific calendar property parameter (e.g.,
PARTSTAT) in the scope of a given CALDAV:prop-filter. A calendar PARTSTAT) in the scope of a given CALDAV:prop-filter. A calendar
skipping to change at page 84, line 34 skipping to change at page 87, line 5
* A parameter of the type specified by the "name" attribute does * A parameter of the type specified by the "name" attribute does
not exist, and the CALDAV:is-not-defined element is specified. not exist, and the CALDAV:is-not-defined element is specified.
Definition: Definition:
<!ELEMENT param-filter (is-not-defined | text-match)?> <!ELEMENT param-filter (is-not-defined | text-match)?>
<!ATTLIST param-filter name CDATA #REQUIRED> <!ATTLIST param-filter name CDATA #REQUIRED>
name value: a property parameter name (e.g., "PARTSTAT") name value: a property parameter name (e.g., "PARTSTAT")
9.6.4. CALDAV:is-not-defined XML Element 9.7.4. CALDAV:is-not-defined XML Element
Name: is-not-defined Name: is-not-defined
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies that a match should occur if the enclosing Purpose: Specifies that a match should occur if the enclosing
component, property or parameter does not exist. component, property or parameter does not exist.
Description: The CALDAV:is-not-defined XML element specifies that a Description: The CALDAV:is-not-defined XML element specifies that a
match occurs if the enclosing component, property or parameter match occurs if the enclosing component, property or parameter
value specified in a calendaring REPORT request does not exist in value specified in a calendaring REPORT request does not exist in
the calendar data being tested. the calendar data being tested.
Definition: Definition:
<!ELEMENT is-not-defined EMPTY> <!ELEMENT is-not-defined EMPTY>
9.6.5. CALDAV:text-match XML Element 9.7.5. CALDAV:text-match XML Element
Name: text-match Name: text-match
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies a substring match on a property or parameter Purpose: Specifies a substring match on a property or parameter
value. value.
Description: The CALDAV:text-match XML element specifies text used Description: The CALDAV:text-match XML element specifies text used
for a substring match against the property or parameter value for a substring match against the property or parameter value
specified in a calendaring REPORT request. specified in a calendaring REPORT request.
The "caseless" attribute indicates whether the match is case- The "collation" attribute is used to select the collation that the
sensitive (value set to "no") or case-insensitive (value set to server MUST use for character string matching. In the absence of
"yes"). The default value is server-specified. Support for the this attribute the server MUST use the "i;ascii-casemap"
"caseless" attribute is REQUIRED, and implementers of servers are collation.
strongly encouraged to consult "The Unicode Standard" [UNICODE4],
especially Section 5.18, Subsection "Caseless Matching", for
guidance when implementing their case-insensitive matching
algorithms. A server MAY ignore the caseless attribute when
applied to enumerated iCalendar property or parameter values, and
default to caseless matching for those values, since they are
defined as being case-insensitive in iCalendar.
The "negate-condition" attribute is used to indicate that this The "negate-condition" attribute is used to indicate that this
test returns a match if the text matches, when the attribute value test returns a match if the text matches, when the attribute value
is set to "no", or return a match if the text does not match, if is set to "no", or return a match if the text does not match, if
the attribute value is set to "yes". For example, this can be the attribute value is set to "yes". For example, this can be
used to match components with a STATUS property not set to used to match components with a STATUS property not set to
CANCELLED. CANCELLED.
Definition: Definition:
<!ELEMENT text-match (#PCDATA)> <!ELEMENT text-match (#PCDATA)>
PCDATA value: string PCDATA value: string
<!ATTLIST text-match caseless (yes | no) #IMPLIED <!ATTLIST text-match collation CDATA "i;ascii-casemap"
negate-condition (yes | no) "no"> negate-condition (yes | no) "no">
9.7. CALDAV:timezone XML Element 9.8. CALDAV:timezone XML Element
Name: timezone Name: timezone
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies the time zone component to use when determining Purpose: Specifies the time zone component to use when determining
the results of a report. the results of a report.
Description: The CALDAV:timezone XML element specifies that for a Description: The CALDAV:timezone XML element specifies that for a
given calendaring REPORT request the server MUST rely on the given calendaring REPORT request the server MUST rely on the
specified VTIMEZONE component instead of the CALDAV:calendar- specified VTIMEZONE component instead of the CALDAV:calendar-
timezone property of the calendar collection in which the calendar timezone property of the calendar collection in which the calendar
object resource is contained to resolve "date" values and "date object resource is contained to resolve "date" values and "date
with local time" values (i.e., floating time) to "date with UTC with local time" values (i.e., floating time) to "date with UTC
time" values. The server will require this information to time" values. The server will require this information to
skipping to change at page 86, line 30 skipping to change at page 88, line 43
rules, including use of &lt;, &gt;, &amp; etc entity encoding or rules, including use of &lt;, &gt;, &amp; etc entity encoding or
the use of a <![CDATA[ ... ]]> construct. In the later case the the use of a <![CDATA[ ... ]]> construct. In the later case the
iCalendar data cannot contain the character sequence "]]>" which iCalendar data cannot contain the character sequence "]]>" which
is the end delimiter for the CDATA section. is the end delimiter for the CDATA section.
Definition: Definition:
<!ELEMENT timezone (#PCDATA)> <!ELEMENT timezone (#PCDATA)>
PCDATA value: an iCalendar object with exactly one VTIMEZONE PCDATA value: an iCalendar object with exactly one VTIMEZONE
9.8. CALDAV:time-range XML Element 9.9. CALDAV:time-range XML Element
Name: time-range Name: time-range
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Specifies a time range to limit the set of calendar Purpose: Specifies a time range to limit the set of calendar
components returned by the server. components returned by the server.
Description: The CALDAV:time-range XML element specifies that for a Description: The CALDAV:time-range XML element specifies that for a
given calendaring REPORT request the server MUST only return the given calendaring REPORT request the server MUST only return the
skipping to change at page 90, line 38 skipping to change at page 93, line 38
Definition: Definition:
<!ELEMENT time-range EMPTY> <!ELEMENT time-range EMPTY>
<!ATTLIST time-range start CDATA #IMPLIED <!ATTLIST time-range start CDATA #IMPLIED
end CDATA #IMPLIED> end CDATA #IMPLIED>
start value: an iCalendar "date with UTC time" start value: an iCalendar "date with UTC time"
end value: an iCalendar "date with UTC time" end value: an iCalendar "date with UTC time"
9.9. CALDAV:calendar-multiget XML Element 9.10. CALDAV:calendar-multiget XML Element
Name: calendar-multiget Name: calendar-multiget
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: CalDAV REPORT used to retrieve specific calendar object Purpose: CalDAV REPORT used to retrieve specific calendar object
resources. resources.
Description: See Section 7.8. Description: See Section 7.9.
Definition: Definition:
<!ELEMENT calendar-multiget ((DAV:allprop | <!ELEMENT calendar-multiget ((DAV:allprop |
DAV:propname | DAV:propname |
DAV:prop)?, DAV:href+)> DAV:prop)?, DAV:href+)>
9.10. CALDAV:free-busy-query XML Element 9.11. CALDAV:free-busy-query XML Element
Name: free-busy-query Name: free-busy-query
Namespace: urn:ietf:params:xml:ns:caldav Namespace: urn:ietf:params:xml:ns:caldav
Purpose: CalDAV REPORT used to generate a VFREEBUSY to determine busy Purpose: CalDAV REPORT used to generate a VFREEBUSY to determine busy
time over a specific time range. time over a specific time range.
Description: See Section 7.9. Description: See Section 7.10.
Definition: Definition:
<!ELEMENT free-busy-query (time-range)> <!ELEMENT free-busy-query (time-range)>
10. Internationalization Considerations 10. Internationalization Considerations
CalDAV allows internationalized strings to be stored and retrieved CalDAV allows internationalized strings to be stored and retrieved
for the description of calendar collections (see Section 5.2.1). for the description of calendar collections (see Section 5.2.1).
The CALDAV:calendar-query report (Section 7.7) includes a text The CALDAV:calendar-query report (Section 7.8) includes a text
searching option controlled by the CALDAV:text-match element and searching option controlled by the CALDAV:text-match element and
details of character handling are covered in the description of that details of character handling are covered in the description of that
element (see Section 9.6.5). element (see Section 9.7.5).
11. Security Considerations 11. Security Considerations
HTTP protocol transactions are sent in the clear over the network HTTP protocol transactions are sent in the clear over the network
unless protection from snooping is negotiated. This can be unless protection from snooping is negotiated. This can be
accomplished by use of TLS as defined in [RFC2818]. In particular, accomplished by use of TLS as defined in [RFC2818]. In particular,
HTTP Basic authentication MUST NOT be used unless TLS is in effect. HTTP Basic authentication MUST NOT be used unless TLS is in effect.
Servers MUST take adequate precautions to ensure malicious clients Servers MUST take adequate precautions to ensure malicious clients
cannot consume excessive server resources (CPU, memory, disk, etc.) cannot consume excessive server resources (CPU, memory, disk, etc.)
skipping to change at page 93, line 10 skipping to change at page 96, line 10
Registrant Contact: See the "Author's Address" section of this Registrant Contact: See the "Author's Address" section of this
document. document.
XML: None. Namespace URIs do not represent an XML specification. XML: None. Namespace URIs do not represent an XML specification.
13. Acknowledgements 13. Acknowledgements
The authors would like to thank the following individuals for The authors would like to thank the following individuals for
contributing their ideas and support for writing this specification: contributing their ideas and support for writing this specification:
Michael Arick, Mario Bonin, Chris Bryant, Scott Carr, Mike Douglass, Michael Arick, Mario Bonin, Chris Bryant, Scott Carr, Mike Douglass,
Helge Hess, Dan Mosedale, Kervin L. Pierre, Julian F. Reschke, Mike Ted Hardie, Sam Hartman, Helge Hess, Jeff McCullough, Alexey
Shaver, Simon Vaillancourt, Wilfredo Sanchez and Jim Whitehead, Melnikov, Dan Mosedale, Brian Moseley, Kervin L. Pierre, Julian F.
Alexey Melnikov, Jeff McCullough, Brian Moseley, Jari Urpalainen. Reschke, Wilfredo Sanchez Vega, Mike Shaver, Jari Urpalainen, Simon
Vaillancourt, Jim Whitehead.
The authors would also like to thank the Calendaring and Scheduling The authors would also like to thank the Calendaring and Scheduling
Consortium for advice with this specification, and for organizing Consortium for advice with this specification, and for organizing
interoperability testing events to help refine it. interoperability testing events to help refine it.
14. References 14. References
14.1. Normative References 14.1. Normative References
[I-D.newman-i18n-comparator]
Newman, C., "Internet Application Protocol Collation
Registry", draft-newman-i18n-comparator-13 (work in
progress), August 2006.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
RFC 2246, January 1999. RFC 2246, January 1999.
[RFC2445] Dawson, F. and Stenerson, D., "Internet Calendaring and [RFC2445] Dawson, F. and Stenerson, D., "Internet Calendaring and
Scheduling Core Object Specification (iCalendar)", Scheduling Core Object Specification (iCalendar)",
RFC 2445, November 1998. RFC 2445, November 1998.
skipping to change at page 94, line 15 skipping to change at page 97, line 20
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004. January 2004.
[RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web
Distributed Authoring and Versioning (WebDAV) Access Distributed Authoring and Versioning (WebDAV) Access
Control Protocol", RFC 3744, May 2004. Control Protocol", RFC 3744, May 2004.
[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.1", RFC 4346, April 2006. (TLS) Protocol Version 1.1", RFC 4346, April 2006.
[UNICODE4] [W3C.REC-xml-20060816]
The Unicode Consortium, "The Unicode Standard, Version Yergeau, F., Paoli, J., Bray, T., Sperberg-McQueen, C.,
4.0", Addison-Wesley, Boston, MA. ISBN 0-321-18578-1, and E. Maler, "Extensible Markup Language (XML) 1.0
August 2003, (Fourth Edition)", World Wide Web Consortium
<http://www.unicode.org/versions/Unicode4.0.0/>. Recommendation REC-xml-20060816, August 2006,
<http://www.w3.org/TR/2006/REC-xml-20060816>.
[W3C.REC-xml-20040204]
Maler, E., Sperberg-McQueen, C., Bray, T., Yergeau, F.,
and J. Paoli, "Extensible Markup Language (XML) 1.0 (Third
Edition)", World Wide Web Consortium Recommendation REC-
xml-20040204, February 2004,
<http://www.w3.org/TR/2004/REC-xml-20040204>.
14.2. Informative References 14.2. Informative References
[I-D.ietf-webdav-rfc2518bis] [I-D.ietf-webdav-rfc2518bis]
Dusseault, L., "HTTP Extensions for Distributed Authoring Dusseault, L., "HTTP Extensions for Distributed Authoring
- WebDAV", draft-ietf-webdav-rfc2518bis-15 (work in - WebDAV", draft-ietf-webdav-rfc2518bis-15 (work in
progress), May 2006. progress), May 2006.
[RFC2251] Wahl, M., Howes, T., and S. Kille, "Lightweight Directory
Access Protocol (v3)", RFC 2251, December 1997.
[RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory Profile", [RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory Profile",
RFC 2426, September 1998. RFC 2426, September 1998.
[RFC2739] Small, T., Hennessy, D., and F. Dawson, "Calendar [RFC2739] Small, T., Hennessy, D., and F. Dawson, "Calendar
Attributes for vCard and LDAP", RFC 2739, January 2000. Attributes for vCard and LDAP", RFC 2739, January 2000.
[RFC4331] Korver, B. and L. Dusseault, "Quota and Size Properties [RFC4331] Korver, B. and L. Dusseault, "Quota and Size Properties
for Distributed Authoring and Versioning (DAV) for Distributed Authoring and Versioning (DAV)
Collections", RFC 4331, February 2006. Collections", RFC 4331, February 2006.
[RFC4511] Sermersheim, J., "Lightweight Directory Access Protocol
(LDAP): The Protocol", RFC 4511, June 2006.
Appendix A. CalDAV Method Privilege Table (Normative) Appendix A. CalDAV Method Privilege Table (Normative)
The following table extends the WebDAV Method Privilege Table The following table extends the WebDAV Method Privilege Table
specified in Appendix B of [RFC3744]. specified in Appendix B of [RFC3744].
+------------+------------------------------------------------------+ +------------+------------------------------------------------------+
| METHOD | PRIVILEGES | | METHOD | PRIVILEGES |
+------------+------------------------------------------------------+ +------------+------------------------------------------------------+
| MKCALENDAR | DAV:bind | | MKCALENDAR | DAV:bind |
| REPORT | DAV:read or CALDAV:read-free-busy (on all referenced | | REPORT | DAV:read or CALDAV:read-free-busy (on all referenced |
skipping to change at page 101, line 36 skipping to change at page 104, line 36
</C:calendar-data> </C:calendar-data>
</D:prop> </D:prop>
<D:status>HTTP/1.1 200 OK</D:status> <D:status>HTTP/1.1 200 OK</D:status>
</D:propstat> </D:propstat>
</D:response> </D:response>
</D:multistatus> </D:multistatus>
Appendix C. Changes (to be removed prior to publication as an RFC) Appendix C. Changes (to be removed prior to publication as an RFC)
C.1. Changes in -14 C.1. Changes in -15
a. Switched to using collations for text-match element in calendar-
query report.
b. Removed caseless attribute from text-match element.
c. Removed UNICODE4 reference.
d. Removed mailing list comment.
e. Made calendar-home-set property a SHOULD as it was in previous
drafts.
f. Now require https download of external attachments.
g. Changed some improper uses of 2119 terms to lowercase.
h. Updated some references to latest specs.
C.2. Changes in -14
a. Reverted to normative reference to 2518 and added informative a. Reverted to normative reference to 2518 and added informative
reference to 2518bis. reference to 2518bis.
b. Reinserted section describing preconditions/postconditions. b. Reinserted section describing preconditions/postconditions.
c. Removed redundant compliance statement in last paragraph of c. Removed redundant compliance statement in last paragraph of
Section 3. Section 3.
d. Clarify that only text/calendar is allowed if supported-calendar- d. Clarify that only text/calendar is allowed if supported-calendar-
skipping to change at page 102, line 13 skipping to change at page 105, line 35
of Section 6.2.1. of Section 6.2.1.
f. Removed redundant compliance statement in first paragraph of f. Removed redundant compliance statement in first paragraph of
Section 7.5. Section 7.5.
g. Fixed incorrect whitespace in elements in example in Section g. Fixed incorrect whitespace in elements in example in Section
7.7.6. 7.7.6.
h. Fixed incorrect CDATA descriptions in various places. h. Fixed incorrect CDATA descriptions in various places.
C.2. Changes in -13 C.3. Changes in -13
a. Changed mailing list draft description. a. Changed mailing list draft description.
b. Added security review suggested text to Security Considerations. b. Added security review suggested text to Security Considerations.
c. Changed external attachment support to require http URI c. Changed external attachment support to require http URI
downloads, and optionally others. downloads, and optionally others.
d. Added reference to text-match element in Internationalization d. Added reference to text-match element in Internationalization
Considerations section. Considerations section.
e. Changed 'undefined' to 'not specified here' in ETag behavior e. Changed 'undefined' to 'not specified here' in ETag behavior
section. section.
f. Added reference to RFC4346 with note that it obsoletes RFC2246 f. Added reference to RFC4346 with note that it obsoletes RFC2246
C.3. Changes in -12 C.4. Changes in -12
a. Changed requirements for ETags on PUT to better reflect the needs a. Changed requirements for ETags on PUT to better reflect the needs
of CalDAV clients wrt synchronization and reflect what other of CalDAV clients wrt synchronization and reflect what other
standards define or do not define. standards define or do not define.
b. Changed CALDAV:read-free-busy privilege so that it is also b. Changed CALDAV:read-free-busy privilege so that it is also
defined on regular collections. defined on regular collections.
C.4. Changes in -11 C.5. Changes in -11
a. Added statement that calendar-query Depth defaults to zero if a. Added statement that calendar-query Depth defaults to zero if
header is not present. Fixed one multiget example's Depth header is not present. Fixed one multiget example's Depth
header. header.
b. Fixed reference to WebDAV Quota RFC. b. Fixed reference to WebDAV Quota RFC.
c. Changed DAV:resource to DAV:href in CALDAV:no-uid-conflict c. Changed DAV:resource to DAV:href in CALDAV:no-uid-conflict
element. element.
skipping to change at page 104, line 5 skipping to change at page 107, line 27
range overlap. range overlap.
r. Added more section references for XML element definitions. r. Added more section references for XML element definitions.
s. Reworded limit-recurrence-set definition to try and make it clear s. Reworded limit-recurrence-set definition to try and make it clear
that mast component is always returned, but only some overridden that mast component is always returned, but only some overridden
one are returned. one are returned.
t. Clarified dependence on UNICODE reference for caseless matching. t. Clarified dependence on UNICODE reference for caseless matching.
C.5. Changes in -10 C.6. Changes in -10
a. Added new section about support for X- items when storing data. a. Added new section about support for X- items when storing data.
b. Added new precondition to allow servers to reject queries on b. Added new precondition to allow servers to reject queries on
unsupported X- items, and a new example. unsupported X- items, and a new example.
c. Added new text about always supporting X- in calendar-data. c. Added new text about always supporting X- in calendar-data.
d. Created new section for PUT, COPY and MOVE preconditions. d. Created new section for PUT, COPY and MOVE preconditions.
skipping to change at page 104, line 35 skipping to change at page 108, line 10
names. names.
i. Add constraint that free-busy-query can only be run on a i. Add constraint that free-busy-query can only be run on a
collection. collection.
j. Add preconditions for calendar-timezone property/elements in j. Add preconditions for calendar-timezone property/elements in
MKCALENDAR, PROPPATCH and calendar-query REPORT. MKCALENDAR, PROPPATCH and calendar-query REPORT.
k. Fix principal-match example. k. Fix principal-match example.
C.6. Changes in -09 C.7. Changes in -09
a. Numerous editorial changes. a. Numerous editorial changes.
b. Removed the CALDAV:is-defined XML element. b. Removed the CALDAV:is-defined XML element.
c. Removed section on privilege aggregation. c. Removed section on privilege aggregation.
d. Renamed the CALDAV:expand-recurrence-set XML element to CALDAV: d. Renamed the CALDAV:expand-recurrence-set XML element to CALDAV:
expand and clarified the server behavior. expand and clarified the server behavior.
skipping to change at page 106, line 25 skipping to change at page 109, line 45
calendar-timezone property for a given CALDAV:calendar-query calendar-timezone property for a given CALDAV:calendar-query
REPORT request. REPORT request.
y. Added text on the conversion of "floating date" and "floating y. Added text on the conversion of "floating date" and "floating
time" values to date with UTC time values. time" values to date with UTC time values.
z. Completed internationalization considerations section. z. Completed internationalization considerations section.
aa. Completed security considerations section. aa. Completed security considerations section.
C.7. Changes in -08 C.8. Changes in -08
a. Removed statement that said that client SHOULD always request a. Removed statement that said that client SHOULD always request
DAV:getetag in calendar REPORTs. DAV:getetag in calendar REPORTs.
b. Removed redefiniton of DAV:response. b. Removed redefiniton of DAV:response.
c. Removed XML elements CALDAV:calendar-data-only. c. Removed XML elements CALDAV:calendar-data-only.
d. Removed resource type CALDAV:calendar-home. d. Removed resource type CALDAV:calendar-home.
skipping to change at page 107, line 17 skipping to change at page 110, line 38
l. Added example for limit-recurrence-set. l. Added example for limit-recurrence-set.
m. Added example for expand-recurrence-set. m. Added example for expand-recurrence-set.
n. Moved CALDAV:calendar-address-set in the calendar-schedule draft n. Moved CALDAV:calendar-address-set in the calendar-schedule draft
and renamed it to CALDAV:calendar-user-address-set. and renamed it to CALDAV:calendar-user-address-set.
o. Added guidelines on attachments and alarms. o. Added guidelines on attachments and alarms.
C.8. Changes in -07 C.9. Changes in -07
a. Various editorial changes. a. Various editorial changes.
b. Added properties calendar-restrictions and calendar-component- b. Added properties calendar-restrictions and calendar-component-
restriction-set on calendar collections. restriction-set on calendar collections.
c. Added properties calendar-home-URL and calendar-address-set on c. Added properties calendar-home-URL and calendar-address-set on
principal resources. principal resources.
d. Removed property calendar-URL on principal resources. d. Removed property calendar-URL on principal resources.
skipping to change at page 107, line 49 skipping to change at page 111, line 23
i. Added comment about client not setting a duplicate displayname. i. Added comment about client not setting a duplicate displayname.
j. Removed three CalDAV OPTIONS requests. j. Removed three CalDAV OPTIONS requests.
k. Changed "authenticated user" to "user" in various places. k. Changed "authenticated user" to "user" in various places.
l. Rewrote section on calendar object resource restrictions for l. Rewrote section on calendar object resource restrictions for
better clarity. better clarity.
C.9. Changes in -06 C.10. Changes in -06
a. Reworded section "Recurrence and the Data Model". a. Reworded section "Recurrence and the Data Model".
b. Removed timezone collection feature. b. Removed timezone collection feature.
c. Removed ability for a server to return the Location header on a c. Removed ability for a server to return the Location header on a
successful PUT request. successful PUT request.
d. Clarified restrictions on calendar object resources contained in d. Clarified restrictions on calendar object resources contained in
calendar collections. calendar collections.
e. Added preconditions on PUT in calendar collections. e. Added preconditions on PUT in calendar collections.
f. Added informative "Guidelines" section, with information on f. Added informative "Guidelines" section, with information on
locking and how to find calendar collections. locking and how to find calendar collections.
g. Moved "Sychronization Operations" section in the "Guidelines" g. Moved "Sychronization Operations" section in the "Guidelines"
section. section.
C.10. Changes in -05 C.11. Changes in -05
a. Removed a lot of non-normative text. a. Removed a lot of non-normative text.
b. Removed property promotion/demotion requirements. b. Removed property promotion/demotion requirements.
c. Removed calendar-owner and cal-scale properties. c. Removed calendar-owner and cal-scale properties.
d. Removed 'ical' prefix/text from element names. d. Removed 'ical' prefix/text from element names.
e. Relaxed WebDAV Class 2 (locking) requirement to a MAY. e. Relaxed WebDAV Class 2 (locking) requirement to a MAY.
skipping to change at page 109, line 12 skipping to change at page 112, line 31
m. Added description and examples of handling timezones. m. Added description and examples of handling timezones.
n. Added mandatory "start" and "end" attributes to the CALDAV: n. Added mandatory "start" and "end" attributes to the CALDAV:
expand-recurrence-set element. expand-recurrence-set element.
o. Added three CalDAV OPTIONS requests. o. Added three CalDAV OPTIONS requests.
p. Grouped XML Element declarations in a separate section. p. Grouped XML Element declarations in a separate section.
C.11. Changes in -04 C.12. Changes in -04
a. Added a note about the HTTP Location response header. a. Added a note about the HTTP Location response header.
b. Added report calendar-query. b. Added report calendar-query.
c. Removed reports calendar-property-search and calendar-time-range. c. Removed reports calendar-property-search and calendar-time-range.
d. Removed section on CalDAV and timezones. d. Removed section on CalDAV and timezones.
e. Added requirement to return ETag on creation. e. Added requirement to return ETag on creation.
f. Revised data model to remove sub-collections from calendar f. Revised data model to remove sub-collections from calendar
collection. collection.
g. Added informative references section. g. Added informative references section.
h. Removed dependencies on DASL. h. Removed dependencies on DASL.
C.12. Changes in -03 C.13. Changes in -03
a. Removed Calendar Containers (simplification that doesn't seem to a. Removed Calendar Containers (simplification that doesn't seem to
remove much functionality) remove much functionality)
b. Added MKCALENDAR to create calendars and all sub-collections b. Added MKCALENDAR to create calendars and all sub-collections
c. Added cal-scale property to calendars c. Added cal-scale property to calendars
C.13. Changes in -02 C.14. Changes in -02
Basically still adding major sections of content: Basically still adding major sections of content:
a. Defined new field values to the OPTIONS "DAV:" response header a. Defined new field values to the OPTIONS "DAV:" response header
b. Added new resource properties b. Added new resource properties
c. Added new principal properties c. Added new principal properties
d. Added new SCHEDULE method and related headers d. Added new SCHEDULE method and related headers
skipping to change at page 110, line 4 skipping to change at page 113, line 25
Basically still adding major sections of content: Basically still adding major sections of content:
a. Defined new field values to the OPTIONS "DAV:" response header a. Defined new field values to the OPTIONS "DAV:" response header
b. Added new resource properties b. Added new resource properties
c. Added new principal properties c. Added new principal properties
d. Added new SCHEDULE method and related headers d. Added new SCHEDULE method and related headers
e. Added new privileges for scheduling e. Added new privileges for scheduling
C.14. Changes in -01 C.15. Changes in -01
a. Added section on privileges for calendaring, extending WebDAV ACL a. Added section on privileges for calendaring, extending WebDAV ACL
privilege set privilege set
b. Defined what to do with unrecognized properties in the bodies of b. Defined what to do with unrecognized properties in the bodies of
iCalendar events, with respect to property promotion/demotion iCalendar events, with respect to property promotion/demotion
Authors' Addresses Authors' Addresses
Cyrus Daboo Cyrus Daboo
 End of changes. 102 change blocks. 
209 lines changed or deleted 319 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/