CalDAV
Click on the red underlined text to get to the source
... namespaces "DAV:" and
"urn:ietf:params:xml:ns:caldav" are referenced in this document
outside of the context of an XML ...
... fragment, the string "DAV:" and
"CALDAV:" will be prefixed to the element type names, respectively.
...
...
The namespace "urn:ietf:params:xml:ns:caldav" is reserved for the XML
elements defined in this specification, its revisions, and related
CalDAV ...
... caldav" is reserved for the XML
elements defined in this specification, its revisions, and related
CalDAV specifications. XML elements defined by individual
implementations MUST NOT use the "urn:ietf:params:xml:ns:caldav ...
... CalDAV specifications. XML elements defined by individual
implementations MUST NOT use the "urn:ietf:params:xml:ns:caldav"
namespace, and instead should use a namespace ...
... valid CalDAV properties or to validate CalDAV
XML element types. Some of the declarations refer to XML elements ...
... DAV:" to avoid confusion.
Also note that some CalDAV XML element names are identical to WebDAV
...
...
This section lists what functionality is required of a CalDAV server.
To advertise support for CalDAV, a server:
...
... This section lists what functionality is required of a CalDAV server.
To advertise support for CalDAV, a server:
o MUST support iCalendar ...
... data model.
As a brief overview, a CalDAV calendar is modeled as a WebDAV
collection with a defined structure; each calendar ...
...
A CalDAV server is a calendaring-aware engine combined with a WebDAV
repository. A WebDAV repository is a set of WebDAV ...
...
A WebDAV repository can advertise itself as a CalDAV server if it
supports the functionality defined in this specification at any point
...
... calendar data to the /calendar/
collection would only need to support the CalDAV required features
within that collection.
...
... within that collection.
The CalDAV server or repository is the canonical location for
calendar data ...
... Clients are not forced to retrieve information about all recurrence
instances of a recurring component. The CALDAV:calendar-query and
...
... calendar collection MUST report the DAV:
collection and CALDAV:calendar XML elements in the value of the DAV ...
... non-standard cues to find out what a calendar collection is for, or
use the CALDAV:calendar-description property defined in Section 5.2.1
to provide such a cue.
...
... CA"
xmlns:C="urn:ietf:params:xml:ns:caldav"
>Calendrier de Mathilde Desruisseaux</C:calendar-description>
...
... RFC2518]).
Description: The CALDAV:calendar-timezone property is used to
specify the time zone the server should rely on to resolve "date"
...
... information to determine if a calendar component scheduled with
"date" values or "date with local time" values overlaps a CALDAV:
time-range specified in a CALDAV ...
... UTC time" in the VFREEBUSY
component returned in a response to a CALDAV:free-busy-query
REPORT request that takes into account calendar components ...
... calendar-timezone
xmlns:C="urn:ietf:params:xml:ns:caldav">BEGIN:VCALENDAR
PRODID:-//Example Corp.//CalDAV ...
... RFC2518]).
Description: The CALDAV:supported-calendar-component-set property is
used to specify restrictions on the calendar component ...
... calendar object resources with
component types not listed in this property, if it exists, MUST
result in an error, with the CALDAV:supported-calendar-component
precondition (Section 5.3.2.1) being violated. Since this
...
... RFC2518]).
Description: The CALDAV:supported-calendar-data property is used to
specify the media type ...
... resources with a media type not listed in this property MUST
result in an error, with the CALDAV:supported-calendar-data
precondition (Section 5.3.2.1) being violated. In the absence of
...
... CALDAV:max-resource-size Property ...
...
Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Provides a numeric value indicating the maximum size of a
...
... RFC2518]).
Description: The CALDAV:max-resource-size is used to specify a
numeric value that represents the maximum size in octets that the
server is willing to accept when a calendar ...
... calendar
object resource exceeding this size MUST result in an error, with
the CALDAV:max-resource-size precondition (Section 5.3.2.1) being
violated. In the absence of this property, the client can assume
...
... CALDAV:min-date-time Property ...
... RFC2518]).
Description: The CALDAV:min-date-time is used to specify an
iCalendar DATE-TIME value ...
... object resource using a DATE or DATE-TIME value earlier than this
value MUST result in an error, with the CALDAV:min-date-time
precondition (Section 5.3.2.1) being violated. Note that servers
MUST accept recurring components that specify instances beyond
...
... valid iCalendar date may be used at least up to the
CALDAV:max-date-time value, if that is defined.
...
...
<C:min-date-time xmlns:C="urn:ietf:params:xml:ns:caldav"
>19000101T000000Z</C:min-date-time>
...
... CALDAV:max-date-time Property ...
... RFC2518]).
Description: The CALDAV:max-date-time is used to specify an
iCalendar DATE-TIME value ...
... a DATE or DATE-TIME value later than this value MUST result in an
error, with the CALDAV:max-date-time precondition
(Section 5.3.2.1) being violated. Note that servers MUST accept
recurring components that specify instances beyond this limit,
...
... any valid iCalendar date may be used at least down to the CALDAV:
min-date-time value, if that is defined.
...
...
<C:max-date-time xmlns:C="urn:ietf:params:xml:ns:caldav"
>20491231T235959Z</C:max-date-time>
...
... CALDAV:max-instances Property ...
...
Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Provides a numeric value indicating the maximum number of
...
... RFC2518]).
Description: The CALDAV:max-instances is used to specify a numeric
value that indicates the maximum number of recurrence instances
that a calendar ...
... calendar object resource
with a recurrence pattern that generates more instances than this
value MUST result in an error, with the CALDAV:max-instances
precondition (Section 5.3.2.1) being violated. In the absence of
this property, the client ...
... CALDAV:max-attendees-per-instance Property ...
...
Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Provides a numeric value indicating the maximum number of
...
... RFC2518]).
Description: The CALDAV:max-attendees-per-instance is used to
specify a numeric value that indicates the maximum number of
iCalendar ...
... calendar object resource with more ATTENDEE properties per
instance than this value MUST result in an error, with the CALDAV:
max-attendees-per-instance precondition (Section 5.3.2.1) being
violated. In the absence of this property, the client ...
... <C:max-attendees-per-instance
xmlns:C="urn:ietf:params:xml:ns:caldav"
>25</C:max-attendees-per-instance>
...
... PROPPATCH method. The precondition is:
(CALDAV:valid-calendar-data): The time zone specified in CALDAV ...
... CALDAV:valid-calendar-data): The time zone specified in CALDAV:
calendar-timezone property MUST be a valid ...
... calendar object resources may be created by
either a CalDAV client or by the CalDAV server. This specification
...
... either a CalDAV client or by the CalDAV server. This specification
defines restrictions and a data model that both clients and servers ...
...
Marshalling:
If a request body is included, it MUST be a CALDAV:mkcalendar XML
element. Instruction processing MUST occur in the order
instructions are received (i.e., from top to bottom).
...
...
If a response body for a successful request is included, it MUST
be a CALDAV:mkcalendar-response XML element.
...
... valid-calendar-data): The time zone specified in the
CALDAV:calendar-timezone property MUST be a valid iCalendar ...
... calendars/events/ on the server cal.example.com with specific values
for the properties DAV:displayname, CALDAV:calendar-description,
CALDAV ...
... The new preconditions are:
(CALDAV:supported-calendar-data): The resource submitted in the
PUT request, or targeted by a COPY or MOVE request, MUST be a
...
... METHOD property, etc.);
(CALDAV:supported-calendar-component): The resource submitted in
the PUT request, or targeted by a COPY or MOVE request, MUST
...
... calendar collection;
(CALDAV:no-uid-conflict): The resource submitted in the PUT
request, or targeted by a COPY or MOVE request, MUST NOT specify
...
... DAV:href)>
(CALDAV:calendar-collection-location-ok): In a COPY or MOVE
request, when the Request-URI ...
... created;
(CALDAV:max-resource-size): The resource submitted in the PUT
request, or targeted by a COPY or MOVE request, MUST have an octet
size less than or equal to the value of the CALDAV ...
... CALDAV:max-resource-size): The resource submitted in the PUT
request, or targeted by a COPY or MOVE request, MUST have an octet
size less than or equal to the value of the CALDAV:max-resource-
size property value (Section 5.2.5) on the calendar collection
...
... where the resource will be stored;
(CALDAV:min-date-time): The resource submitted in the PUT request,
or targeted by a COPY or MOVE request, MUST have all of its
iCalendar ...
... DATE-TIME property values (for each recurring
instance) greater than or equal to the value of the CALDAV:min-
date-time property value (Section 5.2.6) on the calendar
...
... collection where the resource will be stored;
(CALDAV:max-date-time): The resource submitted in the PUT request,
or targeted by a COPY or MOVE request, MUST have all of its
iCalendar ...
... iCalendar DATE or DATE-TIME property values (for each recurring
instance) less than the value of the CALDAV:max-date-time property
value (Section 5.2.7) on the calendar collection where the
...
... resource will be stored;
(CALDAV:max-instances): The resource submitted in the PUT request,
or targeted by a COPY or MOVE request, MUST generate a number of
recurring instances less than or equal to the value of the CALDAV ...
... CALDAV:max-instances): The resource submitted in the PUT request,
or targeted by a COPY or MOVE request, MUST generate a number of
recurring instances less than or equal to the value of the CALDAV:
max-instances property value (Section 5.2.8) on the calendar
...
... collection where the resource will be stored;
(CALDAV:max-attendees-per-instance): The resource submitted in the
PUT request, or targeted by a COPY or MOVE request, MUST have a
number of ATTENDEE ...
... number of ATTENDEE properties on any one instance less than or
equal to the value of the CALDAV:max-attendees-per-instance
property value (Section 5.2.9) on the calendar collection where
...
... privileges that can be applied to WebDAV collections and ordinary
resources. CalDAV servers MUST also support the calendaring
privilege defined in this section.
...
... schedule meetings at times when the user is likely to be free.
The CALDAV:read-free-busy privilege controls which calendar
...
... collections, regular collections, and calendar object resources are
examined when a CALDAV:free-busy-query REPORT request is processed
(see Section 7.10). This privilege ...
... ELEMENT read-free-busy EMPTY>
The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:
...
... DAV:
read privilege. Servers MUST allow the CALDAV:read-free-busy to be
granted without the DAV:read privilege ...
...
Clients should note that when only the CALDAV:read-free-busy
privilege has been granted on a resource, access to GET, HEAD,
...
... RFC2518]).
Description: The CALDAV:calendar-home-set property is meant to allow
users to easily find the calendar ...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:href>http://cal.example.com/home/bernard/calendars/</D:href>
...
...
This section defines the reports that CalDAV servers MUST support on
calendar collections and calendar ...
... calendar object resources.
CalDAV servers MUST advertise support for these reports on all
calendar collections and calendar ...
... supported-report-set property, defined in Section 3.1.5 of [RFC3253].
CalDAV servers MAY also advertise support for these reports on
ordinary collections.
...
... the same request.
CalDAV servers MUST support the DAV:expand-property REPORT defined in
Section 3.8 of [RFC3253 ...
... November 11, 2005, at 11:11 A.M. in no specific time zone.
CalDAV servers may need to convert "floating date" and "floating
time" values in date with UTC time values in the processing of
...
... CALDAV:calendar-query REPORT, CalDAV servers MUST rely on the
value of the CALDAV:timezone XML element ...
... query REPORT, CalDAV servers MUST rely on the
value of the CALDAV:timezone XML element, if specified as part of the
request body, to perform the proper conversion of "floating date" and
...
... request body, to perform the proper conversion of "floating date" and
"floating time" values to date with UTC time values. If the CALDAV:
timezone XML element is not specified in the request body, CalDAV ...
... CALDAV:
timezone XML element is not specified in the request body, CalDAV
servers MUST rely on the value of the CALDAV:calendar ...
... XML element is not specified in the request body, CalDAV
servers MUST rely on the value of the CALDAV:calendar-timezone
property, if defined, or else the CalDAV ...
... CALDAV:calendar-timezone
property, if defined, or else the CalDAV servers MAY rely on the time
zone of their choice.
...
... For the CALDAV:free-busy-query REPORT, CalDAV servers MUST rely on
the value of the CALDAV:calendar ...
... query REPORT, CalDAV servers MUST rely on
the value of the CALDAV:calendar-timezone property, if defined, to
compute the proper FREEBUSY time period value as date with UTC time ...
... for calendar components scheduled with "floating date" or "floating
time". If the CALDAV:calendar-timezone property is not defined,
CalDAV ...
... CALDAV:calendar-timezone property is not defined,
CalDAV servers MAY rely on the time zone of their choice.
...
... well-defined rule.
The comparisons used in CalDAV are all "substring" matches, as per
[RFC4790 ...
... substring" match operations.
CalDAV servers are REQUIRED to support the "i;ascii-casemap" and
"i;octet" collations, as described in [RFC4790 ...
...
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.
...
... client chooses a collation not supported by the server, the
server MUST respond with a CALDAV:supported-collation precondition
error response.
...
... CALDAV:supported-collation-set Property ...
...
Namespace: urn:ietf:params:xml:ns:caldav
Purpose: Identifies the set of collations supported by the server ...
... RFC2518]).
Description: The CALDAV:supported-collation-set property contains
zero or more CALDAV:supported-collation elements ...
... Description: The CALDAV:supported-collation-set property contains
zero or more CALDAV:supported-collation elements, which specify
the collection identifiers ...
... <C:supported-collation-set
xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:supported-collation>i;ascii-casemap</C:supported-collation>
...
... Some calendaring reports defined in this document allow partial
retrieval of calendar object resources. A CalDAV client can specify
what information to return in the body of a calendaring REPORT
...
... WebDAV property values, or a list of the names of the resource's
WebDAV properties. A CalDAV client can also request calendar data to
...
... be returned and specify whether all calendar components and
properties should be returned, or only particular ones. See CALDAV:
calendar-data in Section 9.6.
...
... recurrence set, referred to as the "overridden components".
A CalDAV client that is only interested in the recurrence instances
that overlap a specified time range ...
... impact the specified time range, and thus, limit the data returned by
the server (see CALDAV:limit-recurrence-set in Section 9.6.6). An
overridden component impacts a time range if its current start ...
... range.
A CalDAV client with no support for recurrence properties (i.e.,
EXDATE, EXRULE, RDATE, and RRULE) and possibly VTIMEZONE ...
... calendar components that each define exactly one recurrence instance
(see CALDAV:expand in Section 9.6.5.)
Finally, in the case of VFREEBUSY ...
...
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
Section 9.6.7.)
...
...
Servers MUST support the use of non-standard component, property, or
parameter names in the CALDAV:calendar-data XML element in
...
...
Servers MAY support the use of non-standard component, property, or
parameter names in the CALDAV:comp-filter, CALDAV:prop-filter ...
... CALDAV:param-filter XML elements specified in the CALDAV:filter XML
element of calendaring REPORT requests.
...
... XML
element of calendaring REPORT requests.
Servers MUST fail with the CALDAV:supported-filter precondition if a
calendaring REPORT request uses a CALDAV ...
... CALDAV:supported-filter precondition if a
calendaring REPORT request uses a CALDAV:comp-filter, CALDAV:prop-
...
... WebDAV properties and calendar object
resource data specified in the request. In the case of the CALDAV:
calendar-data XML element ...
... search filter. Calendar data is being
returned in the CALDAV:calendar-data XML element inside the DAV ...
... Section 9.7) specified in the REPORT request MUST be valid. For
instance, a CALDAV:filter cannot nest a <C:comp name="VEVENT">
...
... CALDAV:prop-filter (see Section 9.7.2), and
CALDAV:param-filter (see Section 9.7.3) XML elements used in the
...
... filter (see Section 9.7.3) XML elements used in the
CALDAV:filter XML element (see Section 9.7) in the REPORT request
...
... which queries are supported by the server, i.e., if the CALDAV:
filter element attempts to reference an unsupported component,
...
... filter element attempts to reference an unsupported component,
property, or parameter, this precondition is violated. Servers
SHOULD report the CALDAV:comp-filter, CALDAV:prop-filter ...
... start or end DATE or DATE-TIME values greater than
or equal to the value of the CALDAV:min-date-time property value
(Section 5.2.6) on the calendar collections being targeted by the
...
... start or end DATE or DATE-TIME values less than or
equal to the value of the CALDAV:max-date-time property value
(Section 5.2.7) on the calendar collections being targeted by the
...
... REPORT request;
(CALDAV:supported-collation): Any XML attribute specifying a
collation MUST specify a collation supported by the server ...
... range, but whose third
instance does overlap the time range. Note that due to the CALDAV:
calendar-data element ...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href>
...
... UTC to January 5, 2006, at 00:00:00 A.M. UTC. Use of the
CALDAV:limit-recurrence-set element causes the server to only return
overridden recurrence components that overlap the time range ...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href>
...
... calendar components expanded into individual recurrence
instance calendar components. Use of the CALDAV:expand element
causes the server to only return overridden recurrence instances that
...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href>
...
... to January 3, 2006, at 00:00:00 A.M. UTC (exclusively). Use of the
CALDAV:limit-freebusy-set element causes the server to only return
the FREEBUSY property values that overlap the time range ...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd8.ics</D:href>
...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href>
...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href>
...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href>
...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href>
...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href>
...
... Request-URI is a calendar object resource. This
report is similar to the CALDAV:calendar-query REPORT (see
...
... XML element.
The response body for a successful CALDAV:calendar-multiget REPORT
request MUST contain a DAV ...
... calendar object resources.
(CALDAV:min-date-time): Any XML element specifying a range of time
...
... DATE-TIME values greater than
or equal to the value of the CALDAV:min-date-time property value
(Section 5.2.6) on the calendar collections being targeted by the
...
... start or end DATE or DATE-TIME values less than or
equal to the value of the CALDAV:max-date-time property value
(Section 5.2.7) on the calendar collections being targeted by the
...
... DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href>
...
... containing free busy information for all the calendar object
resources targeted by the request and that have the CALDAV:read-free-
busy or DAV:read privilege ...
... query XML element (see
Section 9.11), which MUST contain exactly one CALDAV:time-range
XML element ...
... VFREEBUSY components that satisfy
the Depth value and for which the current user is at least granted
the CALDAV:read-free-busy privilege. If no calendar object
...
... busy time information.
If the current user is not granted the CALDAV:read-free-busy or
DAV:read privileges ...
... DAV:read privileges on the Request-URI, the CALDAV:free-busy-query
REPORT request MUST fail and return a 404 (Not Found) status
...
... value. This restriction will prevent users from discovering URLs
of resources for which they are only granted the CALDAV:read-free-
busy privilege.
...
... privilege.
The CALDAV:free-busy-query REPORT request can only be run against
a collection (either a regular collection or a calendar ...
... server-specific,
predefined limits. For example, this postcondition might fail if
the specified CALDAV:time-range would cause an extremely large
number of calendar ...
... interoperability best practices and is not limited only to CalDAV
usage, interoperability problems are likely to be more evident in
...
... usage, interoperability problems are likely to be more evident in
CalDAV use cases.
...
... calendar applications than to some other WebDAV applications, CalDAV
servers MUST support ETags, as specified in Section 5.3.4.
...
... clients should only
retrieve calendar components from the server using CALDAV:calendar-
query ...
... calendar object resources on the server that need to
be fetched, the client issues a CALDAV:calendar-multiget REPORT
request to fetch its calendar data ...
... 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
other than making the information available in the OPTIONS response
should this be requested.
...
... including principal namespaces, and with the addition of the CALDAV:
calendar-home-set property, there are a couple options for CalDAV ...
... CALDAV:
calendar-home-set property, there are a couple options for CalDAV
clients to find one's own calendar ...
... DAV:principal-match REPORT is used to find a named
property (the CALDAV:calendar-home-set) on the Principal-URL ...
... iCalendar [RFC2445]. CalDAV servers MUST support inline attachments,
so clients can rely on being able to create ...
... iCalendar
objects). Servers that impose such limitations MUST use the
CALDAV:max-resource-size property on a calendar collection to
inform the client ...
...
CalDAV clients SHOULD support downloading of external attachments
referenced by arbitrary URI schemes ...
... directly, or by passing the attachment URI to a suitable "helper
application" for processing, if such an application exists. CalDAV
clients MUST support downloading of external attachments referenced
...
... FTP server elsewhere.
CalDAV servers MAY provide support for child collections in calendar
collections. CalDAV ...
