Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 6638

Scheduling Extensions to CalDAV

Pages: 78
Proposed Standard
Updates:  47915546
Updated by:  7953
Part 1 of 4 – Pages 1 to 14
None   None   Next

Top   ToC   RFC6638 - Page 1
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.
Top   ToC   RFC6638 - Page 2
   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
Top   ToC   RFC6638 - Page 3
           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
Top   ToC   RFC6638 - Page 4
   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
Top   ToC   RFC6638 - Page 5
   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]).
Top   ToC   RFC6638 - Page 6
   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.
Top   ToC   RFC6638 - Page 7
   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,
Top   ToC   RFC6638 - Page 8
   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.
Top   ToC   RFC6638 - Page 9

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.
Top   ToC   RFC6638 - Page 10

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>
Top   ToC   RFC6638 - Page 11
   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.
Top   ToC   RFC6638 - Page 12
   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.
Top   ToC   RFC6638 - Page 13
   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@example.com</D:href>
       <D:href>mailto:bernard.desruisseaux@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.
Top   ToC   RFC6638 - Page 14
   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>



(page 14 continued on part 2)

Next Section