Internet DRAFT - draft-royer-itip-basic

draft-royer-itip-basic




Network Working Group                                           D. Royer
Internet-Draft                                           IntelliCal, LLC
Expires: October 2, 2005                                   April 3, 2005

    Basic iCalendar Transport-Independent Interoperability Protocol
                        (iTIP) Scheduling Events
                       draft-royer-itip-basic-00

Status of this Memo

   This document is an Internet-Draft and is subject to all provisions
   of section 3 of RFC 3667.  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 become aware will be disclosed, in accordance with
   RFC 3668.

   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 October 2, 2005.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   This is the second release of iTIP.  After having learned from
   RFC-2446 where most of this text comes from.  This document
   represents the common objects needed for basic calendaring.  The
   VTODO, VJOURNAL, VTIMEZONE, recurrence rules (RDATE remains), and
   scheduling and their associated properties have been removed.  These
   removals are expected to appear in new memos at a later time and will
   be independent extensions of this specification.  The new EXTENSIONS


Royer                   Expires October 2, 2005                 [Page 1]
Internet-Draft                  iTIPbis                       April 2005

   property will exist to allow for compatible sets of extensions.

   This document specifies how calendaring systems use iCalendar objects
   to interoperate with other calendar systems.  It does so in a general
   way so as to allow multiple methods of communication between systems.
   Subsequent documents specify interoperable methods of communications
   between systems that use this protocol.

   The document outlines a model for calendar exchange that defines both
   static and dynamic event, to-do, journal and free/busy objects.
   Static objects are used to transmit information from one entity to
   another without the expectation of continuity or referential
   integrity with the original item.  Dynamic objects are a superset of
   static objects and will gracefully degrade to their static
   counterparts for clients that only support static objects.

   This document specifies an Internet protocol based on the iCalendar
   object specification that provides scheduling interoperability
   between different calendar systems.  The Internet protocol is called
   the "Basic iCalendar Transport-Independent Interoperability Protocol
   (iTIP-Basic)".  iTIP-Basic complements the iCalendar object
   specification by adding semantics for group scheduling methods
   commonly available in current calendar systems.  These scheduling
   methods permit two or more calendar systems to perform transactions
   such as publish, schedule, reschedule, respond to scheduling
   requests, negotiation of changes or cancel iCalendar-based calendar
   components.

   iTIP-Basic is defined independent of the particular transport used to
   transmit the scheduling information.  Companion memos to iTIP-Basic
   provide bindings of the interoperability protocol to a number of
   Internet protocols.










Royer                   Expires October 2, 2005                 [Page 2]
Internet-Draft                  iTIPbis                       April 2005

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.1   Formatting Conventions . . . . . . . . . . . . . . . . . .  4
     1.2   Related Documents  . . . . . . . . . . . . . . . . . . . .  5
     1.3   ITIP-BASIC Roles and Transactions  . . . . . . . . . . . .  5
   2.  Interoperability Models  . . . . . . . . . . . . . . . . . . .  8
     2.1   Application Protocol . . . . . . . . . . . . . . . . . . .  8
       2.1.1   Calendar Entry State . . . . . . . . . . . . . . . . .  9
       2.1.2   Delegation . . . . . . . . . . . . . . . . . . . . . .  9
       2.1.3   Acting on Behalf of other Calendar Users . . . . . . .  9
       2.1.4   Component Revisions  . . . . . . . . . . . . . . . . . 10
       2.1.5   Message Sequencing . . . . . . . . . . . . . . . . . . 10
   3.  Application Protocol Elements  . . . . . . . . . . . . . . . . 12
     3.1   Common Component Restriction Tables  . . . . . . . . . . . 12
     3.2   Methods for VEVENT Calendar Components . . . . . . . . . . 13
       3.2.1   PUBLISH  . . . . . . . . . . . . . . . . . . . . . . . 14
       3.2.2   REQUEST  . . . . . . . . . . . . . . . . . . . . . . . 16
       3.2.3   REPLY  . . . . . . . . . . . . . . . . . . . . . . . . 19
       3.2.4   ADD  . . . . . . . . . . . . . . . . . . . . . . . . . 21
       3.2.5   CANCEL . . . . . . . . . . . . . . . . . . . . . . . . 23
       3.2.6   REFRESH  . . . . . . . . . . . . . . . . . . . . . . . 25
       3.2.7   COUNTER  . . . . . . . . . . . . . . . . . . . . . . . 26
       3.2.8   DECLINECOUNTER . . . . . . . . . . . . . . . . . . . . 27
     3.3   Methods For VFREEBUSY Components . . . . . . . . . . . . . 28
       3.3.1   PUBLISH  . . . . . . . . . . . . . . . . . . . . . . . 29
       3.3.2   REQUEST  . . . . . . . . . . . . . . . . . . . . . . . 30
       3.3.3   REPLY  . . . . . . . . . . . . . . . . . . . . . . . . 31
     3.4   Methods For VTODO Components . . . . . . . . . . . . . . . 32
     3.5   Methods For VJOURNAL Components  . . . . . . . . . . . . . 32
     3.6   Status Replies . . . . . . . . . . . . . . . . . . . . . . 32
     3.7   Implementation Considerations  . . . . . . . . . . . . . . 35
       3.7.1   Working With Recurrence Instances  . . . . . . . . . . 35
       3.7.2   Attendee Property Considerations . . . . . . . . . . . 35
       3.7.3   X-Tokens . . . . . . . . . . . . . . . . . . . . . . . 35
   4.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
   5.  Application Protocol Fallbacks . . . . . . . . . . . . . . . . 37
     5.1   Partial Implementation . . . . . . . . . . . . . . . . . . 37
       5.1.1   Event-Related Fallbacks  . . . . . . . . . . . . . . . 37
       5.1.2   Latency Issues . . . . . . . . . . . . . . . . . . . . 37
       5.1.3   Sequence Number  . . . . . . . . . . . . . . . . . . . 37
     5.2   Security Considerations  . . . . . . . . . . . . . . . . . 37
       5.2.1   Security Threats . . . . . . . . . . . . . . . . . . . 38
       5.2.2   Recommendations  . . . . . . . . . . . . . . . . . . . 39
     5.3   Acknowledgments  . . . . . . . . . . . . . . . . . . . . . 40
   6.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 40
       Author's Address . . . . . . . . . . . . . . . . . . . . . . . 41
       Intellectual Property and Copyright Statements . . . . . . . . 42


Royer                   Expires October 2, 2005                 [Page 3]
Internet-Draft                  iTIPbis                       April 2005

1.  Introduction

   This document specifies how calendaring systems use iCalendar objects
   to interoperate with other calendar systems.  In particular, it
   specifies how to schedule events only.  To-dos, or daily journal
   entries have been removed.  It further specifies how to ask for
   available busy time information.  It does so in a general way so as
   to allow multiple methods of communication between systems.
   Subsequent documents specify transport bindings between systems that
   use this protocol.

   This protocol is based on messages sent from an originator to one or
   more recipients.  For certain types of messages, a recipient may
   reply, in order to update their status and may also return
   transaction/request status information.  The protocol supports the
   ability for the message originator to modify or cancel the original
   message.  The protocol also supports the ability for recipients to
   suggest changes to the originator of a message.  The elements of the
   protocol also define the user roles for its transactions.

1.1  Formatting Conventions

   In order to refer to elements of the calendaring and scheduling
   model, core object or interoperability protocol defined in [1] and
   [iTIP-Basic] several formatting conventions have been utilized.

   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 [3].

   Calendaring and scheduling roles are referred to in quoted-strings of
   text with the first character of each word in upper case.  For
   example, "Organizer" refers to a role of a "Calendar User"  (CU)
   within the scheduling protocol defined by [iTIP-Basic].  Calendar
   components defined by [1] are referred to with capitalized,
   quoted-strings of text.  All calendar components start with the
   letter "V".  For example, "VEVENT" refers to the event calendar
   component.  Scheduling methods defined by [iTIP-Basic] are referred
   to with capitalized, quoted-strings of text.  For example, "REQUEST"
   refers to the method for requesting a scheduling calendar component
   be created or modified, "REPLY" refers to the method a recipient of a
   request uses to update their status with the "Organizer" of the
   calendar component.

   Properties defined by [1] are referred to with capitalized,
   quoted-strings of text, followed by the word "property".  For
   example, "ATTENDEE" property refers to the iCalendar property used to
   convey the calendar address of a "Calendar User".  Property


Royer                   Expires October 2, 2005                 [Page 4]
Internet-Draft                  iTIPbis                       April 2005

   parameters defined by this memo are referred to with lower case,
   quoted-strings of text, followed by the word "parameter".  For
   example, "value" parameter refers to the iCalendar property parameter
   used to override the default data type for a property value.
   Enumerated values defined by this memo are referred to with
   capitalized text, either alone or followed by the word "value".

   In tables, the quoted-string text is specified without quotes in
   order to minimize the table length.

1.2  Related Documents

   Implementers will need to be familiar with several other memos that,
   along with this one, describe the Internet calendaring and scheduling
   standards.  This document, [iTIP-Basic], specifies an
   interoperability protocol for scheduling between different
   implementations.  The related documents are:
      [1] - specifies the objects, data types, properties and property
      parameters used in the protocols, along with the methods for
      representing and encoding them;
      [2] specifies an Internet email binding for [iTIP-Basic].

   This memo does not attempt to repeat the specification of concepts or
   definitions from these other memos.  Where possible, references are
   made to the memo that provides for the specification of these
   concepts or definitions.

1.3  ITIP-BASIC Roles and Transactions

   ITIP-BASIC defines methods for exchanging [1] objects for the
   purposes of group calendaring and scheduling between "Calendar Users"
   (CUs).  CUs take on one of two roles in iTIP-Basic.  The CU who
   initiates an exchange takes on the role of "Organizer".  For example,
   the CU who proposes a group meeting is the "Organizer".  The CUs
   asked to participate in the group meeting by the "Organizer" take on
   the role of "Attendee".  Note that "role" is also a descriptive
   parameter to the _ATTENDEE_ property.  Its use is to convey
   descriptive context to an "Attendee" such as "chair",
   "req-participant" or "non-participant" and has nothing to do with the
   calendaring workflow.

   The ITIP-BASIC methods are listed below and their usage and semantics
   are defined in section 3 of this document.




Royer                   Expires October 2, 2005                 [Page 5]
Internet-Draft                  iTIPbis                       April 2005

      +================+==================================================+
      | Method         |  Description                                     |
      |================+==================================================|
      | PUBLISH        | Used to publish a calendar entry to one or more  |
      |                | Calendar Users. There is no interactivity        |
      |                | between the publisher and any other calendar     |
      |                | user. An example might include a baseball team   |
      |                | publishing its schedule to the public.           |
      |                |                                                  |
      | REQUEST        | Used to schedule a calendar entry with other     |
      |                | Calendar Users. Requests are interactive in that |
      |                | they require the receiver to respond using       |
      |                | the Reply methods. Meeting Requests, Busy        |
      |                | Time requests. Requests are also used by the     |
      |                | "Organizer" to                         |
      |                | update the status of a calendar entry.           |
      |                |                                                  |
      | REPLY          | A Reply is used in response to a Request to      |
      |                | convey "Attendee" status to the "Organizer".     |
      |                | Replies are commonly used to respond to meeting  |
      |                | and task requests.                               |
      |                |                                                  |
      | ADD            | The only way to add one or more instances to an  |
      |                | existing VEVENT.                                 |
      |                |                                                  |
      | CANCEL         | Cancel one or more instances of an existing      |
      |                | VEVENT.                                          |
      |                |                                                  |
      | REFRESH        | The Refresh method is used by an "Attendee" to   |
      |                | request the latest version of a calendar entry.  |
      |                |                                                  |
      | COUNTER        | The Counter method is used by an "Attendee" to   |
      |                | ask for a change in the calendar entry.          |
      |                | Examples include the request to change a         |
      |                | proposed Event time.                             |
      |                |                                                  |
      | DECLINE-       | Used by the "Organizer" to decline the proposed  |
      | COUNTER        | counter-proposal.                               |
      +================+==================================================+

   Group scheduling in iTIP-Basic is accomplished using the set of
   "request" and "response" methods described above.  The following
   table shows the methods broken down by who can send them.




Royer                   Expires October 2, 2005                 [Page 6]
Internet-Draft                  iTIPbis                       April 2005

      +================+==================================================+
      | Originator     | Methods                                          |
      |================+==================================================|
      | Organizer      | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER    |
      |                |                                                  |
      | Attendee       | REPLY, REFRESH, COUNTER                          |
      +================+==================================================+

   Note that for some calendar component types, the allowable methods
   are a subset of the above set.





















Royer                   Expires October 2, 2005                 [Page 7]
Internet-Draft                  iTIPbis                       April 2005

2.  Interoperability Models

   There are two distinct protocols relevant to interoperability: an
   "Application Protocol" and a "Transport Protocol".  The Application
   Protocol defines the content of the iCalendar objects sent between
   sender and receiver to accomplish the scheduling transactions listed
   above.  The Transport Protocol defines how the iCalendar objects are
   sent between the sender and receiver.  This document focuses on the
   Application Protocol.  Binding documents such as [2] focus on the
   Transport Protocol.

   The connection between Sender and Receiver in the diagram below
   refers to the Application Protocol.  The iCalendar objects passed
   from the Sender to the Receiver are presented in Section 3,
   Application Protocol Elements.

      +----------+                      +----------+
      |          |        iTIP-Basic   |          |
      |  Sender  |<-------------------->| Receiver |
      |          |                      |          |
      +----------+                      +----------+

   There are several variations of this diagram in which the Sender and
   Receiver take on various roles of a "Calendar User Agent" (CUA) or a
   "Calendar Service" (CS).

   The architecture of iTIP-Basic is depicted in the diagram below.  An
   application written to this specification may work with bindings for
   the store-and-forward transport, the real time transport, or both.
   Also note that iTIP-Basic could be bound to other transports.

      +------------------------------------------+
      |                   iTIP-Basic             |
      +------------------------------------------+
      |Real-time | Store-and-Fwd | Other         |
      |Transport | Transport     | Transports... |
      +------------------------------------------+

2.1  Application Protocol

   In the iTIP-Basic model, a calendar entry is created and managed by
   an "Organizer".  The "Organizer" interacts with other CUs by sending
   one or more of the iTIP-Basic messages listed above.  "Attendees" use
   the "REPLY" method to communicate their status.  "Attendees" do not
   make direct changes to the master calendar entry.  They can, however,
   use the "COUNTER" method to suggest changes to the "Organizer".  In
   any case, the "Organizer" has complete control over the master


Royer                   Expires October 2, 2005                 [Page 8]
Internet-Draft                  iTIPbis                       April 2005

   calendar entry.

2.1.1  Calendar Entry State

   There are two distinct states relevant to calendar entries: the
   overall state of the entry and the state associated with an
   "Attendee" to that entry.

   The state of an entry is defined by the "STATUS" property and is
   controlled by the "Organizer." There is no default value for the
   "STATUS" property.  The "Organizer" sets the "STATUS" property to the
   appropriate value for each calendar entry.

   The state of a particular "Attendee" relative to an entry is defined
   by the "partstat" parameter in the "ATTENDEE" property for each
   "Attendee".  When an "Organizer" issues the initial entry, "Attendee"
   status is unknown.  The "Organizer" specifies this by setting the
   "partstat" parameter to "NEEDS-ACTION".  Each "Attendee" modifies
   their "ATTENDEE" property "partstat" parameter to an appropriate
   value as part of a "REPLY" message sent back to the "Organizer".

2.1.2  Delegation

   Delegation is defined as the process by which an "Attendee" grants
   another CU (or several CUs) the right to attend on their behalf.  The
   "Organizer" is made aware of this change because the delegating
   "Attendee" informs the "Organizer".  These steps are detailed in the
   REQUEST method section.

   This is not supported in iTIP-Basic.

2.1.3  Acting on Behalf of other Calendar Users

   In many organizations one user will act on behalf of another to
   organize and/or respond to meeting requests.  ITIP-BASIC provides two
   mechanisms that support these activities.

   First, the "Organizer" is treated as a special entity, separate from
   "Attendees".  All responses from "Attendees" flow to the "Organizer",
   making it easy to separate a calendar user organizing a meeting from
   calendar users attending the meeting.  Additionally, iCalendar
   provides descriptive roles for each "Attendee".  For instance, a role
   of "chair" may be ascribed to one or more "Attendees".  The "chair"
   and the "Organizer" may or may not be the same calendar user.  This
   maps well to scenarios where an assistant may manage meeting
   logistics for another individual who chairs a meeting.

   Second, a "sent-by" parameter may be specified in either the


Royer                   Expires October 2, 2005                 [Page 9]
Internet-Draft                  iTIPbis                       April 2005

   "Organizer" or "Attendee" properties.  When specified, the "sent-by"
   parameter indicates that the responding CU acted on behalf of the
   specified "Attendee" or "Organizer".

2.1.4  Component Revisions

   The "SEQUENCE" property is used by the "Organizer" to indicate
   revisions to the calendar component.  The rules for incrementing the
   "SEQUENCE" number are defined in [1].]

   In some circumstances the "Organizer" may not have received responses
   to the final revision sent out.  In this situation, the "Organizer"
   may wish to send an update "REQUEST", and set "RSVP=TRUE" for all
   "Attendees", so that current responses can be collected.

   The value of the "SEQUENCE" property contained in a response from an
   "Attendee" may not always match the "Organizer's" revision.
   Implementations may choose to have the CUA indicate to the CU that
   the response is to an entry that has been revised and allow the CU to
   decide whether or not to accept the response.

   The "Organizer" is not required to send objects to any "Attendee"
   unless the change effects the "Attendee".  It is possible for an
   "Attendee" to get invited with an object with a sequence value larger
   then zero.  And it is possible for an "Attendee" to get an update
   that has a "SEQUENCE" property value that is more than one larger
   than what the "Attendee" currently has.  As an example the
   "Organizer" may determine that it will not send each "Attendee" an
   update each time an new "Attendee" is added.

2.1.5  Message Sequencing

   CUAs that handle the [iTIP-Basic] application protocol must often
   correlate a component in a calendar store with a component received
   in the [iTIP-Basic] message.  For example, an event may be updated
   with a later revision of the same event.  To accomplish this, a CUA
   must correlate the version of the event already in its calendar store
   with the version sent in the [iTIP-Basic] message.  In addition to
   this correlation, there are several factors that can cause
   [iTIP-Basic] messages to arrive in an unexpected order.  That is, an
   "Organizer" could receive a reply to an earlier revision of a
   component AFTER receiving a reply to a later revision.

   To maximize interoperability and to handle messages that arrive in an
   unexpected order, use the following rules:
      1.  The primary key for referencing a particular iCalendar
      component is the "UID" property value.


Royer                   Expires October 2, 2005                [Page 10]
Internet-Draft                  iTIPbis                       April 2005

      2.  The secondary key for referencing a component is the
      "SEQUENCE" property value.  For components where the "UID" is the
      same, the component with the highest numeric value for the
      "SEQUENCE" property obsoletes all other revisions of the component
      with lower values.  For an "Attendee" that means that toss the
      current object and replace it with the new object, keeping any
      local implementation specific information when possible.
      3.  "Attendees" send "REPLY" messages to the "Organizer".  For
      replies where the "UID" property value is the same, the value of
      the "SEQUENCE" property indicates the revision of the component to
      which the "Attendee" is replying.  The reply with the highest
      numeric value for the "SEQUENCE" property obsoletes all other
      replies with lower values.
      4.  In situations where the "UID" and "SEQUENCE" properties match,
      the "DTSTAMP" property is used as the tie-breaker.  The component
      with the latest "DTSTAMP" overrides all others.  Similarly, for
      "Attendee" responses where the "UID" property values match and the
      "SEQUENCE" property values match, the response with the latest
      "DTSTAMP" overrides all others.

   Hence, CUAs must persist the following component properties: "UID",
   "SEQUENCE", and "DTSTAMP".  Furthermore, for each "ATTENDEE" property
   of a component CUAs must persist the "SEQUENCE" and "DTSTAMP"
   property values associated with the "Attendee's" response.














Royer                   Expires October 2, 2005                [Page 11]
Internet-Draft                  iTIPbis                       April 2005

3.  Application Protocol Elements

   ITIP-BASIC messages are "text/calendar" MIME entities that contain
   calendaring and scheduling information.  The particular type of [1]
   message is referred to as the "method type".  Each method type is
   identified by a "METHOD" property specified as part of the
   "text/calendar" content type.  The table below shows various
   combinations of calendar components and the method types that this
   memo supports.

      +=================================================+
      |         | VEVENT | VTODO | VJOURNAL | VFREEBUSY |
      |=================================================|
      |Publish  |  Yes   |  No   |  No      |   Yes     |
      |Request  |  Yes   |  No   |  No      |   Yes     |
      |Refresh  |  Yes   |  No   |  No      |   No      |
      |Cancel   |  Yes   |  No   |  No      |   No      |
      |Add      |  Yes   |  No   |  No      |   No      |
      |Reply    |  Yes   |  No   |  No      |   Yes     |
      |Counter  |  Yes   |  No   |  No      |   No      |
      |Decline- |        |       |          |           |
      |Counter  |  Yes   |  No   |  No      |   No      |
      +=================================================+

   Each method type is defined in terms of its associated components and
   properties.  Some components and properties are required, some are
   optional and others are excluded.  The restrictions are expressed in
   this document using a simple "restriction table".  The first column
   indicates the name of a component or property.  Properties of the
   iCalendar object are not indented.  Properties of a component are
   indented.  The second column contains "MUST" if the component or
   property must be present, "MAY" if the component or property is
   optional, and "NOT" if the component or property must not be present.
   Entries in the second column sometimes contain comments for further
   clarification.

3.1  Common Component Restriction Tables

   The restriction table below applies to properties of the iCalendar
   object.  That is, the properties at the outermost scope.  The
   presence column uses the following values to assert whether a
   property is required, is optional and the number of times it may
   appear in the iCalendar object.




Royer                   Expires October 2, 2005                [Page 12]
Internet-Draft                  iTIPbis                       April 2005

      Presence Value       Description
      --------------------------------------------------------------
      1                 One instance MUST be present
      1+                At least one instance MUST be present
      0                 Instances of this property Must NOT be present
      0+                Multiple instances MAY be present
      0 or 1            Up to 1 instance of this property MAY be present
      ---------------------------------------------------------------

   The tables also call out "X-PROPERTY" and  "X-COMPONENT" to show
   where vendor-specific properties and components can appear.  The
   tables do not lay out the restrictions of property parameters.  Those
   restrictions are defined in [1].

      Component/Property  Presence
      ------------------- ----------------------------------------------
      CALSCALE            0 or 1 If '0', the object is GREGORIAN.
      PRODID              1
      VERSION             1       Value MUST be "2.0"
      X-PROPERTY          0+

   DateTime values MUST NOT refer to a "VTIMEZONE" component.

      Component/Property  Presence
      ------------------- ----------------------------------------------
      VTIMEZONE           0      MUST NOT be present as iCal-Basic does
                                 not support time zones.

   The property restrictions in the table below apply to any "VALARM"
   component in an ITIP-BASIC message.

      Component/Property  Presence
      ------------------- ----------------------------------------------
      VALARM              0+
          ACTION          1
          ATTACH          0+
          DESCRIPTION     0 or 1
          DURATION        0 or 1  if present REPEAT MUST be present
          REPEAT          0 or 1  if present DURATION MUST be present
          SUMMARY         0 or 1
          TRIGGER         1
          X-PROPERTY      0+

3.2  Methods for VEVENT Calendar Components

   This section defines the property set restrictions for the method
   types that are applicable to the "VEVENT" calendar component.  Each


Royer                   Expires October 2, 2005                [Page 13]
Internet-Draft                  iTIPbis                       April 2005

   method is defined using a table that clarifies the property
   constraints that define the particular method.

   The following summarizes the methods that are defined for the
   "VEVENT" calendar component.

      +================+==================================================+
      | Method         |  Description                                     |
      |================+==================================================|
      | PUBLISH        | Post notification of an event. Used primarily as |
      |                | a method of advertising the existence of an      |
      |                | event.                                           |
      |                |                                                  |
      | REQUEST        | Make a request for an event. This is an explicit |
      |                | invitation to one or more "Attendees". Event     |
      |                | Requests are also used to update or change an    |
      |                | existing event.                                  |
      |                |                                                  |
      | REPLY          | Reply to an event request. Clients may set their |
      |                | status ("partstat") to ACCEPTED, DECLINED,       |
      |                | TENTATIVE.                                       |
      |                |                                                  |
      | ADD            | Add one or more instances to an existing event.  |
      |                |                                                  |
      | CANCEL         | Cancel one or more instances of an existing      |
      |                | event.                                           |
      |                |                                                  |
      | REFRESH        | A request is sent to an "Organizer" by an        |
      |                | "Attendee" asking for the latest version of an   |
      |                | event to be resent to the requester.             |
      |                |                                                  |
      | COUNTER        | Counter a REQUEST with an alternative proposal,  |
      |                | Sent by an "Attendee" to the "Organizer".        |
      |                |                                                  |
      | DECLINECOUNTER | Decline a counter proposal. Sent to an           |
      |                | "Attendee" by the "Organizer".                   |
      +================+==================================================+

3.2.1  PUBLISH

   The "PUBLISH" method in a "VEVENT" calendar component is an
   unsolicited posting of an iCalendar object.  Any CU may add published
   components to their calendar.  The "Organizer" MUST be present in a
   published iCalendar component.  "Attendees" MUST NOT be present.  Its
   expected usage is for encapsulating an arbitrary event as an
   iCalendar object.  The "Organizer" may subsequently update (with
   another "PUBLISH" method), add instances to (with an "ADD" method),


Royer                   Expires October 2, 2005                [Page 14]
Internet-Draft                  iTIPbis                       April 2005

   or cancel (with a "CANCEL" method) a previously published "VEVENT"
   calendar component.

   This method type is an iCalendar object that conforms to the
   following property constraints:

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1       MUST equal "PUBLISH"
   VEVENT              1+
        DTSTAMP        1
        DTSTART        1
        ORGANIZER      1
        SUMMARY        1       Can be null.
        UID            1
        RECURRENCE-ID  0       iCal-Basic does not support this.
        SEQUENCE       1       MUST be present.
        ATTACH         0+
        CATEGORIES     0 or 1  This property may contain a list of
                               values
        CLASS          0 or 1
        COMMENT        0 or 1
        CONTACT        0+
        CREATED        0 or 1
        DESCRIPTION    0 or 1  Can be empty.
        DTEND          0 or 1  if present DURATION MUST NOT be present
        DURATION       0 or 1  if present DTEND MUST NOT be present
        EXDATE         0       Not needed in iCal-Basic
        EXRULE         0       Not supported in iCal-Basic
        GEO            0       Deprecated in iCal-Basic
        LAST-MODIFIED  0 or 1
        LOCATION       0 or 1
        PRIORITY       0 or 1
        RDATE          0+
        RELATED-TO     0+
        RESOURCES      0 or 1 This property MAY contain a list of values
        RRULE          0      Not supported in iCal-Basic
        STATUS         0 or 1 MAY be one of TENTATIVE/CONFIRMED/CANCELLED
        TRANSP         0 or 1
        URL            0 or 1
        X-PROPERTY     0+

        ATTENDEE       0
        REQUEST-STATUS 0

   VALARM              0+
   VFREEBUSY           0
   VJOURNAL            0


Royer                   Expires October 2, 2005                [Page 15]
Internet-Draft                  iTIPbis                       April 2005

   VTODO               0
   VTIMEZONE           0       Not supported in iCal-Basic
   X-COMPONENT         0+

3.2.2  REQUEST

   The "REQUEST" method in a "VEVENT" component provides the following
   scheduling functions:
      .  Invite "Attendees" to an event.
      .  Reschedule an existing event (increment SEQUENCE).
      .  Response to a REFRESH request (do not increment SEQUENCE, just
      re-send).
      .  Update the details of an existing event, without rescheduling
      it.  (increment SEQUENCE)
      .  Update the status of "Attendees" of an existing event, without
      rescheduling it.  (increment SEQUENCE)
      .  Forward a "VEVENT" to another uninvited CU.  (Do not increment
      SEQUENCE).
      .  For an existing "VEVENT" calendar component, changing the role
      of "Organizer" to another CU.  (Increment SEQUENCE)

   The "Organizer" originates the "REQUEST".  The recipients of the
   "REQUEST" method are the CUs invited to the event, the "Attendees".
   "Attendees" use the "REPLY" method to convey attendance status to the
   "Organizer".

   The "UID" and "SEQUENCE" properties are used to distinguish the
   various uses of the "REQUEST" method.  If the "UID" property value in
   the "REQUEST" is not found on the recipient's calendar, then the
   "REQUEST" is for a new "VEVENT" calendar component.  If the "UID"
   property value is found on the recipient's calendar, then the
   "REQUEST" is for a rescheduling, an update, or a reconfirm of the
   "VEVENT" calendar component.

   For the "REQUEST" method, multiple "VEVENT" components in a single
   iCalendar object are only permitted when for components with the same
   "UID" property.  That is, a series of recurring events may have
   instance-specific information.  In this case, multiple "VEVENT"
   components are needed to express the entire series.  These would have
   been received as method "ADD" components.

   This method type is an iCalendar object that conforms to the
   following property constraints:

   Component/Property  Presence
   -----------------------------------------------------------------
   METHOD              1       MUST be "REQUEST"


Royer                   Expires October 2, 2005                [Page 16]
Internet-Draft                  iTIPbis                       April 2005

   VEVENT              1+
       ATTENDEE        1+
       DTSTAMP         1
       DTSTART         1
       ORGANIZER       1
       SEQUENCE        1       MUST be present.
       SUMMARY         1       Can be empty.
       UID             1

       ATTACH          0+
       CATEGORIES      0 or 1  This property may contain a list of values.
       CLASS           0 or 1
       COMMENT         0 or 1
       CONTACT         0+
       CREATED         0 or 1
       DESCRIPTION     0 or 1  Can be '1' and empty.
       DTEND           0 or 1  if present DURATION MUST NOT be present.
       DURATION        0 or 1  if present DTEND MUST NOT be present.
       EXDATE          0       Not needed in iCal-Basic.
       EXRULE          0       Not in iCal-Basic.
       GEO             0       Deprecated in iCal-Basic.
       LAST-MODIFIED   0 or 1
       LOCATION        0 or 1
       PRIORITY        0 or 1
       RDATE           0+
       RECURRENCE-ID   0       Not in iCal-Basic.
       RELATED-TO      0+
       REQUEST-STATUS  0+
       RESOURCES       0 or 1  This property MAY contain a list of values
       RRULE           0       Not in iCal-Basic.
       STATUS          0 or 1  MAY be one of TENTATIVE/CONFIRMED
       TRANSP          0 or 1
       URL             0 or 1
       X-PROPERTY      0+

   VALARM              0+
   VTIMEZONE           0       Not in iCal-Basic.
   X-COMPONENT         0+

   VFREEBUSY           0
   VJOURNAL            0
   VTODO               0

3.2.2.1  Rescheduling an Event

   The "REQUEST" method may be used to reschedule an event.  A
   rescheduled event involves a change to the existing event in terms of


Royer                   Expires October 2, 2005                [Page 17]
Internet-Draft                  iTIPbis                       April 2005

   its time or recurrence intervals and possibly the location or
   description.  If the recipient CUA of a "REQUEST" method finds that
   the "UID" property value already exists on the calendar, but that the
   "SEQUENCE" (or "DTSTAMP") property value in the "REQUEST" method is
   greater than the value for the existing event, then the "REQUEST"
   method describes a rescheduling of the event.  The old contents are
   tossed an replaced by the new contents.  The "Attendee" only needs to
   reply if their "RSVP" parameter is set to true by the "Organizer".

   The "Organizer" sends a method "REQUEST" component with additional
   method "ADD" components only when needed for each appointment
   rescheduled.  All with the same "UID" property value.  As the "ADD"
   method can be used independently of the "REQUEST" method, each
   additional "ADD" method sent in the replacement set MUST have the
   "SEQUENCE" property value incremented.  That is if the "REQUEST"
   component has a "SEQUENCE" property value of '8', then the first
   "ADD" method after that would have a "SEQUENCE" property value of
   '9', the second "ADD" method would have a "SEQUENCE" property value
   of '10', and so on until all of the instances that can not be
   described by the proceeding components is sent.  This the rules
   consistent with receiving independent "ADD" method components at a
   later time.

3.2.2.2  Updating or Reconfirmation of an Event

   The "REQUEST" method may be used to update or reconfirm an event.  An
   update to an existing event does not involve changes to the time or
   recurrence intervals, and might not involve a change to the location
   or description for the event.  If the recipient CUA of a "REQUEST"
   method finds that the "UID" property value already exists on the
   calendar and that the "SEQUENCE" property value in the "REQUEST" is
   the same as the value for the existing event, then the "REQUEST"
   method describes an update of the event details, but no rescheduling
   of the event.  And only if the newer object has a newer "DTSTAMP"
   property value.  Older objects are to be tossed.

   The update "REQUEST" method is the appropriate response to a
   "REFRESH" method sent from an "Attendee" to the "Organizer" of an
   event.

   The "Organizer" of an event may also send unsolicited "REQUEST"
   methods.  The unsolicited "REQUEST" methods may be used to update the
   details of the event without rescheduling it, to update the
   "partstat" parameter of "Attendees", or to reconfirm the event.

3.2.2.3  Delegating an Event to another CU

   Not supported in iTIP-Basic.


Royer                   Expires October 2, 2005                [Page 18]
Internet-Draft                  iTIPbis                       April 2005

3.2.2.4  Changing the Organizer

   The situation may arise where the "Organizer" of a VEVENT is no
   longer able to perform the "Organizer" role and abdicates without
   passing on the "Organizer" role to someone else.  When this occurs
   the "Attendees" of the VEVENT may use out-of-band mechanisms to
   communicate the situation and agree upon a new "Organizer".  The new
   "Organizer" should then send out a new "REQUEST" with a modified
   version of the VEVENT in which the "SEQUENCE" number has been
   incremented and value of the "ORGANIZER" property has been changed to
   the calendar address of the new "Organizer".

3.2.2.5  Sending on Behalf of the Organizer

   Not supported in iTIP-Basic.

3.2.2.6  Forwarding to An Uninvited CU

   An "Attendee" invited to an event may invite another uninvited CU to
   the event.  The invited "Attendee" accomplishes this by forwarding
   the original "REQUEST" method to the uninvited CU.  The "Organizer"
   decides whether or not the uninvited CU is added to the attendee

   list.  If the "Organizer" decides not to add the uninvited CU no
   further action is required, however the "Organizer" MUST send the
   uninvited CU a "CANCEL" message.  If the "Organizer" decides to add
   an uninvited CU, a new "ATTENDEE" property is added for the uninvited
   CU with its property parameters set as the "Organizer" deems
   appropriate.  When forwarding a "REQUEST" to another CU, the
   forwarding "Attendee" MUST NOT make changes to the VEVENT property
   set.

3.2.2.7  Updating Attendee Status

   The "Organizer" of an event may also request updated status from one
   or more "Attendees.  The "Organizer" sends a "REQUEST" method to the
   "Attendee" and sets the "ATTENDEE;RSVP=TRUE" property parameter.  The
   "SEQUENCE" property for the event is not changed from its previous
   value.  A recipient will determine that the only change in the
   "REQUEST" is that their "RSVP" property parameter indicates a request
   for updated status.  The recipient MUST respond with a "REPLY" method
   indicating their current status with respect to the "REQUEST".

3.2.3  REPLY

   The "REPLY" method in a "VEVENT" calendar component is used to
   respond (e.g., accept or decline) to a "REQUEST".


Royer                   Expires October 2, 2005                [Page 19]
Internet-Draft                  iTIPbis                       April 2005

   The "REPLY" method may also be used to respond to an unsuccessful
   "REQUEST" method.  Depending on the value of the "REQUEST-STATUS"
   property no scheduling action may have been performed.

   The "Organizer" of an event may receive the "REPLY" method from a CU
   not in the original "REQUEST".  In addition, the "REPLY" method may
   be received from an unknown CU (They were forwarded a copy).  This
   unknown "Attendee" may be accepted, or the "Organizer" may cancel the
   event for the uninvited "Attendee" by sending a "CANCEL" method to
   the uninvited "Attendee".

   An "Attendee" can include a message to the "Organizer" using the
   "COMMENT" property.  For example, if the user indicates tentative
   acceptance and wants to let the "Organizer" know why, the reason can
   be expressed in the "COMMENT" property value.

   The optional properties listed in the table below (those listed as
   "0+" or "0 or 1") MUST NOT be changed from those of the original
   request.  If property changes are desired the COUNTER message must be
   used.

   This method type is an iCalendar object that conforms to the
   following property constraints:

   The "Attendee" only sends the specific information needed.  If the
   reply is for all instances in the "VEVENT" component, then the
   "DTSTART", "DTEND", "RDATE", and "DURATION" properties MUST NOT be
   included.

   If the reply is for a subset of the instances, then the "DTSTART",
   "DTEND", "RDATE", and "DURATION", proprties are used in exactly the
   same way as a request.  Multiple "REPLY" components MUST BE sent to
   conver all instances in such a case.  If the "Attendee" can attend
   Monday, then two components are sent;, one saying YES to Monday, the
   other NO to the other dates.  The "Attendee" when replying must reply
   to all instances in the "VEVENT" component.

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1       MUST be "REPLY"
   VEVENT              1+
       ATTENDEE        1       MUST be the address of the Attendee
                               replying.
       DTSTAMP         1
       ORGANIZER       1
       RECURRENCE-ID   0       Not supported in iCal-Basic.
       UID             1       MUST be the UID of the original REQUEST


Royer                   Expires October 2, 2005                [Page 20]
Internet-Draft                  iTIPbis                       April 2005

       SEQUENCE        1       MUST be the sequence number of the original
                               REQUEST.
       ATTACH          0
       CATEGORIES      0
       CLASS           0
       COMMENT         0 or 1
       CONTACT         0+
       CREATED         0
       DESCRIPTION     0
       DTEND           0 or 1  If present DURATION MUST NOT be present.
                               Only if DTSTART is supplied.
       DTSTART         0 or 1  Only if this object is a reply for less
                               than all instances.
       DURATION        0 or 1  If present DTEND MUST NOT be present. Only
                               if DTSTART is supplied.
       EXDATE          0       Not in iCal-Basic
       EXRULE          0       Not in iCal-Basic
       GEO             0       Deprecated
       LAST-MODIFIED   0 or 1
       LOCATION        0
       PRIORITY        0
       RDATE           0+
       RELATED-TO      0

       RESOURCES       0
       REQUEST-STATUS  0+
       RRULE           0       Not in iCal-Basic
       STATUS          0 or 1
       SUMMARY         0
       TRANSP          0
       URL             0
       X-PROPERTY      0+

   VTIMEZONE           0       Not in iCal-Basic
   X-COMPONENT         0+

   VALARM              0
   VFREEBUSY           0
   VJOURNAL            0
   VTODO               0

3.2.4  ADD

   The "ADD" method in a "VEVENT" calendar component is used to add one
   or more instances to an existing "VEVENT".  Unlike the "REQUEST"
   method, when using issuing an "ADD" method, the "Organizer" does not
   send the full "VEVENT" description; only the new instance(s).  The


Royer                   Expires October 2, 2005                [Page 21]
Internet-Draft                  iTIPbis                       April 2005

   "ADD" method is especially useful if there are instance-specific
   properties to be preserved in a recurring "VEVENT".  For instance, an
   "Organizer" may have originally scheduled a weekly Thursday meeting.
   At some point, several instances changed.  Location or start time may
   have changed, or some instances may have unique "DESCRIPTION"
   properties.  The "ADD" method allows the "Organizer" to add new
   instances to an existing event using a single ITIP-BASIC message when
   it is not possible to define the recurring pattern in one "VEVENT"
   component.

   The "UID" must be that of the existing event.  If the "UID" property
   value in the "ADD" is not found on the recipient's calendar, then the
   recipient MUST send a "REFRESH" to the "Organizer" in order to be
   updated with the latest version of the "VEVENT".  If an "Attendee"
   implementation does not support the "ADD" method it should respond
   with a "REQUEST-STATUS" value of 3.14 and ask for a "REFRESH".

   This method type is an iCalendar object that conforms to the
   following property constraints:

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1      MUST be "ADD"
   VEVENT              1
       DTSTAMP         1
       DTSTART         1
       ORGANIZER       1
       SEQUENCE        1      MUST be greater than 0.
       SUMMARY         1      Can be empty.
       UID             1      MUST match that of the original event.

       ATTACH          0+
       ATTENDEE        0+
       CATEGORIES      0 or 1 This property MAY contain a list of values.
       CLASS           0 or 1
       COMMENT         0 or 1
       CONTACT         0+
       CREATED         0 or 1
       DESCRIPTION     0 or 1  Can be empty.
       DTEND           0 or 1  if present DURATION MUST NOT be present.
       DURATION        0 or 1  if present DTEND MUST NOT be present.
       EXDATE          0       Not in iCal-Basic.
       EXRULE          0       Not in iCal-Basic.
       GEO             0       Deprecated.
       LAST-MODIFIED   0 or 1
       LOCATION        0 or 1
       PRIORITY        0 or 1
       RDATE           0+


Royer                   Expires October 2, 2005                [Page 22]
Internet-Draft                  iTIPbis                       April 2005

       RELATED-TO      0+
       RESOURCES       0 or 1  This property MAY contain a list of values
       RRULE           0       Not in iCal-Basic.
       STATUS          0 or 1  MAY be one of TENTATIVE/CONFIRMED
       TRANSP          0 or 1
       URL             0 or 1
       X-PROPERTY      0+

       RECURRENCE-ID   0
       REQUEST-STATUS  0

   VALARM              0+
   VTIMEZONE           0       Not in iCal-Basic
   X-COMPONENT         0+

   VFREEBUSY           0
   VTODO               0
   VJOURNAL            0

3.2.5  CANCEL

   The "CANCEL" method in a "VEVENT" calendar component is used to send
   a cancellation notice of an existing event request to the
   "Attendees".  The message is sent by the "Organizer" of the event.
   For a recurring event, either the whole event or instances of an
   event may be cancelled.

   To cancel the complete appointment and all instances; the "UID"
   property value for the event MUST be specified and the "DTSTART",
   "DTEND", "DURATION", and "RDATE" properties must NOT be included.
   The "SEQUENCE" property is incremented so the "Attendee"'s can tell
   it is the newest revision of the appointment.

   To cancel one or more instances of a "VEVENT", include the "DTSTART",
   "DTEND", "DURATION", and "RDATE" properties exactly as would be sent
   in a request.  The "UID" property must match what the "Attendee" has.
   If an "Attendee" gets a "CANCEL" method for a "UID" where the
   "Attendee" does not have the "UID", then the "Attendee" needs to do a
   "REFRESH" to get the latest copy of the component.

   In all cases, the "SEQUENCE" property value in the "CANCEL" component
   MUST BE larger than the "Attendee" has, or the "CANCEL" object is to
   be ignored and the "Attendee" MUST do a "REFRESH" to get the latest
   details of the appointment.

   This method type is an iCalendar object that conforms to the
   following property constraints:


Royer                   Expires October 2, 2005                [Page 23]
Internet-Draft                  iTIPbis                       April 2005

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1      MUST be "CANCEL"

   VEVENT              1+
       ATTENDEE        0+     MUST include all "Attendees" being removed
                              the event. MUST be sent to all "Attendees" if
                              the entire event is cancelled.
       DTSTAMP         1
       ORGANIZER       1
       SEQUENCE        1
       UID             1      MUST be the UID of the original REQUEST

       COMMENT         0 or 1
       ATTACH          0      Not needed in a CANCEL.
       CATEGORIES      0      Not needed in a CANCEL.

       CLASS           0      Not needed in a CANCEL.
       CONTACT         0+
       CREATED         0 or 1
       DESCRIPTION     0      Not needed in a CANCEL.
       DTEND           0 or 1 If present DURATION MUST NOT be present
                              Only supplied if DTSTART is supplied.

       DTSTART         0 or 1 Only supplied if less than all of
                              the instances are being cancled.
       DURATION        0 or 1 if present DTEND MUST NOT be present
                              Only supplied if DTSTART is supplied.
       EXDATE          0      Not in iCal-Basic.
       EXRULE          0      Not in iCal-Basic.
       GEO             0      Deprecated.
       LAST-MODIFIED   0 or 1
       LOCATION        0      Not needed in CANCEL.
       PRIORITY        0      Not needed in CANCEL.
       RDATE           0+     Only if less than all instances are
                              being cancled and only when DTSTART
                              is supplied..
       RECURRENCE-ID   0      Not in iCal-Basic
       RELATED-TO      0      Not needed in CANCEL.
       RESOURCES       0      Not needed in CANCEL.
       RRULE           0      Not in iCal-Basic
       STATUS          0      Not needed in CANCEL.
       SUMMARY         0      Not needed in CANCEL.
       TRANSP          0      Not needed in CANCEL.
       URL             0      Not needed in CANCEL.
       X-PROPERTY      0+
       REQUEST-STATUS  0


Royer                   Expires October 2, 2005                [Page 24]
Internet-Draft                  iTIPbis                       April 2005

   VTIMEZONE           0      Not in iCal-Basic.
   X-COMPONENT         0+
   VTODO               0
   VJOURNAL            0
   VFREEBUSY           0
   VALARM              0

3.2.6  REFRESH

   The "REFRESH" method in a "VEVENT" calendar component is used by
   "Attendees" of an existing event to request an updated description
   from the event "Organizer".  The "REFRESH" method must specify the
   "UID" property of the event to update.

   The "Organizer" replies with the latest copy of the appointment.  A
   "REQUEST" is sent with any additional "ADD" methods if needed.

   This method type is an iCalendar object that conforms to the
   following property constraints:

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1      MUST be "REFRESH".

   VEVENT              1
       ATTENDEE        1      MUST be the address of requestor.
       DTSTAMP         1
       ORGANIZER       1
       UID             1      MUST be the UID associated with original
                              REQUEST.
       COMMENT         0 or 1
       RECURRENCE-ID   0      Not in iCal-Basic.
       X-PROPERTY      0+

       ATTACH          0
       CATEGORIES      0
       CLASS           0
       CONTACT         0
       CREATED         0
       DESCRIPTION     0
       DTEND           0
       DTSTART         0
       DURATION        0
       EXDATE          0
       EXRULE          0
       GEO             0
       LAST-MODIFIED   0


Royer                   Expires October 2, 2005                [Page 25]
Internet-Draft                  iTIPbis                       April 2005

       LOCATION        0
       PRIORITY        0
       RDATE           0
       RELATED-TO      0
       REQUEST-STATUS  0
       RESOURCES       0
       RRULE           0
       SEQUENCE        0
       STATUS          0
       SUMMARY         0
       TRANSP          0
       URL             0

   X-COMPONENT         0+

   VTODO               0

   VJOURNAL            0
   VFREEBUSY           0
   VTIMEZONE           0
   VALARM              0

3.2.7  COUNTER

   The "COUNTER" method for a "VEVENT" calendar component is used by an
   "Attendee" of an existing event to submit to the "Organizer" a
   counter proposal to the event description.  The "Attendee" sends this
   message to the "Organizer" of the event.

   The counter proposal is an iCalendar object consisting of a VEVENT
   calendar component describing the complete description of the
   alternate event.

   The "Organizer" rejects the counter proposal by sending the
   "Attendee" a VEVENT "DECLINECOUNTER" method.  The "Organizer" accepts
   the counter proposal by rescheduling the event as described in
   section 3.2.2.1 Rescheduling an Event.

   This method type is an iCalendar object that conforms to the
   following property constraints.  The compoent is constructed just
   like a "REQUEST" component with the entire proposal for the proposed
   appointment, except the following:




Royer                   Expires October 2, 2005                [Page 26]
Internet-Draft                  iTIPbis                       April 2005

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1      MUST be "COUNTER"

   VEVENT              1
       ORGANIZER       1       MUST be the "Organizer" of the original
                               event.
       SEQUENCE        1       MUST be present and must match the
                               appointment being countered.
       UID             1       MUST be the UID associated with the REQUEST
                               being countered.
       ATTENDEE        1       MUST BE the "Attendee" making the proposal.

   All other properties and components are identical to the "VEVENT" "REQUEST".

3.2.8  DECLINECOUNTER

   The "DECLINECOUNTER" method in a "VEVENT" calendar component is used
   by the "Organizer" of an event to reject a counter proposal submitted
   by an "Attendee".  The "Organizer" must send the "DECLINECOUNTER"
   message to the "Attendee" that sent the "COUNTER" method to the
   "Organizer".

   This method type is an iCalendar object that conforms to the
   following property constraints:

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1      MUST be "DECLINECOUNTER"

   VEVENT              1
       DTSTAMP         1
       ORGANIZER       1
       UID             1       MUST, same UID specified in original
                               REQUEST and subsequent COUNTER
       COMMENT         0 or 1
       RECURRENCE-ID   0       Not in iCal-Basic
       REQUEST-STATUS  0+
       SEQUENCE        1       MUST match the value in the "Attendee"s
                               COUNTER component.
       X-PROPERTY      0+
       ATTACH          0
       ATTENDEE        0
       CATEGORIES      0
       CLASS           0
       CONTACT         0
       CREATED         0


Royer                   Expires October 2, 2005                [Page 27]
Internet-Draft                  iTIPbis                       April 2005

       DESCRIPTION     0
       DTEND           0
       DTSTART         0
       DURATION        0
       EXDATE          0
       EXRULE          0
       GEO             0
       LAST-MODIFIED   0
       LOCATION        0
       PRIORITY        0
       RDATE           0
       RELATED-TO      0
       RESOURCES       0
       RRULE           0
       STATUS          0
       SUMMARY         0
       TRANSP          0
       URL             0

   X-COMPONENT         0+
   VTODO               0
   VJOURNAL            0
   VFREEBUSY           0
   VTIMEZONE           0
   VALARM              0

3.3  Methods For VFREEBUSY Components

   This section defines the property set for the methods that are
   applicable to the "VFREEBUSY" calendar component.  Each of the
   methods is defined using a restriction table.

   This document only addresses the transfer of busy time information.
   Applications desiring free time information MUST infer this from
   available busy time information.

   The busy time information within the iCalendar object MAY be grouped
   into more than one "VFREEBUSY" calendar component.  This capability
   allows busy time periods to be grouped according to some common
   periodicity, such as a calendar week, month, or year.  In this case,
   each "VFREEBUSY" calendar component MUST include the "ATTENDEE",
   "DTSTART" and "DTEND" properties in order to specify the source of
   the busy time information and the date and time interval over which
   the busy time information covers.

   The "FREEBUSY" property value MAY include a list of values, separated
   by the COMMA character ([4] decimal 44).  Alternately, multiple busy


Royer                   Expires October 2, 2005                [Page 28]
Internet-Draft                  iTIPbis                       April 2005

   time periods MAY be specified with multiple instances of the
   "FREEBUSY" property.  Both forms MUST be supported by implementations
   conforming to this document.  Duplicate busy time periods SHOULD NOT
   be specified in an iCalendar object.  However, two different busy
   time periods MAY overlap.

   "FREEBUSY" properties should be sorted such that their values are in
   ascending order, based on the start time, and then the end time, with
   the earliest periods first.  For example, today's busy time
   information should appear after yesterday's busy time information.
   And the busy time for this half-hour should appear after the busy
   time for earlier today.

   Since events may span a day boundary, free busy time period may also
   span a day boundary.  Individual "A" requests busy time from
   individuals "B", "C" and "D".  Individual "B" and "C" replies with
   busy time data to individual "A".  Individual "D" does not support
   busy time requests and does not reply with any data.  If the
   transport binding supports exception messages, then individual "D"
   returns an "unsupported capability" message to individual "A4.34.3".

   The following summarizes the methods that are defined for the
   "VFREEBUSY" calendar component.

      |================|==================================================|
      | Method         |  Description                                     |
      |================|==================================================|
      | PUBLISH        | Publish unsolicited busy time data.              |
      | REQUEST        | Request busy time data.                          |
      | REPLY          | Reply to a busy time request.                    |
      |================|==================================================|

3.3.1  PUBLISH

   The "PUBLISH" method in a "VFREEBUSY" calendar component is used to
   publish busy time data.  The method may be sent from one CU to any
   other.  The purpose of the method is to provide a message for sending
   unsolicited busy time data.  That is, the busy time data is not being
   sent as a "REPLY" to the receipt of a "REQUEST" method.

   The "ATTENDEE" property must be specified in the busy time
   information.  The value is the CU address of the originator of the
   busy time information.

   This method type is an iCalendar object that conforms to the
   following property constraints:


Royer                   Expires October 2, 2005                [Page 29]
Internet-Draft                  iTIPbis                       April 2005

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1       MUST be "PUBLISH"

   VFREEBUSY           1+
       DTSTAMP         1
       DTSTART         1       DateTime values must be in UTC
       DTEND           1       DateTime values must be in UTC
       FREEBUSY        1+      MUST be BUSYTIME. Multiple instances are
                               allowed. Multiple instances must be sorted
                               in ascending order
       ORGANIZER       1       MUST contain the address of originator of
                               busy time data.

       COMMENT         0 or 1
       CONTACT         0+
       X-PROPERTY      0+
       URL             0 or 1  Specifies busy time URL

       ATTENDEE        0
       DURATION        0
       REQUEST-STATUS  0
       UID             0

   X-COMPONENT         0+

   VEVENT              0
   VTODO               0
   VJOURNAL            0
   VTIMEZONE           0
   VALARM              0

3.3.2  REQUEST

   The "REQUEST" method in a "VFREEBUSY" calendar component is used to
   ask a "Calendar User" for their busy time information.  The request
   may be for a busy time information bounded by a specific date and
   time interval.

   This message only permits requests for busy time information.  The
   message is sent from a "Calendar User" requesting the busy time
   information to one or more intended recipients.

   If the originator of the "REQUEST" method is not authorized to make a
   busy time request on the recipient's calendar system, then an
   exception message SHOULD be returned in a "REPLY" method, but no busy
   time data need be returned.


Royer                   Expires October 2, 2005                [Page 30]
Internet-Draft                  iTIPbis                       April 2005

   This method type is an iCalendar object that conforms to the
   following property constraints:

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1      MUST be "REQUEST"

   VFREEBUSY           1
       ATTENDEE        1+     contain the address of the calendar store
       DTEND           1      DateTime values must be in UTC
       DTSTAMP         1
       DTSTART         1      DateTime values must be in UTC
       ORGANIZER       1      MUST be the request originator's address
       UID             1
       COMMENT         0 or 1
       CONTACT         0+
       X-PROPERTY      0+

       FREEBUSY        0
       DURATION        0
       REQUEST-STATUS  0
       URL             0

   X-COMPONENT         0+
   VALARM              0
   VEVENT              0

   VTODO               0
   VJOURNAL            0
   VTIMEZONE           0

3.3.3  REPLY

   The "REPLY" method in a "VFREEBUSY" calendar component is used to
   respond to a busy time request.  The method is sent by the recipient
   of a busy time request to the originator of the request.

   The "REPLY" method may also be used to respond to an unsuccessful
   "REQUEST" method.  Depending on the "REQUEST-STATUS" value, no busy
   time information may be returned.

   This method type is an iCalendar object that conforms to the
   following property constraints:




Royer                   Expires October 2, 2005                [Page 31]
Internet-Draft                  iTIPbis                       April 2005

   Component/Property  Presence
   ------------------- ----------------------------------------------
   METHOD              1      MUST be "REPLY"

   VFREEBUSY           1
       ATTENDEE        1      (address of recipient replying)
       DTSTAMP         1
       DTEND           1      DateTime values must be in UTC
       DTSTART         1      DateTime values must be in UTC
       FREEBUSY        1+      (values MUST all be of the same data
                               type. Multiple instances are allowed.
                               Multiple instances MUST be sorted in
                               ascending order. Values MAY NOT overlap)
       ORGANIZER       1       MUST be the request originator's address
       UID             1

       COMMENT         0 or 1
       CONTACT         0+
       REQUEST-STATUS  0+
       URL             0 or 1  (specifies busy time URL)
       X-PROPERTY      0+
       DURATION        0
       SEQUENCE        0

   X-COMPONENT         0+
   VALARM              0
   VEVENT              0
   VTODO               0
   VJOURNAL            0
   VTIMEZONE           0

3.4  Methods For VTODO Components

   VTODO's are not in iCal-Basic.

3.5  Methods For VJOURNAL Components

   VJOURNAL's are not in iCal-Basic.

3.6  Status Replies

   The "REQUEST-STATUS" property may include the following values:

   |==============+============================+=========================|
   | Short Return | Longer Return Status       | Offending Data          |
   | Status Code  | Description                |                         |
   |==============+============================+=========================|


Royer                   Expires October 2, 2005                [Page 32]
Internet-Draft                  iTIPbis                       April 2005

   | 2.0          | Success.                   | None.                   |
   |==============+============================+=========================|
   | 2.1          | Success but fallback taken | Property name and value |
   |              | on one or more property    | MAY be specified.       |
   |              | values.                    |                         |
   |==============+============================+=========================|
   | 2.2          | Success, invalid property  | Property name MAY be    |
   |              | ignored.                   | specified.              |
   |==============+============================+=========================|
   | 2.3          | Success, invalid property  | Property parameter name |
   |              | parameter ignored.         | and value MAY be        |
   |              |                            | specified.              |
   |==============+============================+=========================|
   | 2.4          | Success, unknown non-      | Non-standard property   |
   |              | standard property ignored. | name MAY be specified.  |
   |==============+============================+=========================|
   | 2.5          | Success, unknown non       | Property and non-       |
   |              | standard property value    | standard value MAY be   |
   |              | ignored.                   | specified.              |
   |==============+============================+=========================|
   | 2.6          | Success, invalid calendar  | Calendar component      |
   |              | component ignored.         | sentinel (e.g., BEGIN:  |
   |              |                            | ALARM) MAY be           |
   |              |                            | specified.              |
   |==============+============================+=========================|
   | 2.7          | Success, request forwarded | Original and forwarded  |
   |              | to Calendar User.          | caluser addresses MAY   |
   |              |                            | be specified.           |
   |==============+============================+=========================|
   | 2.8          | Success, repeating event   | RRULE or RDATE property |
   |              | ignored. Scheduled as a    | name and value MAY be   |
   |              | single component.          | specified.              |
   |==============+============================+=========================|
   | 2.9          | Success, truncated end date| DTEND property value    |
   |              | time to date boundary.     | MAY be specified.       |
   |==============+============================+=========================|
   | 2.10         | Success, repeating VTODO   | RRULE or RDATE property |
   |              | ignored. Scheduled as a    | name and value MAY be   |
   |              | single VTODO.              | specified.              |
   |==============+============================+=========================|
   | 2.11         | Success, unbounded RRULE   | RRULE property name and |
   |              | clipped at some finite     | value MAY be specified. |
   |              | number of instances        | Number of instances MAY |
   |              |                            | also be specified.      |
   |==============+============================+=========================|
   | 3.0          | Invalid property name.     | Property name MAY be    |
   |              |                            | specified.              |
   |==============+============================+=========================|


Royer                   Expires October 2, 2005                [Page 33]
Internet-Draft                  iTIPbis                       April 2005

   | 3.1          | Invalid property value.    | Property name and value |
   |              |                            | MAY be specified.       |
   |==============+============================+=========================|
   | 3.2          | Invalid property parameter.| Property parameter name |
   |              |                            | and value MAY be        |
   |              |                            | specified.              |
   |==============+============================+=========================|
   | 3.3          | Invalid property parameter | Property parameter name |
   |              | value.                     | and value MAY be        |
   |              |                            | specified.              |
   |==============+============================+=========================|
   | 3.4          | Invalid calendar component | Calendar component      |
   |              | sequence.                  | sentinel MAY be         |
   |              |                            | specified (e.g., BEGIN: |
   |              |                            | VTIMEZONE).             |
   |==============+============================+=========================|
   | 3.5          | Invalid date or time.      | Date/time value(s) MAY  |
   |              |                            | be specified.           |
   |==============+============================+=========================|
   | 3.6          | Invalid rule.              | Rule value MAY be       |
   |              |                            | specified.              |
   |==============+============================+=========================|
   | 3.7          | Invalid Calendar User.     | Attendee property value |
   |              |                            |MAY be specified.        |
   |==============+============================+=========================|
   | 3.8          | No authority.              | METHOD and Attendee     |
   |              |                            | property values MAY be  |
   |              |                            | specified.              |
   |==============+============================+=========================|
   | 3.9          | Unsupported version.       | VERSION property name   |
   |              |                            | and value MAY be        |
   |              |                            | specified.              |
   |==============+============================+=========================|
   | 3.10         | Request entity too large.  | None.                   |
   |==============+============================+=========================|
   | 3.11         | Required component or      | Component or property   |
   |              | property missing.          | name MAY be specified.  |
   |==============+============================+=========================|
   | 3.12         | Unknown component or       | Component or property   |
   |              | property found             | name MAY be specified   |
   |==============+============================+=========================|
   | 3.13         | Unsupported component or   | Component or property   |
   |              | property found             | name MAY be specified   |
   |==============+============================+=========================|
   | 3.14         | Unsupported capability     | Method or action MAY    |
   |              |                            | be specified            |
   |==============+============================+=========================|
   | 4.0          | Event conflict. Date/time  | DTSTART and DTEND       |


Royer                   Expires October 2, 2005                [Page 34]
Internet-Draft                  iTIPbis                       April 2005

   |              | is busy.                   | property name and values|
   |              |                            | MAY be specified.       |
   |==============+============================+=========================|
   | 5.0          | Request MAY supported.     | Method property value   |
   |              |                            | MAY be specified.       |
   |==============+============================+=========================|
   | 5.1          | Service unavailable.       | ATTENDEE property value |
   |              |                            | MAY be specified.       |
   |==============+============================+=========================|
   | 5.2          | Invalid calendar service.  | ATTENDEE property value |
   |              |                            | MAY be specified.       |
   |==============+============================+=========================|
   | 5.3          | No scheduling support for  | ATTENDEE property value |
   |              | user.                      | MAY be specified.       |
   |==============+============================+=========================|

3.7  Implementation Considerations

3.7.1  Working With Recurrence Instances

   Not supported in iCal-Basic.

3.7.2  Attendee Property Considerations

3.7.3  X-Tokens












Royer                   Expires October 2, 2005                [Page 35]
Internet-Draft                  iTIPbis                       April 2005

4.  Examples

   Examples are in a separate document.
























Royer                   Expires October 2, 2005                [Page 36]
Internet-Draft                  iTIPbis                       April 2005

5.  Application Protocol Fallbacks

5.1  Partial Implementation

   iTIP applications that support this memo are required to support the
   entire protocol.

5.1.1  Event-Related Fallbacks

   This section will discuss how to interoperate with iTIP.

5.1.2  Latency Issues

   With a store-and-forward transport, it is possible for events to
   arrive out of sequence.  That is, a "CANCEL" method may be received
   prior to receiving the associated "REQUEST" for the calendar
   component.  This section discusses a few of these scenarios.

5.1.2.1  Cancellation of an Unknown Calendar Component.

   The "Attendee" tosses the "CANCEL" component.  If the "Attendee"
   cares to see the appointment send a "REFRESH".  If the "CANCEL" has
   no "DTSTART" value, then all of the appointnemt has been canceled, no
   point in doing a "REFRESH".

5.1.2.2  Unexpected Reply from an Unknown Delegate

   Not supported in iCal-Basic.

5.1.3  Sequence Number

   Under some conditions, a CUA may receive requests and replies with
   the same "SEQUENCE" property value.  The "DTSTAMP" property is
   utilized as a tie-breaker when two items with the same "SEQUENCE"
   property value are evaluated.  The newest "DTSTAMP" value obsoletes
   the older.

5.2  Security Considerations

   ITIP-BASIC is an abstract transport protocol which will be bound to a
   real-time transport, a store-and-forward transport, and perhaps other
   transports.  The transport protocol will be responsible for providing
   facilities for authentication and encryption using standard Internet
   mechanisms that are mutually understood between the sender and
   receiver.



Royer                   Expires October 2, 2005                [Page 37]
Internet-Draft                  iTIPbis                       April 2005

5.2.1  Security Threats

5.2.1.1  Spoofing the "Organizer"

   In iTIP-Basic, the "Organizer" (or someone working on the
   "Organizer's" behalf) is the only person authorized to make changes
   to an existing "VEVENT", "VTODO", "VJOURNAL" calendar component and
   republish it or redistribute updates to the "Attendees".  An
   iCalendar object that maliciously changes or cancels an existing
   "VEVENT", "VTODO" or "VJOURNAL" calendar component may be constructed
   by someone other than the "Organizer" and republished or sent to the
   "Attendees".

5.2.1.2  Spoofing the "Attendee"

   In iTIP-Basic, an "Attendee" of a "VEVENT" or "VTODO" calendar
   component (or someone working on the "Attendee's" behalf) is the only
   person authorized to update any parameter associated with their
   "ATTENDEE" property and send it to the "Organizer".  An iCalendar
   object that

   maliciously changes the "ATTENDEE" parameters may be constructed by
   someone other than the real "Attendee" and sent to the "Organizer".

5.2.1.3  Unauthorized Replacement of the Organizer

   There will be circumstances when "Attendees" of an event or to-do
   decide, using out-of-band mechanisms, that the "Organizer" must be
   replaced.  When the new "Organizer" sends out the updated "VEVENT" or
   "VTODO" the "Attendee's" CUA will detect that the "Organizer" has
   been changed, but it has no way of knowing whether or not the change
   was mutually agreed upon.

5.2.1.4  Eavesdropping

   The iCalendar object is constructed with human-readable clear text.
   Any information contained in an iCalendar object may be read and/or
   changed by unauthorized persons while the object is in transit.

5.2.1.5  Flooding a Calendar

   Implementations MAY provide a means to automatically incorporate
   "REQUEST" methods into a calendar.  This presents the opportunity for
   a calendar to be flooded with requests, which effectively block all
   the calendar's free time.



Royer                   Expires October 2, 2005                [Page 38]
Internet-Draft                  iTIPbis                       April 2005

5.2.1.6  Procedural Alarms

   The "REQUEST" methods for "VEVENT" and "VTODO" calendar components
   MAY contain "VALARM" calendar components.  The "VALARM" calendar
   component may be of type "PROCEDURE" and MAY have an attachment
   containing an executable program.  Implementations that incorporate
   these types of alarms are subject to any virus or malicious attack
   that may occur as a result of executing the attachment.

5.2.1.7  Unauthorized REFRESH Requests

   It is possible for an "Organizer" to receive a "REFRESH" request from
   someone who is not an "Attendee" of an event or to-do.  Only
   "Attendee's" of an event or to-do are authorized to receive replies
   to "REFRESH" requests.  Replying to such requests to anyone who is
   not an "Attendee" may be a security problem.

5.2.2  Recommendations

   For an application where the information is sensitive or critical and
   the network is subject is subject to a high probability of attack,
   iTIP-Basic transactions SHOULD be encrypted.  This may be
   accomplished using public key technology, specifically Security
   Multiparts for MIME

   [RFC-1847] in the iTIP-Basic transport binding.  This helps mitigate
   the threats of spoofing, eavesdropping and malicious changes in
   transit.

5.2.2.1  Use of [RFC-1847] to secure iTIP-Basic transactions

   iTIP-Basic transport bindings MUST provide a mechanism based on
   Security Multiparts for MIME [RFC-1847] to enable authentication of
   the sender's identity, and privacy and integrity of the data being
   transmitted.  This allows the receiver of a signed iCalendar object
   to verify the identity of the sender.  This sender may then be
   correlated to an "ATTENDEE" property in the iCalendar object.  If the
   correlation is made and the sender is authorized to make the
   requested change or update then the operation may proceed.  It also
   allows the message to be encrypted to prevent unauthorized reading of
   the message contents in transit.  iTIP-Basic transport binding
   documents describe this process in detail.

   Implementations MAY provide controls for users to disable this
   capability.



Royer                   Expires October 2, 2005                [Page 39]
Internet-Draft                  iTIPbis                       April 2005

5.2.2.2  Implementation Controls

   The threat of unauthorized replacement of the "Organizer" SHOULD be
   mitigated by a calendar system that uses this protocol by providing
   controls or alerts that make "Calendar Users" aware of such
   "Organizer" changes and allowing them to decide whether or not the
   request should be honored.

   The threat of flooding a calendar SHOULD be mitigated by a calendar
   system that uses this protocol by providing controls that may be used
   to limit the acceptable sources for iTIP-Basic transactions, and
   perhaps the size of messages and volume of traffic, by source.

   The threat of malicious procedural alarms SHOULD be mitigated by a
   calendar system that uses this protocol by providing controls that
   may be used to disallow procedural alarms in iTIP-Basic transactions
   and/or remove all alarms from the object before delivery to the
   recipient.

   The threat of unauthorized "REFRESH" requests SHOULD be mitigated by
   a calendar system that uses this protocol by providing controls or
   alerts that allow "Calendar User" to decide whether or not the
   request should be honored.  An implementation MAY decide to maintain,
   for audit or historical purposes,  "Calendar Users" who were part of
   an attendee list and who were subsequently uninvited.  Similar
   controls or alerts should be provided when a "REFRESH" request is
   received from these "Calendar Users" as well.

5.3  Acknowledgments

   A hearty thanks to the following individuals who have participated in
   the drafting, review and discussion of this memo:

   tbd

6  References

   [1]  Royer, D., "Internet Calendaring and Scheduling Core Object
        Specification - iCalendar Basic", draft-royer-ical-basic-02.txt,
        November 2005.

   [2]  Royer, D., "Basic iCalendar Message-Based Interoperability
        Protocol - iMIP Basic", draft-royer-imip-basic-00.txt, November
        2005.

   [3]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, March 1997.


Royer                   Expires October 2, 2005                [Page 40]
Internet-Draft                  iTIPbis                       April 2005

   [4]  "Coded Character Set--7-bit American Standard Code for
        Information Interchange, ANSI X3.4", 1986.

Author's Address

   Doug Royer
   IntelliCal, LLC
   267 Kentlands Blvd., #3041
   Gaithersburg, MD  20878
   USA

   Phone: +1-866-594-8574
   EMail: Doug@Royer.com



















Royer                   Expires October 2, 2005                [Page 41]
Internet-Draft                  iTIPbis                       April 2005

Intellectual Property Statement

   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.

Disclaimer of Validity

   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 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.

Copyright Statement

   Copyright (C) The Internet Society (2005).  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.

Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.


Royer                   Expires October 2, 2005                [Page 42]