[CalendarServer-changes] [9366] CalendarServer/trunk/doc/RFC
source_changes at macosforge.org
source_changes at macosforge.org
Mon Jun 18 07:47:13 PDT 2012
Revision: 9366
http://trac.macosforge.org/projects/calendarserver/changeset/9366
Author: cdaboo at apple.com
Date: 2012-06-18 07:47:13 -0700 (Mon, 18 Jun 2012)
Log Message:
-----------
CalDAV Scheduling is now RFC6638.
Added Paths:
-----------
CalendarServer/trunk/doc/RFC/rfc6638-CalDAV-Scheduling.txt
Removed Paths:
-------------
CalendarServer/trunk/doc/RFC/draft-desruisseaux-caldav-sched.txt
Deleted: CalendarServer/trunk/doc/RFC/draft-desruisseaux-caldav-sched.txt
===================================================================
--- CalendarServer/trunk/doc/RFC/draft-desruisseaux-caldav-sched.txt 2012-06-16 01:02:45 UTC (rev 9365)
+++ CalendarServer/trunk/doc/RFC/draft-desruisseaux-caldav-sched.txt 2012-06-18 14:47:13 UTC (rev 9366)
@@ -1,5488 +0,0 @@
-
-
-
-Network Working Group C. Daboo
-Internet-Draft Apple Inc.
-Updates: 4791 (if approved) B. Desruisseaux
-Intended status: Standards Track Oracle
-Expires: April 28, 2011 October 25, 2010
-
-
- CalDAV Scheduling Extensions to WebDAV
- draft-desruisseaux-caldav-sched-09
-
-Abstract
-
- This document defines extensions to the CalDAV "calendar-access"
- feature to specify a standard way of performing scheduling
- transactions with iCalendar-based calendar components. This document
- defines the "calendar-auto-schedule" feature of CalDAV.
-
-Status of This Memo
-
- This Internet-Draft is submitted in full conformance with the
- provisions of BCP 78 and BCP 79.
-
- Internet-Drafts are working documents of the Internet Engineering
- Task Force (IETF). Note that other groups may also distribute
- working documents as Internet-Drafts. The list of current Internet-
- Drafts is at http://datatracker.ietf.org/drafts/current/.
-
- Internet-Drafts are draft documents valid for a maximum of six months
- and may be updated, replaced, or obsoleted by other documents at any
- time. It is inappropriate to use Internet-Drafts as reference
- material or to cite them other than as "work in progress."
-
- This Internet-Draft will expire on April 28, 2011.
-
-Copyright Notice
-
- Copyright (c) 2010 IETF Trust and the persons identified as the
- document authors. All rights reserved.
-
- This document is subject to BCP 78 and the IETF Trust's Legal
- Provisions Relating to IETF Documents
- (http://trustee.ietf.org/license-info) in effect on the date of
- publication of this document. Please review these documents
- carefully, as they describe your rights and restrictions with respect
- to this document. Code Components extracted from this document must
- include Simplified BSD License text as described in Section 4.e of
- the Trust Legal Provisions and are provided without warranty as
- described in the Simplified BSD License.
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 1]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- This document may contain material from IETF Documents or IETF
- Contributions published or made publicly available before November
- 10, 2008. The person(s) controlling the copyright in some of this
- material may not have granted the IETF Trust the right to allow
- modifications of such material outside the IETF Standards Process.
- Without obtaining an adequate license from the person(s) controlling
- the copyright in such materials, this document may not be modified
- outside the IETF Standards Process, and derivative works of it may
- not be created outside the IETF Standards Process, except to format
- it for publication as an RFC or to translate it into languages other
- than English.
-
-Table of Contents
-
- 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6
- 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6
- 1.2. Approach . . . . . . . . . . . . . . . . . . . . . . . . . 7
- 1.3. Limitations . . . . . . . . . . . . . . . . . . . . . . . 7
- 1.4. Notational Conventions . . . . . . . . . . . . . . . . . . 8
- 1.5. XML Namespaces and Processing . . . . . . . . . . . . . . 8
- 2. Scheduling Process . . . . . . . . . . . . . . . . . . . . . . 10
- 3. Scheduling Support . . . . . . . . . . . . . . . . . . . . . . 11
- 4. Scheduling Collections . . . . . . . . . . . . . . . . . . . . 12
- 4.1. Scheduling Outbox Collection . . . . . . . . . . . . . . . 12
- 4.2. Scheduling Inbox Collection . . . . . . . . . . . . . . . 13
- 4.3. Calendaring Reports Extensions . . . . . . . . . . . . . . 15
- 5. Scheduling Transactions . . . . . . . . . . . . . . . . . . . 16
- 5.1. Identifying Scheduling Object Resources . . . . . . . . . 16
- 5.2. Handling Scheduling Object Resources . . . . . . . . . . . 16
- 5.2.1. Organizer Scheduling Object Resources . . . . . . . . 16
- 5.2.1.1. Create . . . . . . . . . . . . . . . . . . . . . . 17
- 5.2.1.2. Modify . . . . . . . . . . . . . . . . . . . . . . 18
- 5.2.1.3. Remove . . . . . . . . . . . . . . . . . . . . . . 19
- 5.2.2. Attendee Scheduling Object Resources . . . . . . . . . 20
- 5.2.2.1. Allowed Attendee Changes . . . . . . . . . . . . . 20
- 5.2.2.2. Create . . . . . . . . . . . . . . . . . . . . . . 21
- 5.2.2.3. Modify . . . . . . . . . . . . . . . . . . . . . . 21
- 5.2.2.4. Remove . . . . . . . . . . . . . . . . . . . . . . 22
- 5.2.3. HTTP Methods . . . . . . . . . . . . . . . . . . . . . 23
- 5.2.3.1. PUT . . . . . . . . . . . . . . . . . . . . . . . 23
- 5.2.3.2. COPY . . . . . . . . . . . . . . . . . . . . . . . 24
- 5.2.3.3. MOVE . . . . . . . . . . . . . . . . . . . . . . . 24
- 5.2.3.4. DELETE . . . . . . . . . . . . . . . . . . . . . . 25
- 5.2.4. Additional Method Preconditions . . . . . . . . . . . 25
- 5.2.4.1. CALDAV:unique-scheduling-object-resource
- Precondition . . . . . . . . . . . . . . . . . . . 25
- 5.2.4.2. CALDAV:same-organizer-in-all-components
- Precondition . . . . . . . . . . . . . . . . . . . 26
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 2]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- 5.2.4.3. CALDAV:allowed-organizer-scheduling-object-chan
- Precondition . . . . . . . . . . . . . . . . . . . 26
- 5.2.4.4. CALDAV:allowed-attendee-scheduling-object-chang
- Precondition . . . . . . . . . . . . . . . . . . . 27
- 5.2.5. DTSTAMP and SEQUENCE Properties . . . . . . . . . . . 27
- 5.2.6. Limit Recurrence Instances Sent to Attendees . . . . . 28
- 5.2.7. Forcing the Server to Send a Scheduling Message . . . 28
- 6. Processing Incoming Scheduling Messages . . . . . . . . . . . 29
- 6.1. Processing Attendee Replies . . . . . . . . . . . . . . . 29
- 6.2. Processing Organizer Requests, Additions, and
- Cancellations . . . . . . . . . . . . . . . . . . . . . . 30
- 6.3. Default Calendar Collection . . . . . . . . . . . . . . . 30
- 6.3.1. Additional Method Preconditions . . . . . . . . . . . 31
- 6.3.1.1. CALDAV:default-calendar-delete-allowed
- Precondition . . . . . . . . . . . . . . . . . . . 31
- 6.3.1.2. CALDAV:valid-schedule-default-calendar-URL
- Precondition . . . . . . . . . . . . . . . . . . . 31
- 6.4. Scheduling Messages as Notifications . . . . . . . . . . . 32
- 7. Request for Busy Time Information . . . . . . . . . . . . . . 33
- 7.1. Status Codes . . . . . . . . . . . . . . . . . . . . . . . 33
- 7.2. Additional Method Preconditions . . . . . . . . . . . . . 33
- 7.2.1. DAV:need-privileges Precondition . . . . . . . . . . . 33
- 7.2.2. CALDAV:supported-collection Precondition . . . . . . . 34
- 7.2.3. CALDAV:supported-calendar-data Precondition . . . . . 35
- 7.2.4. CALDAV:valid-calendar-data Precondition . . . . . . . 35
- 7.2.5. CALDAV:valid-scheduling-message Precondition . . . . . 36
- 7.2.6. CALDAV:organizer-allowed Precondition . . . . . . . . 36
- 7.2.7. CALDAV:max-resource-size Precondition . . . . . . . . 37
- 7.3. Response to a POST request . . . . . . . . . . . . . . . . 37
- 8. Avoiding Conflicts when Updating Scheduling Object
- Resources . . . . . . . . . . . . . . . . . . . . . . . . . . 39
- 8.1. PUT . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- 8.2. DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . 41
- 8.3. COPY or MOVE . . . . . . . . . . . . . . . . . . . . . . . 42
- 9. Other Scheduling Considerations . . . . . . . . . . . . . . . 43
- 9.1. Attendee Participation Status . . . . . . . . . . . . . . 43
- 9.2. Schedule Status Values . . . . . . . . . . . . . . . . . . 44
- 9.3. Organizer is an Attendee . . . . . . . . . . . . . . . . . 47
- 10. Additional iCalendar Property Parameters . . . . . . . . . . . 48
- 10.1. Schedule Agent Parameter . . . . . . . . . . . . . . . . . 48
- 10.2. Schedule Force Send Parameter . . . . . . . . . . . . . . 49
- 10.3. Schedule Status Parameter . . . . . . . . . . . . . . . . 50
- 11. Additional Message Header Fields . . . . . . . . . . . . . . . 52
- 11.1. Schedule-Reply Request Header . . . . . . . . . . . . . . 52
- 11.2. Schedule-Tag Response Header . . . . . . . . . . . . . . . 52
- 11.3. If-Schedule-Tag-Match Request Header . . . . . . . . . . . 53
- 12. Additional WebDAV Properties . . . . . . . . . . . . . . . . . 54
- 12.1. CALDAV:schedule-calendar-transp Property . . . . . . . . . 54
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 3]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- 12.2. CALDAV:schedule-default-calendar-URL Property . . . . . . 55
- 12.3. CALDAV:schedule-tag Property . . . . . . . . . . . . . . . 56
- 13. Scheduling Access Control . . . . . . . . . . . . . . . . . . 57
- 13.1. Scheduling Privileges . . . . . . . . . . . . . . . . . . 57
- 13.1.1. Privileges on Scheduling Inbox Collections . . . . . . 57
- 13.1.1.1. CALDAV:schedule-deliver Privilege . . . . . . . . 57
- 13.1.1.2. CALDAV:schedule-deliver-invite Privilege . . . . . 58
- 13.1.1.3. CALDAV:schedule-deliver-reply Privilege . . . . . 58
- 13.1.1.4. CALDAV:schedule-query-freebusy Privilege . . . . . 58
- 13.1.2. Privileges on Scheduling Outbox Collections . . . . . 58
- 13.1.2.1. CALDAV:schedule-send Privilege . . . . . . . . . . 58
- 13.1.2.2. CALDAV:schedule-send-invite Privilege . . . . . . 59
- 13.1.2.3. CALDAV:schedule-send-reply Privilege . . . . . . . 59
- 13.1.2.4. CALDAV:schedule-send-freebusy Privilege . . . . . 59
- 13.1.3. Aggregation of Scheduling Privileges . . . . . . . . . 59
- 13.2. Additional Principal Properties . . . . . . . . . . . . . 60
- 13.2.1. CALDAV:schedule-inbox-URL Property . . . . . . . . . . 60
- 13.2.2. CALDAV:schedule-outbox-URL Property . . . . . . . . . 61
- 13.2.3. CALDAV:calendar-user-address-set Property . . . . . . 61
- 13.2.4. CALDAV:calendar-user-type Property . . . . . . . . . . 62
- 14. XML Element Definitions . . . . . . . . . . . . . . . . . . . 64
- 14.1. CALDAV:schedule-response XML Element . . . . . . . . . . . 64
- 14.2. CALDAV:response XML Element . . . . . . . . . . . . . . . 64
- 14.3. CALDAV:recipient XML Element . . . . . . . . . . . . . . . 64
- 14.4. CALDAV:request-status XML Element . . . . . . . . . . . . 65
- 15. Security Considerations . . . . . . . . . . . . . . . . . . . 66
- 15.1. Verifying Scheduling Transactions . . . . . . . . . . . . 66
- 15.2. Verifying Busy Time Information Requests . . . . . . . . . 66
- 15.3. Privacy Issues . . . . . . . . . . . . . . . . . . . . . . 67
- 16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 68
- 16.1. Message Header Field Registrations . . . . . . . . . . . . 68
- 16.1.1. Schedule-Reply . . . . . . . . . . . . . . . . . . . . 68
- 16.1.2. Schedule-Tag . . . . . . . . . . . . . . . . . . . . . 68
- 16.1.3. If-Schedule-Tag-Match . . . . . . . . . . . . . . . . 68
- 16.2. iCalendar Property Parameter Registrations . . . . . . . . 69
- 16.3. iCalendar REQUEST-STATUS Value Registrations . . . . . . . 69
- 16.4. Additional iCalendar Elements Registries . . . . . . . . . 69
- 16.4.1. Schedule Agent Values Registry . . . . . . . . . . . . 69
- 16.4.2. Schedule Force Send Values Registry . . . . . . . . . 70
- 17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 71
- 18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 72
- 18.1. Normative References . . . . . . . . . . . . . . . . . . . 72
- 18.2. Informative References . . . . . . . . . . . . . . . . . . 73
- Appendix A. Scheduling Privileges Summary . . . . . . . . . . . . 74
- A.1. Scheduling Inbox Privileges . . . . . . . . . . . . . . . 74
- A.2. Scheduling Outbox Privileges . . . . . . . . . . . . . . . 74
- Appendix B. Example Scheduling Transactions . . . . . . . . . . . 76
- B.1. Example: Organizer Inviting Multiple Attendees . . . . . . 76
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 4]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- B.2. Example: Attendee Receiving an Invitation . . . . . . . . 78
- B.3. Example: Attendee Replying to an Invitation . . . . . . . 80
- B.4. Example: Organizer Receiving a Reply to an Invitation . . 82
- B.5. Example: Organizer Requesting Busy Time Information . . . 84
- B.6. Example: User Attempting to Invite Attendee on behalf
- of Organizer . . . . . . . . . . . . . . . . . . . . . . . 86
- B.7. Example: Attendee Declining an Instance of a Recurring
- Event . . . . . . . . . . . . . . . . . . . . . . . . . . 87
- B.8. Example: Attendee Removing an Instance of a Recurring
- Event . . . . . . . . . . . . . . . . . . . . . . . . . . 91
- Appendix C. Changes (to be removed by RFC Editor prior to
- publication) . . . . . . . . . . . . . . . . . . . . 94
- C.1. Changes in -09 . . . . . . . . . . . . . . . . . . . . . . 94
- C.2. Changes in -08 . . . . . . . . . . . . . . . . . . . . . . 95
- C.3. Changes in -07 . . . . . . . . . . . . . . . . . . . . . . 95
- C.4. Changes in -06 . . . . . . . . . . . . . . . . . . . . . . 96
- C.5. Changes in -05 . . . . . . . . . . . . . . . . . . . . . . 96
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 5]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-1. Introduction
-
- This document specifies extensions to the CalDAV "calendar-access"
- [RFC4791] feature to enable scheduling of iCalendar-based [RFC5545]
- calendar components between Calendar Users. This extension leverages
- the scheduling methods defined in the iCalendar Transport-independent
- Interoperability Protocol (iTIP) [RFC5546] to permit Calendar Users
- to perform scheduling transactions such as schedule, reschedule,
- respond to scheduling request or cancel scheduled calendar
- components, as well as search for busy time information.
-
- Discussion of this Internet-Draft is taking place on the mailing list
- <https://www.ietf.org/mailman/listinfo/caldav>.
-
-1.1. Terminology
-
- This specification uses much of the same terminology as iCalendar
- [RFC5545], iTIP [RFC5546], WebDAV [RFC4918], and CalDAV [RFC4791].
- The following definitions are provided to aid the reader in
- understanding this specification.
-
- Calendar User (CU): An entity (often a human) that accesses calendar
- information [RFC3283].
-
- Calendar User Agent (CUA): Software with which the calendar user
- communicates with a calendar service or local calendar store to
- access calendar information [RFC3283].
-
- Calendar collection: A resource that acts as a container of
- references to child calendar object resources [RFC4791].
-
- Calendar object resource: A resource representing a calendar object
- (event, to-do, journal entry, or other calendar components)
- [RFC4791].
-
- Scheduling object resource: A calendar object resource contained in
- a calendar collection for which the server will take care of
- sending scheduling messages on behalf of the owner of the calendar
- collection.
-
- Organizer scheduling object resource: A scheduling object resource
- owned by an Organizer.
-
- Attendee scheduling object resource: A scheduling object resource
- owned by an Attendee.
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 6]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Automatic scheduling transaction: Add, change or remove operations
- on a scheduling object resource for which the server will deliver
- scheduling messages to other Calendar Users.
-
- Scheduling message: A calendar object resource that describes a
- scheduling transaction such as schedule, reschedule, reply, or
- cancel.
-
- Scheduling Outbox collection: A resource at which busy time
- information requests are targeted.
-
- Scheduling Inbox collection: A collection in which incoming
- scheduling messages are delivered.
-
-1.2. Approach
-
- iTIP [RFC5546] outlines a model where Calendar Users exchange
- scheduling messages with one another. Often times, Calendar User
- Agents are made responsible for generating and sending scheduling
- messages as well as processing incoming scheduling messages. This
- approach yields a number of problems, including:
-
- o For most updates to a scheduled calendar component, Calendar User
- Agents need to address separate scheduling messages to the
- Organizer or the Attendees.
-
- o The handling of incoming scheduling messages and the updates to
- calendars impacted by those messages only occurs when Calendar
- User Agents are active.
-
- o Due to the update latency, it is possible for calendars of
- different Calendar Users to reflect different, inaccurate states.
-
- This specification uses an alternative approach where the server is
- made responsible for sending scheduling messages and processing
- incoming scheduling messages. This approach frees the Calendar User
- Agents from the submission and processing of scheduling messages and
- ensures better consistency of calendar data across users' calendars.
- The operation of creating, modifying or deleting a scheduled calendar
- component in a calendar is enough to trigger the server to deliver
- the necessary scheduling messages to the appropriate Calendar Users.
-
-1.3. Limitations
-
- While the scheduling features described in this specification are
- based on iTIP [RFC5546], some of its more complex features have
- deliberately been left out in order to keep this specification
- simple. In particular, the following iTIP [RFC5546] features are not
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 7]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- covered: publishing, countering, delegating, refreshing and
- forwarding calendar components, as well as replacing the Organizer of
- a calendar component.
-
- The goal of this specification is to provide the essential scheduling
- features needed. It is expected that future extensions will be
- developed to address the more complex features.
-
-1.4. Notational Conventions
-
- The Augmented BNF (ABNF) syntax used by this document to specify the
- format definition of new iCalendar elements is defined in [RFC5234].
-
- The Augmented BNF (ABNF) syntax used by this document to specify the
- format definition of new message header fields to be used with the
- HTTP/1.1 protocol is described in Section 2.1 of [RFC2616]. Since
- this Augmented BNF uses the basic production rules provided in
- Section 2.2 of [RFC2616], these rules apply to this document as well.
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in [RFC2119].
-
- The term "protected" is used in the Conformance field of property
- definitions as defined in Section 15 of [RFC4918].
-
-1.5. XML Namespaces and Processing
-
- This document uses XML DTD fragments ([W3C.REC-xml-20081126], Section
- 3.2) as a purely notational convention. WebDAV request and response
- bodies cannot be validated by a DTD due to the specific extensibility
- rules defined in Section 17 of [RFC4918] and due to the fact that all
- XML elements defined by this specification use the XML namespace name
- "DAV:". In particular:
-
- 1. element names use the "DAV:" namespace,
-
- 2. element ordering is irrelevant unless explicitly stated,
-
- 3. extension elements (elements not already defined as valid child
- elements) may be added anywhere, except when explicitly stated
- otherwise,
-
- 4. extension attributes (attributes not already defined as valid for
- this element) may be added anywhere, except when explicitly
- stated otherwise.
-
- The XML elements specified in this document are defined in the
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 8]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- "urn:ietf:params:xml:ns:caldav" XML namespace registered by CalDAV
- [RFC4791].
-
- When XML element types in the namespaces "DAV:" and
- "urn:ietf:params:xml:ns:caldav" are referenced in this document
- outside of the context of an XML fragment, the strings "DAV:" and
- "CALDAV:" will be prefixed to the element types, respectively.
-
- This document inherits, and sometimes extends, DTD productions from
- Section 14 of [RFC4918].
-
- Also note that some CalDAV XML element names are identical to WebDAV
- XML element names, though their namespace differs. Care must be
- taken not to confuse the two sets of names.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 9]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-2. Scheduling Process
-
- The process of scheduling an event between different parties often
- involves a series of steps with different actors playing particular
- roles during the whole process. Typically there is an event
- "Organizer" whose role is to setup an event between one or more
- "Attendees", and this is done by sending out invitations and handling
- responses from each Attendee.
-
- This process can typically be broken down into two phases.
-
- In the first phase, the Organizer will query the busy time
- information of each Attendee to determine the most appropriate time
- for the event. This request is sometimes called a "freebusy" lookup.
-
- In the second phase, the Organizer sends out invitations to each
- Attendee using the time previously determined from the freebusy
- lookup. There then follows exchanges between Organizer and Attendees
- regarding the invitation. Some Attendees may choose to attend at the
- time proposed by the Organizer, others may decline to attend. The
- Organizer needs to process each of the replies from the Attendees and
- take appropriate action to confirm the event, reschedule it or
- perhaps cancel it.
-
- The user expectation as to how a calendaring and scheduling system
- should respond in each of these two phases is somewhat different. In
- the case of a freebusy lookup, users expect to get back results
- immediately so that they can then move on to the invitation phase as
- quickly as possible. In the case of invitations, it is expected that
- each Attendee will reply with their participation status in their own
- time, so delays in receiving replies are anticipated. Thus
- calendaring and scheduling systems should treat these two operational
- phases in different ways to accommodate the user expectations, which
- is what this specification does.
-
- While the scenario described above only covers the case of scheduling
- events between Calendar Users, and requesting busy time information,
- this specification also provides support for the scheduling of to-dos
- between Calendar Users. For the majority of the following
- discussion, scheduling of events and freebusy lookups will be
- discussed, as these are the more common operations.
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 10]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-3. Scheduling Support
-
- A server that supports the features described in this document MUST
- include "calendar-auto-schedule" as a field in the DAV response
- header from an OPTIONS request on any resource that supports any
- scheduling actions, properties, privileges or methods.
-
- To advertise support for the CalDAV "calendar-auto-schedule" feature
- a server is REQUIRED to support and advertise support for the CalDAV
- "calendar-access" [RFC4791] feature.
-
- >> Request <<
-
- OPTIONS /home/cyrus/calendars/inbox/ HTTP/1.1
- Host: cal.example.com
-
- >> Response <<
-
- HTTP/1.1 204 No Content
- Date: Thu, 31 Mar 2005 09:00:00 GMT
- Allow: OPTIONS, GET, HEAD, DELETE, TRACE, PROPFIND
- Allow: PROPPATCH, LOCK, UNLOCK, REPORT, ACL
- DAV: 1, 2, 3, access-control
- DAV: calendar-access, calendar-auto-schedule
-
- In this example, the OPTIONS response indicates that the server
- supports the "calendar-access" and "calendar-auto-schedule" features
- and that resource "/home/cyrus/calendars/inbox/" supports the
- scheduling actions, properties, privileges and methods defined in
- this specification.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 11]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-4. Scheduling Collections
-
- This specification introduces new collection resource types that are
- used to manage scheduling object resources, scheduling privileges as
- well as provide scheduling functionality.
-
-4.1. Scheduling Outbox Collection
-
- A scheduling Outbox collection is used as the target for busy time
- information requests.
-
- A scheduling Outbox collection MUST report the DAV:collection and
- CALDAV:schedule-outbox XML elements in the value of the DAV:
- resourcetype property. The element type declaration for CALDAV:
- schedule-outbox is:
-
- <!ELEMENT schedule-outbox EMPTY>
-
- Example:
-
- <D:resourcetype xmlns:D="DAV:">
- <D:collection/>
- <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
- </D:resourcetype>
-
- New WebDAV ACL [RFC3744] privileges can be set on the scheduling
- Outbox collection to control who is allowed to send scheduling
- messages on behalf of the Calendar User associated with the
- scheduling Outbox collection. See Section 13.1 for more details.
-
- A scheduling Outbox collection MUST NOT be a child (at any depth) of
- a calendar collection resource.
-
- The following WebDAV properties specified in CalDAV "calendar-access"
- [RFC4791] MAY also be defined on scheduling Outbox collections:
-
- CALDAV:supported-calendar-component-set - when present this
- indicates the allowed calendar component types for scheduling
- messages submitted to the scheduling Outbox collection with the
- POST method.
-
- CALDAV:supported-calendar-data - when present this indicates the
- allowed media types for scheduling messages submitted to the
- scheduling Outbox collection with the POST method.
-
- CALDAV:max-resource-size - when present this indicates the maximum
- size of a resource in octets that the server is willing to accept
- for scheduling messages submitted to the scheduling Outbox
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 12]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- collection with the POST method.
-
- CALDAV:min-date-time - when present this indicates the earliest
- date and time (in UTC) that the server is willing to accept for
- any DATE or DATE-TIME value in scheduling messages submitted to
- the scheduling Outbox collection with the POST method.
-
- CALDAV:max-date-time - when present this indicates the latest date
- and time (in UTC) that the server is willing to accept for any
- DATE or DATE-TIME value in scheduling messages submitted to the
- scheduling Outbox collection with the POST method.
-
- CALDAV:max-instances - when present this indicates the maximum
- number of recurrence instances in scheduling messages submitted to
- the scheduling Outbox collection with the POST method.
-
- CALDAV:max-attendees-per-instance - when present this indicates
- the maximum number of ATTENDEE properties in any instance of
- scheduling messages submitted to the scheduling Outbox collection
- with the POST method.
-
- The use of child resources in a scheduling Outbox collection is
- reserved for future revisions or extensions of this specification.
-
-4.2. Scheduling Inbox Collection
-
- A scheduling Inbox collection contains copies of incoming scheduling
- messages. These may be requests sent by an Organizer, or replies
- sent by an Attendee in response to a request.
-
- A scheduling Inbox collection MUST report the DAV:collection and
- CALDAV:schedule-inbox XML elements in the value of the DAV:
- resourcetype property. The element type declaration for CALDAV:
- schedule-inbox is:
-
- <!ELEMENT schedule-inbox EMPTY>
-
- Example:
-
- <D:resourcetype xmlns:D="DAV:">
- <D:collection/>
- <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
- </D:resourcetype>
-
- Scheduling Inbox collections MUST only contain calendar object
- resources that obey the restrictions specified in iTIP [RFC5546].
- Consequently, scheduling Inbox collections MUST NOT contain any types
- of collection resources. Restrictions defined in Section 4.1 of
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 13]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- CalDAV "calendar-access" [RFC4791] on calendar object resources
- contained in calendar collections (e.g., "UID" uniqueness) don't
- apply to calendar object resources contained in a scheduling Inbox
- collection. Thus, multiple calendar object resources contained in a
- scheduling Inbox collection can have the same "UID" property value
- (i.e., multiple scheduling messages for the same calendar component).
-
- New WebDAV ACL [RFC3744] privileges can be set on the scheduling
- Inbox collection to control from whom the Calendar User associated
- with the scheduling Inbox collection will accept scheduling messages
- from. See Section 13.1 for more details.
-
- A scheduling Inbox collection MUST NOT be a child (at any depth) of a
- calendar collection resource.
-
- The following WebDAV properties specified in CalDAV "calendar-access"
- [RFC4791] MAY also be defined on scheduling Inbox collections:
-
- CALDAV:calendar-timezone - when present this contains a time zone
- that the server can use when calendar date-time operations are
- carried out, for example when a time-range CALDAV:calendar-query
- REPORT is targeted at a scheduling Inbox collection.
-
- CALDAV:supported-calendar-component-set - when present this
- indicates the allowed calendar component types for scheduling
- messages delivered to the scheduling Inbox collection.
-
- CALDAV:supported-calendar-data - when present this indicates the
- allowed media types for scheduling messages delivered to the
- scheduling Inbox collection.
-
- CALDAV:max-resource-size - when present this indicates the maximum
- size of a resource in octets that the server is willing to accept
- for scheduling messages delivered to the scheduling Inbox
- collection.
-
- CALDAV:min-date-time - when present this indicates the earliest
- date and time (in UTC) that the server is willing to accept for
- any DATE or DATE-TIME value in scheduling messages delivered to
- the scheduling Inbox collection.
-
- CALDAV:max-date-time - when present this indicates the latest date
- and time (in UTC) that the server is willing to accept for any
- DATE or DATE-TIME value in scheduling messages delivered to the
- scheduling Inbox collection.
-
- CALDAV:max-instances - when present this indicates the maximum
- number of recurrence instances in scheduling messages delivered to
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 14]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- the scheduling Inbox collection.
-
- CALDAV:max-attendees-per-instance - when present this indicates
- the maximum number of ATTENDEE properties in any instance of
- scheduling messages delivered to the scheduling Inbox collection.
-
-4.3. Calendaring Reports Extensions
-
- This specification extends the CALDAV:calendar-query and CALDAV:
- calendar-multiget REPORTs to return results for calendar object
- resources in scheduling Inbox collections when the report directly
- targets such a collection. That is, the Request-URI for a report
- MUST be the URI of the scheduling Inbox collection or of a child
- resource within a scheduling Inbox collection. A report run on a
- regular collection that includes a scheduling Inbox collection as a
- child resource at any depth MUST NOT examine or return any calendar
- object resources from within any scheduling Inbox collections.
-
- When a CALDAV:calendar-query REPORT includes a time-range query and
- targets a scheduling Inbox collection, if any calendar object
- resources contain "VEVENT" calendar components that do not include a
- "DTSTART" iCalendar property (as allowed by iTIP [RFC5546]) then such
- components MUST always match the time-range query test.
-
- Note that the CALDAV:free-busy-query REPORT is not supported on
- scheduling Inbox collections.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 15]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-5. Scheduling Transactions
-
- When a calendar object resource is created, modified or removed from
- a calendar collection (either via a PUT, DELETE, COPY or MOVE HTTP
- request), the server examines the calendar data and checks to see
- whether the data represents a scheduling object resource. If it
- does, the server will automatically attempt to deliver a scheduling
- message to the appropriate Calendar Users. Several types of
- scheduling operation can occur in this case, equivalent to iTIP
- "REQUEST", "REPLY", "CANCEL", and "ADD" operations.
-
-5.1. Identifying Scheduling Object Resources
-
- Calendar object resources on which the server performs automatic
- scheduling transactions are referred to as scheduling object
- resources. There are two types of scheduling object resources:
- organizer scheduling object resources, and attendee scheduling object
- resources.
-
- A calendar object resource is considered to be a valid organizer
- scheduling object resource if the "ORGANIZER" iCalendar property is
- present and set in all the calendar components to a value that
- matches one of the calendar user addresses of the owner of the
- calendar collection.
-
- A calendar object resource is considered to be a valid attendee
- scheduling object resource if the "ORGANIZER" iCalendar property is
- present and set in all the calendar components to the same value and
- doesn't match one of the calendar user addresses of the owner of the
- calendar collection, and that at least one of the "ATTENDEE"
- iCalendar property values match one of the calendar user addresses of
- the owner of the calendar collection.
-
- The creation of attendee scheduling object resources is typically
- done by the server, with the resource being stored in an appropriate
- calendar collection.
-
-5.2. Handling Scheduling Object Resources
-
- The server's behavior when processing a scheduling object resource
- depends on whether it is owned by the Organizer or an Attendee
- specified in the calendar data.
-
-5.2.1. Organizer Scheduling Object Resources
-
- An Organizer can create, modify or remove a scheduling object
- resource by issuing HTTP requests with an appropriate method. The
- create, modify and remove behaviors for the server are each described
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 16]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- next, and the way these are invoked via HTTP requests is described in
- Section 5.2.3.
-
-5.2.1.1. Create
-
- When a scheduling object resource is created by the Organizer, the
- server will inspect each "ATTENDEE" property to determine if a
- scheduling message should be delivered to this Attendee according to
- the value of the "SCHEDULE-AGENT" property parameter (see
- Section 10.1) as described in the table below:
-
- +------------------+-------------+
- | SCHEDULE-AGENT | iTIP METHOD |
- +==================+=============+
- | SERVER (default) | REQUEST |
- +------------------+-------------+
- | CLIENT | -- |
- +------------------+-------------+
- | NONE | -- |
- +------------------+-------------+
-
- The attempt to deliver the scheduling message will either succeed or
- fail. In all cases, the server MUST add a "SCHEDULE-STATUS"
- iCalendar property parameter (see Section 10.3) to the "ATTENDEE"
- iCalendar property in the scheduling object resource being created,
- and set its value as described in Section 9.2. This will result in
- the created calendar object resource differing from the calendar data
- sent in the HTTP request. As a result clients can reload the
- calendar data from the server as soon as it is created on the server
- in order to update to the new server generated state information.
- Servers MUST NOT set the "SCHEDULE-STATUS" property parameter on the
- "ATTENDEE" property of Attendees for which it did not attempt to
- deliver a scheduling message.
-
- Restrictions:
-
- 1. The server MAY reject any attempt to set the "PARTSTAT" iCalendar
- property parameter value of the "ATTENDEE" iCalendar property of
- other users in the calendar object resource to a value other than
- "NEEDS-ACTION" if the "SCHEDULE-AGENT" property parameter value
- is not present or set to the value "SERVER". To maintain
- consistency across Organizers and Attendees, a server will
- typically choose to enforce the requirement that only an Attendee
- can change their own "PARTSTAT" to a value other than "NEEDS-
- ACTION".
-
- 2. The server MAY reject attempts to create a scheduling object
- resource that specifies a "UID" property value already specified
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 17]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- in a scheduling object resource contained in another calendar
- collection of the Organizer.
-
- 3. The server MUST take into account scheduling privileges as
- described in Section 13.1 when handling the creation of a
- scheduling object resource.
-
- 4. Restrictions on calendar object resources defined in Section 4.1
- of [RFC4791] MUST also be enforced.
-
-5.2.1.2. Modify
-
- When a scheduling object resource is modified by the Organizer, the
- server will inspect each "ATTENDEE" property in the new calendar data
- to determine which ones have the "SCHEDULE-AGENT" iCalendar property
- parameter. It will then need to compare this with the "ATTENDEE"
- properties in the existing calendar object resource that is being
- modified.
-
- For each Attendee in the old and new calendar data on a per-instance
- basis, and taking into account the addition or removal of Attendees,
- the server will determine whether to deliver a scheduling message to
- the Attendee. The following table determines whether the server
- needs to deliver a scheduling message, and if so which iTIP
- scheduling method to use. The values "SERVER", "CLIENT", and "NONE"
- in the top and left titles of the table refer to the "SCHEDULE-AGENT"
- parameter value of the "ATTENDEE" property, and the values "<Absent>"
- and "<Removed>" are used to cover the cases where the "ATTENDEE"
- property is not present (Old) or is being removed (New).
-
- +---------------+-----------------------------------------------+
- | | New |
- | ATTENDEE +-----------+-----------+-----------+-----------+
- | | <Removed> | SERVER | CLIENT | NONE |
- | | | (default) | | |
- +===+===========+===========+===========+===========+===========+
- | | <Absent> | -- | REQUEST / | -- | -- |
- | | | | ADD | | |
- | +-----------+-----------+-----------+-----------+-----------+
- | | SERVER | CANCEL | REQUEST | CANCEL | CANCEL |
- | O | (default) | | | | |
- | l +-----------+-----------+-----------+-----------+-----------+
- | d | CLIENT | -- | REQUEST / | -- | -- |
- | | | | ADD | | |
- | +-----------+-----------+-----------+-----------+-----------+
- | | NONE | -- | REQUEST / | -- | -- |
- | | | | ADD | | |
- +---+-----------+-----------+-----------+-----------+-----------+
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 18]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- The attempt to deliver the scheduling message will either succeed or
- fail. In all cases, the server MUST add a "SCHEDULE-STATUS"
- iCalendar property parameter to the "ATTENDEE" iCalendar property in
- the scheduling object resource being modified, and set its value as
- described in Section 9.2. This will result in the created calendar
- object resource differing from the calendar data sent in the HTTP
- request. As a result clients MAY reload the calendar data from the
- server as soon as it is modified on the server in order to update to
- the new server generated state information.
-
- Restrictions:
-
- 1. The server MAY reject any attempt to set the "PARTSTAT" iCalendar
- property parameter value of the "ATTENDEE" iCalendar property of
- other users in the calendar object resource to a value other than
- "NEEDS-ACTION" if the "SCHEDULE-AGENT" property parameter value
- is not present or set to the value "SERVER". To maintain
- consistency for Organizers and Attendees, a server will typically
- choose to enforce the requirement that only an Attendee can
- change their own "PARTSTAT" to a value other than "NEEDS-ACTION".
-
- 2. The server MUST take into account scheduling privileges as
- described in Section 13.1 when handling the modification of a
- scheduling object resource.
-
- 3. Restrictions on calendar object resources defined in Section 4.1
- of [RFC4791] MUST also be enforced.
-
-5.2.1.3. Remove
-
- When a scheduling object resource is removed by the Organizer, the
- server will inspect each "ATTENDEE" property in the scheduling object
- resource being removed to determine which ones have the "SCHEDULE-
- AGENT" iCalendar property parameter.
-
- For each Attendee the server will determine whether to attempt to
- deliver a scheduling message into the Attendee's scheduling Inbox
- collection, based on the table below:
-
- +------------------+-------------+
- | SCHEDULE-AGENT | iTIP METHOD |
- +==================+=============+
- | SERVER (default) | CANCEL |
- +------------------+-------------+
- | CLIENT | -- |
- +------------------+-------------+
- | NONE | -- |
- +------------------+-------------+
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 19]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Restrictions:
-
- 1. The server MUST take into account scheduling privileges as
- described in Section 13.1 when handling the deletion of a
- scheduling object resource.
-
-5.2.2. Attendee Scheduling Object Resources
-
- An Attendee can create, modify or remove a scheduling object resource
- by issuing HTTP requests with an appropriate method. The create,
- modify and remove behaviors for the server are each described next,
- and the way these are invoked via HTTP requests is described in
- Section 5.2.3.
-
-5.2.2.1. Allowed Attendee Changes
-
- Attendees are allowed to make some changes to a scheduling object
- resource, though key properties such as start time, end time,
- location, and summary are typically under the control of the
- Organizer.
-
- The server MUST allow Attendees to:
-
- 1. change their own "PARTSTAT" iCalendar property parameter value.
-
- 2. add, modify or remove any "TRANSP" iCalendar properties.
-
- 3. add, modify or remove any "PERCENT-COMPLETE" iCalendar
- properties.
-
- 4. add, modify or remove any "VALARM" iCalendar components.
-
- 5. add, modify or remove the "CALSCALE" iCalendar property within
- the top-level "VCALENDAR" component.
-
- 6. modify the "PRODID" iCalendar property within the top-level
- "VCALENDAR" component.
-
- 7. add "EXDATE" iCalendar properties and possibly remove components
- for overridden recurrence instances.
-
- 8. add, modify or remove any "CREATED", "DTSTAMP" and "LAST-
- MODIFIED" iCalendar properties.
-
- 9. add new components to represent overridden recurrence instances,
- provided the only changes to the recurrence instance follow the
- rules above.
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 20]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-5.2.2.2. Create
-
- Typically an Attendee does not create scheduling object resources, as
- scheduling messages delivered to them on the server are automatically
- processed by the server and placed on one of their calendars (see
- Section 6). However, in some cases a scheduling message may get
- delivered directly to the client, and the Attendee may wish to store
- that on the server. In that case the client creates a scheduling
- object resource in a suitable calendar belonging to the Attendee. It
- can then set the "SCHEDULE-AGENT" iCalendar property parameter on all
- "ORGANIZER" iCalendar properties in the resource to determine how the
- server treats the resource. The value of the "SCHEDULE-AGENT"
- iCalendar property parameter on all "ORGANIZER" iCalendar properties
- MUST be the same.
-
- +----------------+--------------------------------------------------+
- | SCHEDULE-AGENT | Action |
- +----------------+--------------------------------------------------+
- | SERVER | The server will attempt to process changes to |
- | (default) | the resource using the normal rules for attendee |
- | | scheduling object resources. |
- | | |
- | CLIENT | The server does no special processing of the |
- | | resource. The client is assumed to be handling |
- | | Attendee replies etc. |
- | | |
- | NONE | The server does no special processing of the |
- | | resource. |
- +----------------+--------------------------------------------------+
-
- In some cases a server may not be able to process an Attendee
- scheduling object resource that originated from another system (i.e.,
- where the server is unable to deliver scheduling messages to the
- Organizer). In such cases the server MUST add a "SCHEDULE-STATUS"
- iCalendar property parameter to all "ORGANIZER" iCalendar properties
- in the resource with a value indicating a suitable error.
-
-5.2.2.3. Modify
-
- When a scheduling object resource is modified by an Attendee, the
- server behavior depends on the value of the "SCHEDULE-AGENT"
- iCalendar property parameter on the "ORGANIZER" iCalendar properties:
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 21]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- +----------------+--------------------------------------------------+
- | SCHEDULE-AGENT | Action |
- +----------------+--------------------------------------------------+
- | SERVER | The server will attempt to process the removal |
- | (default) | using the behavior listed below. |
- | | |
- | CLIENT | The server does no special processing of the |
- | | resource. The client is assumed to be handling |
- | | any Attendee replies etc. |
- | | |
- | NONE | The server does no special processing of the |
- | | resource. |
- +----------------+--------------------------------------------------+
-
- The server will inspect the changes by comparing the new scheduling
- object resource with the existing scheduling object resource.
-
- If the Attendee changes one or more "PARTSTAT" iCalendar property
- values on any component, or adds an overridden component with a
- changed "PARTSTAT" property, then the server MUST deliver an iTIP
- "REPLY" scheduling message to the Organizer to indicate the new
- participation status of the Attendee.
-
- If the Attendee adds an "EXDATE" property value to, in effect, remove
- an overridden instance, the server MUST deliver an iTIP "REPLY"
- scheduling message to the Organizer to indicate that the Attendee has
- declined to instance (i.e., the Attendee's "PARTSTAT" iCalendar
- property parameter value is set to "DECLINED").
-
- The attempt to deliver the scheduling message will either succeed or
- fail. In all cases, the server MUST add a "SCHEDULE-STATUS"
- iCalendar property parameter to the "ORGANIZER" iCalendar property in
- the scheduling object resource being created, and set its value as
- described in Section 9.2. This will result in the created calendar
- object resource differing from the calendar data sent in the HTTP
- request. As a result clients MAY reload the calendar data from the
- server as soon as it is stored in order to update to the new server
- generated state information.
-
-5.2.2.4. Remove
-
- When a scheduling object resource is removed by an Attendee, the
- server behavior depends on the value of the "SCHEDULE-AGENT"
- iCalendar property parameter on the "ORGANIZER" iCalendar properties:
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 22]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- +----------------+--------------------------------------------------+
- | SCHEDULE-AGENT | Action |
- +----------------+--------------------------------------------------+
- | SERVER | The server will attempt to process the removal |
- | (default) | using either behaviors (1) or (2) listed below. |
- | | |
- | CLIENT | The server does no special processing of the |
- | | resource. The client is assumed to be handling |
- | | any Attendee replies etc. |
- | | |
- | NONE | The server does no special processing of the |
- | | resource. |
- +----------------+--------------------------------------------------+
-
- 1. If the HTTP request contains a "Schedule-Reply" request header
- set to the value "T" or there is no "Schedule-Reply" request
- header, then the server MUST attempt to deliver a scheduling
- message to the Organizer indicating that the Attendee has a
- "PARTSTAT" iCalendar property parameter value set to "DECLINED".
- That is, the Attendee has chosen not to attend any instances. If
- the server is unable to deliver the scheduling message, the
- remove action MUST fail, and an appropriate "SCHEDULE-STATUS"
- iCalendar property parameter set on the "ORGANIZER" property in
- the scheduling object resource stored by the server.
-
- 2. If the HTTP request contains a request header "Schedule-Reply"
- set to the value "F", the server MUST NOT attempt to deliver a
- scheduling message. The resource is simply removed. This
- provides the client a way to silently remove unwanted scheduling
- attempts.
-
-5.2.3. HTTP Methods
-
- This section describes how use of various HTTP methods on a
- scheduling object resource will cause a create, modify or remove
- action on that resource as described above. The use of these methods
- is subject to the restrictions in [RFC4791], in addition to what is
- described below.
-
-5.2.3.1. PUT
-
- When a PUT method request is received, the server will execute the
- following actions, provided all appropriate preconditions are met:
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 23]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- +--------------------------+--------------------------+-------------+
- | Existing Destination | Resulting Destination | Server |
- | Resource | Resource | Action |
- +--------------------------+--------------------------+-------------+
- | None | Calendar object resource | None |
- | | | |
- | None | Scheduling object | Create |
- | | resource | |
- | | | |
- | Calendar object resource | Calendar object resource | None |
- | | | |
- | Calendar object resource | Scheduling object | Create |
- | | resource | |
- | | | |
- | Scheduling object | Calendar object resource | Remove |
- | resource | | |
- | | | |
- | Scheduling object | Scheduling object | Modify |
- | resource | resource | |
- +--------------------------+--------------------------+-------------+
-
-5.2.3.2. COPY
-
- When a COPY method request is received, the server will execute the
- following actions based on the source and destination collections in
- the request:
-
- +-------------------------+-------------------------+---------------+
- | Source Collection | Destination Collection | Server Action |
- +-------------------------+-------------------------+---------------+
- | Non-calendar collection | Non-calendar collection | None |
- | | | |
- | Non-calendar collection | Calendar collection | (1) |
- | | | |
- | Calendar collection | Non-calendar collection | None |
- | | | |
- | Calendar collection | Calendar collection | None |
- +-------------------------+-------------------------+---------------+
-
- Note 1. The same rules as used for PUT above are applied for the
- destination of the COPY request.
-
-5.2.3.3. MOVE
-
- When a MOVE method request is received, the server will execute the
- following actions based on the source and destination collections in
- the request:
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 24]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- +-------------------------+-------------------------+---------------+
- | Source Collection | Destination Collection | Server Action |
- +-------------------------+-------------------------+---------------+
- | Non-calendar collection | Non-calendar collection | None |
- | | | |
- | Non-calendar collection | Calendar collection | (1) |
- | | | |
- | Calendar collection | Non-calendar collection | (2) |
- | | | |
- | Calendar collection | Calendar collection | None |
- +-------------------------+-------------------------+---------------+
-
- Note 1. The same rules as used for PUT above are applied for the
- destination of the MOVE request.
-
- Note 2. The same rules as used for DELETE below are applied for the
- source of the MOVE request.
-
-5.2.3.4. DELETE
-
- When a DELETE method is targeted at a scheduling object resource the
- server will execute the Remove action.
-
- When a DELETE method is targeted at a calendar collection the server
- will execute the Remove action on all scheduling object resources
- contained in the calendar collection.
-
-5.2.4. Additional Method Preconditions
-
- This specification defines additional method preconditions (see
- Section 16 of WebDAV [RFC4918]) to provide machine-parsable
- information in error responses.
-
-5.2.4.1. CALDAV:unique-scheduling-object-resource Precondition
-
- Name: unique-scheduling-object-resource
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: PUT, COPY, and MOVE
-
- Use with: 409 Conflict
-
- Purpose: (precondition) -- Servers MAY reject requests to create a
- scheduling object resource with an iCalendar "UID" property value
- already in use by another scheduling object resource owned by the
- same user in other calendar collections. Servers SHOULD report
- the URL of the scheduling object resource that is already making
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 25]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- use of the same "UID" property value in the DAV:href element.
-
- Definition:
-
- <!ELEMENT unique-scheduling-object-resource (DAV:href?)>
-
- Example:
-
- <C:unique-scheduling-object-resource xmlns:D="DAV:"
- xmlns:C="urn:ietf:params:xml:ns:caldav">
- <D:href>/home/bernard/calendars/personal/abc123.ics</D:href>
- </C:unique-scheduling-object-resource>
-
-5.2.4.2. CALDAV:same-organizer-in-all-components Precondition
-
- Name: same-organizer-in-all-components
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: PUT, COPY, and MOVE
-
- Use with: 409 Conflict
-
- Purpose: (precondition) -- All the calendar components in a
- scheduling object resource MUST contain the same "ORGANIZER"
- property value when present.
-
- Definition:
-
- <!ELEMENT same-organizer-in-all-components EMPTY>
-
- Example:
-
- <C:same-organizer-in-all-components
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-5.2.4.3. CALDAV:allowed-organizer-scheduling-object-change Precondition
-
- Name: allowed-organizer-scheduling-object-change
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: PUT, COPY, and MOVE
-
- Use with: 409 Conflict
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 26]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Purpose: (precondition) -- Servers MAY impose restrictions on
- modifications allowed by an Organizer. For instance, servers MAY
- prevent the Organizer setting the "PARTSTAT" property parameter to
- a value other than "NEEDS-ACTION" if the corresponding "ATTENDEE"
- property has the "SCHEDULE-AGENT" property parameter set to
- "SERVER", or has no "SCHEDULE-AGENT" property parameter. See
- Section 5.2.1.
-
- Definition:
-
- <!ELEMENT allowed-organizer-scheduling-object-change EMPTY>
-
- Example:
-
- <C:allowed-organizer-scheduling-object-change
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-5.2.4.4. CALDAV:allowed-attendee-scheduling-object-change Precondition
-
- Name: allowed-attendee-scheduling-object-change
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: PUT, COPY, and MOVE
-
- Use with: 409 Conflict
-
- Purpose: (precondition) -- Servers MAY impose restrictions on
- modifications allowed by an Attendee. Attendee modifications that
- servers MUST allow are specified in Section 5.2.2.1.
-
- Definition:
-
- <!ELEMENT allowed-attendee-scheduling-object-change EMPTY>
-
- Example:
-
- <C:allowed-attendee-scheduling-object-change
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-5.2.5. DTSTAMP and SEQUENCE Properties
-
- Whenever the server generates a scheduling message for delivery to a
- Calendar User, it MUST ensure that a "DTSTAMP" iCalendar property is
- present and MUST set the value to the UTC time that the scheduling
- message was generated (as required by iCalendar).
-
- iTIP [RFC5546] places certain requirements on how the "SEQUENCE"
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 27]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- iCalendar property value in scheduling messages changes. The server
- MUST ensure that for each type of scheduling operation, the
- "SEQUENCE" iCalendar property value is appropriately updated. If the
- client does not update the "SEQUENCE" iCalendar property itself when
- that is required, the server MUST update the property.
-
-5.2.6. Limit Recurrence Instances Sent to Attendees
-
- When delivering scheduling messages for recurring calendar components
- to Attendees, servers MUST ensure that Attendees only get information
- about recurrence instances that explicitly include them as an
- Attendee.
-
- For example, if an Attendee is invited to a single recurrence
- instance of a recurring event, and no others, the scheduling object
- resource contained in the Organizer's calendar collection will
- contain an overridden instance in the form of a separate calendar
- component. That separate calendar component will include the
- "ATTENDEE" property referencing the "one-off" Attendee. That
- Attendee will not be listed in any other calendar components in the
- scheduling object resource. The scheduling message that will be
- delivered to the Attendee will only contain information about this
- overridden instance.
-
- As another example, an Attendee could be excluded from one instance
- of a recurring event. In that case the scheduling object resource
- contained in the calendar collection of the Organizer will include an
- overridden instance with an "ATTENDEE" list that does not include the
- Attendee being excluded. The scheduling message that will be
- delivered to the Attendee will not specify the overridden instance
- but rather include an "EXDATE" property in the master recurring
- component defining the recurrence set.
-
-5.2.7. Forcing the Server to Send a Scheduling Message
-
- The iCalendar property parameter "SCHEDULE-FORCE-SEND" defined in
- Section 10.2 can be used by a Calendar User to force the server to
- send a scheduling message to an Attendee or the Organizer in a
- situation where the server would not normally send a scheduling
- message. For instance, an Organizer could use this property
- parameter to request an Attendee, that previously declined an
- invitation, to reconsider their participation status without being
- forced to modify the event.
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 28]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-6. Processing Incoming Scheduling Messages
-
- Scheduling operations can cause the delivery of a scheduling message
- into an Organizer's or Attendee's scheduling Inbox collection. In
- the former case the scheduling messages are replies from Attendees,
- in the latter case the scheduling messages are requests,
- cancellations or additions from the Organizer.
-
- The server will automatically process incoming scheduling messages
- and make them available in the scheduling Inbox collection as an
- indicator to the client that a scheduling operation has taken place.
-
- The server MUST take into account privileges on the scheduling Inbox
- collection, when processing incoming scheduling messages, to
- determine whether delivery of the scheduling message is allowed.
- Privileges on calendars containing any matching scheduling object
- resource are not considered in this case. Additionally, servers MUST
- take into account any scheduling Inbox collection preconditions (see
- Section 4.2) when delivering the scheduling message, and it MUST take
- into account the similar preconditions on any calendar collection
- which contains, or would contain, the corresponding scheduling object
- resource.
-
-6.1. Processing Attendee Replies
-
- For a scheduling message reply sent by an Attendee, the server first
- locates the corresponding scheduling object resource belonging to the
- Organizer.
-
- The server MUST then update the "PARTSTAT" iCalendar property
- parameter value of each "ATTENDEE" iCalendar property in the
- scheduling object resource to match the changes indicated in the
- reply (taking into account the fact that an Attendee could have
- created a new overridden iCalendar component to indicate different
- participation status on one or more recurrence instances of a
- recurring event).
-
- The server MUST also update or add the "SCHEDULE-STATUS" property
- parameter on each matching "ATTENDEE" iCalendar property and set its
- value to that of the "REQUEST-STATUS" property in the reply, or to
- "2.0" if "REQUEST-STATUS" is not present (also taking into account
- recurrence instances). If there are multiple "REQUEST-STATUS"
- properties in the reply, the "SCHEDULE-STATUS" property parameter
- value is set to a comma-separated list of status codes, one from each
- "REQUEST-STATUS" property.
-
- The server SHOULD send scheduling messages to all the other Attendees
- indicating the change in participation status of the Attendee
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 29]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- replying, subject to the recurrence requirements of Section 5.2.6.
-
- The scheduling message MUST only appear in the Organizer's scheduling
- Inbox collection once all automatic processing has been done.
-
-6.2. Processing Organizer Requests, Additions, and Cancellations
-
- For a scheduling message sent by an Organizer, the server first tries
- to locate a corresponding scheduling object resource belonging to the
- Attendee. If no matching scheduling object resource exists, the
- server treats the scheduling message as a new message, otherwise it
- is treated as an update.
-
- In the case of a new message, the server MUST process the scheduling
- message and create a new scheduling object resource in an appropriate
- calendar collection for the Attendee.
-
- In the case of an update, the server MUST process the scheduling
- message and update the matching scheduling object resource belonging
- to the Attendee to reflect the changes sent by the Organizer.
-
- In any case, the scheduling message MUST only appear in the
- Attendee's scheduling Inbox collection once all automatic processing
- has been done.
-
-6.3. Default Calendar Collection
-
- The server is REQUIRED to process scheduling messages that specify a
- request for a new calendar component received for an Attendee by
- creating a new scheduling object resource in a calendar collection
- belonging to the Attendee. A Calendar User who can participate as an
- Attendee in a scheduling operation MUST have at least one valid
- calendar collection available. If there is no valid calendar
- collection, then the server MUST reject the attempt to deliver the
- scheduling message to the Attendee.
-
- Servers MAY provide support for a default calendar collection, that
- is, the calendar collection in which new scheduling object resources
- will be created on reception of scheduling messages that specify a
- request for a new calendar component. The CALDAV:schedule-default-
- calendar-URL WebDAV property, which MAY be defined on the scheduling
- Inbox collection of a Calendar User, specifies if this Calendar User
- has a default calendar collection. See Section 12.2.
-
- Servers MUST create new scheduling object resources in the default
- calendar collection, if the CALDAV:schedule-default-calendar-URL
- WebDAV property is set.
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 30]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Servers MAY allow clients to change the default calendar collection
- by changing the value of the CALDAV:schedule-default-calendar-URL
- WebDAV property on the scheduling Inbox collection. However, they
- MUST ensure that any new value stored for that property refers to a
- valid calendar collection belonging to the owner of the scheduling
- inbox collection.
-
- Servers MUST reject any attempt to delete the default calendar
- collection.
-
-6.3.1. Additional Method Preconditions
-
- This specification defines additional method preconditions (see
- Section 16 of WebDAV [RFC4918]) to provide machine-parsable
- information in error responses.
-
-6.3.1.1. CALDAV:default-calendar-delete-allowed Precondition
-
- Name: default-calendar-delete-allowed
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: DELETE
-
- Use with: 403 Forbidden
-
- Purpose: (precondition) -- The client attempted to delete the
- calendar collection currently referenced by the CALDAV:schedule-
- default-calendar-URL property, or attempted to remove the CALDAV:
- schedule-default-calendar-URL property on the scheduling Inbox
- collection on a server that doesn't allow such operations.
-
- Definition:
-
- <!ELEMENT default-calendar-delete-allowed EMPTY>
-
- Example:
-
- <C:default-calendar-delete-allowed
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-6.3.1.2. CALDAV:valid-schedule-default-calendar-URL Precondition
-
- Name: valid-schedule-default-calendar-URL
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 31]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: PROPPATCH
-
- Use with: 403 Forbidden
-
- Purpose: (precondition) -- The client attempted to set the CALDAV:
- schedule-default-calendar-URL property to a DAV:href element that
- doesn't reference a valid calendar collection. Note: Servers that
- don't allow clients to change the CALDAV:schedule-default-
- calendar-URL property would simply return the DAV:cannot-modify-
- protected-property precondition defined in Section 16 of WebDAV
- [RFC4918].
-
- Definition:
-
- <!ELEMENT valid-schedule-default-calendar-URL EMPTY>
-
- Example:
-
- <C:valid-schedule-default-calendar-URL
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-6.4. Scheduling Messages as Notifications
-
- Once the processing of an incoming scheduling message is completed by
- the server, the message is made available as a child resource in the
- scheduling Inbox collection of the Calendar User that received the
- message, to serve as a notification that a change has been made to
- the corresponding scheduling object resource. Scheduling messages
- are typically removed from the scheduling Inbox collection by the
- client once the calendar user has acknowledged the change.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 32]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-7. Request for Busy Time Information
-
- The POST method is used to request busy time information of one or
- more Calendar Users by targeting a freebusy request at the scheduling
- Outbox collection of the Calendar User requesting the information
- (the Organizer). The request body of a POST method MUST contain a
- "VFREEBUSY" calendar component with the "METHOD" iCalendar property
- set to the value "REQUEST" as specified in Section 3.3.2 of iTIP
- [RFC5546]. The resource identified by the Request-URI MUST be a
- resource collection of type CALDAV:schedule-outbox (Section 4.1).
- The "ORGANIZER" property in the "VFREEBUSY" component MUST match that
- of the Calendar User who "owns" the Outbox collection.
-
-7.1. Status Codes
-
- The following are examples of response codes one would expect to be
- used for this method. Note, however, that unless explicitly
- prohibited any 2/3/4/5xx series response code may be used in a
- response.
-
- 200 (OK) - The command succeeded.
-
- 204 (No Content) - The command succeeded.
-
- 400 (Bad Request) - The client has provided an invalid scheduling
- message.
-
- 403 (Forbidden) - The client cannot submit a scheduling message to
- the specified Request-URI.
-
- 404 (Not Found) - The URL in the Request-URI was not present.
-
- 423 (Locked) - The specified resource is locked and the client
- either is not a lock owner or the lock type requires a lock token
- to be submitted and the client did not submit it.
-
-7.2. Additional Method Preconditions
-
- This specification defines additional method preconditions for the
- POST method. Preconditions defined in WebDAV ACL [RFC3744] and
- CalDAV [RFC4791] that applies to the POST method are also listed here
- for completeness.
-
-7.2.1. DAV:need-privileges Precondition
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 33]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Name: need-privileges
-
- Namespace: DAV:
-
- Apply to: POST
-
- Use with: 403 Forbidden
-
- Purpose: (precondition) -- The currently authenticated user MUST be
- granted the CALDAV:schedule-send or CALDAV:schedule-send-freebusy
- privilege on the scheduling Outbox collection being targeted by
- the request.
-
- Definition:
-
- <!ELEMENT DAV:need-privileges (DAV:resource)* >
- <!ELEMENT DAV:resource (DAV:href, DAV:privilege) >
-
- Example:
-
- <D:need-privileges xmlns:D="DAV:"
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
- <D:resource>
- <D:href>/home/bernard/calendars/outbox/</D:href>
- <D:privilege><C:schedule-send-freebusy/></D:privilege>
- </D:resource>
- </D:need-privileges>
-
-7.2.2. CALDAV:supported-collection Precondition
-
- Name: supported-collection
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: POST
-
- Use with: 400 Bad Request
-
- Purpose: (precondition) -- The Request-URI MUST identify the
- location of a scheduling Outbox collection.
-
- Definition:
-
- <!ELEMENT supported-collection EMPTY >
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 34]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Example:
-
- <C:supported-collection xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-7.2.3. CALDAV:supported-calendar-data Precondition
-
- Name: supported-calendar-data
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: POST
-
- Use with: 400 Bad Request
-
- Purpose: (precondition) -- The resource body submitted in the POST
- request MUST be a supported media type (e.g., text/calendar).
-
- Definition:
-
- <!ELEMENT supported-calendar-data EMPTY >
-
- Example:
-
- <C:supported-calendar-data
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-7.2.4. CALDAV:valid-calendar-data Precondition
-
- Name: valid-calendar-data
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: POST
-
- Use with: 400 Bad Request
-
- Purpose: (precondition) -- The resource submitted in the POST
- request MUST be valid data for the media type being specified
- (e.g., a valid iCalendar object).
-
- Definition:
-
- <!ELEMENT valid-calendar-data EMPTY>
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 35]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Example:
-
- <C:valid-calendar-data xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-7.2.5. CALDAV:valid-scheduling-message Precondition
-
- Name: valid-scheduling-message
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: POST
-
- Use with: 400 Bad Request
-
- Purpose: (precondition) -- The resource submitted in the POST
- request MUST obey all restrictions specified for the POST request
- (e.g., the scheduling message follow the restrictions of iTIP).
-
- Definition:
-
- <!ELEMENT valid-scheduling-message EMPTY >
-
- Example:
-
- <C:valid-scheduling-message
- xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-7.2.6. CALDAV:organizer-allowed Precondition
-
- Name: organizer-allowed
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: POST
-
- Use with: 409 Conflict
-
- Purpose: (precondition) -- The Calendar User identified by the
- "ORGANIZER" property in the POST request's scheduling message MUST
- be the Calendar User (or one of the Calendar Users) associated
- with the scheduling Outbox collection being targeted by the
- request;
-
- Definition:
-
- <!ELEMENT organizer-allowed EMPTY >
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 36]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Example:
-
- <C:organizer-allowed xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-7.2.7. CALDAV:max-resource-size Precondition
-
- Name: max-resource-size
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Apply to: POST
-
- Use with: 403 Forbidden
-
- Purpose: (precondition) -- The resource submitted in the POST
- request MUST have a size in octets less than or equal to the value
- of the CALDAV:max-resource-size property (defined in Section 5.2.5
- of [RFC4791]) specified on the scheduling Outbox collection
- targeted by the request.
-
- Definition:
-
- <!ELEMENT max-resource-size EMPTY >
-
- Example:
-
- <C:max-resource-size xmlns:C="urn:ietf:params:xml:ns:caldav"/>
-
-7.3. Response to a POST request
-
- A POST request may deliver a scheduling message to one or more
- Calendar Users. Thus the response needs to contain separate status
- information for each recipient. This specification defines a new XML
- response body to convey multiple recipient status.
-
- A response to a POST method that indicates status for one or more
- recipients MUST be an XML document with a CALDAV:schedule-response
- XML element as its root element. This MUST contain one or more
- CALDAV:response elements for each recipient, with each of those
- containing elements that indicate which recipient they correspond to,
- the scheduling status for that recipient, any error codes and an
- optional description. See Section 14.1 for the detail on the child
- elements.
-
- In the case of a freebusy request, the CALDAV:response elements can
- also contain CALDAV:calendar-data elements which contain freebusy
- information (e.g., an iCalendar VFREEBUSY component) indicating the
- busy state of the corresponding recipient, assuming that the freebusy
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 37]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- request for that recipient succeeded. See Appendix B.5 for an
- example freebusy request and response.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 38]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-8. Avoiding Conflicts when Updating Scheduling Object Resources
-
- Because replies from Attendees and updates from Organizers are
- automatically processed by the server, clients might be in a
- situation where their copy of a calendar resource is different from
- the one currently on the server. When an Attendee or Organizer makes
- a change to the client's copy of the calendar resource, if the client
- writes the data to the server it could overwrite the changes already
- made there. Typically, clients use the ETag value and If-Match
- request headers to avoid the "lost update problem".
-
- Calendar user agents can also use ETag and If-Match to avoid this
- problem. However, when doing so the client will likely have to
- resolve the differences between the new resource and the original
- one, and the changes made by the Attendee or Organizer in the client.
- This can be a complicated comparison particularly when recurring
- components are present.
-
- Additionally, the data on the server may change frequently as
- Attendees change their participation status, triggering updates to
- the Organizer and consequently other Attendees' copies of the
- scheduling object resource. If the ETag/If-Match behavior were used,
- clients would be forced to reconcile their cached copy of a
- scheduling object resource with the updated one on the server in
- order to attempt to write the user's changes back. This could lead
- to a race condition that can effectively result in a temporary denial
- of service when, for example, there is an event with a large Attendee
- list. A "storm" of updates will occur if Attendees all start
- responding at the same time, and this would prevent Attendees and the
- Organizer from being able to update their own copies of the
- scheduling object resource as the server copy is changing frequently.
-
- What would be preferable is having the server determine the best way
- to merge changes made on the server with changes being made by the
- client. For example, if an Attendee changes their participation
- status and triggers an update to the Organizer's copy of the event,
- but the Organizer also updates their cached copy of the event and
- attempts to write it back, rather than failing on a conditional If-
- Match when the Organizer writes their data, the server would instead
- take the changes made by the Organizer and apply the Attendee changes
- and store the result. Thus a form of "weak" ETag matching behavior
- is needed such that scheduling changes made automatically on the
- server do not invalidate the tag, so that when clients store data
- conditionally based on the tag value, the server knows it can apply
- the merge behavior.
-
- In order to do that, this specification introduces a new WebDAV
- resource property CALDAV:schedule-tag with a corresponding response
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 39]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- header "Schedule-Tag", and a new "If-Schedule-Tag-Match" request
- header to allow client changes to be appropriately merged with server
- changes in the case where the changes on the server were the result
- of an "inconsequential" scheduling message update. An
- "inconsequential" scheduling message is one which simply updates the
- status information of Attendees due to a reply from an Attendee.
-
- Servers MUST support requests targeted at scheduling object resources
- using the "If-Schedule-Tag-Match" request header. Consequently, the
- server MUST support the "Schedule-Tag" response header and CALDAV:
- schedule-tag property for scheduling object resources. Servers MUST
- automatically resolve conflicts with "inconsequential" changes done
- to scheduling object resources when the "If-Schedule-Tag-Match"
- request header is specified.
-
- The If-Schedule-Tag-Match request header applies only to the Request-
- URI, and not to the Destination of a COPY or MOVE in the same way as
- the If-Match request header.
-
- Clients SHOULD use the If-Schedule-Tag-Match header on requests that
- update scheduling object resources.
-
- A response to any successful GET or PUT request targeting a
- scheduling object resource MUST include a Schedule-Tag response
- header with the value set to the same value as the CALDAV:schedule-
- tag WebDAV property of the resource.
-
- A response to any successful COPY or MOVE request that specifies a
- Destination request header targeting a scheduling object resource
- MUST include a Schedule-Tag response header with the value set to the
- same value as the CALDAV:schedule-tag WebDAV property of the resource
- identified in the Request-URI.
-
- The Schedule-Tag feature is designed to be used to address the
- problem of "inconsequential" changes on the server only. Normal ETag
- operations are used in all other cases, e.g., for synchronization.
-
- The value of the CALDAV:schedule-tag property changes according to
- these rules:
-
- o For an Organizer's copy of a scheduling object resource:
-
- 1. The server MUST NOT change the CALDAV:schedule-tag property
- value when the scheduling object resource is updated as the
- result of automatically processing a scheduling message reply
- from an Attendee. For instance, when an Attendee replies to
- the Organizer, the CALDAV:schedule-tag property is unchanged
- after the Organizer's scheduling object resource has been
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 40]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- automatically updated by the server with the Attendee's new
- participation status.
-
- 2. The server MUST change CALDAV:schedule-tag property value when
- the scheduling object resource is changed directly via an HTTP
- request (e.g., PUT, COPY or MOVE).
-
- o For an Attendee's copy of a scheduling object resource:
-
- 1. The server MUST change the CALDAV:schedule-tag property value
- when the scheduling object resource is changed as the result
- of processing a scheduling message update from an Organizer
- that contains changes other than just the participation status
- of Attendees.
-
- 2. The server MUST NOT change the CALDAV:schedule-tag property
- value when the scheduling object resource is changed as the
- result of processing a scheduling message update from an
- Organizer that only specify changes in the participation
- status of Attendees. For instance, when Attendee "A" replies
- to Organizer "O", and Attendee "B" receives a scheduling
- message update from Organizer "O" with the new participation
- status of Attendee "A", the CALDAV:schedule-tag property of
- Attendee "B"s scheduling object resource MUST NOT be changed.
-
- 3. The server MUST change the CALDAV:schedule-tag property value
- when the scheduling object resource is changed directly via an
- HTTP request (e.g., PUT, COPY or MOVE).
-
-8.1. PUT
-
- Clients can use the If-Schedule-Tag-Match request header to do a PUT
- request that ensures that "inconsequential" changes on the server do
- not result in a precondition error. The value of the request header
- is set to the last Schedule-Tag value received for the resource being
- modified. If the value of the If-Schedule-Tag-Match header matches
- the current value of the CALDAV:schedule-tag property the server MUST
- take any "ATTENDEE" property changes for all Attendees other than the
- owner of the scheduling object resource and apply those to the new
- resource being stored. Otherwise, the server MUST fail the request
- with a 412 Precondition Failed status code.
-
-8.2. DELETE
-
- Clients can use the If-Schedule-Tag-Match request header to do a
- DELETE request that ensures that "inconsequential" changes on the
- server do not result in a precondition error. The value of the
- request header is set to the last Schedule-Tag value received for the
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 41]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- resource being deleted. If the value of the If-Schedule-Tag-Match
- header matches the current value of the CALDAV:schedule-tag property
- the server performs the normal DELETE request processing for the
- resource. Otherwise, the server MUST fail the request with a 412
- Precondition Failed status code.
-
-8.3. COPY or MOVE
-
- Clients can use the If-Schedule-Tag-Match request header to do COPY
- or MOVE requests that ensures that "inconsequential" changes on the
- server do not result in a precondition error. The value of the
- request header is set to the last Schedule-Tag value received for the
- resource being copied or moved. If the value of the If-Schedule-Tag-
- Match header matches the current value of the CALDAV:schedule-tag
- property the server performs the normal COPY or MOVE request
- processing for the resource. Otherwise, the server MUST fail the
- request with a 412 Precondition Failed status code.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 42]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-9. Other Scheduling Considerations
-
-9.1. Attendee Participation Status
-
- This section specifies additional requirements on the handling of the
- "PARTSTAT" property parameter when the "SCHEDULE-AGENT" property
- parameter on the corresponding "ATTENDEE" property is set to the
- value "SERVER" or is not present.
-
- Clients SHOULD, and servers MUST reset the "PARTSTAT" property
- parameter value of all "ATTENDEE" properties, except the one that
- corresponds to the Organizer, to "NEEDS-ACTION" when the Organizer
- reschedules an event.
-
- A reschedule of an event occurs when any "DTSTART", "DTEND",
- "DURATION", "DUE", "RRULE", "RDATE", or "EXDATE" property changes in
- a calendar component such that existing recurrence instances are
- impacted by the changes, as shown in the table below.
-
- +----------+--------------------------------------------------------+
- | Property | Description |
- +----------+--------------------------------------------------------+
- | DTSTART | Any change to these properties MUST result in |
- | DTEND | "PARTSTAT" being set to "NEEDS-ACTION" |
- | DURATION | |
- | DUE | |
- | | |
- | | |
- | | |
- | RRULE | A change to or addition of this property that results |
- | | in the addition of new recurring instances or a change |
- | | in time for existing recurring instances MUST result |
- | | in "PARTSTAT" being reset to "NEEDS-ACTION" on each |
- | | affected component. |
- | | |
- | | |
- | | |
- | RDATE | A change to or addition of this property that results |
- | | in the addition of new recurring instances or a change |
- | | in time for existing recurring instances MUST result |
- | | in "PARTSTAT" being reset to "NEEDS-ACTION" on each |
- | | affected component. |
- | | |
- | | |
- | | |
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 43]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- | EXDATE | A change to or removal of this property that results |
- | | in the re-instatement of recurring instances MUST |
- | | result in "PARTSTAT" being reset to "NEEDS-ACTION" on |
- | | each affected component. |
- +----------+--------------------------------------------------------+
-
- The server MAY allow the Organizer's client to change an Attendee's
- "PARTSTAT" property parameter value to "NEEDS-ACTION" at any other
- time (e.g., when the "LOCATION" property value changes, an Organizer
- might wish to re-invite Attendees who may be impacted by the change).
-
-9.2. Schedule Status Values
-
- When scheduling with an Attendee there are two types of status
- information that can be returned during the transaction. The first
- status information is a "delivery" status that indicates whether the
- scheduling message from the Organizer to the Attendee was delivered
- or not, or what the current status of delivery is. The second status
- information is a "reply" status corresponding to the Attendee's own
- "REQUEST-STATUS" information from the scheduling message reply that
- is sent back to the Organizer.
-
- Similarly, when an Attendee sends a reply back to the Organizer,
- there will be "delivery" status information for the scheduling
- message sent to the Organizer. However, there is no "REQUEST-STATUS"
- sent back by the Organizer, so there is no equivalent of the "reply"
- status as per scheduling messages to Attendees.
-
- The "delivery" status information on an "ORGANIZER" or "ATTENDEE"
- iCalendar property is conveyed in the "SCHEDULE-STATUS" property
- parameter value (Section 10.3). The status code value for "delivery"
- status can be one of the following:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 44]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- +----------+--------------------------------------------------------+
- | Delivery | Description |
- | Status | |
- | Code | |
- +----------+--------------------------------------------------------+
- | 1.0 | The scheduling message is pending. i.e. the server is |
- | | still in the process of sending the message. The |
- | | status code value can be expected to change once the |
- | | server has completed its sending and delivery |
- | | attempts. |
- | | |
- | | |
- | | |
- | 1.1 | The scheduling message has been successfully sent. |
- | | However, the server does not have explicit information |
- | | about whether the scheduling message was successfully |
- | | delivered to the recipient. This state can occur with |
- | | "store and forward" style scheduling protocols such as |
- | | iMIP [I-D.ietf-calsify-rfc2447bis] (iTIP using email). |
- | | |
- | | |
- | | |
- | 1.2 | The scheduling message has been successfully |
- | | delivered. |
- | | |
- | | |
- | | |
- | 3.7 | The scheduling message was not delivered because the |
- | | server did not recognize the calendar user address as |
- | | a valid calendar user. Note that this code applies to |
- | | both Organizer and Attendee calendar user addresses. |
- | | |
- | | |
- | | |
- | 3.8 | The scheduling message was not delivered due to |
- | | insufficient privileges. Note that this code applies |
- | | to both privileges granted by both the Organizer and |
- | | Attendee calendar users. |
- | | |
- | | |
- | | |
- | 5.1 | The scheduling message was not delivered because the |
- | | server could not complete delivery of the message. |
- | | This is likely due to a temporary failure, and the |
- | | originator can try to send the message again at a |
- | | later time. |
- | | |
- | | |
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 45]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- | 5.2 | The scheduling message was not delivered because the |
- | | server was not able to find a suitable way to deliver |
- | | the message. This is likely a permanent failure, and |
- | | the originator should not try to send the message |
- | | again, at least without verifying/correcting the |
- | | calendar user address of the recipient. |
- | | |
- | | |
- | | |
- | 5.3 | The scheduling message was not delivered and was |
- | | rejected because scheduling with that recipient is not |
- | | allowed. This is likely a permanent failure, and the |
- | | originator should not try to send the message again. |
- +----------+--------------------------------------------------------+
-
- The status code for "reply" status can be any of the valid iTIP
- [RFC5546] "REQUEST-STATUS" values.
-
- The 1.xx "REQUEST-STATUS" codes are new. This specification modifies
- item (2) of Section 3.6 of [RFC5546] by adding the following
- restriction:
-
- For a 1.xx code, all components MUST have exactly the same code.
-
- Definition of the new 1.xx codes is as follows:
-
-9.2.1. Status Code 1.0
-
- Status Code: 1.0
-
- Status Description: Pending.
-
- Status Exception Data: None.
-
- Description: Delivery of the iTIP message is pending.
-
-9.2.2. Status Code 1.1
-
- Status Code: 1.1
-
- Status Description: Sent.
-
- Status Exception Data: None.
-
- Description: The iTIP message has been sent, though no information
- about successful delivery is known.
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 46]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-9.2.3. Status Code 1.2
-
- Status Code: 1.2
-
- Status Description: Delivered.
-
- Status Exception Data: None.
-
- Description: The iTIP message has been sent and delivered.
-
-9.3. Organizer is an Attendee
-
- The Organizer of a scheduled event may also be an Attendee of that
- event. In such cases the server MUST NOT send a scheduling message
- to the Attendee that matches the Organizer.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 47]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-10. Additional iCalendar Property Parameters
-
- This specification defines additional iCalendar property parameters
- to support the CalDAV scheduling extensions.
-
-10.1. Schedule Agent Parameter
-
- Parameter Name: SCHEDULE-AGENT
-
- Purpose: To specify the agent expected to deliver scheduling
- messages to the corresponding Organizer or Attendee.
-
- Format Definition: This property parameter is defined by the
- following notation:
-
- scheduleagentparam = "SCHEDULE-AGENT" "="
- ("SERVER" ; The server handles scheduling
- / "CLIENT" ; The client handles scheduling
- / "NONE" ; No automatic scheduling
- / x-name ; Experimental type
- / iana-token) ; Other IANA registered type
- ;
- ; Default is SERVER
-
- Description: This property parameter MAY be specified on "ORGANIZER"
- or "ATTENDEE" iCalendar properties. In the absence of this
- parameter, the value "SERVER" MUST be used for the default
- behavior. The value determines whether or not an automatic
- scheduling transaction on a server will cause a scheduling message
- to be sent to the corresponding Calendar User identified by the
- "ORGANIZER" or "ATTENDEE" property value. When the value "SERVER"
- is specified, or the parameter is absent, then it is the server's
- responsibility to send a scheduling message as part of an
- automatic scheduling transaction. When the value "CLIENT" is
- specified, that indicates that the client is handling scheduling
- messages with the Calendar User itself. When "NONE" is specified,
- no scheduling messages are being sent to the Calendar User.
-
- Servers MUST NOT include this parameter in any scheduling messages
- sent as the result of an automatic scheduling transaction.
-
- Clients MUST NOT include this parameter in any scheduling messages
- that they themselves send.
-
- Servers and clients MUST treat x-name and iana-token values they
- don't recognize the same way as they would the "NONE" value.
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 48]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Example:
-
- ATTENDEE;SCHEDULE-AGENT=SERVER:mailto:bernard at example.com
-
- ATTENDEE;SCHEDULE-AGENT=NONE:mailto:cyrus at example.com
-
-10.2. Schedule Force Send Parameter
-
- Parameter Name: SCHEDULE-FORCE-SEND
-
- Purpose: To force a scheduling message to be sent to the Calendar
- User specified by the property.
-
- Format Definition: This property parameter is defined by the
- following notation:
-
- scheduleforcesendparam = "SCHEDULE-FORCE-SEND" "="
- ("REQUEST" ; Force a "REQUEST"
- / "REPLY" ; Force a "REPLY"
- / iana-token) ; IANA registered method
-
- Description: This property parameter MAY be specified on "ATTENDEE"
- and "ORGANIZER" properties on which the "SCHEDULE-AGENT" property
- parameter is set to the value "SERVER" or is not specified. This
- property parameter is used to force a server to send a scheduling
- message to a specific Calendar User in situations where the server
- would not send a scheduling message otherwise (e.g., when no
- change that warrants the delivery of a new scheduling message was
- performed on the scheduling object resource). An Organizer MAY
- specify this parameter on an "ATTENDEE" property with the value
- "REQUEST" to force a "REQUEST" scheduling message to be sent to
- this Attendee. An Attendee MAY specify this parameter on the
- "ORGANIZER" with the value "REPLY" to force a "REPLY" scheduling
- message to be sent to the Organizer.
-
- Servers MUST NOT preserve this property parameter in scheduling
- object resources, nor include it in any scheduling messages sent
- as the result of an automatic scheduling transaction.
-
- Clients MUST NOT include this parameter in any scheduling messages
- that they themselves send.
-
- Servers MUST set the "SCHEDULE-STATUS" parameter of the "ATTENDEE"
- or "ORGANIZER" to 2.3 (i.e., "Success, invalid property parameter
- ignored", see Section 3.6 of [RFC5546]) when the "SCHEDULE-FORCE-
- SEND" parameter is set to a x-name or iana-token value they don't
- recognize.
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 49]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Example:
-
- ATTENDEE;SCHEDULE-FORCE-SEND=REQUEST:mailto:bernard at example.com
-
- ORGANIZER;SCHEDULE-FORCE-SEND=REPLY:mailto:bernard at example.com
-
-10.3. Schedule Status Parameter
-
- Parameter Name: SCHEDULE-STATUS
-
- Purpose: To specify the status codes returned from processing of the
- most recent scheduling message sent to the corresponding Attendee,
- or received from the corresponding Organizer.
-
- Format Definition: This property parameter is defined by the
- following notation:
-
- schedulestatusparam = "SCHEDULE-STATUS" "="
- ( statcode
- / DQUOTE statcode *("," statcode) DQUOTE)
- ; "statcode" is defined in Section 3.8.8.3 of
- ; [RFC5545]. Value is a single
- ; "statcode" or a comma-separated list of "statcode" values.
-
- Description: This property parameter MAY be specified on the
- "ATTENDEE" and "ORGANIZER" properties.
-
- Servers MUST add this property parameter to any "ATTENDEE"
- properties corresponding to Calendar Users who were sent a
- scheduling message via an automatic scheduling transaction.
- Clients SHOULD NOT change or remove this parameter if it was
- provided by the server. In the case where the client is handling
- the scheduling, the client MAY add, change or remove this
- parameter to indicate the last scheduling message status it
- received.
-
- Servers MUST add this parameter to any "ORGANIZER" properties
- corresponding to Calendar Users who were sent a scheduling message
- reply by an Attendee via an automatic scheduling transaction.
- Clients SHOULD NOT change or remove this parameter if it was
- provided by the server. In the case where the client is handling
- the scheduling the client MAY add, change or remove this parameter
- to indicate the last scheduling message status it received.
-
- Servers MUST NOT include this parameter in any scheduling messages
- sent as the result of an automatic scheduling transaction.
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 50]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Clients MUST NOT include this parameter in any scheduling messages
- that they themselves send.
-
- Suitable values for this property parameter are described in
- Section 9.2.
-
- Example:
-
- ATTENDEE;SCHEDULE-STATUS="2.0":mailto:bernard at example.com
-
- ATTENDEE;SCHEDULE-STATUS="2.0,2.4":mailto:cyrus at example.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 51]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-11. Additional Message Header Fields
-
- This specification defines additional HTTP request and response
- headers for use with CalDAV.
-
-11.1. Schedule-Reply Request Header
-
-
- Schedule-Reply = "Schedule-Reply" ":" ("T" | "F")
-
- Example:
-
- Schedule-Reply: F
-
- When an Attendee removes a scheduling object resource, and the
- Schedule-Reply header is not present, or present and set to the value
- "T", the server MUST send an appropriate reply scheduling message
- with the Attendee's "PARTSTAT" iCalendar property parameter value set
- to "DECLINED" as part of its normal automatic scheduling transaction
- processing.
-
- When the Schedule-Reply header is set to the value "F", the server
- MUST NOT send a scheduling message as part of its normal automatic
- scheduling transaction processing.
-
- The Schedule-Reply request header is used by a client to indicate to
- a server whether or not an automatic scheduling transaction should
- occur when an Attendee deletes a scheduling object resource. In
- particular it controls whether a reply scheduling message is sent to
- the Organizer as a result of the removal. There are situations in
- which unsolicited scheduling messages need to be silently removed (or
- ignored) for security or privacy reasons. This request header allows
- the scheduling object resource to be removed if such a need arises.
-
- All scheduling object resources MUST support the Schedule-Reply
- request header.
-
-11.2. Schedule-Tag Response Header
-
- The Schedule-Tag response header provides the current value of the
- CALDAV:schedule-tag property value. The behavior of this response
- header is described in Section 8.
-
- All scheduling object resources MUST support the Schedule-Tag header.
-
- Schedule-Tag = "Schedule-Tag" ":" opaque-tag
- ; "opaque-tag" is defined in Section 3.11 of [RFC2616]
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 52]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Example:
-
- Schedule-Tag: "12ab34-cd56ef"
-
-11.3. If-Schedule-Tag-Match Request Header
-
- The If-Schedule-Tag-Match request header field is used with a method
- to make it conditional. Clients can set this header to the value
- returned in the Schedule-Tag response header, or the CALDAV:schedule-
- tag property, of a scheduling object resource previously retrieved
- from the server to avoid overwriting "consequential" changes to the
- scheduling object resource.
-
- All scheduling object resources MUST support the If-Schedule-Tag-
- Match header.
-
- If-Schedule-Tag-Match = "If-Schedule-Tag-Match" ":" opaque-tag
- ; "opaque-tag" is defined in Section 3.11 of [RFC2616]
-
- Example:
-
- If-Schedule-Tag-Match: "12ab34-cd56ef"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 53]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-12. Additional WebDAV Properties
-
- The CalDAV scheduling extension defines the following new WebDAV
- properties for use with CalDAV.
-
-12.1. CALDAV:schedule-calendar-transp Property
-
- Name: schedule-calendar-transp
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Determines whether the calendar object resources in a
- calendar collection will affect the owner's freebusy.
-
- Protected: This property MAY be protected and SHOULD NOT be returned
- by a PROPFIND allprop request (as defined in Section 14.2 of
- [RFC4918]).
-
- COPY/MOVE behavior: This property value SHOULD be kept during a MOVE
- operation, and SHOULD be copied and preserved in a COPY.
-
- Description: This property SHOULD be defined on all calendar
- collections. If present, it contains one of two XML elements that
- indicate whether the calendar object resources in the calendar
- collection should contribute to the owner's freebusy or not. When
- the CALDAV:opaque element is used, all calendar object resources
- in the corresponding calendar collection MUST contribute to
- freebusy, assuming access privileges and other iCalendar
- properties allow it to. When the CALDAV:transparent XML element
- is used, the calendar object resources in the corresponding
- calendar collection MUST NOT contribute to freebusy.
-
- If this property is not present on a calendar collection, then the
- default value CALDAV:opaque MUST be assumed.
-
- Definition:
-
- <!ELEMENT schedule-calendar-transp (opaque | transparent) >
-
- <!ELEMENT opaque EMPTY>
- <!-- Affect busy time searches -->
-
- <!ELEMENT transparent EMPTY>
- <!-- Invisible to busy time searches -->
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 54]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Example:
-
- <C:schedule-calendar-transp
- xmlns:C="urn:ietf:params:xml:ns:caldav">
- <C:opaque/>
- </C:schedule-calendar-transp>
-
-12.2. CALDAV:schedule-default-calendar-URL Property
-
- Name: schedule-default-calendar-URL
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Specifies a default calendar for an Attendee where new
- scheduling object resources are created.
-
- Protected: This property MAY be protected in the case where a server
- does not support changing the default calendar, or does not
- support a default calendar.
-
- COPY/MOVE behavior: This property is only defined on a scheduling
- Inbox collection which cannot be moved or copied.
-
- Description: This property MAY be defined on a scheduling Inbox
- collection. If present, it contains zero or one DAV:href XML
- elements. When a DAV:href element is present, its value indicates
- a URL to a calendar collection that is used as the default
- calendar. When no DAV:href element is present, it indicates that
- there is no default calendar. In the absence of this property
- there is no default calendar. When there is no default calendar
- the server is free to choose the calendar in which a new
- scheduling object resource is created. See Section 6.3.
-
- Definition:
-
- <!ELEMENT schedule-default-calendar-URL (DAV:href?) >
-
- Example:
-
- <C:schedule-default-calendar-URL xmlns:D="DAV:"
- xmlns:C="urn:ietf:params:xml:ns:caldav">
- <D:href>/home/cyrus/calendars/work/</D:href>
- </C:schedule-default-calendar-URL>
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 55]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-12.3. CALDAV:schedule-tag Property
-
- Name: schedule-tag
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Indicates whether a scheduling object resource has had a
- "consequential" change made to it.
-
- Value: opaque-tag (defined in Section 3.11 of [RFC2616])
-
- Protected: This property MUST be protected as only the server can
- update the value.
-
- COPY/MOVE behavior: This property is only defined on scheduling
- object resources. It MUST be preserved when a scheduling object
- resource is copied or moved and the resulting resource is also a
- scheduling object resource. If the source resource is not a
- scheduling object resource but the destination resource is, this
- property MUST be added to the destination resource.
-
- Description: The CALDAV:schedule-tag property MUST be defined on all
- scheduling object resources. This property is described in
- Section 8.
-
- Definition:
-
- <!ELEMENT schedule-tag (#PCDATA) >
-
- Example:
-
- <C:schedule-tag xmlns:C="urn:ietf:params:xml:ns:caldav"
- >"12345-67890"</C:schedule-tag>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 56]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-13. Scheduling Access Control
-
-13.1. Scheduling Privileges
-
- CalDAV servers MUST support and adhere to the requirements of WebDAV
- ACL [RFC3744]. Furthermore, CalDAV servers that advertise support
- for the "calendar-auto-schedule" feature MUST also support the
- scheduling privileges defined in this section.
-
- All the scheduling privileges MUST be non-abstract and MUST appear in
- the DAV:supported-privilege-set property of scheduling Outbox and
- Inbox collections on which they are defined.
-
- The tables specified in Appendix A clarify which scheduling methods
- (e.g., "REQUEST", "REPLY", etc.) are controlled by each scheduling
- privilege defined in this section.
-
-13.1.1. Privileges on Scheduling Inbox Collections
-
- This section defines new WebDAV ACL privileges that are for use on
- scheduling Inbox collections. These privileges determine whether
- delivery of scheduling messages from a calendar user is allowed by
- the calendar user who "owns" the scheduling Inbox collection. This
- allows calendar users to choose which other calendar users can
- schedule with them.
-
- Note that when a scheduling message is delivered to a calendar user,
- in addition to a scheduling object resource being created in the
- calendar user's scheduling Inbox collection, a new scheduling object
- resource might be created or an existing one updated in a calendar
- belonging to the calendar user. In that case, the ability to create
- or update the scheduling object resource in the calendar is
- controlled by the privileges assigned to the scheduling Inbox
- collection.
-
- The privileges defined in this section are ignored if applied to a
- resource other than a scheduling Inbox collection.
-
-13.1.1.1. CALDAV:schedule-deliver Privilege
-
- CALDAV:schedule-deliver is an aggregate privilege that contains all
- the scheduling privileges that control the processing and delivery of
- incoming scheduling messages, that is, CALDAV:schedule-deliver-invite
- and CALDAV:schedule-deliver-reply, as well as freebusy requests
- targeted at the owner of the scheduling Inbox collection, that is,
- CALDAV:schedule-query-freebusy.
-
- <!ELEMENT schedule-deliver EMPTY >
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 57]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-13.1.1.2. CALDAV:schedule-deliver-invite Privilege
-
- The CALDAV:schedule-deliver-invite privilege controls the processing
- and delivery of scheduling messages coming from an Organizer.
-
- <!ELEMENT schedule-deliver-invite EMPTY >
-
-13.1.1.3. CALDAV:schedule-deliver-reply Privilege
-
- The CALDAV:schedule-deliver-reply privilege controls the processing
- and delivery of scheduling messages coming from an Attendee.
-
- <!ELEMENT schedule-deliver-reply EMPTY >
-
-13.1.1.4. CALDAV:schedule-query-freebusy Privilege
-
- The CALDAV:schedule-query-freebusy privilege controls freebusy
- requests targeted at the owner of the scheduling Inbox collection.
-
- <!ELEMENT schedule-query-freebusy EMPTY >
-
-13.1.2. Privileges on Scheduling Outbox Collections
-
- This section defines new WebDAV ACL privileges that are defined for
- use on scheduling Outbox collections. These privileges determine
- which calendar users are allowed to send scheduling messages on
- behalf of the calendar user who "owns" the scheduling Outbox
- collection. This allows calendar users to choose other calendar
- users who can act on their behalf to send schedule messages to other
- calendar users (e.g. assistants working on behalf of their boss).
-
- The privileges defined in this section are ignored if applied to a
- resource other than a scheduling Outbox collection.
-
-13.1.2.1. CALDAV:schedule-send Privilege
-
- CALDAV:schedule-send is an aggregate privilege that contains all the
- scheduling privileges that control the use of methods that will cause
- scheduling messages to be delivered to other users, that is, CALDAV:
- schedule-send-invite and CALDAV:schedule-send-reply, as well as
- freebusy requests to be targeted at other users, that is, CALDAV:
- schedule-send-freebusy.
-
- <!ELEMENT schedule-send EMPTY >
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 58]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-13.1.2.2. CALDAV:schedule-send-invite Privilege
-
- The CALDAV:schedule-send-invite privilege controls the sending of
- scheduling messages by Organizers.
-
- Users granted the DAV:bind privilege on a calendar collection, or
- DAV:write privilege on scheduling object resources, will also need
- the CALDAV:schedule-send-invite privilege granted on the scheduling
- Outbox collection of the owner of the calendar collection or
- scheduling object resource in order to be allowed to create, modify
- or delete scheduling object resources in a way that will trigger the
- CalDAV server to deliver organizer scheduling messages to other
- calendar users.
-
- <!ELEMENT schedule-send-invite EMPTY >
-
-13.1.2.3. CALDAV:schedule-send-reply Privilege
-
- The CALDAV:schedule-send-reply privilege controls the sending of
- scheduling messages by Attendees.
-
- Users granted the DAV:bind privilege on a calendar collection, or
- DAV:write privilege on scheduling object resources, will also need
- the CALDAV:schedule-send-reply privilege granted on the scheduling
- Outbox collection of the owner of the calendar collection or
- scheduling object resource in order to be allowed to create, modify
- or delete scheduling object resources in a way that will trigger the
- CalDAV server to deliver attendee scheduling messages to other
- calendar users.
-
- <!ELEMENT schedule-send-reply EMPTY >
-
-13.1.2.4. CALDAV:schedule-send-freebusy Privilege
-
- The CALDAV:schedule-send-freebusy privilege controls the use of the
- POST method to submit scheduling messages that specify the scheduling
- method "REQUEST" with a "VFREEBUSY" calendar component.
-
- <!ELEMENT schedule-send-freebusy EMPTY >
-
-13.1.3. Aggregation of Scheduling Privileges
-
- Server implementations MUST aggregate the scheduling privileges as
- follows:
-
- DAV:all MUST contain CALDAV:schedule-send and CALDAV:schedule-
- deliver;
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 59]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- CALDAV:schedule-send MUST contain CALDAV:schedule-send-invite,
- CALDAV:schedule-send-reply, and CALDAV:schedule-send-freebusy;
-
- CALDAV:schedule-deliver MUST contain CALDAV:schedule-deliver-
- invite, CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-
- freebusy.
-
- The following diagram illustrates how scheduling privileges are
- aggregated according to the above requirements.
-
- [DAV:all] (aggregate)
- |
- +-- [CALDAV:schedule-deliver] (aggregate)
- | |
- | +-- [CALDAV:schedule-deliver-invite]
- | +-- [CALDAV:schedule-deliver-reply]
- | +-- [CALDAV:schedule-query-freebusy]
- |
- +-- [CALDAV:schedule-send] (aggregate)
- |
- +-- [CALDAV:schedule-send-invite]
- +-- [CALDAV:schedule-send-reply]
- +-- [CALDAV:schedule-send-freebusy]
-
-13.2. Additional Principal Properties
-
- This section defines new properties for WebDAV principal resources as
- defined in RFC3744 [RFC3744]. These properties are likely to be
- protected but the server MAY allow them to be written by appropriate
- users.
-
-13.2.1. CALDAV:schedule-inbox-URL Property
-
- Name: schedule-inbox-URL
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Identify the URL of the scheduling Inbox collection owned
- by the associated principal resource.
-
- Protected: This property MAY be protected.
-
- PROPFIND behavior: This property SHOULD NOT be returned by a
- PROPFIND allprop request (as defined in Section 14.2 of
- [RFC4918]).
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 60]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- COPY/MOVE behavior: This property value SHOULD be preserved in COPY
- and MOVE operations.
-
- Description: This property is needed for a client to determine where
- the scheduling Inbox collection of the current user is located so
- that processing of scheduling messages can occur. If not present,
- then the associated calendar user is not enabled for reception of
- scheduling messages on the server.
-
- Definition:
-
- <!ELEMENT schedule-inbox-URL (DAV:href)>
-
-13.2.2. CALDAV:schedule-outbox-URL Property
-
- Name: schedule-outbox-URL
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Identify the URL of the scheduling Outbox collection owned
- by the associated principal resource.
-
- Protected: This property MAY be protected.
-
- PROPFIND behavior: This property SHOULD NOT be returned by a
- PROPFIND allprop request (as defined in Section 14.2 of
- [RFC4918]).
-
- COPY/MOVE behavior: This property value SHOULD be preserved in COPY
- and MOVE operations.
-
- Description: This property is needed for a client to determine where
- the scheduling Outbox collection of the current user is located so
- that sending of scheduling messages can occur. If not present,
- then the associated calendar user is not enabled for the sending
- of scheduling messages on the server.
-
- Definition:
-
- <!ELEMENT schedule-outbox-URL DAV:href>
-
-13.2.3. CALDAV:calendar-user-address-set Property
-
- Name: calendar-user-address-set
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 61]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Identify the calendar addresses of the associated principal
- resource.
-
- Protected: This property MAY be protected.
-
- PROPFIND behavior: This property SHOULD NOT be returned by a
- PROPFIND allprop request (as defined in Section 14.2 of
- [RFC4918]).
-
- COPY/MOVE behavior: This property value SHOULD be preserved in COPY
- and MOVE operations.
-
- Description: Support for this property is REQUIRED. This property
- is needed to map calendar user addresses in iCalendar data to
- principal resources and their associated scheduling Inbox and
- Outbox collections. In the event that a user has no well defined
- identifier for their calendar user address, the URI of their
- principal resource can be used. This property SHOULD be
- searchable using the DAV:principal-property-search REPORT. The
- DAV:principal-search-property-set REPORT SHOULD identify this
- property as such. If not present, then the associated calendar
- user is not enabled for scheduling on the server.
-
- Definition:
-
- <!ELEMENT calendar-user-address-set (DAV:href*)>
-
- Example:
-
- <C:calendar-user-address-set xmlns:D="DAV:"
- xmlns:C="urn:ietf:params:xml:ns:caldav">
- <D:href>mailto:bernard at example.com</D:href>
- <D:href>mailto:bernard.desruisseaux at example.com</D:href>
- </C:calendar-user-address-set>
-
-13.2.4. CALDAV:calendar-user-type Property
-
- Name: calendar-user-type
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Identifies the calendar user type of the associated
- principal resource.
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 62]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Value: Same values allowed for the iCalendar "CUTYPE" property
- parameter defined in Section 3.2.3 of [RFC5545].
-
- Protected: This property MAY be protected.
-
- PROPFIND behavior: This property SHOULD NOT be returned by a
- PROPFIND allprop request (as defined in Section 14.2 of
- [RFC4918]).
-
- COPY/MOVE behavior: This property value SHOULD be preserved in COPY
- and MOVE operations.
-
- Description: This property MAY be defined on principal resources to
- indicate the type of calendar user associated with this principal
- resource. Its value is the same as the iCalendar "CUTYPE"
- property parameter that can be used on "ATTENDEE" properties.
- This property SHOULD be searchable using the DAV:principal-
- property-search REPORT. The DAV:principal-search-property-set
- REPORT SHOULD identify this property as such. If not present,
- then the associated calendar user is not enabled for scheduling on
- the server.
-
- Definition:
-
- <!ELEMENT calendar-user-type (#PCDATA) >
-
- Example:
-
- <C:calendar-user-type
- xmlns:C="urn:ietf:params:xml:ns:caldav">INDIVIDUAL<
- /C:calendar-user-type>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 63]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-14. XML Element Definitions
-
-14.1. CALDAV:schedule-response XML Element
-
- Name: schedule-response
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Contains the set of responses for a POST method request.
-
- Description: See Section 7.3.
-
- Definition:
-
- <!ELEMENT schedule-response (response*)>
-
-14.2. CALDAV:response XML Element
-
- Name: response
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: Contains a single response for a POST method request.
-
- Description: See Section 7.3.
-
- Definition:
-
- <!ELEMENT response (recipient,
- request-status,
- calendar-data?,
- DAV:error?,
- DAV:responsedescription?)>
-
- <!-- CALDAV:calendar-data is defined in Section 9.6 of
- RFC 4791 and when used here uses the definition with
- content (#PCDATA) only -->
-
-14.3. CALDAV:recipient XML Element
-
- Name: recipient
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: The calendar user address that the enclosing response for a
- POST method request is for.
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 64]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Description: See Section 7.3.
-
- Definition:
-
- <!ELEMENT recipient (DAV:href)>
-
-14.4. CALDAV:request-status XML Element
-
- Name: request-status
-
- Namespace: urn:ietf:params:xml:ns:caldav
-
- Purpose: The iTIP "REQUEST-STATUS" property value for this response.
-
- Description: See Section 7.3.
-
- Definition:
-
- <!ELEMENT request-status (#PCDATA) >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 65]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-15. Security Considerations
-
- The process of scheduling involves the sending and receiving of
- scheduling messages. As a result, the security problems related to
- messaging in general are relevant here. In particular the
- authenticity of the scheduling messages needs to be verified.
- Servers and clients MUST use an HTTP connection protected with TLS as
- defined in [RFC2818] for all scheduling transactions.
-
-15.1. Verifying Scheduling Transactions
-
- When handling a scheduling transaction:
-
- Servers MUST verify that the principal associated with the DAV:
- owner of the calendar collection in which a scheduling object
- resource is being manipulated contains a CALDAV:schedule-outbox-
- URL property value.
-
- Servers MUST verify that the currently authenticated user has the
- CALDAV:schedule-send privilege, or a suitable sub-privilege
- aggregated under this privilege, on the scheduling Outbox
- collection of the DAV:owner of the calendar collection in which a
- scheduling object resource is being manipulated.
-
- Servers MUST only deliver scheduling messages to recipients when
- the CALDAV:schedule-deliver privilege, or a suitable sub-privilege
- aggregated under this privilege, is granted on the recipient's
- scheduling Inbox collection for the principal associated with the
- DAV:owner of the calendar collection in which a scheduling object
- resource is being manipulated.
-
- To prevent impersonation of calendar users, the server MUST verify
- that the "ORGANIZER" property in an organizer scheduling object
- resource matches one of the calendar user addresses of the DAV:
- owner of the calendar collection in which the resource is stored.
-
- To prevent spoofing of an existing scheduling object resource,
- servers MUST verify that the "UID" iCalendar property value in a
- new scheduling object resource does not match that of an existing
- scheduling object resource with a different "ORGANIZER" property
- value.
-
-15.2. Verifying Busy Time Information Requests
-
- When handling a POST request on a scheduling Outbox collection:
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 66]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Servers MUST verify that the principal associated with the
- calendar user address specified in the "ORGANIZER" property of the
- scheduling message data in the request contains a CALDAV:schedule-
- outbox-URL property value that matches the scheduling Outbox
- collection targeted by the request.
-
- Servers MUST verify that the currently authenticated user has the
- CALDAV:schedule-send privilege, or a sub-privilege aggregated
- under this privilege, on the scheduling Outbox collection targeted
- by the request.
-
- Servers MUST only return valid freebusy information for recipients
- when the CALDAV:schedule-deliver privilege, or a sub-privilege
- aggregated under this privilege, is granted on the recipient's
- scheduling Inbox collection for the principal associated with the
- DAV:owner of the scheduling Outbox collection targeted by the
- request.
-
-15.3. Privacy Issues
-
- As noted in Section 11.1, Attendees can use the Schedule-Reply
- request header with the value set to "F" to prevent notification to
- an Organizer that a scheduling object resource was deleted. This
- allows Attendees to remove unwanted scheduling messages without any
- response to the Organizer.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 67]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-16. IANA Considerations
-
-16.1. Message Header Field Registrations
-
- The message header fields below should be added to the Permanent
- Message Header Field Registry (see [RFC3864]).
-
-16.1.1. Schedule-Reply
-
- Header field name: Schedule-Reply
-
- Applicable protocol: http
-
- Status: standard
-
- Author/Change controller: IETF
-
- Specification document(s): this specification (Section 11.1)
-
- Related information: none
-
-16.1.2. Schedule-Tag
-
- Header field name: Schedule-Tag
-
- Applicable protocol: http
-
- Status: standard
-
- Author/Change controller: IETF
-
- Specification document(s): this specification (Section 11.2)
-
- Related information: none
-
-16.1.3. If-Schedule-Tag-Match
-
- Header field name: If-Schedule-Tag-Match
-
- Applicable protocol: http
-
- Status: standard
-
- Author/Change controller: IETF
-
- Specification document(s): this specification (Section 11.3)
-
- Related information: none
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 68]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-16.2. iCalendar Property Parameter Registrations
-
- The following iCalendar property parameters should be added to the
- iCalendar Property Parameter Registry defined in Section 8.3.3 of
- [RFC5545].
-
- +---------------------+---------+-----------------------+
- | Parameter | Status | Reference |
- +---------------------+---------+-----------------------+
- | SCHEDULE-AGENT | Current | RFCXXXX, Section 10.1 |
- | | | |
- | SCHEDULE-STATUS | Current | RFCXXXX, Section 10.3 |
- | | | |
- | SCHEDULE-FORCE-SEND | Current | RFCXXXX, Section 10.2 |
- +---------------------+---------+-----------------------+
-
-16.3. iCalendar REQUEST-STATUS Value Registrations
-
- The following iCalendar "REQUEST-STATUS" values should be added to
- the iCalendar REQUEST-STATUS Value Registry defined in Section 7.3 of
- [RFC5546].
-
- +-------------+---------+-------------------------+
- | Status Code | Status | Reference |
- +-------------+---------+-------------------------+
- | 1.0 | Current | RFC XXXX, Section 9.2.1 |
- | | | |
- | 1.1 | Current | RFC XXXX, Section 9.2.2 |
- | | | |
- | 1.2 | Current | RFC XXXX, Section 9.2.3 |
- +-------------+---------+-------------------------+
-
-16.4. Additional iCalendar Elements Registries
-
- This specification adds two new IANA registries for iCalendar
- elements. Additional codes MAY be used, provided the process
- described in Section 8.2.1 of [RFC5545] is used to register them.
-
-16.4.1. Schedule Agent Values Registry
-
- The following table has been used to initialize the schedule agent
- values registry.
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 69]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- +----------------+---------+------------------------+
- | Schedule Agent | Status | Reference |
- +----------------+---------+------------------------+
- | SERVER | Current | RFC XXXX, Section 10.1 |
- | | | |
- | CLIENT | Current | RFC XXXX, Section 10.1 |
- | | | |
- | NONE | Current | RFC XXXX, Section 10.1 |
- +----------------+---------+------------------------+
-
-16.4.2. Schedule Force Send Values Registry
-
- The following table has been used to initialize the schedule send
- values registry.
-
- +---------------------+---------+------------------------+
- | Schedule Force Send | Status | Reference |
- +---------------------+---------+------------------------+
- | REQUEST | Current | RFC XXXX, Section 10.2 |
- | | | |
- | REPLY | Current | RFC XXXX, Section 10.2 |
- +---------------------+---------+------------------------+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 70]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-17. Acknowledgements
-
- The authors would like to thank the following individuals for
- contributing their ideas and support for writing this specification:
- Mike Douglass, Lisa Dusseault, Helge Hess, Arnaud Quillaud, Julian F.
- Reschke, Wilfredo Sanchez Vega, Simon Vaillancourt, and Jim
- Whitehead.
-
- The authors would also like to thank the Calendaring and Scheduling
- Consortium for advice with this specification, and for organizing
- interoperability testing events to help refine it.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 71]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-18. References
-
-18.1. Normative References
-
- [RFC2119] Bradner, S., "Key words for use in
- RFCs to Indicate Requirement Levels",
- BCP 14, RFC 2119, March 1997.
-
- [RFC2616] Fielding, R., Gettys, J., Mogul, J.,
- Frystyk, H., Masinter, L., Leach, P.,
- and T. Berners-Lee, "Hypertext
- Transfer Protocol -- HTTP/1.1",
- RFC 2616, June 1999.
-
- [RFC2818] Rescorla, E., "HTTP Over TLS",
- RFC 2818, May 2000.
-
- [RFC3744] Clemm, G., Reschke, J., Sedlar, E.,
- and J. Whitehead, "Web Distributed
- Authoring and Versioning (WebDAV)
- Access Control Protocol", RFC 3744,
- May 2004.
-
- [RFC3864] Klyne, G., Nottingham, M., and J.
- Mogul, "Registration Procedures for
- Message Header Fields", BCP 90,
- RFC 3864, September 2004.
-
- [RFC4791] Daboo, C., Desruisseaux, B., and L.
- Dusseault, "Calendaring Extensions to
- WebDAV (CalDAV)", RFC 4791,
- March 2007.
-
- [RFC4918] Dusseault, L., "HTTP Extensions for
- Web Distributed Authoring and
- Versioning (WebDAV)", RFC 4918,
- June 2007.
-
- [RFC5234] Crocker, D. and P. Overell, "Augmented
- BNF for Syntax Specifications: ABNF",
- STD 68, RFC 5234, January 2008.
-
- [RFC5545] Desruisseaux, B., "Internet
- Calendaring and Scheduling Core Object
- Specification (iCalendar)", RFC 5545,
- September 2009.
-
- [RFC5546] Daboo, C., "iCalendar Transport-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 72]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- Independent Interoperability Protocol
- (iTIP)", RFC 5546, December 2009.
-
- [W3C.REC-xml-20081126] Paoli, J., Yergeau, F., Bray, T.,
- Sperberg-McQueen, C., and E. Maler,
- "Extensible Markup Language (XML) 1.0
- (Fifth Edition)", World Wide Web
- Consortium Recommendation REC-xml-
- 20081126, November 2008, <http://
- www.w3.org/TR/2008/REC-xml-20081126>.
-
-18.2. Informative References
-
- [I-D.ietf-calsify-rfc2447bis] Melnikov, A., "iCalendar Message-Based
- Interoperability Protocol (iMIP)",
- draft-ietf-calsify-rfc2447bis-11 (work
- in progress), September 2010.
-
- [RFC3283] Mahoney, B., Babics, G., and A. Taler,
- "Guide to Internet Calendaring",
- RFC 3283, June 2002.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 73]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-Appendix A. Scheduling Privileges Summary
-
-A.1. Scheduling Inbox Privileges
-
- The following tables specify which scheduling privileges grant the
- right to a calendar user to deliver a scheduling message to the
- scheduling Inbox collection of another calendar user. The
- appropriate behavior depends on the calendar component type as well
- as the scheduling "METHOD" specified in the scheduling message.
-
- +--------------------------------+
- | METHOD for VEVENT and VTODO |
- +-----------------------------+---------+-------+-----+--------+
- | Scheduling Inbox Privilege | REQUEST | REPLY | ADD | CANCEL |
- +-----------------------------+---------+-------+-----+--------+
- | schedule-deliver | * | * | * | * |
- | schedule-deliver-invite | * | | * | * |
- | schedule-deliver-reply | | * | | |
- | schedule-query-freebusy | | | | |
- +-----------------------------+---------+-------+-----+--------+
-
-
- +----------------------+
- | METHOD for VFREEBUSY |
- +-----------------------------+----------------------+
- | Scheduling Inbox Privilege | REQUEST |
- +-----------------------------+----------------------+
- | schedule-deliver | * |
- | schedule-deliver-invite | |
- | schedule-deliver-reply | |
- | schedule-query-freebusy | * |
- +-----------------------------+----------------------+
-
-A.2. Scheduling Outbox Privileges
-
- The following tables specify which scheduling privileges grant the
- right to a Calendar User to perform busy time information requests
- and to submit scheduling messages to other Calendar Users as the
- result of a scheduling transaction. The appropriate behavior depends
- on the calendar component type as well as the scheduling "METHOD"
- specified in the scheduling message.
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 74]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- +--------------------------------+
- | METHOD for VEVENT and VTODO |
- +-----------------------------+---------+-------+-----+--------+
- | Scheduling Outbox Privilege | REQUEST | REPLY | ADD | CANCEL |
- +-----------------------------+---------+-------+-----+--------+
- | schedule-send | * | * | * | * |
- | schedule-send-invite | * | | * | * |
- | schedule-send-reply | | * | | |
- | schedule-send-freebusy | | | | |
- +-----------------------------+---------+-------+-----+--------+
-
-
- +----------------------+
- | METHOD for VFREEBUSY |
- +-----------------------------+----------------------+
- | Scheduling Outbox Privilege | REQUEST |
- +-----------------------------+----------------------+
- | schedule-send | * |
- | schedule-send-invite | |
- | schedule-send-reply | |
- | schedule-send-freebusy | * |
- +-----------------------------+----------------------+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 75]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-Appendix B. Example Scheduling Transactions
-
- This section describes some example scheduling transactions that give
- a general idea of how scheduling is carried out between CalDAV
- clients and servers from the perspective of meeting Organizers and
- Attendees.
-
- In the following examples the requests and responses are incomplete
- and are only for illustrative purposes. In particular, HTTP
- authentication headers and behaviors are not shown, even though they
- are required in normal operation.
-
-B.1. Example: Organizer Inviting Multiple Attendees
-
- In the following example, Cyrus invites Wilfredo, Bernard and Mike to
- a single instance event by simply creating a new scheduling object
- resource in one of his calendar collection by using the PUT method.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 76]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Request <<
-
- PUT /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
- Host: cal.example.com
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
- If-None-Match: *
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T185254Z
- DTSTART:20090602T160000Z
- DTEND:20090602T170000Z
- TRANSP:OPAQUE
- SUMMARY:Lunch
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
- =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
- example.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
- ample.net
- ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
- CTION;RSVP=TRUE:mailto:mike at example.org
- END:VEVENT
- END:VCALENDAR
-
- >> Response <<
-
- HTTP/1.1 201 Created
- Content-Length: 0
- Date: Tue, 02 Jun 2009 18:52:54 GMT
- Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
- ETag: "d85561cfe74a4e785eb4639451b434fb"
- Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
-
- Once the event creation has been completed, Cyrus's client will
- retrieve the event back from the server to get the schedule status of
- each Attendee. In this example, the server reports that a scheduling
- message was delivered to Wilfredo, a scheduling message is still
- pending for Bernard, and the server was unable to deliver a
- scheduling message to Mike.
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 77]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Request <<
-
- GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 18:52:58 GMT
- Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
- ETag: "eb897deabc8939589da116714bc99265"
- Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Server//EN
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T185300Z
- DTSTART:20090602T160000Z
- DTEND:20090602T170000Z
- TRANSP:OPAQUE
- SUMMARY:Lunch
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
- =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
- 1.2:mailto:wilfredo at e
- xample.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
- 1.0:mailto:bernard at example.net
- ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
- CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike at example.org
- END:VEVENT
- END:VCALENDAR
-
-B.2. Example: Attendee Receiving an Invitation
-
- In the following example, Wilfredo's client retrieves and deletes the
- new scheduling message that appeared in his scheduling Inbox
- collection after the server automatically processed it and created a
- new scheduling object resource in his default calendar collection.
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 78]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Request <<
-
- GET /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
- Host: cal.example.com
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 18:59:58 GMT
- Last-Modified: Tue, 02 Jun 2009 18:59:58 GMT
- ETag: "da116714bc9926c89395895eb897deab"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Server//EN
- METHOD:REQUEST
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T185254Z
- DTSTART:20090602T160000Z
- DTEND:20090602T170000Z
- TRANSP:OPAQUE
- SUMMARY:Lunch
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
- =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
- example.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
- ample.net
- ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
- CTION;RSVP=TRUE:mailto:mike at example.org
- END:VEVENT
- END:VCALENDAR
-
- >> Request <<
-
- DELETE /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
- Host: cal.example.com
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 79]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Response <<
-
- HTTP/1.1 204 No Content
- Date: Tue, 02 Jun 2009 20:40:36 GMT
-
-B.3. Example: Attendee Replying to an Invitation
-
- In the following example, Wilfredo's accepts Cyrus's invitation and
- sets a reminder on the event.
-
- >> Request <<
-
- PUT /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
- Host: cal.example.com
- If-Schedule-Tag-Match: "e78f23ed-0188-4bab-938d-2aeb3324c7e8"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T185254Z
- DTSTART:20090602T160000Z
- DTEND:20090602T170000Z
- TRANSP:OPAQUE
- SUMMARY:Lunch
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
- =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo at exam
- ple.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
- ample.net
- ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
- CTION;RSVP=TRUE:mailto:mike at example.org
- BEGIN:VALARM
- TRIGGER:-PT15M
- ACTION:DISPLAY
- DESCRIPTION:Reminder
- END:VALARM
- END:VEVENT
- END:VCALENDAR
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 80]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Content-Length: 0
- Date: Tue, 02 Jun 2009 18:57:54 GMT
- Last-Modified: Tue, 02 Jun 2009 18:57:54 GMT
- ETag: "eb4639451b434fbd85561cfe74a4e785"
- Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
-
- Once the event modification has been completed, Wilfredo's client
- will retrieve the event back from the server to get the schedule
- status of the Organizer.
-
- >> Request <<
-
- GET /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
- Host: cal.example.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 81]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 19:03:03 GMT
- Last-Modified: Tue, 02 Jun 2009 19:02:21 GMT
- ETag: "5eb897deabda116714bc9926c8939589"
- Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T190221Z
- DTSTART:20090602T160000Z
- DTEND:20090602T170000Z
- TRANSP:OPAQUE
- SUMMARY:Lunch
- ORGANIZER;CN="Cyrus Daboo";SCHEDULE-STATUS=1.2:mailto:cyrus at ex
- ample.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
- =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo at exam
- ple.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
- ample.net
- ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
- CTION;RSVP=TRUE:mailto:mike at example.org
- BEGIN:VALARM
- TRIGGER:-PT15M
- ACTION:DISPLAY
- DESCRIPTION:Reminder
- END:VALARM
- END:VEVENT
- END:VCALENDAR
-
-B.4. Example: Organizer Receiving a Reply to an Invitation
-
- On reception of Wilfredo's reply, Cyrus's server will automatically
- update Cyrus's scheduling object resource, make Wilfredo's scheduling
- message available in Cyrus's scheduling Inbox collection, and deliver
- an updated scheduling message to Bernard to share Wilfredo's updated
- participation status. In this example, Cyrus's client retrieves and
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 82]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- deletes this scheduling message in his scheduling Inbox collection.
-
- >> Request <<
-
- GET /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 19:05:02 GMT
- Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
- ETag: "9265eb897deabc8939589da116714bc9"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Server//EN
- METHOD:REPLY
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T185754Z
- DTSTART:20090602T160000Z
- DTEND:20090602T170000Z
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";PARTSTAT=ACCEPTED:mailto:w
- ilfredo at example.com
- REQUEST-STATUS:2.0;Success
- END:VEVENT
- END:VCALENDAR
-
- >> Request <<
-
- DELETE /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
- Host: cal.example.com
-
- >> Response <<
-
- HTTP/1.1 204 No Content
- Date: Tue, 02 Jun 2009 19:05:05 GMT
-
- Cyrus's client then retrieves the event back from the server with
- Wilfredo's updated participation status.
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 83]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Request <<
-
- GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
- Host: cal.example.com
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 19:05:02 GMT
- Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
- ETag: "eb897deabc8939589da116714bc99265"
- Schedule-Tag: "132cab27-1fe3-67ab-de13-abd348d1dee3"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Server//EN
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T190420Z
- DTSTART:20090602T160000Z
- DTEND:20090602T170000Z
- TRANSP:OPAQUE
- SUMMARY:Lunch
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
- =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=2.0:
- mailto:wilfredo at example.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1
- .0:mailto:bernard at example.net
- ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
- CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike at example.org
- END:VEVENT
- END:VCALENDAR
-
-B.5. Example: Organizer Requesting Busy Time Information
-
- In this example, Cyrus requests the busy time information of
- Wilfredo, Bernard and Mike.
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 84]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Request <<
-
- POST /home/cyrus/calendars/outbox/ HTTP/1.1
- Host: cal.example.com
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- METHOD:REQUEST
- BEGIN:VFREEBUSY
- UID:4FD3AD926350
- DTSTAMP:20090602T190420Z
- DTSTART:20090602T000000Z
- DTEND:20090604T000000Z
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo at example.com
- ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard at example.net
- ATTENDEE;CN="Mike Douglass":mailto:mike at example.org
- END:VFREEBUSY
- END:VCALENDAR
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 20:07:34 GMT
- Content-Type: application/xml; charset="utf-8"
- Content-Length: xxxx
-
- <?xml version="1.0" encoding="utf-8" ?>
- <C:schedule-response xmlns:D="DAV:"
- xmlns:C="urn:ietf:params:xml:ns:caldav">
- <C:response>
- <C:recipient>
- <D:href>mailto:wilfredo at example.com<D:href>
- </C:recipient>
- <C:request-status>2.0;Success</C:request-status>
- <C:calendar-data>BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Server//EN
- METHOD:REPLY
- BEGIN:VFREEBUSY
- UID:4FD3AD926350
- DTSTAMP:20090602T200733Z
- DTSTART:20090602T000000Z
- DTEND:20090604T000000Z
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 85]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo at example.com
- FREEBUSY;FBTYPE=BUSY:20090602T110000Z/20090602T120000Z
- FREEBUSY;FBTYPE=BUSY:20090603T170000Z/20090603T180000Z
- END:VFREEBUSY
- END:VCALENDAR
- </C:calendar-data>
- </C:response>
- <C:response>
- <C:recipient>
- <D:href>mailto:bernard at example.net<D:href>
- </C:recipient>
- <C:request-status>2.0;Success</C:request-status>
- <C:calendar-data>BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Server//EN
- METHOD:REPLY
- BEGIN:VFREEBUSY
- UID:4FD3AD926350
- DTSTAMP:20090602T200733Z
- DTSTART:20090602T000000Z
- DTEND:20090604T000000Z
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard at example.net
- FREEBUSY;FBTYPE=BUSY:20090602T150000Z/20090602T160000Z
- FREEBUSY;FBTYPE=BUSY:20090603T090000Z/20090603T100000Z
- FREEBUSY;FBTYPE=BUSY:20090603T180000Z/20090603T190000Z
- END:VFREEBUSY
- END:VCALENDAR
- </C:calendar-data>
- </C:response>
- <C:response>
- <C:recipient>
- <D:href>mailto:mike at example.org<D:href>
- </C:recipient>
- <C:request-status>3.7;Invalid calendar user</C:request-status>
- </C:response>
- </C:schedule-response>
-
-B.6. Example: User Attempting to Invite Attendee on behalf of Organizer
-
- In the following example, Cyrus attempts to create, on behalf of
- Wilfredo, an event with Bernard specified as an Attendee. The
- request fails since Wilfredo didn't grant Cyrus the right to invite
- other Calendar Users on his behalf.
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 86]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Request <<
-
- PUT /home/wilfredo/calendars/work/def456.ics HTTP/1.1
- Host: cal.example.com
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
- If-None-Match: *
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- BEGIN:VEVENT
- UID:3504F926D3AD
- SEQUENCE:0
- DTSTAMP:20090602T190221Z
- DTSTART:20090602T230000Z
- DTEND:20090603T000000Z
- TRANSP:OPAQUE
- SUMMARY:Dinner
- ORGANIZER;CN="Wilfredo Sanchez Vega":mailto:wilfredo at example.com
- ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT=A
- CCEPTED:mailto:wilfredo at example.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=NE
- EDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
- e.net
- END:VEVENT
- END:VCALENDAR
-
- >> Response <<
-
- HTTP/1.1 403 Forbidden
- Content-Type: application/xml; charset="utf-8"
- Content-Length: xxxx
-
- <D:error xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
- <D:need-privileges>
- <D:resource>
- <D:href>/home/wilfredo/calendars/outbox/</D:href>
- <D:privilege><C:schedule-send-invite/></D:privilege>
- </D:resource>
- </D:need-privileges>
- </D:error>
-
-B.7. Example: Attendee Declining an Instance of a Recurring Event
-
- In the following example, Bernard declines the second recurrence
- instance of a daily recurring event he's been invited to by Cyrus.
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 87]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Request <<
-
- PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
- Host: cal.example.com
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
- If-Schedule-Tag-Match: "7775FB30-7534-489E-A79A-0EA147B933EB"
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- BEGIN:VTIMEZONE
- TZID:America/Montreal
- BEGIN:STANDARD
- DTSTART:20071104T020000
- RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
- TZNAME:EST
- TZOFFSETFROM:-0400
- TZOFFSETTO:-0500
- END:STANDARD
- BEGIN:DAYLIGHT
- DTSTART:20070311T020000
- RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
- TZNAME:EDT
- TZOFFSETFROM:-0500
- TZOFFSETTO:-0400
- END:DAYLIGHT
- END:VTIMEZONE
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T185254Z
- DTSTART;TZID=America/Montreal:20090601T150000
- DTEND;TZID=America/Montreal:20090601T160000
- RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
- TRANSP:OPAQUE
- SUMMARY:Review Internet-Draft
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
- e.net
- END:VEVENT
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090603T183823Z
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 88]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- RECURRENCE-ID;TZID=America/Montreal:20090602T150000
- DTSTART;TZID=America/Montreal:20090602T150000
- DTEND;TZID=America/Montreal:20090602T160000
- TRANSP:TRANSPARENT
- SUMMARY:Review Internet-Draft
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
- e.net
- END:VEVENT
- END:VCALENDAR
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Content-Length: 0
- Date: Tue, 02 Jun 2009 18:52:54 GMT
- Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
- ETag: "d85561cfe74a4e785eb4639451b434fb"
- Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
-
- Bernard's participation status update will cause his server to
- deliver a scheduling message to Cyrus. Cyrus's client will find the
- following reply message from Bernard in Cyrus's scheduling Inbox
- collection:
-
- >> Request <<
-
- GET /home/cyrus/calendars/inbox/9263504FD3AD.ics HTTP/1.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 89]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 18:52:58 GMT
- Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
- ETag: "eb897deabc8939589da116714bc99265"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- METHOD:REPLY
- BEGIN:VTIMEZONE
- TZID:America/Montreal
- BEGIN:STANDARD
- DTSTART:20071104T020000
- RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
- TZNAME:EST
- TZOFFSETFROM:-0400
- TZOFFSETTO:-0500
- END:STANDARD
- BEGIN:DAYLIGHT
- DTSTART:20070311T020000
- RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
- TZNAME:EDT
- TZOFFSETFROM:-0500
- TZOFFSETTO:-0400
- END:DAYLIGHT
- END:VTIMEZONE
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090603T183823Z
- RECURRENCE-ID;TZID=America/Montreal:20090602T150000
- DTSTART;TZID=America/Montreal:20090602T150000
- DTEND;TZID=America/Montreal:20090602T160000
- SUMMARY:Review Internet-Draft
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
- mailto:bernard at example.net
- REQUEST-STATUS:2.0;Success
- END:VEVENT
- END:VCALENDAR
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 90]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-B.8. Example: Attendee Removing an Instance of a Recurring Event
-
- In the following example, Bernard removes from his calendar the third
- recurrence instance of a daily recurring event he's been invited to
- by Cyrus. This is accomplished by the addition of an "EXDATE"
- property to the scheduling object resource stored by Bernard.
-
- >> Request <<
-
- PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
- Host: cal.example.com
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
- If-Schedule-Tag-Match: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- BEGIN:VTIMEZONE
- TZID:America/Montreal
- BEGIN:STANDARD
- DTSTART:20071104T020000
- RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
- TZNAME:EST
- TZOFFSETFROM:-0400
- TZOFFSETTO:-0500
- END:STANDARD
- BEGIN:DAYLIGHT
- DTSTART:20070311T020000
- RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
- TZNAME:EDT
- TZOFFSETFROM:-0500
- TZOFFSETTO:-0400
- END:DAYLIGHT
- END:VTIMEZONE
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090602T185254Z
- DTSTART;TZID=America/Montreal:20090601T150000
- DTEND;TZID=America/Montreal:20090601T160000
- RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
- EXDATE;TZID=America/Montreal:20090603T150000
- TRANSP:OPAQUE
- SUMMARY:Review Internet-Draft
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 91]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
- e.net
- END:VEVENT
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090603T183823Z
- RECURRENCE-ID;TZID=America/Montreal:20090602T150000
- DTSTART;TZID=America/Montreal:20090602T150000
- DTEND;TZID=America/Montreal:20090602T160000
- TRANSP:TRANSPARENT
- SUMMARY:Review Internet-Draft
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
- mailto:cyrus at example.com
- ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
- DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
- e.net
- END:VEVENT
- END:VCALENDAR
-
- Bernard's deletion of a recurrence instance will cause his server to
- deliver a scheduling message to Cyrus. Cyrus's client will find the
- following reply message from Bernard in Cyrus's scheduling Inbox
- collection:
-
- >> Request <<
-
- GET /home/cyrus/calendars/inbox/6504923FD3AD.ics HTTP/1.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 92]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- >> Response <<
-
- HTTP/1.1 200 OK
- Date: Tue, 02 Jun 2009 18:52:58 GMT
- Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
- ETag: "eb897deabc8939589da116714bc99265"
- Content-Type: text/calendar; charset="utf-8"
- Content-Length: xxxx
-
- BEGIN:VCALENDAR
- VERSION:2.0
- PRODID:-//Example Corp.//CalDAV Client//EN
- METHOD:REPLY
- BEGIN:VTIMEZONE
- TZID:America/Montreal
- BEGIN:STANDARD
- DTSTART:20071104T020000
- RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
- TZNAME:EST
- TZOFFSETFROM:-0400
- TZOFFSETTO:-0500
- END:STANDARD
- BEGIN:DAYLIGHT
- DTSTART:20070311T020000
- RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
- TZNAME:EDT
- TZOFFSETFROM:-0500
- TZOFFSETTO:-0400
- END:DAYLIGHT
- END:VTIMEZONE
- BEGIN:VEVENT
- UID:9263504FD3AD
- SEQUENCE:0
- DTSTAMP:20090603T183823Z
- RECURRENCE-ID;TZID=America/Montreal:20090603T150000
- DTSTART;TZID=America/Montreal:20090603T150000
- DTEND;TZID=America/Montreal:20090603T160000
- SUMMARY:Review Internet-Draft
- ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
- ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
- mailto:bernard at example.net
- REQUEST-STATUS:2.0;Success
- END:VEVENT
- END:VCALENDAR
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 93]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-Appendix C. Changes (to be removed by RFC Editor prior to publication)
-
-C.1. Changes in -09
-
- a. Fixed some examples.
-
- b. Tweaked XML conventions.
-
- c. Removed description in SCHEDULE-STATUS example values.
-
- d. Tweaked 3.7 and 3.8 SCHEDULE-STATUS description to indicate it
- applies to the Organizer as well as Attendee.
-
- e. Updated to RFC 5545 reference.
-
- f. AD Review: clarified text about inbox resource deletion being
- acknowledgment of change.
-
- g. AD Review: clarified description of freebusy Outbox POST.
-
- h. AD Review: registered new 1.xx request-status codes and added new
- restriction on usage as per iTIP.
-
- i. AD Review: changes SHOULD NOT to MUST NOT for new property
- parameters when clients send scheduling messages.
-
- j. AD Review: CALDAV:schedule-calendar-transp now preserved during
- COPY.
-
- k. AD Review: changed CALDAV- to CALDAV: in acl descriptions.
-
- l. AD Review: fixed various minor typos.
-
- m. AD Review: Added text to new principal properties to indicate
- that if they are not present, then the user is not enabled for
- the various scheduling operations.
-
- n. AD Review: clarified use of CALDAV:calendar-data element in
- CALDAV:response element.
-
- o. AD Review: made reference to 5545 IANA registry procedures for
- the two new element registries.
-
- p. AD Review: Fixed description of B5. example.
-
- q. Fixed SCHEDULE-AGENT/SCHEDULE-STATUS behavior for Attendee
- replies.
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 94]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-C.2. Changes in -08
-
- a. Added "Updates 4791".
-
- b. XML conventions changed to match that in CardDAV spec.
-
- c. Reworded child response behavior for Outbox.
-
- d. Reworded "octet size".
-
- e. If-Schedule-Match descriptions changed to remove implication that
- it is purely a conditional operation.
-
- f. Schedule-Reply header descriptions generalized to resource
- removal rather than just HTTP DELETE.
-
- g. Fixed various examples.
-
-C.3. Changes in -07
-
- a. Restructured document.
-
- b. Clarified that CALDAV:schedule-calendar-transp only applies to
- calendar collection.
-
- c. Removed CALDAV:schedule-state property on scheduling messages in
- the scheduling Inbox collection.
-
- d. Added conditional requests on scheduling object resources.
-
- e. Added section on handling of PARTSTAT.
-
- f. Added SCHEDULE-FORCE-SEND iCalendar property parameter.
-
- g. Added clarification on child resources in scheduling Outbox
- collections.
-
- h. Clarified Attendee changes that server MUST allow, and removed
- restrictions on changes that Attendee MUST NOT do.
-
- i. Added Example Scheduling Transactions appendix.
-
- j. Scheduling privileges are no longer required to be non-abstract.
-
- k. Removed handling of REFRESH requests.
-
- l. Removed handling of VJOURNAL components.
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 95]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- m. Completed IANA Considerations section.
-
- n. Added references to RFC3283 and RFC5234.
-
- o. Updated references to iCalendar, iTIP and iMIP.
-
-C.4. Changes in -06
-
- a. Removed distinction between scheduling calendar collections and
- basic calendar collections - now just have calendar collections.
-
- b. Clients now "MAY" reload data rather than "SHOULD" reload data.
-
- c. Fixed <C:recipient> in examples.
-
- d. Removed CALDAV:attachments-allowed precondition on POST to Outbox
- as that is no longer relevant.
-
- e. Added CALDAV:default-calendar-delete-allowed precondition for
- DELETE.
-
- f. Relaxed MUST->MAY for Organizer setting PARTSTAT value.
-
- g. Tweaked restrictions on Create/Modify to emphasize that 4791
- restrictions also apply.
-
- h. Added comment that 'opaque' is the default when the CALDAV:
- schedule-calendar-transp property is not present.
-
- i. Description of Schedule-Reply header changed to reflect that it
- is only relevant for Attendees.
-
- j. Minor typos fixed.
-
-C.5. Changes in -05
-
- This draft has changed substantially since the -04 version. The
- primary reason for this change was implementation experience from a
- number of vendors who implemented products based on the earlier
- drafts. Experience showed that the client/server interaction was not
- reliable in keeping scheduling messages synchronized between
- organizer and attendees. In addition the latency in updates due to
- clients being offline proved unacceptable to users. These issues led
- to the redesign of this specification to support a server-based
- processing model that eliminates all the problems seen previously.
- Whilst this adds significant complexity to the server in that it
- needs to be a full blown iTIP processing agent, it does remove a lot
- of the same complexity from clients, opening up the possibility of
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 96]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
- supporting complex scheduling behaviors even with "thin" clients.
-
- In the judgement of the authors, we consider this new specification
- to be a substantial improvement over the old one and believe it
- represents a stronger protocol that will lead to better
- interoperability.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 97]
-
-Internet-Draft CalDAV Scheduling Extensions October 2010
-
-
-Authors' Addresses
-
- Cyrus Daboo
- Apple Inc.
- 1 Infinite Loop
- Cupertino, CA 95014
- USA
-
- EMail: cyrus at daboo.name
- URI: http://www.apple.com/
-
-
- Bernard Desruisseaux
- Oracle Corporation
- 600 Blvd. de Maisonneuve West
- Suite 1900
- Montreal, QC H3A 3J2
- CANADA
-
- EMail: bernard.desruisseaux at oracle.com
- URI: http://www.oracle.com/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Daboo & Desruisseaux Expires April 28, 2011 [Page 98]
-
Added: CalendarServer/trunk/doc/RFC/rfc6638-CalDAV-Scheduling.txt
===================================================================
--- CalendarServer/trunk/doc/RFC/rfc6638-CalDAV-Scheduling.txt (rev 0)
+++ CalendarServer/trunk/doc/RFC/rfc6638-CalDAV-Scheduling.txt 2012-06-18 14:47:13 UTC (rev 9366)
@@ -0,0 +1,4371 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) C. Daboo
+Request for Comments: 6638 Apple Inc.
+Updates: 4791, 5546 B. Desruisseaux
+Category: Standards Track Oracle
+ISSN: 2070-1721 June 2012
+
+
+ Scheduling Extensions to CalDAV
+
+Abstract
+
+ This document defines extensions to the Calendaring Extensions to
+ WebDAV (CalDAV) "calendar-access" feature to specify a standard way
+ of performing scheduling operations with iCalendar-based calendar
+ components. This document defines the "calendar-auto-schedule"
+ feature of CalDAV.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc6638.
+
+Copyright Notice
+
+ Copyright (c) 2012 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 1]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ This document may contain material from IETF Documents or IETF
+ Contributions published or made publicly available before November
+ 10, 2008. The person(s) controlling the copyright in some of this
+ material may not have granted the IETF Trust the right to allow
+ modifications of such material outside the IETF Standards Process.
+ Without obtaining an adequate license from the person(s) controlling
+ the copyright in such materials, this document may not be modified
+ outside the IETF Standards Process, and derivative works of it may
+ not be created outside the IETF Standards Process, except to format
+ it for publication as an RFC or to translate it into languages other
+ than English.
+
+Table of Contents
+
+ 1. Introduction ....................................................5
+ 1.1. Terminology ................................................6
+ 1.2. Notational Conventions .....................................7
+ 1.3. XML Namespaces and Processing ..............................7
+ 2. Scheduling Support ..............................................8
+ 2.1. Scheduling Outbox Collection ...............................9
+ 2.1.1. CALDAV:schedule-outbox-URL Property ................10
+ 2.2. Scheduling Inbox Collection ...............................10
+ 2.2.1. CALDAV:schedule-inbox-URL Property .................11
+ 2.3. Calendaring Reports Extensions ............................12
+ 2.4. Additional Principal Properties ...........................12
+ 2.4.1. CALDAV:calendar-user-address-set Property ..........12
+ 2.4.2. CALDAV:calendar-user-type Property .................13
+ 3. Scheduling Operations ..........................................14
+ 3.1. Identifying Scheduling Object Resources ...................14
+ 3.2. Handling Scheduling Object Resources ......................15
+ 3.2.1. Organizer Scheduling Object Resources ..............15
+ 3.2.1.1. Create ....................................16
+ 3.2.1.2. Modify ....................................17
+ 3.2.1.3. Remove ....................................18
+ 3.2.2. Attendee Scheduling Object Resources ...............18
+ 3.2.2.1. Allowed "Attendee" Changes ................18
+ 3.2.2.2. Create ....................................19
+ 3.2.2.3. Modify ....................................20
+ 3.2.2.4. Remove ....................................21
+ 3.2.3. HTTP Methods .......................................21
+ 3.2.3.1. PUT .......................................22
+ 3.2.3.2. DELETE ....................................22
+ 3.2.3.3. COPY ......................................23
+ 3.2.3.4. MOVE ......................................24
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 2]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ 3.2.4. Additional Method Preconditions ....................24
+ 3.2.4.1. CALDAV:unique-scheduling-object-resource
+ Precondition ..............................24
+ 3.2.4.2. CALDAV:same-organizer-in-all-components
+ Precondition ..............................25
+ 3.2.4.3. CALDAV:allowed-organizer-scheduling-
+ object-change Precondition .............25
+ 3.2.4.4. CALDAV:allowed-attendee-scheduling-
+ object-change Precondition .............26
+ 3.2.5. DTSTAMP and SEQUENCE Properties ....................26
+ 3.2.6. Restrict Recurrence Instances Sent to "Attendees" ..27
+ 3.2.7. Forcing the Server to Send a Scheduling Message ....27
+ 3.2.8. "Attendee" Participation Status ....................28
+ 3.2.9. Schedule Status Values .............................29
+ 3.2.10. Avoiding Conflicts when Updating Scheduling Object
+ Resources .........................................31
+ 3.2.10.1. PUT .....................................33
+ 3.2.10.2. DELETE, COPY, or MOVE ...................33
+ 4. Processing Incoming Scheduling Messages ........................34
+ 4.1. Processing "Organizer" Requests, Additions, and
+ Cancellations .............................................34
+ 4.2. Processing "Attendee" Replies .............................35
+ 4.3. Default Calendar Collection ...............................35
+ 4.3.1. Additional Method Preconditions ....................36
+ 4.3.1.1. CALDAV:default-calendar-needed
+ Precondition ..............................36
+ 4.3.1.2. CALDAV:valid-schedule-default-calendar-URL
+ Precondition ..............................36
+ 5. Request for Busy Time Information ..............................37
+ 5.1. Status Codes ..............................................38
+ 5.2. Additional Method Preconditions ...........................38
+ 5.2.1. CALDAV:valid-scheduling-message Precondition .......38
+ 5.2.2. CALDAV:valid-organizer Precondition ................39
+ 6. Scheduling Privileges ..........................................39
+ 6.1. Privileges on Scheduling Inbox Collections ................39
+ 6.1.1. CALDAV:schedule-deliver Privilege ..................40
+ 6.1.2. CALDAV:schedule-deliver-invite Privilege ...........40
+ 6.1.3. CALDAV:schedule-deliver-reply Privilege ............40
+ 6.1.4. CALDAV:schedule-query-freebusy Privilege ...........40
+ 6.2. Privileges on Scheduling Outbox Collections ...............40
+ 6.2.1. CALDAV:schedule-send Privilege .....................41
+ 6.2.2. CALDAV:schedule-send-invite Privilege ..............41
+ 6.2.3. CALDAV:schedule-send-reply Privilege ...............41
+ 6.2.4. CALDAV:schedule-send-freebusy Privilege ............41
+ 6.3. Aggregation of Scheduling Privileges ......................42
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 3]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ 7. Additional iCalendar Property Parameters .......................42
+ 7.1. Schedule Agent Parameter ..................................42
+ 7.2. Schedule Force Send Parameter .............................44
+ 7.3. Schedule Status Parameter .................................45
+ 8. Additional Message Header Fields ...............................46
+ 8.1. Schedule-Reply Request Header .............................46
+ 8.2. Schedule-Tag Response Header ..............................46
+ 8.3. If-Schedule-Tag-Match Request Header ......................47
+ 9. Additional WebDAV Properties ...................................47
+ 9.1. CALDAV:schedule-calendar-transp Property ..................47
+ 9.2. CALDAV:schedule-default-calendar-URL Property .............48
+ 9.3. CALDAV:schedule-tag Property ..............................49
+ 10. XML Element Definitions .......................................50
+ 10.1. CALDAV:schedule-response XML Element .....................50
+ 10.2. CALDAV:response XML Element ..............................50
+ 10.3. CALDAV:recipient XML Element .............................50
+ 10.4. CALDAV:request-status XML Element ........................51
+ 11. Security Considerations .......................................51
+ 11.1. Preventing Denial-of-Service Attacks .....................51
+ 11.2. Verifying Scheduling Operations ..........................52
+ 11.3. Verifying Busy Time Information Requests .................52
+ 11.4. Privacy Issues ...........................................53
+ 11.5. Mitigation of iTIP Threats ...............................53
+ 12. IANA Considerations ...........................................54
+ 12.1. Message Header Field Registrations .......................54
+ 12.1.1. Schedule-Reply ....................................54
+ 12.1.2. Schedule-Tag ......................................54
+ 12.1.3. If-Schedule-Tag-Match .............................54
+ 12.2. iCalendar Property Parameter Registrations ...............55
+ 12.3. iCalendar REQUEST-STATUS Value Registrations .............55
+ 12.4. Additional iCalendar Elements Registries .................55
+ 12.4.1. Schedule Agent Values Registry ....................56
+ 12.4.2. Schedule Force Send Values Registry ...............56
+ 13. Acknowledgements ..............................................56
+ 14. References ....................................................57
+ 14.1. Normative References .....................................57
+ 14.2. Informative References ...................................58
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 4]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Appendix A. Scheduling Privileges Summary .........................59
+ A.1. Scheduling Inbox Privileges ................................59
+ A.2. Scheduling Outbox Privileges ...............................60
+ Appendix B. Example Scheduling Operations .........................60
+ B.1. Example: "Organizer" Inviting Multiple "Attendees" .........61
+ B.2. Example: "Attendee" Receiving an Invitation ................63
+ B.3. Example: "Attendee" Replying to an Invitation ..............64
+ B.4. Example: "Organizer" Receiving a Reply to an Invitation ....66
+ B.5. Example: "Organizer" Requesting Busy Time Information ......69
+ B.6. Example: User Attempting to Invite "Attendee" on
+ Behalf of "Organizer" ......................................71
+ B.7. Example: "Attendee" Declining an Instance of a
+ Recurring Event ............................................72
+ B.8. Example: "Attendee" Removing an Instance of a
+ Recurring Event ............................................75
+
+1. Introduction
+
+ This document specifies extensions to the CalDAV "calendar-access"
+ [RFC4791] feature to enable scheduling of iCalendar-based [RFC5545]
+ calendar components between calendar users.
+
+ This extension leverages the scheduling methods defined in the
+ iCalendar Transport-independent Interoperability Protocol (iTIP)
+ [RFC5546] to permit calendar users to perform scheduling operations
+ such as schedule, reschedule, respond to scheduling request, or
+ cancel calendar components, as well as search for busy time
+ information. However, the following iTIP [RFC5546] features are not
+ covered: publishing, countering, delegating, refreshing, and
+ forwarding calendar components, as well as replacing the "Organizer"
+ of a calendar component. It is expected that future extensions will
+ be developed to address these.
+
+ This specification defines a client/server scheduling protocol, where
+ the server is made responsible for sending scheduling messages and
+ processing incoming scheduling messages. The client operations of
+ creating, modifying, or deleting a calendar component in a calendar
+ are enough to trigger the server to deliver the necessary scheduling
+ messages to the appropriate calendar users. This approach is
+ sometimes referred to as "implicit scheduling".
+
+ This specification only addresses how scheduling occurs with users on
+ a single system (i.e., scheduling between CalDAV servers, or some
+ other calendaring and scheduling system, is not defined). However,
+ this specification is compatible with servers being able to send or
+ receive scheduling messages with "external" users (e.g., using the
+ iCalendar Message-Based Interoperability Protocol (iMIP) [RFC6047]).
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 5]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Section 3 defines the automated "Scheduling Operations" that allow a
+ client to store iCalendar data on a CalDAV server, with the server
+ taking specific actions in response. One of three scheduling
+ operations can take place -- "create", "modify", or "remove", based
+ on the HTTP method used for the request -- in addition to a
+ comparison between any existing and any new iCalendar data.
+
+ Section 4 defines how the server processes scheduling messages sent
+ as the result of a scheduling operation.
+
+ Section 5 defines how freebusy requests with an immediate response
+ are accomplished.
+
+ Section 6 defines access control privileges for the scheduling
+ operations defined in this specification.
+
+ For the majority of the following discussion, scheduling of events
+ will be discussed. However, scheduling of to-dos is also fully
+ supported by this specification.
+
+ This specification has been under development for a number of years,
+ and most current implementations of CalDAV support it. With the
+ publication of this document, it is expected that all new CalDAV
+ implementations will support it by default. Interoperability tests
+ have been performed regularly. Significant issues with incompatible
+ CalDAV implementations are not anticipated.
+
+1.1. Terminology
+
+ This specification reuses much of the same terminology as iCalendar
+ [RFC5545], iTIP [RFC5546], WebDAV [RFC4918], and CalDAV [RFC4791].
+ Additional terms used by this specification are as follows:
+
+ Scheduling object resource: A calendar object resource contained in
+ a calendar collection for which the server will take care of
+ sending scheduling messages on behalf of the owner of the calendar
+ collection.
+
+ Organizer scheduling object resource: A scheduling object resource
+ owned by the "Organizer".
+
+ Attendee scheduling object resource: A scheduling object resource
+ owned by an "Attendee".
+
+ Scheduling operation: Add, change, or remove operations on a
+ scheduling object resource for which the server will deliver
+ scheduling messages to other calendar users.
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 6]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Scheduling message: A calendar object that describes a scheduling
+ operation such as schedule, reschedule, reply, or cancel.
+
+ Scheduling Outbox collection: A resource at which busy time
+ information requests are targeted.
+
+ Scheduling Inbox collection: A collection in which incoming
+ scheduling messages are delivered.
+
+1.2. Notational Conventions
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC2119].
+
+ The Augmented BNF (ABNF) syntax used by this document to specify the
+ format definition of new iCalendar elements is defined in [RFC5234].
+
+ The ABNF syntax used by this document to specify the format
+ definition of new message header fields to be used with the HTTP/1.1
+ protocol is described in Section 2.1 of [RFC2616]. Since this
+ Augmented BNF uses the basic production rules provided in Section 2.2
+ of [RFC2616], these rules apply to this document as well.
+
+ The term "protected" is used in the Conformance field of WebDAV
+ property definitions as defined in Section 15 of [RFC4918].
+
+ Calendaring and scheduling roles are referred to in quoted-strings of
+ text with the first character of each word in uppercase. For
+ example, "Organizer" refers to a role of a calendar user within the
+ scheduling protocol defined by [RFC5546].
+
+1.3. XML Namespaces and Processing
+
+ This document uses XML DTD fragments ([W3C.REC-xml-20081126],
+ Section 3.2) as a purely notational convention. WebDAV request and
+ response bodies cannot be validated by a DTD due to the specific
+ extensibility rules defined in Section 17 of [RFC4918] and due to the
+ fact that all XML elements defined by that specification use the XML
+ namespace name "DAV:". In particular,
+
+ 1. element names use the "DAV:" namespace,
+
+ 2. element ordering is irrelevant unless explicitly stated,
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 7]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ 3. extension elements (elements not already defined as valid child
+ elements) can be added anywhere, except when explicitly stated
+ otherwise, and
+
+ 4. extension attributes (attributes not already defined as valid for
+ this element) can be added anywhere, except when explicitly
+ stated otherwise.
+
+ The XML elements specified in this document are defined in the
+ "urn:ietf:params:xml:ns:caldav" XML namespace registered by CalDAV
+ [RFC4791].
+
+ When XML element types in the namespaces "DAV:" and
+ "urn:ietf:params:xml:ns:caldav" are referenced in this document
+ outside of the context of an XML fragment, the strings "DAV:" and
+ "CALDAV:" will be prefixed to the element types, respectively.
+
+ This document inherits, and sometimes extends, DTD productions from
+ Section 14 of [RFC4918].
+
+ Also note that some CalDAV XML element names are identical to WebDAV
+ XML element names, though their namespace differs. Care needs to be
+ taken not to confuse the two sets of names.
+
+2. Scheduling Support
+
+ A server that supports the features described in this document is
+ REQUIRED to support the CalDAV "calendar-access" [RFC4791] feature.
+ Servers include "calendar-auto-schedule" as a field in the DAV
+ response header from an OPTIONS request on any resource that supports
+ any scheduling operations, properties, privileges, or methods.
+
+ This specification introduces new collection resource types that are
+ used to manage scheduling object resources, and scheduling privileges
+ (as per Section 6), as well as provide scheduling functionality. It
+ is the server's responsibility to create these collection resources,
+ and clients have no way to create or delete them.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 8]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+2.1. Scheduling Outbox Collection
+
+ A scheduling Outbox collection is used as the target for busy time
+ information requests, and to manage privileges that apply to outgoing
+ scheduling requests.
+
+ A scheduling Outbox collection MUST report the DAV:collection and
+ CALDAV:schedule-outbox XML elements in the value of the DAV:
+ resourcetype property. The element type declaration for CALDAV:
+ schedule-outbox is
+
+ <!ELEMENT schedule-outbox EMPTY>
+
+ Example:
+
+ <D:resourcetype xmlns:D="DAV:">
+ <D:collection/>
+ <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
+ </D:resourcetype>
+
+ A scheduling Outbox collection MUST NOT be a child (at any depth) of
+ a calendar collection resource.
+
+ The following WebDAV properties specified in CalDAV "calendar-access"
+ [RFC4791] MAY also be defined on scheduling Outbox collections and
+ apply to scheduling messages submitted to the scheduling Outbox
+ collection with the POST method:
+
+ o CALDAV:supported-calendar-component-set
+
+ o CALDAV:supported-calendar-data
+
+ o CALDAV:max-resource-size
+
+ o CALDAV:min-date-time
+
+ o CALDAV:max-date-time
+
+ o CALDAV:max-attendees-per-instance
+
+ The use of child resources in a scheduling Outbox collection is
+ reserved for future revisions or extensions of this specification.
+
+ The following WebDAV property is defined on principal resources and
+ used to locate the corresponding Outbox collection for the associated
+ principal.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 9]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+2.1.1. CALDAV:schedule-outbox-URL Property
+
+ Name: schedule-outbox-URL
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Identify the URL of the scheduling Outbox collection owned
+ by the associated principal resource.
+
+ Protected: This property MAY be protected.
+
+ PROPFIND behavior: This property SHOULD NOT be returned by a
+ PROPFIND DAV:allprop request (as defined in Section 14.2 of
+ [RFC4918]).
+
+ COPY/MOVE behavior: This property value SHOULD be preserved in COPY
+ and MOVE operations.
+
+ Description: This property is needed for a client to determine where
+ the scheduling Outbox collection of the current user is located so
+ that sending of scheduling messages can occur. If not present,
+ then the associated calendar user is not enabled for the sending
+ of scheduling messages on the server.
+
+ Definition:
+
+ <!ELEMENT schedule-outbox-URL (DAV:href)>
+
+2.2. Scheduling Inbox Collection
+
+ A scheduling Inbox collection contains copies of incoming scheduling
+ messages. These can be requests sent by an "Organizer", or replies
+ sent by an "Attendee" in response to a request. The scheduling Inbox
+ collection is also used to manage scheduling privileges.
+
+ A scheduling Inbox collection MUST report the DAV:collection and
+ CALDAV:schedule-inbox XML elements in the value of the DAV:
+ resourcetype property. The element type declaration for CALDAV:
+ schedule-inbox is
+
+ <!ELEMENT schedule-inbox EMPTY>
+
+ Example:
+
+ <D:resourcetype xmlns:D="DAV:">
+ <D:collection/>
+ <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/>
+ </D:resourcetype>
+
+
+
+Daboo & Desruisseaux Standards Track [Page 10]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Scheduling Inbox collections MUST only contain calendar object
+ resources that obey the restrictions specified in iTIP [RFC5546].
+ Consequently, scheduling Inbox collections MUST NOT contain any types
+ of collection resources. Restrictions defined in Section 4.1 of
+ CalDAV "calendar-access" [RFC4791] on calendar object resources
+ contained in calendar collections (e.g., Unique Identifier ("UID")
+ uniqueness) do not apply to calendar object resources contained in a
+ scheduling Inbox collection. Thus, multiple calendar object
+ resources contained in a scheduling Inbox collection can have the
+ same "UID" property value (i.e., multiple scheduling messages for the
+ same calendar component).
+
+ A scheduling Inbox collection MUST NOT be a child (at any depth) of a
+ calendar collection resource.
+
+ The following WebDAV properties specified in CalDAV "calendar-access"
+ [RFC4791] MAY also be defined on scheduling Inbox collections and
+ apply to scheduling messages delivered to the collection:
+
+ o CALDAV:supported-calendar-component-set
+
+ o CALDAV:supported-calendar-data
+
+ o CALDAV:max-resource-size
+
+ o CALDAV:min-date-time
+
+ o CALDAV:max-date-time
+
+ o CALDAV:max-instances
+
+ o CALDAV:max-attendees-per-instance
+
+ o CALDAV:calendar-timezone
+
+ The following WebDAV property is defined on principal resources and
+ used to locate the corresponding Inbox collection for the associated
+ principal.
+
+2.2.1. CALDAV:schedule-inbox-URL Property
+
+ Name: schedule-inbox-URL
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Identify the URL of the scheduling Inbox collection owned
+ by the associated principal resource.
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 11]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Protected: This property MAY be protected.
+
+ PROPFIND behavior: This property SHOULD NOT be returned by a
+ PROPFIND DAV:allprop request (as defined in Section 14.2 of
+ [RFC4918]).
+
+ COPY/MOVE behavior: This property value SHOULD be preserved in COPY
+ and MOVE operations.
+
+ Description: This property allows a client to determine where the
+ scheduling Inbox collection of the current user is located so that
+ processing of scheduling messages can occur. If not present, then
+ the associated calendar user is not enabled for reception of
+ scheduling messages on the server.
+
+ Definition:
+
+ <!ELEMENT schedule-inbox-URL (DAV:href)>
+
+2.3. Calendaring Reports Extensions
+
+ This specification extends the CALDAV:calendar-query and CALDAV:
+ calendar-multiget REPORTs to return results for calendar object
+ resources in scheduling Inbox collections.
+
+ When a CALDAV:calendar-query REPORT includes a time-range query and
+ targets a scheduling Inbox collection, if any calendar object
+ resources contain "VEVENT" calendar components that do not include a
+ "DTSTART" iCalendar property (as allowed by iTIP [RFC5546]) then such
+ components MUST always match the time-range query test.
+
+ Note that the CALDAV:free-busy-query REPORT is not supported on
+ scheduling Inbox collections.
+
+2.4. Additional Principal Properties
+
+ This section defines new properties for WebDAV principal resources as
+ defined in [RFC3744]. These properties are likely to be protected,
+ but the server MAY allow them to be written by appropriate users.
+
+2.4.1. CALDAV:calendar-user-address-set Property
+
+ Name: calendar-user-address-set
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Identify the calendar addresses of the associated principal
+ resource.
+
+
+
+Daboo & Desruisseaux Standards Track [Page 12]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Protected: This property MAY be protected.
+
+ PROPFIND behavior: This property SHOULD NOT be returned by a
+ PROPFIND DAV:allprop request (as defined in Section 14.2 of
+ [RFC4918]).
+
+ COPY/MOVE behavior: This property value SHOULD be preserved in COPY
+ and MOVE operations.
+
+ Description: Support for this property is REQUIRED. This property
+ is needed to map calendar user addresses in iCalendar data to
+ principal resources and their associated scheduling Inbox and
+ Outbox collections. In the event that a user has no well-defined
+ identifier for his calendar user address, the URI of his principal
+ resource can be used. This property SHOULD be searchable using
+ the DAV:principal-property-search REPORT. The DAV:principal-
+ search-property-set REPORT SHOULD identify this property as such.
+ If not present, then the associated calendar user is not enabled
+ for scheduling on the server.
+
+ Definition:
+
+ <!ELEMENT calendar-user-address-set (DAV:href*)>
+
+ Example:
+
+ <C:calendar-user-address-set xmlns:D="DAV:"
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:href>mailto:bernard at example.com</D:href>
+ <D:href>mailto:bernard.desruisseaux at example.com</D:href>
+ </C:calendar-user-address-set>
+
+2.4.2. CALDAV:calendar-user-type Property
+
+ Name: calendar-user-type
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Identifies the calendar user type of the associated
+ principal resource.
+
+ Value: Same values allowed for the iCalendar "CUTYPE" property
+ parameter defined in Section 3.2.3 of [RFC5545].
+
+ Protected: This property MAY be protected.
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 13]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ PROPFIND behavior: This property SHOULD NOT be returned by a
+ PROPFIND DAV:allprop request (as defined in Section 14.2 of
+ [RFC4918]).
+
+ COPY/MOVE behavior: This property value SHOULD be preserved in COPY
+ and MOVE operations.
+
+ Description: Clients can query principal resources in order to look
+ up "Attendees" available on the server. When doing this, it is
+ useful to know, or restrict the query to, certain types of
+ calendar users (e.g., only search for "people", or only search for
+ "rooms"). This property MAY be defined on principal resources to
+ indicate the type of calendar user associated with the principal
+ resource. Its value is the same as the iCalendar "CUTYPE"
+ property parameter that can be used on "ATTENDEE" properties.
+ This property SHOULD be searchable using the DAV:principal-
+ property-search REPORT. The DAV:principal-search-property-set
+ REPORT SHOULD identify this property as such.
+
+ Definition:
+
+ <!ELEMENT calendar-user-type (#PCDATA)>
+
+ Example:
+
+ <C:calendar-user-type
+ xmlns:C="urn:ietf:params:xml:ns:caldav">INDIVIDUAL<
+ /C:calendar-user-type>
+
+3. Scheduling Operations
+
+ When a calendar object resource is created, modified, or removed from
+ a calendar collection, the server examines the calendar data and
+ checks to see whether the data represents a scheduling object
+ resource. If it does, the server will automatically attempt to
+ deliver a scheduling message to the appropriate calendar users.
+ Several types of scheduling operations can occur in this case,
+ equivalent to iTIP "REQUEST", "REPLY", "CANCEL", and "ADD"
+ operations.
+
+3.1. Identifying Scheduling Object Resources
+
+ Calendar object resources on which the server performs scheduling
+ operations are referred to as scheduling object resources. There are
+ two types of scheduling object resources: organizer scheduling object
+ resources, and attendee scheduling object resources.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 14]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ A calendar object resource is considered to be a valid organizer
+ scheduling object resource if the "ORGANIZER" iCalendar property is
+ present and set in all the calendar components to a value that
+ matches one of the calendar user addresses of the owner of the
+ calendar collection.
+
+ A calendar object resource is considered to be a valid attendee
+ scheduling object resource if the "ORGANIZER" iCalendar property is
+ present and set in all the calendar components to the same value and
+ doesn't match one of the calendar user addresses of the owner of the
+ calendar collection, and if at least one of the "ATTENDEE" iCalendar
+ property values matches one of the calendar user addresses of the
+ owner of the calendar collection.
+
+ The creation of attendee scheduling object resources is typically
+ done by the server, with the resource being created in an appropriate
+ calendar collection (see Section 4.3).
+
+3.2. Handling Scheduling Object Resources
+
+ The server's behavior when processing a scheduling object resource
+ depends on whether it is owned by the "Organizer" or an "Attendee"
+ specified in the calendar data.
+
+3.2.1. Organizer Scheduling Object Resources
+
+ An "Organizer" can create, modify, or remove a scheduling object
+ resource, subject to access privileges, preconditions, and the
+ restrictions defined in Section 4.1 of [RFC4791]. These operations
+ are each described next, and how they are invoked via HTTP requests
+ is described in Section 3.2.3.
+
+ The "Organizer" of a calendar component can also be an "Attendee" of
+ that calendar component. In such cases, the server MUST NOT send a
+ scheduling message to the "Attendee" that matches the "Organizer".
+
+ The server SHOULD reject any attempt to set the "PARTSTAT" iCalendar
+ property parameter value of the "ATTENDEE" iCalendar property of
+ other users in the calendar object resource to a value other than
+ "NEEDS-ACTION" if the "SCHEDULE-AGENT" property parameter value is
+ not present or set to the value "SERVER".
+
+ The server MAY reject attempts to create a scheduling object resource
+ that specifies a "UID" property value already specified in a
+ scheduling object resource contained in another calendar collection
+ of the "Organizer".
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 15]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.1.1. Create
+
+ When an "Organizer" creates a scheduling object resource, the server
+ MUST inspect each "ATTENDEE" property to determine whether to send a
+ scheduling message. The table below indicates the appropriate iTIP
+ method used by the server, taking into account any "SCHEDULE-AGENT"
+ property parameter (see Section 7.1) specified on each "ATTENDEE"
+ property.
+
+ +------------------+-------------+
+ | SCHEDULE-AGENT | iTIP METHOD |
+ +------------------+-------------+
+ | SERVER (default) | REQUEST |
+ | | |
+ | CLIENT | -- |
+ | | |
+ | NONE | -- |
+ +------------------+-------------+
+
+ "SCHEDULE-STATUS" iCalendar property parameters are added or changed
+ on "ATTENDEE" iCalendar properties in the scheduling object resource
+ being created as described in Section 7.3, with the value set as
+ described in Section 3.2.9. This will result in the created calendar
+ object resource differing from the calendar data sent in the HTTP
+ request. As a result, clients MAY reload the calendar data from the
+ server in order to update to the new server-generated state
+ information.
+
+ The server MUST add a "SCHEDULE-STATUS" iCalendar property parameter
+ (see Section 7.3) to the "ATTENDEE" iCalendar property in the
+ scheduling object resource being created, and set its value as
+ described in Section 3.2.9. This will result in the created calendar
+ object resource differing from the calendar data sent in the HTTP
+ request. As a result, clients MAY reload the calendar data from the
+ server in order to update to the new server-generated state
+ information. Servers MUST NOT set the "SCHEDULE-STATUS" property
+ parameter on the "ATTENDEE" property of "Attendees" for which it did
+ not attempt to deliver a scheduling message.
+
+ The server MUST return an error with the CALDAV:allowed-organizer-
+ scheduling-object-change precondition code (Section 3.2.4.3) when the
+ "Organizer" attempts to change the iCalendar data in a manner that is
+ forbidden.
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 16]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.1.2. Modify
+
+ When an "Organizer" modifies a scheduling object resource, the server
+ MUST inspect each "ATTENDEE" property in both the original and
+ modified iCalendar data on a per-instance basis to determine whether
+ to send a scheduling message. The table below indicates the
+ appropriate iTIP method used by the server, taking into account any
+ "SCHEDULE-AGENT" property parameter (see Section 7.1) specified on
+ each "ATTENDEE" property. The values "SERVER", "CLIENT", and "NONE"
+ in the top and left titles of the table refer to the "SCHEDULE-AGENT"
+ parameter value of the "ATTENDEE" property, and the values "<Absent>"
+ and "<Removed>" are used to cover the cases where the "ATTENDEE"
+ property is not present (Original) or is being removed (Modified).
+
+ +---------------+-----------------------------------------------+
+ | | Modified |
+ | +-----------+-----------+-----------+-----------+
+ | | <Removed> | SERVER | CLIENT | NONE |
+ | | | (default) | | |
+ +===+===========+===========+===========+===========+===========+
+ | | <Absent> | -- | REQUEST / | -- | -- |
+ | O | | | ADD | | |
+ | r +-----------+-----------+-----------+-----------+-----------+
+ | i | SERVER | CANCEL | REQUEST | CANCEL | CANCEL |
+ | g | (default) | | | | |
+ | i +-----------+-----------+-----------+-----------+-----------+
+ | n | CLIENT | -- | REQUEST / | -- | -- |
+ | a | | | ADD | | |
+ | l +-----------+-----------+-----------+-----------+-----------+
+ | | NONE | -- | REQUEST / | -- | -- |
+ | | | | ADD | | |
+ +---+-----------+-----------+-----------+-----------+-----------+
+
+ "SCHEDULE-STATUS" iCalendar property parameters are added or changed
+ on "ATTENDEE" iCalendar properties in the scheduling object resource
+ being modified as described in Section 7.3, with the value set as
+ described in Section 3.2.9. This will result in the created calendar
+ object resource differing from the calendar data sent in the HTTP
+ request. As a result, clients MAY reload the calendar data from the
+ server in order to update to the new server-generated state
+ information.
+
+ The server MUST return an error with the CALDAV:allowed-organizer-
+ scheduling-object-change precondition code (Section 3.2.4.3) when the
+ "Organizer" attempts to change the iCalendar data in a manner that is
+ forbidden.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 17]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.1.3. Remove
+
+ When an "Organizer" removes a scheduling object resource, the server
+ MUST inspect each "ATTENDEE" property to determine whether to send a
+ scheduling message. The table below indicates the appropriate iTIP
+ method used by the server, taking into account any "SCHEDULE-AGENT"
+ property parameter (see Section 7.1) specified on each "ATTENDEE"
+ property.
+
+ +------------------+-------------+
+ | SCHEDULE-AGENT | iTIP METHOD |
+ +------------------+-------------+
+ | SERVER (default) | CANCEL |
+ | | |
+ | CLIENT | -- |
+ | | |
+ | NONE | -- |
+ +------------------+-------------+
+
+3.2.2. Attendee Scheduling Object Resources
+
+ An "Attendee" can create, modify, or remove a scheduling object
+ resource. These operations are each described next, and how they are
+ invoked via HTTP requests is described in Section 3.2.3.
+
+3.2.2.1. Allowed "Attendee" Changes
+
+ "Attendees" are allowed to make some changes to a scheduling object
+ resource, though key properties such as start time, end time,
+ location, and summary are typically under the control of the
+ "Organizer".
+
+ Servers MUST allow "Attendees" to make the following iCalendar data
+ changes, subject to other restrictions, such as access privileges and
+ preconditions:
+
+ 1. change their own "PARTSTAT" iCalendar property parameter value.
+
+ 2. add, modify, or remove any "TRANSP" iCalendar properties.
+
+ 3. add, modify, or remove any "PERCENT-COMPLETE" iCalendar
+ properties.
+
+ 4. add, modify, or remove any "COMPLETED" iCalendar properties.
+
+ 5. add, modify, or remove any "VALARM" iCalendar components.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 18]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ 6. add, modify, or remove the "CALSCALE" iCalendar property within
+ the top-level "VCALENDAR" component.
+
+ 7. modify the "PRODID" iCalendar property within the top-level
+ "VCALENDAR" component.
+
+ 8. add "EXDATE" iCalendar properties and possibly remove components
+ for overridden recurrence instances.
+
+ 9. add, modify, or remove any "CREATED", "DTSTAMP", and
+ "LAST-MODIFIED" iCalendar properties.
+
+ 10. add, modify, or remove "SCHEDULE-STATUS" iCalendar property
+ parameters on "ATTENDEE" properties that have a "SCHEDULE-AGENT"
+ parameter set to "CLIENT".
+
+ 11. add new components to represent overridden recurrence instances,
+ provided the only changes to the recurrence instance follow the
+ rules above.
+
+ The server MUST return an error with the CALDAV:allowed-attendee-
+ scheduling-object-change precondition code (Section 3.2.4.4) when the
+ "Attendee" attempts to change the iCalendar data in a manner
+ forbidden by the server.
+
+3.2.2.2. Create
+
+ Typically, an "Attendee" does not create scheduling object resources,
+ as scheduling messages delivered to him on the server are
+ automatically processed by the server and placed on one of his
+ calendars (see Section 4). However, in some cases, a scheduling
+ message can get delivered directly to the client (e.g., via email
+ [RFC6047]), and the "Attendee" might wish to store that on the
+ server. In that case, the client creates a scheduling object
+ resource in a calendar belonging to the "Attendee". It can then set
+ the "SCHEDULE-AGENT" iCalendar property parameter on all "ORGANIZER"
+ iCalendar properties in the resource to determine how the server
+ treats the resource. The value of the "SCHEDULE-AGENT" iCalendar
+ property parameter on all "ORGANIZER" iCalendar properties MUST be
+ the same.
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 19]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ +----------------+--------------------------------------------------+
+ | SCHEDULE-AGENT | Action |
+ +----------------+--------------------------------------------------+
+ | SERVER | The server will attempt to process changes to |
+ | (default) | the resource using the normal rules for attendee |
+ | | scheduling object resources. |
+ | | |
+ | CLIENT | The server does no special processing of the |
+ | | resource. The client is assumed to be handling |
+ | | "Attendee" replies, etc. |
+ | | |
+ | NONE | The server does no special processing of the |
+ | | resource. |
+ +----------------+--------------------------------------------------+
+
+ "SCHEDULE-STATUS" iCalendar property parameters are added or changed
+ on "ORGANIZER" iCalendar properties in the scheduling object resource
+ being created as described in Section 7.3, with the value set as
+ described in Section 3.2.9.
+
+3.2.2.3. Modify
+
+ When a scheduling object resource is modified by an "Attendee", the
+ server's behavior depends on the value of the "SCHEDULE-AGENT"
+ iCalendar property parameter on the "ORGANIZER" iCalendar properties:
+
+ +----------------+--------------------------------------------------+
+ | SCHEDULE-AGENT | Action |
+ +----------------+--------------------------------------------------+
+ | SERVER | The server will attempt to process the update |
+ | (default) | using the behavior listed below. |
+ | | |
+ | CLIENT | The server does no special processing of the |
+ | | resource. The client is assumed to be handling |
+ | | any "Attendee" replies, etc. |
+ | | |
+ | NONE | The server does no special processing of the |
+ | | resource. |
+ +----------------+--------------------------------------------------+
+
+ The server will inspect the changes by comparing the new scheduling
+ object resource with the existing scheduling object resource.
+
+ If the "Attendee" changes one or more "PARTSTAT" iCalendar property
+ values on any component, or adds an overridden component with a
+ changed "PARTSTAT" property, then the server MUST deliver an iTIP
+ "REPLY" scheduling message to the "Organizer" to indicate the new
+ participation status of the "Attendee".
+
+
+
+Daboo & Desruisseaux Standards Track [Page 20]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ If the "Attendee" adds an "EXDATE" property value to effectively
+ remove a recurrence instance, the server MUST deliver an iTIP "REPLY"
+ scheduling message to the "Organizer" to indicate that the "Attendee"
+ has declined the instance.
+
+ "SCHEDULE-STATUS" iCalendar property parameters are added or changed
+ on "ORGANIZER" iCalendar properties in the scheduling object resource
+ being modified as described in Section 7.3, with the value set as
+ described in Section 3.2.9. This will result in the updated calendar
+ object resource differing from the calendar data sent in the HTTP
+ request. As a result, clients MAY reload the calendar data from the
+ server in order to update to the new server-generated state
+ information.
+
+3.2.2.4. Remove
+
+ When a scheduling object resource is removed by an "Attendee", the
+ server's behavior depends on the value of the "SCHEDULE-AGENT"
+ iCalendar property parameter on the "ORGANIZER" iCalendar properties:
+
+ +----------------+--------------------------------------------------+
+ | SCHEDULE-AGENT | Action |
+ +----------------+--------------------------------------------------+
+ | SERVER | The server will attempt to process the removal, |
+ | (default) | taking into account any "Schedule-Reply" request |
+ | | header as per Section 8.1. |
+ | | |
+ | CLIENT | The server does no special processing of the |
+ | | resource. The client is assumed to be handling |
+ | | any "Attendee" replies, etc. |
+ | | |
+ | NONE | The server does no special processing of the |
+ | | resource. |
+ +----------------+--------------------------------------------------+
+
+3.2.3. HTTP Methods
+
+ This section describes how the use of various HTTP [RFC2616] and
+ WebDAV [RFC4918] methods on a scheduling object resource will cause a
+ create, modify, or remove operation on that resource as described
+ above. The use of these methods is subject to the restrictions in
+ [RFC4791], in addition to what is described below.
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 21]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.3.1. PUT
+
+ When the server receives a PUT method request, it MUST execute the
+ following operations, provided all appropriate preconditions are met:
+
+ +------------------------+--------------------------+---------------+
+ | Existing Destination | Resulting Destination | Server |
+ | Resource | Resource | Operation |
+ +------------------------+--------------------------+---------------+
+ | None | Calendar object resource | None |
+ | | | |
+ | None | Scheduling object | Create |
+ | | resource | |
+ | | | |
+ | Calendar object | Calendar object resource | None |
+ | resource | | |
+ | | | |
+ | Calendar object | Scheduling object | Create |
+ | resource | resource | |
+ | Scheduling object | Calendar object resource | Remove |
+ | resource | | |
+ | | | |
+ | Scheduling object | Scheduling object | Modify |
+ | resource | resource | |
+ +------------------------+--------------------------+---------------+
+
+3.2.3.2. DELETE
+
+ When the server receives a DELETE method request targeted at a
+ scheduling object resource, it MUST execute the Remove operation.
+
+ When the server receives a DELETE method request targeted at a
+ calendar collection, it MUST execute the Remove operation on all
+ scheduling object resources contained in the calendar collection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 22]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.3.3. COPY
+
+ When the server receives a COPY method request, it MUST execute the
+ following operations based on the source and destination collections
+ in the request:
+
+ +-----------------------+------------------------+------------------+
+ | Source Collection | Destination Collection | Server Operation |
+ +-----------------------+------------------------+------------------+
+ | Non-calendar | Non-calendar | None |
+ | collection | collection | |
+ | | | |
+ | Non-calendar | Calendar collection | (1) |
+ | collection | | |
+ | | | |
+ | Calendar collection | Non-calendar | None |
+ | | collection | |
+ | | | |
+ | Calendar collection | Calendar collection | (2) |
+ +-----------------------+------------------------+------------------+
+
+ Note (1): The rules in Section 3.2.3.1 are applied for the
+ destination of the COPY request.
+
+ Note (2): The server MAY reject this as per Section 3.2.4.1;
+ otherwise, None.
+
+ The behavior of a COPY method request on a calendar collection is
+ undefined.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 23]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.3.4. MOVE
+
+ When the server receives a MOVE method request, it MUST execute the
+ following operations based on the source and destination collections
+ in the request:
+
+ +-----------------------+------------------------+------------------+
+ | Source Collection | Destination Collection | Server Operation |
+ +-----------------------+------------------------+------------------+
+ | Non-calendar | Non-calendar | None |
+ | collection | collection | |
+ | | | |
+ | Non-calendar | Calendar collection | (1) |
+ | collection | | |
+ | | | |
+ | Calendar collection | Non-calendar | (2) |
+ | | collection | |
+ | | | |
+ | Calendar collection | Calendar collection | None |
+ +-----------------------+------------------------+------------------+
+
+ Note (1): The rules in Section 3.2.3.1 are applied for the
+ destination of the MOVE request.
+
+ Note (2): The rules in Section 3.2.3.2 are applied for the source of
+ the MOVE request.
+
+ The behavior of a MOVE method request on a calendar collection is
+ undefined.
+
+3.2.4. Additional Method Preconditions
+
+ This specification defines method preconditions (see Section 16 of
+ WebDAV [RFC4918]), in addition to those in [RFC4791], to provide
+ machine-parseable information in error responses.
+
+3.2.4.1. CALDAV:unique-scheduling-object-resource Precondition
+
+ Name: unique-scheduling-object-resource
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: PUT, COPY, and MOVE
+
+ Use with: 403 Forbidden
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 24]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Purpose: (precondition) -- Servers MAY reject requests to create a
+ scheduling object resource with an iCalendar "UID" property value
+ already in use by another scheduling object resource owned by the
+ same user in other calendar collections. Servers SHOULD report
+ the URL of the scheduling object resource that is already making
+ use of the same "UID" property value in the DAV:href element.
+
+ Definition:
+
+ <!ELEMENT unique-scheduling-object-resource (DAV:href?)>
+
+ Example:
+
+ <C:unique-scheduling-object-resource xmlns:D="DAV:"
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:href>/home/bernard/calendars/personal/abc123.ics</D:href>
+ </C:unique-scheduling-object-resource>
+
+3.2.4.2. CALDAV:same-organizer-in-all-components Precondition
+
+ Name: same-organizer-in-all-components
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: PUT, COPY, and MOVE
+
+ Use with: 403 Forbidden
+
+ Purpose: (precondition) -- All the calendar components in a
+ scheduling object resource MUST contain the same "ORGANIZER"
+ property value when present.
+
+ Definition:
+
+ <!ELEMENT same-organizer-in-all-components EMPTY>
+
+3.2.4.3. CALDAV:allowed-organizer-scheduling-object-change Precondition
+
+ Name: allowed-organizer-scheduling-object-change
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: PUT, COPY, and MOVE
+
+ Use with: 403 Forbidden
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 25]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Purpose: (precondition) -- Servers MAY impose restrictions on
+ modifications allowed by an "Organizer". For instance, servers
+ MAY prevent the "Organizer" from setting the "PARTSTAT" property
+ parameter to a value other than "NEEDS-ACTION" if the
+ corresponding "ATTENDEE" property has the "SCHEDULE-AGENT"
+ property parameter set to "SERVER", or does not have the
+ "SCHEDULE-AGENT" property parameter. See Section 3.2.1.
+
+ Definition:
+
+ <!ELEMENT allowed-organizer-scheduling-object-change EMPTY>
+
+3.2.4.4. CALDAV:allowed-attendee-scheduling-object-change Precondition
+
+ Name: allowed-attendee-scheduling-object-change
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: PUT, COPY, and MOVE
+
+ Use with: 403 Forbidden
+
+ Purpose: (precondition) -- Servers MAY impose restrictions on
+ modifications allowed by an "Attendee", subject to the allowed
+ changes specified in Section 3.2.2.1.
+
+ Definition:
+
+ <!ELEMENT allowed-attendee-scheduling-object-change EMPTY>
+
+3.2.5. DTSTAMP and SEQUENCE Properties
+
+ The server MUST ensure that a "DTSTAMP" iCalendar property is present
+ and set the value to the UTC time that the scheduling message was
+ generated (as required by iCalendar).
+
+ The server MUST ensure that for each type of scheduling operation,
+ the "SEQUENCE" iCalendar property value is updated as per iTIP
+ [RFC5546].
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 26]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.6. Restrict Recurrence Instances Sent to "Attendees"
+
+ Servers MUST ensure that "Attendees" only get information about
+ recurrence instances that explicitly include them as an "Attendee",
+ when delivering scheduling messages for recurring calendar
+ components.
+
+ For example, if an "Attendee" is invited to only a single instance of
+ a recurring event, the organizer scheduling object resource will
+ contain an overridden instance in the form of a separate calendar
+ component. That separate calendar component will include the
+ "ATTENDEE" property referencing the "one-off" "Attendee". That
+ "Attendee" will not be listed in any other calendar components in the
+ scheduling object resource. Any scheduling messages delivered to the
+ "Attendee" will only contain information about this overridden
+ instance.
+
+ As another example, an "Attendee" could be excluded from one instance
+ of a recurring event. In that case, the organizer scheduling object
+ resource will include an overridden instance with an "ATTENDEE" list
+ that does not include the "Attendee" being excluded. Any scheduling
+ messages delivered to the "Attendee" will not specify the overridden
+ instance but rather will include an "EXDATE" property in the "master"
+ component that defines the recurrence set.
+
+3.2.7. Forcing the Server to Send a Scheduling Message
+
+ The iCalendar property parameter "SCHEDULE-FORCE-SEND", defined in
+ Section 7.2, can be used by a calendar user to force the server to
+ send a scheduling message to an "Attendee" or the "Organizer" in a
+ situation where the server would not normally send a scheduling
+ message. For instance, an "Organizer" could use this property
+ parameter to request an "Attendee" that previously declined an
+ invitation to reconsider his participation status without being
+ forced to modify the event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 27]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.8. "Attendee" Participation Status
+
+ This section specifies additional requirements on the handling of the
+ "PARTSTAT" property parameter when the "SCHEDULE-AGENT" property
+ parameter on the corresponding "ATTENDEE" property is set to the
+ value "SERVER" or is not present.
+
+ A reschedule occurs when any "DTSTART", "DTEND", "DURATION", "DUE",
+ "RRULE", "RDATE", or "EXDATE" property changes in a calendar
+ component such that existing recurrence instances are impacted by the
+ changes, as shown in the table below. Servers MUST reset the
+ "PARTSTAT" property parameter value of all "ATTENDEE" properties,
+ except the one that corresponds to the "Organizer", to "NEEDS-ACTION"
+ for each calendar component change that causes any instance to be
+ rescheduled.
+
+ +-----------+-------------------------------------------------------+
+ | Property | Server Action |
+ +-----------+-------------------------------------------------------+
+ | DTSTART, | Any change to these properties results in "PARTSTAT" |
+ | DTEND, | being set to "NEEDS-ACTION". |
+ | DURATION, | |
+ | DUE | |
+ | | |
+ | RRULE | A change to or addition of this property that results |
+ | | in the addition of new recurring instances or a |
+ | | change in time for existing recurring instances |
+ | | results in "PARTSTAT" being reset to "NEEDS-ACTION" |
+ | | on each affected component. |
+ | | |
+ | RDATE | A change to or addition of this property that results |
+ | | in the addition of new recurring instances or a |
+ | | change in time for existing recurring instances |
+ | | results in "PARTSTAT" being reset to "NEEDS-ACTION" |
+ | | on each affected component. |
+ | | |
+ | EXDATE | A change to or removal of this property that results |
+ | | in the reinstatement of recurring instances results |
+ | | in "PARTSTAT" being set to "NEEDS-ACTION" on each |
+ | | affected component. |
+ +-----------+-------------------------------------------------------+
+
+ The server MAY allow the "Organizer's" client to change an
+ "Attendee's" "PARTSTAT" property parameter value to "NEEDS-ACTION" at
+ any other time (e.g., when the "LOCATION" property value changes, an
+ "Organizer" might wish to re-invite "Attendees" who might be impacted
+ by the change).
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 28]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+3.2.9. Schedule Status Values
+
+ When scheduling with an "Attendee", there are two types of status
+ information that can be returned during the operation. The first
+ type of status information is a "delivery" status that indicates
+ whether the scheduling message from the "Organizer" to the "Attendee"
+ was delivered or not, or what the current status of delivery is. The
+ second type of status information is a "reply" status corresponding
+ to the "Attendee's" own "REQUEST-STATUS" information from the
+ scheduling message reply that is sent back to the "Organizer".
+
+ Similarly, when an "Attendee" sends a reply back to the "Organizer",
+ there will be "delivery" status information for the scheduling
+ message sent to the "Organizer". However, there is no
+ "REQUEST-STATUS" sent back by the "Organizer", so there is no
+ equivalent of the "reply" status as per scheduling messages to
+ "Attendees".
+
+ The "delivery" status information on an "ORGANIZER" or "ATTENDEE"
+ iCalendar property is conveyed in the "SCHEDULE-STATUS" property
+ parameter value (Section 7.3). The status code value for "delivery"
+ status can be one of the following:
+
+ +----------+--------------------------------------------------------+
+ | Delivery | Description |
+ | Status | |
+ | Code | |
+ +----------+--------------------------------------------------------+
+ | 1.0 | The scheduling message is pending. That is, the |
+ | | server is still in the process of sending the message. |
+ | | The status code value can be expected to change once |
+ | | the server has completed its sending and delivery |
+ | | attempts. |
+ | | |
+ | 1.1 | The scheduling message has been successfully sent. |
+ | | However, the server does not have explicit information |
+ | | about whether the scheduling message was successfully |
+ | | delivered to the recipient. This state can occur with |
+ | | "store and forward" style scheduling protocols such as |
+ | | iMIP [RFC6047] (iTIP using email). |
+ | | |
+ | 1.2 | The scheduling message has been successfully |
+ | | delivered. |
+ | | |
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 29]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ | 3.7 | The scheduling message was not delivered because the |
+ | | server did not recognize the calendar user address as |
+ | | a valid calendar user. Note that this code applies to |
+ | | both "Organizer" and "Attendee" calendar user |
+ | | addresses. |
+ | | |
+ | 3.8 | The scheduling message was not delivered due to |
+ | | insufficient privileges. Note that this code applies |
+ | | to privileges granted by both the "Organizer" and |
+ | | "Attendee" calendar users. |
+ | | |
+ | 5.1 | The scheduling message was not delivered because the |
+ | | server could not complete delivery of the message. |
+ | | This is likely due to a temporary failure, and the |
+ | | originator can try to send the message again at a |
+ | | later time. |
+ | | |
+ | 5.2 | The scheduling message was not delivered because the |
+ | | server was not able to find a way to deliver the |
+ | | message. This is likely a permanent failure, and the |
+ | | originator ought not try to send the message again, at |
+ | | least without verifying/correcting the calendar user |
+ | | address of the recipient. |
+ | | |
+ | 5.3 | The scheduling message was not delivered and was |
+ | | rejected because scheduling with that recipient is not |
+ | | allowed. This is likely a permanent failure, and the |
+ | | originator ought not try to send the message again. |
+ +----------+--------------------------------------------------------+
+
+ The status code for "reply" status can be any of the valid iTIP
+ [RFC5546] "REQUEST-STATUS" values.
+
+ The 1.xx "REQUEST-STATUS" codes are new. This specification modifies
+ item (2) of Section 3.6 of [RFC5546] by adding the following
+ restriction:
+
+ For a 1.xx code, all components MUST have exactly the same code.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 30]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Definition of the new 1.xx codes is as follows:
+
+3.2.9.1. Status Code 1.0
+
+ Status Code: 1.0
+
+ Status Description: Pending.
+
+ Status Exception Data: None.
+
+ Description: Delivery of the iTIP message is pending.
+
+3.2.9.2. Status Code 1.1
+
+ Status Code: 1.1
+
+ Status Description: Sent.
+
+ Status Exception Data: None.
+
+ Description: The iTIP message has been sent, though no information
+ about successful delivery is known.
+
+3.2.9.3. Status Code 1.2
+
+ Status Code: 1.2
+
+ Status Description: Delivered.
+
+ Status Exception Data: None.
+
+ Description: The iTIP message has been sent and delivered.
+
+3.2.10. Avoiding Conflicts when Updating Scheduling Object Resources
+
+ Scheduling object resources on the server might change frequently as
+ "Attendees" change their participation status, triggering updates to
+ the "Organizer", and refreshes of other "Attendees'" copies of the
+ scheduling object resource. This can lead to an "inconsequential"
+ change to a calendar user's data -- one that does not directly impact
+ the user's own participation status. When this occurs, clients have
+ to reload calendar data and reconcile with changes being made by
+ calendar users. To avoid the need for this, the server can instead
+ merge calendar data changes from a client with changes made as a
+ result of a scheduling operation carried out by some other calendar
+ user.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 31]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ This specification introduces a new WebDAV resource property CALDAV:
+ schedule-tag with a corresponding response header "Schedule-Tag", and
+ a new "If-Schedule-Tag-Match" request header to allow client changes
+ to be appropriately merged with server changes in the case where the
+ changes on the server were the result of an "inconsequential"
+ scheduling message update (one that simply updates the status
+ information of "Attendees" due to a reply from another "Attendee").
+
+ Servers MUST automatically resolve conflicts with "inconsequential"
+ changes done to scheduling object resources when the "If-Schedule-
+ Tag-Match" request header is specified. The If-Schedule-Tag-Match
+ request header applies only to the Request-URI, and not to the
+ destination of a COPY or MOVE.
+
+ A response to any successful GET or PUT request targeting a
+ scheduling object resource MUST include a Schedule-Tag response
+ header with the value set to the same value as the CALDAV:schedule-
+ tag WebDAV property of the resource.
+
+ A response to any successful COPY or MOVE request that specifies a
+ Destination request header targeting a scheduling object resource
+ MUST include a Schedule-Tag response header with the value set to the
+ same value as the CALDAV:schedule-tag WebDAV property of the
+ destination resource.
+
+ Clients SHOULD use the If-Schedule-Tag-Match header on requests that
+ update scheduling object resources, instead of HTTP ETag-based
+ precondition tests (e.g., If-Match). Normal ETag-based precondition
+ tests are used in all other cases, e.g., for synchronization.
+
+ The value of the CALDAV:schedule-tag property changes according to
+ these rules:
+
+ o For an "Organizer's" copy of a scheduling object resource:
+
+ 1. The server MUST NOT change the CALDAV:schedule-tag property
+ value when the scheduling object resource is updated as the
+ result of automatically processing a scheduling message reply
+ from an "Attendee". For instance, when an "Attendee" replies
+ to the "Organizer", the CALDAV:schedule-tag property is
+ unchanged after the "Organizer's" scheduling object resource
+ has been automatically updated by the server with the
+ "Attendee's" new participation status.
+
+ 2. The server MUST change the CALDAV:schedule-tag property value
+ when the scheduling object resource is changed directly via an
+ HTTP request (e.g., PUT, COPY, or MOVE).
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 32]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ o For an "Attendee's" copy of a scheduling object resource:
+
+ 1. The server MUST change the CALDAV:schedule-tag property value
+ when the scheduling object resource is changed as the result
+ of processing a scheduling message update from an "Organizer"
+ that contains changes other than just the participation status
+ of "Attendees".
+
+ 2. The server MUST NOT change the CALDAV:schedule-tag property
+ value when the scheduling object resource is changed as the
+ result of processing a scheduling message update from an
+ "Organizer" that only specifies changes in the participation
+ status of "Attendees". For instance, when "Attendee" "A"
+ replies to "Organizer" "O", and "Attendee" "B" receives a
+ scheduling message update from "Organizer" "O" with the new
+ participation status of "Attendee" "A", the CALDAV:schedule-
+ tag property of "Attendee" "B"'s scheduling object resource
+ would remain the same.
+
+ 3. The server MUST change the CALDAV:schedule-tag property value
+ when the scheduling object resource is changed directly via an
+ HTTP request (e.g., PUT, COPY, or MOVE).
+
+3.2.10.1. PUT
+
+ Clients MAY use the If-Schedule-Tag-Match request header to do a PUT
+ request that ensures that "inconsequential" changes on the server do
+ not result in a precondition error. The value of the request header
+ is set to the last Schedule-Tag value received for the resource being
+ modified. If the value of the If-Schedule-Tag-Match header matches
+ the current value of the CALDAV:schedule-tag property, the server
+ MUST take any "ATTENDEE" property changes for all "Attendees" other
+ than the owner of the scheduling object resource and apply those to
+ the new resource being stored. Otherwise, the server MUST fail the
+ request with a 412 Precondition Failed status code.
+
+3.2.10.2. DELETE, COPY, or MOVE
+
+ Clients MAY use the If-Schedule-Tag-Match request header to do a
+ DELETE, COPY, or MOVE request that ensures that "inconsequential"
+ changes on the server do not result in a precondition error. The
+ value of the request header is set to the last Schedule-Tag value
+ received for the resource being deleted. If the value of the
+ If-Schedule-Tag-Match header matches the current value of the CALDAV:
+ schedule-tag property, the server performs the normal DELETE, COPY,
+ or MOVE request processing for the resource. Otherwise, the server
+ MUST fail the request with a 412 Precondition Failed status code.
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 33]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+4. Processing Incoming Scheduling Messages
+
+ Scheduling operations can cause the delivery of a scheduling message
+ into an "Organizer's" or "Attendee's" scheduling Inbox collection.
+ Servers MUST automatically process incoming scheduling messages using
+ the rules defined by [RFC5546], by creating or updating the
+ corresponding scheduling object resources on calendars owned by the
+ owner of the scheduling Inbox collection. In addition, the
+ scheduling message is stored in the scheduling Inbox collection as an
+ indicator to the client that a scheduling operation has taken place.
+ Scheduling messages are typically removed from the scheduling Inbox
+ collection by the client once the calendar user has acknowledged the
+ change.
+
+ The server MUST take into account privileges on the scheduling Inbox
+ collection when processing incoming scheduling messages, to determine
+ whether delivery of the scheduling message is allowed. Privileges on
+ calendars containing any matching scheduling object resource are not
+ considered in this case (i.e., a schedule message from another user
+ can cause modifications to resources in calendar collections that the
+ other user would not normally have read or write access to).
+ Additionally, servers MUST take into account any scheduling Inbox
+ collection preconditions (see Section 2.2) when delivering the
+ scheduling message, and MUST take into account the similar
+ preconditions on any calendar collection that contains, or would
+ contain, the corresponding scheduling object resource.
+
+4.1. Processing "Organizer" Requests, Additions, and Cancellations
+
+ For a scheduling message sent by an "Organizer", the server first
+ tries to locate a corresponding scheduling object resource belonging
+ to the "Attendee". If no matching scheduling object resource exists,
+ the server treats the scheduling message as a new message; otherwise,
+ it is treated as an update.
+
+ In the case of a new message, the server processes the scheduling
+ message and creates a new scheduling object resource as per
+ Section 4.3.
+
+ In the case of an update, the server processes the scheduling message
+ and updates the matching scheduling object resource belonging to the
+ "Attendee" to reflect the changes sent by the "Organizer".
+
+ In each case, the scheduling message MUST only appear in the
+ "Attendee's" scheduling Inbox collection once all automatic
+ processing has been done.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 34]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+4.2. Processing "Attendee" Replies
+
+ For a scheduling message reply sent by an "Attendee", the server
+ first locates the corresponding scheduling object resource belonging
+ to the "Organizer". If the corresponding scheduling object resource
+ cannot be found, the server SHOULD ignore the scheduling message.
+
+ The server MUST then update the "PARTSTAT" iCalendar property
+ parameter value of each "ATTENDEE" iCalendar property in the
+ scheduling object resource to match the changes indicated in the
+ reply (taking into account the fact that an "Attendee" could have
+ created a new overridden iCalendar component to indicate different
+ participation status on one or more instances of a recurring event).
+
+ The server MUST also update or add the "SCHEDULE-STATUS" property
+ parameter on each matching "ATTENDEE" iCalendar property and set its
+ value to that of the "REQUEST-STATUS" property in the reply, or to
+ "2.0" if "REQUEST-STATUS" is not present (also taking into account
+ recurrence instances). If there are multiple "REQUEST-STATUS"
+ properties in the reply, the "SCHEDULE-STATUS" property parameter
+ value is set to a comma-separated list of status codes, one from each
+ "REQUEST-STATUS" property.
+
+ The server SHOULD send scheduling messages to all the other
+ "Attendees" indicating the change in participation status of the
+ "Attendee" replying, subject to the recurrence requirements of
+ Section 3.2.6.
+
+ The scheduling message MUST only appear in the "Organizer's"
+ scheduling Inbox collection once all automatic processing has been
+ done.
+
+4.3. Default Calendar Collection
+
+ The server processes scheduling messages received for an "Attendee"
+ by creating a new scheduling object resource in a calendar collection
+ belonging to the "Attendee", when one does not already exist. A
+ calendar user that is an "Attendee" in a scheduling operation MUST
+ have at least one valid calendar collection available. If there is
+ no valid calendar collection, then the server MUST reject the attempt
+ to deliver the scheduling message to the "Attendee".
+
+ Servers MAY provide support for a default calendar collection -- that
+ is, the calendar collection in which new scheduling object resources
+ will be created. The CALDAV:schedule-default-calendar-URL WebDAV
+ property, which can be present on the scheduling Inbox collection of
+ a calendar user, specifies whether this calendar user has a default
+ calendar collection. See Section 9.2.
+
+
+
+Daboo & Desruisseaux Standards Track [Page 35]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Servers SHOULD create new scheduling object resources in the default
+ calendar collection, if the CALDAV:schedule-default-calendar-URL
+ WebDAV property is set.
+
+ Servers MAY allow clients to change the default calendar collection
+ by changing the value of the CALDAV:schedule-default-calendar-URL
+ WebDAV property on the scheduling Inbox collection. However, the
+ server MUST ensure that any new value for that property refers to a
+ valid calendar collection belonging to the owner of the scheduling
+ Inbox collection.
+
+ Servers MUST reject any attempt to delete the default calendar
+ collection.
+
+4.3.1. Additional Method Preconditions
+
+ This specification defines additional method preconditions (see
+ Section 16 of WebDAV [RFC4918]) to provide machine-parseable
+ information in error responses.
+
+4.3.1.1. CALDAV:default-calendar-needed Precondition
+
+ Name: default-calendar-needed
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: DELETE
+
+ Use with: 403 Forbidden
+
+ Purpose: (precondition) -- The client attempted to delete the
+ calendar collection currently referenced by the CALDAV:schedule-
+ default-calendar-URL property, or attempted to remove the CALDAV:
+ schedule-default-calendar-URL property on the scheduling Inbox
+ collection on a server that doesn't allow such operations.
+
+ Definition:
+
+ <!ELEMENT default-calendar-needed EMPTY>
+
+4.3.1.2. CALDAV:valid-schedule-default-calendar-URL Precondition
+
+ Name: valid-schedule-default-calendar-URL
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: PROPPATCH
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 36]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Use with: 403 Forbidden
+
+ Purpose: (precondition) -- The client attempted to set the CALDAV:
+ schedule-default-calendar-URL property to a DAV:href element that
+ doesn't reference a valid calendar collection. Note: Servers that
+ do not allow clients to change the CALDAV:schedule-default-
+ calendar-URL property would simply return the DAV:cannot-modify-
+ protected-property precondition defined in Section 16 of WebDAV
+ [RFC4918].
+
+ Definition:
+
+ <!ELEMENT valid-schedule-default-calendar-URL EMPTY>
+
+5. Request for Busy Time Information
+
+ Busy time information of one or more calendar users can be determined
+ by submitting a POST request targeted at the scheduling Outbox
+ collection of the calendar user requesting the information (the
+ "Organizer"). To accomplish this, the request body MUST contain a
+ "VFREEBUSY" calendar component with the "METHOD" iCalendar property
+ set to the value "REQUEST" as specified in Section 3.3.2 of iTIP
+ [RFC5546]. The resource identified by the Request-URI MUST be a
+ resource collection of type CALDAV:schedule-outbox (Section 2.1).
+ The "ORGANIZER" property value in the "VFREEBUSY" component MUST
+ match one of the calendar user addresses of the owner of the Outbox
+ collection.
+
+ A response to a busy time request that indicates status for one or
+ more calendar users MUST be an XML document with a CALDAV:schedule-
+ response XML element as its root element. This element MUST contain
+ one CALDAV:response element for each calendar user, with each such
+ element in turn containing elements that indicate which calendar user
+ they correspond to, the scheduling status for that calendar user, any
+ error codes, and an optional description. For a successful busy time
+ request, a CALDAV:calendar-data element is also present for each
+ calendar user, containing the actual busy time information (i.e., an
+ iCalendar "VFREEBUSY" component). See Section 10 for details on the
+ child elements. See Appendix B.5 for an example busy time request
+ and response.
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 37]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+5.1. Status Codes
+
+ The list below summarizes the most common status codes used for this
+ method. However, clients need to be prepared to handle other
+ 2/3/4/5xx series status codes as well.
+
+ 200 (OK) - The command succeeded.
+
+ 204 (No Content) - The command succeeded.
+
+ 400 (Bad Request) - The client has provided an invalid scheduling
+ message.
+
+ 403 (Forbidden) - The client cannot submit a scheduling message to
+ the specified Request-URI.
+
+ 404 (Not Found) - The URL in the Request-URI was not present.
+
+ 423 (Locked) - The specified resource is locked, and the client
+ either is not a lock owner or the lock type requires a lock token
+ to be submitted and the client did not submit it.
+
+5.2. Additional Method Preconditions
+
+ The following are existing preconditions that are reused for the POST
+ method on an Outbox collection.
+
+ o DAV:need-privileges [RFC3744]
+
+ o CALDAV:supported-calendar-data [RFC4791]
+
+ o CALDAV:valid-calendar-data [RFC4791]
+
+ o CALDAV:max-resource-size [RFC4791]
+
+ The following are new method preconditions for the POST method on an
+ Outbox collection.
+
+5.2.1. CALDAV:valid-scheduling-message Precondition
+
+ Name: valid-scheduling-message
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: POST
+
+ Use with: 400 Bad Request
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 38]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Purpose: (precondition) -- The resource submitted in the POST
+ request MUST obey all the restrictions specified in Section 3.3.2
+ of iTIP [RFC5546].
+
+ Definition:
+
+ <!ELEMENT valid-scheduling-message EMPTY>
+
+5.2.2. CALDAV:valid-organizer Precondition
+
+ Name: valid-organizer
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Apply to: POST
+
+ Use with: 403 Forbidden
+
+ Purpose: (precondition) -- The "ORGANIZER" property value in the
+ POST request's scheduling message MUST match one of the calendar
+ user addresses of the owner of the scheduling Outbox collection
+ being targeted by the request.
+
+ Definition:
+
+ <!ELEMENT valid-organizer EMPTY>
+
+6. Scheduling Privileges
+
+ New scheduling privileges are defined in this section. All the
+ scheduling privileges MUST be non-abstract and MUST appear in the
+ DAV:supported-privilege-set property of scheduling Outbox and Inbox
+ collections on which they are defined.
+
+ The tables specified in Appendix A clarify which scheduling methods
+ (e.g., "REQUEST", "REPLY", etc.) are controlled by each scheduling
+ privilege defined in this section.
+
+6.1. Privileges on Scheduling Inbox Collections
+
+ This section defines new WebDAV Access Control List (ACL) [RFC3744]
+ privileges that are defined for use on scheduling Inbox collections.
+ These privileges determine whether delivery of scheduling messages
+ from a calendar user is allowed by the calendar user who "owns" the
+ scheduling Inbox collection. This allows calendar users to choose
+ which other calendar users can schedule with them.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 39]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Note that when a scheduling message is delivered to a calendar user,
+ in addition to a scheduling object resource being created in the
+ calendar user's scheduling Inbox collection, a new scheduling object
+ resource might be created or an existing one updated in a calendar
+ belonging to the calendar user. In that case, the ability to create
+ or update the scheduling object resource in the calendar is
+ controlled by the privileges assigned to the scheduling Inbox
+ collection.
+
+ The privileges defined in this section are ignored if applied to a
+ resource other than a scheduling Inbox collection.
+
+6.1.1. CALDAV:schedule-deliver Privilege
+
+ CALDAV:schedule-deliver is an aggregate privilege as per Section 6.3.
+
+ <!ELEMENT schedule-deliver EMPTY>
+
+6.1.2. CALDAV:schedule-deliver-invite Privilege
+
+ The CALDAV:schedule-deliver-invite privilege controls the processing
+ and delivery of scheduling messages coming from an "Organizer".
+
+ <!ELEMENT schedule-deliver-invite EMPTY>
+
+6.1.3. CALDAV:schedule-deliver-reply Privilege
+
+ The CALDAV:schedule-deliver-reply privilege controls the processing
+ and delivery of scheduling messages coming from an "Attendee".
+
+ <!ELEMENT schedule-deliver-reply EMPTY>
+
+6.1.4. CALDAV:schedule-query-freebusy Privilege
+
+ The CALDAV:schedule-query-freebusy privilege controls freebusy
+ requests targeted at the owner of the scheduling Inbox collection.
+
+ <!ELEMENT schedule-query-freebusy EMPTY>
+
+6.2. Privileges on Scheduling Outbox Collections
+
+ This section defines new WebDAV ACL [RFC3744] privileges that are
+ defined for use on scheduling Outbox collections. These privileges
+ determine which calendar users are allowed to send scheduling
+ messages on behalf of the calendar user who "owns" the scheduling
+ Outbox collection. This allows calendar users to choose other
+ calendar users who can act on their behalf (e.g., assistants working
+ on behalf of their boss).
+
+
+
+Daboo & Desruisseaux Standards Track [Page 40]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ The privileges defined in this section are ignored if applied to a
+ resource other than a scheduling Outbox collection.
+
+6.2.1. CALDAV:schedule-send Privilege
+
+ CALDAV:schedule-send is an aggregate privilege as per Section 6.3.
+
+ <!ELEMENT schedule-send EMPTY>
+
+6.2.2. CALDAV:schedule-send-invite Privilege
+
+ The CALDAV:schedule-send-invite privilege controls the sending of
+ scheduling messages by "Organizers".
+
+ Users granted the DAV:bind privilege on a calendar collection, or the
+ DAV:write privilege on scheduling object resources, will also need
+ the CALDAV:schedule-send-invite privilege granted on the scheduling
+ Outbox collection of the owner of the calendar collection or
+ scheduling object resource in order to be allowed to create, modify,
+ or delete scheduling object resources in a way that will trigger the
+ CalDAV server to deliver scheduling messages to "Attendees".
+
+ <!ELEMENT schedule-send-invite EMPTY>
+
+6.2.3. CALDAV:schedule-send-reply Privilege
+
+ The CALDAV:schedule-send-reply privilege controls the sending of
+ scheduling messages by "Attendees".
+
+ Users granted the DAV:bind privilege on a calendar collection, or the
+ DAV:write privilege on scheduling object resources, will also need
+ the CALDAV:schedule-send-reply privilege granted on the scheduling
+ Outbox collection of the owner of the calendar collection or
+ scheduling object resource in order to be allowed to create, modify,
+ or delete scheduling object resources in a way that will trigger the
+ CalDAV server to deliver scheduling message replies to the
+ "Organizer".
+
+ <!ELEMENT schedule-send-reply EMPTY>
+
+6.2.4. CALDAV:schedule-send-freebusy Privilege
+
+ The CALDAV:schedule-send-freebusy privilege controls the use of the
+ POST method to submit scheduling messages that specify the scheduling
+ method "REQUEST" with a "VFREEBUSY" calendar component.
+
+ <!ELEMENT schedule-send-freebusy EMPTY>
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 41]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+6.3. Aggregation of Scheduling Privileges
+
+ Server implementations MUST aggregate the scheduling privileges as
+ follows:
+
+ DAV:all contains CALDAV:schedule-deliver and CALDAV:schedule-send;
+
+ CALDAV:schedule-deliver contains CALDAV:schedule-deliver-invite,
+ CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-freebusy;
+
+ CALDAV:schedule-send contains CALDAV:schedule-send-invite, CALDAV:
+ schedule-send-reply, and CALDAV:schedule-send-freebusy.
+
+ The following diagram illustrates how scheduling privileges are
+ aggregated according to the above requirements.
+
+ [DAV:all] (aggregate)
+ |
+ +-- [CALDAV:schedule-deliver] (aggregate)
+ | |
+ | +-- [CALDAV:schedule-deliver-invite]
+ | +-- [CALDAV:schedule-deliver-reply]
+ | +-- [CALDAV:schedule-query-freebusy]
+ |
+ +-- [CALDAV:schedule-send] (aggregate)
+ |
+ +-- [CALDAV:schedule-send-invite]
+ +-- [CALDAV:schedule-send-reply]
+ +-- [CALDAV:schedule-send-freebusy]
+
+7. Additional iCalendar Property Parameters
+
+ This specification defines additional iCalendar property parameters
+ to support the CalDAV scheduling extensions.
+
+7.1. Schedule Agent Parameter
+
+ Parameter Name: SCHEDULE-AGENT
+
+ Purpose: To specify the agent expected to deliver scheduling
+ messages to the corresponding "Organizer" or "Attendee".
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 42]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Format Definition: This property parameter is defined by the
+ following notation:
+
+ scheduleagentparam = "SCHEDULE-AGENT" "="
+ ("SERVER" ; The server handles scheduling
+ / "CLIENT" ; The client handles scheduling
+ / "NONE" ; No scheduling
+ / x-name ; Experimental type
+ / iana-token) ; Other IANA-registered type
+ ;
+ ; If the parameter is not present, its value defaults to SERVER.
+ ; "x-name" and "iana-token" are defined in Section 3.1 of
+ ; [RFC5545].
+
+ Description: This property parameter MAY be specified on "ORGANIZER"
+ or "ATTENDEE" iCalendar properties. In the absence of this
+ parameter, the value "SERVER" MUST be used for the default
+ behavior. The value determines whether or not a scheduling
+ operation on a server will cause a scheduling message to be sent
+ to the corresponding calendar user identified by the "ORGANIZER"
+ or "ATTENDEE" property value. When the value "SERVER" is
+ specified, or the parameter is absent, then it is the server's
+ responsibility to send a scheduling message as part of a
+ scheduling operation. When the value "CLIENT" is specified, that
+ indicates that the client is handling scheduling messages with the
+ calendar user itself. When "NONE" is specified, no scheduling
+ messages are being sent to the calendar user.
+
+ Servers MUST NOT include this parameter in any scheduling messages
+ sent as the result of a scheduling operation.
+
+ Clients MUST NOT include this parameter in any scheduling messages
+ that they themselves send.
+
+ The parameter value MUST be the same on every "ORGANIZER" property
+ in a scheduling object resource.
+
+ The parameter value MUST be the same on each "ATTENDEE" property
+ whose values match in a scheduling object resource.
+
+ Servers and clients MUST treat x-name and iana-token values they
+ do not recognize the same way as they would the "NONE" value.
+
+ Example:
+
+ ORGANIZER;SCHEDULE-AGENT=SERVER:mailto:bernard at example.com
+ ATTENDEE;SCHEDULE-AGENT=NONE:mailto:cyrus at example.com
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 43]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+7.2. Schedule Force Send Parameter
+
+ Parameter Name: SCHEDULE-FORCE-SEND
+
+ Purpose: To force a scheduling message to be sent to the calendar
+ user specified by the property.
+
+ Format Definition: This property parameter is defined by the
+ following notation:
+
+ scheduleforcesendparam = "SCHEDULE-FORCE-SEND" "="
+ ("REQUEST" ; Force a "REQUEST"
+ / "REPLY" ; Force a "REPLY"
+ / iana-token)
+ ;
+ ; "iana-token" is defined in Section 3.1 of [RFC5545]. Its value
+ ; MUST be an IANA-registered iCalendar "METHOD" property value.
+
+ Description: This property parameter MAY be specified on "ATTENDEE"
+ and "ORGANIZER" properties on which the "SCHEDULE-AGENT" property
+ parameter is set to the value "SERVER" or is not specified. This
+ property parameter is used to force a server to send a scheduling
+ message to a specific calendar user in situations where the server
+ would not send a scheduling message otherwise (e.g., when no
+ change that warrants the delivery of a new scheduling message was
+ performed on the scheduling object resource). An "Organizer" MAY
+ specify this parameter on an "ATTENDEE" property with the value
+ "REQUEST" to force a "REQUEST" scheduling message to be sent to
+ this "Attendee". An "Attendee" MAY specify this parameter on the
+ "ORGANIZER" with the value "REPLY" to force a "REPLY" scheduling
+ message to be sent to the "Organizer".
+
+ Servers MUST NOT preserve this property parameter in scheduling
+ object resources, nor include it in any scheduling messages sent
+ as the result of a scheduling operation.
+
+ Clients MUST NOT include this parameter in any scheduling messages
+ that they themselves send.
+
+ Servers MUST set the "SCHEDULE-STATUS" parameter of the "ATTENDEE"
+ or "ORGANIZER" to 2.3 (i.e., "Success; invalid property parameter
+ ignored"; see Section 3.6 of [RFC5546]) when the "SCHEDULE-FORCE-
+ SEND" parameter is set to an iana-token value they do not
+ recognize.
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 44]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Example:
+
+ ORGANIZER;SCHEDULE-FORCE-SEND=REPLY:mailto:cyrus at example.com
+ ATTENDEE;SCHEDULE-FORCE-SEND=REQUEST:mailto:bernard at example.com
+
+7.3. Schedule Status Parameter
+
+ Parameter Name: SCHEDULE-STATUS
+
+ Purpose: To specify the status codes returned from processing of the
+ most recent scheduling message sent to the corresponding
+ "Attendee", or received from the corresponding "Organizer".
+
+ Format Definition: This property parameter is defined by the
+ following notation:
+
+ schedulestatusparam = "SCHEDULE-STATUS" "="
+ ( statcode
+ / DQUOTE statcode *("," statcode) DQUOTE)
+ ;
+ ; "statcode" is defined in Section 3.8.8.3 of [RFC5545]. The
+ ; value is a single "statcode" or a comma-separated list of
+ ; "statcode" values.
+
+ Description: This property parameter MAY be specified on the
+ "ATTENDEE" and "ORGANIZER" properties.
+
+ Servers MUST only add or change this property parameter on any
+ "ATTENDEE" properties corresponding to calendar users who were
+ sent a scheduling message via a scheduling operation. Clients
+ SHOULD NOT change or remove this parameter if it was provided by
+ the server. In the case where the client is handling the
+ scheduling, the client MAY add, change, or remove this parameter
+ to indicate the last scheduling message status it received.
+
+ Servers MUST add this parameter to any "ORGANIZER" properties
+ corresponding to calendar users who were sent a scheduling message
+ reply by an "Attendee" via a scheduling operation. Clients SHOULD
+ NOT change or remove this parameter if it was provided by the
+ server. In the case where the client is handling the scheduling,
+ the client MAY add, change, or remove this parameter to indicate
+ the last scheduling message status it received.
+
+ Servers MUST NOT include this parameter in any scheduling messages
+ sent as the result of a scheduling operation.
+
+ Clients MUST NOT include this parameter in any scheduling messages
+ that they themselves send.
+
+
+
+Daboo & Desruisseaux Standards Track [Page 45]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Values for this property parameter are described in Section 3.2.9.
+
+ Example:
+
+ ATTENDEE;SCHEDULE-STATUS="2.0":mailto:bernard at example.com
+ ATTENDEE;SCHEDULE-STATUS="2.0,2.4":mailto:cyrus at example.com
+
+8. Additional Message Header Fields
+
+ This specification defines additional HTTP request and response
+ headers for use with CalDAV.
+
+8.1. Schedule-Reply Request Header
+
+ Schedule-Reply = "Schedule-Reply" ":" ("T" | "F")
+
+ Example:
+
+ Schedule-Reply: F
+
+ When an "Attendee" removes a scheduling object resource as per
+ Section 3.2.2.4, and the Schedule-Reply header is set to the value
+ "T" (true) or is not present, the server MUST send an appropriate
+ reply scheduling message with the "Attendee's" "PARTSTAT" iCalendar
+ property parameter value set to "DECLINED" as part of its normal
+ scheduling operation processing.
+
+ When the Schedule-Reply header is set to the value "F" (false), the
+ server MUST NOT send a scheduling message as part of its normal
+ scheduling operation processing.
+
+ The Schedule-Reply request header is used by a client to indicate to
+ a server whether or not a scheduling operation ought to occur when an
+ "Attendee" deletes a scheduling object resource. In particular, it
+ controls whether a reply scheduling message is sent to the
+ "Organizer" as a result of the removal. There are situations in
+ which unsolicited scheduling messages need to be silently removed (or
+ ignored) for security or privacy reasons. This request header allows
+ the scheduling object resource to be removed if such a need arises.
+
+8.2. Schedule-Tag Response Header
+
+ The Schedule-Tag response header provides the current value of the
+ CALDAV:schedule-tag property value. The behavior of this response
+ header is described in Section 3.2.10.
+
+ All scheduling object resources MUST support the Schedule-Tag header.
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 46]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Schedule-Tag = "Schedule-Tag" ":" opaque-tag
+ ; "opaque-tag" is defined in Section 3.11 of [RFC2616].
+
+ Example:
+
+ Schedule-Tag: "12ab34-cd56ef"
+
+8.3. If-Schedule-Tag-Match Request Header
+
+ The If-Schedule-Tag-Match request header field is used with a method
+ to make it conditional. Clients can set this header to the value
+ returned in the Schedule-Tag response header, or the CALDAV:schedule-
+ tag property, of a scheduling object resource previously retrieved
+ from the server to avoid overwriting "consequential" changes to the
+ scheduling object resource.
+
+ All scheduling object resources MUST support the If-Schedule-Tag-
+ Match header.
+
+ If-Schedule-Tag-Match = "If-Schedule-Tag-Match" ":" opaque-tag
+ ; "opaque-tag" is defined in Section 3.11 of [RFC2616].
+
+ Example:
+
+ If-Schedule-Tag-Match: "12ab34-cd56ef"
+
+9. Additional WebDAV Properties
+
+ This specification defines the following new WebDAV properties for
+ use with CalDAV.
+
+9.1. CALDAV:schedule-calendar-transp Property
+
+ Name: schedule-calendar-transp
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Determines whether the calendar object resources in a
+ calendar collection will affect the owner's busy time information.
+
+ Protected: This property MAY be protected and SHOULD NOT be returned
+ by a PROPFIND DAV:allprop request (as defined in Section 14.2 of
+ [RFC4918]).
+
+ COPY/MOVE behavior: This property value SHOULD be kept during a MOVE
+ operation, and SHOULD be copied and preserved in a COPY.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 47]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Description: This property SHOULD be defined on all calendar
+ collections. If present, it contains one of two XML elements that
+ indicate whether the calendar object resources in the calendar
+ collection ought to contribute to the owner's busy time. When the
+ CALDAV:opaque element is used, all calendar object resources in
+ the corresponding calendar collection MUST contribute to busy
+ time, assuming that access privileges and other iCalendar
+ properties allow it to. When the CALDAV:transparent XML element
+ is used, the calendar object resources in the corresponding
+ calendar collection MUST NOT contribute to busy time.
+
+ If this property is not present on a calendar collection, then the
+ default value CALDAV:opaque MUST be assumed.
+
+ Definition:
+
+ <!ELEMENT schedule-calendar-transp (opaque | transparent)>
+
+ <!ELEMENT opaque EMPTY>
+ <!-- Affects busy time searches -->
+
+ <!ELEMENT transparent EMPTY>
+ <!-- Invisible to busy time searches -->
+
+ Example:
+
+ <C:schedule-calendar-transp
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <C:opaque/>
+ </C:schedule-calendar-transp>
+
+9.2. CALDAV:schedule-default-calendar-URL Property
+
+ Name: schedule-default-calendar-URL
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Specifies a default calendar for an "Attendee" where new
+ scheduling object resources are created.
+
+ Protected: This property MAY be protected in the case where a server
+ does not support changing the default calendar, or does not
+ support a default calendar.
+
+ COPY/MOVE behavior: This property is only defined on a scheduling
+ Inbox collection that cannot be moved or copied.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 48]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Description: This property MAY be defined on a scheduling Inbox
+ collection. If present, it contains zero or one DAV:href XML
+ elements. When a DAV:href element is present, its value indicates
+ a URL to a calendar collection that is used as the default
+ calendar. When no DAV:href element is present, it indicates that
+ there is no default calendar. In the absence of this property,
+ there is no default calendar. When there is no default calendar,
+ the server is free to choose the calendar in which a new
+ scheduling object resource is created. See Section 4.3.
+
+ Definition:
+
+ <!ELEMENT schedule-default-calendar-URL (DAV:href?)>
+
+ Example:
+
+ <C:schedule-default-calendar-URL xmlns:D="DAV:"
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:href>/home/cyrus/calendars/work/</D:href>
+ </C:schedule-default-calendar-URL>
+
+9.3. CALDAV:schedule-tag Property
+
+ Name: schedule-tag
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Indicates whether a scheduling object resource has had a
+ "consequential" change made to it.
+
+ Value: opaque-tag (defined in Section 3.11 of [RFC2616])
+
+ Protected: This property MUST be protected, as only the server can
+ update the value.
+
+ COPY/MOVE behavior: This property value is determined by the server
+ and MAY be different from the value on the source resource.
+
+ Description: The CALDAV:schedule-tag property MUST be defined on all
+ scheduling object resources. This property is described in
+ Section 3.2.10.
+
+ Definition:
+
+ <!ELEMENT schedule-tag (#PCDATA)>
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 49]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Example:
+
+ <C:schedule-tag xmlns:C="urn:ietf:params:xml:ns:caldav"
+ >"12345-67890"</C:schedule-tag>
+
+10. XML Element Definitions
+
+10.1. CALDAV:schedule-response XML Element
+
+ Name: schedule-response
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Contains the set of responses for a POST method request.
+
+ Description: See Section 5.
+
+ Definition:
+
+ <!ELEMENT schedule-response (response*)>
+
+10.2. CALDAV:response XML Element
+
+ Name: response
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: Contains a single response for a POST method request.
+
+ Description: See Section 5.
+
+ Definition:
+
+ <!ELEMENT response (recipient,
+ request-status,
+ calendar-data?,
+ DAV:error?,
+ DAV:responsedescription?)>
+
+ <!-- CALDAV:calendar-data is defined in Section 9.6 of
+ RFC 4791 and when used here uses the definition with
+ content (#PCDATA) only. -->
+
+10.3. CALDAV:recipient XML Element
+
+ Name: recipient
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+
+
+Daboo & Desruisseaux Standards Track [Page 50]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Purpose: The calendar user address that the enclosing response for a
+ POST method request is for.
+
+ Description: See Section 5.
+
+ Definition:
+
+ <!ELEMENT recipient (DAV:href)>
+
+10.4. CALDAV:request-status XML Element
+
+ Name: request-status
+
+ Namespace: urn:ietf:params:xml:ns:caldav
+
+ Purpose: The iTIP "REQUEST-STATUS" property value for this response.
+
+ Description: See Section 5.
+
+ Definition:
+
+ <!ELEMENT request-status (#PCDATA)>
+
+11. Security Considerations
+
+ The process of scheduling involves the sending and receiving of
+ scheduling messages. As a result, the security problems related to
+ messaging in general are relevant here. In particular, the
+ authenticity of the scheduling messages needs to be verified.
+ Servers and clients MUST use an HTTP connection protected with
+ Transport Layer Security (TLS) as defined in [RFC2818] for all
+ scheduling operations. Clients MUST use the procedures detailed in
+ Section 6 of [RFC6125] to verify the authenticity of the server.
+ Servers MUST make use of HTTP authentication [RFC2617] to verify the
+ authenticity of the calendar user for whom the client is sending
+ requests.
+
+11.1. Preventing Denial-of-Service Attacks
+
+ Servers MUST ensure that clients cannot consume excessive server
+ resources by carrying out "large" scheduling operations. In
+ particular, servers SHOULD enforce CALDAV:max-resource-size, CALDAV:
+ max-instances, and CALDAV:max-attendees-per-instance preconditions as
+ applicable for scheduling Inbox and Outbox collections.
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 51]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+11.2. Verifying Scheduling Operations
+
+ When handling a scheduling operation:
+
+ 1. Servers MUST verify that the principal associated with the DAV:
+ owner of the calendar collection in which a scheduling object
+ resource is being manipulated contains a CALDAV:schedule-outbox-
+ URL property value.
+
+ 2. Servers MUST verify that the currently authenticated user has the
+ CALDAV:schedule-send privilege, or a sub-privilege aggregated
+ under this privilege, on the scheduling Outbox collection of the
+ DAV:owner of the calendar collection in which a scheduling object
+ resource is being manipulated.
+
+ 3. Servers MUST only deliver scheduling messages to recipients when
+ the CALDAV:schedule-deliver privilege, or a sub-privilege
+ aggregated under this privilege, is granted on the recipient's
+ scheduling Inbox collection for the principal associated with the
+ DAV:owner of the calendar collection in which a scheduling object
+ resource is being manipulated.
+
+ 4. To prevent impersonation of calendar users, the server MUST
+ verify that the "ORGANIZER" property in an organizer scheduling
+ object resource matches one of the calendar user addresses of the
+ DAV:owner of the calendar collection in which the resource is
+ stored.
+
+ 5. To prevent spoofing of an existing scheduling object resource,
+ servers MUST verify that the "UID" iCalendar property value in a
+ new scheduling object resource does not match that of an existing
+ scheduling object resource with a different "ORGANIZER" property
+ value.
+
+11.3. Verifying Busy Time Information Requests
+
+ When handling a POST request on a scheduling Outbox collection:
+
+ 1. Servers MUST verify that the principal associated with the
+ calendar user address specified in the "ORGANIZER" property of
+ the scheduling message data in the request contains a CALDAV:
+ schedule-outbox-URL property value that matches the scheduling
+ Outbox collection targeted by the request.
+
+ 2. Servers MUST verify that the currently authenticated user has the
+ CALDAV:schedule-send privilege, or a sub-privilege aggregated
+ under this privilege, on the scheduling Outbox collection
+ targeted by the request.
+
+
+
+Daboo & Desruisseaux Standards Track [Page 52]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ 3. Servers MUST only return valid freebusy information for
+ recipients when the CALDAV:schedule-deliver privilege, or a
+ sub-privilege aggregated under this privilege, is granted on the
+ recipient's scheduling Inbox collection for the principal
+ associated with the DAV:owner of the scheduling Outbox collection
+ targeted by the request.
+
+11.4. Privacy Issues
+
+ This specification only defines how calendar users on the same server
+ are able to schedule with each other -- unauthenticated users have no
+ way to carry out scheduling operations. Access control privileges
+ (as per Section 6) can control which of those users can schedule with
+ others. Calendar users not wishing to expose their calendar
+ information to other users can do so by denying privileges to
+ specific users, or all users, for all scheduling operations, or
+ perhaps only freebusy.
+
+ "Attendees" can also use the Schedule-Reply request header
+ (Section 8.1) with the value set to "F" to prevent notification to an
+ "Organizer" that a scheduling object resource was deleted. This
+ allows "Attendees" to remove unwanted scheduling messages without any
+ response to the "Organizer".
+
+ Servers MUST NOT expose any private iCalendar data, or WebDAV
+ resource state information (URLs, WebDAV properties, etc.) for one
+ calendar user to another via scheduling messages or error responses
+ to scheduling operations. In particular, as per Section 8.1 of
+ [RFC4918], authorization errors MUST take preference over other
+ errors.
+
+11.5. Mitigation of iTIP Threats
+
+ Section 6.1 of iTIP [RFC5546] defines a set of potential threats in a
+ scheduling system, and Section 6.2 of [RFC5546] defines
+ recommendations on how those can be addressed in protocols using
+ iTIP. This specification addresses the iTIP threats in the following
+ manner:
+
+ Spoofing the "Organizer": Addressed by item 4 in Section 11.2.
+
+ Spoofing the "Attendee": Addressed by Section 3.2.2.1 and item 2 in
+ Section 11.2.
+
+ Unauthorized Replacement of the "Organizer": Addressed by item 5 in
+ Section 11.2.
+
+ Eavesdropping and Data Integrity: Addressed by requiring TLS.
+
+
+
+Daboo & Desruisseaux Standards Track [Page 53]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Flooding a Calendar: Addressed by requirements in Section 11.1.
+
+ Unauthorized REFRESH Requests: This specification does not support
+ the REFRESH method.
+
+12. IANA Considerations
+
+12.1. Message Header Field Registrations
+
+ The message header fields below have been added to the Permanent
+ Message Header Field Registry (see [RFC3864]).
+
+12.1.1. Schedule-Reply
+
+ Header field name: Schedule-Reply
+
+ Applicable protocol: http
+
+ Status: standard
+
+ Author/Change controller: IETF
+
+ Specification document(s): this specification (Section 8.1)
+
+ Related information: none
+
+12.1.2. Schedule-Tag
+
+ Header field name: Schedule-Tag
+
+ Applicable protocol: http
+
+ Status: standard
+
+ Author/Change controller: IETF
+
+ Specification document(s): this specification (Section 8.2)
+
+ Related information: none
+
+12.1.3. If-Schedule-Tag-Match
+
+ Header field name: If-Schedule-Tag-Match
+
+ Applicable protocol: http
+
+ Status: standard
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 54]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Author/Change controller: IETF
+
+ Specification document(s): this specification (Section 8.3)
+
+ Related information: none
+
+12.2. iCalendar Property Parameter Registrations
+
+ The following iCalendar property parameter names have been added to
+ the iCalendar Parameters Registry defined in Section 8.3.3 of
+ [RFC5545].
+
+ +---------------------+---------+-----------------------+
+ | Parameter | Status | Reference |
+ +---------------------+---------+-----------------------+
+ | SCHEDULE-AGENT | Current | RFC 6638, Section 7.1 |
+ | | | |
+ | SCHEDULE-STATUS | Current | RFC 6638, Section 7.3 |
+ | | | |
+ | SCHEDULE-FORCE-SEND | Current | RFC 6638, Section 7.2 |
+ +---------------------+---------+-----------------------+
+
+12.3. iCalendar REQUEST-STATUS Value Registrations
+
+ The following iCalendar "REQUEST-STATUS" values have been added to
+ the iCalendar REQUEST-STATUS Value Registry defined in Section 7.3 of
+ [RFC5546].
+
+ +-------------+---------+---------------------------+
+ | Status Code | Status | Reference |
+ +-------------+---------+---------------------------+
+ | 1.0 | Current | RFC 6638, Section 3.2.9.1 |
+ | | | |
+ | 1.1 | Current | RFC 6638, Section 3.2.9.2 |
+ | | | |
+ | 1.2 | Current | RFC 6638, Section 3.2.9.3 |
+ +-------------+---------+---------------------------+
+
+12.4. Additional iCalendar Elements Registries
+
+ Per this specification, two new IANA registries for iCalendar
+ elements have been added. Additional codes MAY be used, provided the
+ process described in Section 8.2.1 of [RFC5545] is used to register
+ them.
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 55]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+12.4.1. Schedule Agent Values Registry
+
+ The following table has been used to initialize the Schedule Agent
+ Values Registry.
+
+ +----------------+---------+-----------------------+
+ | Schedule Agent | Status | Reference |
+ +----------------+---------+-----------------------+
+ | SERVER | Current | RFC 6638, Section 7.1 |
+ | | | |
+ | CLIENT | Current | RFC 6638, Section 7.1 |
+ | | | |
+ | NONE | Current | RFC 6638, Section 7.1 |
+ +----------------+---------+-----------------------+
+
+12.4.2. Schedule Force Send Values Registry
+
+ The following table has been used to initialize the Schedule Force
+ Send Values Registry.
+
+ +---------------------+---------+-----------------------+
+ | Schedule Force Send | Status | Reference |
+ +---------------------+---------+-----------------------+
+ | REQUEST | Current | RFC 6638, Section 7.2 |
+ | | | |
+ | REPLY | Current | RFC 6638, Section 7.2 |
+ +---------------------+---------+-----------------------+
+
+13. Acknowledgements
+
+ The authors would like to thank the following individuals for
+ contributing their ideas and support for writing this specification:
+ Mike Douglass, Lisa Dusseault, Red Dutta, Jacob Farkas, Jeffrey
+ Harris, Helge Hess, Eliot Lear, Andrew McMillan, Alexey Melnikov,
+ Arnaud Quillaud, Julian F. Reschke, Wilfredo Sanchez Vega, and Simon
+ Vaillancourt.
+
+ The authors would also like to thank the Calendaring and Scheduling
+ Consortium for advice with this specification, and for organizing
+ interoperability testing events to help refine it.
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 56]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+14. References
+
+14.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
+ Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
+ Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
+
+ [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
+ Leach, P., Luotonen, A., and L. Stewart, "HTTP
+ Authentication: Basic and Digest Access Authentication",
+ RFC 2617, June 1999.
+
+ [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
+
+ [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web
+ Distributed Authoring and Versioning (WebDAV)
+ Access Control Protocol", RFC 3744, May 2004.
+
+ [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration
+ Procedures for Message Header Fields", BCP 90, RFC 3864,
+ September 2004.
+
+ [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault,
+ "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791,
+ March 2007.
+
+ [RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed
+ Authoring and Versioning (WebDAV)", RFC 4918, June 2007.
+
+ [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for
+ Syntax Specifications: ABNF", STD 68, RFC 5234,
+ January 2008.
+
+ [RFC5545] Desruisseaux, B., Ed., "Internet Calendaring and
+ Scheduling Core Object Specification (iCalendar)",
+ RFC 5545, September 2009.
+
+ [RFC5546] Daboo, C., Ed., "iCalendar Transport-Independent
+ Interoperability Protocol (iTIP)", RFC 5546,
+ December 2009.
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 57]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and
+ Verification of Domain-Based Application Service Identity
+ within Internet Public Key Infrastructure Using X.509
+ (PKIX) Certificates in the Context of Transport Layer
+ Security (TLS)", RFC 6125, March 2011.
+
+ [W3C.REC-xml-20081126]
+ Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E.,
+ and F. Yergeau, "Extensible Markup Language (XML) 1.0
+ (Fifth Edition)", World Wide Web Consortium
+ Recommendation REC-xml-20081126, November 2008,
+ <http://www.w3.org/TR/2008/REC-xml-20081126>.
+
+14.2. Informative References
+
+ [RFC6047] Melnikov, A., Ed., "iCalendar Message-Based
+ Interoperability Protocol (iMIP)", RFC 6047,
+ December 2010.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 58]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+Appendix A. Scheduling Privileges Summary
+
+A.1. Scheduling Inbox Privileges
+
+ The following tables specify which scheduling privileges grant the
+ right to a calendar user to deliver a scheduling message to the
+ scheduling Inbox collection of another calendar user. The
+ appropriate behavior depends on the calendar component type as well
+ as the scheduling "METHOD" specified in the scheduling message.
+
+ +--------------------------------+
+ | METHOD for VEVENT and VTODO |
+ +-----------------------------+---------+-------+-----+--------+
+ | Scheduling Inbox Privilege | REQUEST | REPLY | ADD | CANCEL |
+ +-----------------------------+---------+-------+-----+--------+
+ | schedule-deliver | * | * | * | * |
+ | schedule-deliver-invite | * | | * | * |
+ | schedule-deliver-reply | | * | | |
+ | schedule-query-freebusy | | | | |
+ +-----------------------------+---------+-------+-----+--------+
+
+
+ +----------------------+
+ | METHOD for VFREEBUSY |
+ +-----------------------------+----------------------+
+ | Scheduling Inbox Privilege | REQUEST |
+ +-----------------------------+----------------------+
+ | schedule-deliver | * |
+ | schedule-deliver-invite | |
+ | schedule-deliver-reply | |
+ | schedule-query-freebusy | * |
+ +-----------------------------+----------------------+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 59]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+A.2. Scheduling Outbox Privileges
+
+ The following tables specify which scheduling privileges grant the
+ right to a calendar user to perform busy time information requests
+ and to submit scheduling messages to other calendar users as the
+ result of a scheduling operation. The appropriate behavior depends
+ on the calendar component type as well as the scheduling "METHOD"
+ specified in the scheduling message.
+
+ +--------------------------------+
+ | METHOD for VEVENT and VTODO |
+ +-----------------------------+---------+-------+-----+--------+
+ | Scheduling Outbox Privilege | REQUEST | REPLY | ADD | CANCEL |
+ +-----------------------------+---------+-------+-----+--------+
+ | schedule-send | * | * | * | * |
+ | schedule-send-invite | * | | * | * |
+ | schedule-send-reply | | * | | |
+ | schedule-send-freebusy | | | | |
+ +-----------------------------+---------+-------+-----+--------+
+
+
+ +----------------------+
+ | METHOD for VFREEBUSY |
+ +-----------------------------+----------------------+
+ | Scheduling Outbox Privilege | REQUEST |
+ +-----------------------------+----------------------+
+ | schedule-send | * |
+ | schedule-send-invite | |
+ | schedule-send-reply | |
+ | schedule-send-freebusy | * |
+ +-----------------------------+----------------------+
+
+Appendix B. Example Scheduling Operations
+
+ This section describes some example scheduling operations that give a
+ general idea of how scheduling is carried out between CalDAV clients
+ and servers from the perspective of meeting "Organizers" and
+ "Attendees".
+
+ The server is assumed to be hosted in the "example.com" domain, and
+ users whose email addresses are at the "example.com" domain are
+ assumed to be hosted by the server. In addition, the email addresses
+ in the "example.net" domain are also valid email addresses for
+ calendar users hosted by the server. Calendar users with an email
+ address at the "example.org" domain are assumed to not be hosted by
+ the server.
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 60]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ In the following examples, the requests and responses are incomplete
+ and are only for illustrative purposes. In particular, HTTP
+ authentication headers and behaviors are not shown, even though they
+ are required in normal operation.
+
+B.1. Example: "Organizer" Inviting Multiple "Attendees"
+
+ In the following example, Cyrus invites Wilfredo, Bernard, and Mike
+ to a single instance event by simply creating a new scheduling object
+ resource in one of his calendar collections by using the PUT method.
+
+ >> Request <<
+
+ PUT /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
+ Host: cal.example.com
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+ If-None-Match: *
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T185254Z
+ DTSTART:20090602T160000Z
+ DTEND:20090602T170000Z
+ TRANSP:OPAQUE
+ SUMMARY:Lunch
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
+ =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
+ example.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
+ ample.net
+ ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
+ CTION;RSVP=TRUE:mailto:mike at example.org
+ END:VEVENT
+ END:VCALENDAR
+
+ >> Response <<
+
+ HTTP/1.1 201 Created
+ Content-Length: 0
+
+
+
+Daboo & Desruisseaux Standards Track [Page 61]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Date: Tue, 02 Jun 2009 18:52:54 GMT
+ Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
+ ETag: "d85561cfe74a4e785eb4639451b434fb"
+ Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
+
+ Once the event creation has been completed, Cyrus's client will
+ retrieve the event back from the server to get the schedule status of
+ each "Attendee", as well as record the Schedule-Tag value for future
+ use. In this example, the server reports that a scheduling message
+ was delivered to Wilfredo, a scheduling message is still pending for
+ Bernard, and the server was unable to deliver a scheduling message to
+ Mike.
+
+ >> Request <<
+
+ GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
+ Host: cal.example.com
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 18:52:58 GMT
+ Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
+ ETag: "eb897deabc8939589da116714bc99265"
+ Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Server//EN
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T185300Z
+ DTSTART:20090602T160000Z
+ DTEND:20090602T170000Z
+ TRANSP:OPAQUE
+ SUMMARY:Lunch
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
+ =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
+ 1.2:mailto:wilfredo at e
+ xample.com
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 62]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
+ 1.0:mailto:bernard at example.net
+ ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
+ CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike at example.org
+ END:VEVENT
+ END:VCALENDAR
+
+B.2. Example: "Attendee" Receiving an Invitation
+
+ In the following example, Wilfredo's client retrieves and deletes the
+ new scheduling message that appeared in his scheduling Inbox
+ collection after the server automatically processed it and created a
+ new scheduling object resource in his default calendar collection.
+
+ >> Request <<
+
+ GET /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
+ Host: cal.example.com
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 18:59:58 GMT
+ Last-Modified: Tue, 02 Jun 2009 18:59:58 GMT
+ ETag: "da116714bc9926c89395895eb897deab"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Server//EN
+ METHOD:REQUEST
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T185254Z
+ DTSTART:20090602T160000Z
+ DTEND:20090602T170000Z
+ TRANSP:OPAQUE
+ SUMMARY:Lunch
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
+ =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
+ example.com
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 63]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
+ ample.net
+ ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
+ CTION;RSVP=TRUE:mailto:mike at example.org
+ END:VEVENT
+ END:VCALENDAR
+
+ >> Request <<
+
+ DELETE /home/wilfredo/calendars/inbox/27d93fc0a58c.ics HTTP/1.1
+ Host: cal.example.com
+
+ >> Response <<
+
+ HTTP/1.1 204 No Content
+ Date: Tue, 02 Jun 2009 20:40:36 GMT
+
+B.3. Example: "Attendee" Replying to an Invitation
+
+ In the following example, Wilfredo accepts Cyrus's invitation and
+ sets an alarm reminder on the event. It uses the If-Schedule-Tag-
+ Match precondition behavior to ensure it does not overwrite any
+ significant changes from the "Organizer" that might have occurred
+ after it retrieved the initial resource data.
+
+ >> Request <<
+
+ PUT /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
+ Host: cal.example.com
+ If-Schedule-Tag-Match: "e78f23ed-0188-4bab-938d-2aeb3324c7e8"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T185254Z
+ DTSTART:20090602T160000Z
+ DTEND:20090602T170000Z
+ TRANSP:OPAQUE
+ SUMMARY:Lunch
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+
+
+
+Daboo & Desruisseaux Standards Track [Page 64]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
+ =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo at exam
+ ple.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
+ ample.net
+ ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
+ CTION;RSVP=TRUE:mailto:mike at example.org
+ BEGIN:VALARM
+ TRIGGER:-PT15M
+ ACTION:DISPLAY
+ DESCRIPTION:Reminder
+ END:VALARM
+ END:VEVENT
+ END:VCALENDAR
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Content-Length: 0
+ Date: Tue, 02 Jun 2009 18:57:54 GMT
+ Last-Modified: Tue, 02 Jun 2009 18:57:54 GMT
+ ETag: "eb4639451b434fbd85561cfe74a4e785"
+ Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
+
+ Once the event modification has been completed, Wilfredo's client
+ will retrieve the event back from the server to get the schedule
+ status of the "Organizer".
+
+ >> Request <<
+
+ GET /home/wilfredo/calendars/work/BB64861C2228.ics HTTP/1.1
+ Host: cal.example.com
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 19:03:03 GMT
+ Last-Modified: Tue, 02 Jun 2009 19:02:21 GMT
+ ETag: "5eb897deabda116714bc9926c8939589"
+ Schedule-Tag: "8893ee45-eb9d-428f-b53c-c777daf19e41"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 65]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T190221Z
+ DTSTART:20090602T160000Z
+ DTEND:20090602T170000Z
+ TRANSP:OPAQUE
+ SUMMARY:Lunch
+ ORGANIZER;CN="Cyrus Daboo";SCHEDULE-STATUS=1.2:mailto:cyrus at ex
+ ample.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
+ =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo at exam
+ ple.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at ex
+ ample.net
+ ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
+ CTION;RSVP=TRUE:mailto:mike at example.org
+ BEGIN:VALARM
+ TRIGGER:-PT15M
+ ACTION:DISPLAY
+ DESCRIPTION:Reminder
+ END:VALARM
+ END:VEVENT
+ END:VCALENDAR
+
+B.4. Example: "Organizer" Receiving a Reply to an Invitation
+
+ On reception of Wilfredo's reply, Cyrus's server will automatically
+ update Cyrus's scheduling object resource, make Wilfredo's scheduling
+ message available in Cyrus's scheduling Inbox collection, and deliver
+ an updated scheduling message to Bernard to share Wilfredo's updated
+ participation status. In this example, Cyrus's client retrieves and
+ deletes this scheduling message in his scheduling Inbox collection.
+
+ >> Request <<
+
+ GET /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
+ Host: cal.example.com
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 66]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 19:05:02 GMT
+ Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
+ ETag: "9265eb897deabc8939589da116714bc9"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Server//EN
+ METHOD:REPLY
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T185754Z
+ DTSTART:20090602T160000Z
+ DTEND:20090602T170000Z
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega";PARTSTAT=ACCEPTED:mailto:w
+ ilfredo at example.com
+ REQUEST-STATUS:2.0;Success
+ END:VEVENT
+ END:VCALENDAR
+
+ >> Request <<
+
+ DELETE /home/cyrus/calendars/inbox/c0a58c27d93f.ics HTTP/1.1
+ Host: cal.example.com
+
+ >> Response <<
+
+ HTTP/1.1 204 No Content
+ Date: Tue, 02 Jun 2009 19:05:05 GMT
+
+ Cyrus's client then retrieves the event back from the server with
+ Wilfredo's updated participation status.
+
+ >> Request <<
+
+ GET /home/cyrus/calendars/work/9263504FD3AD.ics HTTP/1.1
+ Host: cal.example.com
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 67]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 19:05:02 GMT
+ Last-Modified: Tue, 02 Jun 2009 19:04:20 GMT
+ ETag: "eb897deabc8939589da116714bc99265"
+ Schedule-Tag: "132cab27-1fe3-67ab-de13-abd348d1dee3"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Server//EN
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T190420Z
+ DTSTART:20090602T160000Z
+ DTEND:20090602T170000Z
+ TRANSP:OPAQUE
+ SUMMARY:Lunch
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
+ =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=2.0:
+ mailto:wilfredo at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1
+ .0:mailto:bernard at example.net
+ ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
+ CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike at example.org
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 68]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+B.5. Example: "Organizer" Requesting Busy Time Information
+
+ In this example, Cyrus requests the busy time information of
+ Wilfredo, Bernard, and Mike.
+
+ >> Request <<
+
+ POST /home/cyrus/calendars/outbox/ HTTP/1.1
+ Host: cal.example.com
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ METHOD:REQUEST
+ BEGIN:VFREEBUSY
+ UID:4FD3AD926350
+ DTSTAMP:20090602T190420Z
+ DTSTART:20090602T000000Z
+ DTEND:20090604T000000Z
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo at example.com
+ ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard at example.net
+ ATTENDEE;CN="Mike Douglass":mailto:mike at example.org
+ END:VFREEBUSY
+ END:VCALENDAR
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 20:07:34 GMT
+ Content-Type: application/xml; charset="utf-8"
+ Content-Length: xxxx
+
+ <?xml version="1.0" encoding="utf-8" ?>
+ <C:schedule-response xmlns:D="DAV:"
+ xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <C:response>
+ <C:recipient>
+ <D:href>mailto:wilfredo at example.com</D:href>
+ </C:recipient>
+ <C:request-status>2.0;Success</C:request-status>
+ <C:calendar-data>BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Server//EN
+ METHOD:REPLY
+ BEGIN:VFREEBUSY
+
+
+
+Daboo & Desruisseaux Standards Track [Page 69]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ UID:4FD3AD926350
+ DTSTAMP:20090602T200733Z
+ DTSTART:20090602T000000Z
+ DTEND:20090604T000000Z
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo at example.com
+ FREEBUSY;FBTYPE=BUSY:20090602T110000Z/20090602T120000Z
+ FREEBUSY;FBTYPE=BUSY:20090603T170000Z/20090603T180000Z
+ END:VFREEBUSY
+ END:VCALENDAR
+ </C:calendar-data>
+ </C:response>
+ <C:response>
+ <C:recipient>
+ <D:href>mailto:bernard at example.net</D:href>
+ </C:recipient>
+ <C:request-status>2.0;Success</C:request-status>
+ <C:calendar-data>BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Server//EN
+ METHOD:REPLY
+ BEGIN:VFREEBUSY
+ UID:4FD3AD926350
+ DTSTAMP:20090602T200733Z
+ DTSTART:20090602T000000Z
+ DTEND:20090604T000000Z
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard at example.net
+ FREEBUSY;FBTYPE=BUSY:20090602T150000Z/20090602T160000Z
+ FREEBUSY;FBTYPE=BUSY:20090603T090000Z/20090603T100000Z
+ FREEBUSY;FBTYPE=BUSY:20090603T180000Z/20090603T190000Z
+ END:VFREEBUSY
+ END:VCALENDAR
+ </C:calendar-data>
+ </C:response>
+ <C:response>
+ <C:recipient>
+ <D:href>mailto:mike at example.org</D:href>
+ </C:recipient>
+ <C:request-status>3.7;Invalid calendar user</C:request-status>
+ </C:response>
+ </C:schedule-response>
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 70]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+B.6. Example: User Attempting to Invite "Attendee" on Behalf of
+ "Organizer"
+
+ In the following example, Cyrus attempts to create, on behalf of
+ Wilfredo, an event with Bernard specified as an "Attendee". The
+ request fails, since Wilfredo didn't grant Cyrus the right to invite
+ other calendar users on his behalf.
+
+ >> Request <<
+
+ PUT /home/wilfredo/calendars/work/def456.ics HTTP/1.1
+ Host: cal.example.com
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+ If-None-Match: *
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ BEGIN:VEVENT
+ UID:3504F926D3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T190221Z
+ DTSTART:20090602T230000Z
+ DTEND:20090603T000000Z
+ TRANSP:OPAQUE
+ SUMMARY:Dinner
+ ORGANIZER;CN="Wilfredo Sanchez Vega":mailto:wilfredo at example.com
+ ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT=A
+ CCEPTED:mailto:wilfredo at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=NE
+ EDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
+ e.net
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 71]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ >> Response <<
+
+ HTTP/1.1 403 Forbidden
+ Content-Type: application/xml; charset="utf-8"
+ Content-Length: xxxx
+
+ <?xml version="1.0" encoding="utf-8" ?>
+ <D:error xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:need-privileges>
+ <D:resource>
+ <D:href>/home/wilfredo/calendars/outbox/</D:href>
+ <D:privilege><C:schedule-send-invite/></D:privilege>
+ </D:resource>
+ </D:need-privileges>
+ </D:error>
+
+B.7. Example: "Attendee" Declining an Instance of a Recurring Event
+
+ In the following example, Bernard declines the second recurrence
+ instance of a daily recurring event he's been invited to by Cyrus.
+
+ >> Request <<
+
+ PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
+ Host: cal.example.com
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+ If-Schedule-Tag-Match: "7775FB30-7534-489E-A79A-0EA147B933EB"
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ BEGIN:VTIMEZONE
+ TZID:America/Montreal
+ BEGIN:STANDARD
+ DTSTART:20071104T020000
+ RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+ TZNAME:EST
+ TZOFFSETFROM:-0400
+ TZOFFSETTO:-0500
+ END:STANDARD
+ BEGIN:DAYLIGHT
+ DTSTART:20070311T020000
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+ TZNAME:EDT
+ TZOFFSETFROM:-0500
+ TZOFFSETTO:-0400
+ END:DAYLIGHT
+
+
+
+Daboo & Desruisseaux Standards Track [Page 72]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ END:VTIMEZONE
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T185254Z
+ DTSTART;TZID=America/Montreal:20090601T150000
+ DTEND;TZID=America/Montreal:20090601T160000
+ RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
+ TRANSP:OPAQUE
+ SUMMARY:Review Internet-Draft
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
+ e.net
+ END:VEVENT
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090603T183823Z
+ RECURRENCE-ID;TZID=America/Montreal:20090602T150000
+ DTSTART;TZID=America/Montreal:20090602T150000
+ DTEND;TZID=America/Montreal:20090602T160000
+ TRANSP:TRANSPARENT
+ SUMMARY:Review Internet-Draft
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
+ e.net
+ END:VEVENT
+ END:VCALENDAR
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Content-Length: 0
+ Date: Tue, 02 Jun 2009 18:52:54 GMT
+ Last-Modified: Tue, 02 Jun 2009 18:52:54 GMT
+ ETag: "d85561cfe74a4e785eb4639451b434fb"
+ Schedule-Tag: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 73]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ Bernard's participation status update will cause his server to
+ deliver a scheduling message to Cyrus. Cyrus's client will find the
+ following reply message from Bernard in Cyrus's scheduling Inbox
+ collection:
+
+ >> Request <<
+
+ GET /home/cyrus/calendars/inbox/9263504FD3AD.ics HTTP/1.1
+ Host: cal.example.com
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 18:52:58 GMT
+ Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
+ ETag: "eb897deabc8939589da116714bc99265"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ METHOD:REPLY
+ BEGIN:VTIMEZONE
+ TZID:America/Montreal
+ BEGIN:STANDARD
+ DTSTART:20071104T020000
+ RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+ TZNAME:EST
+ TZOFFSETFROM:-0400
+ TZOFFSETTO:-0500
+ END:STANDARD
+ BEGIN:DAYLIGHT
+ DTSTART:20070311T020000
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+ TZNAME:EDT
+ TZOFFSETFROM:-0500
+ TZOFFSETTO:-0400
+ END:DAYLIGHT
+ END:VTIMEZONE
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090603T183823Z
+ RECURRENCE-ID;TZID=America/Montreal:20090602T150000
+ DTSTART;TZID=America/Montreal:20090602T150000
+ DTEND;TZID=America/Montreal:20090602T160000
+ SUMMARY:Review Internet-Draft
+
+
+
+Daboo & Desruisseaux Standards Track [Page 74]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
+ mailto:bernard at example.net
+ REQUEST-STATUS:2.0;Success
+ END:VEVENT
+ END:VCALENDAR
+
+B.8. Example: "Attendee" Removing an Instance of a Recurring Event
+
+ In the following example, Bernard removes from his calendar the third
+ recurrence instance of a daily recurring event he's been invited to
+ by Cyrus. This is accomplished by the addition of an "EXDATE"
+ property to the scheduling object resource stored by Bernard.
+
+ >> Request <<
+
+ PUT /home/bernard/calendars/work/4FD3AD926350.ics HTTP/1.1
+ Host: cal.example.com
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+ If-Schedule-Tag-Match: "488177c8-2ea7-4176-a6cb-fab8cfccdea2"
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ BEGIN:VTIMEZONE
+ TZID:America/Montreal
+ BEGIN:STANDARD
+ DTSTART:20071104T020000
+ RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+ TZNAME:EST
+ TZOFFSETFROM:-0400
+ TZOFFSETTO:-0500
+ END:STANDARD
+ BEGIN:DAYLIGHT
+ DTSTART:20070311T020000
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+ TZNAME:EDT
+ TZOFFSETFROM:-0500
+ TZOFFSETTO:-0400
+ END:DAYLIGHT
+ END:VTIMEZONE
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090602T185254Z
+ DTSTART;TZID=America/Montreal:20090601T150000
+ DTEND;TZID=America/Montreal:20090601T160000
+
+
+
+Daboo & Desruisseaux Standards Track [Page 75]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
+ EXDATE;TZID=America/Montreal:20090603T150000
+ TRANSP:OPAQUE
+ SUMMARY:Review Internet-Draft
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
+ e.net
+ END:VEVENT
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090603T183823Z
+ RECURRENCE-ID;TZID=America/Montreal:20090602T150000
+ DTSTART;TZID=America/Montreal:20090602T150000
+ DTEND;TZID=America/Montreal:20090602T160000
+ TRANSP:TRANSPARENT
+ SUMMARY:Review Internet-Draft
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
+ mailto:cyrus at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
+ DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard at exampl
+ e.net
+ END:VEVENT
+ END:VCALENDAR
+
+ Bernard's deletion of a recurrence instance will cause his server to
+ deliver a scheduling message to Cyrus. Cyrus's client will find the
+ following reply message from Bernard in Cyrus's scheduling Inbox
+ collection:
+
+ >> Request <<
+
+ GET /home/cyrus/calendars/inbox/6504923FD3AD.ics HTTP/1.1
+ Host: cal.example.com
+
+ >> Response <<
+
+ HTTP/1.1 200 OK
+ Date: Tue, 02 Jun 2009 18:52:58 GMT
+ Last-Modified: Tue, 02 Jun 2009 18:52:58 GMT
+ ETag: "eb897deabc8939589da116714bc99265"
+ Content-Type: text/calendar; charset="utf-8"
+ Content-Length: xxxx
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 76]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+ BEGIN:VCALENDAR
+ VERSION:2.0
+ PRODID:-//Example Corp.//CalDAV Client//EN
+ METHOD:REPLY
+ BEGIN:VTIMEZONE
+ TZID:America/Montreal
+ BEGIN:STANDARD
+ DTSTART:20071104T020000
+ RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+ TZNAME:EST
+ TZOFFSETFROM:-0400
+ TZOFFSETTO:-0500
+ END:STANDARD
+ BEGIN:DAYLIGHT
+ DTSTART:20070311T020000
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+ TZNAME:EDT
+ TZOFFSETFROM:-0500
+ TZOFFSETTO:-0400
+ END:DAYLIGHT
+ END:VTIMEZONE
+ BEGIN:VEVENT
+ UID:9263504FD3AD
+ SEQUENCE:0
+ DTSTAMP:20090603T183823Z
+ RECURRENCE-ID;TZID=America/Montreal:20090603T150000
+ DTSTART;TZID=America/Montreal:20090603T150000
+ DTEND;TZID=America/Montreal:20090603T160000
+ SUMMARY:Review Internet-Draft
+ ORGANIZER;CN="Cyrus Daboo":mailto:cyrus at example.com
+ ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
+ mailto:bernard at example.net
+ REQUEST-STATUS:2.0;Success
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 77]
+
+RFC 6638 CalDAV Scheduling June 2012
+
+
+Authors' Addresses
+
+ Cyrus Daboo
+ Apple Inc.
+ 1 Infinite Loop
+ Cupertino, CA 95014
+ USA
+
+ EMail: cyrus at daboo.name
+ URI: http://www.apple.com/
+
+
+ Bernard Desruisseaux
+ Oracle Corporation
+ 600 Blvd. de Maisonneuve West
+ Suite 1900
+ Montreal, QC H3A 3J2
+ CANADA
+
+ EMail: bernard.desruisseaux at oracle.com
+ URI: http://www.oracle.com/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Daboo & Desruisseaux Standards Track [Page 78]
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120618/5e47a18f/attachment-0001.html>
More information about the calendarserver-changes
mailing list