]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/docs/draft-desruisseaux-caldav-sched-10.txt
fbsync/fbpost: Trying to be able to more often fetch pictures in its original size.
[friendica-addons.git] / dav / SabreDAV / docs / draft-desruisseaux-caldav-sched-10.txt
1
2
3
4 Network Working Group                                           C. Daboo
5 Internet-Draft                                                Apple Inc.
6 Updates: 4791 (if approved)                              B. Desruisseaux
7 Intended status: Standards Track                                  Oracle
8 Expires: March 10, 2012                                September 7, 2011
9
10
11                  CalDAV Scheduling Extensions to WebDAV
12                    draft-desruisseaux-caldav-sched-10
13
14 Abstract
15
16    This document defines extensions to the CalDAV "calendar-access"
17    feature to specify a standard way of performing scheduling
18    transactions with iCalendar-based calendar components.  This document
19    defines the "calendar-auto-schedule" feature of CalDAV.
20
21 Status of This Memo
22
23    This Internet-Draft is submitted in full conformance with the
24    provisions of BCP 78 and BCP 79.
25
26    Internet-Drafts are working documents of the Internet Engineering
27    Task Force (IETF).  Note that other groups may also distribute
28    working documents as Internet-Drafts.  The list of current Internet-
29    Drafts is at http://datatracker.ietf.org/drafts/current/.
30
31    Internet-Drafts are draft documents valid for a maximum of six months
32    and may be updated, replaced, or obsoleted by other documents at any
33    time.  It is inappropriate to use Internet-Drafts as reference
34    material or to cite them other than as "work in progress."
35
36    This Internet-Draft will expire on March 10, 2012.
37
38 Copyright Notice
39
40    Copyright (c) 2011 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 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 1]
56 \f
57 Internet-Draft        CalDAV Scheduling Extensions        September 2011
58
59
60    This document may contain material from IETF Documents or IETF
61    Contributions published or made publicly available before November
62    10, 2008.  The person(s) controlling the copyright in some of this
63    material may not have granted the IETF Trust the right to allow
64    modifications of such material outside the IETF Standards Process.
65    Without obtaining an adequate license from the person(s) controlling
66    the copyright in such materials, this document may not be modified
67    outside the IETF Standards Process, and derivative works of it may
68    not be created outside the IETF Standards Process, except to format
69    it for publication as an RFC or to translate it into languages other
70    than English.
71
72 Table of Contents
73
74    1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  6
75      1.1.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  6
76      1.2.  Approach . . . . . . . . . . . . . . . . . . . . . . . . .  7
77      1.3.  Limitations  . . . . . . . . . . . . . . . . . . . . . . .  7
78      1.4.  Notational Conventions . . . . . . . . . . . . . . . . . .  8
79      1.5.  XML Namespaces and Processing  . . . . . . . . . . . . . .  8
80    2.  Scheduling Process . . . . . . . . . . . . . . . . . . . . . . 10
81    3.  Scheduling Support . . . . . . . . . . . . . . . . . . . . . . 11
82      3.1.  Example OPTIONS Request  . . . . . . . . . . . . . . . . . 11
83    4.  Scheduling Collections . . . . . . . . . . . . . . . . . . . . 12
84      4.1.  Scheduling Outbox Collection . . . . . . . . . . . . . . . 12
85      4.2.  Scheduling Inbox Collection  . . . . . . . . . . . . . . . 13
86      4.3.  Calendaring Reports Extensions . . . . . . . . . . . . . . 15
87    5.  Scheduling Transactions  . . . . . . . . . . . . . . . . . . . 16
88      5.1.  Identifying Scheduling Object Resources  . . . . . . . . . 16
89      5.2.  Handling Scheduling Object Resources . . . . . . . . . . . 16
90        5.2.1.  Organizer Scheduling Object Resources  . . . . . . . . 16
91          5.2.1.1.  Create . . . . . . . . . . . . . . . . . . . . . . 17
92          5.2.1.2.  Modify . . . . . . . . . . . . . . . . . . . . . . 18
93          5.2.1.3.  Remove . . . . . . . . . . . . . . . . . . . . . . 20
94        5.2.2.  Attendee Scheduling Object Resources . . . . . . . . . 20
95          5.2.2.1.  Allowed Attendee Changes . . . . . . . . . . . . . 20
96          5.2.2.2.  Create . . . . . . . . . . . . . . . . . . . . . . 21
97          5.2.2.3.  Modify . . . . . . . . . . . . . . . . . . . . . . 22
98          5.2.2.4.  Remove . . . . . . . . . . . . . . . . . . . . . . 23
99        5.2.3.  HTTP Methods . . . . . . . . . . . . . . . . . . . . . 24
100          5.2.3.1.  PUT  . . . . . . . . . . . . . . . . . . . . . . . 24
101          5.2.3.2.  COPY . . . . . . . . . . . . . . . . . . . . . . . 24
102          5.2.3.3.  MOVE . . . . . . . . . . . . . . . . . . . . . . . 25
103          5.2.3.4.  DELETE . . . . . . . . . . . . . . . . . . . . . . 26
104        5.2.4.  Additional Method Preconditions  . . . . . . . . . . . 26
105          5.2.4.1.  CALDAV:unique-scheduling-object-resource
106                    Precondition . . . . . . . . . . . . . . . . . . . 26
107          5.2.4.2.  CALDAV:same-organizer-in-all-components
108
109
110
111 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 2]
112 \f
113 Internet-Draft        CalDAV Scheduling Extensions        September 2011
114
115
116                    Precondition . . . . . . . . . . . . . . . . . . . 26
117          5.2.4.3.  CALDAV:allowed-organizer-scheduling-object-chan
118                    Precondition . . . . . . . . . . . . . . . . . . . 27
119          5.2.4.4.  CALDAV:allowed-attendee-scheduling-object-chang
120                    Precondition . . . . . . . . . . . . . . . . . . . 28
121        5.2.5.  DTSTAMP and SEQUENCE Properties  . . . . . . . . . . . 28
122        5.2.6.  Restrict Recurrence Instances Sent to Attendees  . . . 28
123        5.2.7.  Forcing the Server to Send a Scheduling Message  . . . 29
124    6.  Processing Incoming Scheduling Messages  . . . . . . . . . . . 30
125      6.1.  Processing Organizer Requests, Additions, and
126            Cancellations  . . . . . . . . . . . . . . . . . . . . . . 30
127      6.2.  Processing Attendee Replies  . . . . . . . . . . . . . . . 31
128      6.3.  Scheduling Messages as Notifications . . . . . . . . . . . 31
129      6.4.  Default Calendar Collection  . . . . . . . . . . . . . . . 31
130        6.4.1.  Additional Method Preconditions  . . . . . . . . . . . 32
131          6.4.1.1.  CALDAV:default-calendar-needed Precondition  . . . 32
132          6.4.1.2.  CALDAV:valid-schedule-default-calendar-URL
133                    Precondition . . . . . . . . . . . . . . . . . . . 33
134    7.  Request for Busy Time Information  . . . . . . . . . . . . . . 34
135      7.1.  Status Codes . . . . . . . . . . . . . . . . . . . . . . . 34
136      7.2.  Additional Method Preconditions  . . . . . . . . . . . . . 34
137        7.2.1.  DAV:need-privileges Precondition . . . . . . . . . . . 34
138        7.2.2.  CALDAV:supported-collection Precondition . . . . . . . 35
139        7.2.3.  CALDAV:supported-calendar-data Precondition  . . . . . 36
140        7.2.4.  CALDAV:valid-calendar-data Precondition  . . . . . . . 36
141        7.2.5.  CALDAV:valid-scheduling-message Precondition . . . . . 37
142        7.2.6.  CALDAV:valid-organizer Precondition  . . . . . . . . . 37
143        7.2.7.  CALDAV:max-resource-size Precondition  . . . . . . . . 38
144      7.3.  Response to a POST request . . . . . . . . . . . . . . . . 38
145    8.  Avoiding Conflicts when Updating Scheduling Object
146        Resources  . . . . . . . . . . . . . . . . . . . . . . . . . . 40
147      8.1.  PUT  . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
148      8.2.  DELETE, COPY or MOVE . . . . . . . . . . . . . . . . . . . 42
149    9.  Other Scheduling Considerations  . . . . . . . . . . . . . . . 44
150      9.1.  Attendee Participation Status  . . . . . . . . . . . . . . 44
151      9.2.  Schedule Status Values . . . . . . . . . . . . . . . . . . 45
152    10. Additional iCalendar Property Parameters . . . . . . . . . . . 49
153      10.1. Schedule Agent Parameter . . . . . . . . . . . . . . . . . 49
154      10.2. Schedule Force Send Parameter  . . . . . . . . . . . . . . 50
155      10.3. Schedule Status Parameter  . . . . . . . . . . . . . . . . 51
156    11. Additional Message Header Fields . . . . . . . . . . . . . . . 53
157      11.1. Schedule-Reply Request Header  . . . . . . . . . . . . . . 53
158      11.2. Schedule-Tag Response Header . . . . . . . . . . . . . . . 53
159      11.3. If-Schedule-Tag-Match Request Header . . . . . . . . . . . 54
160    12. Additional WebDAV Properties . . . . . . . . . . . . . . . . . 55
161      12.1. CALDAV:schedule-calendar-transp Property . . . . . . . . . 55
162      12.2. CALDAV:schedule-default-calendar-URL Property  . . . . . . 56
163      12.3. CALDAV:schedule-tag Property . . . . . . . . . . . . . . . 57
164
165
166
167 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 3]
168 \f
169 Internet-Draft        CalDAV Scheduling Extensions        September 2011
170
171
172    13. Scheduling Access Control  . . . . . . . . . . . . . . . . . . 58
173      13.1. Scheduling Privileges  . . . . . . . . . . . . . . . . . . 58
174        13.1.1. Privileges on Scheduling Inbox Collections . . . . . . 58
175          13.1.1.1. CALDAV:schedule-deliver Privilege  . . . . . . . . 58
176          13.1.1.2. CALDAV:schedule-deliver-invite Privilege . . . . . 59
177          13.1.1.3. CALDAV:schedule-deliver-reply Privilege  . . . . . 59
178          13.1.1.4. CALDAV:schedule-query-freebusy Privilege . . . . . 59
179        13.1.2. Privileges on Scheduling Outbox Collections  . . . . . 59
180          13.1.2.1. CALDAV:schedule-send Privilege . . . . . . . . . . 59
181          13.1.2.2. CALDAV:schedule-send-invite Privilege  . . . . . . 60
182          13.1.2.3. CALDAV:schedule-send-reply Privilege . . . . . . . 60
183          13.1.2.4. CALDAV:schedule-send-freebusy Privilege  . . . . . 60
184        13.1.3. Aggregation of Scheduling Privileges . . . . . . . . . 60
185      13.2. Additional Principal Properties  . . . . . . . . . . . . . 61
186        13.2.1. CALDAV:schedule-inbox-URL Property . . . . . . . . . . 61
187        13.2.2. CALDAV:schedule-outbox-URL Property  . . . . . . . . . 62
188        13.2.3. CALDAV:calendar-user-address-set Property  . . . . . . 62
189        13.2.4. CALDAV:calendar-user-type Property . . . . . . . . . . 63
190    14. XML Element Definitions  . . . . . . . . . . . . . . . . . . . 65
191      14.1. CALDAV:schedule-response XML Element . . . . . . . . . . . 65
192      14.2. CALDAV:response XML Element  . . . . . . . . . . . . . . . 65
193      14.3. CALDAV:recipient XML Element . . . . . . . . . . . . . . . 65
194      14.4. CALDAV:request-status XML Element  . . . . . . . . . . . . 66
195    15. Security Considerations  . . . . . . . . . . . . . . . . . . . 67
196      15.1. Verifying Scheduling Transactions  . . . . . . . . . . . . 67
197      15.2. Verifying Busy Time Information Requests . . . . . . . . . 67
198      15.3. Privacy Issues . . . . . . . . . . . . . . . . . . . . . . 68
199    16. IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 69
200      16.1. Message Header Field Registrations . . . . . . . . . . . . 69
201        16.1.1. Schedule-Reply . . . . . . . . . . . . . . . . . . . . 69
202        16.1.2. Schedule-Tag . . . . . . . . . . . . . . . . . . . . . 69
203        16.1.3. If-Schedule-Tag-Match  . . . . . . . . . . . . . . . . 69
204      16.2. iCalendar Property Parameter Registrations . . . . . . . . 70
205      16.3. iCalendar REQUEST-STATUS Value Registrations . . . . . . . 70
206      16.4. Additional iCalendar Elements Registries . . . . . . . . . 70
207        16.4.1. Schedule Agent Values Registry . . . . . . . . . . . . 70
208        16.4.2. Schedule Force Send Values Registry  . . . . . . . . . 71
209    17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 72
210    18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 73
211      18.1. Normative References . . . . . . . . . . . . . . . . . . . 73
212      18.2. Informative References . . . . . . . . . . . . . . . . . . 74
213    Appendix A.  Scheduling Privileges Summary . . . . . . . . . . . . 75
214      A.1.  Scheduling Inbox Privileges  . . . . . . . . . . . . . . . 75
215      A.2.  Scheduling Outbox Privileges . . . . . . . . . . . . . . . 75
216    Appendix B.  Example Scheduling Transactions . . . . . . . . . . . 77
217      B.1.  Example: Organizer Inviting Multiple Attendees . . . . . . 77
218      B.2.  Example: Attendee Receiving an Invitation  . . . . . . . . 79
219      B.3.  Example: Attendee Replying to an Invitation  . . . . . . . 81
220
221
222
223 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 4]
224 \f
225 Internet-Draft        CalDAV Scheduling Extensions        September 2011
226
227
228      B.4.  Example: Organizer Receiving a Reply to an Invitation  . . 83
229      B.5.  Example: Organizer Requesting Busy Time Information  . . . 85
230      B.6.  Example: User Attempting to Invite Attendee on behalf
231            of Organizer . . . . . . . . . . . . . . . . . . . . . . . 87
232      B.7.  Example: Attendee Declining an Instance of a Recurring
233            Event  . . . . . . . . . . . . . . . . . . . . . . . . . . 88
234      B.8.  Example: Attendee Removing an Instance of a Recurring
235            Event  . . . . . . . . . . . . . . . . . . . . . . . . . . 92
236    Appendix C.  Changes (to be removed by RFC Editor prior to
237                 publication)  . . . . . . . . . . . . . . . . . . . . 95
238      C.1.  Changes in -10 . . . . . . . . . . . . . . . . . . . . . . 95
239      C.2.  Changes in -09 . . . . . . . . . . . . . . . . . . . . . . 95
240      C.3.  Changes in -08 . . . . . . . . . . . . . . . . . . . . . . 96
241      C.4.  Changes in -07 . . . . . . . . . . . . . . . . . . . . . . 97
242      C.5.  Changes in -06 . . . . . . . . . . . . . . . . . . . . . . 97
243      C.6.  Changes in -05 . . . . . . . . . . . . . . . . . . . . . . 98
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 5]
280 \f
281 Internet-Draft        CalDAV Scheduling Extensions        September 2011
282
283
284 1.  Introduction
285
286    This document specifies extensions to the CalDAV "calendar-access"
287    [RFC4791] feature to enable scheduling of iCalendar-based [RFC5545]
288    calendar components between Calendar Users.  This extension leverages
289    the scheduling methods defined in the iCalendar Transport-independent
290    Interoperability Protocol (iTIP) [RFC5546] to permit Calendar Users
291    to perform scheduling transactions such as schedule, reschedule,
292    respond to scheduling request or cancel calendar components, as well
293    as search for busy time information.
294
295    Discussion of this Internet-Draft is taking place on the mailing list
296    <https://www.ietf.org/mailman/listinfo/caldav>.
297
298 1.1.  Terminology
299
300    This specification uses much of the same terminology as iCalendar
301    [RFC5545], iTIP [RFC5546], WebDAV [RFC4918], and CalDAV [RFC4791].
302    The following definitions are provided to aid the reader in
303    understanding this specification.
304
305    Calendar User (CU):  An entity (often a human) that accesses calendar
306       information [RFC3283].
307
308    Calendar collection:  A resource that acts as a container of
309       references to child calendar object resources [RFC4791].
310
311    Calendar object resource:  A resource representing a calendar object
312       (event, to-do, journal entry, or other calendar components)
313       [RFC4791].
314
315    Scheduling object resource:  A calendar object resource contained in
316       a calendar collection for which the server will take care of
317       sending scheduling messages on behalf of the owner of the calendar
318       collection.
319
320    Organizer scheduling object resource:  A scheduling object resource
321       owned by an Organizer.
322
323    Attendee scheduling object resource:  A scheduling object resource
324       owned by an Attendee.
325
326    Automatic scheduling transaction:  Add, change or remove operations
327       on a scheduling object resource for which the server will deliver
328       scheduling messages to other Calendar Users.
329
330
331
332
333
334
335 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 6]
336 \f
337 Internet-Draft        CalDAV Scheduling Extensions        September 2011
338
339
340    Scheduling message:  A calendar object that describes a scheduling
341       transaction such as schedule, reschedule, reply, or cancel.
342
343    Scheduling Outbox collection:  A resource at which busy time
344       information requests are targeted.
345
346    Scheduling Inbox collection:  A collection in which incoming
347       scheduling messages are delivered.
348
349 1.2.  Approach
350
351    iTIP [RFC5546] outlines a model where Calendar Users exchange
352    scheduling messages with one another.  Often times, clients are made
353    responsible for generating and sending scheduling messages as well as
354    processing incoming scheduling messages.  This approach yields a
355    number of problems, including:
356
357    o  For most updates to a calendar component, clients are responsible
358       for sending appropriate scheduling messages to the Organizer or
359       the Attendees.
360
361    o  The handling of incoming scheduling messages and the updates to
362       calendars impacted by those messages only occurs when clients are
363       active.
364
365    o  Due to the update latency, it is possible for calendars of
366       different Calendar Users to reflect different, inaccurate states.
367
368    This specification uses an alternative approach where the server is
369    made responsible for sending scheduling messages and processing
370    incoming scheduling messages.  This approach frees the clients from
371    the submission and processing of scheduling messages and ensures
372    better consistency of calendar data across users' calendars.  The
373    operation of creating, modifying or deleting a calendar component in
374    a calendar is enough to trigger the server to deliver the necessary
375    scheduling messages to the appropriate Calendar Users.
376
377 1.3.  Limitations
378
379    While the scheduling features described in this specification are
380    based on iTIP [RFC5546], some of its more advanced features have
381    deliberately been left out in order to keep this specification
382    simple.  In particular, the following iTIP [RFC5546] features are not
383    covered: publishing, countering, delegating, refreshing and
384    forwarding calendar components, as well as replacing the Organizer of
385    a calendar component.
386
387    The goal of this specification is to provide the essential scheduling
388
389
390
391 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 7]
392 \f
393 Internet-Draft        CalDAV Scheduling Extensions        September 2011
394
395
396    features needed.  It is expected that future extensions will be
397    developed to address the more advanced features.
398
399 1.4.  Notational Conventions
400
401    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
402    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
403    document are to be interpreted as described in [RFC2119].
404
405    The Augmented BNF (ABNF) syntax used by this document to specify the
406    format definition of new iCalendar elements is defined in [RFC5234].
407
408    The Augmented BNF (ABNF) syntax used by this document to specify the
409    format definition of new message header fields to be used with the
410    HTTP/1.1 protocol is described in Section 2.1 of [RFC2616].  Since
411    this Augmented BNF uses the basic production rules provided in
412    Section 2.2 of [RFC2616], these rules apply to this document as well.
413
414    The term "protected" is used in the Conformance field of WebDAV
415    property definitions as defined in Section 15 of [RFC4918].
416
417 1.5.  XML Namespaces and Processing
418
419    This document uses XML DTD fragments ([W3C.REC-xml-20081126], Section
420    3.2) as a purely notational convention.  WebDAV request and response
421    bodies cannot be validated by a DTD due to the specific extensibility
422    rules defined in Section 17 of [RFC4918] and due to the fact that all
423    XML elements defined by that specification use the XML namespace name
424    "DAV:".  In particular:
425
426    1.  element names use the "DAV:" namespace,
427
428    2.  element ordering is irrelevant unless explicitly stated,
429
430    3.  extension elements (elements not already defined as valid child
431        elements) may be added anywhere, except when explicitly stated
432        otherwise,
433
434    4.  extension attributes (attributes not already defined as valid for
435        this element) may be added anywhere, except when explicitly
436        stated otherwise.
437
438    The XML elements specified in this document are defined in the
439    "urn:ietf:params:xml:ns:caldav" XML namespace registered by CalDAV
440    [RFC4791].
441
442    When XML element types in the namespaces "DAV:" and
443    "urn:ietf:params:xml:ns:caldav" are referenced in this document
444
445
446
447 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 8]
448 \f
449 Internet-Draft        CalDAV Scheduling Extensions        September 2011
450
451
452    outside of the context of an XML fragment, the strings "DAV:" and
453    "CALDAV:" will be prefixed to the element types, respectively.
454
455    This document inherits, and sometimes extends, DTD productions from
456    Section 14 of [RFC4918].
457
458    Also note that some CalDAV XML element names are identical to WebDAV
459    XML element names, though their namespace differs.  Care must be
460    taken not to confuse the two sets of names.
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503 Daboo & Desruisseaux     Expires March 10, 2012                 [Page 9]
504 \f
505 Internet-Draft        CalDAV Scheduling Extensions        September 2011
506
507
508 2.  Scheduling Process
509
510    The process of scheduling an event between different parties often
511    involves a series of steps with different actors playing particular
512    roles during the whole process.  Typically there is an event
513    "Organizer" whose role is to schedule an event between one or more
514    "Attendees", and this is done by sending out invitations and handling
515    responses from each Attendee.
516
517    This process can typically be broken down into two phases.
518
519    In the first phase, the Organizer will query the busy time
520    information of each Attendee to determine the most appropriate time
521    for the event.  This request is sometimes called a "freebusy" lookup.
522
523    In the second phase, the Organizer sends out invitations to each
524    Attendee using the time previously determined from the freebusy
525    lookup.  There then follows exchanges between Organizer and Attendees
526    regarding the invitation.  Some Attendees may choose to attend at the
527    time proposed by the Organizer, others may decline to attend.  The
528    Organizer needs to process each of the replies from the Attendees and
529    take appropriate action to confirm the event, reschedule it or
530    perhaps cancel it.
531
532    The user expectation as to how a calendaring and scheduling system
533    should respond in each of these two phases is somewhat different.  In
534    the case of a freebusy lookup, users expect to get back results
535    immediately so that they can then move on to the invitation phase as
536    quickly as possible.  In the case of invitations, it is expected that
537    each Attendee will reply with their participation status in their own
538    time, so delays in receiving replies are anticipated.  Thus
539    calendaring and scheduling systems should treat these two operational
540    phases in different ways to accommodate the user expectations, which
541    is what this specification does.
542
543    While the scenario described above only covers the case of scheduling
544    events between Calendar Users, and requesting busy time information,
545    this specification also provides support for the scheduling of to-dos
546    between Calendar Users.  For the majority of the following
547    discussion, scheduling of events and freebusy lookups will be
548    discussed, as these are the more common operations.
549
550
551
552
553
554
555
556
557
558
559 Daboo & Desruisseaux     Expires March 10, 2012                [Page 10]
560 \f
561 Internet-Draft        CalDAV Scheduling Extensions        September 2011
562
563
564 3.  Scheduling Support
565
566    A server that supports the features described in this document MUST
567    include "calendar-auto-schedule" as a field in the DAV response
568    header from an OPTIONS request on any resource that supports any
569    scheduling actions, properties, privileges or methods.
570
571    To advertise support for the CalDAV "calendar-auto-schedule" feature
572    a server is REQUIRED to support and advertise support for the CalDAV
573    "calendar-access" [RFC4791] feature.
574
575 3.1.  Example OPTIONS Request
576
577    In this example, the OPTIONS response indicates that the server
578    supports the "calendar-access" and "calendar-auto-schedule" features
579    and that the resource "/home/cyrus/calendars/inbox/" supports the
580    scheduling actions, properties, privileges and methods defined in
581    this specification.
582
583    >> Request <<
584
585    OPTIONS /home/cyrus/calendars/inbox/ HTTP/1.1
586    Host: cal.example.com
587
588    >> Response <<
589
590    HTTP/1.1 204 No Content
591    Date: Thu, 31 Mar 2011 09:00:00 GMT
592    Allow: OPTIONS, GET, HEAD, DELETE, TRACE, PROPFIND
593    Allow: PROPPATCH, LOCK, UNLOCK, REPORT, ACL
594    DAV: 1, 2, 3, access-control
595    DAV: calendar-access, calendar-auto-schedule
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615 Daboo & Desruisseaux     Expires March 10, 2012                [Page 11]
616 \f
617 Internet-Draft        CalDAV Scheduling Extensions        September 2011
618
619
620 4.  Scheduling Collections
621
622    This specification introduces new collection resource types that are
623    used to manage scheduling object resources, and scheduling
624    privileges, as well as provide scheduling functionality.  It is the
625    server's responsibility to create these collection resources, and
626    clients have no way to create or delete them.
627
628 4.1.  Scheduling Outbox Collection
629
630    A scheduling Outbox collection is used as the target for busy time
631    information requests, and to manage privileges that apply to outgoing
632    scheduling requests.
633
634    A scheduling Outbox collection MUST report the DAV:collection and
635    CALDAV:schedule-outbox XML elements in the value of the DAV:
636    resourcetype property.  The element type declaration for CALDAV:
637    schedule-outbox is:
638
639       <!ELEMENT schedule-outbox EMPTY>
640
641    Example:
642
643       <D:resourcetype xmlns:D="DAV:">
644         <D:collection/>
645         <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
646       </D:resourcetype>
647
648    New WebDAV ACL [RFC3744] privileges can be set on the scheduling
649    Outbox collection to control who is allowed to send scheduling
650    messages on behalf of the Calendar User associated with the
651    scheduling Outbox collection.  See Section 13.1 for more details.
652
653    A scheduling Outbox collection MUST NOT be a child (at any depth) of
654    a calendar collection resource.
655
656    The following WebDAV properties specified in CalDAV "calendar-access"
657    [RFC4791] MAY also be defined on scheduling Outbox collections:
658
659       CALDAV:supported-calendar-component-set - when present this
660       indicates the allowed calendar component types for scheduling
661       messages submitted to the scheduling Outbox collection with the
662       POST method.
663
664       CALDAV:supported-calendar-data - when present this indicates the
665       allowed media types for scheduling messages submitted to the
666       scheduling Outbox collection with the POST method.
667
668
669
670
671 Daboo & Desruisseaux     Expires March 10, 2012                [Page 12]
672 \f
673 Internet-Draft        CalDAV Scheduling Extensions        September 2011
674
675
676       CALDAV:max-resource-size - when present this indicates the maximum
677       size in octets of a resource that the server is willing to accept
678       for scheduling messages submitted to the scheduling Outbox
679       collection with the POST method.
680
681       CALDAV:min-date-time - when present this indicates the earliest
682       date and time (in UTC) that the server is willing to accept for
683       any DATE or DATE-TIME value in scheduling messages submitted to
684       the scheduling Outbox collection with the POST method.
685
686       CALDAV:max-date-time - when present this indicates the latest date
687       and time (in UTC) that the server is willing to accept for any
688       DATE or DATE-TIME value in scheduling messages submitted to the
689       scheduling Outbox collection with the POST method.
690
691       CALDAV:max-attendees-per-instance - when present this indicates
692       the maximum number of ATTENDEE properties in any instance of
693       scheduling messages submitted to the scheduling Outbox collection
694       with the POST method.  Specifically, this limits the total number
695       of Attendees whose freebusy information can be queried in a single
696       request.
697
698    The use of child resources in a scheduling Outbox collection is
699    reserved for future revisions or extensions of this specification.
700
701 4.2.  Scheduling Inbox Collection
702
703    A scheduling Inbox collection contains copies of incoming scheduling
704    messages.  These may be requests sent by an Organizer, or replies
705    sent by an Attendee in response to a request.  The scheduling Inbox
706    collection is also used to manage scheduling privileges.
707
708    A scheduling Inbox collection MUST report the DAV:collection and
709    CALDAV:schedule-inbox XML elements in the value of the DAV:
710    resourcetype property.  The element type declaration for CALDAV:
711    schedule-inbox is:
712
713       <!ELEMENT schedule-inbox EMPTY>
714
715    Example:
716
717       <D:resourcetype xmlns:D="DAV:">
718         <D:collection/>
719         <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
720       </D:resourcetype>
721
722    Scheduling Inbox collections MUST only contain calendar object
723    resources that obey the restrictions specified in iTIP [RFC5546].
724
725
726
727 Daboo & Desruisseaux     Expires March 10, 2012                [Page 13]
728 \f
729 Internet-Draft        CalDAV Scheduling Extensions        September 2011
730
731
732    Consequently, scheduling Inbox collections MUST NOT contain any types
733    of collection resources.  Restrictions defined in Section 4.1 of
734    CalDAV "calendar-access" [RFC4791] on calendar object resources
735    contained in calendar collections (e.g., "UID" uniqueness) do not
736    apply to calendar object resources contained in a scheduling Inbox
737    collection.  Thus, multiple calendar object resources contained in a
738    scheduling Inbox collection can have the same "UID" property value
739    (i.e., multiple scheduling messages for the same calendar component).
740
741    New WebDAV ACL [RFC3744] privileges can be set on the scheduling
742    Inbox collection to control from whom the Calendar User associated
743    with the scheduling Inbox collection will accept scheduling messages
744    from.  See Section 13.1 for more details.
745
746    A scheduling Inbox collection MUST NOT be a child (at any depth) of a
747    calendar collection resource.
748
749    The following WebDAV properties specified in CalDAV "calendar-access"
750    [RFC4791] MAY also be defined on scheduling Inbox collections:
751
752       CALDAV:calendar-timezone - when present this contains a time zone
753       that the server can use when calendar date-time operations are
754       carried out, for example when a time-range CALDAV:calendar-query
755       REPORT is targeted at a scheduling Inbox collection.
756
757       CALDAV:supported-calendar-component-set - when present this
758       indicates the allowed calendar component types for scheduling
759       messages delivered to the scheduling Inbox collection.
760
761       CALDAV:supported-calendar-data - when present this indicates the
762       allowed media types for scheduling messages delivered to the
763       scheduling Inbox collection.
764
765       CALDAV:max-resource-size - when present this indicates the maximum
766       size in octets of a resource that the server is willing to accept
767       for scheduling messages delivered to the scheduling Inbox
768       collection.
769
770       CALDAV:min-date-time - when present this indicates the earliest
771       date and time (in UTC) that the server is willing to accept for
772       any DATE or DATE-TIME value in scheduling messages delivered to
773       the scheduling Inbox collection.
774
775       CALDAV:max-date-time - when present this indicates the latest date
776       and time (in UTC) that the server is willing to accept for any
777       DATE or DATE-TIME value in scheduling messages delivered to the
778       scheduling Inbox collection.
779
780
781
782
783 Daboo & Desruisseaux     Expires March 10, 2012                [Page 14]
784 \f
785 Internet-Draft        CalDAV Scheduling Extensions        September 2011
786
787
788       CALDAV:max-instances - when present this indicates the maximum
789       number of recurrence instances in scheduling messages delivered to
790       the scheduling Inbox collection.
791
792       CALDAV:max-attendees-per-instance - when present this indicates
793       the maximum number of ATTENDEE properties in any instance of
794       scheduling messages delivered to the scheduling Inbox collection.
795
796 4.3.  Calendaring Reports Extensions
797
798    This specification extends the CALDAV:calendar-query and CALDAV:
799    calendar-multiget REPORTs to return results for calendar object
800    resources in scheduling Inbox collections.
801
802    When a CALDAV:calendar-query REPORT includes a time-range query and
803    targets a scheduling Inbox collection, if any calendar object
804    resources contain "VEVENT" calendar components that do not include a
805    "DTSTART" iCalendar property (as allowed by iTIP [RFC5546]) then such
806    components MUST always match the time-range query test.
807
808    Note that the CALDAV:free-busy-query REPORT is not supported on
809    scheduling Inbox collections.
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839 Daboo & Desruisseaux     Expires March 10, 2012                [Page 15]
840 \f
841 Internet-Draft        CalDAV Scheduling Extensions        September 2011
842
843
844 5.  Scheduling Transactions
845
846    When a calendar object resource is created, modified or removed from
847    a calendar collection, the server examines the calendar data and
848    checks to see whether the data represents a scheduling object
849    resource.  If it does, the server will automatically attempt to
850    deliver a scheduling message to the appropriate Calendar Users.
851    Several types of scheduling operations can occur in this case,
852    equivalent to iTIP "REQUEST", "REPLY", "CANCEL", and "ADD"
853    operations.
854
855 5.1.  Identifying Scheduling Object Resources
856
857    Calendar object resources on which the server performs automatic
858    scheduling transactions are referred to as scheduling object
859    resources.  There are two types of scheduling object resources:
860    organizer scheduling object resources, and attendee scheduling object
861    resources.
862
863    A calendar object resource is considered to be a valid organizer
864    scheduling object resource if the "ORGANIZER" iCalendar property is
865    present and set in all the calendar components to a value that
866    matches one of the calendar user addresses of the owner of the
867    calendar collection.
868
869    A calendar object resource is considered to be a valid attendee
870    scheduling object resource if the "ORGANIZER" iCalendar property is
871    present and set in all the calendar components to the same value and
872    doesn't match one of the calendar user addresses of the owner of the
873    calendar collection, and at least one of the "ATTENDEE" iCalendar
874    property values matches one of the calendar user addresses of the
875    owner of the calendar collection.
876
877    The creation of attendee scheduling object resources is typically
878    done by the server, with the resource being created in an appropriate
879    calendar collection (see Section 6.4).
880
881 5.2.  Handling Scheduling Object Resources
882
883    The server's behavior when processing a scheduling object resource
884    depends on whether it is owned by the Organizer or an Attendee
885    specified in the calendar data.
886
887 5.2.1.  Organizer Scheduling Object Resources
888
889    An Organizer can create, modify or remove a scheduling object
890    resource.  The create, modify and remove behaviors for the server are
891    each described next, and the way these are invoked via HTTP requests
892
893
894
895 Daboo & Desruisseaux     Expires March 10, 2012                [Page 16]
896 \f
897 Internet-Draft        CalDAV Scheduling Extensions        September 2011
898
899
900    is described in Section 5.2.3.
901
902    The Organizer of a calendar component may also be an Attendee of that
903    calendar component.  In such cases the server MUST NOT send a
904    scheduling message to the Attendee that matches the Organizer.
905
906 5.2.1.1.  Create
907
908    When a scheduling object resource is created by the Organizer, the
909    server will inspect each "ATTENDEE" property to determine if a
910    scheduling message should be delivered to this Attendee according to
911    the value of the "SCHEDULE-AGENT" property parameter (see
912    Section 10.1) as described in the table below:
913
914               +------------------+-------------+
915               | SCHEDULE-AGENT   | iTIP METHOD |
916               +==================+=============+
917               | SERVER (default) | REQUEST     |
918               +------------------+-------------+
919               | CLIENT           | --          |
920               +------------------+-------------+
921               | NONE             | --          |
922               +------------------+-------------+
923
924    The attempt to deliver the scheduling message will either succeed or
925    fail.  In all cases, the server MUST add a "SCHEDULE-STATUS"
926    iCalendar property parameter (see Section 10.3) to the "ATTENDEE"
927    iCalendar property in the scheduling object resource being created,
928    and set its value as described in Section 9.2.  This will result in
929    the created calendar object resource differing from the calendar data
930    sent in the HTTP request.  As a result clients MAY reload the
931    calendar data from the server in order to update to the new server
932    generated state information.  Servers MUST NOT set the "SCHEDULE-
933    STATUS" property parameter on the "ATTENDEE" property of Attendees
934    for which it did not attempt to deliver a scheduling message.
935
936    Restrictions:
937
938    1.  The server SHOULD reject any attempt to set the "PARTSTAT"
939        iCalendar property parameter value of the "ATTENDEE" iCalendar
940        property of other users in the calendar object resource to a
941        value other than "NEEDS-ACTION" if the "SCHEDULE-AGENT" property
942        parameter value is not present or set to the value "SERVER".
943
944    2.  The server MAY reject attempts to create a scheduling object
945        resource that specifies a "UID" property value already specified
946        in a scheduling object resource contained in another calendar
947        collection of the Organizer.
948
949
950
951 Daboo & Desruisseaux     Expires March 10, 2012                [Page 17]
952 \f
953 Internet-Draft        CalDAV Scheduling Extensions        September 2011
954
955
956    3.  The server MUST take into account scheduling privileges as
957        described in Section 13.1 when handling the creation of a
958        scheduling object resource.
959
960    4.  Restrictions on calendar object resources defined in Section 4.1
961        of [RFC4791] MUST also be enforced.
962
963    The server MUST return an error with the CALDAV:allowed-organizer-
964    scheduling-object-change precondition code (Section 5.2.4.3) when the
965    Organizer attempts to change the iCalendar data in a manner that is
966    forbidden.
967
968 5.2.1.2.  Modify
969
970    When a scheduling object resource is modified by the Organizer, the
971    server will inspect each "ATTENDEE" property in the new calendar data
972    to determine which ones have the "SCHEDULE-AGENT" iCalendar property
973    parameter.  It will then need to compare this with the "ATTENDEE"
974    properties in the existing calendar object resource that is being
975    modified.
976
977    For each Attendee in the old and new calendar data on a per-instance
978    basis, and taking into account the addition or removal of Attendees,
979    the server will determine whether to deliver a scheduling message to
980    the Attendee.  The following table determines whether the server
981    needs to deliver a scheduling message, and if so which iTIP
982    scheduling method to use.  The values "SERVER", "CLIENT", and "NONE"
983    in the top and left titles of the table refer to the "SCHEDULE-AGENT"
984    parameter value of the "ATTENDEE" property, and the values "<Absent>"
985    and "<Removed>" are used to cover the cases where the "ATTENDEE"
986    property is not present (Old) or is being removed (New).
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007 Daboo & Desruisseaux     Expires March 10, 2012                [Page 18]
1008 \f
1009 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1010
1011
1012    +---------------+-----------------------------------------------+
1013    |               |                     New                       |
1014    |    ATTENDEE   +-----------+-----------+-----------+-----------+
1015    |               | <Removed> | SERVER    | CLIENT    | NONE      |
1016    |               |           | (default) |           |           |
1017    +===+===========+===========+===========+===========+===========+
1018    |   | <Absent>  |  --       | REQUEST / | --        | --        |
1019    |   |           |           | ADD       |           |           |
1020    |   +-----------+-----------+-----------+-----------+-----------+
1021    |   | SERVER    |  CANCEL   | REQUEST   | CANCEL    | CANCEL    |
1022    | O | (default) |           |           |           |           |
1023    | l +-----------+-----------+-----------+-----------+-----------+
1024    | d | CLIENT    |  --       | REQUEST / | --        | --        |
1025    |   |           |           | ADD       |           |           |
1026    |   +-----------+-----------+-----------+-----------+-----------+
1027    |   | NONE      |  --       | REQUEST / | --        | --        |
1028    |   |           |           | ADD       |           |           |
1029    +---+-----------+-----------+-----------+-----------+-----------+
1030
1031    The attempt to deliver the scheduling message will either succeed or
1032    fail.  In all cases, the server MUST add a "SCHEDULE-STATUS"
1033    iCalendar property parameter to the "ATTENDEE" iCalendar property in
1034    the scheduling object resource being modified, and set its value as
1035    described in Section 9.2.  This will result in the created calendar
1036    object resource differing from the calendar data sent in the HTTP
1037    request.  As a result clients MAY reload the calendar data from the
1038    server in order to update to the new server generated state
1039    information.
1040
1041    Restrictions:
1042
1043    1.  The server MAY reject any attempt to set the "PARTSTAT" iCalendar
1044        property parameter value of the "ATTENDEE" iCalendar property of
1045        other users in the calendar object resource to a value other than
1046        "NEEDS-ACTION" if the "SCHEDULE-AGENT" property parameter value
1047        is not present or set to the value "SERVER".
1048
1049    2.  The server MUST take into account scheduling privileges as
1050        described in Section 13.1 when handling the modification of a
1051        scheduling object resource.
1052
1053    3.  Restrictions on calendar object resources defined in Section 4.1
1054        of [RFC4791] MUST also be enforced.
1055
1056    The server MUST return an error with the CALDAV:allowed-organizer-
1057    scheduling-object-change precondition code (Section 5.2.4.3) when the
1058    Organizer attempts to change the iCalendar data in a manner that is
1059    forbidden.
1060
1061
1062
1063 Daboo & Desruisseaux     Expires March 10, 2012                [Page 19]
1064 \f
1065 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1066
1067
1068 5.2.1.3.  Remove
1069
1070    When a scheduling object resource is removed by the Organizer, the
1071    server will inspect each "ATTENDEE" property in the scheduling object
1072    resource being removed to determine which ones have the "SCHEDULE-
1073    AGENT" iCalendar property parameter.
1074
1075    For each Attendee the server will determine whether to attempt to
1076    deliver a scheduling message into the Attendee's scheduling Inbox
1077    collection, based on the table below:
1078
1079               +------------------+-------------+
1080               | SCHEDULE-AGENT   | iTIP METHOD |
1081               +==================+=============+
1082               | SERVER (default) | CANCEL      |
1083               +------------------+-------------+
1084               | CLIENT           | --          |
1085               +------------------+-------------+
1086               | NONE             | --          |
1087               +------------------+-------------+
1088
1089    Restrictions:
1090
1091    1.  The server MUST take into account scheduling privileges as
1092        described in Section 13.1 when handling the deletion of a
1093        scheduling object resource.
1094
1095 5.2.2.  Attendee Scheduling Object Resources
1096
1097    An Attendee can create, modify or remove a scheduling object resource
1098    by issuing HTTP requests with an appropriate method.  The create,
1099    modify and remove behaviors for the server are each described next,
1100    and the way these are invoked via HTTP requests is described in
1101    Section 5.2.3.
1102
1103 5.2.2.1.  Allowed Attendee Changes
1104
1105    Attendees are allowed to make some changes to a scheduling object
1106    resource, though key properties such as start time, end time,
1107    location, and summary are typically under the control of the
1108    Organizer.
1109
1110    The server MUST allow Attendees to:
1111
1112    1.   change their own "PARTSTAT" iCalendar property parameter value.
1113
1114    2.   add, modify or remove any "TRANSP" iCalendar properties.
1115
1116
1117
1118
1119 Daboo & Desruisseaux     Expires March 10, 2012                [Page 20]
1120 \f
1121 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1122
1123
1124    3.   add, modify or remove any "PERCENT-COMPLETE" iCalendar
1125         properties.
1126
1127    4.   add, modify or remove any "COMPLETED" iCalendar properties.
1128
1129    5.   add, modify or remove any "VALARM" iCalendar components.
1130
1131    6.   add, modify or remove the "CALSCALE" iCalendar property within
1132         the top-level "VCALENDAR" component.
1133
1134    7.   modify the "PRODID" iCalendar property within the top-level
1135         "VCALENDAR" component.
1136
1137    8.   add "EXDATE" iCalendar properties and possibly remove components
1138         for overridden recurrence instances.
1139
1140    9.   add, modify or remove any "CREATED", "DTSTAMP" and "LAST-
1141         MODIFIED" iCalendar properties.
1142
1143    10.  add, modify or remove "SCHEDULE-STATUS" iCalendar property
1144         parameters on "ATTENDEE" properties that have a "SCHEDULE-AGENT"
1145         parameter set to "CLIENT".
1146
1147    11.  add new components to represent overridden recurrence instances,
1148         provided the only changes to the recurrence instance follow the
1149         rules above.
1150
1151    The server MUST return an error with the CALDAV:allowed-attendee-
1152    scheduling-object-change precondition code (Section 5.2.4.4) when the
1153    Attendee attempts to change the iCalendar data in a manner forbidden
1154    by the server.
1155
1156 5.2.2.2.  Create
1157
1158    Typically an Attendee does not create scheduling object resources, as
1159    scheduling messages delivered to them on the server are automatically
1160    processed by the server and placed on one of their calendars (see
1161    Section 6).  However, in some cases a scheduling message may get
1162    delivered directly to the client, and the Attendee may wish to store
1163    that on the server.  In that case the client creates a scheduling
1164    object resource in a suitable calendar belonging to the Attendee.  It
1165    can then set the "SCHEDULE-AGENT" iCalendar property parameter on all
1166    "ORGANIZER" iCalendar properties in the resource to determine how the
1167    server treats the resource.  The value of the "SCHEDULE-AGENT"
1168    iCalendar property parameter on all "ORGANIZER" iCalendar properties
1169    MUST be the same.
1170
1171
1172
1173
1174
1175 Daboo & Desruisseaux     Expires March 10, 2012                [Page 21]
1176 \f
1177 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1178
1179
1180    +----------------+--------------------------------------------------+
1181    | SCHEDULE-AGENT | Action                                           |
1182    +----------------+--------------------------------------------------+
1183    | SERVER         | The server will attempt to process changes to    |
1184    | (default)      | the resource using the normal rules for attendee |
1185    |                | scheduling object resources.                     |
1186    |                |                                                  |
1187    | CLIENT         | The server does no special processing of the     |
1188    |                | resource.  The client is assumed to be handling  |
1189    |                | Attendee replies etc.                            |
1190    |                |                                                  |
1191    | NONE           | The server does no special processing of the     |
1192    |                | resource.                                        |
1193    +----------------+--------------------------------------------------+
1194
1195    In some cases a server may not be able to process an Attendee
1196    scheduling object resource that originated from another system (i.e.,
1197    where the server is unable to deliver scheduling messages to the
1198    Organizer).  In such cases the server MUST add a "SCHEDULE-STATUS"
1199    iCalendar property parameter to all "ORGANIZER" iCalendar properties
1200    in the resource with a suitable value indicating a error.
1201
1202 5.2.2.3.  Modify
1203
1204    When a scheduling object resource is modified by an Attendee, the
1205    server behavior depends on the value of the "SCHEDULE-AGENT"
1206    iCalendar property parameter on the "ORGANIZER" iCalendar properties:
1207
1208    +----------------+--------------------------------------------------+
1209    | SCHEDULE-AGENT | Action                                           |
1210    +----------------+--------------------------------------------------+
1211    | SERVER         | The server will attempt to process the removal   |
1212    | (default)      | using the behavior listed below.                 |
1213    |                |                                                  |
1214    | CLIENT         | The server does no special processing of the     |
1215    |                | resource.  The client is assumed to be handling  |
1216    |                | any Attendee replies etc.                        |
1217    |                |                                                  |
1218    | NONE           | The server does no special processing of the     |
1219    |                | resource.                                        |
1220    +----------------+--------------------------------------------------+
1221
1222    The server will inspect the changes by comparing the new scheduling
1223    object resource with the existing scheduling object resource.
1224
1225    If the Attendee changes one or more "PARTSTAT" iCalendar property
1226    values on any component, or adds an overridden component with a
1227    changed "PARTSTAT" property, then the server MUST deliver an iTIP
1228
1229
1230
1231 Daboo & Desruisseaux     Expires March 10, 2012                [Page 22]
1232 \f
1233 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1234
1235
1236    "REPLY" scheduling message to the Organizer to indicate the new
1237    participation status of the Attendee.
1238
1239    If the Attendee adds an "EXDATE" property value to effectively remove
1240    a recurrence instance, the server MUST deliver an iTIP "REPLY"
1241    scheduling message to the Organizer to indicate that the Attendee has
1242    declined the instance (i.e., the Attendee's "PARTSTAT" iCalendar
1243    property parameter value is set to "DECLINED").
1244
1245    The attempt to deliver the scheduling message will either succeed or
1246    fail.  In all cases, the server MUST add a "SCHEDULE-STATUS"
1247    iCalendar property parameter to the "ORGANIZER" iCalendar property in
1248    the scheduling object resource being created, and set its value as
1249    described in Section 9.2.  This will result in the created calendar
1250    object resource differing from the calendar data sent in the HTTP
1251    request.  As a result clients MAY reload the calendar data from the
1252    server in order to update to the new server generated state
1253    information.
1254
1255 5.2.2.4.  Remove
1256
1257    When a scheduling object resource is removed by an Attendee, the
1258    server behavior depends on the value of the "SCHEDULE-AGENT"
1259    iCalendar property parameter on the "ORGANIZER" iCalendar properties:
1260
1261    +----------------+--------------------------------------------------+
1262    | SCHEDULE-AGENT | Action                                           |
1263    +----------------+--------------------------------------------------+
1264    | SERVER         | The server will attempt to process the removal   |
1265    | (default)      | using either behaviors (1) or (2) listed below.  |
1266    |                |                                                  |
1267    | CLIENT         | The server does no special processing of the     |
1268    |                | resource.  The client is assumed to be handling  |
1269    |                | any Attendee replies etc.                        |
1270    |                |                                                  |
1271    | NONE           | The server does no special processing of the     |
1272    |                | resource.                                        |
1273    +----------------+--------------------------------------------------+
1274
1275    1.  If the HTTP request contains a "Schedule-Reply" request header
1276        set to the value "T" or there is no "Schedule-Reply" request
1277        header, then the server MUST attempt to deliver a scheduling
1278        message to the Organizer indicating that the Attendee has a
1279        "PARTSTAT" iCalendar property parameter value set to "DECLINED".
1280        That is, the Attendee has chosen not to attend any instances.  If
1281        the server is unable to deliver the scheduling message, the
1282        remove action MUST fail, and an appropriate "SCHEDULE-STATUS"
1283        iCalendar property parameter set on the "ORGANIZER" property in
1284
1285
1286
1287 Daboo & Desruisseaux     Expires March 10, 2012                [Page 23]
1288 \f
1289 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1290
1291
1292        the scheduling object resource stored by the server.
1293
1294    2.  If the HTTP request contains a "Schedule-Reply" request header
1295        set to the value "F", the server MUST NOT attempt to deliver a
1296        scheduling message.  The resource is simply removed.  This
1297        provides the client a way to silently remove unwanted scheduling
1298        messages.
1299
1300 5.2.3.  HTTP Methods
1301
1302    This section describes how use of various HTTP methods on a
1303    scheduling object resource will cause a create, modify or remove
1304    action on that resource as described above.  The use of these methods
1305    is subject to the restrictions in [RFC4791], in addition to what is
1306    described below.
1307
1308 5.2.3.1.  PUT
1309
1310    When a PUT method request is received, the server will execute the
1311    following actions, provided all appropriate preconditions are met:
1312
1313    +--------------------------+--------------------------+-------------+
1314    | Existing Destination     | Resulting Destination    | Server      |
1315    | Resource                 | Resource                 | Action      |
1316    +--------------------------+--------------------------+-------------+
1317    | None                     | Calendar object resource | None        |
1318    |                          |                          |             |
1319    | None                     | Scheduling object        | Create      |
1320    |                          | resource                 |             |
1321    |                          |                          |             |
1322    | Calendar object resource | Calendar object resource | None        |
1323    |                          |                          |             |
1324    | Calendar object resource | Scheduling object        | Create      |
1325    |                          | resource                 |             |
1326    |                          |                          |             |
1327    | Scheduling object        | Calendar object resource | Remove      |
1328    | resource                 |                          |             |
1329    |                          |                          |             |
1330    | Scheduling object        | Scheduling object        | Modify      |
1331    | resource                 | resource                 |             |
1332    +--------------------------+--------------------------+-------------+
1333
1334 5.2.3.2.  COPY
1335
1336    When a COPY method request is received, the server will execute the
1337    following actions based on the source and destination collections in
1338    the request:
1339
1340
1341
1342
1343 Daboo & Desruisseaux     Expires March 10, 2012                [Page 24]
1344 \f
1345 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1346
1347
1348    +-------------------------+-------------------------+---------------+
1349    | Source Collection       | Destination Collection  | Server Action |
1350    +-------------------------+-------------------------+---------------+
1351    | Non-calendar collection | Non-calendar collection | None          |
1352    |                         |                         |               |
1353    | Non-calendar collection | Calendar collection     | (1)           |
1354    |                         |                         |               |
1355    | Calendar collection     | Non-calendar collection | None          |
1356    |                         |                         |               |
1357    | Calendar collection     | Calendar collection     | (2)           |
1358    +-------------------------+-------------------------+---------------+
1359
1360    Note 1.  The same rules as used for PUT above are applied for the
1361    destination of the COPY request.
1362
1363    Note 2.  The server MAY reject this as per Section 5.2.4.1, otherwise
1364    None.
1365
1366    The behavior of a COPY method request on a calendar collection is
1367    undefined.
1368
1369 5.2.3.3.  MOVE
1370
1371    When a MOVE method request is received, the server will execute the
1372    following actions based on the source and destination collections in
1373    the request:
1374
1375    +-------------------------+-------------------------+---------------+
1376    | Source Collection       | Destination Collection  | Server Action |
1377    +-------------------------+-------------------------+---------------+
1378    | Non-calendar collection | Non-calendar collection | None          |
1379    |                         |                         |               |
1380    | Non-calendar collection | Calendar collection     | (1)           |
1381    |                         |                         |               |
1382    | Calendar collection     | Non-calendar collection | (2)           |
1383    |                         |                         |               |
1384    | Calendar collection     | Calendar collection     | None          |
1385    +-------------------------+-------------------------+---------------+
1386
1387    Note 1.  The same rules as used for PUT above are applied for the
1388    destination of the MOVE request.
1389
1390    Note 2.  The same rules as used for DELETE below are applied for the
1391    source of the MOVE request.
1392
1393    The behavior of a MOVE method request on a calendar collection is
1394    undefined.
1395
1396
1397
1398
1399 Daboo & Desruisseaux     Expires March 10, 2012                [Page 25]
1400 \f
1401 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1402
1403
1404 5.2.3.4.  DELETE
1405
1406    When a DELETE method is targeted at a scheduling object resource the
1407    server will execute the Remove action.
1408
1409    When a DELETE method is targeted at a calendar collection the server
1410    will execute the Remove action on all scheduling object resources
1411    contained in the calendar collection.
1412
1413 5.2.4.  Additional Method Preconditions
1414
1415    This specification defines method preconditions (see Section 16 of
1416    WebDAV [RFC4918]), in addition to the ones in [RFC4791], to provide
1417    machine-parsable information in error responses.
1418
1419 5.2.4.1.  CALDAV:unique-scheduling-object-resource Precondition
1420
1421    Name:  unique-scheduling-object-resource
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 reject requests to create a
1430       scheduling object resource with an iCalendar "UID" property value
1431       already in use by another scheduling object resource owned by the
1432       same user in other calendar collections.  Servers SHOULD report
1433       the URL of the scheduling object resource that is already making
1434       use of the same "UID" property value in the DAV:href element.
1435
1436    Definition:
1437
1438       <!ELEMENT unique-scheduling-object-resource (DAV:href?)>
1439
1440    Example:
1441
1442       <C:unique-scheduling-object-resource xmlns:D="DAV:"
1443           xmlns:C="urn:ietf:params:xml:ns:caldav">
1444         <D:href>/home/bernard/calendars/personal/abc123.ics</D:href>
1445       </C:unique-scheduling-object-resource>
1446
1447 5.2.4.2.  CALDAV:same-organizer-in-all-components Precondition
1448
1449
1450
1451
1452
1453
1454
1455 Daboo & Desruisseaux     Expires March 10, 2012                [Page 26]
1456 \f
1457 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1458
1459
1460    Name:  same-organizer-in-all-components
1461
1462    Namespace:  urn:ietf:params:xml:ns:caldav
1463
1464    Apply to:  PUT, COPY, and MOVE
1465
1466    Use with:  403 Forbidden
1467
1468    Purpose:  (precondition) -- All the calendar components in a
1469       scheduling object resource MUST contain the same "ORGANIZER"
1470       property value when present.
1471
1472    Definition:
1473
1474       <!ELEMENT same-organizer-in-all-components EMPTY>
1475
1476    Example:
1477
1478       <C:same-organizer-in-all-components
1479           xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1480
1481 5.2.4.3.  CALDAV:allowed-organizer-scheduling-object-change Precondition
1482
1483    Name:  allowed-organizer-scheduling-object-change
1484
1485    Namespace:  urn:ietf:params:xml:ns:caldav
1486
1487    Apply to:  PUT, COPY, and MOVE
1488
1489    Use with:  403 Forbidden
1490
1491    Purpose:  (precondition) -- Servers MAY impose restrictions on
1492       modifications allowed by an Organizer.  For instance, servers MAY
1493       prevent the Organizer setting the "PARTSTAT" property parameter to
1494       a value other than "NEEDS-ACTION" if the corresponding "ATTENDEE"
1495       property has the "SCHEDULE-AGENT" property parameter set to
1496       "SERVER", or has no "SCHEDULE-AGENT" property parameter.  See
1497       Section 5.2.1.
1498
1499    Definition:
1500
1501       <!ELEMENT allowed-organizer-scheduling-object-change EMPTY>
1502
1503    Example:
1504
1505       <C:allowed-organizer-scheduling-object-change
1506           xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1507
1508
1509
1510
1511 Daboo & Desruisseaux     Expires March 10, 2012                [Page 27]
1512 \f
1513 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1514
1515
1516 5.2.4.4.  CALDAV:allowed-attendee-scheduling-object-change Precondition
1517
1518    Name:  allowed-attendee-scheduling-object-change
1519
1520    Namespace:  urn:ietf:params:xml:ns:caldav
1521
1522    Apply to:  PUT, COPY, and MOVE
1523
1524    Use with:  403 Forbidden
1525
1526    Purpose:  (precondition) -- Servers MAY impose restrictions on
1527       modifications allowed by an Attendee.  Attendee modifications that
1528       servers MUST allow are specified in Section 5.2.2.1.
1529
1530    Definition:
1531
1532       <!ELEMENT allowed-attendee-scheduling-object-change EMPTY>
1533
1534    Example:
1535
1536       <C:allowed-attendee-scheduling-object-change
1537           xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1538
1539 5.2.5.  DTSTAMP and SEQUENCE Properties
1540
1541    Whenever the server generates a scheduling message for delivery to a
1542    Calendar User, it MUST ensure that a "DTSTAMP" iCalendar property is
1543    present and MUST set the value to the UTC time that the scheduling
1544    message was generated (as required by iCalendar).
1545
1546    iTIP [RFC5546] places certain requirements on how the "SEQUENCE"
1547    iCalendar property value in scheduling messages changes.  The server
1548    MUST ensure that for each type of scheduling operation, the
1549    "SEQUENCE" iCalendar property value is appropriately updated.  If the
1550    client does not update the "SEQUENCE" iCalendar property itself when
1551    that is required, the server MUST update the property.
1552
1553 5.2.6.  Restrict Recurrence Instances Sent to Attendees
1554
1555    When delivering scheduling messages for recurring calendar components
1556    to Attendees, servers MUST ensure that Attendees only get information
1557    about recurrence instances that explicitly include them as an
1558    Attendee.
1559
1560    For example, if an Attendee is invited to a single recurrence
1561    instance of a recurring event, and no others, the scheduling object
1562    resource contained in the Organizer's calendar collection will
1563    contain an overridden instance in the form of a separate calendar
1564
1565
1566
1567 Daboo & Desruisseaux     Expires March 10, 2012                [Page 28]
1568 \f
1569 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1570
1571
1572    component.  That separate calendar component will include the
1573    "ATTENDEE" property referencing the "one-off" Attendee.  That
1574    Attendee will not be listed in any other calendar components in the
1575    scheduling object resource.  Any scheduling messages delivered to the
1576    Attendee will only contain information about this overridden
1577    instance.
1578
1579    As another example, an Attendee could be excluded from one instance
1580    of a recurring event.  In that case the scheduling object resource
1581    contained in the calendar collection of the Organizer will include an
1582    overridden instance with an "ATTENDEE" list that does not include the
1583    Attendee being excluded.  The scheduling message that will be
1584    delivered to the Attendee will not specify the overridden instance
1585    but rather include an "EXDATE" property in the master recurring
1586    component defining the recurrence set.
1587
1588 5.2.7.  Forcing the Server to Send a Scheduling Message
1589
1590    The iCalendar property parameter "SCHEDULE-FORCE-SEND" defined in
1591    Section 10.2 can be used by a Calendar User to force the server to
1592    send a scheduling message to an Attendee or the Organizer in a
1593    situation where the server would not normally send a scheduling
1594    message.  For instance, an Organizer could use this property
1595    parameter to request an Attendee, that previously declined an
1596    invitation, to reconsider their participation status without being
1597    forced to modify the event.
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623 Daboo & Desruisseaux     Expires March 10, 2012                [Page 29]
1624 \f
1625 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1626
1627
1628 6.  Processing Incoming Scheduling Messages
1629
1630    Scheduling operations can cause the delivery of a scheduling message
1631    into an Organizer's or Attendee's scheduling Inbox collection.  In
1632    the former case the scheduling messages are replies from Attendees,
1633    in the latter case the scheduling messages are requests,
1634    cancellations or additions from the Organizer.
1635
1636    Servers MUST automatically process incoming scheduling messages using
1637    the rules defined by [RFC5546], by creating or updating the
1638    corresponding scheduling object resources on calendars owned by the
1639    owner of the scheduling Inbox collection.  In addition, the
1640    scheduling message is stored in the scheduling Inbox collection as an
1641    indicator to the client that a scheduling operation has taken place.
1642
1643    The server MUST take into account privileges on the scheduling Inbox
1644    collection when processing incoming scheduling messages, to determine
1645    whether delivery of the scheduling message is allowed.  Privileges on
1646    calendars containing any matching scheduling object resource are not
1647    considered in this case (i.e., a schedule message from another user
1648    can cause modifications to resources in calendar collections that the
1649    other user would not normally have read or write access to).
1650    Additionally, servers MUST take into account any scheduling Inbox
1651    collection preconditions (see Section 4.2) when delivering the
1652    scheduling message, and it MUST take into account the similar
1653    preconditions on any calendar collection which contains, or would
1654    contain, the corresponding scheduling object resource.
1655
1656 6.1.  Processing Organizer Requests, Additions, and Cancellations
1657
1658    For a scheduling message sent by an Organizer, the server first tries
1659    to locate a corresponding scheduling object resource belonging to the
1660    Attendee.  If no matching scheduling object resource exists, the
1661    server treats the scheduling message as a new message, otherwise it
1662    is treated as an update.
1663
1664    In the case of a new message, the server MUST process the scheduling
1665    message and create a new scheduling object resource in an appropriate
1666    calendar collection for the Attendee.
1667
1668    In the case of an update, the server MUST process the scheduling
1669    message and update the matching scheduling object resource belonging
1670    to the Attendee to reflect the changes sent by the Organizer.
1671
1672    In each case, the scheduling message MUST only appear in the
1673    Attendee's scheduling Inbox collection once all automatic processing
1674    has been done.
1675
1676
1677
1678
1679 Daboo & Desruisseaux     Expires March 10, 2012                [Page 30]
1680 \f
1681 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1682
1683
1684 6.2.  Processing Attendee Replies
1685
1686    For a scheduling message reply sent by an Attendee, the server first
1687    locates the corresponding scheduling object resource belonging to the
1688    Organizer.
1689
1690    The server MUST then update the "PARTSTAT" iCalendar property
1691    parameter value of each "ATTENDEE" iCalendar property in the
1692    scheduling object resource to match the changes indicated in the
1693    reply (taking into account the fact that an Attendee could have
1694    created a new overridden iCalendar component to indicate different
1695    participation status on one or more recurrence instances of a
1696    recurring event).
1697
1698    The server MUST also update or add the "SCHEDULE-STATUS" property
1699    parameter on each matching "ATTENDEE" iCalendar property and set its
1700    value to that of the "REQUEST-STATUS" property in the reply, or to
1701    "2.0" if "REQUEST-STATUS" is not present (also taking into account
1702    recurrence instances).  If there are multiple "REQUEST-STATUS"
1703    properties in the reply, the "SCHEDULE-STATUS" property parameter
1704    value is set to a comma-separated list of status codes, one from each
1705    "REQUEST-STATUS" property.
1706
1707    The server SHOULD send scheduling messages to all the other Attendees
1708    indicating the change in participation status of the Attendee
1709    replying, subject to the recurrence requirements of Section 5.2.6.
1710
1711    The scheduling message MUST only appear in the Organizer's scheduling
1712    Inbox collection once all automatic processing has been done.
1713
1714 6.3.  Scheduling Messages as Notifications
1715
1716    Once the processing of an incoming scheduling message is completed by
1717    the server, the message is made available as a child resource in the
1718    scheduling Inbox collection of the Calendar User that received the
1719    message, to serve as a notification that a change has been made to
1720    the corresponding scheduling object resource.  Scheduling messages
1721    are typically removed from the scheduling Inbox collection by the
1722    client once the calendar user has acknowledged the change.
1723
1724 6.4.  Default Calendar Collection
1725
1726    The server is REQUIRED to process scheduling messages received for an
1727    Attendee by creating a new scheduling object resource in a calendar
1728    collection belonging to the Attendee, when one does not already
1729    exist.  A Calendar User that is an Attendee in a scheduling operation
1730    MUST have at least one valid calendar collection available.  If there
1731    is no valid calendar collection, then the server MUST reject the
1732
1733
1734
1735 Daboo & Desruisseaux     Expires March 10, 2012                [Page 31]
1736 \f
1737 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1738
1739
1740    attempt to deliver the scheduling message to the Attendee.
1741
1742    Servers MAY provide support for a default calendar collection, that
1743    is, the calendar collection in which new scheduling object resources
1744    will be created.  The CALDAV:schedule-default-calendar-URL WebDAV
1745    property, which can be present on the scheduling Inbox collection of
1746    a Calendar User, specifies if this Calendar User has a default
1747    calendar collection.  See Section 12.2.
1748
1749    Servers SHOULD create new scheduling object resources in the default
1750    calendar collection, if the CALDAV:schedule-default-calendar-URL
1751    WebDAV property is set.
1752
1753    Servers MAY allow clients to change the default calendar collection
1754    by changing the value of the CALDAV:schedule-default-calendar-URL
1755    WebDAV property on the scheduling Inbox collection.  However, the
1756    servers MUST ensure that any new value for that property refers to a
1757    valid calendar collection belonging to the owner of the scheduling
1758    Inbox collection.
1759
1760    Servers MUST reject any attempt to delete the default calendar
1761    collection.
1762
1763 6.4.1.  Additional Method Preconditions
1764
1765    This specification defines additional method preconditions (see
1766    Section 16 of WebDAV [RFC4918]) to provide machine-parsable
1767    information in error responses.
1768
1769 6.4.1.1.  CALDAV:default-calendar-needed Precondition
1770
1771    Name:  default-calendar-needed
1772
1773    Namespace:  urn:ietf:params:xml:ns:caldav
1774
1775    Apply to:  DELETE
1776
1777    Use with:  403 Forbidden
1778
1779    Purpose:  (precondition) -- The client attempted to delete the
1780       calendar collection currently referenced by the CALDAV:schedule-
1781       default-calendar-URL property, or attempted to remove the CALDAV:
1782       schedule-default-calendar-URL property on the scheduling Inbox
1783       collection on a server that doesn't allow such operations.
1784
1785
1786
1787
1788
1789
1790
1791 Daboo & Desruisseaux     Expires March 10, 2012                [Page 32]
1792 \f
1793 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1794
1795
1796    Definition:
1797
1798       <!ELEMENT default-calendar-needed EMPTY>
1799
1800    Example:
1801
1802       <C:default-calendar-needed
1803           xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1804
1805 6.4.1.2.  CALDAV:valid-schedule-default-calendar-URL Precondition
1806
1807    Name:  valid-schedule-default-calendar-URL
1808
1809    Namespace:  urn:ietf:params:xml:ns:caldav
1810
1811    Apply to:  PROPPATCH
1812
1813    Use with:  403 Forbidden
1814
1815    Purpose:  (precondition) -- The client attempted to set the CALDAV:
1816       schedule-default-calendar-URL property to a DAV:href element that
1817       doesn't reference a valid calendar collection.  Note: Servers that
1818       do not allow clients to change the CALDAV:schedule-default-
1819       calendar-URL property would simply return the DAV:cannot-modify-
1820       protected-property precondition defined in Section 16 of WebDAV
1821       [RFC4918].
1822
1823    Definition:
1824
1825       <!ELEMENT valid-schedule-default-calendar-URL EMPTY>
1826
1827    Example:
1828
1829       <C:valid-schedule-default-calendar-URL
1830           xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847 Daboo & Desruisseaux     Expires March 10, 2012                [Page 33]
1848 \f
1849 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1850
1851
1852 7.  Request for Busy Time Information
1853
1854    The POST method is used to request busy time information of one or
1855    more Calendar Users by submitting a request at the scheduling Outbox
1856    collection of the Calendar User requesting the information (the
1857    Organizer).  To accomplish this, the request body of a POST method
1858    MUST contain a "VFREEBUSY" calendar component with the "METHOD"
1859    iCalendar property set to the value "REQUEST" as specified in Section
1860    3.3.2 of iTIP [RFC5546].  The resource identified by the Request-URI
1861    MUST be a resource collection of type CALDAV:schedule-outbox
1862    (Section 4.1).  The "ORGANIZER" property in the "VFREEBUSY" component
1863    MUST match that of the Calendar User who "owns" the Outbox
1864    collection.
1865
1866 7.1.  Status Codes
1867
1868    The following are examples of response codes one would expect to be
1869    used for this method.  However, unless explicitly prohibited, any
1870    2/3/4/5xx series response code can be used in a response.
1871
1872       200 (OK) - The command succeeded.
1873
1874       204 (No Content) - The command succeeded.
1875
1876       400 (Bad Request) - The client has provided an invalid scheduling
1877       message.
1878
1879       403 (Forbidden) - The client cannot submit a scheduling message to
1880       the specified Request-URI.
1881
1882       404 (Not Found) - The URL in the Request-URI was not present.
1883
1884       423 (Locked) - The specified resource is locked and the client
1885       either is not a lock owner or the lock type requires a lock token
1886       to be submitted and the client did not submit it.
1887
1888 7.2.  Additional Method Preconditions
1889
1890    This specification defines additional method preconditions for the
1891    POST method.  Preconditions defined in WebDAV ACL [RFC3744] and
1892    CalDAV [RFC4791] that applies to the POST method are also listed here
1893    for completeness.
1894
1895 7.2.1.  DAV:need-privileges Precondition
1896
1897
1898
1899
1900
1901
1902
1903 Daboo & Desruisseaux     Expires March 10, 2012                [Page 34]
1904 \f
1905 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1906
1907
1908    Name:  need-privileges
1909
1910    Namespace:  DAV:
1911
1912    Apply to:  POST
1913
1914    Use with:  403 Forbidden
1915
1916    Purpose:  (precondition) -- The currently authenticated user MUST be
1917       granted the CALDAV:schedule-send-freebusy privilege on the
1918       scheduling Outbox collection being targeted by the request.
1919
1920    Definition:
1921
1922       <!ELEMENT DAV:need-privileges (DAV:resource)* >
1923       <!ELEMENT DAV:resource (DAV:href, DAV:privilege) >
1924
1925    Example:
1926
1927       <D:need-privileges xmlns:D="DAV:"
1928                          xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1929         <D:resource>
1930           <D:href>/home/bernard/calendars/outbox/</D:href>
1931           <D:privilege><C:schedule-send-freebusy/></D:privilege>
1932         </D:resource>
1933       </D:need-privileges>
1934
1935 7.2.2.  CALDAV:supported-collection Precondition
1936
1937    Name:  supported-collection
1938
1939    Namespace:  urn:ietf:params:xml:ns:caldav
1940
1941    Apply to:  POST
1942
1943    Use with:  400 Bad Request
1944
1945    Purpose:  (precondition) -- The Request-URI MUST identify the
1946       location of a scheduling Outbox collection.
1947
1948    Definition:
1949
1950       <!ELEMENT supported-collection EMPTY >
1951
1952
1953
1954
1955
1956
1957
1958
1959 Daboo & Desruisseaux     Expires March 10, 2012                [Page 35]
1960 \f
1961 Internet-Draft        CalDAV Scheduling Extensions        September 2011
1962
1963
1964    Example:
1965
1966       <C:supported-collection xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1967
1968 7.2.3.  CALDAV:supported-calendar-data Precondition
1969
1970    Name:  supported-calendar-data
1971
1972    Namespace:  urn:ietf:params:xml:ns:caldav
1973
1974    Apply to:  POST
1975
1976    Use with:  400 Bad Request
1977
1978    Purpose:  (precondition) -- The resource body submitted in the POST
1979       request MUST be a supported media type (e.g., text/calendar).
1980
1981    Definition:
1982
1983       <!ELEMENT supported-calendar-data EMPTY >
1984
1985    Example:
1986
1987       <C:supported-calendar-data
1988          xmlns:C="urn:ietf:params:xml:ns:caldav"/>
1989
1990 7.2.4.  CALDAV:valid-calendar-data Precondition
1991
1992    Name:  valid-calendar-data
1993
1994    Namespace:  urn:ietf:params:xml:ns:caldav
1995
1996    Apply to:  POST
1997
1998    Use with:  400 Bad Request
1999
2000    Purpose:  (precondition) -- The resource submitted in the POST
2001       request MUST be valid data for the media type being specified
2002       (e.g., a valid iCalendar object).
2003
2004    Definition:
2005
2006       <!ELEMENT valid-calendar-data EMPTY>
2007
2008
2009
2010
2011
2012
2013
2014
2015 Daboo & Desruisseaux     Expires March 10, 2012                [Page 36]
2016 \f
2017 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2018
2019
2020    Example:
2021
2022       <C:valid-calendar-data xmlns:C="urn:ietf:params:xml:ns:caldav"/>
2023
2024 7.2.5.  CALDAV:valid-scheduling-message Precondition
2025
2026    Name:  valid-scheduling-message
2027
2028    Namespace:  urn:ietf:params:xml:ns:caldav
2029
2030    Apply to:  POST
2031
2032    Use with:  400 Bad Request
2033
2034    Purpose:  (precondition) -- The resource submitted in the POST
2035       request MUST obey all restrictions specified for the POST request
2036       (e.g., the scheduling message follow the restrictions of iTIP).
2037
2038    Definition:
2039
2040       <!ELEMENT valid-scheduling-message EMPTY >
2041
2042    Example:
2043
2044       <C:valid-scheduling-message
2045          xmlns:C="urn:ietf:params:xml:ns:caldav"/>
2046
2047 7.2.6.  CALDAV:valid-organizer Precondition
2048
2049    Name:  valid-organizer
2050
2051    Namespace:  urn:ietf:params:xml:ns:caldav
2052
2053    Apply to:  POST
2054
2055    Use with:  403 Forbidden
2056
2057    Purpose:  (precondition) -- The Calendar User identified by the
2058       "ORGANIZER" property in the POST request's scheduling message MUST
2059       be the Calendar User (or one of the Calendar Users) associated
2060       with the scheduling Outbox collection being targeted by the
2061       request;
2062
2063    Definition:
2064
2065       <!ELEMENT valid-organizer EMPTY >
2066
2067
2068
2069
2070
2071 Daboo & Desruisseaux     Expires March 10, 2012                [Page 37]
2072 \f
2073 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2074
2075
2076    Example:
2077
2078       <C:valid-organizer xmlns:C="urn:ietf:params:xml:ns:caldav"/>
2079
2080 7.2.7.  CALDAV:max-resource-size Precondition
2081
2082    Name:  max-resource-size
2083
2084    Namespace:  urn:ietf:params:xml:ns:caldav
2085
2086    Apply to:  POST
2087
2088    Use with:  403 Forbidden
2089
2090    Purpose:  (precondition) -- The resource submitted in the POST
2091       request MUST have a size in octets less than or equal to the value
2092       of the CALDAV:max-resource-size property (defined in Section 5.2.5
2093       of [RFC4791]) specified on the scheduling Outbox collection
2094       targeted by the request.
2095
2096    Definition:
2097
2098       <!ELEMENT max-resource-size EMPTY >
2099
2100    Example:
2101
2102       <C:max-resource-size xmlns:C="urn:ietf:params:xml:ns:caldav"/>
2103
2104 7.3.  Response to a POST request
2105
2106    A POST request can return freebusy information for one or more
2107    Calendar Users.  Thus the response needs to contain separate status
2108    information for each recipient.  This specification defines a new XML
2109    response body to convey multiple recipient status.
2110
2111    A response to a POST method that indicates status for one or more
2112    recipients MUST be an XML document with a CALDAV:schedule-response
2113    XML element as its root element.  This element MUST contain one
2114    CALDAV:response element for each recipient, with each of those
2115    containing elements that indicate which recipient they correspond to,
2116    the scheduling status for that recipient, any error codes and an
2117    optional description.  See Section 14.1 for the detail on the child
2118    elements.
2119
2120    In the case of a successful freebusy request, the CALDAV:response
2121    elements can also contain CALDAV:calendar-data elements which contain
2122    freebusy information (e.g., an iCalendar VFREEBUSY component)
2123    indicating the busy state of the corresponding recipient.  See
2124
2125
2126
2127 Daboo & Desruisseaux     Expires March 10, 2012                [Page 38]
2128 \f
2129 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2130
2131
2132    Appendix B.5 for an example freebusy request and response.
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183 Daboo & Desruisseaux     Expires March 10, 2012                [Page 39]
2184 \f
2185 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2186
2187
2188 8.  Avoiding Conflicts when Updating Scheduling Object Resources
2189
2190    Because replies from Attendees and updates from Organizers are
2191    automatically processed by the server, clients might be in a
2192    situation where their copy of a calendar resource is different from
2193    the one currently on the server.  When an Attendee or Organizer makes
2194    a change to the client's copy of the calendar resource, if the client
2195    writes the data to the server it could overwrite the changes already
2196    made there.  Typically, clients use the ETag value and If-Match
2197    request headers to avoid the "lost update problem".
2198
2199    Clients can also use ETag and If-Match to avoid this problem.
2200    However, when doing so the client will likely have to resolve the
2201    differences between the new resource and the original one, and the
2202    changes made by the Attendee or Organizer in the client.  This can be
2203    a complicated comparison particularly when recurring components are
2204    present.
2205
2206    Additionally, the data on the server may change frequently as
2207    Attendees change their participation status, triggering updates to
2208    the Organizer, and consequently other Attendees' copies of the
2209    scheduling object resource.  If the ETag/If-Match behavior were used,
2210    clients would be forced to reconcile their cached copy of a
2211    scheduling object resource with the updated one on the server in
2212    order to attempt to write the user's changes back.  This could lead
2213    to a race condition that can effectively result in a temporary denial
2214    of service when, for example, there is an event with a large Attendee
2215    list.  A "storm" of updates will occur if Attendees all start
2216    responding at the same time, and this would prevent Attendees and the
2217    Organizer from being able to update their own copies of the
2218    scheduling object resource as the server copy is changing frequently.
2219
2220    A solution is to have the server determine the best way to merge
2221    changes made on the server with changes being made by the client.
2222    For example, if an Attendee changes their participation status and
2223    triggers an update to the Organizer's copy of the event, but the
2224    Organizer also updates their cached copy of the event and attempts to
2225    write it back, rather than failing on a conditional If-Match when the
2226    Organizer writes their data, the server would instead take the
2227    changes made by the Organizer and apply the Attendee changes and
2228    store the result.  Thus a form of "weak" ETag matching behavior is
2229    needed such that scheduling changes made automatically on the server
2230    do not invalidate the tag, so that when clients store data
2231    conditionally based on the tag value, the server knows it can apply
2232    the merge behavior.
2233
2234    In order to do that, this specification introduces a new WebDAV
2235    resource property CALDAV:schedule-tag with a corresponding response
2236
2237
2238
2239 Daboo & Desruisseaux     Expires March 10, 2012                [Page 40]
2240 \f
2241 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2242
2243
2244    header "Schedule-Tag", and a new "If-Schedule-Tag-Match" request
2245    header to allow client changes to be appropriately merged with server
2246    changes in the case where the changes on the server were the result
2247    of an "inconsequential" scheduling message update.  An
2248    "inconsequential" scheduling message is one which simply updates the
2249    status information of Attendees due to a reply from an Attendee.
2250
2251    Servers MUST support requests targeted at scheduling object resources
2252    using the "If-Schedule-Tag-Match" request header.  Consequently, the
2253    server MUST support the "Schedule-Tag" response header and CALDAV:
2254    schedule-tag property for scheduling object resources.  Servers MUST
2255    automatically resolve conflicts with "inconsequential" changes done
2256    to scheduling object resources when the "If-Schedule-Tag-Match"
2257    request header is specified.
2258
2259    The If-Schedule-Tag-Match request header applies only to the Request-
2260    URI, and not to the Destination of a COPY or MOVE in the same way as
2261    the If-Match request header.
2262
2263    Clients SHOULD use the If-Schedule-Tag-Match header on requests that
2264    update scheduling object resources.
2265
2266    A response to any successful GET or PUT request targeting a
2267    scheduling object resource MUST include a Schedule-Tag response
2268    header with the value set to the same value as the CALDAV:schedule-
2269    tag WebDAV property of the resource.
2270
2271    A response to any successful COPY or MOVE request that specifies a
2272    Destination request header targeting a scheduling object resource
2273    MUST include a Schedule-Tag response header with the value set to the
2274    same value as the CALDAV:schedule-tag WebDAV property of the resource
2275    identified in the Request-URI.
2276
2277    The Schedule-Tag feature is designed to be used to address the
2278    problem of "inconsequential" changes on the server only.  Normal ETag
2279    operations are used in all other cases, e.g., for synchronization.
2280
2281    The value of the CALDAV:schedule-tag property changes according to
2282    these rules:
2283
2284    o  For an Organizer's copy of a scheduling object resource:
2285
2286       1.  The server MUST NOT change the CALDAV:schedule-tag property
2287           value when the scheduling object resource is updated as the
2288           result of automatically processing a scheduling message reply
2289           from an Attendee.  For instance, when an Attendee replies to
2290           the Organizer, the CALDAV:schedule-tag property is unchanged
2291           after the Organizer's scheduling object resource has been
2292
2293
2294
2295 Daboo & Desruisseaux     Expires March 10, 2012                [Page 41]
2296 \f
2297 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2298
2299
2300           automatically updated by the server with the Attendee's new
2301           participation status.
2302
2303       2.  The server MUST change CALDAV:schedule-tag property value when
2304           the scheduling object resource is changed directly via an HTTP
2305           request (e.g., PUT, COPY or MOVE).
2306
2307    o  For an Attendee's copy of a scheduling object resource:
2308
2309       1.  The server MUST change the CALDAV:schedule-tag property value
2310           when the scheduling object resource is changed as the result
2311           of processing a scheduling message update from an Organizer
2312           that contains changes other than just the participation status
2313           of Attendees.
2314
2315       2.  The server MUST NOT change the CALDAV:schedule-tag property
2316           value when the scheduling object resource is changed as the
2317           result of processing a scheduling message update from an
2318           Organizer that only specify changes in the participation
2319           status of Attendees.  For instance, when Attendee "A" replies
2320           to Organizer "O", and Attendee "B" receives a scheduling
2321           message update from Organizer "O" with the new participation
2322           status of Attendee "A", the CALDAV:schedule-tag property of
2323           Attendee "B"s scheduling object resource MUST NOT be changed.
2324
2325       3.  The server MUST change the CALDAV:schedule-tag property value
2326           when the scheduling object resource is changed directly via an
2327           HTTP request (e.g., PUT, COPY or MOVE).
2328
2329 8.1.  PUT
2330
2331    Clients can use the If-Schedule-Tag-Match request header to do a PUT
2332    request that ensures that "inconsequential" changes on the server do
2333    not result in a precondition error.  The value of the request header
2334    is set to the last Schedule-Tag value received for the resource being
2335    modified.  If the value of the If-Schedule-Tag-Match header matches
2336    the current value of the CALDAV:schedule-tag property the server MUST
2337    take any "ATTENDEE" property changes for all Attendees other than the
2338    owner of the scheduling object resource and apply those to the new
2339    resource being stored.  Otherwise, the server MUST fail the request
2340    with a 412 Precondition Failed status code.
2341
2342 8.2.  DELETE, COPY or MOVE
2343
2344    Clients can use the If-Schedule-Tag-Match request header to do a
2345    DELETE, COPY or MOVE request that ensures that "inconsequential"
2346    changes on the server do not result in a precondition error.  The
2347    value of the request header is set to the last Schedule-Tag value
2348
2349
2350
2351 Daboo & Desruisseaux     Expires March 10, 2012                [Page 42]
2352 \f
2353 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2354
2355
2356    received for the resource being deleted.  If the value of the If-
2357    Schedule-Tag-Match header matches the current value of the CALDAV:
2358    schedule-tag property the server performs the normal DELETE, COPY or
2359    MOVE request processing for the resource.  Otherwise, the server MUST
2360    fail the request with a 412 Precondition Failed status code.
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407 Daboo & Desruisseaux     Expires March 10, 2012                [Page 43]
2408 \f
2409 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2410
2411
2412 9.  Other Scheduling Considerations
2413
2414 9.1.  Attendee Participation Status
2415
2416    This section specifies additional requirements on the handling of the
2417    "PARTSTAT" property parameter when the "SCHEDULE-AGENT" property
2418    parameter on the corresponding "ATTENDEE" property is set to the
2419    value "SERVER" or is not present.
2420
2421    Clients SHOULD, and servers MUST reset the "PARTSTAT" property
2422    parameter value of all "ATTENDEE" properties, except the one that
2423    corresponds to the Organizer, to "NEEDS-ACTION" when the Organizer
2424    reschedules an event.
2425
2426    A reschedule of an event occurs when any "DTSTART", "DTEND",
2427    "DURATION", "DUE", "RRULE", "RDATE", or "EXDATE" property changes in
2428    a calendar component such that existing recurrence instances are
2429    impacted by the changes, as shown in the table below.
2430
2431    +-----------+-------------------------------------------------------+
2432    | Property  | Server Action                                         |
2433    +-----------+-------------------------------------------------------+
2434    | DTSTART,  | Any change to these properties MUST result in         |
2435    | DTEND,    | "PARTSTAT" being set to "NEEDS-ACTION"                |
2436    | DURATION, |                                                       |
2437    | DUE       |                                                       |
2438    |           |                                                       |
2439    |           |                                                       |
2440    |           |                                                       |
2441    | RRULE     | A change to or addition of this property that results |
2442    |           | in the addition of new recurring instances or a       |
2443    |           | change in time for existing recurring instances MUST  |
2444    |           | result in "PARTSTAT" being reset to "NEEDS-ACTION" on |
2445    |           | each affected component.                              |
2446    |           |                                                       |
2447    |           |                                                       |
2448    |           |                                                       |
2449    | RDATE     | A change to or addition of this property that results |
2450    |           | in the addition of new recurring instances or a       |
2451    |           | change in time for existing recurring instances MUST  |
2452    |           | result in "PARTSTAT" being reset to "NEEDS-ACTION" on |
2453    |           | each affected component.                              |
2454    |           |                                                       |
2455    |           |                                                       |
2456    |           |                                                       |
2457
2458
2459
2460
2461
2462
2463 Daboo & Desruisseaux     Expires March 10, 2012                [Page 44]
2464 \f
2465 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2466
2467
2468    | EXDATE    | A change to or removal of this property that results  |
2469    |           | in the re-instatement of recurring instances MUST     |
2470    |           | result in "PARTSTAT" being set to "NEEDS-ACTION" on   |
2471    |           | each affected component.                              |
2472    +-----------+-------------------------------------------------------+
2473
2474    The server MAY allow the Organizer's client to change an Attendee's
2475    "PARTSTAT" property parameter value to "NEEDS-ACTION" at any other
2476    time (e.g., when the "LOCATION" property value changes, an Organizer
2477    might wish to re-invite Attendees who may be impacted by the change).
2478
2479 9.2.  Schedule Status Values
2480
2481    When scheduling with an Attendee there are two types of status
2482    information that can be returned during the transaction.  The first
2483    type of status information is a "delivery" status that indicates
2484    whether the scheduling message from the Organizer to the Attendee was
2485    delivered or not, or what the current status of delivery is.  The
2486    second type of status information is a "reply" status corresponding
2487    to the Attendee's own "REQUEST-STATUS" information from the
2488    scheduling message reply that is sent back to the Organizer.
2489
2490    Similarly, when an Attendee sends a reply back to the Organizer,
2491    there will be "delivery" status information for the scheduling
2492    message sent to the Organizer.  However, there is no "REQUEST-STATUS"
2493    sent back by the Organizer, so there is no equivalent of the "reply"
2494    status as per scheduling messages to Attendees.
2495
2496    The "delivery" status information on an "ORGANIZER" or "ATTENDEE"
2497    iCalendar property is conveyed in the "SCHEDULE-STATUS" property
2498    parameter value (Section 10.3).  The status code value for "delivery"
2499    status can be one of the following:
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519 Daboo & Desruisseaux     Expires March 10, 2012                [Page 45]
2520 \f
2521 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2522
2523
2524    +----------+--------------------------------------------------------+
2525    | Delivery | Description                                            |
2526    | Status   |                                                        |
2527    | Code     |                                                        |
2528    +----------+--------------------------------------------------------+
2529    | 1.0      | The scheduling message is pending. i.e. the server is  |
2530    |          | still in the process of sending the message.  The      |
2531    |          | status code value can be expected to change once the   |
2532    |          | server has completed its sending and delivery          |
2533    |          | attempts.                                              |
2534    |          |                                                        |
2535    |          |                                                        |
2536    |          |                                                        |
2537    | 1.1      | The scheduling message has been successfully sent.     |
2538    |          | However, the server does not have explicit information |
2539    |          | about whether the scheduling message was successfully  |
2540    |          | delivered to the recipient.  This state can occur with |
2541    |          | "store and forward" style scheduling protocols such as |
2542    |          | iMIP [RFC6047] (iTIP using email).                     |
2543    |          |                                                        |
2544    |          |                                                        |
2545    |          |                                                        |
2546    | 1.2      | The scheduling message has been successfully           |
2547    |          | delivered.                                             |
2548    |          |                                                        |
2549    |          |                                                        |
2550    |          |                                                        |
2551    | 3.7      | The scheduling message was not delivered because the   |
2552    |          | server did not recognize the calendar user address as  |
2553    |          | a valid calendar user.  Note that this code applies to |
2554    |          | both Organizer and Attendee calendar user addresses.   |
2555    |          |                                                        |
2556    |          |                                                        |
2557    |          |                                                        |
2558    | 3.8      | The scheduling message was not delivered due to        |
2559    |          | insufficient privileges.  Note that this code applies  |
2560    |          | to both privileges granted by both the Organizer and   |
2561    |          | Attendee calendar users.                               |
2562    |          |                                                        |
2563    |          |                                                        |
2564    |          |                                                        |
2565    | 5.1      | The scheduling message was not delivered because the   |
2566    |          | server could not complete delivery of the message.     |
2567    |          | This is likely due to a temporary failure, and the     |
2568    |          | originator can try to send the message again at a      |
2569    |          | later time.                                            |
2570    |          |                                                        |
2571    |          |                                                        |
2572
2573
2574
2575 Daboo & Desruisseaux     Expires March 10, 2012                [Page 46]
2576 \f
2577 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2578
2579
2580    | 5.2      | The scheduling message was not delivered because the   |
2581    |          | server was not able to find a suitable way to deliver  |
2582    |          | the message.  This is likely a permanent failure, and  |
2583    |          | the originator should not try to send the message      |
2584    |          | again, at least without verifying/correcting the       |
2585    |          | calendar user address of the recipient.                |
2586    |          |                                                        |
2587    |          |                                                        |
2588    |          |                                                        |
2589    | 5.3      | The scheduling message was not delivered and was       |
2590    |          | rejected because scheduling with that recipient is not |
2591    |          | allowed.  This is likely a permanent failure, and the  |
2592    |          | originator should not try to send the message again.   |
2593    +----------+--------------------------------------------------------+
2594
2595    The status code for "reply" status can be any of the valid iTIP
2596    [RFC5546] "REQUEST-STATUS" values.
2597
2598    The 1.xx "REQUEST-STATUS" codes are new.  This specification modifies
2599    item (2) of Section 3.6 of [RFC5546] by adding the following
2600    restriction:
2601
2602       For a 1.xx code, all components MUST have exactly the same code.
2603
2604    Definition of the new 1.xx codes is as follows:
2605
2606 9.2.1.  Status Code 1.0
2607
2608    Status Code:  1.0
2609
2610    Status Description:  Pending.
2611
2612    Status Exception Data:  None.
2613
2614    Description:  Delivery of the iTIP message is pending.
2615
2616 9.2.2.  Status Code 1.1
2617
2618    Status Code:  1.1
2619
2620    Status Description:  Sent.
2621
2622    Status Exception Data:  None.
2623
2624    Description:  The iTIP message has been sent, though no information
2625       about successful delivery is known.
2626
2627
2628
2629
2630
2631 Daboo & Desruisseaux     Expires March 10, 2012                [Page 47]
2632 \f
2633 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2634
2635
2636 9.2.3.  Status Code 1.2
2637
2638    Status Code:  1.2
2639
2640    Status Description:  Delivered.
2641
2642    Status Exception Data:  None.
2643
2644    Description:  The iTIP message has been sent and delivered.
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687 Daboo & Desruisseaux     Expires March 10, 2012                [Page 48]
2688 \f
2689 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2690
2691
2692 10.  Additional iCalendar Property Parameters
2693
2694    This specification defines additional iCalendar property parameters
2695    to support the CalDAV scheduling extensions.
2696
2697 10.1.  Schedule Agent Parameter
2698
2699    Parameter Name:  SCHEDULE-AGENT
2700
2701    Purpose:  To specify the agent expected to deliver scheduling
2702       messages to the corresponding Organizer or Attendee.
2703
2704    Format Definition:  This property parameter is defined by the
2705       following notation:
2706
2707       scheduleagentparam = "SCHEDULE-AGENT" "="
2708                         ("SERVER"      ; The server handles scheduling
2709                        / "CLIENT"      ; The client handles scheduling
2710                        / "NONE"        ; No scheduling
2711                        / x-name        ; Experimental type
2712                        / iana-token)   ; Other IANA registered type
2713                                        ;
2714                                        ; Default is SERVER
2715
2716    Description:  This property parameter MAY be specified on "ORGANIZER"
2717       or "ATTENDEE" iCalendar properties.  In the absence of this
2718       parameter, the value "SERVER" MUST be used for the default
2719       behavior.  The value determines whether or not an automatic
2720       scheduling transaction on a server will cause a scheduling message
2721       to be sent to the corresponding Calendar User identified by the
2722       "ORGANIZER" or "ATTENDEE" property value.  When the value "SERVER"
2723       is specified, or the parameter is absent, then it is the server's
2724       responsibility to send a scheduling message as part of an
2725       automatic scheduling transaction.  When the value "CLIENT" is
2726       specified, that indicates that the client is handling scheduling
2727       messages with the Calendar User itself.  When "NONE" is specified,
2728       no scheduling messages are being sent to the Calendar User.
2729
2730       Servers MUST NOT include this parameter in any scheduling messages
2731       sent as the result of an automatic scheduling transaction.
2732
2733       Clients MUST NOT include this parameter in any scheduling messages
2734       that they themselves send.
2735
2736       The parameter value MUST be the same on every "ORGANIZER" property
2737       in a scheduling object resource.
2738
2739
2740
2741
2742
2743 Daboo & Desruisseaux     Expires March 10, 2012                [Page 49]
2744 \f
2745 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2746
2747
2748       The parameter value MUST be the same on each "ATTENDEE" property
2749       whose values match in a scheduling object resource.
2750
2751       Servers and clients MUST treat x-name and iana-token values they
2752       do not recognize the same way as they would the "NONE" value.
2753
2754    Example:
2755
2756       ORGANIZER;SCHEDULE-AGENT=SERVER:mailto:bernard@example.com
2757
2758       ATTENDEE;SCHEDULE-AGENT=NONE:mailto:cyrus@example.com
2759
2760 10.2.  Schedule Force Send Parameter
2761
2762    Parameter Name:  SCHEDULE-FORCE-SEND
2763
2764    Purpose:  To force a scheduling message to be sent to the Calendar
2765       User specified by the property.
2766
2767    Format Definition:  This property parameter is defined by the
2768       following notation:
2769
2770       scheduleforcesendparam = "SCHEDULE-FORCE-SEND" "="
2771                               ("REQUEST"    ; Force a "REQUEST"
2772                              / "REPLY"      ; Force a "REPLY"
2773                              / iana-token)  ; IANA registered method
2774
2775    Description:  This property parameter MAY be specified on "ATTENDEE"
2776       and "ORGANIZER" properties on which the "SCHEDULE-AGENT" property
2777       parameter is set to the value "SERVER" or is not specified.  This
2778       property parameter is used to force a server to send a scheduling
2779       message to a specific Calendar User in situations where the server
2780       would not send a scheduling message otherwise (e.g., when no
2781       change that warrants the delivery of a new scheduling message was
2782       performed on the scheduling object resource).  An Organizer MAY
2783       specify this parameter on an "ATTENDEE" property with the value
2784       "REQUEST" to force a "REQUEST" scheduling message to be sent to
2785       this Attendee.  An Attendee MAY specify this parameter on the
2786       "ORGANIZER" with the value "REPLY" to force a "REPLY" scheduling
2787       message to be sent to the Organizer.
2788
2789       Servers MUST NOT preserve this property parameter in scheduling
2790       object resources, nor include it in any scheduling messages sent
2791       as the result of an automatic scheduling transaction.
2792
2793
2794
2795
2796
2797
2798
2799 Daboo & Desruisseaux     Expires March 10, 2012                [Page 50]
2800 \f
2801 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2802
2803
2804       Clients MUST NOT include this parameter in any scheduling messages
2805       that they themselves send.
2806
2807       Servers MUST set the "SCHEDULE-STATUS" parameter of the "ATTENDEE"
2808       or "ORGANIZER" to 2.3 (i.e., "Success, invalid property parameter
2809       ignored", see Section 3.6 of [RFC5546]) when the "SCHEDULE-FORCE-
2810       SEND" parameter is set to a x-name or iana-token value they do not
2811       recognize.
2812
2813    Example:
2814
2815       ATTENDEE;SCHEDULE-FORCE-SEND=REQUEST:mailto:bernard@example.com
2816
2817       ORGANIZER;SCHEDULE-FORCE-SEND=REPLY:mailto:cyrus@example.com
2818
2819 10.3.  Schedule Status Parameter
2820
2821    Parameter Name:  SCHEDULE-STATUS
2822
2823    Purpose:  To specify the status codes returned from processing of the
2824       most recent scheduling message sent to the corresponding Attendee,
2825       or received from the corresponding Organizer.
2826
2827    Format Definition:  This property parameter is defined by the
2828       following notation:
2829
2830       schedulestatusparam = "SCHEDULE-STATUS" "="
2831                            ( statcode
2832                           / DQUOTE statcode *("," statcode) DQUOTE)
2833       ; "statcode" is defined in Section 3.8.8.3 of
2834       ; [RFC5545]. Value is a single
2835       ; "statcode" or a comma-separated list of "statcode" values.
2836
2837    Description:  This property parameter MAY be specified on the
2838       "ATTENDEE" and "ORGANIZER" properties.
2839
2840       Servers MUST add this property parameter to any "ATTENDEE"
2841       properties corresponding to Calendar Users who were sent a
2842       scheduling message via an automatic scheduling transaction.
2843       Clients SHOULD NOT change or remove this parameter if it was
2844       provided by the server.  In the case where the client is handling
2845       the scheduling, the client MAY add, change or remove this
2846       parameter to indicate the last scheduling message status it
2847       received.
2848
2849
2850
2851
2852
2853
2854
2855 Daboo & Desruisseaux     Expires March 10, 2012                [Page 51]
2856 \f
2857 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2858
2859
2860       Servers MUST add this parameter to any "ORGANIZER" properties
2861       corresponding to Calendar Users who were sent a scheduling message
2862       reply by an Attendee via an automatic scheduling transaction.
2863       Clients SHOULD NOT change or remove this parameter if it was
2864       provided by the server.  In the case where the client is handling
2865       the scheduling, the client MAY add, change or remove this
2866       parameter to indicate the last scheduling message status it
2867       received.
2868
2869       Servers MUST NOT include this parameter in any scheduling messages
2870       sent as the result of an automatic scheduling transaction.
2871
2872       Clients MUST NOT include this parameter in any scheduling messages
2873       that they themselves send.
2874
2875       Suitable values for this property parameter are described in
2876       Section 9.2.
2877
2878    Example:
2879
2880       ATTENDEE;SCHEDULE-STATUS="2.0":mailto:bernard@example.com
2881
2882       ATTENDEE;SCHEDULE-STATUS="2.0,2.4":mailto:cyrus@example.com
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911 Daboo & Desruisseaux     Expires March 10, 2012                [Page 52]
2912 \f
2913 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2914
2915
2916 11.  Additional Message Header Fields
2917
2918    This specification defines additional HTTP request and response
2919    headers for use with CalDAV.
2920
2921 11.1.  Schedule-Reply Request Header
2922
2923
2924       Schedule-Reply = "Schedule-Reply" ":" ("T" | "F")
2925
2926    Example:
2927
2928       Schedule-Reply: F
2929
2930    When an Attendee removes a scheduling object resource, and the
2931    Schedule-Reply header is not present, or present and set to the value
2932    "T", the server MUST send an appropriate reply scheduling message
2933    with the Attendee's "PARTSTAT" iCalendar property parameter value set
2934    to "DECLINED" as part of its normal automatic scheduling transaction
2935    processing.
2936
2937    When the Schedule-Reply header is set to the value "F", the server
2938    MUST NOT send a scheduling message as part of its normal automatic
2939    scheduling transaction processing.
2940
2941    The Schedule-Reply request header is used by a client to indicate to
2942    a server whether or not an automatic scheduling transaction should
2943    occur when an Attendee deletes a scheduling object resource.  In
2944    particular it controls whether a reply scheduling message is sent to
2945    the Organizer as a result of the removal.  There are situations in
2946    which unsolicited scheduling messages need to be silently removed (or
2947    ignored) for security or privacy reasons.  This request header allows
2948    the scheduling object resource to be removed if such a need arises.
2949
2950    All scheduling object resources MUST support the Schedule-Reply
2951    request header.
2952
2953 11.2.  Schedule-Tag Response Header
2954
2955    The Schedule-Tag response header provides the current value of the
2956    CALDAV:schedule-tag property value.  The behavior of this response
2957    header is described in Section 8.
2958
2959    All scheduling object resources MUST support the Schedule-Tag header.
2960
2961       Schedule-Tag = "Schedule-Tag" ":" opaque-tag
2962       ; "opaque-tag" is defined in Section 3.11 of [RFC2616]
2963
2964
2965
2966
2967 Daboo & Desruisseaux     Expires March 10, 2012                [Page 53]
2968 \f
2969 Internet-Draft        CalDAV Scheduling Extensions        September 2011
2970
2971
2972    Example:
2973
2974       Schedule-Tag: "12ab34-cd56ef"
2975
2976 11.3.  If-Schedule-Tag-Match Request Header
2977
2978    The If-Schedule-Tag-Match request header field is used with a method
2979    to make it conditional.  Clients can set this header to the value
2980    returned in the Schedule-Tag response header, or the CALDAV:schedule-
2981    tag property, of a scheduling object resource previously retrieved
2982    from the server to avoid overwriting "consequential" changes to the
2983    scheduling object resource.
2984
2985    All scheduling object resources MUST support the If-Schedule-Tag-
2986    Match header.
2987
2988       If-Schedule-Tag-Match = "If-Schedule-Tag-Match" ":" opaque-tag
2989       ; "opaque-tag" is defined in Section 3.11 of [RFC2616]
2990
2991    Example:
2992
2993       If-Schedule-Tag-Match: "12ab34-cd56ef"
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023 Daboo & Desruisseaux     Expires March 10, 2012                [Page 54]
3024 \f
3025 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3026
3027
3028 12.  Additional WebDAV Properties
3029
3030    This specification defines the following new WebDAV properties for
3031    use with CalDAV.
3032
3033 12.1.  CALDAV:schedule-calendar-transp Property
3034
3035    Name:  schedule-calendar-transp
3036
3037    Namespace:  urn:ietf:params:xml:ns:caldav
3038
3039    Purpose:  Determines whether the calendar object resources in a
3040       calendar collection will affect the owner's freebusy.
3041
3042    Protected:  This property MAY be protected and SHOULD NOT be returned
3043       by a PROPFIND allprop request (as defined in Section 14.2 of
3044       [RFC4918]).
3045
3046    COPY/MOVE behavior:  This property value SHOULD be kept during a MOVE
3047       operation, and SHOULD be copied and preserved in a COPY.
3048
3049    Description:  This property SHOULD be defined on all calendar
3050       collections.  If present, it contains one of two XML elements that
3051       indicate whether the calendar object resources in the calendar
3052       collection should contribute to the owner's freebusy or not.  When
3053       the CALDAV:opaque element is used, all calendar object resources
3054       in the corresponding calendar collection MUST contribute to
3055       freebusy, assuming access privileges and other iCalendar
3056       properties allow it to.  When the CALDAV:transparent XML element
3057       is used, the calendar object resources in the corresponding
3058       calendar collection MUST NOT contribute to freebusy.
3059
3060       If this property is not present on a calendar collection, then the
3061       default value CALDAV:opaque MUST be assumed.
3062
3063    Definition:
3064
3065       <!ELEMENT schedule-calendar-transp (opaque | transparent) >
3066
3067       <!ELEMENT opaque EMPTY>
3068       <!-- Affect busy time searches -->
3069
3070       <!ELEMENT transparent EMPTY>
3071       <!-- Invisible to busy time searches -->
3072
3073
3074
3075
3076
3077
3078
3079 Daboo & Desruisseaux     Expires March 10, 2012                [Page 55]
3080 \f
3081 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3082
3083
3084    Example:
3085
3086    <C:schedule-calendar-transp
3087         xmlns:C="urn:ietf:params:xml:ns:caldav">
3088      <C:opaque/>
3089    </C:schedule-calendar-transp>
3090
3091 12.2.  CALDAV:schedule-default-calendar-URL Property
3092
3093    Name:  schedule-default-calendar-URL
3094
3095    Namespace:  urn:ietf:params:xml:ns:caldav
3096
3097    Purpose:  Specifies a default calendar for an Attendee where new
3098       scheduling object resources are created.
3099
3100    Protected:  This property MAY be protected in the case where a server
3101       does not support changing the default calendar, or does not
3102       support a default calendar.
3103
3104    COPY/MOVE behavior:  This property is only defined on a scheduling
3105       Inbox collection which cannot be moved or copied.
3106
3107    Description:  This property MAY be defined on a scheduling Inbox
3108       collection.  If present, it contains zero or one DAV:href XML
3109       elements.  When a DAV:href element is present, its value indicates
3110       a URL to a calendar collection that is used as the default
3111       calendar.  When no DAV:href element is present, it indicates that
3112       there is no default calendar.  In the absence of this property
3113       there is no default calendar.  When there is no default calendar
3114       the server is free to choose the calendar in which a new
3115       scheduling object resource is created.  See Section 6.4.
3116
3117    Definition:
3118
3119    <!ELEMENT schedule-default-calendar-URL (DAV:href?) >
3120
3121    Example:
3122
3123       <C:schedule-default-calendar-URL xmlns:D="DAV:"
3124            xmlns:C="urn:ietf:params:xml:ns:caldav">
3125         <D:href>/home/cyrus/calendars/work/</D:href>
3126       </C:schedule-default-calendar-URL>
3127
3128
3129
3130
3131
3132
3133
3134
3135 Daboo & Desruisseaux     Expires March 10, 2012                [Page 56]
3136 \f
3137 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3138
3139
3140 12.3.  CALDAV:schedule-tag Property
3141
3142    Name:  schedule-tag
3143
3144    Namespace:  urn:ietf:params:xml:ns:caldav
3145
3146    Purpose:  Indicates whether a scheduling object resource has had a
3147       "consequential" change made to it.
3148
3149    Value:  opaque-tag (defined in Section 3.11 of [RFC2616])
3150
3151    Protected:  This property MUST be protected as only the server can
3152       update the value.
3153
3154    COPY/MOVE behavior:  This property is only defined on scheduling
3155       object resources.  It MUST be preserved when a scheduling object
3156       resource is copied or moved and the resulting resource is also a
3157       scheduling object resource.  If the source resource is not a
3158       scheduling object resource but the destination resource is, this
3159       property MUST be added to the destination resource.
3160
3161    Description:  The CALDAV:schedule-tag property MUST be defined on all
3162       scheduling object resources.  This property is described in
3163       Section 8.
3164
3165    Definition:
3166
3167       <!ELEMENT schedule-tag (#PCDATA) >
3168
3169    Example:
3170
3171       <C:schedule-tag xmlns:C="urn:ietf:params:xml:ns:caldav"
3172       >"12345-67890"</C:schedule-tag>
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191 Daboo & Desruisseaux     Expires March 10, 2012                [Page 57]
3192 \f
3193 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3194
3195
3196 13.  Scheduling Access Control
3197
3198 13.1.  Scheduling Privileges
3199
3200    CalDAV servers MUST support and adhere to the requirements of WebDAV
3201    ACL [RFC3744].  Furthermore, CalDAV servers that advertise support
3202    for the "calendar-auto-schedule" feature MUST also support the
3203    scheduling privileges defined in this section.
3204
3205    All the scheduling privileges MUST be non-abstract and MUST appear in
3206    the DAV:supported-privilege-set property of scheduling Outbox and
3207    Inbox collections on which they are defined.
3208
3209    The tables specified in Appendix A clarify which scheduling methods
3210    (e.g., "REQUEST", "REPLY", etc.) are controlled by each scheduling
3211    privilege defined in this section.
3212
3213 13.1.1.  Privileges on Scheduling Inbox Collections
3214
3215    This section defines new WebDAV ACL privileges that are for use on
3216    scheduling Inbox collections.  These privileges determine whether
3217    delivery of scheduling messages from a calendar user is allowed by
3218    the calendar user who "owns" the scheduling Inbox collection.  This
3219    allows calendar users to choose which other calendar users can
3220    schedule with them.
3221
3222    Note that when a scheduling message is delivered to a calendar user,
3223    in addition to a scheduling object resource being created in the
3224    calendar user's scheduling Inbox collection, a new scheduling object
3225    resource might be created or an existing one updated in a calendar
3226    belonging to the calendar user.  In that case, the ability to create
3227    or update the scheduling object resource in the calendar is
3228    controlled by the privileges assigned to the scheduling Inbox
3229    collection.
3230
3231    The privileges defined in this section are ignored if applied to a
3232    resource other than a scheduling Inbox collection.
3233
3234 13.1.1.1.  CALDAV:schedule-deliver Privilege
3235
3236    CALDAV:schedule-deliver is an aggregate privilege that contains all
3237    the scheduling privileges that control the processing and delivery of
3238    incoming scheduling messages, that is, CALDAV:schedule-deliver-invite
3239    and CALDAV:schedule-deliver-reply, as well as freebusy requests
3240    targeted at the owner of the scheduling Inbox collection, that is,
3241    CALDAV:schedule-query-freebusy.
3242
3243    <!ELEMENT schedule-deliver EMPTY >
3244
3245
3246
3247 Daboo & Desruisseaux     Expires March 10, 2012                [Page 58]
3248 \f
3249 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3250
3251
3252 13.1.1.2.  CALDAV:schedule-deliver-invite Privilege
3253
3254    The CALDAV:schedule-deliver-invite privilege controls the processing
3255    and delivery of scheduling messages coming from an Organizer.
3256
3257    <!ELEMENT schedule-deliver-invite EMPTY >
3258
3259 13.1.1.3.  CALDAV:schedule-deliver-reply Privilege
3260
3261    The CALDAV:schedule-deliver-reply privilege controls the processing
3262    and delivery of scheduling messages coming from an Attendee.
3263
3264    <!ELEMENT schedule-deliver-reply EMPTY >
3265
3266 13.1.1.4.  CALDAV:schedule-query-freebusy Privilege
3267
3268    The CALDAV:schedule-query-freebusy privilege controls freebusy
3269    requests targeted at the owner of the scheduling Inbox collection.
3270
3271    <!ELEMENT schedule-query-freebusy EMPTY >
3272
3273 13.1.2.  Privileges on Scheduling Outbox Collections
3274
3275    This section defines new WebDAV ACL privileges that are defined for
3276    use on scheduling Outbox collections.  These privileges determine
3277    which calendar users are allowed to send scheduling messages on
3278    behalf of the calendar user who "owns" the scheduling Outbox
3279    collection.  This allows calendar users to choose other calendar
3280    users who can act on their behalf to send schedule messages to other
3281    calendar users (e.g. assistants working on behalf of their boss).
3282
3283    The privileges defined in this section are ignored if applied to a
3284    resource other than a scheduling Outbox collection.
3285
3286 13.1.2.1.  CALDAV:schedule-send Privilege
3287
3288    CALDAV:schedule-send is an aggregate privilege that contains all the
3289    scheduling privileges that control the use of methods that will cause
3290    scheduling messages to be delivered to other users, that is, CALDAV:
3291    schedule-send-invite and CALDAV:schedule-send-reply, as well as
3292    freebusy requests to be targeted at other users, that is, CALDAV:
3293    schedule-send-freebusy.
3294
3295    <!ELEMENT schedule-send EMPTY >
3296
3297
3298
3299
3300
3301
3302
3303 Daboo & Desruisseaux     Expires March 10, 2012                [Page 59]
3304 \f
3305 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3306
3307
3308 13.1.2.2.  CALDAV:schedule-send-invite Privilege
3309
3310    The CALDAV:schedule-send-invite privilege controls the sending of
3311    scheduling messages by Organizers.
3312
3313    Users granted the DAV:bind privilege on a calendar collection, or
3314    DAV:write privilege on scheduling object resources, will also need
3315    the CALDAV:schedule-send-invite privilege granted on the scheduling
3316    Outbox collection of the owner of the calendar collection or
3317    scheduling object resource in order to be allowed to create, modify
3318    or delete scheduling object resources in a way that will trigger the
3319    CalDAV server to deliver organizer scheduling messages to other
3320    calendar users.
3321
3322    <!ELEMENT schedule-send-invite EMPTY >
3323
3324 13.1.2.3.  CALDAV:schedule-send-reply Privilege
3325
3326    The CALDAV:schedule-send-reply privilege controls the sending of
3327    scheduling messages by Attendees.
3328
3329    Users granted the DAV:bind privilege on a calendar collection, or
3330    DAV:write privilege on scheduling object resources, will also need
3331    the CALDAV:schedule-send-reply privilege granted on the scheduling
3332    Outbox collection of the owner of the calendar collection or
3333    scheduling object resource in order to be allowed to create, modify
3334    or delete scheduling object resources in a way that will trigger the
3335    CalDAV server to deliver attendee scheduling messages to other
3336    calendar users.
3337
3338    <!ELEMENT schedule-send-reply EMPTY >
3339
3340 13.1.2.4.  CALDAV:schedule-send-freebusy Privilege
3341
3342    The CALDAV:schedule-send-freebusy privilege controls the use of the
3343    POST method to submit scheduling messages that specify the scheduling
3344    method "REQUEST" with a "VFREEBUSY" calendar component.
3345
3346    <!ELEMENT schedule-send-freebusy EMPTY >
3347
3348 13.1.3.  Aggregation of Scheduling Privileges
3349
3350    Server implementations MUST aggregate the scheduling privileges as
3351    follows:
3352
3353       DAV:all MUST contain CALDAV:schedule-send and CALDAV:schedule-
3354       deliver;
3355
3356
3357
3358
3359 Daboo & Desruisseaux     Expires March 10, 2012                [Page 60]
3360 \f
3361 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3362
3363
3364       CALDAV:schedule-send MUST contain CALDAV:schedule-send-invite,
3365       CALDAV:schedule-send-reply, and CALDAV:schedule-send-freebusy;
3366
3367       CALDAV:schedule-deliver MUST contain CALDAV:schedule-deliver-
3368       invite, CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-
3369       freebusy.
3370
3371    The following diagram illustrates how scheduling privileges are
3372    aggregated according to the above requirements.
3373
3374          [DAV:all] (aggregate)
3375              |
3376              +-- [CALDAV:schedule-deliver] (aggregate)
3377              |      |
3378              |      +-- [CALDAV:schedule-deliver-invite]
3379              |      +-- [CALDAV:schedule-deliver-reply]
3380              |      +-- [CALDAV:schedule-query-freebusy]
3381              |
3382              +-- [CALDAV:schedule-send] (aggregate)
3383                     |
3384                     +-- [CALDAV:schedule-send-invite]
3385                     +-- [CALDAV:schedule-send-reply]
3386                     +-- [CALDAV:schedule-send-freebusy]
3387
3388 13.2.  Additional Principal Properties
3389
3390    This section defines new properties for WebDAV principal resources as
3391    defined in [RFC3744].  These properties are likely to be protected
3392    but the server MAY allow them to be written by appropriate users.
3393
3394 13.2.1.  CALDAV:schedule-inbox-URL Property
3395
3396    Name:  schedule-inbox-URL
3397
3398    Namespace:  urn:ietf:params:xml:ns:caldav
3399
3400    Purpose:  Identify the URL of the scheduling Inbox collection owned
3401       by the associated principal resource.
3402
3403    Protected:  This property MAY be protected.
3404
3405    PROPFIND behavior:  This property SHOULD NOT be returned by a
3406       PROPFIND allprop request (as defined in Section 14.2 of
3407       [RFC4918]).
3408
3409
3410
3411
3412
3413
3414
3415 Daboo & Desruisseaux     Expires March 10, 2012                [Page 61]
3416 \f
3417 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3418
3419
3420    COPY/MOVE behavior:  This property value SHOULD be preserved in COPY
3421       and MOVE operations.
3422
3423    Description:  This property is needed for a client to determine where
3424       the scheduling Inbox collection of the current user is located so
3425       that processing of scheduling messages can occur.  If not present,
3426       then the associated calendar user is not enabled for reception of
3427       scheduling messages on the server.
3428
3429    Definition:
3430
3431       <!ELEMENT schedule-inbox-URL (DAV:href)>
3432
3433 13.2.2.  CALDAV:schedule-outbox-URL Property
3434
3435    Name:  schedule-outbox-URL
3436
3437    Namespace:  urn:ietf:params:xml:ns:caldav
3438
3439    Purpose:  Identify the URL of the scheduling Outbox collection owned
3440       by the associated principal resource.
3441
3442    Protected:  This property MAY be protected.
3443
3444    PROPFIND behavior:  This property SHOULD NOT be returned by a
3445       PROPFIND allprop request (as defined in Section 14.2 of
3446       [RFC4918]).
3447
3448    COPY/MOVE behavior:  This property value SHOULD be preserved in COPY
3449       and MOVE operations.
3450
3451    Description:  This property is needed for a client to determine where
3452       the scheduling Outbox collection of the current user is located so
3453       that sending of scheduling messages can occur.  If not present,
3454       then the associated calendar user is not enabled for the sending
3455       of scheduling messages on the server.
3456
3457    Definition:
3458
3459       <!ELEMENT schedule-outbox-URL DAV:href>
3460
3461 13.2.3.  CALDAV:calendar-user-address-set Property
3462
3463    Name:  calendar-user-address-set
3464
3465
3466
3467
3468
3469
3470
3471 Daboo & Desruisseaux     Expires March 10, 2012                [Page 62]
3472 \f
3473 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3474
3475
3476    Namespace:  urn:ietf:params:xml:ns:caldav
3477
3478    Purpose:  Identify the calendar addresses of the associated principal
3479       resource.
3480
3481    Protected:  This property MAY be protected.
3482
3483    PROPFIND behavior:  This property SHOULD NOT be returned by a
3484       PROPFIND allprop request (as defined in Section 14.2 of
3485       [RFC4918]).
3486
3487    COPY/MOVE behavior:  This property value SHOULD be preserved in COPY
3488       and MOVE operations.
3489
3490    Description:  Support for this property is REQUIRED.  This property
3491       is needed to map calendar user addresses in iCalendar data to
3492       principal resources and their associated scheduling Inbox and
3493       Outbox collections.  In the event that a user has no well defined
3494       identifier for their calendar user address, the URI of their
3495       principal resource can be used.  This property SHOULD be
3496       searchable using the DAV:principal-property-search REPORT.  The
3497       DAV:principal-search-property-set REPORT SHOULD identify this
3498       property as such.  If not present, then the associated calendar
3499       user is not enabled for scheduling on the server.
3500
3501    Definition:
3502
3503       <!ELEMENT calendar-user-address-set (DAV:href*)>
3504
3505    Example:
3506
3507       <C:calendar-user-address-set xmlns:D="DAV:"
3508                             xmlns:C="urn:ietf:params:xml:ns:caldav">
3509         <D:href>mailto:bernard@example.com</D:href>
3510         <D:href>mailto:bernard.desruisseaux@example.com</D:href>
3511       </C:calendar-user-address-set>
3512
3513 13.2.4.  CALDAV:calendar-user-type Property
3514
3515    Name:  calendar-user-type
3516
3517    Namespace:  urn:ietf:params:xml:ns:caldav
3518
3519    Purpose:  Identifies the calendar user type of the associated
3520       principal resource.
3521
3522
3523
3524
3525
3526
3527 Daboo & Desruisseaux     Expires March 10, 2012                [Page 63]
3528 \f
3529 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3530
3531
3532    Value:  Same values allowed for the iCalendar "CUTYPE" property
3533       parameter defined in Section 3.2.3 of [RFC5545].
3534
3535    Protected:  This property MAY be protected.
3536
3537    PROPFIND behavior:  This property SHOULD NOT be returned by a
3538       PROPFIND allprop request (as defined in Section 14.2 of
3539       [RFC4918]).
3540
3541    COPY/MOVE behavior:  This property value SHOULD be preserved in COPY
3542       and MOVE operations.
3543
3544    Description:  Clients can query principal resources in order to
3545       lookup attendees available on the server.  When doing this, it is
3546       useful to know, or restrict the query to, certain types of
3547       calendar user (e.g., only search for "people", or only search for
3548       "rooms").  This property MAY be defined on principal resources to
3549       indicate the type of calendar user associated with the principal
3550       resource.  Its value is the same as the iCalendar "CUTYPE"
3551       property parameter that can be used on "ATTENDEE" properties.
3552       This property SHOULD be searchable using the DAV:principal-
3553       property-search REPORT.  The DAV:principal-search-property-set
3554       REPORT SHOULD identify this property as such.
3555
3556    Definition:
3557
3558       <!ELEMENT calendar-user-type (#PCDATA) >
3559
3560    Example:
3561
3562       <C:calendar-user-type
3563            xmlns:C="urn:ietf:params:xml:ns:caldav">INDIVIDUAL<
3564        /C:calendar-user-type>
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583 Daboo & Desruisseaux     Expires March 10, 2012                [Page 64]
3584 \f
3585 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3586
3587
3588 14.  XML Element Definitions
3589
3590 14.1.  CALDAV:schedule-response XML Element
3591
3592    Name:  schedule-response
3593
3594    Namespace:  urn:ietf:params:xml:ns:caldav
3595
3596    Purpose:  Contains the set of responses for a POST method request.
3597
3598    Description:  See Section 7.3.
3599
3600    Definition:
3601
3602        <!ELEMENT schedule-response (response*)>
3603
3604 14.2.  CALDAV:response XML Element
3605
3606    Name:  response
3607
3608    Namespace:  urn:ietf:params:xml:ns:caldav
3609
3610    Purpose:  Contains a single response for a POST method request.
3611
3612    Description:  See Section 7.3.
3613
3614    Definition:
3615
3616    <!ELEMENT response (recipient,
3617                        request-status,
3618                        calendar-data?,
3619                        DAV:error?,
3620                        DAV:responsedescription?)>
3621
3622    <!-- CALDAV:calendar-data is defined in Section 9.6 of
3623    RFC 4791 and when used here uses the definition with
3624    content (#PCDATA) only -->
3625
3626 14.3.  CALDAV:recipient XML Element
3627
3628    Name:  recipient
3629
3630    Namespace:  urn:ietf:params:xml:ns:caldav
3631
3632    Purpose:  The calendar user address that the enclosing response for a
3633       POST method request is for.
3634
3635
3636
3637
3638
3639 Daboo & Desruisseaux     Expires March 10, 2012                [Page 65]
3640 \f
3641 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3642
3643
3644    Description:  See Section 7.3.
3645
3646    Definition:
3647
3648        <!ELEMENT recipient (DAV:href)>
3649
3650 14.4.  CALDAV:request-status XML Element
3651
3652    Name:  request-status
3653
3654    Namespace:  urn:ietf:params:xml:ns:caldav
3655
3656    Purpose:  The iTIP "REQUEST-STATUS" property value for this response.
3657
3658    Description:  See Section 7.3.
3659
3660    Definition:
3661
3662        <!ELEMENT request-status (#PCDATA) >
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695 Daboo & Desruisseaux     Expires March 10, 2012                [Page 66]
3696 \f
3697 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3698
3699
3700 15.  Security Considerations
3701
3702    The process of scheduling involves the sending and receiving of
3703    scheduling messages.  As a result, the security problems related to
3704    messaging in general are relevant here.  In particular the
3705    authenticity of the scheduling messages needs to be verified.
3706    Servers and clients MUST use an HTTP connection protected with TLS as
3707    defined in [RFC2818] for all scheduling transactions.
3708
3709 15.1.  Verifying Scheduling Transactions
3710
3711    When handling a scheduling transaction:
3712
3713       Servers MUST verify that the principal associated with the DAV:
3714       owner of the calendar collection in which a scheduling object
3715       resource is being manipulated contains a CALDAV:schedule-outbox-
3716       URL property value.
3717
3718       Servers MUST verify that the currently authenticated user has the
3719       CALDAV:schedule-send privilege, or a suitable sub-privilege
3720       aggregated under this privilege, on the scheduling Outbox
3721       collection of the DAV:owner of the calendar collection in which a
3722       scheduling object resource is being manipulated.
3723
3724       Servers MUST only deliver scheduling messages to recipients when
3725       the CALDAV:schedule-deliver privilege, or a suitable sub-privilege
3726       aggregated under this privilege, is granted on the recipient's
3727       scheduling Inbox collection for the principal associated with the
3728       DAV:owner of the calendar collection in which a scheduling object
3729       resource is being manipulated.
3730
3731       To prevent impersonation of calendar users, the server MUST verify
3732       that the "ORGANIZER" property in an organizer scheduling object
3733       resource matches one of the calendar user addresses of the DAV:
3734       owner of the calendar collection in which the resource is stored.
3735
3736       To prevent spoofing of an existing scheduling object resource,
3737       servers MUST verify that the "UID" iCalendar property value in a
3738       new scheduling object resource does not match that of an existing
3739       scheduling object resource with a different "ORGANIZER" property
3740       value.
3741
3742 15.2.  Verifying Busy Time Information Requests
3743
3744    When handling a POST request on a scheduling Outbox collection:
3745
3746
3747
3748
3749
3750
3751 Daboo & Desruisseaux     Expires March 10, 2012                [Page 67]
3752 \f
3753 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3754
3755
3756       Servers MUST verify that the principal associated with the
3757       calendar user address specified in the "ORGANIZER" property of the
3758       scheduling message data in the request contains a CALDAV:schedule-
3759       outbox-URL property value that matches the scheduling Outbox
3760       collection targeted by the request.
3761
3762       Servers MUST verify that the currently authenticated user has the
3763       CALDAV:schedule-send privilege, or a sub-privilege aggregated
3764       under this privilege, on the scheduling Outbox collection targeted
3765       by the request.
3766
3767       Servers MUST only return valid freebusy information for recipients
3768       when the CALDAV:schedule-deliver privilege, or a sub-privilege
3769       aggregated under this privilege, is granted on the recipient's
3770       scheduling Inbox collection for the principal associated with the
3771       DAV:owner of the scheduling Outbox collection targeted by the
3772       request.
3773
3774 15.3.  Privacy Issues
3775
3776    As noted in Section 11.1, Attendees can use the Schedule-Reply
3777    request header with the value set to "F" to prevent notification to
3778    an Organizer that a scheduling object resource was deleted.  This
3779    allows Attendees to remove unwanted scheduling messages without any
3780    response to the Organizer.
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807 Daboo & Desruisseaux     Expires March 10, 2012                [Page 68]
3808 \f
3809 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3810
3811
3812 16.  IANA Considerations
3813
3814 16.1.  Message Header Field Registrations
3815
3816    The message header fields below should be added to the Permanent
3817    Message Header Field Registry (see [RFC3864]).
3818
3819 16.1.1.  Schedule-Reply
3820
3821    Header field name: Schedule-Reply
3822
3823    Applicable protocol: http
3824
3825    Status: standard
3826
3827    Author/Change controller: IETF
3828
3829    Specification document(s): this specification (Section 11.1)
3830
3831    Related information: none
3832
3833 16.1.2.  Schedule-Tag
3834
3835    Header field name: Schedule-Tag
3836
3837    Applicable protocol: http
3838
3839    Status: standard
3840
3841    Author/Change controller: IETF
3842
3843    Specification document(s): this specification (Section 11.2)
3844
3845    Related information: none
3846
3847 16.1.3.  If-Schedule-Tag-Match
3848
3849    Header field name: If-Schedule-Tag-Match
3850
3851    Applicable protocol: http
3852
3853    Status: standard
3854
3855    Author/Change controller: IETF
3856
3857    Specification document(s): this specification (Section 11.3)
3858
3859    Related information: none
3860
3861
3862
3863 Daboo & Desruisseaux     Expires March 10, 2012                [Page 69]
3864 \f
3865 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3866
3867
3868 16.2.  iCalendar Property Parameter Registrations
3869
3870    The following iCalendar property parameters should be added to the
3871    iCalendar Property Parameter Registry defined in Section 8.3.3 of
3872    [RFC5545].
3873
3874          +---------------------+---------+-----------------------+
3875          | Parameter           | Status  | Reference             |
3876          +---------------------+---------+-----------------------+
3877          | SCHEDULE-AGENT      | Current | RFCXXXX, Section 10.1 |
3878          |                     |         |                       |
3879          | SCHEDULE-STATUS     | Current | RFCXXXX, Section 10.3 |
3880          |                     |         |                       |
3881          | SCHEDULE-FORCE-SEND | Current | RFCXXXX, Section 10.2 |
3882          +---------------------+---------+-----------------------+
3883
3884 16.3.  iCalendar REQUEST-STATUS Value Registrations
3885
3886    The following iCalendar "REQUEST-STATUS" values should be added to
3887    the iCalendar REQUEST-STATUS Value Registry defined in Section 7.3 of
3888    [RFC5546].
3889
3890             +-------------+---------+-------------------------+
3891             | Status Code | Status  | Reference               |
3892             +-------------+---------+-------------------------+
3893             | 1.0         | Current | RFC XXXX, Section 9.2.1 |
3894             |             |         |                         |
3895             | 1.1         | Current | RFC XXXX, Section 9.2.2 |
3896             |             |         |                         |
3897             | 1.2         | Current | RFC XXXX, Section 9.2.3 |
3898             +-------------+---------+-------------------------+
3899
3900 16.4.  Additional iCalendar Elements Registries
3901
3902    This specification adds two new IANA registries for iCalendar
3903    elements.  Additional codes MAY be used, provided the process
3904    described in Section 8.2.1 of [RFC5545] is used to register them.
3905
3906 16.4.1.  Schedule Agent Values Registry
3907
3908    The following table has been used to initialize the schedule agent
3909    values registry.
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919 Daboo & Desruisseaux     Expires March 10, 2012                [Page 70]
3920 \f
3921 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3922
3923
3924            +----------------+---------+------------------------+
3925            | Schedule Agent | Status  | Reference              |
3926            +----------------+---------+------------------------+
3927            | SERVER         | Current | RFC XXXX, Section 10.1 |
3928            |                |         |                        |
3929            | CLIENT         | Current | RFC XXXX, Section 10.1 |
3930            |                |         |                        |
3931            | NONE           | Current | RFC XXXX, Section 10.1 |
3932            +----------------+---------+------------------------+
3933
3934 16.4.2.  Schedule Force Send Values Registry
3935
3936    The following table has been used to initialize the schedule send
3937    values registry.
3938
3939         +---------------------+---------+------------------------+
3940         | Schedule Force Send | Status  | Reference              |
3941         +---------------------+---------+------------------------+
3942         | REQUEST             | Current | RFC XXXX, Section 10.2 |
3943         |                     |         |                        |
3944         | REPLY               | Current | RFC XXXX, Section 10.2 |
3945         +---------------------+---------+------------------------+
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975 Daboo & Desruisseaux     Expires March 10, 2012                [Page 71]
3976 \f
3977 Internet-Draft        CalDAV Scheduling Extensions        September 2011
3978
3979
3980 17.  Acknowledgements
3981
3982    The authors would like to thank the following individuals for
3983    contributing their ideas and support for writing this specification:
3984    Mike Douglass, Lisa Dusseault, Helge Hess, Arnaud Quillaud, Julian F.
3985    Reschke, Wilfredo Sanchez Vega, Simon Vaillancourt, and Jim
3986    Whitehead.
3987
3988    The authors would also like to thank the Calendaring and Scheduling
3989    Consortium for advice with this specification, and for organizing
3990    interoperability testing events to help refine it.
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031 Daboo & Desruisseaux     Expires March 10, 2012                [Page 72]
4032 \f
4033 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4034
4035
4036 18.  References
4037
4038 18.1.  Normative References
4039
4040    [RFC2119]               Bradner, S., "Key words for use in RFCs to
4041                            Indicate Requirement Levels", BCP 14,
4042                            RFC 2119, March 1997.
4043
4044    [RFC2616]               Fielding, R., Gettys, J., Mogul, J., Frystyk,
4045                            H., Masinter, L., Leach, P., and T. Berners-
4046                            Lee, "Hypertext Transfer Protocol --
4047                            HTTP/1.1", RFC 2616, June 1999.
4048
4049    [RFC2818]               Rescorla, E., "HTTP Over TLS", RFC 2818,
4050                            May 2000.
4051
4052    [RFC3744]               Clemm, G., Reschke, J., Sedlar, E., and J.
4053                            Whitehead, "Web Distributed Authoring and
4054                            Versioning (WebDAV) Access Control Protocol",
4055                            RFC 3744, May 2004.
4056
4057    [RFC3864]               Klyne, G., Nottingham, M., and J. Mogul,
4058                            "Registration Procedures for Message Header
4059                            Fields", BCP 90, RFC 3864, September 2004.
4060
4061    [RFC4791]               Daboo, C., Desruisseaux, B., and L.
4062                            Dusseault, "Calendaring Extensions to WebDAV
4063                            (CalDAV)", RFC 4791, March 2007.
4064
4065    [RFC4918]               Dusseault, L., "HTTP Extensions for Web
4066                            Distributed Authoring and Versioning
4067                            (WebDAV)", RFC 4918, June 2007.
4068
4069    [RFC5234]               Crocker, D. and P. Overell, "Augmented BNF
4070                            for Syntax Specifications: ABNF", STD 68,
4071                            RFC 5234, January 2008.
4072
4073    [RFC5545]               Desruisseaux, B., "Internet Calendaring and
4074                            Scheduling Core Object Specification
4075                            (iCalendar)", RFC 5545, September 2009.
4076
4077    [RFC5546]               Daboo, C., "iCalendar Transport-Independent
4078                            Interoperability Protocol (iTIP)", RFC 5546,
4079                            December 2009.
4080
4081    [W3C.REC-xml-20081126]  Paoli, J., Yergeau, F., Bray, T., Sperberg-
4082                            McQueen, C., and E. Maler, "Extensible Markup
4083                            Language (XML) 1.0 (Fifth Edition)", World
4084
4085
4086
4087 Daboo & Desruisseaux     Expires March 10, 2012                [Page 73]
4088 \f
4089 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4090
4091
4092                            Wide Web Consortium Recommendation REC-xml-
4093                            20081126, November 2008,
4094                            <http://www.w3.org/TR/2008/REC-xml-20081126>.
4095
4096 18.2.  Informative References
4097
4098    [RFC3283]               Mahoney, B., Babics, G., and A. Taler, "Guide
4099                            to Internet Calendaring", RFC 3283,
4100                            June 2002.
4101
4102    [RFC6047]               Melnikov, A., "iCalendar Message-Based
4103                            Interoperability Protocol (iMIP)", RFC 6047,
4104                            December 2010.
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143 Daboo & Desruisseaux     Expires March 10, 2012                [Page 74]
4144 \f
4145 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4146
4147
4148 Appendix A.  Scheduling Privileges Summary
4149
4150 A.1.  Scheduling Inbox Privileges
4151
4152    The following tables specify which scheduling privileges grant the
4153    right to a calendar user to deliver a scheduling message to the
4154    scheduling Inbox collection of another calendar user.  The
4155    appropriate behavior depends on the calendar component type as well
4156    as the scheduling "METHOD" specified in the scheduling message.
4157
4158                                     +--------------------------------+
4159                                     |  METHOD for VEVENT and VTODO   |
4160       +-----------------------------+---------+-------+-----+--------+
4161       | Scheduling Inbox Privilege  | REQUEST | REPLY | ADD | CANCEL |
4162       +-----------------------------+---------+-------+-----+--------+
4163       | schedule-deliver            |    *    |   *   |  *  |   *    |
4164       |   schedule-deliver-invite   |    *    |       |  *  |   *    |
4165       |   schedule-deliver-reply    |         |   *   |     |        |
4166       |   schedule-query-freebusy   |         |       |     |        |
4167       +-----------------------------+---------+-------+-----+--------+
4168
4169
4170                                     +----------------------+
4171                                     | METHOD for VFREEBUSY |
4172       +-----------------------------+----------------------+
4173       | Scheduling Inbox Privilege  |       REQUEST        |
4174       +-----------------------------+----------------------+
4175       | schedule-deliver            |          *           |
4176       |   schedule-deliver-invite   |                      |
4177       |   schedule-deliver-reply    |                      |
4178       |   schedule-query-freebusy   |          *           |
4179       +-----------------------------+----------------------+
4180
4181 A.2.  Scheduling Outbox Privileges
4182
4183    The following tables specify which scheduling privileges grant the
4184    right to a Calendar User to perform busy time information requests
4185    and to submit scheduling messages to other Calendar Users as the
4186    result of a scheduling transaction.  The appropriate behavior depends
4187    on the calendar component type as well as the scheduling "METHOD"
4188    specified in the scheduling message.
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199 Daboo & Desruisseaux     Expires March 10, 2012                [Page 75]
4200 \f
4201 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4202
4203
4204                                     +--------------------------------+
4205                                     |  METHOD for VEVENT and VTODO   |
4206       +-----------------------------+---------+-------+-----+--------+
4207       | Scheduling Outbox Privilege | REQUEST | REPLY | ADD | CANCEL |
4208       +-----------------------------+---------+-------+-----+--------+
4209       | schedule-send               |    *    |   *   |  *  |   *    |
4210       |   schedule-send-invite      |    *    |       |  *  |   *    |
4211       |   schedule-send-reply       |         |   *   |     |        |
4212       |   schedule-send-freebusy    |         |       |     |        |
4213       +-----------------------------+---------+-------+-----+--------+
4214
4215
4216                                     +----------------------+
4217                                     | METHOD for VFREEBUSY |
4218       +-----------------------------+----------------------+
4219       | Scheduling Outbox Privilege |       REQUEST        |
4220       +-----------------------------+----------------------+
4221       | schedule-send               |          *           |
4222       |   schedule-send-invite      |                      |
4223       |   schedule-send-reply       |                      |
4224       |   schedule-send-freebusy    |          *           |
4225       +-----------------------------+----------------------+
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255 Daboo & Desruisseaux     Expires March 10, 2012                [Page 76]
4256 \f
4257 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4258
4259
4260 Appendix B.  Example Scheduling Transactions
4261
4262    This section describes some example scheduling transactions that give
4263    a general idea of how scheduling is carried out between CalDAV
4264    clients and servers from the perspective of meeting Organizers and
4265    Attendees.
4266
4267    In the following examples the requests and responses are incomplete
4268    and are only for illustrative purposes.  In particular, HTTP
4269    authentication headers and behaviors are not shown, even though they
4270    are required in normal operation.
4271
4272 B.1.  Example: Organizer Inviting Multiple Attendees
4273
4274    In the following example, Cyrus invites Wilfredo, Bernard and Mike to
4275    a single instance event by simply creating a new scheduling object
4276    resource in one of his calendar collection by using the PUT method.
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311 Daboo & Desruisseaux     Expires March 10, 2012                [Page 77]
4312 \f
4313 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4314
4315
4316    >> Request <<
4317
4318    PUT /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
4319    Host: cal.example.com
4320    Content-Type: text/calendar; charset="utf-8"
4321    Content-Length: xxxx
4322    If-None-Match: *
4323
4324    BEGIN:VCALENDAR
4325    VERSION:2.0
4326    PRODID:-//Example Corp.//CalDAV Client//EN
4327    BEGIN:VEVENT
4328    UID:9263504FD3AD
4329    SEQUENCE:0
4330    DTSTAMP:20090602T185254Z
4331    DTSTART:20090602T160000Z
4332    DTEND:20090602T170000Z
4333    TRANSP:OPAQUE
4334    SUMMARY:Lunch
4335    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4336    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4337     mailto:cyrus@example.com
4338    ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
4339     =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
4340     example.com
4341    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4342     NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
4343     ample.net
4344    ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
4345     CTION;RSVP=TRUE:mailto:mike@example.org
4346    END:VEVENT
4347    END:VCALENDAR
4348
4349    >> Response <<
4350
4351    HTTP/1.1 201 Created
4352    Content-Length: 0
4353    Date: Tue, 02 Jun 2009 18:52:54 GMT
4354    Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
4355    ETag: "d85561cfe74a4e785eb4639451b434fb"
4356    Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
4357
4358    Once the event creation has been completed, Cyrus's client will
4359    retrieve the event back from the server to get the schedule status of
4360    each Attendee.  In this example, the server reports that a scheduling
4361    message was delivered to Wilfredo, a scheduling message is still
4362    pending for Bernard, and the server was unable to deliver a
4363    scheduling message to Mike.
4364
4365
4366
4367 Daboo & Desruisseaux     Expires March 10, 2012                [Page 78]
4368 \f
4369 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4370
4371
4372    >> Request <<
4373
4374    GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
4375    Host: cal.example.com
4376
4377    >> Response <<
4378
4379    HTTP/1.1 200 OK
4380    Date: Tue, 02 Jun 2009 18:52:58 GMT
4381    Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
4382    ETag: "eb897deabc8939589da116714bc99265"
4383    Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
4384    Content-Type: text/calendar; charset="utf-8"
4385    Content-Length: xxxx
4386
4387    BEGIN:VCALENDAR
4388    VERSION:2.0
4389    PRODID:-//Example Corp.//CalDAV Server//EN
4390    BEGIN:VEVENT
4391    UID:9263504FD3AD
4392    SEQUENCE:0
4393    DTSTAMP:20090602T185300Z
4394    DTSTART:20090602T160000Z
4395    DTEND:20090602T170000Z
4396    TRANSP:OPAQUE
4397    SUMMARY:Lunch
4398    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4399    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4400     mailto:cyrus@example.com
4401    ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
4402     =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
4403     1.2:mailto:wilfredo@e
4404     xample.com
4405    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4406     NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
4407     1.0:mailto:bernard@example.net
4408    ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
4409     CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
4410    END:VEVENT
4411    END:VCALENDAR
4412
4413 B.2.  Example: Attendee Receiving an Invitation
4414
4415    In the following example, Wilfredo's client retrieves and deletes the
4416    new scheduling message that appeared in his scheduling Inbox
4417    collection after the server automatically processed it and created a
4418    new scheduling object resource in his default calendar collection.
4419
4420
4421
4422
4423 Daboo & Desruisseaux     Expires March 10, 2012                [Page 79]
4424 \f
4425 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4426
4427
4428    >> Request <<
4429
4430    GET /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
4431    Host: cal.example.com
4432
4433    >> Response <<
4434
4435    HTTP/1.1 200 OK
4436    Date: Tue, 02 Jun 2009 18:59:58 GMT
4437    Last-Modified: Tue, 02 Jun 2009 18:59:58 GMT
4438    ETag: "da116714bc9926c89395895eb897deab"
4439    Content-Type: text/calendar; charset="utf-8"
4440    Content-Length: xxxx
4441
4442    BEGIN:VCALENDAR
4443    VERSION:2.0
4444    PRODID:-//Example Corp.//CalDAV Server//EN
4445    METHOD:REQUEST
4446    BEGIN:VEVENT
4447    UID:9263504FD3AD
4448    SEQUENCE:0
4449    DTSTAMP:20090602T185254Z
4450    DTSTART:20090602T160000Z
4451    DTEND:20090602T170000Z
4452    TRANSP:OPAQUE
4453    SUMMARY:Lunch
4454    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4455    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4456     mailto:cyrus@example.com
4457    ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
4458     =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
4459     example.com
4460    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4461     NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
4462     ample.net
4463    ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
4464     CTION;RSVP=TRUE:mailto:mike@example.org
4465    END:VEVENT
4466    END:VCALENDAR
4467
4468    >> Request <<
4469
4470    DELETE /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
4471    Host: cal.example.com
4472
4473
4474
4475
4476
4477
4478
4479 Daboo & Desruisseaux     Expires March 10, 2012                [Page 80]
4480 \f
4481 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4482
4483
4484    >> Response <<
4485
4486    HTTP/1.1 204 No Content
4487    Date: Tue, 02 Jun 2009 20:40:36 GMT
4488
4489 B.3.  Example: Attendee Replying to an Invitation
4490
4491    In the following example, Wilfredo's accepts Cyrus's invitation and
4492    sets a reminder on the event.
4493
4494    >> Request <<
4495
4496    PUT /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
4497    Host: cal.example.com
4498    If-Schedule-Tag-Match: "e78f23ed-0188-4bab-938d-2aeb3324c7e8"
4499    Content-Type: text/calendar; charset="utf-8"
4500    Content-Length: xxxx
4501
4502    BEGIN:VCALENDAR
4503    VERSION:2.0
4504    PRODID:-//Example Corp.//CalDAV Client//EN
4505    BEGIN:VEVENT
4506    UID:9263504FD3AD
4507    SEQUENCE:0
4508    DTSTAMP:20090602T185254Z
4509    DTSTART:20090602T160000Z
4510    DTEND:20090602T170000Z
4511    TRANSP:OPAQUE
4512    SUMMARY:Lunch
4513    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4514    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4515     mailto:cyrus@example.com
4516    ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
4517     =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
4518     ple.com
4519    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4520     NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
4521     ample.net
4522    ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
4523     CTION;RSVP=TRUE:mailto:mike@example.org
4524    BEGIN:VALARM
4525    TRIGGER:-PT15M
4526    ACTION:DISPLAY
4527    DESCRIPTION:Reminder
4528    END:VALARM
4529    END:VEVENT
4530    END:VCALENDAR
4531
4532
4533
4534
4535 Daboo & Desruisseaux     Expires March 10, 2012                [Page 81]
4536 \f
4537 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4538
4539
4540    >> Response <<
4541
4542    HTTP/1.1 200 OK
4543    Content-Length: 0
4544    Date: Tue, 02 Jun 2009 18:57:54 GMT
4545    Last-Modified: Tue, 02 Jun 2009 18:57:54 GMT
4546    ETag: "eb4639451b434fbd85561cfe74a4e785"
4547    Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
4548
4549    Once the event modification has been completed, Wilfredo's client
4550    will retrieve the event back from the server to get the schedule
4551    status of the Organizer.
4552
4553    >> Request <<
4554
4555    GET /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
4556    Host: cal.example.com
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591 Daboo & Desruisseaux     Expires March 10, 2012                [Page 82]
4592 \f
4593 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4594
4595
4596    >> Response <<
4597
4598    HTTP/1.1 200 OK
4599    Date: Tue, 02 Jun 2009 19:03:03 GMT
4600    Last-Modified: Tue, 02 Jun 2009 19:02:21 GMT
4601    ETag: "5eb897deabda116714bc9926c8939589"
4602    Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
4603    Content-Type: text/calendar; charset="utf-8"
4604    Content-Length: xxxx
4605
4606    BEGIN:VCALENDAR
4607    VERSION:2.0
4608    PRODID:-//Example Corp.//CalDAV Client//EN
4609    BEGIN:VEVENT
4610    UID:9263504FD3AD
4611    SEQUENCE:0
4612    DTSTAMP:20090602T190221Z
4613    DTSTART:20090602T160000Z
4614    DTEND:20090602T170000Z
4615    TRANSP:OPAQUE
4616    SUMMARY:Lunch
4617    ORGANIZER;CN="Cyrus Daboo";SCHEDULE-STATUS=1.2:mailto:cyrus@ex
4618     ample.com
4619    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4620     mailto:cyrus@example.com
4621    ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
4622     =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
4623     ple.com
4624    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4625     NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
4626     ample.net
4627    ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
4628     CTION;RSVP=TRUE:mailto:mike@example.org
4629    BEGIN:VALARM
4630    TRIGGER:-PT15M
4631    ACTION:DISPLAY
4632    DESCRIPTION:Reminder
4633    END:VALARM
4634    END:VEVENT
4635    END:VCALENDAR
4636
4637 B.4.  Example: Organizer Receiving a Reply to an Invitation
4638
4639    On reception of Wilfredo's reply, Cyrus's server will automatically
4640    update Cyrus's scheduling object resource, make Wilfredo's scheduling
4641    message available in Cyrus's scheduling Inbox collection, and deliver
4642    an updated scheduling message to Bernard to share Wilfredo's updated
4643    participation status.  In this example, Cyrus's client retrieves and
4644
4645
4646
4647 Daboo & Desruisseaux     Expires March 10, 2012                [Page 83]
4648 \f
4649 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4650
4651
4652    deletes this scheduling message in his scheduling Inbox collection.
4653
4654    >> Request <<
4655
4656    GET /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
4657    Host: cal.example.com
4658
4659    >> Response <<
4660
4661    HTTP/1.1 200 OK
4662    Date: Tue, 02 Jun 2009 19:05:02 GMT
4663    Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
4664    ETag: "9265eb897deabc8939589da116714bc9"
4665    Content-Type: text/calendar; charset="utf-8"
4666    Content-Length: xxxx
4667
4668    BEGIN:VCALENDAR
4669    VERSION:2.0
4670    PRODID:-//Example Corp.//CalDAV Server//EN
4671    METHOD:REPLY
4672    BEGIN:VEVENT
4673    UID:9263504FD3AD
4674    SEQUENCE:0
4675    DTSTAMP:20090602T185754Z
4676    DTSTART:20090602T160000Z
4677    DTEND:20090602T170000Z
4678    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4679    ATTENDEE;CN="Wilfredo Sanchez Vega";PARTSTAT=ACCEPTED:mailto:w
4680     ilfredo@example.com
4681    REQUEST-STATUS:2.0;Success
4682    END:VEVENT
4683    END:VCALENDAR
4684
4685    >> Request <<
4686
4687    DELETE /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
4688    Host: cal.example.com
4689
4690    >> Response <<
4691
4692    HTTP/1.1 204 No Content
4693    Date: Tue, 02 Jun 2009 19:05:05 GMT
4694
4695    Cyrus's client then retrieves the event back from the server with
4696    Wilfredo's updated participation status.
4697
4698
4699
4700
4701
4702
4703 Daboo & Desruisseaux     Expires March 10, 2012                [Page 84]
4704 \f
4705 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4706
4707
4708    >> Request <<
4709
4710    GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
4711    Host: cal.example.com
4712
4713    >> Response <<
4714
4715    HTTP/1.1 200 OK
4716    Date: Tue, 02 Jun 2009 19:05:02 GMT
4717    Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
4718    ETag: "eb897deabc8939589da116714bc99265"
4719    Schedule-Tag: "132cab27-1fe3-67ab-de13-abd348d1dee3"
4720    Content-Type: text/calendar; charset="utf-8"
4721    Content-Length: xxxx
4722
4723    BEGIN:VCALENDAR
4724    VERSION:2.0
4725    PRODID:-//Example Corp.//CalDAV Server//EN
4726    BEGIN:VEVENT
4727    UID:9263504FD3AD
4728    SEQUENCE:0
4729    DTSTAMP:20090602T190420Z
4730    DTSTART:20090602T160000Z
4731    DTEND:20090602T170000Z
4732    TRANSP:OPAQUE
4733    SUMMARY:Lunch
4734    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4735    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4736     mailto:cyrus@example.com
4737    ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
4738     =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=2.0:
4739     mailto:wilfredo@example.com
4740    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4741     NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1
4742     .0:mailto:bernard@example.net
4743    ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
4744     CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
4745    END:VEVENT
4746    END:VCALENDAR
4747
4748 B.5.  Example: Organizer Requesting Busy Time Information
4749
4750    In this example, Cyrus requests the busy time information of
4751    Wilfredo, Bernard and Mike.
4752
4753
4754
4755
4756
4757
4758
4759 Daboo & Desruisseaux     Expires March 10, 2012                [Page 85]
4760 \f
4761 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4762
4763
4764    >> Request <<
4765
4766    POST /home/cyrus/calendars/outbox/ HTTP/1.1
4767    Host: cal.example.com
4768    Content-Type: text/calendar; charset="utf-8"
4769    Content-Length: xxxx
4770
4771    BEGIN:VCALENDAR
4772    VERSION:2.0
4773    PRODID:-//Example Corp.//CalDAV Client//EN
4774    METHOD:REQUEST
4775    BEGIN:VFREEBUSY
4776    UID:4FD3AD926350
4777    DTSTAMP:20090602T190420Z
4778    DTSTART:20090602T000000Z
4779    DTEND:20090604T000000Z
4780    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4781    ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
4782    ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
4783    ATTENDEE;CN="Mike Douglass":mailto:mike@example.org
4784    END:VFREEBUSY
4785    END:VCALENDAR
4786
4787    >> Response <<
4788
4789    HTTP/1.1 200 OK
4790    Date: Tue, 02 Jun 2009 20:07:34 GMT
4791    Content-Type: application/xml; charset="utf-8"
4792    Content-Length: xxxx
4793
4794    <?xml version="1.0" encoding="utf-8" ?>
4795    <C:schedule-response xmlns:D="DAV:"
4796           xmlns:C="urn:ietf:params:xml:ns:caldav">
4797    <C:response>
4798    <C:recipient>
4799    <D:href>mailto:wilfredo@example.com</D:href>
4800    </C:recipient>
4801    <C:request-status>2.0;Success</C:request-status>
4802    <C:calendar-data>BEGIN:VCALENDAR
4803    VERSION:2.0
4804    PRODID:-//Example Corp.//CalDAV Server//EN
4805    METHOD:REPLY
4806    BEGIN:VFREEBUSY
4807    UID:4FD3AD926350
4808    DTSTAMP:20090602T200733Z
4809    DTSTART:20090602T000000Z
4810    DTEND:20090604T000000Z
4811    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4812
4813
4814
4815 Daboo & Desruisseaux     Expires March 10, 2012                [Page 86]
4816 \f
4817 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4818
4819
4820    ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
4821    FREEBUSY;FBTYPE=BUSY:20090602T110000Z/20090602T120000Z
4822    FREEBUSY;FBTYPE=BUSY:20090603T170000Z/20090603T180000Z
4823    END:VFREEBUSY
4824    END:VCALENDAR
4825    </C:calendar-data>
4826    </C:response>
4827    <C:response>
4828    <C:recipient>
4829    <D:href>mailto:bernard@example.net</D:href>
4830    </C:recipient>
4831    <C:request-status>2.0;Success</C:request-status>
4832    <C:calendar-data>BEGIN:VCALENDAR
4833    VERSION:2.0
4834    PRODID:-//Example Corp.//CalDAV Server//EN
4835    METHOD:REPLY
4836    BEGIN:VFREEBUSY
4837    UID:4FD3AD926350
4838    DTSTAMP:20090602T200733Z
4839    DTSTART:20090602T000000Z
4840    DTEND:20090604T000000Z
4841    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4842    ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
4843    FREEBUSY;FBTYPE=BUSY:20090602T150000Z/20090602T160000Z
4844    FREEBUSY;FBTYPE=BUSY:20090603T090000Z/20090603T100000Z
4845    FREEBUSY;FBTYPE=BUSY:20090603T180000Z/20090603T190000Z
4846    END:VFREEBUSY
4847    END:VCALENDAR
4848    </C:calendar-data>
4849    </C:response>
4850    <C:response>
4851    <C:recipient>
4852    <D:href>mailto:mike@example.org</D:href>
4853    </C:recipient>
4854    <C:request-status>3.7;Invalid calendar user</C:request-status>
4855    </C:response>
4856    </C:schedule-response>
4857
4858 B.6.  Example: User Attempting to Invite Attendee on behalf of Organizer
4859
4860    In the following example, Cyrus attempts to create, on behalf of
4861    Wilfredo, an event with Bernard specified as an Attendee.  The
4862    request fails since Wilfredo didn't grant Cyrus the right to invite
4863    other Calendar Users on his behalf.
4864
4865
4866
4867
4868
4869
4870
4871 Daboo & Desruisseaux     Expires March 10, 2012                [Page 87]
4872 \f
4873 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4874
4875
4876    >> Request <<
4877
4878    PUT /home/wilfredo/calendars/work/def456.ics HTTP/1.1
4879    Host: cal.example.com
4880    Content-Type: text/calendar; charset="utf-8"
4881    Content-Length: xxxx
4882    If-None-Match: *
4883
4884    BEGIN:VCALENDAR
4885    VERSION:2.0
4886    PRODID:-//Example Corp.//CalDAV Client//EN
4887    BEGIN:VEVENT
4888    UID:3504F926D3AD
4889    SEQUENCE:0
4890    DTSTAMP:20090602T190221Z
4891    DTSTART:20090602T230000Z
4892    DTEND:20090603T000000Z
4893    TRANSP:OPAQUE
4894    SUMMARY:Dinner
4895    ORGANIZER;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
4896    ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT=A
4897     CCEPTED:mailto:wilfredo@example.com
4898    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=NE
4899     EDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
4900     e.net
4901    END:VEVENT
4902    END:VCALENDAR
4903
4904    >> Response <<
4905
4906    HTTP/1.1 403 Forbidden
4907    Content-Type: application/xml; charset="utf-8"
4908    Content-Length: xxxx
4909
4910    <D:error xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
4911      <D:need-privileges>
4912        <D:resource>
4913          <D:href>/home/wilfredo/calendars/outbox/</D:href>
4914          <D:privilege><C:schedule-send-invite/></D:privilege>
4915        </D:resource>
4916      </D:need-privileges>
4917    </D:error>
4918
4919 B.7.  Example: Attendee Declining an Instance of a Recurring Event
4920
4921    In the following example, Bernard declines the second recurrence
4922    instance of a daily recurring event he's been invited to by Cyrus.
4923
4924
4925
4926
4927 Daboo & Desruisseaux     Expires March 10, 2012                [Page 88]
4928 \f
4929 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4930
4931
4932    >> Request <<
4933
4934    PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
4935    Host: cal.example.com
4936    Content-Type: text/calendar; charset="utf-8"
4937    Content-Length: xxxx
4938    If-Schedule-Tag-Match: "7775FB30-7534-489E-A79A-0EA147B933EB"
4939
4940    BEGIN:VCALENDAR
4941    VERSION:2.0
4942    PRODID:-//Example Corp.//CalDAV Client//EN
4943    BEGIN:VTIMEZONE
4944    TZID:America/Montreal
4945    BEGIN:STANDARD
4946    DTSTART:20071104T020000
4947    RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
4948    TZNAME:EST
4949    TZOFFSETFROM:-0400
4950    TZOFFSETTO:-0500
4951    END:STANDARD
4952    BEGIN:DAYLIGHT
4953    DTSTART:20070311T020000
4954    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
4955    TZNAME:EDT
4956    TZOFFSETFROM:-0500
4957    TZOFFSETTO:-0400
4958    END:DAYLIGHT
4959    END:VTIMEZONE
4960    BEGIN:VEVENT
4961    UID:9263504FD3AD
4962    SEQUENCE:0
4963    DTSTAMP:20090602T185254Z
4964    DTSTART;TZID=America/Montreal:20090601T150000
4965    DTEND;TZID=America/Montreal:20090601T160000
4966    RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
4967    TRANSP:OPAQUE
4968    SUMMARY:Review Internet-Draft
4969    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4970    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4971     mailto:cyrus@example.com
4972    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4973     ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
4974     e.net
4975    END:VEVENT
4976    BEGIN:VEVENT
4977    UID:9263504FD3AD
4978    SEQUENCE:0
4979    DTSTAMP:20090603T183823Z
4980
4981
4982
4983 Daboo & Desruisseaux     Expires March 10, 2012                [Page 89]
4984 \f
4985 Internet-Draft        CalDAV Scheduling Extensions        September 2011
4986
4987
4988    RECURRENCE-ID;TZID=America/Montreal:20090602T150000
4989    DTSTART;TZID=America/Montreal:20090602T150000
4990    DTEND;TZID=America/Montreal:20090602T160000
4991    TRANSP:TRANSPARENT
4992    SUMMARY:Review Internet-Draft
4993    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
4994    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
4995     mailto:cyrus@example.com
4996    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
4997     DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
4998     e.net
4999    END:VEVENT
5000    END:VCALENDAR
5001
5002    >> Response <<
5003
5004    HTTP/1.1 200 OK
5005    Content-Length: 0
5006    Date: Tue, 02 Jun 2009 18:52:54 GMT
5007    Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
5008    ETag: "d85561cfe74a4e785eb4639451b434fb"
5009    Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
5010
5011    Bernard's participation status update will cause his server to
5012    deliver a scheduling message to Cyrus.  Cyrus's client will find the
5013    following reply message from Bernard in Cyrus's scheduling Inbox
5014    collection:
5015
5016    >> Request <<
5017
5018    GET /home/cyrus/calendars/inbox/9263504FD3AD.ics HTTP/1.1
5019    Host: cal.example.com
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039 Daboo & Desruisseaux     Expires March 10, 2012                [Page 90]
5040 \f
5041 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5042
5043
5044    >> Response <<
5045
5046    HTTP/1.1 200 OK
5047    Date: Tue, 02 Jun 2009 18:52:58 GMT
5048    Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
5049    ETag: "eb897deabc8939589da116714bc99265"
5050    Content-Type: text/calendar; charset="utf-8"
5051    Content-Length: xxxx
5052
5053    BEGIN:VCALENDAR
5054    VERSION:2.0
5055    PRODID:-//Example Corp.//CalDAV Client//EN
5056    METHOD:REPLY
5057    BEGIN:VTIMEZONE
5058    TZID:America/Montreal
5059    BEGIN:STANDARD
5060    DTSTART:20071104T020000
5061    RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
5062    TZNAME:EST
5063    TZOFFSETFROM:-0400
5064    TZOFFSETTO:-0500
5065    END:STANDARD
5066    BEGIN:DAYLIGHT
5067    DTSTART:20070311T020000
5068    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
5069    TZNAME:EDT
5070    TZOFFSETFROM:-0500
5071    TZOFFSETTO:-0400
5072    END:DAYLIGHT
5073    END:VTIMEZONE
5074    BEGIN:VEVENT
5075    UID:9263504FD3AD
5076    SEQUENCE:0
5077    DTSTAMP:20090603T183823Z
5078    RECURRENCE-ID;TZID=America/Montreal:20090602T150000
5079    DTSTART;TZID=America/Montreal:20090602T150000
5080    DTEND;TZID=America/Montreal:20090602T160000
5081    SUMMARY:Review Internet-Draft
5082    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
5083    ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
5084     mailto:bernard@example.net
5085    REQUEST-STATUS:2.0;Success
5086    END:VEVENT
5087    END:VCALENDAR
5088
5089
5090
5091
5092
5093
5094
5095 Daboo & Desruisseaux     Expires March 10, 2012                [Page 91]
5096 \f
5097 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5098
5099
5100 B.8.  Example: Attendee Removing an Instance of a Recurring Event
5101
5102    In the following example, Bernard removes from his calendar the third
5103    recurrence instance of a daily recurring event he's been invited to
5104    by Cyrus.  This is accomplished by the addition of an "EXDATE"
5105    property to the scheduling object resource stored by Bernard.
5106
5107    >> Request <<
5108
5109    PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
5110    Host: cal.example.com
5111    Content-Type: text/calendar; charset="utf-8"
5112    Content-Length: xxxx
5113    If-Schedule-Tag-Match: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
5114
5115    BEGIN:VCALENDAR
5116    VERSION:2.0
5117    PRODID:-//Example Corp.//CalDAV Client//EN
5118    BEGIN:VTIMEZONE
5119    TZID:America/Montreal
5120    BEGIN:STANDARD
5121    DTSTART:20071104T020000
5122    RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
5123    TZNAME:EST
5124    TZOFFSETFROM:-0400
5125    TZOFFSETTO:-0500
5126    END:STANDARD
5127    BEGIN:DAYLIGHT
5128    DTSTART:20070311T020000
5129    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
5130    TZNAME:EDT
5131    TZOFFSETFROM:-0500
5132    TZOFFSETTO:-0400
5133    END:DAYLIGHT
5134    END:VTIMEZONE
5135    BEGIN:VEVENT
5136    UID:9263504FD3AD
5137    SEQUENCE:0
5138    DTSTAMP:20090602T185254Z
5139    DTSTART;TZID=America/Montreal:20090601T150000
5140    DTEND;TZID=America/Montreal:20090601T160000
5141    RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
5142    EXDATE;TZID=America/Montreal:20090603T150000
5143    TRANSP:OPAQUE
5144    SUMMARY:Review Internet-Draft
5145    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
5146    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
5147     mailto:cyrus@example.com
5148
5149
5150
5151 Daboo & Desruisseaux     Expires March 10, 2012                [Page 92]
5152 \f
5153 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5154
5155
5156    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
5157     ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
5158     e.net
5159    END:VEVENT
5160    BEGIN:VEVENT
5161    UID:9263504FD3AD
5162    SEQUENCE:0
5163    DTSTAMP:20090603T183823Z
5164    RECURRENCE-ID;TZID=America/Montreal:20090602T150000
5165    DTSTART;TZID=America/Montreal:20090602T150000
5166    DTEND;TZID=America/Montreal:20090602T160000
5167    TRANSP:TRANSPARENT
5168    SUMMARY:Review Internet-Draft
5169    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
5170    ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
5171     mailto:cyrus@example.com
5172    ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
5173     DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
5174     e.net
5175    END:VEVENT
5176    END:VCALENDAR
5177
5178    Bernard's deletion of a recurrence instance will cause his server to
5179    deliver a scheduling message to Cyrus.  Cyrus's client will find the
5180    following reply message from Bernard in Cyrus's scheduling Inbox
5181    collection:
5182
5183    >> Request <<
5184
5185    GET /home/cyrus/calendars/inbox/6504923FD3AD.ics HTTP/1.1
5186    Host: cal.example.com
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207 Daboo & Desruisseaux     Expires March 10, 2012                [Page 93]
5208 \f
5209 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5210
5211
5212    >> Response <<
5213
5214    HTTP/1.1 200 OK
5215    Date: Tue, 02 Jun 2009 18:52:58 GMT
5216    Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
5217    ETag: "eb897deabc8939589da116714bc99265"
5218    Content-Type: text/calendar; charset="utf-8"
5219    Content-Length: xxxx
5220
5221    BEGIN:VCALENDAR
5222    VERSION:2.0
5223    PRODID:-//Example Corp.//CalDAV Client//EN
5224    METHOD:REPLY
5225    BEGIN:VTIMEZONE
5226    TZID:America/Montreal
5227    BEGIN:STANDARD
5228    DTSTART:20071104T020000
5229    RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
5230    TZNAME:EST
5231    TZOFFSETFROM:-0400
5232    TZOFFSETTO:-0500
5233    END:STANDARD
5234    BEGIN:DAYLIGHT
5235    DTSTART:20070311T020000
5236    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
5237    TZNAME:EDT
5238    TZOFFSETFROM:-0500
5239    TZOFFSETTO:-0400
5240    END:DAYLIGHT
5241    END:VTIMEZONE
5242    BEGIN:VEVENT
5243    UID:9263504FD3AD
5244    SEQUENCE:0
5245    DTSTAMP:20090603T183823Z
5246    RECURRENCE-ID;TZID=America/Montreal:20090603T150000
5247    DTSTART;TZID=America/Montreal:20090603T150000
5248    DTEND;TZID=America/Montreal:20090603T160000
5249    SUMMARY:Review Internet-Draft
5250    ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
5251    ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
5252     mailto:bernard@example.net
5253    REQUEST-STATUS:2.0;Success
5254    END:VEVENT
5255    END:VCALENDAR
5256
5257
5258
5259
5260
5261
5262
5263 Daboo & Desruisseaux     Expires March 10, 2012                [Page 94]
5264 \f
5265 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5266
5267
5268 Appendix C.  Changes (to be removed by RFC Editor prior to publication)
5269
5270 C.1.  Changes in -10
5271
5272    a.  Updated to RFC 6047 reference.
5273
5274    b.  Various minor clarifications to behavior and terminology done.
5275
5276    c.  Clarified that Inbox/Outbox are the server's responsibility to
5277        create.
5278
5279    d.  Changed MAY to SHOULD for server rejecting organizer PARTSTAT
5280        changes of attendees.
5281
5282    e.  Allow COMPLETED as a valid attendee change.
5283
5284    f.  Allow SCHEDULE-STATUS as a valid attendee change on SCHEDULE-
5285        AGENT=CLIENT attendee properties.
5286
5287    g.  COPY or MOVE on a calendar collection now declared to be
5288        undefined.
5289
5290    h.  Changed pre-condition error codes from 409 to 403.
5291
5292    i.  Clarified that rules 5546 must be used when server processes
5293        incoming scheduling messages.
5294
5295    j.  default-calendar-delete-allowed -> default-calendar-needed.
5296
5297    k.  Clarified that SCHEDULE-AGENT must be the same on all matching
5298        properties.
5299
5300    l.  Added more text justifying the need for calendar-user-type
5301        property.
5302
5303 C.2.  Changes in -09
5304
5305    a.  Fixed some examples.
5306
5307    b.  Tweaked XML conventions.
5308
5309    c.  Removed description in SCHEDULE-STATUS example values.
5310
5311    d.  Tweaked 3.7 and 3.8 SCHEDULE-STATUS description to indicate it
5312        applies to the Organizer as well as Attendee.
5313
5314    e.  Updated to RFC 5545 reference.
5315
5316
5317
5318
5319 Daboo & Desruisseaux     Expires March 10, 2012                [Page 95]
5320 \f
5321 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5322
5323
5324    f.  AD Review: clarified text about inbox resource deletion being
5325        acknowledgment of change.
5326
5327    g.  AD Review: clarified description of freebusy Outbox POST.
5328
5329    h.  AD Review: registered new 1.xx request-status codes and added new
5330        restriction on usage as per iTIP.
5331
5332    i.  AD Review: changes SHOULD NOT to MUST NOT for new property
5333        parameters when clients send scheduling messages.
5334
5335    j.  AD Review: CALDAV:schedule-calendar-transp now preserved during
5336        COPY.
5337
5338    k.  AD Review: changed CALDAV- to CALDAV: in acl descriptions.
5339
5340    l.  AD Review: fixed various minor typos.
5341
5342    m.  AD Review: Added text to new principal properties to indicate
5343        that if they are not present, then the user is not enabled for
5344        the various scheduling operations.
5345
5346    n.  AD Review: clarified use of CALDAV:calendar-data element in
5347        CALDAV:response element.
5348
5349    o.  AD Review: made reference to 5545 IANA registry procedures for
5350        the two new element registries.
5351
5352    p.  AD Review: Fixed description of B5. example.
5353
5354    q.  Fixed SCHEDULE-AGENT/SCHEDULE-STATUS behavior for Attendee
5355        replies.
5356
5357 C.3.  Changes in -08
5358
5359    a.  Added "Updates 4791".
5360
5361    b.  XML conventions changed to match that in CardDAV spec.
5362
5363    c.  Reworded child response behavior for Outbox.
5364
5365    d.  Reworded "octet size".
5366
5367    e.  If-Schedule-Match descriptions changed to remove implication that
5368        it is purely a conditional operation.
5369
5370    f.  Schedule-Reply header descriptions generalized to resource
5371        removal rather than just HTTP DELETE.
5372
5373
5374
5375 Daboo & Desruisseaux     Expires March 10, 2012                [Page 96]
5376 \f
5377 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5378
5379
5380    g.  Fixed various examples.
5381
5382 C.4.  Changes in -07
5383
5384    a.  Restructured document.
5385
5386    b.  Clarified that CALDAV:schedule-calendar-transp only applies to
5387        calendar collection.
5388
5389    c.  Removed CALDAV:schedule-state property on scheduling messages in
5390        the scheduling Inbox collection.
5391
5392    d.  Added conditional requests on scheduling object resources.
5393
5394    e.  Added section on handling of PARTSTAT.
5395
5396    f.  Added SCHEDULE-FORCE-SEND iCalendar property parameter.
5397
5398    g.  Added clarification on child resources in scheduling Outbox
5399        collections.
5400
5401    h.  Clarified Attendee changes that server MUST allow, and removed
5402        restrictions on changes that Attendee MUST NOT do.
5403
5404    i.  Added Example Scheduling Transactions appendix.
5405
5406    j.  Scheduling privileges are no longer required to be non-abstract.
5407
5408    k.  Removed handling of REFRESH requests.
5409
5410    l.  Removed handling of VJOURNAL components.
5411
5412    m.  Completed IANA Considerations section.
5413
5414    n.  Added references to RFC3283 and RFC5234.
5415
5416    o.  Updated references to iCalendar, iTIP and iMIP.
5417
5418 C.5.  Changes in -06
5419
5420    a.  Removed distinction between scheduling calendar collections and
5421        basic calendar collections - now just have calendar collections.
5422
5423    b.  Clients now "MAY" reload data rather than "SHOULD" reload data.
5424
5425    c.  Fixed <C:recipient> in examples.
5426
5427
5428
5429
5430
5431 Daboo & Desruisseaux     Expires March 10, 2012                [Page 97]
5432 \f
5433 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5434
5435
5436    d.  Removed CALDAV:attachments-allowed precondition on POST to Outbox
5437        as that is no longer relevant.
5438
5439    e.  Added CALDAV:default-calendar-delete-allowed precondition for
5440        DELETE.
5441
5442    f.  Relaxed MUST->MAY for Organizer setting PARTSTAT value.
5443
5444    g.  Tweaked restrictions on Create/Modify to emphasize that 4791
5445        restrictions also apply.
5446
5447    h.  Added comment that 'opaque' is the default when the CALDAV:
5448        schedule-calendar-transp property is not present.
5449
5450    i.  Description of Schedule-Reply header changed to reflect that it
5451        is only relevant for Attendees.
5452
5453    j.  Minor typos fixed.
5454
5455 C.6.  Changes in -05
5456
5457    This draft has changed substantially since the -04 version.  The
5458    primary reason for this change was implementation experience from a
5459    number of vendors who implemented products based on the earlier
5460    drafts.  Experience showed that the client/server interaction was not
5461    reliable in keeping scheduling messages synchronized between
5462    organizer and attendees.  In addition the latency in updates due to
5463    clients being offline proved unacceptable to users.  These issues led
5464    to the redesign of this specification to support a server-based
5465    processing model that eliminates all the problems seen previously.
5466    Whilst this adds significant complexity to the server in that it
5467    needs to be a full blown iTIP processing agent, it does remove a lot
5468    of the same complexity from clients, opening up the possibility of
5469    supporting complex scheduling behaviors even with "thin" clients.
5470
5471    In the judgement of the authors, we consider this new specification
5472    to be a substantial improvement over the old one and believe it
5473    represents a stronger protocol that will lead to better
5474    interoperability.
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487 Daboo & Desruisseaux     Expires March 10, 2012                [Page 98]
5488 \f
5489 Internet-Draft        CalDAV Scheduling Extensions        September 2011
5490
5491
5492 Authors' Addresses
5493
5494    Cyrus Daboo
5495    Apple Inc.
5496    1 Infinite Loop
5497    Cupertino, CA  95014
5498    USA
5499
5500    EMail: cyrus@daboo.name
5501    URI:   http://www.apple.com/
5502
5503
5504    Bernard Desruisseaux
5505    Oracle Corporation
5506    600 Blvd. de Maisonneuve West
5507    Suite 1900
5508    Montreal, QC  H3A 3J2
5509    CANADA
5510
5511    EMail: bernard.desruisseaux@oracle.com
5512    URI:   http://www.oracle.com/
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543 Daboo & Desruisseaux     Expires March 10, 2012                [Page 99]
5544 \f