Calendar Server Extension C. Daboo Apple May 23, 2007 Masking existing meetings in iCalendar free busy requests icalendar-maskuids-03 Abstract This document defines an extension to the iTIP calendar scheduling protocol to allow an organizer to have a specific event that may exist on an attendee's calendar ignored when the attendee calculates and returns their free-busy information after a request from the organizer. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Conventions Used in This Document . . . . . . . . . . . . . . . 2 3. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4. New features in iCalendar . . . . . . . . . . . . . . . . . . . 3 4.1. Mask UID Property . . . . . . . . . . . . . . . . . . . . . 3 4.2. Free/Busy Component . . . . . . . . . . . . . . . . . . . . 3 4.3. iTIP . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5. Interaction with CalDAV Servers . . . . . . . . . . . . . . . . 4 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 8. Normative References . . . . . . . . . . . . . . . . . . . . . 5 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 6 Appendix B. Change History . . . . . . . . . . . . . . . . . . . . 6 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 6 Daboo [Page 1] iCalendar Mask UIDs May 2007 1. Introduction Internet calendaring and scheduling standards are defined by iCalendar [RFC2445] and iTIP [RFC2446]. One of the scheduling operations supported by iTIP is the ability of a meeting organizer to request free-busy time information from attendees of a meeting. To do that, the organizer creates an iCalendar VFREEBUSY component with start and end times corresponding to the interval over which free- busy time needs to be known, and then sends that component in an iTIP REQUEST message to each attendee. Attendees determine their own free-busy information over the specified interval and return that in a VFREEBUSY component sent back to the organizer. It is often the case that an existing meeting that has previously been "booked" with attendees, needs to be re-scheduled. To do that the organizer may again check free-busy status for each attendee to try and determine a suitable time for the re-scheduled meeting. One problem with this is that with the current protocol, free-busy information returned by attendees will include a block of busy time corresponding to the meeting that has already been booked. Whilst the organizer could choose to treat that time as free for each attendee given that a known meeting exists, that would not take into account the possibility that an attendee choose to be double-booked for some reason. What would be useful is a way for an organizer to ask attendees to ignore a certain meeting (specifically the one being re-scheduled) when asking for free-busy time in order to determine when to re- schedule a meeting. This specification defines a new iCalendar property that an organizer can include in a VFREEBUSY request that instructs an attendee's calendar user agent to ignore any matching events when calculating free-busy information sent back in a response. 2. Conventions Used in This Document 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]. 3. Open Issues 1. Do we want some kind of indicator in the iTIP reply so that the organizer's CUA knows whether X-CALENDARSERVER-MASK-UID was used (supported) or not? Daboo [Page 2] iCalendar Mask UIDs May 2007 4. New features in iCalendar 4.1. Mask UID Property Property Name: X-CALENDARSERVER-MASK-UID Purpose: This property indicates the unique identifier for a calendar component that is to be ignored when calculating free-busy time. Value Type: TEXT Property Parameters: Non-standard property parameters can be specified on this property. Conformance: The property MAY be specified in a "VFREEBUSY" calendar component, but MUST occur only once. It only has significance when used in an iTIP VFREEBUSY request. The value of this property MUST be a unique identifier of another iCalendar component that an organizer might believe exists on an attendee's calendar. As per the iCalendar UID property, implementations MUST be able to receive and persist values of at least 255 characters for this property. Formal Definition: The property is defined by the following notation: maskuid = "X-CALENDARSERVER-MASK-UID" maskuidparam ":" text CRLF maskuidparam = *(";" xparam) Example: The following is an example of this property: X-CALENDARSERVER-MASK-UID:4000F192713-0052@example.com 4.2. Free/Busy Component This specification extends the definition of the VFREEBUSY component (see Section 4.6.4 of [RFC2445]) to allow zero or one X-CALENDARSERVER-MASK-UID properties to be present. Daboo [Page 3] iCalendar Mask UIDs May 2007 Formal Definition: (extends [RFC2445]) fbprop /= *( ; the following are optional, ; but MUST NOT occur more than once maskuid ) 4.3. iTIP This specification extends the VFREEBUSY request requirements (see Section 3.3.2 of [RFC2446]) to allow zero or one X-CALENDARSERVER- MASK-UID properties to be present in a VFREEBUSY component sent in a METHOD:REQUEST iTIP message. When a calendar user agent receives a VFREEBUSY request containing a X-CALENDARSERVER-MASK-UID property, it processes the free-busy request as usual with the exception that any components that would contribute busy time to the free-busy response MUST have their UIDs checked, and if: they have a UID that matches the value of the X-CALENDARSERVER- MASK-UID property; and they have an ORGANIZER property value that is the same as the ORGANIZER property value on the VFREEBUSY request component; or they do not have an ORGANIZER property and the calendar user whose free-busy is being checked is the same as the ORGANIZER property value in the VFREEBUSY request component; then they should be ignored and not contribute busy time. 5. Interaction with CalDAV Servers The CalDAV access [RFC4791] and scheduling [I-D.desruisseaux-caldav-sched] extensions to WebDAV define a server- based calendar and scheduling protocol. The scheduling portion of that uses iTIP messaging to send requests and get responses from calendar users. Daboo [Page 4] iCalendar Mask UIDs May 2007 CalDAV servers MAY support the X-CALENDARSERVER-MASK-UID property on any iTIP VFREEBUSY requests sent to the server. To do that, a server simply follows the procedure described above to remove the matching UID from the free busy result, applying the appropriate restrictions with respect to ORGANIZER property. 6. Security Considerations Calendar user agents processing a VFREEBUSY request with a X-CALENDARSERVER-MASK-UID property present MUST ensure that only components whose ORGANIZER property value matches that of the VFREEBUSY request component are ignored when calculating free-busy time, or ensure that there is no ORGANIZER property in the component to be ignored and the requesting calendar user is the same as the responding calendar user. This ensures that organizers can only mask out meetings that they themselves have scheduled, rather than meetings proposed by other people, or unscheduled events on their own calendars. This also ensures that only the original organizer of a meeting can determine whether that meeting actually appears on someone else's calendar by using the free-busy time requests with and without a masked UID as a probe. 7. IANA Considerations This document does not require any actions on the part of IANA. 8. Normative References [I-D.desruisseaux-caldav-sched] Desruisseaux, B., "Scheduling Extensions to CalDAV", draft-desruisseaux-caldav-sched-03 (work in progress), January 2007. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2445] Dawson, F. and Stenerson, D., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 2445, November 1998. [RFC2446] Silverberg, S., Mansour, S., Dawson, F., and R. Hopson, "iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries", RFC 2446, November 1998. Daboo [Page 5] iCalendar Mask UIDs May 2007 [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, March 2007. Appendix A. Acknowledgments This specification is the result of discussions between the Apple calendar server and client teams. Appendix B. Change History Changes since -02 1. Allowing masking of ORGANIZER-less events for the case where the ORGANIZER of the REQUEST is the same as the ATTENDEE being requested. Changes since -01 1. Added section for support in CalDAV servers. Changes since -00 1. Change to allow at most one X-CALENDARSERVER-MASK-UID property. 2. Change name to X-CALENDARSERVER-MASK-UID. Author's Address Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino, CA 95014 USA Email: cyrus@daboo.name URI: http://www.apple.com/ Daboo [Page 6]