tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Gloss.     Arch.     IMS     UICC    |    Misc.    |    search     info

RFC 6638

 
 
 

Scheduling Extensions to CalDAV

Part 4 of 4, p. 54 to 78
Prev RFC Part

 


prevText      Top      Up      ToC       Page 54 
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

Top      Up      ToC       Page 55 
   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.

Top      Up      ToC       Page 56 
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.

Top      Up      ToC       Page 57 
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.

Top      Up      ToC       Page 58 
   [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.

Top      Up      ToC       Page 59 
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   |          *           |
   +-----------------------------+----------------------+

Top      Up      ToC       Page 60 
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.

Top      Up      ToC       Page 61 
   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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@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@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR

   >> Response <<

   HTTP/1.1 201 Created
   Content-Length: 0

Top      Up      ToC       Page 62 
   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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
    1.2:mailto:wilfredo@e
    xample.com

Top      Up      ToC       Page 63 
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=
    1.0:mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@
    example.com

Top      Up      ToC       Page 64 
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com

Top      Up      ToC       Page 65 
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
    ple.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@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

Top      Up      ToC       Page 66 
   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@ex
    ample.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:wilfredo@exam
    ple.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@ex
    ample.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE:mailto:mike@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

Top      Up      ToC       Page 67 
   >> 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@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";PARTSTAT=ACCEPTED:mailto:w
    ilfredo@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

Top      Up      ToC       Page 68 
   >> 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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT
    =ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=2.0:
    mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1
    .0:mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-A
    CTION;RSVP=TRUE;SCHEDULE-STATUS=3.7:mailto:mike@example.org
   END:VEVENT
   END:VCALENDAR

Top      Up      ToC       Page 69 
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@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@example.net
   ATTENDEE;CN="Mike Douglass":mailto:mike@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@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

Top      Up      ToC       Page 70 
   UID:4FD3AD926350
   DTSTAMP:20090602T200733Z
   DTSTART:20090602T000000Z
   DTEND:20090604T000000Z
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega":mailto:wilfredo@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@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@example.com
   ATTENDEE;CN="Bernard Desruisseaux":mailto:bernard@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@example.org</D:href>
   </C:recipient>
   <C:request-status>3.7;Invalid calendar user</C:request-status>
   </C:response>
   </C:schedule-response>

Top      Up      ToC       Page 71 
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@example.com
   ATTENDEE;CN="Wilfredo Sanchez Vega";CUTYPE=INDIVIDUAL;PARTSTAT=A
    CCEPTED:mailto:wilfredo@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=NE
    EDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@exampl
    e.net
   END:VEVENT
   END:VCALENDAR

Top      Up      ToC       Page 72 
   >> 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

Top      Up      ToC       Page 73 
   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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@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"

Top      Up      ToC       Page 74 
   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

Top      Up      ToC       Page 75 
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
    mailto:bernard@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

Top      Up      ToC       Page 76 
   RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
   EXDATE;TZID=America/Montreal:20090603T150000
   TRANSP:OPAQUE
   SUMMARY:Review Internet-Draft
   ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@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@example.com
   ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:
    mailto:cyrus@example.com
   ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=
    DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@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

Top      Up      ToC       Page 77 
   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@example.com
   ATTENDEE;CN="Bernard Desruisseaux";PARTSTAT=DECLINED:
    mailto:bernard@example.net
   REQUEST-STATUS:2.0;Success
   END:VEVENT
   END:VCALENDAR

Top      Up      ToC       Page 78 
Authors' Addresses

   Cyrus Daboo
   Apple Inc.
   1 Infinite Loop
   Cupertino, CA  95014
   USA

   EMail: cyrus@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@oracle.com
   URI:   http://www.oracle.com/