Network Working Group | C. Daboo |
Internet-Draft | Apple |
Intended status: Standards Track | B. Desruisseaux |
Expires: May 21, 2008 | Oracle |
L. Dusseault | |
CommerceNet | |
November 18, 2007 |
By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.¶
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”.¶
The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.¶
The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.¶
This Internet-Draft will expire on May 21, 2008.¶
This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of exchanging and processing scheduling messages based on the iCalendar Transport-Independent Interoperability Protocol (iTIP). This document defines the "calendar-schedule" feature of CalDAV.¶
This document specifies a set of headers, properties and privileges that define the CalDAV [RFC4791] scheduling extensions to the WebDAV [RFC4918] protocol. This document also provides the transport specific information necessary to convey iCalendar [RFC2445] Transport-independent Interoperability Protocol iTIP [RFC2446] messages over WebDAV which enables transactions such as publish, schedule, reschedule, respond to scheduling requests, negotiation of changes or cancel iCalendar-based calendar components, as well as search for busy time information.¶
Discussion of this Internet-Draft is taking place on the mailing list <http://lists.osafoundation.org/mailman/listinfo/ietf-caldav>.¶
Definitions of XML elements in this document use XML element type declarations (as found in XML Document Type Declarations), described in Section 3.2 of [W3C.REC-xml-20060816].¶
The namespace "urn:ietf:params:xml:ns:caldav" is reserved for the XML elements defined in this specification, or in other Standards Track IETF RFCs written to extend CalDAV. It MUST NOT be used for proprietary extensions.¶
Note that the XML declarations used in this document are incomplete, in that they do not include namespace information. Thus, the reader MUST NOT use these declarations as the only way to create valid CalDAV properties or to validate CalDAV XML element types. Some of the declarations refer to XML elements defined by WebDAV which use the "DAV:" namespace. Wherever such elements appear, they are explicitly given the "DAV:" prefix to help avoid confusion. Additionally, some of the elements used here are defined in CalDAV [RFC4791].¶
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.¶
The augmented BNF used by this document to describe protocol elements is described in Section 2.1 of [RFC2616]. Because this augmented BNF uses the basic production rules provided in Section 2.2 of [RFC2616], those 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].¶
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 string "DAV:" and "CALDAV:" will be prefixed to the element types respectively.¶
This section lists what functionality is required of a CalDAV scheduling server. To advertise support for this specification a server: ¶
If the server supports the calendar scheduling features described in this document it MUST include "calendar-schedule" as a field in the DAV response header from an OPTIONS request on any resource that supports any scheduling properties, privileges or methods.¶
>> Request <<
OPTIONS /lisa/calendar/outbox/ HTTP/1.1 Host: cal.example.com
>> Response <<
HTTP/1.1 200 OK Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE Allow: MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, REPORT, ACL DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule Content-Length: 0
In this example, the OPTIONS response indicates that the server supports both the calendar-access and calendar-schedule features and that /lisa/calendar/outbox/ can be specified as a Request-URI to the POST method.¶
The process of scheduling a meeting between different parties often involves a series of steps with different "actors" playing particular roles during the whole process. Typically there is a meeting "Organizer" whose role is to setup a meeting between one or more meeting "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 tries to determine a time for the meeting that ought to be the most acceptable to each Attendee. This involves finding out when each Attendee is available during the period of time in which the meeting needs to occur (or simply finding a suitable time for all attendees to come together for the meeting), and determining when the most appropriate time is for which each Attendee is free. This process is called a "free-busy" lookup.¶
In the second phase the Organizer sends out invitations to each Attendee using the time determined from the free-busy lookup - or a suitable guess as to an appropriate time based on other factors if free-busy lookup is not feasible. There then follows a process of negotiation between Organizer and Attendees regarding the invitation. Some Attendees may choose to attend at the original time provided by the Organizer, others may decline to attend at that time, but suggest another time, others may decline to attend at any time. The Organizer needs to process each of the replies from the Attendees and take appropriate action to confirm the meeting, reschedule it or perhaps cancel it depending on those replies.¶
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 free-busy 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, its expected that each Attendee will reply 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, and this specification does that.¶
The scenario above covers the case of scheduling events (VEVENT components) between calendar users, and doing free-busy lookups (VFREEBUSY components). However, iCalendar [RFC2445] also allows for sending VTODO and VJOURNAL components as described in iTIP [RFC2446]. Since this specification is based on iTIP, VTODO and VJOURNAL components can also be used. For the majority of the following discussion, scheduling of events and free-busy lookups will be discussed as these are the more common operations, however implementations MUST be able to handle all the types of iCalendar components specified for scheduling in iTIP.¶
This specification introduces two new collection resource types that are used for managing incoming and outgoing scheduling messages separate from other calendar object resources.¶
A calendar user may have multiple calendars representing different spheres of activity, but scheduling requests are targeted at calendar user addresses, and there is no formal way to have those indicate which sphere of activity they might apply to. By storing all incoming scheduling requests in a separate collection, clients can process the requests in that collection and choose what calendar the request belongs to and make its own arrangements to place the relevant calendar object in that calendar to "book" it.¶
The scheduling "Outbox" collection is used for sending scheduling messages via a POST request targeted at the collection and containing the scheduling message in the body of the request. Servers MAY save scheduling messages targeted at the scheduling Outbox collection as resources in the collection, and these can then be used to track the history of scheduling messages.¶
The scheduling "Inbox" collection is used to receive scheduling messages, which are stored as calendar object resources in the collection. The server deposits scheduling messages into the scheduling Inbox collection as the result of a scheduling request that targets the calendar user associated with the scheduling Inbox collection. Scheduling messages could be delivered as the result of a POST request targeted at a scheduling Outbox collection (as described above) or as the result of some external process (not defined here).¶
New WebDAV ACL [RFC3744] privileges on each of these new collections can be used to separately control who is able to send scheduling messages on behalf of a user (when applied to a scheduling Outbox collection), or who a user will accept scheduling messages from (when applied to an scheduling Inbox collection).¶
Note that calendar object resources stored in the new scheduling collections MUST obey the restrictions for (iTIP) [RFC2446] calendar objects. The restrictions for calendar object resources stored in regular calendar collections defined in calendar-access do not apply, irrespective of whether the calendar-access feature is available or not.¶
The iCalendar Transport-independent Interoperability Protocol (iTIP) [RFC2446] outlines a model for scheduling and free-busy message exchanges to perform scheduling transactions. This specification makes use of scheduling messages to handle scheduling transactions on the server by having such messages passed between different users on the server depending on their role in the scheduling process.¶
To that end each scheduling message is modeled as a calendar object resource which contains the iCalendar object that conforms to the iTIP requirements for the type of transaction being requested.¶
This specification defines the POST method, acting on an Organizer's scheduling Outbox collection, to trigger schedule processing by the server. This can take one of two forms: for free-busy messages the POST request returns immediately with free busy results; for scheduling messages, a copy of the scheduling message specified in the request body is deposited into each recipient's scheduling Inbox collection.¶
The server may support delivery of scheduling messages to other CalDAV servers if the client specifies a remote calendar user address for any recipient, but the server is not bound to support or complete remote delivery operations even if it advertises support for the "calendar-schedule" feature. Note that remote delivery mechanisms are not defined in this specification. This specification does not define a server-to-server or server-to-client protocol to deliver remote scheduling messages. Implementations may do this in a proprietary way, with iMIP [RFC2447], or with iTIP bindings as yet unspecified.¶
After the delivery is completed, CalDAV clients will see the scheduling message the next time they synchronize or query a scheduling Inbox collection. To reply to a scheduling REQUEST, the client uses the POST method to send another scheduling message (this time a REPLY) back to the Organizer. If the user has decided to accept the REQUEST, the client can create a suitable calendar object resource in the appropriate calendar collection for the recipient. The step of putting the calendar object resource in the calendar is left up to the client, so that the client can make appropriate choices about where to put the calendar object resource, and with what alarms, etc. However, the server MAY be configured to automatically accept or reject invitations, and if the server auto-accepts invitations then the server is responsible for creating calendar object resources in a calendar collection specified by the user, or via some other configuration option.¶
The CalDAV scheduling extension defines the following new resource types for use with CalDAV.¶
A scheduling Outbox collection is used as the target for initiating the processing of outgoing scheduling messages. These may be requests initiated by or on behalf of the calendar user associated with the scheduling Outbox collection, or responses to requests received by the calendar user associated with the scheduling Outbox collection.¶
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: ¶
<resourcetype xmlns="DAV:"> <collection/> <C:schedule-outbox xmlns:C="urn:ietf:params:xml:ns:caldav"/> </resourcetype>
Every non-collection resource in the scheduling Outbox collection MUST be a valid calendar object resource that defines a scheduling message (i.e. an iCalendar object that follows the iTIP semantic). When a client targets the POST method at a scheduling Outbox collection, the server MAY create a copy of the scheduling message in that scheduling Outbox collection, unless the request contains a free-busy message, in which case the server MUST NOT store a copy of the free-busy message. Copies that are created serve as a record of outgoing scheduling messages.¶
The server MAY auto-delete calendar object resources in the scheduling Outbox collection (e.g., after a period of time or to keep within a quota).¶
New access control privileges can be used 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 9.1 for more details.¶
When the server also supports the calendar-access feature, a scheduling Outbox collection MUST not be a child (at any depth) of a calendar collection resource.¶
A scheduling Inbox collection contains 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: ¶
<resourcetype xmlns="DAV:"> <collection/> <C:schedule-inbox xmlns:C="urn:ietf:params:xml:ns:caldav"/> </resourcetype>
Every non-collection resource in the scheduling Inbox collection MUST be a valid calendar object resource that defines a scheduling message (i.e. an iCalendar object that follows the iTIP semantic). Note, that unlike calendar collections defined by the calendar-access feature, there are no restrictions on the nature of the resources stored (e.g., there is no need to verify that the UIDs of each resource are unique) beyond the restrictions of iTIP itself. The removal of the UID restriction, in particular, is needed because multiple scheduling messages may be sent for one particular calendar component, and each of those will have the same UID property in the calendar object resource.¶
New access control privileges can be set on the scheduling Inbox collection to control who is allowed to send scheduling messages to the calendar user associated with the scheduling Inbox collection. See Section 9.1 for more details.¶
When the server also supports the calendar-access feature, a scheduling Inbox collection MUST not be a child (at any depth) of a calendar collection resource.¶
This section describes new WebDAV properties on scheduling Inbox collection resources.¶
<!ELEMENT calendar-free-busy-set (DAV:href*) >
<C:calendar-free-busy-set xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> <D:href>/calendars/bernard/work/</D:href> <D:href>/calendars/bernard/home/</D:href> <D:href>/public/holidays/CA/</D:href> </C:calendar-free-busy-set>
This specification requires an additional Precondition for the PROPPATCH method. The precondition is: ¶
This section describes new WebDAV properties for calendar object resources stored in scheduling Inbox or Outbox collections.¶
<!ELEMENT originator (DAV:href)> DAV:href value: a CAL-ADDRESS (see Section 4.3.3 in [RFC 2445])
<C:originator xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> <D:href>mailto:bernard@example.com</D:href> </C:originator>
<!ELEMENT recipient (DAV:href+)> DAV:href value: a CAL-ADDRESS (see Section 4.3.3 in [RFC 2445])
<C:recipient xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> <D:href>mailto:cyrus@example.com</D:href> <D:href>mailto:lisa@example.com</D:href> </C:recipient>
The POST method submits a scheduling or free-busy message to one or more recipients by targeting the request at the URI of a scheduling Outbox collection. The request body of a POST method MUST contain a scheduling message or free-busy message (e.g., an iCalendar object that follows the iTIP semantic). The resource identified by the Request-URI MUST be a resource collection of type CALDAV:schedule-outbox (Section 5.1).¶
A submitted scheduling message will be delivered to the calendar user addresses specified in the Recipient request header. A submitted free-busy message will be immediately executed and a free-busy response returned.¶
Preconditions: ¶
Postconditions: None¶
Every POST request MUST include a single Originator request header that specifies the calendar user address of the originator of a given scheduling message. The value specified in this request header MUST be a calendar user address specified in the CALDAV:calendar-user-address-set property defined on the principal resource of the currently authenticated user. Also, the currently authenticated user MUST have the CALDAV:schedule privilege or a suitable sub-privilege granted on the targeted scheduling Outbox collection.¶
In the case of an outgoing scheduling message the value of the Originator request header will typically match that of the ORGANIZER property in the scheduling message, or be one of the calendar user addresses of the calendar user associated with the scheduling Outbox collection being targeted.¶
In the case of an incoming scheduling message the value of the Originator request header will typically match that of one of the ATTENDEE properties in the scheduling message, or be one of the calendar user addresses of the calendar user associated with the scheduling Outbox collection being targeted.¶
However, in both of the above cases, another user may be acting on behalf of the actual calendar user to send scheduling messages. To allow for this a new privilege has been defined to allow the calendar user associated with a scheduling Outbox collection to grant to other users the right to execute POST requests on that scheduling Outbox collection.¶
The value of the Originator request header is kept in the CALDAV:originator property on any resources saved as a result of the schedule request. This includes the copy of the scheduling message saved in the scheduling Outbox collection (if saved by the server), and scheduling messages delivered to any scheduling Inbox collection.¶
iTIP requires that every scheduling message contains an ORGANIZER property identifying the calendar user address of the Organizer of the calendar object. To prevent 'spoofing' (forgeries) of outgoing scheduling messages, CalDAV servers MUST verify that the calendar user address identified by the ORGANIZER property in the outgoing scheduling message data corresponds to the principal owning the scheduling Outbox collection targeted by the POST request. This MUST be done during the processing of the POST request. Note that this check is not required for incoming scheduling messages.¶
Every POST request MUST include one or more Recipient request headers. The value of this header is a list of one or more calendar user addresses and corresponds to the set of calendar users who will have the scheduling message delivered to them. The calendar user associated with of the scheduling Outbox collection being targeted by the POST method MUST have the CALDAV:schedule privilege or a suitable sub-privilege granted on the scheduling Inbox collection of each recipient.¶
In the case of outgoing scheduling messages, typically the list of recipients would correspond to any ATTENDEE property values listed in the scheduling message data. However, there are cases when an ATTENDEE property valie is not listed as a Recipient, or when a Recipient is not one of the ATTENDEE property values.¶
For example, if the Organizer of an event wishes to attend the event themselves, they must do that by including ATTENDEE property with their calendar user address as the value, as the Organizer of an event does not implicitly attend. However, the Organizer does not need to receive an invitation as they know their own participation status, so there is no need to be listed as a Recipient of the scheduling message.¶
Alternatively, a client may have determined participation status of some Attendee's out-of-band and has no need to send another request via CalDAV.¶
In some cases it is handy to be able to send information about a meeting to someone who is not an Attendee. In that case, there would be a Recipient in the request without a corresponding ATTENDEE property in the scheduling message data.¶
Note that the recipient of a CalDAV scheduling message has no knowledge of who the other recipients are - they only get to see the ATTENDEE property information listed in the scheduling message data. So listing a calendar user as a Recipient and not in an ATTENDEE property is the equivalent of a 'Bcc' (blind-carbon-copy) operation in email.¶
In the case of incoming scheduling messages, there would be one Recipient corresponding to the ORGANIZER property value listed in the scheduling message.¶
A POST request may deliver a scheduling message to one or more calendar users specified in the Recipient request header. Since the behavior of each recipient may vary, it is useful to get response status information for each recipient in the overall POST response. This specification defines a new XML response to convey multiple recipient status.¶
A response to a POST method that indicates status for one or more recipients MUST be a CALDAV:schedule-response XML 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 of the request for that recipient, any error codes and an optional description. See Section 11.1.¶
In the case of a free-busy request, the CALDAV:response elements can also contain CALDAV:calendar-data elements which contain free busy information (e.g., an iCalendar VFREEBUSY component) indicating the busy state of the corresponding recipient, assuming that the free-busy request for that recipient succeeded.¶
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.¶
>> Request <<
POST /lisa/calendar/outbox/ HTTP/1.1 Host: cal.example.com Originator: mailto:lisa@example.com Recipient: mailto:bernard@example.com Recipient: mailto:cyrus@example.com Content-Type: text/calendar Content-Length: xxxx BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Example Corp.//CalDAV Client//EN METHOD:REQUEST BEGIN:VEVENT DTSTAMP:20040901T200200Z ORGANIZER:mailto:lisa@example.com DTSTART:20040902T130000Z DTEND:20040902T140000Z SUMMARY:Design meeting UID:34222-232@example.com ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR;CUTYPE=IND IVIDUAL;CN=Lisa Dusseault:mailto:lisa@example.c om ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Bernard Desr uisseaux:mailto:bernard@example.com ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo: mailto:cyrus@example.com END:VEVENT END:VCALENDAR
>> Response <<
HTTP/1.1 200 OK Date: Thu, 02 Sep 2004 16:53:32 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>mailto:bernard@example.com</C:recipient> <C:request-status>2.0;Success</C:request-status> <D:responsedescription>Delivered to recipient scheduling inbox</D:responsedescription> </C:response> <C:response> <C:recipient>mailto:cyrus@example.com</C:recipient> <C:request-status>2.0;Success</C:request-status> <D:responsedescription>Delivered to recipient scheduling inbox</D:responsedescription> </C:response> </C:schedule-response>
In this example, the client requests the server to deliver a meeting invitation (scheduling REQUEST) to the calendar users mailto:bernard@example.com and mailto:cyrus@example.com. The response indicates that delivery to the relevant scheduling Inbox collections of each recipient was accomplished successfully.¶
Note that the Originator and Organizer calendar user addresses were both set to mailto:lisa@example.com. In order to indicate that she is also attending the meeting, mailto:lisa@example.com also included an ATTENDEE property in the iCalendar data corresponding to her calendar user address, however she did not include a Recipient request header for that calendar user address since she already has here own copy of the meeting stored in a calendar collection.¶
>> Request <<
POST /lisa/calendar/outbox/ HTTP/1.1 Host: cal.example.com Originator: mailto:lisa@example.com Recipient: mailto:bernard@example.com Recipient: mailto:cyrus@example.com Content-Type: text/calendar Content-Length: xxxx BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Example Corp.//CalDAV Client//EN METHOD:REQUEST BEGIN:VFREEBUSY DTSTAMP:20040901T200200Z ORGANIZER:mailto:lisa@example.com DTSTART:20040902T000000Z DTEND:20040903T000000Z UID:34222-232@example.com ATTENDEE;CN=Bernard Desruisseaux:mailto:bernard@ example.com ATTENDEE;CN=Cyrus Daboo:mailto:cyrus@example.com END:VFREEBUSY END:VCALENDAR
>> Response <<
HTTP/1.1 200 OK Date: Thu, 02 Sep 2004 16:53:32 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>mailto:bernard@example.com</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 DTSTAMP:20040901T200200Z ORGANIZER:mailto:lisa@example.com DTSTART:20040902T000000Z DTEND:20040903T000000Z UID:34222-232@example.com ATTENDEE;CN=Bernard Desruisseaux:mailto:bernard@ example.com FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:20040902T000000Z/ 20040902T090000Z,20040902T170000Z/20040903T000000Z END:VFREEBUSY END:VCALENDAR </C:calendar-data> </C:response> <C:response> <C:recipient>mailto:cyrus@example.com</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 DTSTAMP:20040901T200200Z ORGANIZER:mailto:lisa@example.com DTSTART:20040902T000000Z DTEND:20040903T000000Z UID:34222-232@example.com ATTENDEE;CN=Cyrus Daboo:mailto:cyrus@example.com FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:20040902T000000Z/ 20040902T090000Z,20040902T170000Z/20040903T000000Z FREEBUSY;FBTYPE=BUSY:20040902T120000Z/20040902T130000Z END:VFREEBUSY END:VCALENDAR </C:calendar-data> </C:response> </C:schedule-response>
In this example, the client requests the server to determine the busy information of the calendar users mailto:bernard@example.com and mailto:cyrus@example.com, over the time range specified by the scheduling message sent in the request. The response includes VFREEBUSY components for each of those calendar users with their busy time indicated.¶
>> Request <<
POST /lisa/calendar/outbox/ HTTP/1.1 Host: cal.example.com Originator: mailto:lisa@example.com Recipient: mailto:bernard@example.com Recipient: mailto:cyrus@example.com Content-Type: text/calendar Content-Length: xxxx BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Example Corp.//CalDAV Client//EN METHOD:REQUEST BEGIN:VTODO DTSTAMP:20040901T200200Z ORGANIZER:mailto:lisa@example.com DUE:20070505 SUMMARY:Finish CalDAV schedule spec UID:34222-456@example.com ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR;CUTYPE=IND IVIDUAL;CN=Lisa Dusseault:mailto:lisa@example.c om ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Bernard Desr uisseaux:mailto:bernard@example.com ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo: mailto:cyrus@example.com END:VEVENT END:VCALENDAR
>> Response <<
HTTP/1.1 200 OK Date: Thu, 02 Sep 2004 16:53:32 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>mailto:bernard@example.com</C:recipient> <C:request-status>2.0;Success</C:request-status> <D:responsedescription>Delivered to recipient scheduling inbox</D:responsedescription> </C:response> <C:response> <C:recipient>mailto:cyrus@example.com</C:recipient> <C:request-status>2.0;Success</C:request-status> <D:responsedescription>Delivered to recipient scheduling inbox</D:responsedescription> </C:response> </C:schedule-response>
In this example, the client requests the server to deliver a task assignment (scheduling REQUEST) to the calendar users mailto:bernard@example.com and mailto:cyrus@example.com. The response indicates that delivery to the relevant scheduling Inbox collections of each recipient was accomplished successfully.¶
Incoming scheduling messages will be stored in a scheduling Inbox collection. As per Section 10, CalDAV calendar-access reports work on scheduling collections, so the client can use those to get partial information on scheduling messages in the scheduling inbox.¶
>> Request <<
GET /bernard/calendar/inbox/mtg456.ics HTTP/1.1 Host: cal.example.com
>> Response <<
HTTP/1.1 200 OK Date: Thu, 02 Sep 2004 17:05:23 GMT Content-Type: text/calendar Content-Length: xxxx BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Example Corp.//CalDAV Server//EN METHOD:REQUEST BEGIN:VEVENT DTSTAMP:20040901T200200Z CATEGORIES:APPOINTMENT ORGANIZER:mailto:lisa@example.com DTSTART:20040902T130000Z DTEND:20040902T140000Z SUMMARY:CalDAV draft review UID:34222-232@example.com ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR;CUTYPE=IND IVIDUAL;CN=Lisa Dusseault:mailto:lisa@example.com ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIP ANT;CUTYPE=INDIVIDUAL;CN=Bernard Desruisseaux: mailto:bernard@example.com ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIP ANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo:mailto:cyr us@example.com END:VEVENT END:VCALENDAR
Scheduling messages are delivered into a recipient's scheduling Inbox collection. To process these messages a calendar user agent client needs to follow a sequence of steps to ensure good interoperability with other clients that may also be monitoring or processing the scheduling Inbox collection.¶
Processing a scheduling message in a scheduling Inbox collection requires the client to read the message, determine the nature of the scheduling operation, make appropriate adjustments to the recipients actual calendars, and then, if required, send a response.¶
In order to ensure that only one client at a time is processing scheduling messages in a scheduling Inbox collection, clients SHOULD use the WebDAV locking feature to lock the entire scheduling Inbox collection for the duration of its processing step. Once a collection is locked, other clients attempting to obtain their own lock will fail as the WebDAV server will return a protocol error at that point.¶
When a scheduling message has been processed by a client it MUST delete that message from the scheduling Inbox collection before removing the WebDAV lock on the scheduling Inbox collection. This ensures that other clients will not in the future attempt to process the scheduling message again.¶
Appendix B describes some sample workflows of scheduling message processing.¶
This specification defines additional property parameters to allow the Organizer and the Attendees to register state information about incoming scheduling messages to allow them to handle messages that arrive in an unexpected order, as per Section 2.1.5 in [RFC2446].¶
received-sequenceparam = "RECEIVED-SEQUENCE" "=" integer
ATTENDEE;CN="Cyrus Daboo";PARTSTAT=ACCEPTED;RECEIVED-SEQUENCE=2; RECEIVED-DTSTAMP=20070214T123456Z:mailto:cyrus@example.com
received-dtstampparam = "RECEIVED-DTSTAMP" "=" date-time
ATTENDEE;CN="Cyrus Daboo";PARTSTAT=ACCEPTED;RECEIVED-SEQUENCE=2; RECEIVED-DTSTAMP=20070214T123456Z:mailto:cyrus@example.com ORGANIZER;CN="Bernard Desruisseaux";RECEIVED-DTSTAMP=20070214T11 4523Z:mailto:bernard@example.com
Originator = "Originator" ":" absoluteURI
Recipient = "Recipient" ":" 1#absoluteURI
Server implementations that advertise support for the "calendar-schedule" feature of CalDAV MUST support WebDAV ACL [RFC3744] as well as the scheduling privileges defined in this section.¶
The tables specified in Appendix A clarifies which scheduling methods (e.g., REQUEST, REPLY, etc.) are controlled by each scheduling privilege defined in this section.¶
The CALDAV:schedule-post privilege controls the use of the POST method to submit scheduling messages for any type of calendar components on the resource. It is ignored for resources that are not scheduling Outbox collections.¶
<!ELEMENT schedule-post EMPTY >¶
The CALDAV:schedule-post-vevent privilege controls the use of the POST method to submit scheduling messages for VEVENT calendar components on the resource. It is ignored for resources that are not scheduling Outbox collections.¶
<!ELEMENT schedule-post-vevent EMPTY >¶
The CALDAV:schedule-post-vtodo privilege controls the use of the POST method to submit scheduling messages for VTODO calendar components on the resource. It is ignored for resources that are not scheduling Outbox collections.¶
<!ELEMENT schedule-post-vtodo EMPTY >¶
The CALDAV:schedule-post-vjournal privilege controls the use of the POST method to submit scheduling messages for VJOURNAL calendar components on the resource. It is ignored for resources that are not scheduling Outbox collections.¶
<!ELEMENT schedule-post-vjournal EMPTY >¶
The CALDAV:schedule-post-vfreebusy privilege controls the use of the POST method to submit scheduling messages for VFREEBUSY calendar components on the resource. It is ignored for resources that are not scheduling Outbox collections.¶
<!ELEMENT schedule-post-vfreebusy EMPTY >¶
The CALDAV:schedule-deliver privilege controls the delivery of a scheduling message containing any type of calendar components coming from an Organizer. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message coming from an Organizer when the Originator is granted this privilege (or an appropriate sub-privilege) on the scheduling Inbox collection of the Recipient.¶
<!ELEMENT schedule-deliver EMPTY >¶
The CALDAV:schedule-deliver-vevent privilege controls the delivery of a scheduling message containing VEVENT calendar components coming from an Organizer. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message for VEVENT calendar components coming from an Organizer when the Originator is granted this privilege on the scheduling Inbox collection of the Recipient.¶
<!ELEMENT schedule-deliver-vevent EMPTY >¶
The CALDAV:schedule-deliver-vtodo privilege controls the delivery of a scheduling message containing VTODO calendar components coming from an Organizer. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message for VTODO calendar components coming from an Organizer when the Originator is granted this privilege on the scheduling Inbox collection of the Recipient.¶
<!ELEMENT schedule-deliver-vtodo EMPTY >¶
The CALDAV:schedule-deliver-vjournal privilege controls the delivery of a scheduling message containing VJOURNAL calendar components coming from an Organizer. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message for VJOURNAL calendar components coming from an Organizer when the Originator is granted this privilege on the scheduling Inbox collection of the Recipient.¶
<!ELEMENT schedule-deliver-vjournal EMPTY >¶
The CALDAV:schedule-deliver-vfreebusy privilege controls the delivery of a scheduling message containing VFREEBUSY calendar components coming from an Organizer. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message for VFREEBUSY calendar components coming from an Organizer when the Originator is granted this privilege on the scheduling Inbox collection of the Recipient.¶
Only the delivery of VFREEBUSY calendar components that specify the PUBLISH scheduling method is allowed in scheduling Inbox collections. The use of VFREEBUSY calendar components that specify the REQUEST scheduling method is controlled by the DAV:read and CALDAV:read-free-busy privileges.¶
<!ELEMENT schedule-deliver-vfreebusy EMPTY >¶
The CALDAV:schedule-respond privilege controls the delivery of a scheduling message containing any type of calendar components coming from an Attendee. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message coming from an Attendee when the Originator is granted this privilege (or an appropriate sub-privilege) on the scheduling Inbox collection of the Recipient.¶
<!ELEMENT schedule-respond EMPTY >¶
The CALDAV:schedule-respond-vevent privilege controls the delivery of a scheduling message containing VEVENT calendar components coming from an Attendee. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message for VEVENT calendar components coming from an Attendee when the Originator is granted this privilege on the scheduling Inbox collection of the Recipient.¶
<!ELEMENT schedule-deliver-vevent EMPTY >¶
The CALDAV:schedule-respond-vtodo privilege controls the delivery of a scheduling message containing VTODO calendar components coming from an Attendee. It is ignored for resources that are not scheduling Inbox collections.¶
Server implementations MUST only deliver a scheduling message for VTODO calendar components coming from an Attendee when the Originator is granted this privilege on the scheduling Inbox collection of the Recipient.¶
<!ELEMENT schedule-deliver-vtodo EMPTY >¶
CALDAV:schedule is an aggregate privilege that contains the entire set of scheduling privileges that can be applied to the resource. It is ignored for resources that are not scheduling Outbox or Inbox collections.¶
<!ELEMENT schedule EMPTY >¶
Server implementations MUST aggregate the scheduling privileges as follows: ¶
All the scheduling privileges MUST be non-abstract and MUST appear in the DAV:supported-privilege-set property of scheduling Outbox and Inbox collections.¶
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.¶
<!ELEMENT schedule-inbox-URL (DAV:href)>
<!ELEMENT schedule-outbox-URL DAV:href>
<!ELEMENT calendar-user-address-set (DAV:href*)>
<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>
In this example, the client requests the CALDAV:calendar-home-set of the principal resources whose CALDAV:calendar-user-address-set property contains the substring "mailto:bernard@example.com". In addition, the client requests the DAV:displayname of each principal to also be returned for the matching principals.¶
The response shows that only one principal resource meets the search specification, "mailto:bernard@example.com".¶
>> Request <<
REPORT /users/ HTTP/1.1 Host: cal.example.com Content-Type: application/xml; charset="utf-8" Content-Length: xxxx Depth: 0 <?xml version="1.0" encoding="utf-8" ?> <D:principal-property-search xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> <D:property-search> <D:prop> <C:calendar-user-address-set/> </D:prop> <D:match>mailto:bernard@example.com</D:match> </D:property-search> <D:prop> <C:calendar-home-set/> <D:displayname/> </D:prop> </D:principal-property-search>
>> Response <<
HTTP/1.1 207 Multi-Status Content-Type: application/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> <D:response> <D:href>/users/bernard</D:href> <D:propstat> <D:prop> <C:calendar-home-set> <D:href>/home/bernard/</D:href> </C:calendar-home-set> <D:displayname>Bernard Desruisseaux</D:displayname> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>
In this example, the client requests the CALDAV:schedule-inbox-URL and CALDAV:schedule-outbox-URL of the currently authenticated user.¶
TODO: principal-match report¶
When the calendar-access feature is supported in addition to calendar-schedule, this specification extends the CALDAV:calendar-query and CALDAV:calendar-multiget reports to return results for calendar object resources in scheduling Inbox and Outbox collections when the report directly targets such a collection. i.e. the Request-URI for a REPORT MUST be the URI of the scheduling Inbox or Outbox collection or of a child resource within a scheduling Inbox or Outbox collection. A report run on a regular collection that includes a scheduling Inbox or Outbox collection as a child resource at any depth MUST NOT examine or return any calendar object resources from within any scheduling Inbox or Outbox collections.¶
Note that the CALDAV:free-busy-query report is NOT supported on scheduling Inbox or Outbox collections when the calendar-access feature is also present.¶
<!ELEMENT schedule-response (response*)>
<!ELEMENT response (recipient, request-status, calendar-data?, DAV:error?, DAV:responsedescription?)>
<!ELEMENT recipient (DAV:href)>
<!ELEMENT request-status (#PCDATA)>
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 absolutely. Servers and clients MUST use an HTTP connection protected with TLS as defined in [RFC2818] for all scheduling transactions.¶
When handling a POST request on a scheduling Outbox collection:¶
Header field name: Originator¶
Applicable protocol: http¶
Status: standard¶
Author/Change controller: IETF¶
Specification document(s): this specification¶
Related information: none¶
Header field name: Recipient¶
Applicable protocol: http¶
Status: standard¶
Author/Change controller: IETF¶
Specification document(s): this specification¶
Related information: none¶
The authors would like to thank the following individuals for contributing their ideas and support for writing this specification: Mike Douglass, 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.¶
The following tables specify which scheduling privileges can grant the right to a user to have a scheduling message of a specific calendar component type with a specific scheduling method be delivered in the scheduling Inbox of another user.¶
+---------------------------------+ | Scheduling METHOD for VEVENT | +---+---+---+---+---+---+---+-----+ | P | R | R | A | C | R | C | D C | | U | E | E | D | A | E | O | E O | | B | Q | P | D | N | F | U | C U | | L | U | L | | C | R | N | L N | | I | E | Y | | E | E | T | I T | +--------------------------------+| S | S | | | L | S | E | N E | | Scheduling Inbox Privilege || H | T | | | | H | R | E R | +================================++===+===+===+===+===+===+===+=====+ | schedule || * | * | * | * | * | * | * | * | | schedule-deliver || * | * | | * | * | | | * | | schedule-deliver-vevent || * | * | | * | * | | | * | | schedule-deliver-vtodo || | | | | | | | | | schedule-deliver-vjournal || | | | | | | | | | schedule-deliver-vfreebusy || | | | | | | | | | schedule-respond || | | * | | | * | * | | | schedule-respond-vevent || | | * | | | * | * | | | schedule-respond-vtodo || | | | | | | | | +--------------------------------++---+---+---+---+---+---+---+-----+
+---------------------------------+ | Scheduling METHOD for VTODO | +---+---+---+---+---+---+---+-----+ | P | R | R | A | C | R | C | D C | | U | E | E | D | A | E | O | E O | | B | Q | P | D | N | F | U | C U | | L | U | L | | C | R | N | L N | | I | E | Y | | E | E | T | I T | +--------------------------------+| S | S | | | L | S | E | N E | | Scheduling Inbox Privilege || H | T | | | | H | R | E R | +================================++===+===+===+===+===+===+===+=====+ | schedule || * | * | * | * | * | * | * | * | | schedule-deliver || * | * | | * | * | | | * | | schedule-deliver-vevent || | | | | | | | | | schedule-deliver-vtodo || * | * | | * | * | | | * | | schedule-deliver-vjournal || | | | | | | | | | schedule-deliver-vfreebusy || | | | | | | | | | schedule-respond || | | * | | | * | * | | | schedule-respond-vevent || | | | | | | | | | schedule-respond-vtodo || | | * | | | * | * | | +--------------------------------++---+---+---+---+---+---+---+-----+
+-----------------------+ | Scheduling METHOD for | | VJOURNAL | +-------+-------+-------+ | P | A | C | | U | D | A | | B | D | N | | L | | C | | I | | E | +--------------------------------+| S | | L | | Scheduling Inbox Privilege || H | | | +================================++=======+=======+=======+ | schedule || * | * | * | | schedule-deliver || * | * | * | | schedule-deliver-vevent || | | | | schedule-deliver-vtodo || | | | | schedule-deliver-vjournal || * | * | * | | schedule-deliver-vfreebusy || | | | | schedule-respond || | | | | schedule-respond-vevent || | | | | schedule-respond-vtodo || | | | +--------------------------------++-------+-------+-------+
+-----------------------+ | Scheduling METHOD for | | VFREEBUSY | +-------+-------+-------+ | P | R | R | | U | E | E | | B | Q | P | | L | U | L | | I | E | Y | +--------------------------------+| S | S | | | Scheduling Inbox Privilege || H | T | | +================================++=======+=======+=======+ | schedule || * | * | xxxxx | | schedule-deliver || * | | xxxxx | | schedule-deliver-vevent || | | xxxxx | | schedule-deliver-vtodo || | | xxxxx | | schedule-deliver-vjournal || | | xxxxx | | schedule-deliver-vfreebusy || * | | xxxxx | | schedule-respond || | | xxxxx | | schedule-respond-vevent || | | xxxxx | | schedule-respond-vtodo || | | xxxxx | +--------------------------------++-------+-------+-------+
The following tables specify which scheduling privileges can grant the right to a user to submit, with the POST request method, a scheduling message of a specific calendar component type with a specific scheduling method on a scheduling Outbox collection.¶
+---------------------------------+ | Scheduling METHOD for VEVENT | +---+---+---+---+---+---+---+-----+ | P | R | R | A | C | R | C | D C | | U | E | E | D | A | E | O | E O | | B | Q | P | D | N | F | U | C U | | L | U | L | | C | R | N | L N | | I | E | Y | | E | E | T | I T | +--------------------------------+| S | S | | | L | S | E | N E | | Scheduling Outbox Privilege || H | T | | | | H | R | E R | +================================++===+===+===+===+===+===+===+=====+ | schedule || * | * | * | * | * | * | * | * | | schedule-post || * | * | * | * | * | * | * | * | | schedule-post-vevent || * | * | * | * | * | * | * | * | | schedule-post-vtodo || | | | | | | | | | schedule-post-vjournal || | | | | | | | | | schedule-post-vfreebusy || | | | | | | | | +--------------------------------++---+---+---+---+---+---+---+-----+
+---------------------------------+ | Scheduling METHOD for VTODO | +---+---+---+---+---+---+---+-----+ | P | R | R | A | C | R | C | D C | | U | E | E | D | A | E | O | E O | | B | Q | P | D | N | F | U | C U | | L | U | L | | C | R | N | L N | | I | E | Y | | E | E | T | I T | +--------------------------------+| S | S | | | L | S | E | N E | | Scheduling Outbox Privilege || H | T | | | | H | R | E R | +================================++===+===+===+===+===+===+===+=====+ | schedule || * | * | * | * | * | * | * | * | | schedule-post || * | * | * | * | * | * | * | * | | schedule-post-vevent || | | | | | | | | | schedule-post-vtodo || * | * | * | * | * | * | * | * | | schedule-post-vjournal || | | | | | | | | | schedule-post-vfreebusy || | | | | | | | | +--------------------------------++---+---+---+---+---+---+---+-----+
+-----------------------+ | Scheduling METHOD for | | VJOURNAL | +-------+-------+-------+ | P | A | C | | U | D | A | | B | D | N | | L | | C | | I | | E | +--------------------------------+| S | | L | | Scheduling Outbox Privilege || H | | | +================================++=======+=======+=======+ | schedule || * | * | * | | schedule-post || * | * | * | | schedule-post-vevent || | | | | schedule-post-vtodo || | | | | schedule-post-vjournal || * | * | * | | schedule-post-vfreebusy || | | | +--------------------------------++-------+-------+-------+
+-----------------------+ | Scheduling METHOD for | | VFREEBUSY | +-------+-------+-------+ | P | R | R | | U | E | E | | B | Q | P | | L | U | L | | I | E | Y | +--------------------------------+| S | S | | | Scheduling Outbox Privilege || H | T | | +================================++=======+=======+=======+ | schedule || * | * | xxxxx | | schedule-post || * | * | xxxxx | | schedule-post-vevent || | | xxxxx | | schedule-post-vtodo || | | xxxxx | | schedule-post-vjournal || | | xxxxx | | schedule-post-vfreebusy || * | * | xxxxx | +--------------------------------++-------+-------+-------+
This section describes some example scheduling workflows that give a general idea of how scheduling is carried out between CalDAV clients and servers from the perspective of meeting organizers and attendees.¶
Copyright © The IETF Trust (2007).¶
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.¶
This document and the information contained herein are provided on an “AS IS” basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.¶
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.¶
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.¶
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.¶