1
2
3
4
5
6
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
12
13
14 Scheduling Extensions to CalDAV
15
16Abstract
17
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"
22 feature of CalDAV.
23
24Status of This Memo
25
26 This is an Internet Standards Track document.
27
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.
33
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.
37
38Copyright Notice
39
40 Copyright (c) 2012 IETF Trust and the persons identified as the
41 document authors. All rights reserved.
42
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.
52
53
54
55
56
57
58Daboo & Desruisseaux Standards Track [Page 1]
59
60RFC 6638 CalDAV Scheduling June 2012
61
62
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
73 than English.
74
75Table of Contents
76
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
107
108
109
110
111
112
113
114Daboo & Desruisseaux Standards Track [Page 2]
115
116RFC 6638 CalDAV Scheduling June 2012
117
118
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
164
165
166
167
168
169
170Daboo & Desruisseaux Standards Track [Page 3]
171
172RFC 6638 CalDAV Scheduling June 2012
173
174
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
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226Daboo & Desruisseaux Standards Track [Page 4]
227
228RFC 6638 CalDAV Scheduling June 2012
229
230
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
246
2471. Introduction
248
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.
252
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.
263
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".
271
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]).
278
279
280
281
282Daboo & Desruisseaux Standards Track [Page 5]
283
284RFC 6638 CalDAV Scheduling June 2012
285
286
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.
293
294 Section 4 defines how the server processes scheduling messages sent
295 as the result of a scheduling operation.
296
297 Section 5 defines how freebusy requests with an immediate response
298 are accomplished.
299
300 Section 6 defines access control privileges for the scheduling
301 operations defined in this specification.
302
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.
306
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.
313
3141.1. Terminology
315
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:
319
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
323 collection.
324
325 Organizer scheduling object resource: A scheduling object resource
326 owned by the "Organizer".
327
328 Attendee scheduling object resource: A scheduling object resource
329 owned by an "Attendee".
330
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.
334
335
336
337
338Daboo & Desruisseaux Standards Track [Page 6]
339
340RFC 6638 CalDAV Scheduling June 2012
341
342
343 Scheduling message: A calendar object that describes a scheduling
344 operation such as schedule, reschedule, reply, or cancel.
345
346 Scheduling Outbox collection: A resource at which busy time
347 information requests are targeted.
348
349 Scheduling Inbox collection: A collection in which incoming
350 scheduling messages are delivered.
351
3521.2. Notational Conventions
353
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].
357
358 The Augmented BNF (ABNF) syntax used by this document to specify the
359 format definition of new iCalendar elements is defined in [RFC5234].
360
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.
366
367 The term "protected" is used in the Conformance field of WebDAV
368 property definitions as defined in Section 15 of [RFC4918].
369
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].
374
3751.3. XML Namespaces and Processing
376
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,
383
384 1. element names use the "DAV:" namespace,
385
386 2. element ordering is irrelevant unless explicitly stated,
387
388
389
390
391
392
393
394Daboo & Desruisseaux Standards Track [Page 7]
395
396RFC 6638 CalDAV Scheduling June 2012
397
398
399 3. extension elements (elements not already defined as valid child
400 elements) can be added anywhere, except when explicitly stated
401 otherwise, and
402
403 4. extension attributes (attributes not already defined as valid for
404 this element) can be added anywhere, except when explicitly
405 stated otherwise.
406
407 The XML elements specified in this document are defined in the
408 "urn:ietf:params:xml:ns:caldav" XML namespace registered by CalDAV
409 [RFC4791].
410
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.
415
416 This document inherits, and sometimes extends, DTD productions from
417 Section 14 of [RFC4918].
418
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.
422
4232. Scheduling Support
424
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.
430
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.
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450Daboo & Desruisseaux Standards Track [Page 8]
451
452RFC 6638 CalDAV Scheduling June 2012
453
454
4552.1. Scheduling Outbox Collection
456
457 A scheduling Outbox collection is used as the target for busy time
458 information requests, and to manage privileges that apply to outgoing
459 scheduling requests.
460
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:
464 schedule-outbox is
465
466 <!ELEMENT schedule-outbox EMPTY>
467
468 Example:
469
470 <D:resourcetype xmlns:D="DAV:">
471 <D:collection/>
472 <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
473 </D:resourcetype>
474
475 A scheduling Outbox collection MUST NOT be a child (at any depth) of
476 a calendar collection resource.
477
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:
482
483 o CALDAV:supported-calendar-component-set
484
485 o CALDAV:supported-calendar-data
486
487 o CALDAV:max-resource-size
488
489 o CALDAV:min-date-time
490
491 o CALDAV:max-date-time
492
493 o CALDAV:max-attendees-per-instance
494
495 The use of child resources in a scheduling Outbox collection is
496 reserved for future revisions or extensions of this specification.
497
498 The following WebDAV property is defined on principal resources and
499 used to locate the corresponding Outbox collection for the associated
500 principal.
501
502
503
504
505
506Daboo & Desruisseaux Standards Track [Page 9]
507
508RFC 6638 CalDAV Scheduling June 2012
509
510
5112.1.1. CALDAV:schedule-outbox-URL Property
512
513 Name: schedule-outbox-URL
514
515 Namespace: urn:ietf:params:xml:ns:caldav
516
517 Purpose: Identify the URL of the scheduling Outbox collection owned
518 by the associated principal resource.
519
520 Protected: This property MAY be protected.
521
522 PROPFIND behavior: This property SHOULD NOT be returned by a
523 PROPFIND DAV:allprop request (as defined in Section 14.2 of
524 [RFC4918]).
525
526 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
527 and MOVE operations.
528
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.
534
535 Definition:
536
537 <!ELEMENT schedule-outbox-URL (DAV:href)>
538
5392.2. Scheduling Inbox Collection
540
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.
545
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:
549 schedule-inbox is
550
551 <!ELEMENT schedule-inbox EMPTY>
552
553 Example:
554
555 <D:resourcetype xmlns:D="DAV:">
556 <D:collection/>
557 <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
558 </D:resourcetype>
559
560
561
562Daboo & Desruisseaux Standards Track [Page 10]
563
564RFC 6638 CalDAV Scheduling June 2012
565
566
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).
578
579 A scheduling Inbox collection MUST NOT be a child (at any depth) of a
580 calendar collection resource.
581
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:
585
586 o CALDAV:supported-calendar-component-set
587
588 o CALDAV:supported-calendar-data
589
590 o CALDAV:max-resource-size
591
592 o CALDAV:min-date-time
593
594 o CALDAV:max-date-time
595
596 o CALDAV:max-instances
597
598 o CALDAV:max-attendees-per-instance
599
600 o CALDAV:calendar-timezone
601
602 The following WebDAV property is defined on principal resources and
603 used to locate the corresponding Inbox collection for the associated
604 principal.
605
6062.2.1. CALDAV:schedule-inbox-URL Property
607
608 Name: schedule-inbox-URL
609
610 Namespace: urn:ietf:params:xml:ns:caldav
611
612 Purpose: Identify the URL of the scheduling Inbox collection owned
613 by the associated principal resource.
614
615
616
617
618Daboo & Desruisseaux Standards Track [Page 11]
619
620RFC 6638 CalDAV Scheduling June 2012
621
622
623 Protected: This property MAY be protected.
624
625 PROPFIND behavior: This property SHOULD NOT be returned by a
626 PROPFIND DAV:allprop request (as defined in Section 14.2 of
627 [RFC4918]).
628
629 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
630 and MOVE operations.
631
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.
637
638 Definition:
639
640 <!ELEMENT schedule-inbox-URL (DAV:href)>
641
6422.3. Calendaring Reports Extensions
643
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.
647
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.
653
654 Note that the CALDAV:free-busy-query REPORT is not supported on
655 scheduling Inbox collections.
656
6572.4. Additional Principal Properties
658
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.
662
6632.4.1. CALDAV:calendar-user-address-set Property
664
665 Name: calendar-user-address-set
666
667 Namespace: urn:ietf:params:xml:ns:caldav
668
669 Purpose: Identify the calendar addresses of the associated principal
670 resource.
671
672
673
674Daboo & Desruisseaux Standards Track [Page 12]
675
676RFC 6638 CalDAV Scheduling June 2012
677
678
679 Protected: This property MAY be protected.
680
681 PROPFIND behavior: This property SHOULD NOT be returned by a
682 PROPFIND DAV:allprop request (as defined in Section 14.2 of
683 [RFC4918]).
684
685 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
686 and MOVE operations.
687
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.
698
699 Definition:
700
701 <!ELEMENT calendar-user-address-set (DAV:href*)>
702
703 Example:
704
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>
710
7112.4.2. CALDAV:calendar-user-type Property
712
713 Name: calendar-user-type
714
715 Namespace: urn:ietf:params:xml:ns:caldav
716
717 Purpose: Identifies the calendar user type of the associated
718 principal resource.
719
720 Value: Same values allowed for the iCalendar "CUTYPE" property
721 parameter defined in Section 3.2.3 of [RFC5545].
722
723 Protected: This property MAY be protected.
724
725
726
727
728
729
730Daboo & Desruisseaux Standards Track [Page 13]
731
732RFC 6638 CalDAV Scheduling June 2012
733
734
735 PROPFIND behavior: This property SHOULD NOT be returned by a
736 PROPFIND DAV:allprop request (as defined in Section 14.2 of
737 [RFC4918]).
738
739 COPY/MOVE behavior: This property value SHOULD be preserved in COPY
740 and MOVE operations.
741
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.
753
754 Definition:
755
756 <!ELEMENT calendar-user-type (#PCDATA)>
757
758 Example:
759
760 <C:calendar-user-type
761 xmlns:C="urn:ietf:params:xml:ns:caldav">INDIVIDUAL<
762 /C:calendar-user-type>
763
7643. Scheduling Operations
765
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"
773 operations.
774
7753.1. Identifying Scheduling Object Resources
776
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.
781
782
783
784
785
786Daboo & Desruisseaux Standards Track [Page 14]
787
788RFC 6638 CalDAV Scheduling June 2012
789
790
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
795 calendar collection.
796
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.
804
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).
808
8093.2. Handling Scheduling Object Resources
810
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.
814
8153.2.1. Organizer Scheduling Object Resources
816
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.
822
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".
826
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".
832
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
836 of the "Organizer".
837
838
839
840
841
842Daboo & Desruisseaux Standards Track [Page 15]
843
844RFC 6638 CalDAV Scheduling June 2012
845
846
8473.2.1.1. Create
848
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"
854 property.
855
856 +------------------+-------------+
857 | SCHEDULE-AGENT | iTIP METHOD |
858 +------------------+-------------+
859 | SERVER (default) | REQUEST |
860 | | |
861 | CLIENT | -- |
862 | | |
863 | NONE | -- |
864 +------------------+-------------+
865
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
873 information.
874
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.
885
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
889 forbidden.
890
891
892
893
894
895
896
897
898Daboo & Desruisseaux Standards Track [Page 16]
899
900RFC 6638 CalDAV Scheduling June 2012
901
902
9033.2.1.2. Modify
904
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).
916
917 +---------------+-----------------------------------------------+
918 | | Modified |
919 | +-----------+-----------+-----------+-----------+
920 | | <Removed> | SERVER | CLIENT | NONE |
921 | | | (default) | | |
922 +===+===========+===========+===========+===========+===========+
923 | | <Absent> | -- | REQUEST / | -- | -- |
924 | O | | | ADD | | |
925 | r +-----------+-----------+-----------+-----------+-----------+
926 | i | SERVER | CANCEL | REQUEST | CANCEL | CANCEL |
927 | g | (default) | | | | |
928 | i +-----------+-----------+-----------+-----------+-----------+
929 | n | CLIENT | -- | REQUEST / | -- | -- |
930 | a | | | ADD | | |
931 | l +-----------+-----------+-----------+-----------+-----------+
932 | | NONE | -- | REQUEST / | -- | -- |
933 | | | | ADD | | |
934 +---+-----------+-----------+-----------+-----------+-----------+
935
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
943 information.
944
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
948 forbidden.
949
950
951
952
953
954Daboo & Desruisseaux Standards Track [Page 17]
955
956RFC 6638 CalDAV Scheduling June 2012
957
958
9593.2.1.3. Remove
960
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"
966 property.
967
968 +------------------+-------------+
969 | SCHEDULE-AGENT | iTIP METHOD |
970 +------------------+-------------+
971 | SERVER (default) | CANCEL |
972 | | |
973 | CLIENT | -- |
974 | | |
975 | NONE | -- |
976 +------------------+-------------+
977
9783.2.2. Attendee Scheduling Object Resources
979
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.
983
9843.2.2.1. Allowed "Attendee" Changes
985
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
989 "Organizer".
990
991 Servers MUST allow "Attendees" to make the following iCalendar data
992 changes, subject to other restrictions, such as access privileges and
993 preconditions:
994
995 1. change their own "PARTSTAT" iCalendar property parameter value.
996
997 2. add, modify, or remove any "TRANSP" iCalendar properties.
998
999 3. add, modify, or remove any "PERCENT-COMPLETE" iCalendar
1000 properties.
1001
1002 4. add, modify, or remove any "COMPLETED" iCalendar properties.
1003
1004 5. add, modify, or remove any "VALARM" iCalendar components.
1005
1006
1007
1008
1009
1010Daboo & Desruisseaux Standards Track [Page 18]
1011
1012RFC 6638 CalDAV Scheduling June 2012
1013
1014
1015 6. add, modify, or remove the "CALSCALE" iCalendar property within
1016 the top-level "VCALENDAR" component.
1017
1018 7. modify the "PRODID" iCalendar property within the top-level
1019 "VCALENDAR" component.
1020
1021 8. add "EXDATE" iCalendar properties and possibly remove components
1022 for overridden recurrence instances.
1023
1024 9. add, modify, or remove any "CREATED", "DTSTAMP", and
1025 "LAST-MODIFIED" iCalendar properties.
1026
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".
1030
1031 11. add new components to represent overridden recurrence instances,
1032 provided the only changes to the recurrence instance follow the
1033 rules above.
1034
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.
1039
10403.2.2.2. Create
1041
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
1054 the same.
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066Daboo & Desruisseaux Standards Track [Page 19]
1067
1068RFC 6638 CalDAV Scheduling June 2012
1069
1070
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. |
1077 | | |
1078 | CLIENT | The server does no special processing of the |
1079 | | resource. The client is assumed to be handling |
1080 | | "Attendee" replies, etc. |
1081 | | |
1082 | NONE | The server does no special processing of the |
1083 | | resource. |
1084 +----------------+--------------------------------------------------+
1085
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.
1090
10913.2.2.3. Modify
1092
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:
1096
1097 +----------------+--------------------------------------------------+
1098 | SCHEDULE-AGENT | Action |
1099 +----------------+--------------------------------------------------+
1100 | SERVER | The server will attempt to process the update |
1101 | (default) | using the behavior listed below. |
1102 | | |
1103 | CLIENT | The server does no special processing of the |
1104 | | resource. The client is assumed to be handling |
1105 | | any "Attendee" replies, etc. |
1106 | | |
1107 | NONE | The server does no special processing of the |
1108 | | resource. |
1109 +----------------+--------------------------------------------------+
1110
1111 The server will inspect the changes by comparing the new scheduling
1112 object resource with the existing scheduling object resource.
1113
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".
1119
1120
1121
1122Daboo & Desruisseaux Standards Track [Page 20]
1123
1124RFC 6638 CalDAV Scheduling June 2012
1125
1126
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.
1131
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
1139 information.
1140
11413.2.2.4. Remove
1142
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:
1146
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. |
1153 | | |
1154 | CLIENT | The server does no special processing of the |
1155 | | resource. The client is assumed to be handling |
1156 | | any "Attendee" replies, etc. |
1157 | | |
1158 | NONE | The server does no special processing of the |
1159 | | resource. |
1160 +----------------+--------------------------------------------------+
1161
11623.2.3. HTTP Methods
1163
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.
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178Daboo & Desruisseaux Standards Track [Page 21]
1179
1180RFC 6638 CalDAV Scheduling June 2012
1181
1182
11833.2.3.1. PUT
1184
1185 When the server receives a PUT method request, it MUST execute the
1186 following operations, provided all appropriate preconditions are met:
1187
1188 +------------------------+--------------------------+---------------+
1189 | Existing Destination | Resulting Destination | Server |
1190 | Resource | Resource | Operation |
1191 +------------------------+--------------------------+---------------+
1192 | None | Calendar object resource | None |
1193 | | | |
1194 | None | Scheduling object | Create |
1195 | | resource | |
1196 | | | |
1197 | Calendar object | Calendar object resource | None |
1198 | resource | | |
1199 | | | |
1200 | Calendar object | Scheduling object | Create |
1201 | resource | resource | |
1202 | Scheduling object | Calendar object resource | Remove |
1203 | resource | | |
1204 | | | |
1205 | Scheduling object | Scheduling object | Modify |
1206 | resource | resource | |
1207 +------------------------+--------------------------+---------------+
1208
12093.2.3.2. DELETE
1210
1211 When the server receives a DELETE method request targeted at a
1212 scheduling object resource, it MUST execute the Remove operation.
1213
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.
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234Daboo & Desruisseaux Standards Track [Page 22]
1235
1236RFC 6638 CalDAV Scheduling June 2012
1237
1238
12393.2.3.3. COPY
1240
1241 When the server receives a COPY method request, it MUST execute the
1242 following operations based on the source and destination collections
1243 in the request:
1244
1245 +-----------------------+------------------------+------------------+
1246 | Source Collection | Destination Collection | Server Operation |
1247 +-----------------------+------------------------+------------------+
1248 | Non-calendar | Non-calendar | None |
1249 | collection | collection | |
1250 | | | |
1251 | Non-calendar | Calendar collection | (1) |
1252 | collection | | |
1253 | | | |
1254 | Calendar collection | Non-calendar | None |
1255 | | collection | |
1256 | | | |
1257 | Calendar collection | Calendar collection | (2) |
1258 +-----------------------+------------------------+------------------+
1259
1260 Note (1): The rules in Section 3.2.3.1 are applied for the
1261 destination of the COPY request.
1262
1263 Note (2): The server MAY reject this as per Section 3.2.4.1;
1264 otherwise, None.
1265
1266 The behavior of a COPY method request on a calendar collection is
1267 undefined.
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290Daboo & Desruisseaux Standards Track [Page 23]
1291
1292RFC 6638 CalDAV Scheduling June 2012
1293
1294
12953.2.3.4. MOVE
1296
1297 When the server receives a MOVE method request, it MUST execute the
1298 following operations based on the source and destination collections
1299 in the request:
1300
1301 +-----------------------+------------------------+------------------+
1302 | Source Collection | Destination Collection | Server Operation |
1303 +-----------------------+------------------------+------------------+
1304 | Non-calendar | Non-calendar | None |
1305 | collection | collection | |
1306 | | | |
1307 | Non-calendar | Calendar collection | (1) |
1308 | collection | | |
1309 | | | |
1310 | Calendar collection | Non-calendar | (2) |
1311 | | collection | |
1312 | | | |
1313 | Calendar collection | Calendar collection | None |
1314 +-----------------------+------------------------+------------------+
1315
1316 Note (1): The rules in Section 3.2.3.1 are applied for the
1317 destination of the MOVE request.
1318
1319 Note (2): The rules in Section 3.2.3.2 are applied for the source of
1320 the MOVE request.
1321
1322 The behavior of a MOVE method request on a calendar collection is
1323 undefined.
1324
13253.2.4. Additional Method Preconditions
1326
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.
1330
13313.2.4.1. CALDAV:unique-scheduling-object-resource Precondition
1332
1333 Name: unique-scheduling-object-resource
1334
1335 Namespace: urn:ietf:params:xml:ns:caldav
1336
1337 Apply to: PUT, COPY, and MOVE
1338
1339 Use with: 403 Forbidden
1340
1341
1342
1343
1344
1345
1346Daboo & Desruisseaux Standards Track [Page 24]
1347
1348RFC 6638 CalDAV Scheduling June 2012
1349
1350
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.
1357
1358 Definition:
1359
1360 <!ELEMENT unique-scheduling-object-resource (DAV:href?)>
1361
1362 Example:
1363
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>
1368
13693.2.4.2. CALDAV:same-organizer-in-all-components Precondition
1370
1371 Name: same-organizer-in-all-components
1372
1373 Namespace: urn:ietf:params:xml:ns:caldav
1374
1375 Apply to: PUT, COPY, and MOVE
1376
1377 Use with: 403 Forbidden
1378
1379 Purpose: (precondition) -- All the calendar components in a
1380 scheduling object resource MUST contain the same "ORGANIZER"
1381 property value when present.
1382
1383 Definition:
1384
1385 <!ELEMENT same-organizer-in-all-components EMPTY>
1386
13873.2.4.3. CALDAV:allowed-organizer-scheduling-object-change Precondition
1388
1389 Name: allowed-organizer-scheduling-object-change
1390
1391 Namespace: urn:ietf:params:xml:ns:caldav
1392
1393 Apply to: PUT, COPY, and MOVE
1394
1395 Use with: 403 Forbidden
1396
1397
1398
1399
1400
1401
1402Daboo & Desruisseaux Standards Track [Page 25]
1403
1404RFC 6638 CalDAV Scheduling June 2012
1405
1406
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.
1414
1415 Definition:
1416
1417 <!ELEMENT allowed-organizer-scheduling-object-change EMPTY>
1418
14193.2.4.4. CALDAV:allowed-attendee-scheduling-object-change Precondition
1420
1421 Name: allowed-attendee-scheduling-object-change
1422
1423 Namespace: urn:ietf:params:xml:ns:caldav
1424
1425 Apply to: PUT, COPY, and MOVE
1426
1427 Use with: 403 Forbidden
1428
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.
1432
1433 Definition:
1434
1435 <!ELEMENT allowed-attendee-scheduling-object-change EMPTY>
1436
14373.2.5. DTSTAMP and SEQUENCE Properties
1438
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).
1442
1443 The server MUST ensure that for each type of scheduling operation,
1444 the "SEQUENCE" iCalendar property value is updated as per iTIP
1445 [RFC5546].
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458Daboo & Desruisseaux Standards Track [Page 26]
1459
1460RFC 6638 CalDAV Scheduling June 2012
1461
1462
14633.2.6. Restrict Recurrence Instances Sent to "Attendees"
1464
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
1468 components.
1469
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
1478 instance.
1479
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.
1487
14883.2.7. Forcing the Server to Send a Scheduling Message
1489
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.
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514Daboo & Desruisseaux Standards Track [Page 27]
1515
1516RFC 6638 CalDAV Scheduling June 2012
1517
1518
15193.2.8. "Attendee" Participation Status
1520
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.
1525
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
1533 rescheduled.
1534
1535 +-----------+-------------------------------------------------------+
1536 | Property | Server Action |
1537 +-----------+-------------------------------------------------------+
1538 | DTSTART, | Any change to these properties results in "PARTSTAT" |
1539 | DTEND, | being set to "NEEDS-ACTION". |
1540 | DURATION, | |
1541 | DUE | |
1542 | | |
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. |
1548 | | |
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. |
1554 | | |
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 +-----------+-------------------------------------------------------+
1560
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
1565 by the change).
1566
1567
1568
1569
1570Daboo & Desruisseaux Standards Track [Page 28]
1571
1572RFC 6638 CalDAV Scheduling June 2012
1573
1574
15753.2.9. Schedule Status Values
1576
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".
1585
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
1591 "Attendees".
1592
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:
1597
1598 +----------+--------------------------------------------------------+
1599 | Delivery | Description |
1600 | Status | |
1601 | Code | |
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 |
1607 | | attempts. |
1608 | | |
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). |
1615 | | |
1616 | 1.2 | The scheduling message has been successfully |
1617 | | delivered. |
1618 | | |
1619
1620
1621
1622
1623
1624
1625
1626Daboo & Desruisseaux Standards Track [Page 29]
1627
1628RFC 6638 CalDAV Scheduling June 2012
1629
1630
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 |
1635 | | addresses. |
1636 | | |
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. |
1641 | | |
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 |
1646 | | later time. |
1647 | | |
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. |
1654 | | |
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 +----------+--------------------------------------------------------+
1660
1661 The status code for "reply" status can be any of the valid iTIP
1662 [RFC5546] "REQUEST-STATUS" values.
1663
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
1666 restriction:
1667
1668 For a 1.xx code, all components MUST have exactly the same code.
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682Daboo & Desruisseaux Standards Track [Page 30]
1683
1684RFC 6638 CalDAV Scheduling June 2012
1685
1686
1687 Definition of the new 1.xx codes is as follows:
1688
16893.2.9.1. Status Code 1.0
1690
1691 Status Code: 1.0
1692
1693 Status Description: Pending.
1694
1695 Status Exception Data: None.
1696
1697 Description: Delivery of the iTIP message is pending.
1698
16993.2.9.2. Status Code 1.1
1700
1701 Status Code: 1.1
1702
1703 Status Description: Sent.
1704
1705 Status Exception Data: None.
1706
1707 Description: The iTIP message has been sent, though no information
1708 about successful delivery is known.
1709
17103.2.9.3. Status Code 1.2
1711
1712 Status Code: 1.2
1713
1714 Status Description: Delivered.
1715
1716 Status Exception Data: None.
1717
1718 Description: The iTIP message has been sent and delivered.
1719
17203.2.10. Avoiding Conflicts when Updating Scheduling Object Resources
1721
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
1732 user.
1733
1734
1735
1736
1737
1738Daboo & Desruisseaux Standards Track [Page 31]
1739
1740RFC 6638 CalDAV Scheduling June 2012
1741
1742
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").
1750
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.
1756
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.
1761
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.
1767
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.
1772
1773 The value of the CALDAV:schedule-tag property changes according to
1774 these rules:
1775
1776 o For an "Organizer's" copy of a scheduling object resource:
1777
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.
1786
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).
1790
1791
1792
1793
1794Daboo & Desruisseaux Standards Track [Page 32]
1795
1796RFC 6638 CalDAV Scheduling June 2012
1797
1798
1799 o For an "Attendee's" copy of a scheduling object resource:
1800
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
1805 of "Attendees".
1806
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.
1817
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).
1821
18223.2.10.1. PUT
1823
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.
1834
18353.2.10.2. DELETE, COPY, or MOVE
1836
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.
1846
1847
1848
1849
1850Daboo & Desruisseaux Standards Track [Page 33]
1851
1852RFC 6638 CalDAV Scheduling June 2012
1853
1854
18554. Processing Incoming Scheduling Messages
1856
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
1867 change.
1868
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.
1881
18824.1. Processing "Organizer" Requests, Additions, and Cancellations
1883
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.
1889
1890 In the case of a new message, the server processes the scheduling
1891 message and creates a new scheduling object resource as per
1892 Section 4.3.
1893
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".
1897
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.
1901
1902
1903
1904
1905
1906Daboo & Desruisseaux Standards Track [Page 34]
1907
1908RFC 6638 CalDAV Scheduling June 2012
1909
1910
19114.2. Processing "Attendee" Replies
1912
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.
1917
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).
1924
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.
1933
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
1937 Section 3.2.6.
1938
1939 The scheduling message MUST only appear in the "Organizer's"
1940 scheduling Inbox collection once all automatic processing has been
1941 done.
1942
19434.3. Default Calendar Collection
1944
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".
1952
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.
1959
1960
1961
1962Daboo & Desruisseaux Standards Track [Page 35]
1963
1964RFC 6638 CalDAV Scheduling June 2012
1965
1966
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.
1970
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
1976 Inbox collection.
1977
1978 Servers MUST reject any attempt to delete the default calendar
1979 collection.
1980
19814.3.1. Additional Method Preconditions
1982
1983 This specification defines additional method preconditions (see
1984 Section 16 of WebDAV [RFC4918]) to provide machine-parseable
1985 information in error responses.
1986
19874.3.1.1. CALDAV:default-calendar-needed Precondition
1988
1989 Name: default-calendar-needed
1990
1991 Namespace: urn:ietf:params:xml:ns:caldav
1992
1993 Apply to: DELETE
1994
1995 Use with: 403 Forbidden
1996
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.
2002
2003 Definition:
2004
2005 <!ELEMENT default-calendar-needed EMPTY>
2006
20074.3.1.2. CALDAV:valid-schedule-default-calendar-URL Precondition
2008
2009 Name: valid-schedule-default-calendar-URL
2010
2011 Namespace: urn:ietf:params:xml:ns:caldav
2012
2013 Apply to: PROPPATCH
2014
2015
2016
2017
2018Daboo & Desruisseaux Standards Track [Page 36]
2019
2020RFC 6638 CalDAV Scheduling June 2012
2021
2022
2023 Use with: 403 Forbidden
2024
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
2031 [RFC4918].
2032
2033 Definition:
2034
2035 <!ELEMENT valid-schedule-default-calendar-URL EMPTY>
2036
20375. Request for Busy Time Information
2038
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
2049 collection.
2050
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
2062 and response.
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074Daboo & Desruisseaux Standards Track [Page 37]
2075
2076RFC 6638 CalDAV Scheduling June 2012
2077
2078
20795.1. Status Codes
2080
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.
2084
2085 200 (OK) - The command succeeded.
2086
2087 204 (No Content) - The command succeeded.
2088
2089 400 (Bad Request) - The client has provided an invalid scheduling
2090 message.
2091
2092 403 (Forbidden) - The client cannot submit a scheduling message to
2093 the specified Request-URI.
2094
2095 404 (Not Found) - The URL in the Request-URI was not present.
2096
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.
2100
21015.2. Additional Method Preconditions
2102
2103 The following are existing preconditions that are reused for the POST
2104 method on an Outbox collection.
2105
2106 o DAV:need-privileges [RFC3744]
2107
2108 o CALDAV:supported-calendar-data [RFC4791]
2109
2110 o CALDAV:valid-calendar-data [RFC4791]
2111
2112 o CALDAV:max-resource-size [RFC4791]
2113
2114 The following are new method preconditions for the POST method on an
2115 Outbox collection.
2116
21175.2.1. CALDAV:valid-scheduling-message Precondition
2118
2119 Name: valid-scheduling-message
2120
2121 Namespace: urn:ietf:params:xml:ns:caldav
2122
2123 Apply to: POST
2124
2125 Use with: 400 Bad Request
2126
2127
2128
2129
2130Daboo & Desruisseaux Standards Track [Page 38]
2131
2132RFC 6638 CalDAV Scheduling June 2012
2133
2134
2135 Purpose: (precondition) -- The resource submitted in the POST
2136 request MUST obey all the restrictions specified in Section 3.3.2
2137 of iTIP [RFC5546].
2138
2139 Definition:
2140
2141 <!ELEMENT valid-scheduling-message EMPTY>
2142
21435.2.2. CALDAV:valid-organizer Precondition
2144
2145 Name: valid-organizer
2146
2147 Namespace: urn:ietf:params:xml:ns:caldav
2148
2149 Apply to: POST
2150
2151 Use with: 403 Forbidden
2152
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.
2157
2158 Definition:
2159
2160 <!ELEMENT valid-organizer EMPTY>
2161
21626. Scheduling Privileges
2163
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.
2168
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.
2172
21736.1. Privileges on Scheduling Inbox Collections
2174
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.
2181
2182
2183
2184
2185
2186Daboo & Desruisseaux Standards Track [Page 39]
2187
2188RFC 6638 CalDAV Scheduling June 2012
2189
2190
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
2198 collection.
2199
2200 The privileges defined in this section are ignored if applied to a
2201 resource other than a scheduling Inbox collection.
2202
22036.1.1. CALDAV:schedule-deliver Privilege
2204
2205 CALDAV:schedule-deliver is an aggregate privilege as per Section 6.3.
2206
2207 <!ELEMENT schedule-deliver EMPTY>
2208
22096.1.2. CALDAV:schedule-deliver-invite Privilege
2210
2211 The CALDAV:schedule-deliver-invite privilege controls the processing
2212 and delivery of scheduling messages coming from an "Organizer".
2213
2214 <!ELEMENT schedule-deliver-invite EMPTY>
2215
22166.1.3. CALDAV:schedule-deliver-reply Privilege
2217
2218 The CALDAV:schedule-deliver-reply privilege controls the processing
2219 and delivery of scheduling messages coming from an "Attendee".
2220
2221 <!ELEMENT schedule-deliver-reply EMPTY>
2222
22236.1.4. CALDAV:schedule-query-freebusy Privilege
2224
2225 The CALDAV:schedule-query-freebusy privilege controls freebusy
2226 requests targeted at the owner of the scheduling Inbox collection.
2227
2228 <!ELEMENT schedule-query-freebusy EMPTY>
2229
22306.2. Privileges on Scheduling Outbox Collections
2231
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).
2239
2240
2241
2242Daboo & Desruisseaux Standards Track [Page 40]
2243
2244RFC 6638 CalDAV Scheduling June 2012
2245
2246
2247 The privileges defined in this section are ignored if applied to a
2248 resource other than a scheduling Outbox collection.
2249
22506.2.1. CALDAV:schedule-send Privilege
2251
2252 CALDAV:schedule-send is an aggregate privilege as per Section 6.3.
2253
2254 <!ELEMENT schedule-send EMPTY>
2255
22566.2.2. CALDAV:schedule-send-invite Privilege
2257
2258 The CALDAV:schedule-send-invite privilege controls the sending of
2259 scheduling messages by "Organizers".
2260
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".
2268
2269 <!ELEMENT schedule-send-invite EMPTY>
2270
22716.2.3. CALDAV:schedule-send-reply Privilege
2272
2273 The CALDAV:schedule-send-reply privilege controls the sending of
2274 scheduling messages by "Attendees".
2275
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
2283 "Organizer".
2284
2285 <!ELEMENT schedule-send-reply EMPTY>
2286
22876.2.4. CALDAV:schedule-send-freebusy Privilege
2288
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.
2292
2293 <!ELEMENT schedule-send-freebusy EMPTY>
2294
2295
2296
2297
2298Daboo & Desruisseaux Standards Track [Page 41]
2299
2300RFC 6638 CalDAV Scheduling June 2012
2301
2302
23036.3. Aggregation of Scheduling Privileges
2304
2305 Server implementations MUST aggregate the scheduling privileges as
2306 follows:
2307
2308 DAV:all contains CALDAV:schedule-deliver and CALDAV:schedule-send;
2309
2310 CALDAV:schedule-deliver contains CALDAV:schedule-deliver-invite,
2311 CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-freebusy;
2312
2313 CALDAV:schedule-send contains CALDAV:schedule-send-invite, CALDAV:
2314 schedule-send-reply, and CALDAV:schedule-send-freebusy.
2315
2316 The following diagram illustrates how scheduling privileges are
2317 aggregated according to the above requirements.
2318
2319 [DAV:all] (aggregate)
2320 |
2321 +-- [CALDAV:schedule-deliver] (aggregate)
2322 | |
2323 | +-- [CALDAV:schedule-deliver-invite]
2324 | +-- [CALDAV:schedule-deliver-reply]
2325 | +-- [CALDAV:schedule-query-freebusy]
2326 |
2327 +-- [CALDAV:schedule-send] (aggregate)
2328 |
2329 +-- [CALDAV:schedule-send-invite]
2330 +-- [CALDAV:schedule-send-reply]
2331 +-- [CALDAV:schedule-send-freebusy]
2332
23337. Additional iCalendar Property Parameters
2334
2335 This specification defines additional iCalendar property parameters
2336 to support the CalDAV scheduling extensions.
2337
23387.1. Schedule Agent Parameter
2339
2340 Parameter Name: SCHEDULE-AGENT
2341
2342 Purpose: To specify the agent expected to deliver scheduling
2343 messages to the corresponding "Organizer" or "Attendee".
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354Daboo & Desruisseaux Standards Track [Page 42]
2355
2356RFC 6638 CalDAV Scheduling June 2012
2357
2358
2359 Format Definition: This property parameter is defined by the
2360 following notation:
2361
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
2368 ;
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
2371 ; [RFC5545].
2372
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.
2386
2387 Servers MUST NOT include this parameter in any scheduling messages
2388 sent as the result of a scheduling operation.
2389
2390 Clients MUST NOT include this parameter in any scheduling messages
2391 that they themselves send.
2392
2393 The parameter value MUST be the same on every "ORGANIZER" property
2394 in a scheduling object resource.
2395
2396 The parameter value MUST be the same on each "ATTENDEE" property
2397 whose values match in a scheduling object resource.
2398
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.
2401
2402 Example:
2403
2404 ORGANIZER;SCHEDULE-AGENT=SERVER:mailto:bernard@example.com
2405 ATTENDEE;SCHEDULE-AGENT=NONE:mailto:cyrus@example.com
2406
2407
2408
2409
2410Daboo & Desruisseaux Standards Track [Page 43]
2411
2412RFC 6638 CalDAV Scheduling June 2012
2413
2414
24157.2. Schedule Force Send Parameter
2416
2417 Parameter Name: SCHEDULE-FORCE-SEND
2418
2419 Purpose: To force a scheduling message to be sent to the calendar
2420 user specified by the property.
2421
2422 Format Definition: This property parameter is defined by the
2423 following notation:
2424
2425 scheduleforcesendparam = "SCHEDULE-FORCE-SEND" "="
2426 ("REQUEST" ; Force a "REQUEST"
2427 / "REPLY" ; Force a "REPLY"
2428 / iana-token)
2429 ;
2430 ; "iana-token" is defined in Section 3.1 of [RFC5545]. Its value
2431 ; MUST be an IANA-registered iCalendar "METHOD" property value.
2432
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".
2446
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.
2450
2451 Clients MUST NOT include this parameter in any scheduling messages
2452 that they themselves send.
2453
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
2458 recognize.
2459
2460
2461
2462
2463
2464
2465
2466Daboo & Desruisseaux Standards Track [Page 44]
2467
2468RFC 6638 CalDAV Scheduling June 2012
2469
2470
2471 Example:
2472
2473 ORGANIZER;SCHEDULE-FORCE-SEND=REPLY:mailto:cyrus@example.com
2474 ATTENDEE;SCHEDULE-FORCE-SEND=REQUEST:mailto:bernard@example.com
2475
24767.3. Schedule Status Parameter
2477
2478 Parameter Name: SCHEDULE-STATUS
2479
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".
2483
2484 Format Definition: This property parameter is defined by the
2485 following notation:
2486
2487 schedulestatusparam = "SCHEDULE-STATUS" "="
2488 ( statcode
2489 / DQUOTE statcode *("," statcode) DQUOTE)
2490 ;
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.
2494
2495 Description: This property parameter MAY be specified on the
2496 "ATTENDEE" and "ORGANIZER" properties.
2497
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.
2505
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.
2513
2514 Servers MUST NOT include this parameter in any scheduling messages
2515 sent as the result of a scheduling operation.
2516
2517 Clients MUST NOT include this parameter in any scheduling messages
2518 that they themselves send.
2519
2520
2521
2522Daboo & Desruisseaux Standards Track [Page 45]
2523
2524RFC 6638 CalDAV Scheduling June 2012
2525
2526
2527 Values for this property parameter are described in Section 3.2.9.
2528
2529 Example:
2530
2531 ATTENDEE;SCHEDULE-STATUS="2.0":mailto:bernard@example.com
2532 ATTENDEE;SCHEDULE-STATUS="2.0,2.4":mailto:cyrus@example.com
2533
25348. Additional Message Header Fields
2535
2536 This specification defines additional HTTP request and response
2537 headers for use with CalDAV.
2538
25398.1. Schedule-Reply Request Header
2540
2541 Schedule-Reply = "Schedule-Reply" ":" ("T" | "F")
2542
2543 Example:
2544
2545 Schedule-Reply: F
2546
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.
2553
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.
2557
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.
2566
25678.2. Schedule-Tag Response Header
2568
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.
2572
2573 All scheduling object resources MUST support the Schedule-Tag header.
2574
2575
2576
2577
2578Daboo & Desruisseaux Standards Track [Page 46]
2579
2580RFC 6638 CalDAV Scheduling June 2012
2581
2582
2583 Schedule-Tag = "Schedule-Tag" ":" opaque-tag
2584 ; "opaque-tag" is defined in Section 3.11 of [RFC2616].
2585
2586 Example:
2587
2588 Schedule-Tag: "12ab34-cd56ef"
2589
25908.3. If-Schedule-Tag-Match Request Header
2591
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.
2598
2599 All scheduling object resources MUST support the If-Schedule-Tag-
2600 Match header.
2601
2602 If-Schedule-Tag-Match = "If-Schedule-Tag-Match" ":" opaque-tag
2603 ; "opaque-tag" is defined in Section 3.11 of [RFC2616].
2604
2605 Example:
2606
2607 If-Schedule-Tag-Match: "12ab34-cd56ef"
2608
26099. Additional WebDAV Properties
2610
2611 This specification defines the following new WebDAV properties for
2612 use with CalDAV.
2613
26149.1. CALDAV:schedule-calendar-transp Property
2615
2616 Name: schedule-calendar-transp
2617
2618 Namespace: urn:ietf:params:xml:ns:caldav
2619
2620 Purpose: Determines whether the calendar object resources in a
2621 calendar collection will affect the owner's busy time information.
2622
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
2625 [RFC4918]).
2626
2627 COPY/MOVE behavior: This property value SHOULD be kept during a MOVE
2628 operation, and SHOULD be copied and preserved in a COPY.
2629
2630
2631
2632
2633
2634Daboo & Desruisseaux Standards Track [Page 47]
2635
2636RFC 6638 CalDAV Scheduling June 2012
2637
2638
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.
2649
2650 If this property is not present on a calendar collection, then the
2651 default value CALDAV:opaque MUST be assumed.
2652
2653 Definition:
2654
2655 <!ELEMENT schedule-calendar-transp (opaque | transparent)>
2656
2657 <!ELEMENT opaque EMPTY>
2658 <!-- Affects busy time searches -->
2659
2660 <!ELEMENT transparent EMPTY>
2661 <!-- Invisible to busy time searches -->
2662
2663 Example:
2664
2665 <C:schedule-calendar-transp
2666 xmlns:C="urn:ietf:params:xml:ns:caldav">
2667 <C:opaque/>
2668 </C:schedule-calendar-transp>
2669
26709.2. CALDAV:schedule-default-calendar-URL Property
2671
2672 Name: schedule-default-calendar-URL
2673
2674 Namespace: urn:ietf:params:xml:ns:caldav
2675
2676 Purpose: Specifies a default calendar for an "Attendee" where new
2677 scheduling object resources are created.
2678
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.
2682
2683 COPY/MOVE behavior: This property is only defined on a scheduling
2684 Inbox collection that cannot be moved or copied.
2685
2686
2687
2688
2689
2690Daboo & Desruisseaux Standards Track [Page 48]
2691
2692RFC 6638 CalDAV Scheduling June 2012
2693
2694
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.
2704
2705 Definition:
2706
2707 <!ELEMENT schedule-default-calendar-URL (DAV:href?)>
2708
2709 Example:
2710
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>
2715
27169.3. CALDAV:schedule-tag Property
2717
2718 Name: schedule-tag
2719
2720 Namespace: urn:ietf:params:xml:ns:caldav
2721
2722 Purpose: Indicates whether a scheduling object resource has had a
2723 "consequential" change made to it.
2724
2725 Value: opaque-tag (defined in Section 3.11 of [RFC2616])
2726
2727 Protected: This property MUST be protected, as only the server can
2728 update the value.
2729
2730 COPY/MOVE behavior: This property value is determined by the server
2731 and MAY be different from the value on the source resource.
2732
2733 Description: The CALDAV:schedule-tag property MUST be defined on all
2734 scheduling object resources. This property is described in
2735 Section 3.2.10.
2736
2737 Definition:
2738
2739 <!ELEMENT schedule-tag (#PCDATA)>
2740
2741
2742
2743
2744
2745
2746Daboo & Desruisseaux Standards Track [Page 49]
2747
2748RFC 6638 CalDAV Scheduling June 2012
2749
2750
2751 Example:
2752
2753 <C:schedule-tag xmlns:C="urn:ietf:params:xml:ns:caldav"
2754 >"12345-67890"</C:schedule-tag>
2755
275610. XML Element Definitions
2757
275810.1. CALDAV:schedule-response XML Element
2759
2760 Name: schedule-response
2761
2762 Namespace: urn:ietf:params:xml:ns:caldav
2763
2764 Purpose: Contains the set of responses for a POST method request.
2765
2766 Description: See Section 5.
2767
2768 Definition:
2769
2770 <!ELEMENT schedule-response (response*)>
2771
277210.2. CALDAV:response XML Element
2773
2774 Name: response
2775
2776 Namespace: urn:ietf:params:xml:ns:caldav
2777
2778 Purpose: Contains a single response for a POST method request.
2779
2780 Description: See Section 5.
2781
2782 Definition:
2783
2784 <!ELEMENT response (recipient,
2785 request-status,
2786 calendar-data?,
2787 DAV:error?,
2788 DAV:responsedescription?)>
2789
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. -->
2793
279410.3. CALDAV:recipient XML Element
2795
2796 Name: recipient
2797
2798 Namespace: urn:ietf:params:xml:ns:caldav
2799
2800
2801
2802Daboo & Desruisseaux Standards Track [Page 50]
2803
2804RFC 6638 CalDAV Scheduling June 2012
2805
2806
2807 Purpose: The calendar user address that the enclosing response for a
2808 POST method request is for.
2809
2810 Description: See Section 5.
2811
2812 Definition:
2813
2814 <!ELEMENT recipient (DAV:href)>
2815
281610.4. CALDAV:request-status XML Element
2817
2818 Name: request-status
2819
2820 Namespace: urn:ietf:params:xml:ns:caldav
2821
2822 Purpose: The iTIP "REQUEST-STATUS" property value for this response.
2823
2824 Description: See Section 5.
2825
2826 Definition:
2827
2828 <!ELEMENT request-status (#PCDATA)>
2829
283011. Security Considerations
2831
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
2842 requests.
2843
284411.1. Preventing Denial-of-Service Attacks
2845
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.
2851
2852
2853
2854
2855
2856
2857
2858Daboo & Desruisseaux Standards Track [Page 51]
2859
2860RFC 6638 CalDAV Scheduling June 2012
2861
2862
286311.2. Verifying Scheduling Operations
2864
2865 When handling a scheduling operation:
2866
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-
2870 URL property value.
2871
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.
2877
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.
2884
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
2889 stored.
2890
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
2895 value.
2896
289711.3. Verifying Busy Time Information Requests
2898
2899 When handling a POST request on a scheduling Outbox collection:
2900
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.
2906
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.
2911
2912
2913
2914Daboo & Desruisseaux Standards Track [Page 52]
2915
2916RFC 6638 CalDAV Scheduling June 2012
2917
2918
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.
2925
292611.4. Privacy Issues
2927
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.
2936
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".
2942
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
2948 errors.
2949
295011.5. Mitigation of iTIP Threats
2951
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
2956 manner:
2957
2958 Spoofing the "Organizer": Addressed by item 4 in Section 11.2.
2959
2960 Spoofing the "Attendee": Addressed by Section 3.2.2.1 and item 2 in
2961 Section 11.2.
2962
2963 Unauthorized Replacement of the "Organizer": Addressed by item 5 in
2964 Section 11.2.
2965
2966 Eavesdropping and Data Integrity: Addressed by requiring TLS.
2967
2968
2969
2970Daboo & Desruisseaux Standards Track [Page 53]
2971
2972RFC 6638 CalDAV Scheduling June 2012
2973
2974
2975 Flooding a Calendar: Addressed by requirements in Section 11.1.
2976
2977 Unauthorized REFRESH Requests: This specification does not support
2978 the REFRESH method.
2979
298012. IANA Considerations
2981
298212.1. Message Header Field Registrations
2983
2984 The message header fields below have been added to the Permanent
2985 Message Header Field Registry (see [RFC3864]).
2986
298712.1.1. Schedule-Reply
2988
2989 Header field name: Schedule-Reply
2990
2991 Applicable protocol: http
2992
2993 Status: standard
2994
2995 Author/Change controller: IETF
2996
2997 Specification document(s): this specification (Section 8.1)
2998
2999 Related information: none
3000
300112.1.2. Schedule-Tag
3002
3003 Header field name: Schedule-Tag
3004
3005 Applicable protocol: http
3006
3007 Status: standard
3008
3009 Author/Change controller: IETF
3010
3011 Specification document(s): this specification (Section 8.2)
3012
3013 Related information: none
3014
301512.1.3. If-Schedule-Tag-Match
3016
3017 Header field name: If-Schedule-Tag-Match
3018
3019 Applicable protocol: http
3020
3021 Status: standard
3022
3023
3024
3025
3026Daboo & Desruisseaux Standards Track [Page 54]
3027
3028RFC 6638 CalDAV Scheduling June 2012
3029
3030
3031 Author/Change controller: IETF
3032
3033 Specification document(s): this specification (Section 8.3)
3034
3035 Related information: none
3036
303712.2. iCalendar Property Parameter Registrations
3038
3039 The following iCalendar property parameter names have been added to
3040 the iCalendar Parameters Registry defined in Section 8.3.3 of
3041 [RFC5545].
3042
3043 +---------------------+---------+-----------------------+
3044 | Parameter | Status | Reference |
3045 +---------------------+---------+-----------------------+
3046 | SCHEDULE-AGENT | Current | RFC 6638, Section 7.1 |
3047 | | | |
3048 | SCHEDULE-STATUS | Current | RFC 6638, Section 7.3 |
3049 | | | |
3050 | SCHEDULE-FORCE-SEND | Current | RFC 6638, Section 7.2 |
3051 +---------------------+---------+-----------------------+
3052
305312.3. iCalendar REQUEST-STATUS Value Registrations
3054
3055 The following iCalendar "REQUEST-STATUS" values have been added to
3056 the iCalendar REQUEST-STATUS Value Registry defined in Section 7.3 of
3057 [RFC5546].
3058
3059 +-------------+---------+---------------------------+
3060 | Status Code | Status | Reference |
3061 +-------------+---------+---------------------------+
3062 | 1.0 | Current | RFC 6638, Section 3.2.9.1 |
3063 | | | |
3064 | 1.1 | Current | RFC 6638, Section 3.2.9.2 |
3065 | | | |
3066 | 1.2 | Current | RFC 6638, Section 3.2.9.3 |
3067 +-------------+---------+---------------------------+
3068
306912.4. Additional iCalendar Elements Registries
3070
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
3074 them.
3075
3076
3077
3078
3079
3080
3081
3082Daboo & Desruisseaux Standards Track [Page 55]
3083
3084RFC 6638 CalDAV Scheduling June 2012
3085
3086
308712.4.1. Schedule Agent Values Registry
3088
3089 The following table has been used to initialize the Schedule Agent
3090 Values Registry.
3091
3092 +----------------+---------+-----------------------+
3093 | Schedule Agent | Status | Reference |
3094 +----------------+---------+-----------------------+
3095 | SERVER | Current | RFC 6638, Section 7.1 |
3096 | | | |
3097 | CLIENT | Current | RFC 6638, Section 7.1 |
3098 | | | |
3099 | NONE | Current | RFC 6638, Section 7.1 |
3100 +----------------+---------+-----------------------+
3101
310212.4.2. Schedule Force Send Values Registry
3103
3104 The following table has been used to initialize the Schedule Force
3105 Send Values Registry.
3106
3107 +---------------------+---------+-----------------------+
3108 | Schedule Force Send | Status | Reference |
3109 +---------------------+---------+-----------------------+
3110 | REQUEST | Current | RFC 6638, Section 7.2 |
3111 | | | |
3112 | REPLY | Current | RFC 6638, Section 7.2 |
3113 +---------------------+---------+-----------------------+
3114
311513. Acknowledgements
3116
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
3122 Vaillancourt.
3123
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.
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138Daboo & Desruisseaux Standards Track [Page 56]
3139
3140RFC 6638 CalDAV Scheduling June 2012
3141
3142
314314. References
3144
314514.1. Normative References
3146
3147 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
3148 Requirement Levels", BCP 14, RFC 2119, March 1997.
3149
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.
3153
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.
3158
3159 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
3160
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.
3164
3165 [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration
3166 Procedures for Message Header Fields", BCP 90, RFC 3864,
3167 September 2004.
3168
3169 [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
3170 "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
3171 March 2007.
3172
3173 [RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed
3174 Authoring and Versioning (WebDAV)", RFC 4918, June 2007.
3175
3176 [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for
3177 Syntax Specifications: ABNF", STD 68, RFC 5234,
3178 January 2008.
3179
3180 [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
3181 Scheduling Core Object Specification (iCalendar)",
3182 RFC 5545, September 2009.
3183
3184 [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent
3185 Interoperability Protocol (iTIP)", RFC 5546,
3186 December 2009.
3187
3188
3189
3190
3191
3192
3193
3194Daboo & Desruisseaux Standards Track [Page 57]
3195
3196RFC 6638 CalDAV Scheduling June 2012
3197
3198
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.
3204
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>.
3211
321214.2. Informative References
3213
3214 [RFC6047] Melnikov, A., Ed., "iCalendar Message-Based
3215 Interoperability Protocol (iMIP)", RFC 6047,
3216 December 2010.
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250Daboo & Desruisseaux Standards Track [Page 58]
3251
3252RFC 6638 CalDAV Scheduling June 2012
3253
3254
3255Appendix A. Scheduling Privileges Summary
3256
3257A.1. Scheduling Inbox Privileges
3258
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.
3264
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 +-----------------------------+---------+-------+-----+--------+
3275
3276
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 +-----------------------------+----------------------+
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306Daboo & Desruisseaux Standards Track [Page 59]
3307
3308RFC 6638 CalDAV Scheduling June 2012
3309
3310
3311A.2. Scheduling Outbox Privileges
3312
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.
3319
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 +-----------------------------+---------+-------+-----+--------+
3330
3331
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 +-----------------------------+----------------------+
3342
3343Appendix B. Example Scheduling Operations
3344
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
3348 "Attendees".
3349
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
3356 the server.
3357
3358
3359
3360
3361
3362Daboo & Desruisseaux Standards Track [Page 60]
3363
3364RFC 6638 CalDAV Scheduling June 2012
3365
3366
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.
3371
3372B.1. Example: "Organizer" Inviting Multiple "Attendees"
3373
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.
3377
3378 >> Request <<
3379
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
3384 If-None-Match: *
3385
3386 BEGIN:VCALENDAR
3387 VERSION:2.0
3388 PRODID:-//Example Corp.//CalDAV Client//EN
3389 BEGIN:VEVENT
3390 UID:9263504FD3AD
3391 SEQUENCE:0
3392 DTSTAMP:20090602T185254Z
3393 DTSTART:20090602T160000Z
3394 DTEND:20090602T170000Z
3395 TRANSP:OPAQUE
3396 SUMMARY:Lunch
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@
3402 example.com
3403 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3404 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3405 ample.net
3406 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3407 CTION;RSVP=TRUE:mailto:mike@example.org
3408 END:VEVENT
3409 END:VCALENDAR
3410
3411 >> Response <<
3412
3413 HTTP/1.1 201 Created
3414 Content-Length: 0
3415
3416
3417
3418Daboo & Desruisseaux Standards Track [Page 61]
3419
3420RFC 6638 CalDAV Scheduling June 2012
3421
3422
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"
3427
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
3434 Mike.
3435
3436 >> Request <<
3437
3438 GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
3439 Host: cal.example.com
3440
3441 >> Response <<
3442
3443 HTTP/1.1 200 OK
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
3450
3451 BEGIN:VCALENDAR
3452 VERSION:2.0
3453 PRODID:-//Example Corp.//CalDAV Server//EN
3454 BEGIN:VEVENT
3455 UID:9263504FD3AD
3456 SEQUENCE:0
3457 DTSTAMP:20090602T185300Z
3458 DTSTART:20090602T160000Z
3459 DTEND:20090602T170000Z
3460 TRANSP:OPAQUE
3461 SUMMARY:Lunch
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
3468 xample.com
3469
3470
3471
3472
3473
3474Daboo & Desruisseaux Standards Track [Page 62]
3475
3476RFC 6638 CalDAV Scheduling June 2012
3477
3478
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
3484 END:VEVENT
3485 END:VCALENDAR
3486
3487B.2. Example: "Attendee" Receiving an Invitation
3488
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.
3493
3494 >> Request <<
3495
3496 GET /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
3497 Host: cal.example.com
3498
3499 >> Response <<
3500
3501 HTTP/1.1 200 OK
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
3507
3508 BEGIN:VCALENDAR
3509 VERSION:2.0
3510 PRODID:-//Example Corp.//CalDAV Server//EN
3511 METHOD:REQUEST
3512 BEGIN:VEVENT
3513 UID:9263504FD3AD
3514 SEQUENCE:0
3515 DTSTAMP:20090602T185254Z
3516 DTSTART:20090602T160000Z
3517 DTEND:20090602T170000Z
3518 TRANSP:OPAQUE
3519 SUMMARY:Lunch
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@
3525 example.com
3526
3527
3528
3529
3530Daboo & Desruisseaux Standards Track [Page 63]
3531
3532RFC 6638 CalDAV Scheduling June 2012
3533
3534
3535 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3536 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3537 ample.net
3538 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3539 CTION;RSVP=TRUE:mailto:mike@example.org
3540 END:VEVENT
3541 END:VCALENDAR
3542
3543 >> Request <<
3544
3545 DELETE /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
3546 Host: cal.example.com
3547
3548 >> Response <<
3549
3550 HTTP/1.1 204 No Content
3551 Date: Tue, 02 Jun 2009 20:40:36 GMT
3552
3553B.3. Example: "Attendee" Replying to an Invitation
3554
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.
3560
3561 >> Request <<
3562
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
3568
3569 BEGIN:VCALENDAR
3570 VERSION:2.0
3571 PRODID:-//Example Corp.//CalDAV Client//EN
3572 BEGIN:VEVENT
3573 UID:9263504FD3AD
3574 SEQUENCE:0
3575 DTSTAMP:20090602T185254Z
3576 DTSTART:20090602T160000Z
3577 DTEND:20090602T170000Z
3578 TRANSP:OPAQUE
3579 SUMMARY:Lunch
3580 ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
3581 ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
3582 mailto:cyrus@example.com
3583
3584
3585
3586Daboo & Desruisseaux Standards Track [Page 64]
3587
3588RFC 6638 CalDAV Scheduling June 2012
3589
3590
3591 ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
3592 =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
3593 ple.com
3594 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3595 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3596 ample.net
3597 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3598 CTION;RSVP=TRUE:mailto:mike@example.org
3599 BEGIN:VALARM
3600 TRIGGER:-PT15M
3601 ACTION:DISPLAY
3602 DESCRIPTION:Reminder
3603 END:VALARM
3604 END:VEVENT
3605 END:VCALENDAR
3606
3607 >> Response <<
3608
3609 HTTP/1.1 200 OK
3610 Content-Length: 0
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"
3615
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".
3619
3620 >> Request <<
3621
3622 GET /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
3623 Host: cal.example.com
3624
3625 >> Response <<
3626
3627 HTTP/1.1 200 OK
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
3634
3635
3636
3637
3638
3639
3640
3641
3642Daboo & Desruisseaux Standards Track [Page 65]
3643
3644RFC 6638 CalDAV Scheduling June 2012
3645
3646
3647 BEGIN:VCALENDAR
3648 VERSION:2.0
3649 PRODID:-//Example Corp.//CalDAV Client//EN
3650 BEGIN:VEVENT
3651 UID:9263504FD3AD
3652 SEQUENCE:0
3653 DTSTAMP:20090602T190221Z
3654 DTSTART:20090602T160000Z
3655 DTEND:20090602T170000Z
3656 TRANSP:OPAQUE
3657 SUMMARY:Lunch
3658 ORGANIZER;CN="Cyrus Daboo";SCHEDULE-STATUS=1.2:mailto:cyrus@ex
3659 ample.com
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
3664 ple.com
3665 ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
3666 NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
3667 ample.net
3668 ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
3669 CTION;RSVP=TRUE:mailto:mike@example.org
3670 BEGIN:VALARM
3671 TRIGGER:-PT15M
3672 ACTION:DISPLAY
3673 DESCRIPTION:Reminder
3674 END:VALARM
3675 END:VEVENT
3676 END:VCALENDAR
3677
3678B.4. Example: "Organizer" Receiving a Reply to an Invitation
3679
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.
3686
3687 >> Request <<
3688
3689 GET /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
3690 Host: cal.example.com
3691
3692
3693
3694
3695
3696
3697
3698Daboo & Desruisseaux Standards Track [Page 66]
3699
3700RFC 6638 CalDAV Scheduling June 2012
3701
3702
3703 >> Response <<
3704
3705 HTTP/1.1 200 OK
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
3711
3712 BEGIN:VCALENDAR
3713 VERSION:2.0
3714 PRODID:-//Example Corp.//CalDAV Server//EN
3715 METHOD:REPLY
3716 BEGIN:VEVENT
3717 UID:9263504FD3AD
3718 SEQUENCE:0
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
3724 ilfredo@example.com
3725 REQUEST-STATUS:2.0;Success
3726 END:VEVENT
3727 END:VCALENDAR
3728
3729 >> Request <<
3730
3731 DELETE /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
3732 Host: cal.example.com
3733
3734 >> Response <<
3735
3736 HTTP/1.1 204 No Content
3737 Date: Tue, 02 Jun 2009 19:05:05 GMT
3738
3739 Cyrus's client then retrieves the event back from the server with
3740 Wilfredo's updated participation status.
3741
3742 >> Request <<
3743
3744 GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
3745 Host: cal.example.com
3746
3747
3748
3749
3750
3751
3752
3753
3754Daboo & Desruisseaux Standards Track [Page 67]
3755
3756RFC 6638 CalDAV Scheduling June 2012
3757
3758
3759 >> Response <<
3760
3761 HTTP/1.1 200 OK
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
3768
3769 BEGIN:VCALENDAR
3770 VERSION:2.0
3771 PRODID:-//Example Corp.//CalDAV Server//EN
3772 BEGIN:VEVENT
3773 UID:9263504FD3AD
3774 SEQUENCE:0
3775 DTSTAMP:20090602T190420Z
3776 DTSTART:20090602T160000Z
3777 DTEND:20090602T170000Z
3778 TRANSP:OPAQUE
3779 SUMMARY:Lunch
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
3791 END:VEVENT
3792 END:VCALENDAR
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810Daboo & Desruisseaux Standards Track [Page 68]
3811
3812RFC 6638 CalDAV Scheduling June 2012
3813
3814
3815B.5. Example: "Organizer" Requesting Busy Time Information
3816
3817 In this example, Cyrus requests the busy time information of
3818 Wilfredo, Bernard, and Mike.
3819
3820 >> Request <<
3821
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
3826
3827 BEGIN:VCALENDAR
3828 VERSION:2.0
3829 PRODID:-//Example Corp.//CalDAV Client//EN
3830 METHOD:REQUEST
3831 BEGIN:VFREEBUSY
3832 UID:4FD3AD926350
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
3840 END:VFREEBUSY
3841 END:VCALENDAR
3842
3843 >> Response <<
3844
3845 HTTP/1.1 200 OK
3846 Date: Tue, 02 Jun 2009 20:07:34 GMT
3847 Content-Type: application/xml; charset="utf-8"
3848 Content-Length: xxxx
3849
3850 <?xml version="1.0" encoding="utf-8" ?>
3851 <C:schedule-response xmlns:D="DAV:"
3852 xmlns:C="urn:ietf:params:xml:ns:caldav">
3853 <C:response>
3854 <C:recipient>
3855 <D:href>mailto:wilfredo@example.com</D:href>
3856 </C:recipient>
3857 <C:request-status>2.0;Success</C:request-status>
3858 <C:calendar-data>BEGIN:VCALENDAR
3859 VERSION:2.0
3860 PRODID:-//Example Corp.//CalDAV Server//EN
3861 METHOD:REPLY
3862 BEGIN:VFREEBUSY
3863
3864
3865
3866Daboo & Desruisseaux Standards Track [Page 69]
3867
3868RFC 6638 CalDAV Scheduling June 2012
3869
3870
3871 UID:4FD3AD926350
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
3879 END:VFREEBUSY
3880 END:VCALENDAR
3881 </C:calendar-data>
3882 </C:response>
3883 <C:response>
3884 <C:recipient>
3885 <D:href>mailto:bernard@example.net</D:href>
3886 </C:recipient>
3887 <C:request-status>2.0;Success</C:request-status>
3888 <C:calendar-data>BEGIN:VCALENDAR
3889 VERSION:2.0
3890 PRODID:-//Example Corp.//CalDAV Server//EN
3891 METHOD:REPLY
3892 BEGIN:VFREEBUSY
3893 UID:4FD3AD926350
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
3902 END:VFREEBUSY
3903 END:VCALENDAR
3904 </C:calendar-data>
3905 </C:response>
3906 <C:response>
3907 <C:recipient>
3908 <D:href>mailto:mike@example.org</D:href>
3909 </C:recipient>
3910 <C:request-status>3.7;Invalid calendar user</C:request-status>
3911 </C:response>
3912 </C:schedule-response>
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922Daboo & Desruisseaux Standards Track [Page 70]
3923
3924RFC 6638 CalDAV Scheduling June 2012
3925
3926
3927B.6. Example: User Attempting to Invite "Attendee" on Behalf of
3928 "Organizer"
3929
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.
3934
3935 >> Request <<
3936
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
3941 If-None-Match: *
3942
3943 BEGIN:VCALENDAR
3944 VERSION:2.0
3945 PRODID:-//Example Corp.//CalDAV Client//EN
3946 BEGIN:VEVENT
3947 UID:3504F926D3AD
3948 SEQUENCE:0
3949 DTSTAMP:20090602T190221Z
3950 DTSTART:20090602T230000Z
3951 DTEND:20090603T000000Z
3952 TRANSP:OPAQUE
3953 SUMMARY:Dinner
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
3959 e.net
3960 END:VEVENT
3961 END:VCALENDAR
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978Daboo & Desruisseaux Standards Track [Page 71]
3979
3980RFC 6638 CalDAV Scheduling June 2012
3981
3982
3983 >> Response <<
3984
3985 HTTP/1.1 403 Forbidden
3986 Content-Type: application/xml; charset="utf-8"
3987 Content-Length: xxxx
3988
3989 <?xml version="1.0" encoding="utf-8" ?>
3990 <D:error xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
3991 <D:need-privileges>
3992 <D:resource>
3993 <D:href>/home/wilfredo/calendars/outbox/</D:href>
3994 <D:privilege><C:schedule-send-invite/></D:privilege>
3995 </D:resource>
3996 </D:need-privileges>
3997 </D:error>
3998
3999B.7. Example: "Attendee" Declining an Instance of a Recurring Event
4000
4001 In the following example, Bernard declines the second recurrence
4002 instance of a daily recurring event he's been invited to by Cyrus.
4003
4004 >> Request <<
4005
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"
4011
4012 BEGIN:VCALENDAR
4013 VERSION:2.0
4014 PRODID:-//Example Corp.//CalDAV Client//EN
4015 BEGIN:VTIMEZONE
4016 TZID:America/Montreal
4017 BEGIN:STANDARD
4018 DTSTART:20071104T020000
4019 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4020 TZNAME:EST
4021 TZOFFSETFROM:-0400
4022 TZOFFSETTO:-0500
4023 END:STANDARD
4024 BEGIN:DAYLIGHT
4025 DTSTART:20070311T020000
4026 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4027 TZNAME:EDT
4028 TZOFFSETFROM:-0500
4029 TZOFFSETTO:-0400
4030 END:DAYLIGHT
4031
4032
4033
4034Daboo & Desruisseaux Standards Track [Page 72]
4035
4036RFC 6638 CalDAV Scheduling June 2012
4037
4038
4039 END:VTIMEZONE
4040 BEGIN:VEVENT
4041 UID:9263504FD3AD
4042 SEQUENCE:0
4043 DTSTAMP:20090602T185254Z
4044 DTSTART;TZID=America/Montreal:20090601T150000
4045 DTEND;TZID=America/Montreal:20090601T160000
4046 RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
4047 TRANSP:OPAQUE
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
4054 e.net
4055 END:VEVENT
4056 BEGIN:VEVENT
4057 UID:9263504FD3AD
4058 SEQUENCE:0
4059 DTSTAMP:20090603T183823Z
4060 RECURRENCE-ID;TZID=America/Montreal:20090602T150000
4061 DTSTART;TZID=America/Montreal:20090602T150000
4062 DTEND;TZID=America/Montreal:20090602T160000
4063 TRANSP:TRANSPARENT
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
4070 e.net
4071 END:VEVENT
4072 END:VCALENDAR
4073
4074 >> Response <<
4075
4076 HTTP/1.1 200 OK
4077 Content-Length: 0
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"
4082
4083
4084
4085
4086
4087
4088
4089
4090Daboo & Desruisseaux Standards Track [Page 73]
4091
4092RFC 6638 CalDAV Scheduling June 2012
4093
4094
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
4098 collection:
4099
4100 >> Request <<
4101
4102 GET /home/cyrus/calendars/inbox/9263504FD3AD.ics HTTP/1.1
4103 Host: cal.example.com
4104
4105 >> Response <<
4106
4107 HTTP/1.1 200 OK
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
4113
4114 BEGIN:VCALENDAR
4115 VERSION:2.0
4116 PRODID:-//Example Corp.//CalDAV Client//EN
4117 METHOD:REPLY
4118 BEGIN:VTIMEZONE
4119 TZID:America/Montreal
4120 BEGIN:STANDARD
4121 DTSTART:20071104T020000
4122 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4123 TZNAME:EST
4124 TZOFFSETFROM:-0400
4125 TZOFFSETTO:-0500
4126 END:STANDARD
4127 BEGIN:DAYLIGHT
4128 DTSTART:20070311T020000
4129 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4130 TZNAME:EDT
4131 TZOFFSETFROM:-0500
4132 TZOFFSETTO:-0400
4133 END:DAYLIGHT
4134 END:VTIMEZONE
4135 BEGIN:VEVENT
4136 UID:9263504FD3AD
4137 SEQUENCE:0
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
4143
4144
4145
4146Daboo & Desruisseaux Standards Track [Page 74]
4147
4148RFC 6638 CalDAV Scheduling June 2012
4149
4150
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
4155 END:VEVENT
4156 END:VCALENDAR
4157
4158B.8. Example: "Attendee" Removing an Instance of a Recurring Event
4159
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.
4164
4165 >> Request <<
4166
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"
4172
4173 BEGIN:VCALENDAR
4174 VERSION:2.0
4175 PRODID:-//Example Corp.//CalDAV Client//EN
4176 BEGIN:VTIMEZONE
4177 TZID:America/Montreal
4178 BEGIN:STANDARD
4179 DTSTART:20071104T020000
4180 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4181 TZNAME:EST
4182 TZOFFSETFROM:-0400
4183 TZOFFSETTO:-0500
4184 END:STANDARD
4185 BEGIN:DAYLIGHT
4186 DTSTART:20070311T020000
4187 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4188 TZNAME:EDT
4189 TZOFFSETFROM:-0500
4190 TZOFFSETTO:-0400
4191 END:DAYLIGHT
4192 END:VTIMEZONE
4193 BEGIN:VEVENT
4194 UID:9263504FD3AD
4195 SEQUENCE:0
4196 DTSTAMP:20090602T185254Z
4197 DTSTART;TZID=America/Montreal:20090601T150000
4198 DTEND;TZID=America/Montreal:20090601T160000
4199
4200
4201
4202Daboo & Desruisseaux Standards Track [Page 75]
4203
4204RFC 6638 CalDAV Scheduling June 2012
4205
4206
4207 RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
4208 EXDATE;TZID=America/Montreal:20090603T150000
4209 TRANSP:OPAQUE
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
4216 e.net
4217 END:VEVENT
4218 BEGIN:VEVENT
4219 UID:9263504FD3AD
4220 SEQUENCE:0
4221 DTSTAMP:20090603T183823Z
4222 RECURRENCE-ID;TZID=America/Montreal:20090602T150000
4223 DTSTART;TZID=America/Montreal:20090602T150000
4224 DTEND;TZID=America/Montreal:20090602T160000
4225 TRANSP:TRANSPARENT
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
4232 e.net
4233 END:VEVENT
4234 END:VCALENDAR
4235
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
4239 collection:
4240
4241 >> Request <<
4242
4243 GET /home/cyrus/calendars/inbox/6504923FD3AD.ics HTTP/1.1
4244 Host: cal.example.com
4245
4246 >> Response <<
4247
4248 HTTP/1.1 200 OK
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
4254
4255
4256
4257
4258Daboo & Desruisseaux Standards Track [Page 76]
4259
4260RFC 6638 CalDAV Scheduling June 2012
4261
4262
4263 BEGIN:VCALENDAR
4264 VERSION:2.0
4265 PRODID:-//Example Corp.//CalDAV Client//EN
4266 METHOD:REPLY
4267 BEGIN:VTIMEZONE
4268 TZID:America/Montreal
4269 BEGIN:STANDARD
4270 DTSTART:20071104T020000
4271 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4272 TZNAME:EST
4273 TZOFFSETFROM:-0400
4274 TZOFFSETTO:-0500
4275 END:STANDARD
4276 BEGIN:DAYLIGHT
4277 DTSTART:20070311T020000
4278 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4279 TZNAME:EDT
4280 TZOFFSETFROM:-0500
4281 TZOFFSETTO:-0400
4282 END:DAYLIGHT
4283 END:VTIMEZONE
4284 BEGIN:VEVENT
4285 UID:9263504FD3AD
4286 SEQUENCE:0
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
4296 END:VEVENT
4297 END:VCALENDAR
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314Daboo & Desruisseaux Standards Track [Page 77]
4315
4316RFC 6638 CalDAV Scheduling June 2012
4317
4318
4319Authors' Addresses
4320
4321 Cyrus Daboo
4322 Apple Inc.
4323 1 Infinite Loop
4324 Cupertino, CA 95014
4325 USA
4326
4327 EMail: cyrus@daboo.name
4328 URI: http://www.apple.com/
4329
4330
4331 Bernard Desruisseaux
4332 Oracle Corporation
4333 600 Blvd. de Maisonneuve West
4334 Suite 1900
4335 Montreal, QC H3A 3J2
4336 CANADA
4337
4338 EMail: bernard.desruisseaux@oracle.com
4339 URI: http://www.oracle.com/
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370Daboo & Desruisseaux Standards Track [Page 78]
4371
4372