7Internet Engineering Task Force (IETF) C. Daboo
8Request for Comments: 6638 Apple Inc.
9Updates: 4791, 5546 B. Desruisseaux
10Category: Standards Track Oracle
11ISSN: 2070-1721 June 2012
14 Scheduling Extensions to CalDAV
18 This document defines extensions to the Calendaring Extensions to
19 WebDAV (CalDAV) "calendar-access" feature to specify a standard way
20 of performing scheduling operations with iCalendar-based calendar
21 components. This document defines the "calendar-auto-schedule"
26 This is an Internet Standards Track document.
28 This document is a product of the Internet Engineering Task Force
29 (IETF). It represents the consensus of the IETF community. It has
30 received public review and has been approved for publication by the
31 Internet Engineering Steering Group (IESG). Further information on
32 Internet Standards is available in Section 2 of RFC 5741.
34 Information about the current status of this document, any errata,
35 and how to provide feedback on it may be obtained at
36 http://www.rfc-editor.org/info/rfc6638.
40 Copyright (c) 2012 IETF Trust and the persons identified as the
41 document authors. All rights reserved.
43 This document is subject to BCP 78 and the IETF Trust's Legal
44 Provisions Relating to IETF Documents
45 (http://trustee.ietf.org/license-info) in effect on the date of
46 publication of this document. Please review these documents
47 carefully, as they describe your rights and restrictions with respect
48 to this document. Code Components extracted from this document must
49 include Simplified BSD License text as described in Section 4.e of
50 the Trust Legal Provisions and are provided without warranty as
51 described in the Simplified BSD License.
58Daboo & Desruisseaux Standards Track [Page 1]
60RFC 6638 CalDAV Scheduling June 2012
63 This document may contain material from IETF Documents or IETF
64 Contributions published or made publicly available before November
65 10, 2008. The person(s) controlling the copyright in some of this
66 material may not have granted the IETF Trust the right to allow
67 modifications of such material outside the IETF Standards Process.
68 Without obtaining an adequate license from the person(s) controlling
69 the copyright in such materials, this document may not be modified
70 outside the IETF Standards Process, and derivative works of it may
71 not be created outside the IETF Standards Process, except to format
72 it for publication as an RFC or to translate it into languages other
77 1. Introduction ....................................................5
78 1.1. Terminology ................................................6
79 1.2. Notational Conventions .....................................7
80 1.3. XML Namespaces and Processing ..............................7
81 2. Scheduling Support ..............................................8
82 2.1. Scheduling Outbox Collection ...............................9
83 2.1.1. CALDAV:schedule-outbox-URL Property ................10
84 2.2. Scheduling Inbox Collection ...............................10
85 2.2.1. CALDAV:schedule-inbox-URL Property .................11
86 2.3. Calendaring Reports Extensions ............................12
87 2.4. Additional Principal Properties ...........................12
88 2.4.1. CALDAV:calendar-user-address-set Property ..........12
89 2.4.2. CALDAV:calendar-user-type Property .................13
90 3. Scheduling Operations ..........................................14
91 3.1. Identifying Scheduling Object Resources ...................14
92 3.2. Handling Scheduling Object Resources ......................15
93 3.2.1. Organizer Scheduling Object Resources ..............15
94 3.2.1.1. Create ....................................16
95 3.2.1.2. Modify ....................................17
96 3.2.1.3. Remove ....................................18
97 3.2.2. Attendee Scheduling Object Resources ...............18
98 3.2.2.1. Allowed "Attendee" Changes ................18
99 3.2.2.2. Create ....................................19
100 3.2.2.3. Modify ....................................20
101 3.2.2.4. Remove ....................................21
102 3.2.3. HTTP Methods .......................................21
103 3.2.3.1. PUT .......................................22
104 3.2.3.2. DELETE ....................................22
105 3.2.3.3. COPY ......................................23
106 3.2.3.4. MOVE ......................................24
114Daboo & Desruisseaux Standards Track [Page 2]
116RFC 6638 CalDAV Scheduling June 2012
119 3.2.4. Additional Method Preconditions ....................24
120 3.2.4.1. CALDAV:unique-scheduling-object-resource
121 Precondition ..............................24
122 3.2.4.2. CALDAV:same-organizer-in-all-components
123 Precondition ..............................25
124 3.2.4.3. CALDAV:allowed-organizer-scheduling-
125 object-change Precondition .............25
126 3.2.4.4. CALDAV:allowed-attendee-scheduling-
127 object-change Precondition .............26
128 3.2.5. DTSTAMP and SEQUENCE Properties ....................26
129 3.2.6. Restrict Recurrence Instances Sent to "Attendees" ..27
130 3.2.7. Forcing the Server to Send a Scheduling Message ....27
131 3.2.8. "Attendee" Participation Status ....................28
132 3.2.9. Schedule Status Values .............................29
133 3.2.10. Avoiding Conflicts when Updating Scheduling Object
134 Resources .........................................31
135 3.2.10.1. PUT .....................................33
136 3.2.10.2. DELETE, COPY, or MOVE ...................33
137 4. Processing Incoming Scheduling Messages ........................34
138 4.1. Processing "Organizer" Requests, Additions, and
139 Cancellations .............................................34
140 4.2. Processing "Attendee" Replies .............................35
141 4.3. Default Calendar Collection ...............................35
142 4.3.1. Additional Method Preconditions ....................36
143 4.3.1.1. CALDAV:default-calendar-needed
144 Precondition ..............................36
145 4.3.1.2. CALDAV:valid-schedule-default-calendar-URL
146 Precondition ..............................36
147 5. Request for Busy Time Information ..............................37
148 5.1. Status Codes ..............................................38
149 5.2. Additional Method Preconditions ...........................38
150 5.2.1. CALDAV:valid-scheduling-message Precondition .......38
151 5.2.2. CALDAV:valid-organizer Precondition ................39
152 6. Scheduling Privileges ..........................................39
153 6.1. Privileges on Scheduling Inbox Collections ................39
154 6.1.1. CALDAV:schedule-deliver Privilege ..................40
155 6.1.2. CALDAV:schedule-deliver-invite Privilege ...........40
156 6.1.3. CALDAV:schedule-deliver-reply Privilege ............40
157 6.1.4. CALDAV:schedule-query-freebusy Privilege ...........40
158 6.2. Privileges on Scheduling Outbox Collections ...............40
159 6.2.1. CALDAV:schedule-send Privilege .....................41
160 6.2.2. CALDAV:schedule-send-invite Privilege ..............41
161 6.2.3. CALDAV:schedule-send-reply Privilege ...............41
162 6.2.4. CALDAV:schedule-send-freebusy Privilege ............41
163 6.3. Aggregation of Scheduling Privileges ......................42
170Daboo & Desruisseaux Standards Track [Page 3]
172RFC 6638 CalDAV Scheduling June 2012
175 7. Additional iCalendar Property Parameters .......................42
176 7.1. Schedule Agent Parameter ..................................42
177 7.2. Schedule Force Send Parameter .............................44
178 7.3. Schedule Status Parameter .................................45
179 8. Additional Message Header Fields ...............................46
180 8.1. Schedule-Reply Request Header .............................46
181 8.2. Schedule-Tag Response Header ..............................46
182 8.3. If-Schedule-Tag-Match Request Header ......................47
183 9. Additional WebDAV Properties ...................................47
184 9.1. CALDAV:schedule-calendar-transp Property ..................47
185 9.2. CALDAV:schedule-default-calendar-URL Property .............48
186 9.3. CALDAV:schedule-tag Property ..............................49
187 10. XML Element Definitions .......................................50
188 10.1. CALDAV:schedule-response XML Element .....................50
189 10.2. CALDAV:response XML Element ..............................50
190 10.3. CALDAV:recipient XML Element .............................50
191 10.4. CALDAV:request-status XML Element ........................51
192 11. Security Considerations .......................................51
193 11.1. Preventing Denial-of-Service Attacks .....................51
194 11.2. Verifying Scheduling Operations ..........................52
195 11.3. Verifying Busy Time Information Requests .................52
196 11.4. Privacy Issues ...........................................53
197 11.5. Mitigation of iTIP Threats ...............................53
198 12. IANA Considerations ...........................................54
199 12.1. Message Header Field Registrations .......................54
200 12.1.1. Schedule-Reply ....................................54
201 12.1.2. Schedule-Tag ......................................54
202 12.1.3. If-Schedule-Tag-Match .............................54
203 12.2. iCalendar Property Parameter Registrations ...............55
204 12.3. iCalendar REQUEST-STATUS Value Registrations .............55
205 12.4. Additional iCalendar Elements Registries .................55
206 12.4.1. Schedule Agent Values Registry ....................56
207 12.4.2. Schedule Force Send Values Registry ...............56
208 13. Acknowledgements ..............................................56
209 14. References ....................................................57
210 14.1. Normative References .....................................57
211 14.2. Informative References ...................................58
226Daboo & Desruisseaux Standards Track [Page 4]
228RFC 6638 CalDAV Scheduling June 2012
231 Appendix A. Scheduling Privileges Summary .........................59
232 A.1. Scheduling Inbox Privileges ................................59
233 A.2. Scheduling Outbox Privileges ...............................60
234 Appendix B. Example Scheduling Operations .........................60
235 B.1. Example: "Organizer" Inviting Multiple "Attendees" .........61
236 B.2. Example: "Attendee" Receiving an Invitation ................63
237 B.3. Example: "Attendee" Replying to an Invitation ..............64
238 B.4. Example: "Organizer" Receiving a Reply to an Invitation ....66
239 B.5. Example: "Organizer" Requesting Busy Time Information ......69
240 B.6. Example: User Attempting to Invite "Attendee" on
241 Behalf of "Organizer" ......................................71
242 B.7. Example: "Attendee" Declining an Instance of a
243 Recurring Event ............................................72
244 B.8. Example: "Attendee" Removing an Instance of a
245 Recurring Event ............................................75
249 This document specifies extensions to the CalDAV "calendar-access"
250 [RFC4791] feature to enable scheduling of iCalendar-based [RFC5545]
251 calendar components between calendar users.
253 This extension leverages the scheduling methods defined in the
254 iCalendar Transport-independent Interoperability Protocol (iTIP)
255 [RFC5546] to permit calendar users to perform scheduling operations
256 such as schedule, reschedule, respond to scheduling request, or
257 cancel calendar components, as well as search for busy time
258 information. However, the following iTIP [RFC5546] features are not
259 covered: publishing, countering, delegating, refreshing, and
260 forwarding calendar components, as well as replacing the "Organizer"
261 of a calendar component. It is expected that future extensions will
262 be developed to address these.
264 This specification defines a client/server scheduling protocol, where
265 the server is made responsible for sending scheduling messages and
266 processing incoming scheduling messages. The client operations of
267 creating, modifying, or deleting a calendar component in a calendar
268 are enough to trigger the server to deliver the necessary scheduling
269 messages to the appropriate calendar users. This approach is
270 sometimes referred to as "implicit scheduling".
272 This specification only addresses how scheduling occurs with users on
273 a single system (i.e., scheduling between CalDAV servers, or some
274 other calendaring and scheduling system, is not defined). However,
275 this specification is compatible with servers being able to send or
276 receive scheduling messages with "external" users (e.g., using the
277 iCalendar Message-Based Interoperability Protocol (iMIP) [RFC6047]).
282Daboo & Desruisseaux Standards Track [Page 5]
284RFC 6638 CalDAV Scheduling June 2012
287 Section 3 defines the automated "Scheduling Operations" that allow a
288 client to store iCalendar data on a CalDAV server, with the server
289 taking specific actions in response. One of three scheduling
290 operations can take place -- "create", "modify", or "remove", based
291 on the HTTP method used for the request -- in addition to a
292 comparison between any existing and any new iCalendar data.
294 Section 4 defines how the server processes scheduling messages sent
295 as the result of a scheduling operation.
297 Section 5 defines how freebusy requests with an immediate response
300 Section 6 defines access control privileges for the scheduling
301 operations defined in this specification.
303 For the majority of the following discussion, scheduling of events
304 will be discussed. However, scheduling of to-dos is also fully
305 supported by this specification.
307 This specification has been under development for a number of years,
308 and most current implementations of CalDAV support it. With the
309 publication of this document, it is expected that all new CalDAV
310 implementations will support it by default. Interoperability tests
311 have been performed regularly. Significant issues with incompatible
312 CalDAV implementations are not anticipated.
316 This specification reuses much of the same terminology as iCalendar
317 [RFC5545], iTIP [RFC5546], WebDAV [RFC4918], and CalDAV [RFC4791].
318 Additional terms used by this specification are as follows:
320 Scheduling object resource: A calendar object resource contained in
321 a calendar collection for which the server will take care of
322 sending scheduling messages on behalf of the owner of the calendar
325 Organizer scheduling object resource: A scheduling object resource
326 owned by the "Organizer".
328 Attendee scheduling object resource: A scheduling object resource
329 owned by an "Attendee".
331 Scheduling operation: Add, change, or remove operations on a
332 scheduling object resource for which the server will deliver
333 scheduling messages to other calendar users.
338Daboo & Desruisseaux Standards Track [Page 6]
340RFC 6638 CalDAV Scheduling June 2012
343 Scheduling message: A calendar object that describes a scheduling
344 operation such as schedule, reschedule, reply, or cancel.
346 Scheduling Outbox collection: A resource at which busy time
347 information requests are targeted.
349 Scheduling Inbox collection: A collection in which incoming
350 scheduling messages are delivered.
3521.2. Notational Conventions
354 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
355 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
356 document are to be interpreted as described in [RFC2119].
358 The Augmented BNF (ABNF) syntax used by this document to specify the
359 format definition of new iCalendar elements is defined in [RFC5234].
361 The ABNF syntax used by this document to specify the format
362 definition of new message header fields to be used with the HTTP/1.1
363 protocol is described in Section 2.1 of [RFC2616]. Since this
364 Augmented BNF uses the basic production rules provided in Section 2.2
365 of [RFC2616], these rules apply to this document as well.
367 The term "protected" is used in the Conformance field of WebDAV
368 property definitions as defined in Section 15 of [RFC4918].
370 Calendaring and scheduling roles are referred to in quoted-strings of
371 text with the first character of each word in uppercase. For
372 example, "Organizer" refers to a role of a calendar user within the
373 scheduling protocol defined by [RFC5546].
3751.3. XML Namespaces and Processing
377 This document uses XML DTD fragments ([W3C.REC-xml-20081126],
378 Section 3.2) as a purely notational convention. WebDAV request and
379 response bodies cannot be validated by a DTD due to the specific
380 extensibility rules defined in Section 17 of [RFC4918] and due to the
381 fact that all XML elements defined by that specification use the XML
382 namespace name "DAV:". In particular,
384 1. element names use the "DAV:" namespace,
386 2. element ordering is irrelevant unless explicitly stated,
394Daboo & Desruisseaux Standards Track [Page 7]
396RFC 6638 CalDAV Scheduling June 2012
399 3. extension elements (elements not already defined as valid child
400 elements) can be added anywhere, except when explicitly stated
403 4. extension attributes (attributes not already defined as valid for
404 this element) can be added anywhere, except when explicitly
407 The XML elements specified in this document are defined in the
408 "urn:ietf:params:xml:ns:caldav" XML namespace registered by CalDAV
411 When XML element types in the namespaces "DAV:" and
412 "urn:ietf:params:xml:ns:caldav" are referenced in this document
413 outside of the context of an XML fragment, the strings "DAV:" and
414 "CALDAV:" will be prefixed to the element types, respectively.
416 This document inherits, and sometimes extends, DTD productions from
417 Section 14 of [RFC4918].
419 Also note that some CalDAV XML element names are identical to WebDAV
420 XML element names, though their namespace differs. Care needs to be
421 taken not to confuse the two sets of names.
425 A server that supports the features described in this document is
426 REQUIRED to support the CalDAV "calendar-access" [RFC4791] feature.
427 Servers include "calendar-auto-schedule" as a field in the DAV
428 response header from an OPTIONS request on any resource that supports
429 any scheduling operations, properties, privileges, or methods.
431 This specification introduces new collection resource types that are
432 used to manage scheduling object resources, and scheduling privileges
433 (as per Section 6), as well as provide scheduling functionality. It
434 is the server's responsibility to create these collection resources,
435 and clients have no way to create or delete them.
450Daboo & Desruisseaux Standards Track [Page 8]
452RFC 6638 CalDAV Scheduling June 2012
4552.1. Scheduling Outbox Collection
457 A scheduling Outbox collection is used as the target for busy time
458 information requests, and to manage privileges that apply to outgoing
461 A scheduling Outbox collection MUST report the DAV:collection and
462 CALDAV:schedule-outbox XML elements in the value of the DAV:
463 resourcetype property. The element type declaration for CALDAV:
466 <!ELEMENT schedule-outbox EMPTY>
470 <D:resourcetype xmlns:D="DAV:">
472 <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
475 A scheduling Outbox collection MUST NOT be a child (at any depth) of
476 a calendar collection resource.
478 The following WebDAV properties specified in CalDAV "calendar-access"
479 [RFC4791] MAY also be defined on scheduling Outbox collections and
480 apply to scheduling messages submitted to the scheduling Outbox
481 collection with the POST method:
483 o CALDAV:supported-calendar-component-set
485 o CALDAV:supported-calendar-data
487 o CALDAV:max-resource-size
489 o CALDAV:min-date-time
491 o CALDAV:max-date-time
493 o CALDAV:max-attendees-per-instance
495 The use of child resources in a scheduling Outbox collection is
496 reserved for future revisions or extensions of this specification.
498 The following WebDAV property is defined on principal resources and
499 used to locate the corresponding Outbox collection for the associated
506Daboo & Desruisseaux Standards Track [Page 9]
508RFC 6638 CalDAV Scheduling June 2012
5112.1.1. CALDAV:schedule-outbox-URL Property
513 Name: schedule-outbox-URL
515 Namespace: urn:ietf:params:xml:ns:caldav
517 Purpose: Identify the URL of the scheduling Outbox collection owned
518 by the associated principal resource.
520 Protected: This property MAY be protected.
522 PROPFIND behavior: This property SHOULD NOT be returned by a
523 PROPFIND DAV:allprop request (as defined in Section 14.2 of
526 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
529 Description: This property is needed for a client to determine where
530 the scheduling Outbox collection of the current user is located so
531 that sending of scheduling messages can occur. If not present,
532 then the associated calendar user is not enabled for the sending
533 of scheduling messages on the server.
537 <!ELEMENT schedule-outbox-URL (DAV:href)>
5392.2. Scheduling Inbox Collection
541 A scheduling Inbox collection contains copies of incoming scheduling
542 messages. These can be requests sent by an "Organizer", or replies
543 sent by an "Attendee" in response to a request. The scheduling Inbox
544 collection is also used to manage scheduling privileges.
546 A scheduling Inbox collection MUST report the DAV:collection and
547 CALDAV:schedule-inbox XML elements in the value of the DAV:
548 resourcetype property. The element type declaration for CALDAV:
551 <!ELEMENT schedule-inbox EMPTY>
555 <D:resourcetype xmlns:D="DAV:">
557 <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
562Daboo & Desruisseaux Standards Track [Page 10]
564RFC 6638 CalDAV Scheduling June 2012
567 Scheduling Inbox collections MUST only contain calendar object
568 resources that obey the restrictions specified in iTIP [RFC5546].
569 Consequently, scheduling Inbox collections MUST NOT contain any types
570 of collection resources. Restrictions defined in Section 4.1 of
571 CalDAV "calendar-access" [RFC4791] on calendar object resources
572 contained in calendar collections (e.g., Unique Identifier ("UID")
573 uniqueness) do not apply to calendar object resources contained in a
574 scheduling Inbox collection. Thus, multiple calendar object
575 resources contained in a scheduling Inbox collection can have the
576 same "UID" property value (i.e., multiple scheduling messages for the
577 same calendar component).
579 A scheduling Inbox collection MUST NOT be a child (at any depth) of a
580 calendar collection resource.
582 The following WebDAV properties specified in CalDAV "calendar-access"
583 [RFC4791] MAY also be defined on scheduling Inbox collections and
584 apply to scheduling messages delivered to the collection:
586 o CALDAV:supported-calendar-component-set
588 o CALDAV:supported-calendar-data
590 o CALDAV:max-resource-size
592 o CALDAV:min-date-time
594 o CALDAV:max-date-time
596 o CALDAV:max-instances
598 o CALDAV:max-attendees-per-instance
600 o CALDAV:calendar-timezone
602 The following WebDAV property is defined on principal resources and
603 used to locate the corresponding Inbox collection for the associated
6062.2.1. CALDAV:schedule-inbox-URL Property
608 Name: schedule-inbox-URL
610 Namespace: urn:ietf:params:xml:ns:caldav
612 Purpose: Identify the URL of the scheduling Inbox collection owned
613 by the associated principal resource.
618Daboo & Desruisseaux Standards Track [Page 11]
620RFC 6638 CalDAV Scheduling June 2012
623 Protected: This property MAY be protected.
625 PROPFIND behavior: This property SHOULD NOT be returned by a
626 PROPFIND DAV:allprop request (as defined in Section 14.2 of
629 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
632 Description: This property allows a client to determine where the
633 scheduling Inbox collection of the current user is located so that
634 processing of scheduling messages can occur. If not present, then
635 the associated calendar user is not enabled for reception of
636 scheduling messages on the server.
640 <!ELEMENT schedule-inbox-URL (DAV:href)>
6422.3. Calendaring Reports Extensions
644 This specification extends the CALDAV:calendar-query and CALDAV:
645 calendar-multiget REPORTs to return results for calendar object
646 resources in scheduling Inbox collections.
648 When a CALDAV:calendar-query REPORT includes a time-range query and
649 targets a scheduling Inbox collection, if any calendar object
650 resources contain "VEVENT" calendar components that do not include a
651 "DTSTART" iCalendar property (as allowed by iTIP [RFC5546]) then such
652 components MUST always match the time-range query test.
654 Note that the CALDAV:free-busy-query REPORT is not supported on
655 scheduling Inbox collections.
6572.4. Additional Principal Properties
659 This section defines new properties for WebDAV principal resources as
660 defined in [RFC3744]. These properties are likely to be protected,
661 but the server MAY allow them to be written by appropriate users.
6632.4.1. CALDAV:calendar-user-address-set Property
665 Name: calendar-user-address-set
667 Namespace: urn:ietf:params:xml:ns:caldav
669 Purpose: Identify the calendar addresses of the associated principal
674Daboo & Desruisseaux Standards Track [Page 12]
676RFC 6638 CalDAV Scheduling June 2012
679 Protected: This property MAY be protected.
681 PROPFIND behavior: This property SHOULD NOT be returned by a
682 PROPFIND DAV:allprop request (as defined in Section 14.2 of
685 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
688 Description: Support for this property is REQUIRED. This property
689 is needed to map calendar user addresses in iCalendar data to
690 principal resources and their associated scheduling Inbox and
691 Outbox collections. In the event that a user has no well-defined
692 identifier for his calendar user address, the URI of his principal
693 resource can be used. This property SHOULD be searchable using
694 the DAV:principal-property-search REPORT. The DAV:principal-
695 search-property-set REPORT SHOULD identify this property as such.
696 If not present, then the associated calendar user is not enabled
697 for scheduling on the server.
701 <!ELEMENT calendar-user-address-set (DAV:href*)>
705 <C:calendar-user-address-set xmlns:D="DAV:"
706 xmlns:C="urn:ietf:params:xml:ns:caldav">
707 <D:href>mailto:bernard@example.com</D:href>
708 <D:href>mailto:bernard.desruisseaux@example.com</D:href>
709 </C:calendar-user-address-set>
7112.4.2. CALDAV:calendar-user-type Property
713 Name: calendar-user-type
715 Namespace: urn:ietf:params:xml:ns:caldav
717 Purpose: Identifies the calendar user type of the associated
720 Value: Same values allowed for the iCalendar "CUTYPE" property
721 parameter defined in Section 3.2.3 of [RFC5545].
723 Protected: This property MAY be protected.
730Daboo & Desruisseaux Standards Track [Page 13]
732RFC 6638 CalDAV Scheduling June 2012
735 PROPFIND behavior: This property SHOULD NOT be returned by a
736 PROPFIND DAV:allprop request (as defined in Section 14.2 of
739 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
742 Description: Clients can query principal resources in order to look
743 up "Attendees" available on the server. When doing this, it is
744 useful to know, or restrict the query to, certain types of
745 calendar users (e.g., only search for "people", or only search for
746 "rooms"). This property MAY be defined on principal resources to
747 indicate the type of calendar user associated with the principal
748 resource. Its value is the same as the iCalendar "CUTYPE"
749 property parameter that can be used on "ATTENDEE" properties.
750 This property SHOULD be searchable using the DAV:principal-
751 property-search REPORT. The DAV:principal-search-property-set
752 REPORT SHOULD identify this property as such.
756 <!ELEMENT calendar-user-type (#PCDATA)>
760 <C:calendar-user-type
761 xmlns:C="urn:ietf:params:xml:ns:caldav">INDIVIDUAL<
762 /C:calendar-user-type>
7643. Scheduling Operations
766 When a calendar object resource is created, modified, or removed from
767 a calendar collection, the server examines the calendar data and
768 checks to see whether the data represents a scheduling object
769 resource. If it does, the server will automatically attempt to
770 deliver a scheduling message to the appropriate calendar users.
771 Several types of scheduling operations can occur in this case,
772 equivalent to iTIP "REQUEST", "REPLY", "CANCEL", and "ADD"
7753.1. Identifying Scheduling Object Resources
777 Calendar object resources on which the server performs scheduling
778 operations are referred to as scheduling object resources. There are
779 two types of scheduling object resources: organizer scheduling object
780 resources, and attendee scheduling object resources.
786Daboo & Desruisseaux Standards Track [Page 14]
788RFC 6638 CalDAV Scheduling June 2012
791 A calendar object resource is considered to be a valid organizer
792 scheduling object resource if the "ORGANIZER" iCalendar property is
793 present and set in all the calendar components to a value that
794 matches one of the calendar user addresses of the owner of the
797 A calendar object resource is considered to be a valid attendee
798 scheduling object resource if the "ORGANIZER" iCalendar property is
799 present and set in all the calendar components to the same value and
800 doesn't match one of the calendar user addresses of the owner of the
801 calendar collection, and if at least one of the "ATTENDEE" iCalendar
802 property values matches one of the calendar user addresses of the
803 owner of the calendar collection.
805 The creation of attendee scheduling object resources is typically
806 done by the server, with the resource being created in an appropriate
807 calendar collection (see Section 4.3).
8093.2. Handling Scheduling Object Resources
811 The server's behavior when processing a scheduling object resource
812 depends on whether it is owned by the "Organizer" or an "Attendee"
813 specified in the calendar data.
8153.2.1. Organizer Scheduling Object Resources
817 An "Organizer" can create, modify, or remove a scheduling object
818 resource, subject to access privileges, preconditions, and the
819 restrictions defined in Section 4.1 of [RFC4791]. These operations
820 are each described next, and how they are invoked via HTTP requests
821 is described in Section 3.2.3.
823 The "Organizer" of a calendar component can also be an "Attendee" of
824 that calendar component. In such cases, the server MUST NOT send a
825 scheduling message to the "Attendee" that matches the "Organizer".
827 The server SHOULD reject any attempt to set the "PARTSTAT" iCalendar
828 property parameter value of the "ATTENDEE" iCalendar property of
829 other users in the calendar object resource to a value other than
830 "NEEDS-ACTION" if the "SCHEDULE-AGENT" property parameter value is
831 not present or set to the value "SERVER".
833 The server MAY reject attempts to create a scheduling object resource
834 that specifies a "UID" property value already specified in a
835 scheduling object resource contained in another calendar collection
842Daboo & Desruisseaux Standards Track [Page 15]
844RFC 6638 CalDAV Scheduling June 2012
849 When an "Organizer" creates a scheduling object resource, the server
850 MUST inspect each "ATTENDEE" property to determine whether to send a
851 scheduling message. The table below indicates the appropriate iTIP
852 method used by the server, taking into account any "SCHEDULE-AGENT"
853 property parameter (see Section 7.1) specified on each "ATTENDEE"
856 +------------------+-------------+
857 | SCHEDULE-AGENT | iTIP METHOD |
858 +------------------+-------------+
859 | SERVER (default) | REQUEST |
864 +------------------+-------------+
866 "SCHEDULE-STATUS" iCalendar property parameters are added or changed
867 on "ATTENDEE" iCalendar properties in the scheduling object resource
868 being created as described in Section 7.3, with the value set as
869 described in Section 3.2.9. This will result in the created calendar
870 object resource differing from the calendar data sent in the HTTP
871 request. As a result, clients MAY reload the calendar data from the
872 server in order to update to the new server-generated state
875 The server MUST add a "SCHEDULE-STATUS" iCalendar property parameter
876 (see Section 7.3) to the "ATTENDEE" iCalendar property in the
877 scheduling object resource being created, and set its value as
878 described in Section 3.2.9. This will result in the created calendar
879 object resource differing from the calendar data sent in the HTTP
880 request. As a result, clients MAY reload the calendar data from the
881 server in order to update to the new server-generated state
882 information. Servers MUST NOT set the "SCHEDULE-STATUS" property
883 parameter on the "ATTENDEE" property of "Attendees" for which it did
884 not attempt to deliver a scheduling message.
886 The server MUST return an error with the CALDAV:allowed-organizer-
887 scheduling-object-change precondition code (Section 3.2.4.3) when the
888 "Organizer" attempts to change the iCalendar data in a manner that is
898Daboo & Desruisseaux Standards Track [Page 16]
900RFC 6638 CalDAV Scheduling June 2012
905 When an "Organizer" modifies a scheduling object resource, the server
906 MUST inspect each "ATTENDEE" property in both the original and
907 modified iCalendar data on a per-instance basis to determine whether
908 to send a scheduling message. The table below indicates the
909 appropriate iTIP method used by the server, taking into account any
910 "SCHEDULE-AGENT" property parameter (see Section 7.1) specified on
911 each "ATTENDEE" property. The values "SERVER", "CLIENT", and "NONE"
912 in the top and left titles of the table refer to the "SCHEDULE-AGENT"
913 parameter value of the "ATTENDEE" property, and the values "<Absent>"
914 and "<Removed>" are used to cover the cases where the "ATTENDEE"
915 property is not present (Original) or is being removed (Modified).
917 +---------------+-----------------------------------------------+
919 | +-----------+-----------+-----------+-----------+
920 | | <Removed> | SERVER | CLIENT | NONE |
921 | | | (default) | | |
922 +===+===========+===========+===========+===========+===========+
923 | | <Absent> | -- | REQUEST / | -- | -- |
925 | r +-----------+-----------+-----------+-----------+-----------+
926 | i | SERVER | CANCEL | REQUEST | CANCEL | CANCEL |
927 | g | (default) | | | | |
928 | i +-----------+-----------+-----------+-----------+-----------+
929 | n | CLIENT | -- | REQUEST / | -- | -- |
931 | l +-----------+-----------+-----------+-----------+-----------+
932 | | NONE | -- | REQUEST / | -- | -- |
934 +---+-----------+-----------+-----------+-----------+-----------+
936 "SCHEDULE-STATUS" iCalendar property parameters are added or changed
937 on "ATTENDEE" iCalendar properties in the scheduling object resource
938 being modified as described in Section 7.3, with the value set as
939 described in Section 3.2.9. This will result in the created calendar
940 object resource differing from the calendar data sent in the HTTP
941 request. As a result, clients MAY reload the calendar data from the
942 server in order to update to the new server-generated state
945 The server MUST return an error with the CALDAV:allowed-organizer-
946 scheduling-object-change precondition code (Section 3.2.4.3) when the
947 "Organizer" attempts to change the iCalendar data in a manner that is
954Daboo & Desruisseaux Standards Track [Page 17]
956RFC 6638 CalDAV Scheduling June 2012
961 When an "Organizer" removes a scheduling object resource, the server
962 MUST inspect each "ATTENDEE" property to determine whether to send a
963 scheduling message. The table below indicates the appropriate iTIP
964 method used by the server, taking into account any "SCHEDULE-AGENT"
965 property parameter (see Section 7.1) specified on each "ATTENDEE"
968 +------------------+-------------+
969 | SCHEDULE-AGENT | iTIP METHOD |
970 +------------------+-------------+
971 | SERVER (default) | CANCEL |
976 +------------------+-------------+
9783.2.2. Attendee Scheduling Object Resources
980 An "Attendee" can create, modify, or remove a scheduling object
981 resource. These operations are each described next, and how they are
982 invoked via HTTP requests is described in Section 3.2.3.
9843.2.2.1. Allowed "Attendee" Changes
986 "Attendees" are allowed to make some changes to a scheduling object
987 resource, though key properties such as start time, end time,
988 location, and summary are typically under the control of the
991 Servers MUST allow "Attendees" to make the following iCalendar data
992 changes, subject to other restrictions, such as access privileges and
995 1. change their own "PARTSTAT" iCalendar property parameter value.
997 2. add, modify, or remove any "TRANSP" iCalendar properties.
999 3. add, modify, or remove any "PERCENT-COMPLETE" iCalendar
1002 4. add, modify, or remove any "COMPLETED" iCalendar properties.
1004 5. add, modify, or remove any "VALARM" iCalendar components.
1010Daboo & Desruisseaux Standards Track [Page 18]
1012RFC 6638 CalDAV Scheduling June 2012
1015 6. add, modify, or remove the "CALSCALE" iCalendar property within
1016 the top-level "VCALENDAR" component.
1018 7. modify the "PRODID" iCalendar property within the top-level
1019 "VCALENDAR" component.
1021 8. add "EXDATE" iCalendar properties and possibly remove components
1022 for overridden recurrence instances.
1024 9. add, modify, or remove any "CREATED", "DTSTAMP", and
1025 "LAST-MODIFIED" iCalendar properties.
1027 10. add, modify, or remove "SCHEDULE-STATUS" iCalendar property
1028 parameters on "ATTENDEE" properties that have a "SCHEDULE-AGENT"
1029 parameter set to "CLIENT".
1031 11. add new components to represent overridden recurrence instances,
1032 provided the only changes to the recurrence instance follow the
1035 The server MUST return an error with the CALDAV:allowed-attendee-
1036 scheduling-object-change precondition code (Section 3.2.4.4) when the
1037 "Attendee" attempts to change the iCalendar data in a manner
1038 forbidden by the server.
1042 Typically, an "Attendee" does not create scheduling object resources,
1043 as scheduling messages delivered to him on the server are
1044 automatically processed by the server and placed on one of his
1045 calendars (see Section 4). However, in some cases, a scheduling
1046 message can get delivered directly to the client (e.g., via email
1047 [RFC6047]), and the "Attendee" might wish to store that on the
1048 server. In that case, the client creates a scheduling object
1049 resource in a calendar belonging to the "Attendee". It can then set
1050 the "SCHEDULE-AGENT" iCalendar property parameter on all "ORGANIZER"
1051 iCalendar properties in the resource to determine how the server
1052 treats the resource. The value of the "SCHEDULE-AGENT" iCalendar
1053 property parameter on all "ORGANIZER" iCalendar properties MUST be
1066Daboo & Desruisseaux Standards Track [Page 19]
1068RFC 6638 CalDAV Scheduling June 2012
1071 +----------------+--------------------------------------------------+
1072 | SCHEDULE-AGENT | Action |
1073 +----------------+--------------------------------------------------+
1074 | SERVER | The server will attempt to process changes to |
1075 | (default) | the resource using the normal rules for attendee |
1076 | | scheduling object resources. |
1078 | CLIENT | The server does no special processing of the |
1079 | | resource. The client is assumed to be handling |
1080 | | "Attendee" replies, etc. |
1082 | NONE | The server does no special processing of the |
1084 +----------------+--------------------------------------------------+
1086 "SCHEDULE-STATUS" iCalendar property parameters are added or changed
1087 on "ORGANIZER" iCalendar properties in the scheduling object resource
1088 being created as described in Section 7.3, with the value set as
1089 described in Section 3.2.9.
1093 When a scheduling object resource is modified by an "Attendee", the
1094 server's behavior depends on the value of the "SCHEDULE-AGENT"
1095 iCalendar property parameter on the "ORGANIZER" iCalendar properties:
1097 +----------------+--------------------------------------------------+
1098 | SCHEDULE-AGENT | Action |
1099 +----------------+--------------------------------------------------+
1100 | SERVER | The server will attempt to process the update |
1101 | (default) | using the behavior listed below. |
1103 | CLIENT | The server does no special processing of the |
1104 | | resource. The client is assumed to be handling |
1105 | | any "Attendee" replies, etc. |
1107 | NONE | The server does no special processing of the |
1109 +----------------+--------------------------------------------------+
1111 The server will inspect the changes by comparing the new scheduling
1112 object resource with the existing scheduling object resource.
1114 If the "Attendee" changes one or more "PARTSTAT" iCalendar property
1115 values on any component, or adds an overridden component with a
1116 changed "PARTSTAT" property, then the server MUST deliver an iTIP
1117 "REPLY" scheduling message to the "Organizer" to indicate the new
1118 participation status of the "Attendee".
1122Daboo & Desruisseaux Standards Track [Page 20]
1124RFC 6638 CalDAV Scheduling June 2012
1127 If the "Attendee" adds an "EXDATE" property value to effectively
1128 remove a recurrence instance, the server MUST deliver an iTIP "REPLY"
1129 scheduling message to the "Organizer" to indicate that the "Attendee"
1130 has declined the instance.
1132 "SCHEDULE-STATUS" iCalendar property parameters are added or changed
1133 on "ORGANIZER" iCalendar properties in the scheduling object resource
1134 being modified as described in Section 7.3, with the value set as
1135 described in Section 3.2.9. This will result in the updated calendar
1136 object resource differing from the calendar data sent in the HTTP
1137 request. As a result, clients MAY reload the calendar data from the
1138 server in order to update to the new server-generated state
1143 When a scheduling object resource is removed by an "Attendee", the
1144 server's behavior depends on the value of the "SCHEDULE-AGENT"
1145 iCalendar property parameter on the "ORGANIZER" iCalendar properties:
1147 +----------------+--------------------------------------------------+
1148 | SCHEDULE-AGENT | Action |
1149 +----------------+--------------------------------------------------+
1150 | SERVER | The server will attempt to process the removal, |
1151 | (default) | taking into account any "Schedule-Reply" request |
1152 | | header as per Section 8.1. |
1154 | CLIENT | The server does no special processing of the |
1155 | | resource. The client is assumed to be handling |
1156 | | any "Attendee" replies, etc. |
1158 | NONE | The server does no special processing of the |
1160 +----------------+--------------------------------------------------+
1164 This section describes how the use of various HTTP [RFC2616] and
1165 WebDAV [RFC4918] methods on a scheduling object resource will cause a
1166 create, modify, or remove operation on that resource as described
1167 above. The use of these methods is subject to the restrictions in
1168 [RFC4791], in addition to what is described below.
1178Daboo & Desruisseaux Standards Track [Page 21]
1180RFC 6638 CalDAV Scheduling June 2012
1185 When the server receives a PUT method request, it MUST execute the
1186 following operations, provided all appropriate preconditions are met:
1188 +------------------------+--------------------------+---------------+
1189 | Existing Destination | Resulting Destination | Server |
1190 | Resource | Resource | Operation |
1191 +------------------------+--------------------------+---------------+
1192 | None | Calendar object resource | None |
1194 | None | Scheduling object | Create |
1197 | Calendar object | Calendar object resource | None |
1200 | Calendar object | Scheduling object | Create |
1201 | resource | resource | |
1202 | Scheduling object | Calendar object resource | Remove |
1205 | Scheduling object | Scheduling object | Modify |
1206 | resource | resource | |
1207 +------------------------+--------------------------+---------------+
1211 When the server receives a DELETE method request targeted at a
1212 scheduling object resource, it MUST execute the Remove operation.
1214 When the server receives a DELETE method request targeted at a
1215 calendar collection, it MUST execute the Remove operation on all
1216 scheduling object resources contained in the calendar collection.
1234Daboo & Desruisseaux Standards Track [Page 22]
1236RFC 6638 CalDAV Scheduling June 2012
1241 When the server receives a COPY method request, it MUST execute the
1242 following operations based on the source and destination collections
1245 +-----------------------+------------------------+------------------+
1246 | Source Collection | Destination Collection | Server Operation |
1247 +-----------------------+------------------------+------------------+
1248 | Non-calendar | Non-calendar | None |
1249 | collection | collection | |
1251 | Non-calendar | Calendar collection | (1) |
1254 | Calendar collection | Non-calendar | None |
1257 | Calendar collection | Calendar collection | (2) |
1258 +-----------------------+------------------------+------------------+
1260 Note (1): The rules in Section 3.2.3.1 are applied for the
1261 destination of the COPY request.
1263 Note (2): The server MAY reject this as per Section 3.2.4.1;
1266 The behavior of a COPY method request on a calendar collection is
1290Daboo & Desruisseaux Standards Track [Page 23]
1292RFC 6638 CalDAV Scheduling June 2012
1297 When the server receives a MOVE method request, it MUST execute the
1298 following operations based on the source and destination collections
1301 +-----------------------+------------------------+------------------+
1302 | Source Collection | Destination Collection | Server Operation |
1303 +-----------------------+------------------------+------------------+
1304 | Non-calendar | Non-calendar | None |
1305 | collection | collection | |
1307 | Non-calendar | Calendar collection | (1) |
1310 | Calendar collection | Non-calendar | (2) |
1313 | Calendar collection | Calendar collection | None |
1314 +-----------------------+------------------------+------------------+
1316 Note (1): The rules in Section 3.2.3.1 are applied for the
1317 destination of the MOVE request.
1319 Note (2): The rules in Section 3.2.3.2 are applied for the source of
1322 The behavior of a MOVE method request on a calendar collection is
13253.2.4. Additional Method Preconditions
1327 This specification defines method preconditions (see Section 16 of
1328 WebDAV [RFC4918]), in addition to those in [RFC4791], to provide
1329 machine-parseable information in error responses.
13313.2.4.1. CALDAV:unique-scheduling-object-resource Precondition
1333 Name: unique-scheduling-object-resource
1335 Namespace: urn:ietf:params:xml:ns:caldav
1337 Apply to: PUT, COPY, and MOVE
1339 Use with: 403 Forbidden
1346Daboo & Desruisseaux Standards Track [Page 24]
1348RFC 6638 CalDAV Scheduling June 2012
1351 Purpose: (precondition) -- Servers MAY reject requests to create a
1352 scheduling object resource with an iCalendar "UID" property value
1353 already in use by another scheduling object resource owned by the
1354 same user in other calendar collections. Servers SHOULD report
1355 the URL of the scheduling object resource that is already making
1356 use of the same "UID" property value in the DAV:href element.
1360 <!ELEMENT unique-scheduling-object-resource (DAV:href?)>
1364 <C:unique-scheduling-object-resource xmlns:D="DAV:"
1365 xmlns:C="urn:ietf:params:xml:ns:caldav">
1366 <D:href>/home/bernard/calendars/personal/abc123.ics</D:href>
1367 </C:unique-scheduling-object-resource>
13693.2.4.2. CALDAV:same-organizer-in-all-components Precondition
1371 Name: same-organizer-in-all-components
1373 Namespace: urn:ietf:params:xml:ns:caldav
1375 Apply to: PUT, COPY, and MOVE
1377 Use with: 403 Forbidden
1379 Purpose: (precondition) -- All the calendar components in a
1380 scheduling object resource MUST contain the same "ORGANIZER"
1381 property value when present.
1385 <!ELEMENT same-organizer-in-all-components EMPTY>
13873.2.4.3. CALDAV:allowed-organizer-scheduling-object-change Precondition
1389 Name: allowed-organizer-scheduling-object-change
1391 Namespace: urn:ietf:params:xml:ns:caldav
1393 Apply to: PUT, COPY, and MOVE
1395 Use with: 403 Forbidden
1402Daboo & Desruisseaux Standards Track [Page 25]
1404RFC 6638 CalDAV Scheduling June 2012
1407 Purpose: (precondition) -- Servers MAY impose restrictions on
1408 modifications allowed by an "Organizer". For instance, servers
1409 MAY prevent the "Organizer" from setting the "PARTSTAT" property
1410 parameter to a value other than "NEEDS-ACTION" if the
1411 corresponding "ATTENDEE" property has the "SCHEDULE-AGENT"
1412 property parameter set to "SERVER", or does not have the
1413 "SCHEDULE-AGENT" property parameter. See Section 3.2.1.
1417 <!ELEMENT allowed-organizer-scheduling-object-change EMPTY>
14193.2.4.4. CALDAV:allowed-attendee-scheduling-object-change Precondition
1421 Name: allowed-attendee-scheduling-object-change
1423 Namespace: urn:ietf:params:xml:ns:caldav
1425 Apply to: PUT, COPY, and MOVE
1427 Use with: 403 Forbidden
1429 Purpose: (precondition) -- Servers MAY impose restrictions on
1430 modifications allowed by an "Attendee", subject to the allowed
1431 changes specified in Section 3.2.2.1.
1435 <!ELEMENT allowed-attendee-scheduling-object-change EMPTY>
14373.2.5. DTSTAMP and SEQUENCE Properties
1439 The server MUST ensure that a "DTSTAMP" iCalendar property is present
1440 and set the value to the UTC time that the scheduling message was
1441 generated (as required by iCalendar).
1443 The server MUST ensure that for each type of scheduling operation,
1444 the "SEQUENCE" iCalendar property value is updated as per iTIP
1458Daboo & Desruisseaux Standards Track [Page 26]
1460RFC 6638 CalDAV Scheduling June 2012
14633.2.6. Restrict Recurrence Instances Sent to "Attendees"
1465 Servers MUST ensure that "Attendees" only get information about
1466 recurrence instances that explicitly include them as an "Attendee",
1467 when delivering scheduling messages for recurring calendar
1470 For example, if an "Attendee" is invited to only a single instance of
1471 a recurring event, the organizer scheduling object resource will
1472 contain an overridden instance in the form of a separate calendar
1473 component. That separate calendar component will include the
1474 "ATTENDEE" property referencing the "one-off" "Attendee". That
1475 "Attendee" will not be listed in any other calendar components in the
1476 scheduling object resource. Any scheduling messages delivered to the
1477 "Attendee" will only contain information about this overridden
1480 As another example, an "Attendee" could be excluded from one instance
1481 of a recurring event. In that case, the organizer scheduling object
1482 resource will include an overridden instance with an "ATTENDEE" list
1483 that does not include the "Attendee" being excluded. Any scheduling
1484 messages delivered to the "Attendee" will not specify the overridden
1485 instance but rather will include an "EXDATE" property in the "master"
1486 component that defines the recurrence set.
14883.2.7. Forcing the Server to Send a Scheduling Message
1490 The iCalendar property parameter "SCHEDULE-FORCE-SEND", defined in
1491 Section 7.2, can be used by a calendar user to force the server to
1492 send a scheduling message to an "Attendee" or the "Organizer" in a
1493 situation where the server would not normally send a scheduling
1494 message. For instance, an "Organizer" could use this property
1495 parameter to request an "Attendee" that previously declined an
1496 invitation to reconsider his participation status without being
1497 forced to modify the event.
1514Daboo & Desruisseaux Standards Track [Page 27]
1516RFC 6638 CalDAV Scheduling June 2012
15193.2.8. "Attendee" Participation Status
1521 This section specifies additional requirements on the handling of the
1522 "PARTSTAT" property parameter when the "SCHEDULE-AGENT" property
1523 parameter on the corresponding "ATTENDEE" property is set to the
1524 value "SERVER" or is not present.
1526 A reschedule occurs when any "DTSTART", "DTEND", "DURATION", "DUE",
1527 "RRULE", "RDATE", or "EXDATE" property changes in a calendar
1528 component such that existing recurrence instances are impacted by the
1529 changes, as shown in the table below. Servers MUST reset the
1530 "PARTSTAT" property parameter value of all "ATTENDEE" properties,
1531 except the one that corresponds to the "Organizer", to "NEEDS-ACTION"
1532 for each calendar component change that causes any instance to be
1535 +-----------+-------------------------------------------------------+
1536 | Property | Server Action |
1537 +-----------+-------------------------------------------------------+
1538 | DTSTART, | Any change to these properties results in "PARTSTAT" |
1539 | DTEND, | being set to "NEEDS-ACTION". |
1543 | RRULE | A change to or addition of this property that results |
1544 | | in the addition of new recurring instances or a |
1545 | | change in time for existing recurring instances |
1546 | | results in "PARTSTAT" being reset to "NEEDS-ACTION" |
1547 | | on each affected component. |
1549 | RDATE | A change to or addition of this property that results |
1550 | | in the addition of new recurring instances or a |
1551 | | change in time for existing recurring instances |
1552 | | results in "PARTSTAT" being reset to "NEEDS-ACTION" |
1553 | | on each affected component. |
1555 | EXDATE | A change to or removal of this property that results |
1556 | | in the reinstatement of recurring instances results |
1557 | | in "PARTSTAT" being set to "NEEDS-ACTION" on each |
1558 | | affected component. |
1559 +-----------+-------------------------------------------------------+
1561 The server MAY allow the "Organizer's" client to change an
1562 "Attendee's" "PARTSTAT" property parameter value to "NEEDS-ACTION" at
1563 any other time (e.g., when the "LOCATION" property value changes, an
1564 "Organizer" might wish to re-invite "Attendees" who might be impacted
1570Daboo & Desruisseaux Standards Track [Page 28]
1572RFC 6638 CalDAV Scheduling June 2012
15753.2.9. Schedule Status Values
1577 When scheduling with an "Attendee", there are two types of status
1578 information that can be returned during the operation. The first
1579 type of status information is a "delivery" status that indicates
1580 whether the scheduling message from the "Organizer" to the "Attendee"
1581 was delivered or not, or what the current status of delivery is. The
1582 second type of status information is a "reply" status corresponding
1583 to the "Attendee's" own "REQUEST-STATUS" information from the
1584 scheduling message reply that is sent back to the "Organizer".
1586 Similarly, when an "Attendee" sends a reply back to the "Organizer",
1587 there will be "delivery" status information for the scheduling
1588 message sent to the "Organizer". However, there is no
1589 "REQUEST-STATUS" sent back by the "Organizer", so there is no
1590 equivalent of the "reply" status as per scheduling messages to
1593 The "delivery" status information on an "ORGANIZER" or "ATTENDEE"
1594 iCalendar property is conveyed in the "SCHEDULE-STATUS" property
1595 parameter value (Section 7.3). The status code value for "delivery"
1596 status can be one of the following:
1598 +----------+--------------------------------------------------------+
1599 | Delivery | Description |
1602 +----------+--------------------------------------------------------+
1603 | 1.0 | The scheduling message is pending. That is, the |
1604 | | server is still in the process of sending the message. |
1605 | | The status code value can be expected to change once |
1606 | | the server has completed its sending and delivery |
1609 | 1.1 | The scheduling message has been successfully sent. |
1610 | | However, the server does not have explicit information |
1611 | | about whether the scheduling message was successfully |
1612 | | delivered to the recipient. This state can occur with |
1613 | | "store and forward" style scheduling protocols such as |
1614 | | iMIP [RFC6047] (iTIP using email). |
1616 | 1.2 | The scheduling message has been successfully |
1626Daboo & Desruisseaux Standards Track [Page 29]
1628RFC 6638 CalDAV Scheduling June 2012
1631 | 3.7 | The scheduling message was not delivered because the |
1632 | | server did not recognize the calendar user address as |
1633 | | a valid calendar user. Note that this code applies to |
1634 | | both "Organizer" and "Attendee" calendar user |
1637 | 3.8 | The scheduling message was not delivered due to |
1638 | | insufficient privileges. Note that this code applies |
1639 | | to privileges granted by both the "Organizer" and |
1640 | | "Attendee" calendar users. |
1642 | 5.1 | The scheduling message was not delivered because the |
1643 | | server could not complete delivery of the message. |
1644 | | This is likely due to a temporary failure, and the |
1645 | | originator can try to send the message again at a |
1648 | 5.2 | The scheduling message was not delivered because the |
1649 | | server was not able to find a way to deliver the |
1650 | | message. This is likely a permanent failure, and the |
1651 | | originator ought not try to send the message again, at |
1652 | | least without verifying/correcting the calendar user |
1653 | | address of the recipient. |
1655 | 5.3 | The scheduling message was not delivered and was |
1656 | | rejected because scheduling with that recipient is not |
1657 | | allowed. This is likely a permanent failure, and the |
1658 | | originator ought not try to send the message again. |
1659 +----------+--------------------------------------------------------+
1661 The status code for "reply" status can be any of the valid iTIP
1662 [RFC5546] "REQUEST-STATUS" values.
1664 The 1.xx "REQUEST-STATUS" codes are new. This specification modifies
1665 item (2) of Section 3.6 of [RFC5546] by adding the following
1668 For a 1.xx code, all components MUST have exactly the same code.
1682Daboo & Desruisseaux Standards Track [Page 30]
1684RFC 6638 CalDAV Scheduling June 2012
1687 Definition of the new 1.xx codes is as follows:
16893.2.9.1. Status Code 1.0
1693 Status Description: Pending.
1695 Status Exception Data: None.
1697 Description: Delivery of the iTIP message is pending.
16993.2.9.2. Status Code 1.1
1703 Status Description: Sent.
1705 Status Exception Data: None.
1707 Description: The iTIP message has been sent, though no information
1708 about successful delivery is known.
17103.2.9.3. Status Code 1.2
1714 Status Description: Delivered.
1716 Status Exception Data: None.
1718 Description: The iTIP message has been sent and delivered.
17203.2.10. Avoiding Conflicts when Updating Scheduling Object Resources
1722 Scheduling object resources on the server might change frequently as
1723 "Attendees" change their participation status, triggering updates to
1724 the "Organizer", and refreshes of other "Attendees'" copies of the
1725 scheduling object resource. This can lead to an "inconsequential"
1726 change to a calendar user's data -- one that does not directly impact
1727 the user's own participation status. When this occurs, clients have
1728 to reload calendar data and reconcile with changes being made by
1729 calendar users. To avoid the need for this, the server can instead
1730 merge calendar data changes from a client with changes made as a
1731 result of a scheduling operation carried out by some other calendar
1738Daboo & Desruisseaux Standards Track [Page 31]
1740RFC 6638 CalDAV Scheduling June 2012
1743 This specification introduces a new WebDAV resource property CALDAV:
1744 schedule-tag with a corresponding response header "Schedule-Tag", and
1745 a new "If-Schedule-Tag-Match" request header to allow client changes
1746 to be appropriately merged with server changes in the case where the
1747 changes on the server were the result of an "inconsequential"
1748 scheduling message update (one that simply updates the status
1749 information of "Attendees" due to a reply from another "Attendee").
1751 Servers MUST automatically resolve conflicts with "inconsequential"
1752 changes done to scheduling object resources when the "If-Schedule-
1753 Tag-Match" request header is specified. The If-Schedule-Tag-Match
1754 request header applies only to the Request-URI, and not to the
1755 destination of a COPY or MOVE.
1757 A response to any successful GET or PUT request targeting a
1758 scheduling object resource MUST include a Schedule-Tag response
1759 header with the value set to the same value as the CALDAV:schedule-
1760 tag WebDAV property of the resource.
1762 A response to any successful COPY or MOVE request that specifies a
1763 Destination request header targeting a scheduling object resource
1764 MUST include a Schedule-Tag response header with the value set to the
1765 same value as the CALDAV:schedule-tag WebDAV property of the
1766 destination resource.
1768 Clients SHOULD use the If-Schedule-Tag-Match header on requests that
1769 update scheduling object resources, instead of HTTP ETag-based
1770 precondition tests (e.g., If-Match). Normal ETag-based precondition
1771 tests are used in all other cases, e.g., for synchronization.
1773 The value of the CALDAV:schedule-tag property changes according to
1776 o For an "Organizer's" copy of a scheduling object resource:
1778 1. The server MUST NOT change the CALDAV:schedule-tag property
1779 value when the scheduling object resource is updated as the
1780 result of automatically processing a scheduling message reply
1781 from an "Attendee". For instance, when an "Attendee" replies
1782 to the "Organizer", the CALDAV:schedule-tag property is
1783 unchanged after the "Organizer's" scheduling object resource
1784 has been automatically updated by the server with the
1785 "Attendee's" new participation status.
1787 2. The server MUST change the CALDAV:schedule-tag property value
1788 when the scheduling object resource is changed directly via an
1789 HTTP request (e.g., PUT, COPY, or MOVE).
1794Daboo & Desruisseaux Standards Track [Page 32]
1796RFC 6638 CalDAV Scheduling June 2012
1799 o For an "Attendee's" copy of a scheduling object resource:
1801 1. The server MUST change the CALDAV:schedule-tag property value
1802 when the scheduling object resource is changed as the result
1803 of processing a scheduling message update from an "Organizer"
1804 that contains changes other than just the participation status
1807 2. The server MUST NOT change the CALDAV:schedule-tag property
1808 value when the scheduling object resource is changed as the
1809 result of processing a scheduling message update from an
1810 "Organizer" that only specifies changes in the participation
1811 status of "Attendees". For instance, when "Attendee" "A"
1812 replies to "Organizer" "O", and "Attendee" "B" receives a
1813 scheduling message update from "Organizer" "O" with the new
1814 participation status of "Attendee" "A", the CALDAV:schedule-
1815 tag property of "Attendee" "B"'s scheduling object resource
1816 would remain the same.
1818 3. The server MUST change the CALDAV:schedule-tag property value
1819 when the scheduling object resource is changed directly via an
1820 HTTP request (e.g., PUT, COPY, or MOVE).
1824 Clients MAY use the If-Schedule-Tag-Match request header to do a PUT
1825 request that ensures that "inconsequential" changes on the server do
1826 not result in a precondition error. The value of the request header
1827 is set to the last Schedule-Tag value received for the resource being
1828 modified. If the value of the If-Schedule-Tag-Match header matches
1829 the current value of the CALDAV:schedule-tag property, the server
1830 MUST take any "ATTENDEE" property changes for all "Attendees" other
1831 than the owner of the scheduling object resource and apply those to
1832 the new resource being stored. Otherwise, the server MUST fail the
1833 request with a 412 Precondition Failed status code.
18353.2.10.2. DELETE, COPY, or MOVE
1837 Clients MAY use the If-Schedule-Tag-Match request header to do a
1838 DELETE, COPY, or MOVE request that ensures that "inconsequential"
1839 changes on the server do not result in a precondition error. The
1840 value of the request header is set to the last Schedule-Tag value
1841 received for the resource being deleted. If the value of the
1842 If-Schedule-Tag-Match header matches the current value of the CALDAV:
1843 schedule-tag property, the server performs the normal DELETE, COPY,
1844 or MOVE request processing for the resource. Otherwise, the server
1845 MUST fail the request with a 412 Precondition Failed status code.
1850Daboo & Desruisseaux Standards Track [Page 33]
1852RFC 6638 CalDAV Scheduling June 2012
18554. Processing Incoming Scheduling Messages
1857 Scheduling operations can cause the delivery of a scheduling message
1858 into an "Organizer's" or "Attendee's" scheduling Inbox collection.
1859 Servers MUST automatically process incoming scheduling messages using
1860 the rules defined by [RFC5546], by creating or updating the
1861 corresponding scheduling object resources on calendars owned by the
1862 owner of the scheduling Inbox collection. In addition, the
1863 scheduling message is stored in the scheduling Inbox collection as an
1864 indicator to the client that a scheduling operation has taken place.
1865 Scheduling messages are typically removed from the scheduling Inbox
1866 collection by the client once the calendar user has acknowledged the
1869 The server MUST take into account privileges on the scheduling Inbox
1870 collection when processing incoming scheduling messages, to determine
1871 whether delivery of the scheduling message is allowed. Privileges on
1872 calendars containing any matching scheduling object resource are not
1873 considered in this case (i.e., a schedule message from another user
1874 can cause modifications to resources in calendar collections that the
1875 other user would not normally have read or write access to).
1876 Additionally, servers MUST take into account any scheduling Inbox
1877 collection preconditions (see Section 2.2) when delivering the
1878 scheduling message, and MUST take into account the similar
1879 preconditions on any calendar collection that contains, or would
1880 contain, the corresponding scheduling object resource.
18824.1. Processing "Organizer" Requests, Additions, and Cancellations
1884 For a scheduling message sent by an "Organizer", the server first
1885 tries to locate a corresponding scheduling object resource belonging
1886 to the "Attendee". If no matching scheduling object resource exists,
1887 the server treats the scheduling message as a new message; otherwise,
1888 it is treated as an update.
1890 In the case of a new message, the server processes the scheduling
1891 message and creates a new scheduling object resource as per
1894 In the case of an update, the server processes the scheduling message
1895 and updates the matching scheduling object resource belonging to the
1896 "Attendee" to reflect the changes sent by the "Organizer".
1898 In each case, the scheduling message MUST only appear in the
1899 "Attendee's" scheduling Inbox collection once all automatic
1900 processing has been done.
1906Daboo & Desruisseaux Standards Track [Page 34]
1908RFC 6638 CalDAV Scheduling June 2012
19114.2. Processing "Attendee" Replies
1913 For a scheduling message reply sent by an "Attendee", the server
1914 first locates the corresponding scheduling object resource belonging
1915 to the "Organizer". If the corresponding scheduling object resource
1916 cannot be found, the server SHOULD ignore the scheduling message.
1918 The server MUST then update the "PARTSTAT" iCalendar property
1919 parameter value of each "ATTENDEE" iCalendar property in the
1920 scheduling object resource to match the changes indicated in the
1921 reply (taking into account the fact that an "Attendee" could have
1922 created a new overridden iCalendar component to indicate different
1923 participation status on one or more instances of a recurring event).
1925 The server MUST also update or add the "SCHEDULE-STATUS" property
1926 parameter on each matching "ATTENDEE" iCalendar property and set its
1927 value to that of the "REQUEST-STATUS" property in the reply, or to
1928 "2.0" if "REQUEST-STATUS" is not present (also taking into account
1929 recurrence instances). If there are multiple "REQUEST-STATUS"
1930 properties in the reply, the "SCHEDULE-STATUS" property parameter
1931 value is set to a comma-separated list of status codes, one from each
1932 "REQUEST-STATUS" property.
1934 The server SHOULD send scheduling messages to all the other
1935 "Attendees" indicating the change in participation status of the
1936 "Attendee" replying, subject to the recurrence requirements of
1939 The scheduling message MUST only appear in the "Organizer's"
1940 scheduling Inbox collection once all automatic processing has been
19434.3. Default Calendar Collection
1945 The server processes scheduling messages received for an "Attendee"
1946 by creating a new scheduling object resource in a calendar collection
1947 belonging to the "Attendee", when one does not already exist. A
1948 calendar user that is an "Attendee" in a scheduling operation MUST
1949 have at least one valid calendar collection available. If there is
1950 no valid calendar collection, then the server MUST reject the attempt
1951 to deliver the scheduling message to the "Attendee".
1953 Servers MAY provide support for a default calendar collection -- that
1954 is, the calendar collection in which new scheduling object resources
1955 will be created. The CALDAV:schedule-default-calendar-URL WebDAV
1956 property, which can be present on the scheduling Inbox collection of
1957 a calendar user, specifies whether this calendar user has a default
1958 calendar collection. See Section 9.2.
1962Daboo & Desruisseaux Standards Track [Page 35]
1964RFC 6638 CalDAV Scheduling June 2012
1967 Servers SHOULD create new scheduling object resources in the default
1968 calendar collection, if the CALDAV:schedule-default-calendar-URL
1969 WebDAV property is set.
1971 Servers MAY allow clients to change the default calendar collection
1972 by changing the value of the CALDAV:schedule-default-calendar-URL
1973 WebDAV property on the scheduling Inbox collection. However, the
1974 server MUST ensure that any new value for that property refers to a
1975 valid calendar collection belonging to the owner of the scheduling
1978 Servers MUST reject any attempt to delete the default calendar
19814.3.1. Additional Method Preconditions
1983 This specification defines additional method preconditions (see
1984 Section 16 of WebDAV [RFC4918]) to provide machine-parseable
1985 information in error responses.
19874.3.1.1. CALDAV:default-calendar-needed Precondition
1989 Name: default-calendar-needed
1991 Namespace: urn:ietf:params:xml:ns:caldav
1995 Use with: 403 Forbidden
1997 Purpose: (precondition) -- The client attempted to delete the
1998 calendar collection currently referenced by the CALDAV:schedule-
1999 default-calendar-URL property, or attempted to remove the CALDAV:
2000 schedule-default-calendar-URL property on the scheduling Inbox
2001 collection on a server that doesn't allow such operations.
2005 <!ELEMENT default-calendar-needed EMPTY>
20074.3.1.2. CALDAV:valid-schedule-default-calendar-URL Precondition
2009 Name: valid-schedule-default-calendar-URL
2011 Namespace: urn:ietf:params:xml:ns:caldav
2018Daboo & Desruisseaux Standards Track [Page 36]
2020RFC 6638 CalDAV Scheduling June 2012
2023 Use with: 403 Forbidden
2025 Purpose: (precondition) -- The client attempted to set the CALDAV:
2026 schedule-default-calendar-URL property to a DAV:href element that
2027 doesn't reference a valid calendar collection. Note: Servers that
2028 do not allow clients to change the CALDAV:schedule-default-
2029 calendar-URL property would simply return the DAV:cannot-modify-
2030 protected-property precondition defined in Section 16 of WebDAV
2035 <!ELEMENT valid-schedule-default-calendar-URL EMPTY>
20375. Request for Busy Time Information
2039 Busy time information of one or more calendar users can be determined
2040 by submitting a POST request targeted at the scheduling Outbox
2041 collection of the calendar user requesting the information (the
2042 "Organizer"). To accomplish this, the request body MUST contain a
2043 "VFREEBUSY" calendar component with the "METHOD" iCalendar property
2044 set to the value "REQUEST" as specified in Section 3.3.2 of iTIP
2045 [RFC5546]. The resource identified by the Request-URI MUST be a
2046 resource collection of type CALDAV:schedule-outbox (Section 2.1).
2047 The "ORGANIZER" property value in the "VFREEBUSY" component MUST
2048 match one of the calendar user addresses of the owner of the Outbox
2051 A response to a busy time request that indicates status for one or
2052 more calendar users MUST be an XML document with a CALDAV:schedule-
2053 response XML element as its root element. This element MUST contain
2054 one CALDAV:response element for each calendar user, with each such
2055 element in turn containing elements that indicate which calendar user
2056 they correspond to, the scheduling status for that calendar user, any
2057 error codes, and an optional description. For a successful busy time
2058 request, a CALDAV:calendar-data element is also present for each
2059 calendar user, containing the actual busy time information (i.e., an
2060 iCalendar "VFREEBUSY" component). See Section 10 for details on the
2061 child elements. See Appendix B.5 for an example busy time request
2074Daboo & Desruisseaux Standards Track [Page 37]
2076RFC 6638 CalDAV Scheduling June 2012
2081 The list below summarizes the most common status codes used for this
2082 method. However, clients need to be prepared to handle other
2083 2/3/4/5xx series status codes as well.
2085 200 (OK) - The command succeeded.
2087 204 (No Content) - The command succeeded.
2089 400 (Bad Request) - The client has provided an invalid scheduling
2092 403 (Forbidden) - The client cannot submit a scheduling message to
2093 the specified Request-URI.
2095 404 (Not Found) - The URL in the Request-URI was not present.
2097 423 (Locked) - The specified resource is locked, and the client
2098 either is not a lock owner or the lock type requires a lock token
2099 to be submitted and the client did not submit it.
21015.2. Additional Method Preconditions
2103 The following are existing preconditions that are reused for the POST
2104 method on an Outbox collection.
2106 o DAV:need-privileges [RFC3744]
2108 o CALDAV:supported-calendar-data [RFC4791]
2110 o CALDAV:valid-calendar-data [RFC4791]
2112 o CALDAV:max-resource-size [RFC4791]
2114 The following are new method preconditions for the POST method on an
21175.2.1. CALDAV:valid-scheduling-message Precondition
2119 Name: valid-scheduling-message
2121 Namespace: urn:ietf:params:xml:ns:caldav
2125 Use with: 400 Bad Request
2130Daboo & Desruisseaux Standards Track [Page 38]
2132RFC 6638 CalDAV Scheduling June 2012
2135 Purpose: (precondition) -- The resource submitted in the POST
2136 request MUST obey all the restrictions specified in Section 3.3.2
2141 <!ELEMENT valid-scheduling-message EMPTY>
21435.2.2. CALDAV:valid-organizer Precondition
2145 Name: valid-organizer
2147 Namespace: urn:ietf:params:xml:ns:caldav
2151 Use with: 403 Forbidden
2153 Purpose: (precondition) -- The "ORGANIZER" property value in the
2154 POST request's scheduling message MUST match one of the calendar
2155 user addresses of the owner of the scheduling Outbox collection
2156 being targeted by the request.
2160 <!ELEMENT valid-organizer EMPTY>
21626. Scheduling Privileges
2164 New scheduling privileges are defined in this section. All the
2165 scheduling privileges MUST be non-abstract and MUST appear in the
2166 DAV:supported-privilege-set property of scheduling Outbox and Inbox
2167 collections on which they are defined.
2169 The tables specified in Appendix A clarify which scheduling methods
2170 (e.g., "REQUEST", "REPLY", etc.) are controlled by each scheduling
2171 privilege defined in this section.
21736.1. Privileges on Scheduling Inbox Collections
2175 This section defines new WebDAV Access Control List (ACL) [RFC3744]
2176 privileges that are defined for use on scheduling Inbox collections.
2177 These privileges determine whether delivery of scheduling messages
2178 from a calendar user is allowed by the calendar user who "owns" the
2179 scheduling Inbox collection. This allows calendar users to choose
2180 which other calendar users can schedule with them.
2186Daboo & Desruisseaux Standards Track [Page 39]
2188RFC 6638 CalDAV Scheduling June 2012
2191 Note that when a scheduling message is delivered to a calendar user,
2192 in addition to a scheduling object resource being created in the
2193 calendar user's scheduling Inbox collection, a new scheduling object
2194 resource might be created or an existing one updated in a calendar
2195 belonging to the calendar user. In that case, the ability to create
2196 or update the scheduling object resource in the calendar is
2197 controlled by the privileges assigned to the scheduling Inbox
2200 The privileges defined in this section are ignored if applied to a
2201 resource other than a scheduling Inbox collection.
22036.1.1. CALDAV:schedule-deliver Privilege
2205 CALDAV:schedule-deliver is an aggregate privilege as per Section 6.3.
2207 <!ELEMENT schedule-deliver EMPTY>
22096.1.2. CALDAV:schedule-deliver-invite Privilege
2211 The CALDAV:schedule-deliver-invite privilege controls the processing
2212 and delivery of scheduling messages coming from an "Organizer".
2214 <!ELEMENT schedule-deliver-invite EMPTY>
22166.1.3. CALDAV:schedule-deliver-reply Privilege
2218 The CALDAV:schedule-deliver-reply privilege controls the processing
2219 and delivery of scheduling messages coming from an "Attendee".
2221 <!ELEMENT schedule-deliver-reply EMPTY>
22236.1.4. CALDAV:schedule-query-freebusy Privilege
2225 The CALDAV:schedule-query-freebusy privilege controls freebusy
2226 requests targeted at the owner of the scheduling Inbox collection.
2228 <!ELEMENT schedule-query-freebusy EMPTY>
22306.2. Privileges on Scheduling Outbox Collections
2232 This section defines new WebDAV ACL [RFC3744] privileges that are
2233 defined for use on scheduling Outbox collections. These privileges
2234 determine which calendar users are allowed to send scheduling
2235 messages on behalf of the calendar user who "owns" the scheduling
2236 Outbox collection. This allows calendar users to choose other
2237 calendar users who can act on their behalf (e.g., assistants working
2238 on behalf of their boss).
2242Daboo & Desruisseaux Standards Track [Page 40]
2244RFC 6638 CalDAV Scheduling June 2012
2247 The privileges defined in this section are ignored if applied to a
2248 resource other than a scheduling Outbox collection.
22506.2.1. CALDAV:schedule-send Privilege
2252 CALDAV:schedule-send is an aggregate privilege as per Section 6.3.
2254 <!ELEMENT schedule-send EMPTY>
22566.2.2. CALDAV:schedule-send-invite Privilege
2258 The CALDAV:schedule-send-invite privilege controls the sending of
2259 scheduling messages by "Organizers".
2261 Users granted the DAV:bind privilege on a calendar collection, or the
2262 DAV:write privilege on scheduling object resources, will also need
2263 the CALDAV:schedule-send-invite privilege granted on the scheduling
2264 Outbox collection of the owner of the calendar collection or
2265 scheduling object resource in order to be allowed to create, modify,
2266 or delete scheduling object resources in a way that will trigger the
2267 CalDAV server to deliver scheduling messages to "Attendees".
2269 <!ELEMENT schedule-send-invite EMPTY>
22716.2.3. CALDAV:schedule-send-reply Privilege
2273 The CALDAV:schedule-send-reply privilege controls the sending of
2274 scheduling messages by "Attendees".
2276 Users granted the DAV:bind privilege on a calendar collection, or the
2277 DAV:write privilege on scheduling object resources, will also need
2278 the CALDAV:schedule-send-reply privilege granted on the scheduling
2279 Outbox collection of the owner of the calendar collection or
2280 scheduling object resource in order to be allowed to create, modify,
2281 or delete scheduling object resources in a way that will trigger the
2282 CalDAV server to deliver scheduling message replies to the
2285 <!ELEMENT schedule-send-reply EMPTY>
22876.2.4. CALDAV:schedule-send-freebusy Privilege
2289 The CALDAV:schedule-send-freebusy privilege controls the use of the
2290 POST method to submit scheduling messages that specify the scheduling
2291 method "REQUEST" with a "VFREEBUSY" calendar component.
2293 <!ELEMENT schedule-send-freebusy EMPTY>
2298Daboo & Desruisseaux Standards Track [Page 41]
2300RFC 6638 CalDAV Scheduling June 2012
23036.3. Aggregation of Scheduling Privileges
2305 Server implementations MUST aggregate the scheduling privileges as
2308 DAV:all contains CALDAV:schedule-deliver and CALDAV:schedule-send;
2310 CALDAV:schedule-deliver contains CALDAV:schedule-deliver-invite,
2311 CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-freebusy;
2313 CALDAV:schedule-send contains CALDAV:schedule-send-invite, CALDAV:
2314 schedule-send-reply, and CALDAV:schedule-send-freebusy.
2316 The following diagram illustrates how scheduling privileges are
2317 aggregated according to the above requirements.
2319 [DAV:all] (aggregate)
2321 +-- [CALDAV:schedule-deliver] (aggregate)
2323 | +-- [CALDAV:schedule-deliver-invite]
2324 | +-- [CALDAV:schedule-deliver-reply]
2325 | +-- [CALDAV:schedule-query-freebusy]
2327 +-- [CALDAV:schedule-send] (aggregate)
2329 +-- [CALDAV:schedule-send-invite]
2330 +-- [CALDAV:schedule-send-reply]
2331 +-- [CALDAV:schedule-send-freebusy]
23337. Additional iCalendar Property Parameters
2335 This specification defines additional iCalendar property parameters
2336 to support the CalDAV scheduling extensions.
23387.1. Schedule Agent Parameter
2340 Parameter Name: SCHEDULE-AGENT
2342 Purpose: To specify the agent expected to deliver scheduling
2343 messages to the corresponding "Organizer" or "Attendee".
2354Daboo & Desruisseaux Standards Track [Page 42]
2356RFC 6638 CalDAV Scheduling June 2012
2359 Format Definition: This property parameter is defined by the
2362 scheduleagentparam = "SCHEDULE-AGENT" "="
2363 ("SERVER" ; The server handles scheduling
2364 / "CLIENT" ; The client handles scheduling
2365 / "NONE" ; No scheduling
2366 / x-name ; Experimental type
2367 / iana-token) ; Other IANA-registered type
2369 ; If the parameter is not present, its value defaults to SERVER.
2370 ; "x-name" and "iana-token" are defined in Section 3.1 of
2373 Description: This property parameter MAY be specified on "ORGANIZER"
2374 or "ATTENDEE" iCalendar properties. In the absence of this
2375 parameter, the value "SERVER" MUST be used for the default
2376 behavior. The value determines whether or not a scheduling
2377 operation on a server will cause a scheduling message to be sent
2378 to the corresponding calendar user identified by the "ORGANIZER"
2379 or "ATTENDEE" property value. When the value "SERVER" is
2380 specified, or the parameter is absent, then it is the server's
2381 responsibility to send a scheduling message as part of a
2382 scheduling operation. When the value "CLIENT" is specified, that
2383 indicates that the client is handling scheduling messages with the
2384 calendar user itself. When "NONE" is specified, no scheduling
2385 messages are being sent to the calendar user.
2387 Servers MUST NOT include this parameter in any scheduling messages
2388 sent as the result of a scheduling operation.
2390 Clients MUST NOT include this parameter in any scheduling messages
2391 that they themselves send.
2393 The parameter value MUST be the same on every "ORGANIZER" property
2394 in a scheduling object resource.
2396 The parameter value MUST be the same on each "ATTENDEE" property
2397 whose values match in a scheduling object resource.
2399 Servers and clients MUST treat x-name and iana-token values they
2400 do not recognize the same way as they would the "NONE" value.
2404 ORGANIZER;SCHEDULE-AGENT=SERVER:mailto:bernard@example.com
2405 ATTENDEE;SCHEDULE-AGENT=NONE:mailto:cyrus@example.com
2410Daboo & Desruisseaux Standards Track [Page 43]
2412RFC 6638 CalDAV Scheduling June 2012
24157.2. Schedule Force Send Parameter
2417 Parameter Name: SCHEDULE-FORCE-SEND
2419 Purpose: To force a scheduling message to be sent to the calendar
2420 user specified by the property.
2422 Format Definition: This property parameter is defined by the
2425 scheduleforcesendparam = "SCHEDULE-FORCE-SEND" "="
2426 ("REQUEST" ; Force a "REQUEST"
2427 / "REPLY" ; Force a "REPLY"
2430 ; "iana-token" is defined in Section 3.1 of [RFC5545]. Its value
2431 ; MUST be an IANA-registered iCalendar "METHOD" property value.
2433 Description: This property parameter MAY be specified on "ATTENDEE"
2434 and "ORGANIZER" properties on which the "SCHEDULE-AGENT" property
2435 parameter is set to the value "SERVER" or is not specified. This
2436 property parameter is used to force a server to send a scheduling
2437 message to a specific calendar user in situations where the server
2438 would not send a scheduling message otherwise (e.g., when no
2439 change that warrants the delivery of a new scheduling message was
2440 performed on the scheduling object resource). An "Organizer" MAY
2441 specify this parameter on an "ATTENDEE" property with the value
2442 "REQUEST" to force a "REQUEST" scheduling message to be sent to
2443 this "Attendee". An "Attendee" MAY specify this parameter on the
2444 "ORGANIZER" with the value "REPLY" to force a "REPLY" scheduling
2445 message to be sent to the "Organizer".
2447 Servers MUST NOT preserve this property parameter in scheduling
2448 object resources, nor include it in any scheduling messages sent
2449 as the result of a scheduling operation.
2451 Clients MUST NOT include this parameter in any scheduling messages
2452 that they themselves send.
2454 Servers MUST set the "SCHEDULE-STATUS" parameter of the "ATTENDEE"
2455 or "ORGANIZER" to 2.3 (i.e., "Success; invalid property parameter
2456 ignored"; see Section 3.6 of [RFC5546]) when the "SCHEDULE-FORCE-
2457 SEND" parameter is set to an iana-token value they do not
2466Daboo & Desruisseaux Standards Track [Page 44]
2468RFC 6638 CalDAV Scheduling June 2012
2473 ORGANIZER;SCHEDULE-FORCE-SEND=REPLY:mailto:cyrus@example.com
2474 ATTENDEE;SCHEDULE-FORCE-SEND=REQUEST:mailto:bernard@example.com
24767.3. Schedule Status Parameter
2478 Parameter Name: SCHEDULE-STATUS
2480 Purpose: To specify the status codes returned from processing of the
2481 most recent scheduling message sent to the corresponding
2482 "Attendee", or received from the corresponding "Organizer".
2484 Format Definition: This property parameter is defined by the
2487 schedulestatusparam = "SCHEDULE-STATUS" "="
2489 / DQUOTE statcode *("," statcode) DQUOTE)
2491 ; "statcode" is defined in Section 3.8.8.3 of [RFC5545]. The
2492 ; value is a single "statcode" or a comma-separated list of
2493 ; "statcode" values.
2495 Description: This property parameter MAY be specified on the
2496 "ATTENDEE" and "ORGANIZER" properties.
2498 Servers MUST only add or change this property parameter on any
2499 "ATTENDEE" properties corresponding to calendar users who were
2500 sent a scheduling message via a scheduling operation. Clients
2501 SHOULD NOT change or remove this parameter if it was provided by
2502 the server. In the case where the client is handling the
2503 scheduling, the client MAY add, change, or remove this parameter
2504 to indicate the last scheduling message status it received.
2506 Servers MUST add this parameter to any "ORGANIZER" properties
2507 corresponding to calendar users who were sent a scheduling message
2508 reply by an "Attendee" via a scheduling operation. Clients SHOULD
2509 NOT change or remove this parameter if it was provided by the
2510 server. In the case where the client is handling the scheduling,
2511 the client MAY add, change, or remove this parameter to indicate
2512 the last scheduling message status it received.
2514 Servers MUST NOT include this parameter in any scheduling messages
2515 sent as the result of a scheduling operation.
2517 Clients MUST NOT include this parameter in any scheduling messages
2518 that they themselves send.
2522Daboo & Desruisseaux Standards Track [Page 45]
2524RFC 6638 CalDAV Scheduling June 2012
2527 Values for this property parameter are described in Section 3.2.9.
2531 ATTENDEE;SCHEDULE-STATUS="2.0":mailto:bernard@example.com
2532 ATTENDEE;SCHEDULE-STATUS="2.0,2.4":mailto:cyrus@example.com
25348. Additional Message Header Fields
2536 This specification defines additional HTTP request and response
2537 headers for use with CalDAV.
25398.1. Schedule-Reply Request Header
2541 Schedule-Reply = "Schedule-Reply" ":" ("T" | "F")
2547 When an "Attendee" removes a scheduling object resource as per
2548 Section 3.2.2.4, and the Schedule-Reply header is set to the value
2549 "T" (true) or is not present, the server MUST send an appropriate
2550 reply scheduling message with the "Attendee's" "PARTSTAT" iCalendar
2551 property parameter value set to "DECLINED" as part of its normal
2552 scheduling operation processing.
2554 When the Schedule-Reply header is set to the value "F" (false), the
2555 server MUST NOT send a scheduling message as part of its normal
2556 scheduling operation processing.
2558 The Schedule-Reply request header is used by a client to indicate to
2559 a server whether or not a scheduling operation ought to occur when an
2560 "Attendee" deletes a scheduling object resource. In particular, it
2561 controls whether a reply scheduling message is sent to the
2562 "Organizer" as a result of the removal. There are situations in
2563 which unsolicited scheduling messages need to be silently removed (or
2564 ignored) for security or privacy reasons. This request header allows
2565 the scheduling object resource to be removed if such a need arises.
25678.2. Schedule-Tag Response Header
2569 The Schedule-Tag response header provides the current value of the
2570 CALDAV:schedule-tag property value. The behavior of this response
2571 header is described in Section 3.2.10.
2573 All scheduling object resources MUST support the Schedule-Tag header.
2578Daboo & Desruisseaux Standards Track [Page 46]
2580RFC 6638 CalDAV Scheduling June 2012
2583 Schedule-Tag = "Schedule-Tag" ":" opaque-tag
2584 ; "opaque-tag" is defined in Section 3.11 of [RFC2616].
2588 Schedule-Tag: "12ab34-cd56ef"
25908.3. If-Schedule-Tag-Match Request Header
2592 The If-Schedule-Tag-Match request header field is used with a method
2593 to make it conditional. Clients can set this header to the value
2594 returned in the Schedule-Tag response header, or the CALDAV:schedule-
2595 tag property, of a scheduling object resource previously retrieved
2596 from the server to avoid overwriting "consequential" changes to the
2597 scheduling object resource.
2599 All scheduling object resources MUST support the If-Schedule-Tag-
2602 If-Schedule-Tag-Match = "If-Schedule-Tag-Match" ":" opaque-tag
2603 ; "opaque-tag" is defined in Section 3.11 of [RFC2616].
2607 If-Schedule-Tag-Match: "12ab34-cd56ef"
26099. Additional WebDAV Properties
2611 This specification defines the following new WebDAV properties for
26149.1. CALDAV:schedule-calendar-transp Property
2616 Name: schedule-calendar-transp
2618 Namespace: urn:ietf:params:xml:ns:caldav
2620 Purpose: Determines whether the calendar object resources in a
2621 calendar collection will affect the owner's busy time information.
2623 Protected: This property MAY be protected and SHOULD NOT be returned
2624 by a PROPFIND DAV:allprop request (as defined in Section 14.2 of
2627 COPY/MOVE behavior: This property value SHOULD be kept during a MOVE
2628 operation, and SHOULD be copied and preserved in a COPY.
2634Daboo & Desruisseaux Standards Track [Page 47]
2636RFC 6638 CalDAV Scheduling June 2012
2639 Description: This property SHOULD be defined on all calendar
2640 collections. If present, it contains one of two XML elements that
2641 indicate whether the calendar object resources in the calendar
2642 collection ought to contribute to the owner's busy time. When the
2643 CALDAV:opaque element is used, all calendar object resources in
2644 the corresponding calendar collection MUST contribute to busy
2645 time, assuming that access privileges and other iCalendar
2646 properties allow it to. When the CALDAV:transparent XML element
2647 is used, the calendar object resources in the corresponding
2648 calendar collection MUST NOT contribute to busy time.
2650 If this property is not present on a calendar collection, then the
2651 default value CALDAV:opaque MUST be assumed.
2655 <!ELEMENT schedule-calendar-transp (opaque | transparent)>
2657 <!ELEMENT opaque EMPTY>
2658 <!-- Affects busy time searches -->
2660 <!ELEMENT transparent EMPTY>
2661 <!-- Invisible to busy time searches -->
2665 <C:schedule-calendar-transp
2666 xmlns:C="urn:ietf:params:xml:ns:caldav">
2668 </C:schedule-calendar-transp>
26709.2. CALDAV:schedule-default-calendar-URL Property
2672 Name: schedule-default-calendar-URL
2674 Namespace: urn:ietf:params:xml:ns:caldav
2676 Purpose: Specifies a default calendar for an "Attendee" where new
2677 scheduling object resources are created.
2679 Protected: This property MAY be protected in the case where a server
2680 does not support changing the default calendar, or does not
2681 support a default calendar.
2683 COPY/MOVE behavior: This property is only defined on a scheduling
2684 Inbox collection that cannot be moved or copied.
2690Daboo & Desruisseaux Standards Track [Page 48]
2692RFC 6638 CalDAV Scheduling June 2012
2695 Description: This property MAY be defined on a scheduling Inbox
2696 collection. If present, it contains zero or one DAV:href XML
2697 elements. When a DAV:href element is present, its value indicates
2698 a URL to a calendar collection that is used as the default
2699 calendar. When no DAV:href element is present, it indicates that
2700 there is no default calendar. In the absence of this property,
2701 there is no default calendar. When there is no default calendar,
2702 the server is free to choose the calendar in which a new
2703 scheduling object resource is created. See Section 4.3.
2707 <!ELEMENT schedule-default-calendar-URL (DAV:href?)>
2711 <C:schedule-default-calendar-URL xmlns:D="DAV:"
2712 xmlns:C="urn:ietf:params:xml:ns:caldav">
2713 <D:href>/home/cyrus/calendars/work/</D:href>
2714 </C:schedule-default-calendar-URL>
27169.3. CALDAV:schedule-tag Property
2720 Namespace: urn:ietf:params:xml:ns:caldav
2722 Purpose: Indicates whether a scheduling object resource has had a
2723 "consequential" change made to it.
2725 Value: opaque-tag (defined in Section 3.11 of [RFC2616])
2727 Protected: This property MUST be protected, as only the server can
2730 COPY/MOVE behavior: This property value is determined by the server
2731 and MAY be different from the value on the source resource.
2733 Description: The CALDAV:schedule-tag property MUST be defined on all
2734 scheduling object resources. This property is described in
2739 <!ELEMENT schedule-tag (#PCDATA)>
2746Daboo & Desruisseaux Standards Track [Page 49]
2748RFC 6638 CalDAV Scheduling June 2012
2753 <C:schedule-tag xmlns:C="urn:ietf:params:xml:ns:caldav"
2754 >"12345-67890"</C:schedule-tag>
275610. XML Element Definitions
275810.1. CALDAV:schedule-response XML Element
2760 Name: schedule-response
2762 Namespace: urn:ietf:params:xml:ns:caldav
2764 Purpose: Contains the set of responses for a POST method request.
2766 Description: See Section 5.
2770 <!ELEMENT schedule-response (response*)>
277210.2. CALDAV:response XML Element
2776 Namespace: urn:ietf:params:xml:ns:caldav
2778 Purpose: Contains a single response for a POST method request.
2780 Description: See Section 5.
2784 <!ELEMENT response (recipient,
2788 DAV:responsedescription?)>
2790 <!-- CALDAV:calendar-data is defined in Section 9.6 of
2791 RFC 4791 and when used here uses the definition with
2792 content (#PCDATA) only. -->
279410.3. CALDAV:recipient XML Element
2798 Namespace: urn:ietf:params:xml:ns:caldav
2802Daboo & Desruisseaux Standards Track [Page 50]
2804RFC 6638 CalDAV Scheduling June 2012
2807 Purpose: The calendar user address that the enclosing response for a
2808 POST method request is for.
2810 Description: See Section 5.
2814 <!ELEMENT recipient (DAV:href)>
281610.4. CALDAV:request-status XML Element
2818 Name: request-status
2820 Namespace: urn:ietf:params:xml:ns:caldav
2822 Purpose: The iTIP "REQUEST-STATUS" property value for this response.
2824 Description: See Section 5.
2828 <!ELEMENT request-status (#PCDATA)>
283011. Security Considerations
2832 The process of scheduling involves the sending and receiving of
2833 scheduling messages. As a result, the security problems related to
2834 messaging in general are relevant here. In particular, the
2835 authenticity of the scheduling messages needs to be verified.
2836 Servers and clients MUST use an HTTP connection protected with
2837 Transport Layer Security (TLS) as defined in [RFC2818] for all
2838 scheduling operations. Clients MUST use the procedures detailed in
2839 Section 6 of [RFC6125] to verify the authenticity of the server.
2840 Servers MUST make use of HTTP authentication [RFC2617] to verify the
2841 authenticity of the calendar user for whom the client is sending
284411.1. Preventing Denial-of-Service Attacks
2846 Servers MUST ensure that clients cannot consume excessive server
2847 resources by carrying out "large" scheduling operations. In
2848 particular, servers SHOULD enforce CALDAV:max-resource-size, CALDAV:
2849 max-instances, and CALDAV:max-attendees-per-instance preconditions as
2850 applicable for scheduling Inbox and Outbox collections.
2858Daboo & Desruisseaux Standards Track [Page 51]
2860RFC 6638 CalDAV Scheduling June 2012
286311.2. Verifying Scheduling Operations
2865 When handling a scheduling operation:
2867 1. Servers MUST verify that the principal associated with the DAV:
2868 owner of the calendar collection in which a scheduling object
2869 resource is being manipulated contains a CALDAV:schedule-outbox-
2872 2. Servers MUST verify that the currently authenticated user has the
2873 CALDAV:schedule-send privilege, or a sub-privilege aggregated
2874 under this privilege, on the scheduling Outbox collection of the
2875 DAV:owner of the calendar collection in which a scheduling object
2876 resource is being manipulated.
2878 3. Servers MUST only deliver scheduling messages to recipients when
2879 the CALDAV:schedule-deliver privilege, or a sub-privilege
2880 aggregated under this privilege, is granted on the recipient's
2881 scheduling Inbox collection for the principal associated with the
2882 DAV:owner of the calendar collection in which a scheduling object
2883 resource is being manipulated.
2885 4. To prevent impersonation of calendar users, the server MUST
2886 verify that the "ORGANIZER" property in an organizer scheduling
2887 object resource matches one of the calendar user addresses of the
2888 DAV:owner of the calendar collection in which the resource is
2891 5. To prevent spoofing of an existing scheduling object resource,
2892 servers MUST verify that the "UID" iCalendar property value in a
2893 new scheduling object resource does not match that of an existing
2894 scheduling object resource with a different "ORGANIZER" property
289711.3. Verifying Busy Time Information Requests
2899 When handling a POST request on a scheduling Outbox collection:
2901 1. Servers MUST verify that the principal associated with the
2902 calendar user address specified in the "ORGANIZER" property of
2903 the scheduling message data in the request contains a CALDAV:
2904 schedule-outbox-URL property value that matches the scheduling
2905 Outbox collection targeted by the request.
2907 2. Servers MUST verify that the currently authenticated user has the
2908 CALDAV:schedule-send privilege, or a sub-privilege aggregated
2909 under this privilege, on the scheduling Outbox collection
2910 targeted by the request.
2914Daboo & Desruisseaux Standards Track [Page 52]
2916RFC 6638 CalDAV Scheduling June 2012
2919 3. Servers MUST only return valid freebusy information for
2920 recipients when the CALDAV:schedule-deliver privilege, or a
2921 sub-privilege aggregated under this privilege, is granted on the
2922 recipient's scheduling Inbox collection for the principal
2923 associated with the DAV:owner of the scheduling Outbox collection
2924 targeted by the request.
2928 This specification only defines how calendar users on the same server
2929 are able to schedule with each other -- unauthenticated users have no
2930 way to carry out scheduling operations. Access control privileges
2931 (as per Section 6) can control which of those users can schedule with
2932 others. Calendar users not wishing to expose their calendar
2933 information to other users can do so by denying privileges to
2934 specific users, or all users, for all scheduling operations, or
2935 perhaps only freebusy.
2937 "Attendees" can also use the Schedule-Reply request header
2938 (Section 8.1) with the value set to "F" to prevent notification to an
2939 "Organizer" that a scheduling object resource was deleted. This
2940 allows "Attendees" to remove unwanted scheduling messages without any
2941 response to the "Organizer".
2943 Servers MUST NOT expose any private iCalendar data, or WebDAV
2944 resource state information (URLs, WebDAV properties, etc.) for one
2945 calendar user to another via scheduling messages or error responses
2946 to scheduling operations. In particular, as per Section 8.1 of
2947 [RFC4918], authorization errors MUST take preference over other
295011.5. Mitigation of iTIP Threats
2952 Section 6.1 of iTIP [RFC5546] defines a set of potential threats in a
2953 scheduling system, and Section 6.2 of [RFC5546] defines
2954 recommendations on how those can be addressed in protocols using
2955 iTIP. This specification addresses the iTIP threats in the following
2958 Spoofing the "Organizer": Addressed by item 4 in Section 11.2.
2960 Spoofing the "Attendee": Addressed by Section 3.2.2.1 and item 2 in
2963 Unauthorized Replacement of the "Organizer": Addressed by item 5 in
2966 Eavesdropping and Data Integrity: Addressed by requiring TLS.
2970Daboo & Desruisseaux Standards Track [Page 53]
2972RFC 6638 CalDAV Scheduling June 2012
2975 Flooding a Calendar: Addressed by requirements in Section 11.1.
2977 Unauthorized REFRESH Requests: This specification does not support
298012. IANA Considerations
298212.1. Message Header Field Registrations
2984 The message header fields below have been added to the Permanent
2985 Message Header Field Registry (see [RFC3864]).
298712.1.1. Schedule-Reply
2989 Header field name: Schedule-Reply
2991 Applicable protocol: http
2995 Author/Change controller: IETF
2997 Specification document(s): this specification (Section 8.1)
2999 Related information: none
3003 Header field name: Schedule-Tag
3005 Applicable protocol: http
3009 Author/Change controller: IETF
3011 Specification document(s): this specification (Section 8.2)
3013 Related information: none
301512.1.3. If-Schedule-Tag-Match
3017 Header field name: If-Schedule-Tag-Match
3019 Applicable protocol: http
3026Daboo & Desruisseaux Standards Track [Page 54]
3028RFC 6638 CalDAV Scheduling June 2012
3031 Author/Change controller: IETF
3033 Specification document(s): this specification (Section 8.3)
3035 Related information: none
303712.2. iCalendar Property Parameter Registrations
3039 The following iCalendar property parameter names have been added to
3040 the iCalendar Parameters Registry defined in Section 8.3.3 of
3043 +---------------------+---------+-----------------------+
3044 | Parameter | Status | Reference |
3045 +---------------------+---------+-----------------------+
3046 | SCHEDULE-AGENT | Current | RFC 6638, Section 7.1 |
3048 | SCHEDULE-STATUS | Current | RFC 6638, Section 7.3 |
3050 | SCHEDULE-FORCE-SEND | Current | RFC 6638, Section 7.2 |
3051 +---------------------+---------+-----------------------+
305312.3. iCalendar REQUEST-STATUS Value Registrations
3055 The following iCalendar "REQUEST-STATUS" values have been added to
3056 the iCalendar REQUEST-STATUS Value Registry defined in Section 7.3 of
3059 +-------------+---------+---------------------------+
3060 | Status Code | Status | Reference |
3061 +-------------+---------+---------------------------+
3062 | 1.0 | Current | RFC 6638, Section 3.2.9.1 |
3064 | 1.1 | Current | RFC 6638, Section 3.2.9.2 |
3066 | 1.2 | Current | RFC 6638, Section 3.2.9.3 |
3067 +-------------+---------+---------------------------+
306912.4. Additional iCalendar Elements Registries
3071 Per this specification, two new IANA registries for iCalendar
3072 elements have been added. Additional codes MAY be used, provided the
3073 process described in Section 8.2.1 of [RFC5545] is used to register
3082Daboo & Desruisseaux Standards Track [Page 55]
3084RFC 6638 CalDAV Scheduling June 2012
308712.4.1. Schedule Agent Values Registry
3089 The following table has been used to initialize the Schedule Agent
3092 +----------------+---------+-----------------------+
3093 | Schedule Agent | Status | Reference |
3094 +----------------+---------+-----------------------+
3095 | SERVER | Current | RFC 6638, Section 7.1 |
3097 | CLIENT | Current | RFC 6638, Section 7.1 |
3099 | NONE | Current | RFC 6638, Section 7.1 |
3100 +----------------+---------+-----------------------+
310212.4.2. Schedule Force Send Values Registry
3104 The following table has been used to initialize the Schedule Force
3105 Send Values Registry.
3107 +---------------------+---------+-----------------------+
3108 | Schedule Force Send | Status | Reference |
3109 +---------------------+---------+-----------------------+
3110 | REQUEST | Current | RFC 6638, Section 7.2 |
3112 | REPLY | Current | RFC 6638, Section 7.2 |
3113 +---------------------+---------+-----------------------+
3117 The authors would like to thank the following individuals for
3118 contributing their ideas and support for writing this specification:
3119 Mike Douglass, Lisa Dusseault, Red Dutta, Jacob Farkas, Jeffrey
3120 Harris, Helge Hess, Eliot Lear, Andrew McMillan, Alexey Melnikov,
3121 Arnaud Quillaud, Julian F. Reschke, Wilfredo Sanchez Vega, and Simon
3124 The authors would also like to thank the Calendaring and Scheduling
3125 Consortium for advice with this specification, and for organizing
3126 interoperability testing events to help refine it.
3138Daboo & Desruisseaux Standards Track [Page 56]
3140RFC 6638 CalDAV Scheduling June 2012
314514.1. Normative References
3147 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
3148 Requirement Levels", BCP 14, RFC 2119, March 1997.
3150 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
3151 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
3152 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
3154 [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
3155 Leach, P., Luotonen, A., and L. Stewart, "HTTP
3156 Authentication: Basic and Digest Access Authentication",
3157 RFC 2617, June 1999.
3159 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
3161 [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web
3162 Distributed Authoring and Versioning (WebDAV)
3163 Access Control Protocol", RFC 3744, May 2004.
3165 [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration
3166 Procedures for Message Header Fields", BCP 90, RFC 3864,
3169 [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
3170 "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
3173 [RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed
3174 Authoring and Versioning (WebDAV)", RFC 4918, June 2007.
3176 [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for
3177 Syntax Specifications: ABNF", STD 68, RFC 5234,
3180 [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
3181 Scheduling Core Object Specification (iCalendar)",
3182 RFC 5545, September 2009.
3184 [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent
3185 Interoperability Protocol (iTIP)", RFC 5546,
3194Daboo & Desruisseaux Standards Track [Page 57]
3196RFC 6638 CalDAV Scheduling June 2012
3199 [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and
3200 Verification of Domain-Based Application Service Identity
3201 within Internet Public Key Infrastructure Using X.509
3202 (PKIX) Certificates in the Context of Transport Layer
3203 Security (TLS)", RFC 6125, March 2011.
3205 [W3C.REC-xml-20081126]
3206 Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E.,
3207 and F. Yergeau, "Extensible Markup Language (XML) 1.0
3208 (Fifth Edition)", World Wide Web Consortium
3209 Recommendation REC-xml-20081126, November 2008,
3210 <http://www.w3.org/TR/2008/REC-xml-20081126>.
321214.2. Informative References
3214 [RFC6047] Melnikov, A., Ed., "iCalendar Message-Based
3215 Interoperability Protocol (iMIP)", RFC 6047,
3250Daboo & Desruisseaux Standards Track [Page 58]
3252RFC 6638 CalDAV Scheduling June 2012
3255Appendix A. Scheduling Privileges Summary
3257A.1. Scheduling Inbox Privileges
3259 The following tables specify which scheduling privileges grant the
3260 right to a calendar user to deliver a scheduling message to the
3261 scheduling Inbox collection of another calendar user. The
3262 appropriate behavior depends on the calendar component type as well
3263 as the scheduling "METHOD" specified in the scheduling message.
3265 +--------------------------------+
3266 | METHOD for VEVENT and VTODO |
3267 +-----------------------------+---------+-------+-----+--------+
3268 | Scheduling Inbox Privilege | REQUEST | REPLY | ADD | CANCEL |
3269 +-----------------------------+---------+-------+-----+--------+
3270 | schedule-deliver | * | * | * | * |
3271 | schedule-deliver-invite | * | | * | * |
3272 | schedule-deliver-reply | | * | | |
3273 | schedule-query-freebusy | | | | |
3274 +-----------------------------+---------+-------+-----+--------+
3277 +----------------------+
3278 | METHOD for VFREEBUSY |
3279 +-----------------------------+----------------------+
3280 | Scheduling Inbox Privilege | REQUEST |
3281 +-----------------------------+----------------------+
3282 | schedule-deliver | * |
3283 | schedule-deliver-invite | |
3284 | schedule-deliver-reply | |
3285 | schedule-query-freebusy | * |
3286 +-----------------------------+----------------------+
3306Daboo & Desruisseaux Standards Track [Page 59]
3308RFC 6638 CalDAV Scheduling June 2012
3311A.2. Scheduling Outbox Privileges
3313 The following tables specify which scheduling privileges grant the
3314 right to a calendar user to perform busy time information requests
3315 and to submit scheduling messages to other calendar users as the
3316 result of a scheduling operation. The appropriate behavior depends
3317 on the calendar component type as well as the scheduling "METHOD"
3318 specified in the scheduling message.
3320 +--------------------------------+
3321 | METHOD for VEVENT and VTODO |
3322 +-----------------------------+---------+-------+-----+--------+
3323 | Scheduling Outbox Privilege | REQUEST | REPLY | ADD | CANCEL |
3324 +-----------------------------+---------+-------+-----+--------+
3325 | schedule-send | * | * | * | * |
3326 | schedule-send-invite | * | | * | * |
3327 | schedule-send-reply | | * | | |
3328 | schedule-send-freebusy | | | | |
3329 +-----------------------------+---------+-------+-----+--------+
3332 +----------------------+
3333 | METHOD for VFREEBUSY |
3334 +-----------------------------+----------------------+
3335 | Scheduling Outbox Privilege | REQUEST |
3336 +-----------------------------+----------------------+
3337 | schedule-send | * |
3338 | schedule-send-invite | |
3339 | schedule-send-reply | |
3340 | schedule-send-freebusy | * |
3341 +-----------------------------+----------------------+
3343Appendix B. Example Scheduling Operations
3345 This section describes some example scheduling operations that give a
3346 general idea of how scheduling is carried out between CalDAV clients
3347 and servers from the perspective of meeting "Organizers" and
3350 The server is assumed to be hosted in the "example.com" domain, and
3351 users whose email addresses are at the "example.com" domain are
3352 assumed to be hosted by the server. In addition, the email addresses
3353 in the "example.net" domain are also valid email addresses for
3354 calendar users hosted by the server. Calendar users with an email
3355 address at the "example.org" domain are assumed to not be hosted by
3362Daboo & Desruisseaux Standards Track [Page 60]
3364RFC 6638 CalDAV Scheduling June 2012
3367 In the following examples, the requests and responses are incomplete
3368 and are only for illustrative purposes. In particular, HTTP
3369 authentication headers and behaviors are not shown, even though they
3370 are required in normal operation.
3372B.1. Example: "Organizer" Inviting Multiple "Attendees"
3374 In the following example, Cyrus invites Wilfredo, Bernard, and Mike
3375 to a single instance event by simply creating a new scheduling object
3376 resource in one of his calendar collections by using the PUT method.
3380 PUT /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
3381 Host: cal.example.com
3382 Content-Type: text/calendar; charset="utf-8"
3383 Content-Length: xxxx
3388 PRODID:-//Example Corp.//CalDAV Client//EN
3392 DTSTAMP:20090602T185254Z
3393 DTSTART:20090602T160000Z
3394 DTEND:20090602T170000Z
3397 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3398 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
3399 mailto:cyrus@example.com
3400 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
3401 =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
3403 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3404 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3406 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3407 CTION;RSVP=TRUE:mailto:mike@example.org
3413 HTTP/1.1 201 Created
3418Daboo & Desruisseaux Standards Track [Page 61]
3420RFC 6638 CalDAV Scheduling June 2012
3423 Date: Tue, 02 Jun 2009 18:52:54 GMT
3424 Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
3425 ETag: "d85561cfe74a4e785eb4639451b434fb"
3426 Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
3428 Once the event creation has been completed, Cyrus's client will
3429 retrieve the event back from the server to get the schedule status of
3430 each "Attendee", as well as record the Schedule-Tag value for future
3431 use. In this example, the server reports that a scheduling message
3432 was delivered to Wilfredo, a scheduling message is still pending for
3433 Bernard, and the server was unable to deliver a scheduling message to
3438 GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
3439 Host: cal.example.com
3444 Date: Tue, 02 Jun 2009 18:52:58 GMT
3445 Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
3446 ETag: "eb897deabc8939589da116714bc99265"
3447 Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
3448 Content-Type: text/calendar; charset="utf-8"
3449 Content-Length: xxxx
3453 PRODID:-//Example Corp.//CalDAV Server//EN
3457 DTSTAMP:20090602T185300Z
3458 DTSTART:20090602T160000Z
3459 DTEND:20090602T170000Z
3462 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3463 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
3464 mailto:cyrus@example.com
3465 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
3466 =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
3467 1.2:mailto:wilfredo@e
3474Daboo & Desruisseaux Standards Track [Page 62]
3476RFC 6638 CalDAV Scheduling June 2012
3479 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3480 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
3481 1.0:mailto:bernard@example.net
3482 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3483 CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
3487B.2. Example: "Attendee" Receiving an Invitation
3489 In the following example, Wilfredo's client retrieves and deletes the
3490 new scheduling message that appeared in his scheduling Inbox
3491 collection after the server automatically processed it and created a
3492 new scheduling object resource in his default calendar collection.
3496 GET /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
3497 Host: cal.example.com
3502 Date: Tue, 02 Jun 2009 18:59:58 GMT
3503 Last-Modified: Tue, 02 Jun 2009 18:59:58 GMT
3504 ETag: "da116714bc9926c89395895eb897deab"
3505 Content-Type: text/calendar; charset="utf-8"
3506 Content-Length: xxxx
3510 PRODID:-//Example Corp.//CalDAV Server//EN
3515 DTSTAMP:20090602T185254Z
3516 DTSTART:20090602T160000Z
3517 DTEND:20090602T170000Z
3520 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3521 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
3522 mailto:cyrus@example.com
3523 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
3524 =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
3530Daboo & Desruisseaux Standards Track [Page 63]
3532RFC 6638 CalDAV Scheduling June 2012
3535 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3536 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3538 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3539 CTION;RSVP=TRUE:mailto:mike@example.org
3545 DELETE /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
3546 Host: cal.example.com
3550 HTTP/1.1 204 No Content
3551 Date: Tue, 02 Jun 2009 20:40:36 GMT
3553B.3. Example: "Attendee" Replying to an Invitation
3555 In the following example, Wilfredo accepts Cyrus's invitation and
3556 sets an alarm reminder on the event. It uses the If-Schedule-Tag-
3557 Match precondition behavior to ensure it does not overwrite any
3558 significant changes from the "Organizer" that might have occurred
3559 after it retrieved the initial resource data.
3563 PUT /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
3564 Host: cal.example.com
3565 If-Schedule-Tag-Match: "e78f23ed-0188-4bab-938d-2aeb3324c7e8"
3566 Content-Type: text/calendar; charset="utf-8"
3567 Content-Length: xxxx
3571 PRODID:-//Example Corp.//CalDAV Client//EN
3575 DTSTAMP:20090602T185254Z
3576 DTSTART:20090602T160000Z
3577 DTEND:20090602T170000Z
3580 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3581 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
3582 mailto:cyrus@example.com
3586Daboo & Desruisseaux Standards Track [Page 64]
3588RFC 6638 CalDAV Scheduling June 2012
3591 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
3592 =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
3594 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3595 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3597 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3598 CTION;RSVP=TRUE:mailto:mike@example.org
3602 DESCRIPTION:Reminder
3611 Date: Tue, 02 Jun 2009 18:57:54 GMT
3612 Last-Modified: Tue, 02 Jun 2009 18:57:54 GMT
3613 ETag: "eb4639451b434fbd85561cfe74a4e785"
3614 Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
3616 Once the event modification has been completed, Wilfredo's client
3617 will retrieve the event back from the server to get the schedule
3618 status of the "Organizer".
3622 GET /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
3623 Host: cal.example.com
3628 Date: Tue, 02 Jun 2009 19:03:03 GMT
3629 Last-Modified: Tue, 02 Jun 2009 19:02:21 GMT
3630 ETag: "5eb897deabda116714bc9926c8939589"
3631 Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
3632 Content-Type: text/calendar; charset="utf-8"
3633 Content-Length: xxxx
3642Daboo & Desruisseaux Standards Track [Page 65]
3644RFC 6638 CalDAV Scheduling June 2012
3649 PRODID:-//Example Corp.//CalDAV Client//EN
3653 DTSTAMP:20090602T190221Z
3654 DTSTART:20090602T160000Z
3655 DTEND:20090602T170000Z
3658 ORGANIZER;CN="Cyrus Daboo";SCHEDULE-STATUS=1.2:mailto:cyrus@ex
3660 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
3661 mailto:cyrus@example.com
3662 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
3663 =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
3665 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3666 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3668 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3669 CTION;RSVP=TRUE:mailto:mike@example.org
3673 DESCRIPTION:Reminder
3678B.4. Example: "Organizer" Receiving a Reply to an Invitation
3680 On reception of Wilfredo's reply, Cyrus's server will automatically
3681 update Cyrus's scheduling object resource, make Wilfredo's scheduling
3682 message available in Cyrus's scheduling Inbox collection, and deliver
3683 an updated scheduling message to Bernard to share Wilfredo's updated
3684 participation status. In this example, Cyrus's client retrieves and
3685 deletes this scheduling message in his scheduling Inbox collection.
3689 GET /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
3690 Host: cal.example.com
3698Daboo & Desruisseaux Standards Track [Page 66]
3700RFC 6638 CalDAV Scheduling June 2012
3706 Date: Tue, 02 Jun 2009 19:05:02 GMT
3707 Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
3708 ETag: "9265eb897deabc8939589da116714bc9"
3709 Content-Type: text/calendar; charset="utf-8"
3710 Content-Length: xxxx
3714 PRODID:-//Example Corp.//CalDAV Server//EN
3719 DTSTAMP:20090602T185754Z
3720 DTSTART:20090602T160000Z
3721 DTEND:20090602T170000Z
3722 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3723 ATTENDEE;CN="Wilfredo Sanchez Vega";PARTSTAT=ACCEPTED:mailto:w
3725 REQUEST-STATUS:2.0;Success
3731 DELETE /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
3732 Host: cal.example.com
3736 HTTP/1.1 204 No Content
3737 Date: Tue, 02 Jun 2009 19:05:05 GMT
3739 Cyrus's client then retrieves the event back from the server with
3740 Wilfredo's updated participation status.
3744 GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
3745 Host: cal.example.com
3754Daboo & Desruisseaux Standards Track [Page 67]
3756RFC 6638 CalDAV Scheduling June 2012
3762 Date: Tue, 02 Jun 2009 19:05:02 GMT
3763 Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
3764 ETag: "eb897deabc8939589da116714bc99265"
3765 Schedule-Tag: "132cab27-1fe3-67ab-de13-abd348d1dee3"
3766 Content-Type: text/calendar; charset="utf-8"
3767 Content-Length: xxxx
3771 PRODID:-//Example Corp.//CalDAV Server//EN
3775 DTSTAMP:20090602T190420Z
3776 DTSTART:20090602T160000Z
3777 DTEND:20090602T170000Z
3780 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3781 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
3782 mailto:cyrus@example.com
3783 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
3784 =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=2.0:
3785 mailto:wilfredo@example.com
3786 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3787 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1
3788 .0:mailto:bernard@example.net
3789 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3790 CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
3810Daboo & Desruisseaux Standards Track [Page 68]
3812RFC 6638 CalDAV Scheduling June 2012
3815B.5. Example: "Organizer" Requesting Busy Time Information
3817 In this example, Cyrus requests the busy time information of
3818 Wilfredo, Bernard, and Mike.
3822 POST /home/cyrus/calendars/outbox/ HTTP/1.1
3823 Host: cal.example.com
3824 Content-Type: text/calendar; charset="utf-8"
3825 Content-Length: xxxx
3829 PRODID:-//Example Corp.//CalDAV Client//EN
3833 DTSTAMP:20090602T190420Z
3834 DTSTART:20090602T000000Z
3835 DTEND:20090604T000000Z
3836 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3837 ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
3838 ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
3839 ATTENDEE;CN="Mike Douglass":mailto:mike@example.org
3846 Date: Tue, 02 Jun 2009 20:07:34 GMT
3847 Content-Type: application/xml; charset="utf-8"
3848 Content-Length: xxxx
3850 <?xml version="1.0" encoding="utf-8" ?>
3851 <C:schedule-response xmlns:D="DAV:"
3852 xmlns:C="urn:ietf:params:xml:ns:caldav">
3855 <D:href>mailto:wilfredo@example.com</D:href>
3857 <C:request-status>2.0;Success</C:request-status>
3858 <C:calendar-data>BEGIN:VCALENDAR
3860 PRODID:-//Example Corp.//CalDAV Server//EN
3866Daboo & Desruisseaux Standards Track [Page 69]
3868RFC 6638 CalDAV Scheduling June 2012
3872 DTSTAMP:20090602T200733Z
3873 DTSTART:20090602T000000Z
3874 DTEND:20090604T000000Z
3875 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3876 ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
3877 FREEBUSY;FBTYPE=BUSY:20090602T110000Z/20090602T120000Z
3878 FREEBUSY;FBTYPE=BUSY:20090603T170000Z/20090603T180000Z
3885 <D:href>mailto:bernard@example.net</D:href>
3887 <C:request-status>2.0;Success</C:request-status>
3888 <C:calendar-data>BEGIN:VCALENDAR
3890 PRODID:-//Example Corp.//CalDAV Server//EN
3894 DTSTAMP:20090602T200733Z
3895 DTSTART:20090602T000000Z
3896 DTEND:20090604T000000Z
3897 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3898 ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
3899 FREEBUSY;FBTYPE=BUSY:20090602T150000Z/20090602T160000Z
3900 FREEBUSY;FBTYPE=BUSY:20090603T090000Z/20090603T100000Z
3901 FREEBUSY;FBTYPE=BUSY:20090603T180000Z/20090603T190000Z
3908 <D:href>mailto:mike@example.org</D:href>
3910 <C:request-status>3.7;Invalid calendar user</C:request-status>
3912 </C:schedule-response>
3922Daboo & Desruisseaux Standards Track [Page 70]
3924RFC 6638 CalDAV Scheduling June 2012
3927B.6. Example: User Attempting to Invite "Attendee" on Behalf of
3930 In the following example, Cyrus attempts to create, on behalf of
3931 Wilfredo, an event with Bernard specified as an "Attendee". The
3932 request fails, since Wilfredo didn't grant Cyrus the right to invite
3933 other calendar users on his behalf.
3937 PUT /home/wilfredo/calendars/work/def456.ics HTTP/1.1
3938 Host: cal.example.com
3939 Content-Type: text/calendar; charset="utf-8"
3940 Content-Length: xxxx
3945 PRODID:-//Example Corp.//CalDAV Client//EN
3949 DTSTAMP:20090602T190221Z
3950 DTSTART:20090602T230000Z
3951 DTEND:20090603T000000Z
3954 ORGANIZER;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
3955 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT=A
3956 CCEPTED:mailto:wilfredo@example.com
3957 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=NE
3958 EDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
3978Daboo & Desruisseaux Standards Track [Page 71]
3980RFC 6638 CalDAV Scheduling June 2012
3985 HTTP/1.1 403 Forbidden
3986 Content-Type: application/xml; charset="utf-8"
3987 Content-Length: xxxx
3989 <?xml version="1.0" encoding="utf-8" ?>
3990 <D:error xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
3993 <D:href>/home/wilfredo/calendars/outbox/</D:href>
3994 <D:privilege><C:schedule-send-invite/></D:privilege>
3996 </D:need-privileges>
3999B.7. Example: "Attendee" Declining an Instance of a Recurring Event
4001 In the following example, Bernard declines the second recurrence
4002 instance of a daily recurring event he's been invited to by Cyrus.
4006 PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
4007 Host: cal.example.com
4008 Content-Type: text/calendar; charset="utf-8"
4009 Content-Length: xxxx
4010 If-Schedule-Tag-Match: "7775FB30-7534-489E-A79A-0EA147B933EB"
4014 PRODID:-//Example Corp.//CalDAV Client//EN
4016 TZID:America/Montreal
4018 DTSTART:20071104T020000
4019 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4025 DTSTART:20070311T020000
4026 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4034Daboo & Desruisseaux Standards Track [Page 72]
4036RFC 6638 CalDAV Scheduling June 2012
4043 DTSTAMP:20090602T185254Z
4044 DTSTART;TZID=America/Montreal:20090601T150000
4045 DTEND;TZID=America/Montreal:20090601T160000
4046 RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
4048 SUMMARY:Review Internet-Draft
4049 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4050 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4051 mailto:cyrus@example.com
4052 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4053 ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
4059 DTSTAMP:20090603T183823Z
4060 RECURRENCE-ID;TZID=America/Montreal:20090602T150000
4061 DTSTART;TZID=America/Montreal:20090602T150000
4062 DTEND;TZID=America/Montreal:20090602T160000
4064 SUMMARY:Review Internet-Draft
4065 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4066 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4067 mailto:cyrus@example.com
4068 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4069 DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
4078 Date: Tue, 02 Jun 2009 18:52:54 GMT
4079 Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
4080 ETag: "d85561cfe74a4e785eb4639451b434fb"
4081 Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
4090Daboo & Desruisseaux Standards Track [Page 73]
4092RFC 6638 CalDAV Scheduling June 2012
4095 Bernard's participation status update will cause his server to
4096 deliver a scheduling message to Cyrus. Cyrus's client will find the
4097 following reply message from Bernard in Cyrus's scheduling Inbox
4102 GET /home/cyrus/calendars/inbox/9263504FD3AD.ics HTTP/1.1
4103 Host: cal.example.com
4108 Date: Tue, 02 Jun 2009 18:52:58 GMT
4109 Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
4110 ETag: "eb897deabc8939589da116714bc99265"
4111 Content-Type: text/calendar; charset="utf-8"
4112 Content-Length: xxxx
4116 PRODID:-//Example Corp.//CalDAV Client//EN
4119 TZID:America/Montreal
4121 DTSTART:20071104T020000
4122 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4128 DTSTART:20070311T020000
4129 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4138 DTSTAMP:20090603T183823Z
4139 RECURRENCE-ID;TZID=America/Montreal:20090602T150000
4140 DTSTART;TZID=America/Montreal:20090602T150000
4141 DTEND;TZID=America/Montreal:20090602T160000
4142 SUMMARY:Review Internet-Draft
4146Daboo & Desruisseaux Standards Track [Page 74]
4148RFC 6638 CalDAV Scheduling June 2012
4151 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4152 ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
4153 mailto:bernard@example.net
4154 REQUEST-STATUS:2.0;Success
4158B.8. Example: "Attendee" Removing an Instance of a Recurring Event
4160 In the following example, Bernard removes from his calendar the third
4161 recurrence instance of a daily recurring event he's been invited to
4162 by Cyrus. This is accomplished by the addition of an "EXDATE"
4163 property to the scheduling object resource stored by Bernard.
4167 PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
4168 Host: cal.example.com
4169 Content-Type: text/calendar; charset="utf-8"
4170 Content-Length: xxxx
4171 If-Schedule-Tag-Match: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
4175 PRODID:-//Example Corp.//CalDAV Client//EN
4177 TZID:America/Montreal
4179 DTSTART:20071104T020000
4180 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4186 DTSTART:20070311T020000
4187 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4196 DTSTAMP:20090602T185254Z
4197 DTSTART;TZID=America/Montreal:20090601T150000
4198 DTEND;TZID=America/Montreal:20090601T160000
4202Daboo & Desruisseaux Standards Track [Page 75]
4204RFC 6638 CalDAV Scheduling June 2012
4207 RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
4208 EXDATE;TZID=America/Montreal:20090603T150000
4210 SUMMARY:Review Internet-Draft
4211 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4212 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4213 mailto:cyrus@example.com
4214 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4215 ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
4221 DTSTAMP:20090603T183823Z
4222 RECURRENCE-ID;TZID=America/Montreal:20090602T150000
4223 DTSTART;TZID=America/Montreal:20090602T150000
4224 DTEND;TZID=America/Montreal:20090602T160000
4226 SUMMARY:Review Internet-Draft
4227 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4228 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4229 mailto:cyrus@example.com
4230 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4231 DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
4236 Bernard's deletion of a recurrence instance will cause his server to
4237 deliver a scheduling message to Cyrus. Cyrus's client will find the
4238 following reply message from Bernard in Cyrus's scheduling Inbox
4243 GET /home/cyrus/calendars/inbox/6504923FD3AD.ics HTTP/1.1
4244 Host: cal.example.com
4249 Date: Tue, 02 Jun 2009 18:52:58 GMT
4250 Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
4251 ETag: "eb897deabc8939589da116714bc99265"
4252 Content-Type: text/calendar; charset="utf-8"
4253 Content-Length: xxxx
4258Daboo & Desruisseaux Standards Track [Page 76]
4260RFC 6638 CalDAV Scheduling June 2012
4265 PRODID:-//Example Corp.//CalDAV Client//EN
4268 TZID:America/Montreal
4270 DTSTART:20071104T020000
4271 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4277 DTSTART:20070311T020000
4278 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4287 DTSTAMP:20090603T183823Z
4288 RECURRENCE-ID;TZID=America/Montreal:20090603T150000
4289 DTSTART;TZID=America/Montreal:20090603T150000
4290 DTEND;TZID=America/Montreal:20090603T160000
4291 SUMMARY:Review Internet-Draft
4292 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4293 ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
4294 mailto:bernard@example.net
4295 REQUEST-STATUS:2.0;Success
4314Daboo & Desruisseaux Standards Track [Page 77]
4316RFC 6638 CalDAV Scheduling June 2012
4327 EMail: cyrus@daboo.name
4328 URI: http://www.apple.com/
4331 Bernard Desruisseaux
4333 600 Blvd. de Maisonneuve West
4335 Montreal, QC H3A 3J2
4338 EMail: bernard.desruisseaux@oracle.com
4339 URI: http://www.oracle.com/
4370Daboo & Desruisseaux Standards Track [Page 78]