home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2446.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  226.6 KB  |  6,108 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                     S. Silverberg
  8. Request for Comments: 2446                                    Microsoft
  9. Category: Standards Track                                    S. Mansour
  10.                                                                Netscape
  11.                                                               F. Dawson
  12.                                                                   Lotus
  13.                                                               R. Hopson
  14.                                                         ON Technologies
  15.                                                           November 1998
  16.  
  17.  
  18.        iCalendar Transport-Independent Interoperability Protocol
  19.                                  (iTIP)
  20.         Scheduling Events, BusyTime, To-dos and Journal Entries
  21.  
  22. Status of this Memo
  23.  
  24.    This document specifies an Internet standards track protocol for the
  25.    Internet community, and requests discussion and suggestions for
  26.    improvements.  Please refer to the current edition of the "Internet
  27.    Official Protocol Standards" (STD 1) for the standardization state
  28.    and status of this protocol.  Distribution of this memo is unlimited.
  29.  
  30. Copyright Notice
  31.  
  32.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  33.  
  34. Abstract
  35.  
  36.    This document specifies how calendaring systems use iCalendar objects
  37.    to interoperate with other calendar systems. It does so in a general
  38.    way so as to allow multiple methods of communication between systems.
  39.    Subsequent documents specify interoperable methods of communications
  40.    between systems that use this protocol.
  41.  
  42.    The document outlines a model for calendar exchange that defines both
  43.    static and dynamic event, to-do, journal and free/busy objects.
  44.    Static objects are used to transmit information from one entity to
  45.    another without the expectation of continuity or referential
  46.    integrity with the original item. Dynamic objects are a superset of
  47.    static objects and will gracefully degrade to their static
  48.    counterparts for clients that only support static objects.
  49.  
  50.    This document specifies an Internet protocol based on the iCalendar
  51.    object specification that provides scheduling interoperability
  52.    between different calendar systems. The Internet protocol is called
  53.    the "iCalendar Transport-Independent Interoperability Protocol
  54.    (iTIP)".
  55.  
  56.  
  57.  
  58. Silverberg, et. al.         Standards Track                     [Page 1]
  59.  
  60. RFC 2446                          iTIP                     November 1998
  61.  
  62.  
  63.    iTIP complements the iCalendar object specification by adding
  64.    semantics for group scheduling methods commonly available in current
  65.    calendar systems. These scheduling methods permit two or more
  66.    calendar systems to perform transactions such as publish, schedule,
  67.    reschedule, respond to scheduling requests, negotiation of changes or
  68.    cancel iCalendar-based calendar components.
  69.  
  70.    iTIP is defined independent of the particular transport used to
  71.    transmit the scheduling information. Companion memos to iTIP provide
  72.    bindings of the interoperability protocol to a number of Internet
  73.    protocols.
  74.  
  75. Table of Contents
  76.  
  77.    1 INTRODUCTION...................................................5
  78.     1.1 FORMATTING CONVENTIONS .....................................5
  79.     1.2 RELATED DOCUMENTS ..........................................6
  80.     1.3 ITIP ROLES AND TRANSACTIONS ................................6
  81.    2 INTEROPERABILITY MODELS........................................8
  82.     2.1 APPLICATION PROTOCOL .......................................9
  83.       2.1.1 Calendar Entry State ...................................9
  84.       2.1.2 Delegation .............................................9
  85.       2.1.3 Acting on Behalf of other Calendar Users ..............10
  86.       2.1.4 Component Revisions ...................................10
  87.       2.1.5 Message Sequencing ....................................11
  88.    3 APPLICATION PROTOCOL ELEMENTS.................................12
  89.     3.1 COMMON COMPONENT RESTRICTION TABLES .......................13
  90.     3.2 METHODS FOR VEVENT CALENDAR COMPONENTS ....................14
  91.       3.2.1 PUBLISH ...............................................15
  92.       3.2.2 REQUEST ...............................................17
  93.         3.2.2.1 Rescheduling an Event..............................19
  94.         3.2.2.2 Updating or Reconfirmation of an Event.............19
  95.         3.2.2.3 Delegating an Event to another CU..................19
  96.         3.2.2.4 Changing the Organizer.............................20
  97.         3.2.2.5 Sending on Behalf of the Organizer.................20
  98.         3.2.2.6 Forwarding to An Uninvited CU......................20
  99.         3.2.2.7 Updating Attendee Status...........................21
  100.       3.2.3 REPLY .................................................21
  101.       3.2.4 ADD ...................................................23
  102.       3.2.5 CANCEL ................................................25
  103.       3.2.6 REFRESH ...............................................26
  104.       3.2.7 COUNTER ...............................................28
  105.       3.2.8 DECLINECOUNTER ........................................29
  106.     3.3 METHODS FOR VFREEBUSY COMPONENTS ..........................31
  107.       3.3.1 PUBLISH ...............................................32
  108.       3.3.2 REQUEST ...............................................33
  109.       3.3.3 REPLY .................................................34
  110.     3.4 METHODS FOR VTODO COMPONENTS ..............................35
  111.  
  112.  
  113.  
  114. Silverberg, et. al.         Standards Track                     [Page 2]
  115.  
  116. RFC 2446                          iTIP                     November 1998
  117.  
  118.  
  119.       3.4.1 PUBLISH ...............................................35
  120.       3.4.2 REQUEST ...............................................37
  121.         3.4.2.1 REQUEST for Rescheduling a VTODO...................39
  122.         3.4.2.2 REQUEST for Update or Reconfirmation of a VTODO....39
  123.         3.4.2.3 REQUEST for Delegating a VTODO.....................40
  124.         3.4.2.4 REQUEST Forwarded To An Uninvited Calendar User....40
  125.         3.4.2.5 REQUEST Updated Attendee Status....................41
  126.       3.4.3 REPLY .................................................41
  127.       3.4.4 ADD ...................................................43
  128.       3.4.5 CANCEL ................................................44
  129.       3.4.6 REFRESH ...............................................46
  130.       3.4.7 COUNTER ...............................................48
  131.       3.4.8 DECLINECOUNTER ........................................49
  132.     3.5 METHODS FOR VJOURNAL COMPONENTS ...........................50
  133.       3.5.1 PUBLISH ...............................................51
  134.       3.5.2 ADD ...................................................52
  135.       3.5.3 CANCEL ................................................53
  136.     3.6 STATUS REPLIES ............................................55
  137.     3.7 IMPLEMENTATION CONSIDERATIONS .............................57
  138.       3.7.1 Working With Recurrence Instances .....................57
  139.       3.7.2 Attendee Property Considerations ......................58
  140.       3.7.3 X-Tokens ..............................................59
  141.    4 EXAMPLES......................................................59
  142.     4.1 PUBLISHED EVENT EXAMPLES ..................................59
  143.       4.1.1 A Minimal Published Event .............................60
  144.       4.1.2 Changing A Published Event ............................60
  145.       4.1.3 Canceling A Published Event ...........................61
  146.       4.1.4 A Rich Published Event ................................62
  147.       4.1.5 Anniversaries or Events attached to entire days .......63
  148.     4.2 GROUP EVENT EXAMPLES ......................................63
  149.       4.2.1 A Group Event Request .................................64
  150.       4.2.2 Reply To A Group Event Request ........................65
  151.       4.2.3 Update An Event .......................................65
  152.       4.2.4 Countering an Event Proposal ..........................66
  153.       4.2.5 Delegating an Event ...................................68
  154.       4.2.6 Delegate Accepts the Meeting ..........................70
  155.       4.2.7 Delegate Declines the Meeting .........................71
  156.       4.2.8 Forwarding an Event Request ...........................72
  157.       4.2.9 Cancel A Group Event ..................................72
  158.       4.2.10 Removing Attendees ...................................74
  159.       4.2.11 Replacing the Organizer ..............................75
  160.     4.3 BUSY TIME EXAMPLES ........................................76
  161.       4.3.1 Request Busy Time .....................................77
  162.       4.3.2 Reply To A Busy Time Request ..........................77
  163.     4.4 RECURRING EVENT AND TIME ZONE EXAMPLES ....................78
  164.       4.4.1 A Recurring Event Spanning Time Zones .................78
  165.       4.4.2 Modify A Recurring Instance ...........................79
  166.       4.4.3 Cancel an Instance ....................................81
  167.  
  168.  
  169.  
  170. Silverberg, et. al.         Standards Track                     [Page 3]
  171.  
  172. RFC 2446                          iTIP                     November 1998
  173.  
  174.  
  175.       4.4.4 Cancel Recurring Event ................................81
  176.       4.4.5 Change All Future Instances ...........................82
  177.       4.4.6 Add A New Instance To A Recurring Event ...............82
  178.       4.4.7 Add A New Series of Instances To A Recurring Event ....83
  179.       4.4.8 Counter An Instance Of A Recurring Event ..............87
  180.       4.4.9 Error Reply To A Request ..............................88
  181.     4.5 GROUP TO-DO EXAMPLES ......................................89
  182.       4.5.1 A VTODO Request .......................................90
  183.       4.5.2 A VTODO Reply .........................................90
  184.       4.5.3 A VTODO Request for Updated Status ....................91
  185.       4.5.4 A Reply: Percent-Complete .............................91
  186.       4.5.5 A Reply: Completed ....................................92
  187.       4.5.6 An Updated VTODO Request ..............................92
  188.       4.5.7 Recurring VTODOs ......................................92
  189.         4.5.7.1 Request for a Recurring VTODO......................93
  190.         4.5.7.2 Calculating due dates in recurring VTODOs..........93
  191.         4.5.7.3 Replying to an instance of a recurring VTODO.......93
  192.     4.6 JOURNAL EXAMPLES ..........................................94
  193.     4.7 OTHER EXAMPLES ............................................94
  194.       4.7.1 Event Refresh .........................................94
  195.       4.7.2 Bad RECURRENCE-ID .....................................95
  196.    5 APPLICATION PROTOCOL FALLBACKS................................97
  197.     5.1 PARTIAL IMPLEMENTATION ....................................97
  198.       5.1.1 Event-Related Fallbacks ...............................97
  199.       5.1.2 Free/Busy-Related Fallbacks ...........................99
  200.       5.1.3 To-Do-Related Fallbacks ...............................99
  201.       5.1.4 Journal-Related Fallbacks ............................101
  202.     5.2 LATENCY ISSUES ...........................................102
  203.       5.2.1 Cancellation of an Unknown Calendar Component. .......102
  204.       5.2.2 Unexpected Reply from an Unknown Delegate ............103
  205.     5.3 SEQUENCE NUMBER ..........................................103
  206.    6 SECURITY CONSIDERATIONS......................................103
  207.     6.1 SECURITY THREATS .........................................103
  208.       6.1.1 Spoofing the "Organizer" .............................103
  209.       6.1.2 Spoofing the "Attendee" ..............................103
  210.       6.1.3 Unauthorized Replacement of the Organizer ............104
  211.       6.1.4 Eavesdropping ........................................104
  212.       6.1.5 Flooding a Calendar ..................................104
  213.       6.1.6 Procedural Alarms ....................................104
  214.       6.1.7 Unauthorized REFRESH Requests ........................104
  215.     6.2 RECOMMENDATIONS ..........................................104
  216.       6.2.1 Use of [RFC-1847] to secure iTIP transactions ........105
  217.       6.2.2 Implementation Controls ..............................105
  218.    7 ACKNOWLEDGMENTS..............................................106
  219.    8 BIBLIOGRAPHY.................................................106
  220.    9 AUTHORS' ADDRESSES...........................................107
  221.    10 FULL COPYRIGHT STATEMENT....................................109
  222.  
  223.  
  224.  
  225.  
  226. Silverberg, et. al.         Standards Track                     [Page 4]
  227.  
  228. RFC 2446                          iTIP                     November 1998
  229.  
  230.  
  231. 1 Introduction
  232.  
  233.    This document specifies how calendaring systems use iCalendar objects
  234.    to interoperate with other calendar systems. In particular, it
  235.    specifies how to schedule events, to-dos, or daily journal entries.
  236.    It further specifies how to search for available busy time
  237.    information. It does so in a general way so as to allow multiple
  238.    methods of communication between systems. Subsequent documents
  239.    specify transport bindings between systems that use this protocol.
  240.  
  241.    This protocol is based on messages sent from an originator to one or
  242.    more recipients. For certain types of messages, a recipient may
  243.    reply, in order to update their status and may also return
  244.    transaction/request status information. The protocol supports the
  245.    ability for the message originator to modify or cancel the original
  246.    message. The protocol also supports the ability for recipients to
  247.    suggest changes to the originator of a message. The elements of the
  248.    protocol also define the user roles for its transactions.
  249.  
  250. 1.1 Formatting Conventions
  251.  
  252.    In order to refer to elements of the calendaring and scheduling
  253.    model, core object or interoperability protocol defined in [iCAL] and
  254.    [iTIP] several formatting conventions have been utilized.
  255.  
  256.    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  257.    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
  258.    document are to be interpreted as described in [RFC-2119].
  259.  
  260.    Calendaring and scheduling roles are referred to in quoted-strings of
  261.    text with the first character of each word in upper case. For
  262.    example, "Organizer" refers to a role of a "Calendar User"  (CU)
  263.    within the scheduling protocol defined by [iTIP]. Calendar components
  264.    defined by [iCAL] are referred to with capitalized, quoted-strings of
  265.    text. All calendar components start with the letter "V". For example,
  266.    "VEVENT" refers to the event calendar component, "VTODO" refers to
  267.    the to-do calendar component and "VJOURNAL" refers to the daily
  268.    journal calendar component. Scheduling methods defined by [iTIP] are
  269.    referred to with capitalized, quoted-strings of text. For example,
  270.    "REQUEST" refers to the method for requesting a scheduling calendar
  271.    component be created or modified, "REPLY" refers to the method a
  272.    recipient of a request uses to update their status with the
  273.    "Organizer" of the calendar component.
  274.  
  275.    Properties defined by [iCAL] are referred to with capitalized,
  276.    quoted-strings of text, followed by the word "property". For example,
  277.    "ATTENDEE" property refers to the iCalendar property used to convey
  278.    the calendar address of a "Calendar User". Property parameters
  279.  
  280.  
  281.  
  282. Silverberg, et. al.         Standards Track                     [Page 5]
  283.  
  284. RFC 2446                          iTIP                     November 1998
  285.  
  286.  
  287.    defined by this memo are referred to with lower case, quoted-strings
  288.    of text, followed by the word "parameter". For example, "value"
  289.    parameter refers to the iCalendar property parameter used to override
  290.    the default data type for a property value. Enumerated values defined
  291.    by this memo are referred to with capitalized text, either alone or
  292.    followed by the word "value".
  293.  
  294.    In tables, the quoted-string text is specified without quotes in
  295.    order to minimize the table length.
  296.  
  297. 1.2 Related Documents
  298.  
  299.    Implementers will need to be familiar with several other memos that,
  300.    along with this one, describe the Internet calendaring and scheduling
  301.    standards. This document, [iTIP], specifies an interoperability
  302.    protocol for scheduling between different implementations. The
  303.    related documents are:
  304.  
  305.         [iCAL] - specifies the objects, data types, properties and
  306.         property parameters used in the protocols, along with the
  307.         methods for representing and encoding them;
  308.  
  309.         [iMIP] specifies an Internet email binding for [iTIP].
  310.  
  311.    This memo does not attempt to repeat the specification of concepts or
  312.    definitions from these other memos. Where possible, references are
  313.    made to the memo that provides for the specification of these
  314.    concepts or definitions.
  315.  
  316. 1.3 ITIP Roles and Transactions
  317.  
  318.    ITIP defines methods for exchanging [iCAL] objects for the purposes
  319.    of group calendaring and scheduling between "Calendar Users" (CUs).
  320.    CUs take on one of two roles in iTIP. The CU who initiates an
  321.    exchange takes on the role of "Organizer". For example, the CU who
  322.    proposes a group meeting is the "Organizer". The CUs asked to
  323.    participate in the group meeting by the "Organizer" take on the role
  324.    of "Attendee". Note that "role" is also a descriptive parameter to
  325.    the _ATTENDEE_ property. Its use is to convey descriptive context to
  326.    an "Attendee" such as "chair", "req-participant" or "non-participant"
  327.    and has nothing to do with the calendaring workflow.
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Silverberg, et. al.         Standards Track                     [Page 6]
  339.  
  340. RFC 2446                          iTIP                     November 1998
  341.  
  342.  
  343.    The ITIP methods are listed below and their usage and semantics are
  344.    defined in section 3 of this document.
  345.  
  346.    +================+==================================================+
  347.    | Method         |  Description                                     |
  348.    |================+==================================================|
  349.    | PUBLISH        | Used to publish a calendar entry to one or more  |
  350.    |                | Calendar Users. There is no interactivity        |
  351.    |                | between the publisher and any other calendar     |
  352.    |                | user. An example might include a baseball team   |
  353.    |                | publishing its schedule to the public.           |
  354.    |                |                                                  |
  355.    | REQUEST        | Used to schedule a calendar entry with other     |
  356.    |                | Calendar Users. Requests are interactive in that |
  357.    |                | they require the receiver to respond using       |
  358.    |                | the Reply methods. Meeting Requests, Busy        |
  359.    |                | Time requests and the assignment of VTODOs to    |
  360.    |                | other Calendar Users are all examples.           |
  361.    |                | Requests are also used by the "Organizer" to     |
  362.    |                | update the status of a calendar entry.           |
  363.    |                |                                                  |
  364.    | REPLY          | A Reply is used in response to a Request to      |
  365.    |                | convey "Attendee" status to the "Organizer".     |
  366.    |                | Replies are commonly used to respond to meeting  |
  367.    |                | and task requests.                               |
  368.    |                |                                                  |
  369.    | ADD            | Add one or more instances to an existing         |
  370.    |                | VEVENT, VTODO, or VJOURNAL.                      |
  371.    |                |                                                  |
  372.    | CANCEL         | Cancel one or more instances of an existing      |
  373.    |                | VEVENT, VTODO, or VJOURNAL.                      |
  374.    |                |                                                  |
  375.    | REFRESH        | The Refresh method is used by an "Attendee" to   |
  376.    |                | request the latest version of a calendar entry.  |
  377.    |                |                                                  |
  378.    | COUNTER        | The Counter method is used by an "Attendee" to   |
  379.    |                | negotiate a change in the calendar entry.        |
  380.    |                | Examples include the request to change a         |
  381.    |                | proposed Event time or change the due date for a |
  382.    |                | VTODO.                                           |
  383.    |                |                                                  |
  384.    | DECLINE-       | Used by the "Organizer" to decline the proposed  |
  385.    | COUNTER        | counter-proprosal.                               |
  386.    +================+==================================================+
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Silverberg, et. al.         Standards Track                     [Page 7]
  395.  
  396. RFC 2446                          iTIP                     November 1998
  397.  
  398.  
  399.    Group scheduling in iTIP is accomplished using the set of "request"
  400.    and "response" methods described above. The following table shows the
  401.    methods broken down by who can send them.
  402.  
  403.    +================+==================================================+
  404.    | Originator     | Methods                                          |
  405.    |================+==================================================|
  406.    | Organizer      | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER    |
  407.    |                |                                                  |
  408.    | Attendee       | REPLY, REFRESH, COUNTER                          |
  409.    |                | REQUEST only when delegating                     |
  410.    +================+==================================================+
  411.  
  412.    Note that for some calendar component types, the allowable methods
  413.    are a subset of the above set.
  414.  
  415. 2 Interoperability Models
  416.  
  417.    There are two distinct protocols relevant to interoperability: an
  418.    "Application Protocol" and a "Transport Protocol". The Application
  419.    Protocol defines the content of the iCalendar objects sent between
  420.    sender and receiver to accomplish the scheduling transactions listed
  421.    above. The Transport Protocol defines how the iCalendar objects are
  422.    sent between the sender and receiver. This document focuses on the
  423.    Application Protocol. Binding documents such as [iMIP] focus on the
  424.    Transport Protocol.
  425.  
  426.    The connection between Sender and Receiver in the diagram below
  427.    refers to the Application Protocol. The iCalendar objects passed from
  428.    the Sender to the Receiver are presented in Section 3, Application
  429.    Protocol Elements.
  430.  
  431.    +----------+                      +----------+
  432.    |          |        iTIP          |          |
  433.    |  Sender  |<-------------------->| Receiver |
  434.    |          |                      |          |
  435.    +----------+                      +----------+
  436.  
  437.    There are several variations of this diagram in which the Sender and
  438.    Receiver take on various roles of a "Calendar User Agent" (CUA) or a
  439.    "Calendar Service" (CS).
  440.  
  441.    The architecture of iTIP is depicted in the diagram below. An
  442.    application written to this specification may work with bindings for
  443.    the store-and-forward transport, the real time transport, or both.
  444.    Also note that iTIP could be bound to other transports.
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Silverberg, et. al.         Standards Track                     [Page 8]
  451.  
  452. RFC 2446                          iTIP                     November 1998
  453.  
  454.  
  455.    +------------------------------------------+
  456.    |                   iTIP                   |
  457.    +------------------------------------------+
  458.    |Real-time | Store-and-Fwd | Other         |
  459.    |Transport | Transport     | Transports... |
  460.    +------------------------------------------+
  461.  
  462. 2.1 Application Protocol
  463.  
  464.    In the iTIP model, a calendar entry is created and managed by an
  465.    "Organizer". The "Organizer" interacts with other CUs by sending one
  466.    or more of the iTIP messages listed above. "Attendees" use the
  467.    "REPLY" method to communicate their status. "Attendees" do not make
  468.    direct changes to the master calendar entry. They can, however, use
  469.    the "COUNTER" method to suggest changes to the "Organizer". In any
  470.    case, the "Organizer" has complete control over the master calendar
  471.    entry.
  472.  
  473. 2.1.1 Calendar Entry State
  474.  
  475.    There are two distinct states relevant to calendar entries: the
  476.    overall state of the entry and the state associated with an
  477.    "Attendee" to that entry.
  478.  
  479.    The state of an entry is defined by the "STATUS" property and is
  480.    controlled by the "Organizer." There is no default value for the
  481.    "STATUS" property. The "Organizer" sets the "STATUS" property to the
  482.    appropriate value for each calendar entry.
  483.  
  484.    The state of a particular "Attendee" relative to an entry is defined
  485.    by the "partstat" parameter in the "ATTENDEE" property for each
  486.    "Attendee".  When an "Organizer" issues the initial entry, "Attendee"
  487.    status is unknown. The "Organizer" specifies this by setting the
  488.    "partstat" parameter to "NEEDS-ACTION". Each "Attendee" modifies
  489.    their "ATTENDEE" property "partstat" parameter to an appropriate
  490.    value as part of a "REPLY" message sent back to the "Organizer".
  491.  
  492. 2.1.2 Delegation
  493.  
  494.    Delegation is defined as the process by which an "Attendee" grants
  495.    another CU (or several CUs) the right to attend on their behalf. The
  496.    "Organizer" is made aware of this change because the delegating
  497.    "Attendee" informs the "Organizer". These steps are detailed in the
  498.    REQUEST method section.
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Silverberg, et. al.         Standards Track                     [Page 9]
  507.  
  508. RFC 2446                          iTIP                     November 1998
  509.  
  510.  
  511. 2.1.3 Acting on Behalf of other Calendar Users
  512.  
  513.    In many organizations one user will act on behalf of another to
  514.    organize and/or respond to meeting requests. ITIP provides two
  515.    mechanisms that support these activities.
  516.  
  517.    First, the "Organizer" is treated as a special entity, separate from
  518.    "Attendees". All responses from "Attendees" flow to the "Organizer",
  519.    making it easy to separate a calendar user organizing a meeting from
  520.    calendar users attending the meeting. Additionally, iCalendar
  521.    provides descriptive roles for each "Attendee". For instance, a role
  522.    of "chair" may be ascribed to one or more "Attendees". The "chair"
  523.    and the "Organizer" may or may not be the same calendar user. This
  524.    maps well to scenarios where an assistant may manage meeting
  525.    logistics for another individual who chairs a meeting.
  526.  
  527.    Second, a "sent-by" parameter may be specified in either the
  528.    "Organizer" or "Attendee" properties. When specified, the "sent-by"
  529.    parameter indicates that the responding CU acted on behalf of the
  530.    specified "Attendee" or "Organizer".
  531.  
  532. 2.1.4 Component Revisions
  533.  
  534.    The "SEQUENCE" property is used by the "Organizer" to indicate
  535.    revisions to the calendar component. The rules for incrementing the
  536.    "SEQUENCE" number are defined in [iCAL]. For clarity, these rules are
  537.    paraphrased here in terms of how they are applied in [iTIP]. For a
  538.    given "UID" in a calendar component:
  539.  
  540.    . For the "PUBLISH" and "REQUEST" methods, the "SEQUENCE" property
  541.       value is incremented according to the rules defined in [iCAL].
  542.  
  543.    . The "SEQUENCE" property value MUST be incremented each time the
  544.       "Organizer" uses the "ADD" or "CANCEL" methods.
  545.  
  546.    . The "SEQUENCE" property value MUST NOT be incremented when using
  547.       "REPLY", "REFRESH", "COUNTER", "DECLINECOUNTER", or when sending a
  548.       delegation "REQUEST".
  549.  
  550.    In some circumstances the "Organizer" may not have received responses
  551.    to the final revision sent out. In this situation, the "Organizer"
  552.    may wish to send an update "REQUEST", and set "RSVP=TRUE" for all
  553.    "Attendees", so that current responses can be collected.
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Silverberg, et. al.         Standards Track                    [Page 10]
  563.  
  564. RFC 2446                          iTIP                     November 1998
  565.  
  566.  
  567.    The value of the "SEQUENCE" property contained in a response from an
  568.    "Attendee" may not always match the "Organizer's" revision.
  569.    Implementations may choose to have the CUA indicate to the CU that
  570.    the response is to an entry that has been revised and allow the CU to
  571.    decide whether or not to accept the response.
  572.  
  573. 2.1.5 Message Sequencing
  574.  
  575.    CUAs that handle the [iTIP] application protocol must often correlate
  576.    a component in a calendar store with a component received in the
  577.    [iTIP] message. For example, an event may be updated with a later
  578.    revision of the same event. To accomplish this, a CUA must correlate
  579.    the version of the event already in its calendar store with the
  580.    version sent in the [iTIP] message. In addition to this correlation,
  581.    there are several factors that can cause [iTIP] messages to arrive in
  582.    an unexpected order.  That is, an "Organizer" could receive a reply
  583.    to an earlier revision of a component AFTER receiving a reply to a
  584.    later revision.
  585.  
  586.    To maximize interoperability and to handle messages that arrive in an
  587.    unexpected order, use the following rules:
  588.  
  589.    1.  The primary key for referencing a particular iCalendar component
  590.        is the "UID" property value. To reference an instance of a
  591.        recurring component, the primary key is composed of the "UID" and
  592.        the "RECURRENCE-ID" properties.
  593.  
  594.    2.  The secondary key for referencing a component is the "SEQUENCE"
  595.        property value.  For components where the "UID" is the same, the
  596.        component with the highest numeric value for the "SEQUENCE"
  597.        property obsoletes all other revisions of the component with
  598.        lower values.
  599.  
  600.    3.  "Attendees" send "REPLY" messages to the "Organizer".  For
  601.        replies where the "UID" property value is the same, the value of
  602.        the "SEQUENCE" property indicates the revision of the component
  603.        to which the "Attendee" is replying.  The reply with the highest
  604.        numeric value for the "SEQUENCE" property obsoletes all other
  605.        replies with lower values.
  606.  
  607.    4.  In situations where the "UID" and "SEQUENCE" properties match,
  608.        the "DTSTAMP" property is used as the tie-breaker. The component
  609.        with the latest "DTSTAMP" overrides all others. Similarly, for
  610.        "Attendee" responses where the "UID" property values match and
  611.        the "SEQUENCE" property values match, the response with the
  612.        latest "DTSTAMP" overrides all others.
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Silverberg, et. al.         Standards Track                    [Page 11]
  619.  
  620. RFC 2446                          iTIP                     November 1998
  621.  
  622.  
  623.    Hence, CUAs must persist the following component properties: "UID",
  624.    "RECURRENCE-ID", "SEQUENCE", and "DTSTAMP".  Furthermore, for each
  625.    "ATTENDEE" property of a component CUAs must persist the "SEQUENCE"
  626.    and "DTSTAMP" property values associated with the "Attendee's"
  627.    response.
  628.  
  629. 3 Application Protocol Elements
  630.  
  631.    ITIP messages are "text/calendar" MIME entities that contain
  632.    calendaring and scheduling information. The particular type of [iCAL]
  633.    message is referred to as the "method type". Each method type is
  634.    identified by a "METHOD" property specified as part of the
  635.    "text/calendar" content type.  The table below shows various
  636.    combinations of calendar components and the method types that this
  637.    memo supports.
  638.  
  639.    +=================================================+
  640.    |         | VEVENT | VTODO | VJOURNAL | VFREEBUSY |
  641.    |=================================================|
  642.    |Publish  |  Yes   |  Yes  |  Yes     |   Yes     |
  643.    |Request  |  Yes   |  Yes  |  No      |   Yes     |
  644.    |Refresh  |  Yes   |  Yes  |  No      |   No      |
  645.    |Cancel   |  Yes   |  Yes  |  Yes     |   No      |
  646.    |Add      |  Yes   |  Yes  |  Yes     |   No      |
  647.    |Reply    |  Yes   |  Yes  |  No      |   Yes     |
  648.    |Counter  |  Yes   |  Yes  |  No      |   No      |
  649.    |Decline- |        |       |          |           |
  650.    |Counter  |  Yes   |  Yes  |  No      |   No      |
  651.    +=================================================+
  652.  
  653.    Each method type is defined in terms of its associated components and
  654.    properties. Some components and properties are required, some are
  655.    optional and others are excluded. The restrictions are expressed in
  656.    this document using a simple "restriction table". The first column
  657.    indicates the name of a component or property. Properties of the
  658.    iCalendar object are not indented. Properties of a component are
  659.    indented. The second column contains "MUST" if the component or
  660.    property must be present, "MAY" if the component or property is
  661.    optional, and "NOT" if the component or property must not be present.
  662.    Entries in the second column sometimes contain comments for further
  663.    clarification.
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Silverberg, et. al.         Standards Track                    [Page 12]
  675.  
  676. RFC 2446                          iTIP                     November 1998
  677.  
  678.  
  679. 3.1 Common Component Restriction Tables
  680.  
  681.    The restriction table below applies to properties of the iCalendar
  682.    object. That is, the properties at the outermost scope. The presence
  683.    column uses the following values to assert whether a property is
  684.    required, is optional and the number of times it may appear in the
  685.    iCalendar object.
  686.  
  687.    Presence Value       Description
  688.    --------------------------------------------------------------
  689.    1                 One instance MUST be present
  690.    1+                At least one instance MUST be present
  691.    0                 Instances of this property Must NOT be present
  692.    0+                Multiple instances MAY be present
  693.    0 or 1            Up to 1 instance of this property MAY be present
  694.    ---------------------------------------------------------------
  695.  
  696.    The tables also call out "X-PROPERTY" and  "X-COMPONENT" to show
  697.    where vendor-specific properties and components can appear.  The
  698.    tables do not lay out the restrictions of property parameters. Those
  699.    restrictions are defined in [iCAL].
  700.  
  701.    Component/Property  Presence
  702.    ------------------- ----------------------------------------------
  703.    CALSCALE            0 or 1
  704.    PRODID              1
  705.    VERSION             1       Value MUST be "2.0"
  706.    X-PROPERTY          0+
  707.  
  708.  
  709.    DateTime values MAY refer to a "VTIMEZONE" component. The property
  710.    restrictions in the table below apply to any "VTIMEZONE" component in
  711.    an ITIP message.
  712.  
  713.    Component/Property  Presence
  714.    ------------------- ----------------------------------------------
  715.    VTIMEZONE           0+      MUST be present if any date/time refers
  716.                                to timezone
  717.        DAYLIGHT        0+      MUST be one or more of either STANDARD or
  718.                                DAYLIGHT
  719.           COMMENT      0 or 1
  720.           DTSTART      1       MUST be local time format
  721.           RDATE        0+      if present RRULE MUST NOT be present
  722.           RRULE        0+      if present RDATE MUST NOT be present
  723.           TZNAME       0 or 1
  724.           TZOFFSET     1
  725.           TZOFFSETFROM 1
  726.           TZOFFSETTO   1
  727.  
  728.  
  729.  
  730. Silverberg, et. al.         Standards Track                    [Page 13]
  731.  
  732. RFC 2446                          iTIP                     November 1998
  733.  
  734.  
  735.           X-PROPERTY   0+
  736.        LAST-MODIFIED   0 or 1
  737.        STANDARD        0+      MUST be one or more of either STANDARD or
  738.                                DAYLIGHT
  739.           COMMENT      0 or 1
  740.           DTSTART      1       MUST be local time format
  741.           RDATE        0+      if present RRULE MUST NOT be present
  742.           RRULE        0+      if present RDATE MUST NOT be present
  743.           TZNAME       0 or 1
  744.           TZOFFSETFROM 1
  745.           TZOFFSETTO   1
  746.           X-PROPERTY   0+
  747.        TZID            1
  748.        TZURL           0 or 1
  749.        X-PROPERTY      0+
  750.  
  751.    The property restrictions in the table below apply to any "VALARM"
  752.    component in an ITIP message.
  753.  
  754.    Component/Property  Presence
  755.    ------------------- ----------------------------------------------
  756.    VALARM              0+
  757.        ACTION          1
  758.        ATTACH          0+
  759.        DESCRIPTION     0 or 1
  760.        DURATION        0 or 1  if present REPEAT MUST be present
  761.        REPEAT          0 or 1  if present DURATION MUST be present
  762.        SUMMARY         0 or 1
  763.        TRIGGER         1
  764.        X-PROPERTY      0+
  765.  
  766. 3.2 Methods for VEVENT Calendar Components
  767.  
  768.    This section defines the property set restrictions for the method
  769.    types that are applicable to the "VEVENT" calendar component. Each
  770.    method is defined using a table that clarifies the property
  771.    constraints that define the particular method.
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Silverberg, et. al.         Standards Track                    [Page 14]
  787.  
  788. RFC 2446                          iTIP                     November 1998
  789.  
  790.  
  791.    The following summarizes the methods that are defined for the
  792.    "VEVENT" calendar component.
  793.  
  794.    +================+==================================================+
  795.    | Method         |  Description                                     |
  796.    |================+==================================================|
  797.    | PUBLISH        | Post notification of an event. Used primarily as |
  798.    |                | a method of advertising the existence of an      |
  799.    |                | event.                                           |
  800.    |                |                                                  |
  801.    | REQUEST        | Make a request for an event. This is an explicit |
  802.    |                | invitation to one or more "Attendees". Event     |
  803.    |                | Requests are also used to update or change an    |
  804.    |                | existing event. Clients that cannot handle       |
  805.    |                | REQUEST may degrade the event to view it as an   |
  806.    |                | PUBLISH.                                         |
  807.    |                |                                                  |
  808.    | REPLY          | Reply to an event request. Clients may set their |
  809.    |                | status ("partstat") to ACCEPTED, DECLINED,       |
  810.    |                | TENTATIVE, or DELEGATED.                         |
  811.    |                |                                                  |
  812.    | ADD            | Add one or more instances to an existing event.  |
  813.    |                |                                                  |
  814.    | CANCEL         | Cancel one or more instances of an existing      |
  815.    |                | event.                                           |
  816.    |                |                                                  |
  817.    | REFRESH        | A request is sent to an "Organizer" by an        |
  818.    |                | "Attendee" asking for the latest version of an   |
  819.    |                | event to be resent to the requester.             |
  820.    |                |                                                  |
  821.    | COUNTER        | Counter a REQUEST with an alternative proposal,  |
  822.    |                | Sent by an "Attendee" to the "Organizer".        |
  823.    |                |                                                  |
  824.    | DECLINECOUNTER | Decline a counter proposal. Sent to an           |
  825.    |                | "Attendee" by the "Organizer".                   |
  826.    +================+==================================================+
  827.  
  828. 3.2.1 PUBLISH
  829.  
  830.    The "PUBLISH" method in a "VEVENT" calendar component is an
  831.    unsolicited posting of an iCalendar object. Any CU may add published
  832.    components to their calendar. The "Organizer" MUST be present in a
  833.    published iCalendar component. "Attendees" MUST NOT be present. Its
  834.    expected usage is for encapsulating an arbitrary event as an
  835.    iCalendar object. The "Organizer" may subsequently update (with
  836.    another "PUBLISH" method), add instances to (with an "ADD" method),
  837.    or cancel (with a "CANCEL" method) a previously published "VEVENT"
  838.    calendar component.
  839.  
  840.  
  841.  
  842. Silverberg, et. al.         Standards Track                    [Page 15]
  843.  
  844. RFC 2446                          iTIP                     November 1998
  845.  
  846.  
  847.    This method type is an iCalendar object that conforms to the
  848.    following property constraints:
  849.  
  850. Component/Property  Presence
  851. ------------------- ----------------------------------------------
  852. METHOD              1       MUST equal "PUBLISH"
  853. VEVENT              1+
  854.      DTSTAMP        1
  855.      DTSTART        1
  856.      ORGANIZER      1
  857.      SUMMARY        1       Can be null.
  858.      UID            1
  859.      RECURRENCE-ID  0 or 1  only if referring to an instance of a
  860.                             recurring calendar component.  Otherwise
  861.                             it MUST NOT be present.
  862.      SEQUENCE       0 or 1  MUST be present if value is greater than
  863.                             0, MAY be present if 0
  864.      ATTACH         0+
  865.      CATEGORIES     0 or 1  This property may contain a list of
  866.                             values
  867.      CLASS          0 or 1
  868.      COMMENT        0 or 1
  869.      CONTACT        0+
  870.      CREATED        0 or 1
  871.      DESCRIPTION    0 or 1  Can be null
  872.      DTEND          0 or 1  if present DURATION MUST NOT be present
  873.      DURATION       0 or 1  if present DTEND MUST NOT be present
  874.      EXDATE         0+
  875.      EXRULE         0+
  876.      GEO            0 or 1
  877.      LAST-MODIFIED  0 or 1
  878.      LOCATION       0 or 1
  879.      PRIORITY       0 or 1
  880.      RDATE          0+
  881.      RELATED-TO     0+
  882.      RESOURCES      0 or 1 This property MAY contain a list of values
  883.      RRULE          0+
  884.      STATUS         0 or 1 MAY be one of TENTATIVE/CONFIRMED/CANCELLED
  885.      TRANSP         0 or 1
  886.      URL            0 or 1
  887.      X-PROPERTY     0+
  888.  
  889.      ATTENDEE       0
  890.      REQUEST-STATUS 0
  891.  
  892. VALARM              0+
  893. VFREEBUSY           0
  894. VJOURNAL            0
  895.  
  896.  
  897.  
  898. Silverberg, et. al.         Standards Track                    [Page 16]
  899.  
  900. RFC 2446                          iTIP                     November 1998
  901.  
  902.  
  903. VTODO               0
  904. VTIMEZONE           0+    MUST be present if any date/time refers to
  905.                           a timezone
  906. X-COMPONENT         0+
  907.  
  908. 3.2.2 REQUEST
  909.  
  910.    The "REQUEST" method in a "VEVENT" component provides the following
  911.    scheduling functions:
  912.  
  913.      .  Invite "Attendees" to an event;
  914.      .  Reschedule an existing event;
  915.      .  Response to a REFRESH request;
  916.      .  Update the details of an existing event, without rescheduling it;
  917.      .  Update the status of "Attendees" of an existing event, without
  918.         rescheduling it;
  919.      .  Reconfirm an existing event, without rescheduling it;
  920.      .  Forward a "VEVENT" to another uninvited CU.
  921.      .  For an existing "VEVENT" calendar component, delegate the role of
  922.         "Attendee" to another CU;
  923.      .  For an existing "VEVENT" calendar component, changing the role of
  924.         "Organizer" to another CU.
  925.  
  926.    The "Organizer" originates the "REQUEST". The recipients of the
  927.    "REQUEST" method are the CUs invited to the event, the "Attendees".
  928.    "Attendees" use the "REPLY" method to convey attendance status to the
  929.    "Organizer".
  930.  
  931.    The "UID" and "SEQUENCE" properties are used to distinguish the
  932.    various uses of the "REQUEST" method. If the "UID" property value in
  933.    the "REQUEST" is not found on the recipient's calendar, then the
  934.    "REQUEST" is for a new "VEVENT" calendar component. If the "UID"
  935.    property value is found on the recipient's calendar, then the
  936.    "REQUEST" is for a rescheduling, an update, or a reconfirm of the
  937.    "VEVENT" calendar component.
  938.  
  939.    For the "REQUEST" method, multiple "VEVENT" components in a single
  940.    iCalendar object are only permitted when for components with the same
  941.    "UID" property.  That is, a series of recurring events may have
  942.    instance-specific information.  In this case, multiple "VEVENT"
  943.    components are needed to express the entire series.
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Silverberg, et. al.         Standards Track                    [Page 17]
  955.  
  956. RFC 2446                          iTIP                     November 1998
  957.  
  958.  
  959.    This method type is an iCalendar object that conforms to the
  960.    following property constraints:
  961.  
  962. Component/Property  Presence
  963. -----------------------------------------------------------------
  964. METHOD              1       MUST be "REQUEST"
  965. VEVENT              1+      All components MUST have the same UID
  966.     ATTENDEE        1+
  967.     DTSTAMP         1
  968.     DTSTART         1
  969.     ORGANIZER       1
  970.     SEQUENCE        0 or 1  MUST be present if value is greater than 0,
  971.                             MAY be present if 0
  972.     SUMMARY         1       Can be null
  973.     UID             1
  974.  
  975.     ATTACH          0+
  976.     CATEGORIES      0 or 1  This property may contain a list of values
  977.     CLASS           0 or 1
  978.     COMMENT         0 or 1
  979.     CONTACT         0+
  980.     CREATED         0 or 1
  981.     DESCRIPTION     0 or 1  Can be null
  982.     DTEND           0 or 1  if present DURATION MUST NOT be present
  983.     DURATION        0 or 1  if present DTEND MUST NOT be present
  984.     EXDATE          0+
  985.     EXRULE          0+
  986.     GEO             0 or 1
  987.     LAST-MODIFIED   0 or 1
  988.     LOCATION        0 or 1
  989.     PRIORITY        0 or 1
  990.     RDATE           0+
  991.     RECURRENCE-ID   0 or 1  only if referring to an instance of a
  992.                             recurring calendar component.  Otherwise it
  993.                             MUST NOT be present.
  994.     RELATED-TO      0+
  995.     REQUEST-STATUS  0+
  996.     RESOURCES       0 or 1  This property MAY contain a list of values
  997.     RRULE           0+
  998.     STATUS          0 or 1  MAY be one of TENTATIVE/CONFIRMED
  999.     TRANSP          0 or 1
  1000.     URL             0 or 1
  1001.     X-PROPERTY      0+
  1002.  
  1003. VALARM              0+
  1004. VTIMEZONE           0+      MUST be present if any date/time refers to
  1005.                             a timezone
  1006. X-COMPONENT         0+
  1007.  
  1008.  
  1009.  
  1010. Silverberg, et. al.         Standards Track                    [Page 18]
  1011.  
  1012. RFC 2446                          iTIP                     November 1998
  1013.  
  1014.  
  1015. VFREEBUSY           0
  1016. VJOURNAL            0
  1017. VTODO               0
  1018.  
  1019. 3.2.2.1 Rescheduling an Event
  1020.  
  1021.    The "REQUEST" method may be used to reschedule an event. A
  1022.    rescheduled event involves a change to the existing event in terms of
  1023.    its time or recurrence intervals and possibly the location or
  1024.    description. If the recipient CUA of a "REQUEST" method finds that
  1025.    the "UID" property value already exists on the calendar, but that the
  1026.    "SEQUENCE" (or "DTSTAMP") property value in the "REQUEST" method is
  1027.    greater than the value for the existing event, then the "REQUEST"
  1028.    method describes a rescheduling of the event.
  1029.  
  1030. 3.2.2.2 Updating or Reconfirmation of an Event
  1031.  
  1032.    The "REQUEST" method may be used to update or reconfirm an event. An
  1033.    update to an existing event does not involve changes to the time or
  1034.    recurrence intervals, and might not involve a change to the location
  1035.    or description for the event. If the recipient CUA of a "REQUEST"
  1036.    method finds that the "UID" property value already exists on the
  1037.    calendar and that the "SEQUENCE" property value in the "REQUEST" is
  1038.    the same as the value for the existing event, then the "REQUEST"
  1039.    method describes an update of the event details, but no rescheduling
  1040.    of the event.
  1041.  
  1042.    The update "REQUEST" method is the appropriate response to a
  1043.    "REFRESH" method sent from an "Attendee" to the "Organizer" of an
  1044.    event.
  1045.  
  1046.    The "Organizer" of an event may also send unsolicited "REQUEST"
  1047.    methods.  The unsolicited "REQUEST" methods may be used to update the
  1048.    details of the event without rescheduling it, to update the
  1049.    "partstat" parameter of "Attendees", or to reconfirm the event.
  1050.  
  1051. 3.2.2.3 Delegating an Event to another CU
  1052.  
  1053.    Some calendar and scheduling systems allow "Attendees" to delegate
  1054.    their presence at an event to another calendar user. ITIP supports
  1055.    this concept using the following workflow. Any "Attendee" may
  1056.    delegate their right to participate in a calendar VEVENT to another
  1057.    CU. The implication is that the delegate participates in lieu of the
  1058.    original "Attendee"; NOT in addition to the "Attendee". The delegator
  1059.    MUST notify the "Organizer" of this action using the steps outlined
  1060.    below.  Implementations may support or restrict delegation as they
  1061.    see fit. For instance, some implementations may restrict a delegate
  1062.    from delegating a "REQUEST" to another CU.
  1063.  
  1064.  
  1065.  
  1066. Silverberg, et. al.         Standards Track                    [Page 19]
  1067.  
  1068. RFC 2446                          iTIP                     November 1998
  1069.  
  1070.  
  1071.    The "Delegator" of an event forwards the existing "REQUEST" to the
  1072.    "Delegate". The "REQUEST" method MUST include an "ATTENDEE" property
  1073.    with the calendar address of the "Delegate". The "Delegator" MUST
  1074.    also send a "REPLY" method to the "Organizer" with the "Delegator's"
  1075.    "ATTENDEE" property "partstat" parameter value set to "delegated". In
  1076.    addition, the "delegated-to" parameter MUST be included with the
  1077.    calendar address of the "Delegate".
  1078.  
  1079.    In response to the request, the "Delegate" MUST send a "REPLY" method
  1080.    to the "Organizer" and optionally, to the "Delegator". The "REPLY"
  1081.    method " SHOULD include the "ATTENDEE" property with the "delegated-
  1082.    from" parameter value of the "Delegator's" calendar address.
  1083.  
  1084.    The "Delegator" may continue to receive updates to the event even
  1085.    though they will not be attending. This is accomplished by the
  1086.    "Delegator" setting their "role" attribute to " NON-PARTICIPANT" in
  1087.    the "REPLY" to the "Organizer"
  1088.  
  1089. 3.2.2.4 Changing the Organizer
  1090.  
  1091.    The situation may arise where the "Organizer" of a VEVENT is no
  1092.    longer able to perform the "Organizer" role and abdicates without
  1093.    passing on the "Organizer" role to someone else. When this occurs the
  1094.    "Attendees" of the VEVENT may use out-of-band mechanisms to
  1095.    communicate the situation and agree upon a new "Organizer".  The new
  1096.    "Organizer" should then send out a new "REQUEST" with a modified
  1097.    version of the VEVENT in which the "SEQUENCE" number has been
  1098.    incremented and value of the "ORGANIZER" property has been changed to
  1099.    the calendar address of the new "Organizer".
  1100.  
  1101. 3.2.2.5 Sending on Behalf of the Organizer
  1102.  
  1103.    There are a number of scenarios that support the need for a calendar
  1104.    user to act on behalf of the "Organizer" without explicit role
  1105.    changing.  This might be the case if the CU designated as "Organizer"
  1106.    was sick or unable to perform duties associated with that function.
  1107.    In these cases iTIP supports the notion of one CU acting on behalf of
  1108.    another. Using the "sent-by" parameter, a calendar user could send an
  1109.    updated "VEVENT" REQUEST. In the case where one CU sends on behalf of
  1110.    another CU, the "Attendee" responses are still directed back towards
  1111.    the CU designated as "Organizer".
  1112.  
  1113. 3.2.2.6 Forwarding to An Uninvited CU
  1114.  
  1115.    An "Attendee" invited to an event may invite another uninvited CU to
  1116.    the event. The invited "Attendee" accomplishes this by forwarding the
  1117.    original "REQUEST" method to the uninvited CU. The "Organizer"
  1118.    decides whether or not the uninvited CU is added to the attendee
  1119.  
  1120.  
  1121.  
  1122. Silverberg, et. al.         Standards Track                    [Page 20]
  1123.  
  1124. RFC 2446                          iTIP                     November 1998
  1125.  
  1126.  
  1127.    list. If the "Organizer" decides not to add the uninvited CU no
  1128.    further action is required, however the "Organizer" MAY send the
  1129.    uninvited CU a "CANCEL" message.  If the "Organizer" decides to add
  1130.    an uninvited CU, a new "ATTENDEE" property is added for the uninvited
  1131.    CU with its property parameters set as the "Organizer" deems
  1132.    appropriate. When forwarding a "REQUEST" to another CU, the
  1133.    forwarding "Attendee" MUST NOT make changes to the VEVENT property
  1134.    set.
  1135.  
  1136. 3.2.2.7 Updating Attendee Status
  1137.  
  1138.    The "Organizer" of an event may also request updated status from one
  1139.    or more "Attendees. The "Organizer" sends a "REQUEST" method to the
  1140.    "Attendee" and sets the "ATTENDEE;RSVP=TRUE" property parameter. The
  1141.    "SEQUENCE" property for the event is not changed from its previous
  1142.    value. A recipient will determine that the only change in the
  1143.    "REQUEST" is that their "RSVP" property parameter indicates a request
  1144.    for updated status. The recipient SHOULD respond with a "REPLY"
  1145.    method indicating their current status with respect to the "REQUEST".
  1146.  
  1147. 3.2.3 REPLY
  1148.  
  1149.    The "REPLY" method in a "VEVENT" calendar component is used to
  1150.    respond (e.g., accept or decline) to a "REQUEST" or to reply to a
  1151.    delegation "REQUEST". When used to provide a delegation response, the
  1152.    "Delegator" SHOULD include the calendar address of the "Delegate" on
  1153.    the "delegated-to" property parameter of the "Delegator's" "ATTENDEE"
  1154.    property. The "Delegate" SHOULD include the calendar address of the
  1155.    "Delegator" on the "delegated-from" property parameter of the
  1156.    "Delegate's" "ATTENDEE" property.
  1157.  
  1158.    The "REPLY" method may also be used to respond to an unsuccessful
  1159.    "REQUEST" method. Depending on the value of the "REQUEST-STATUS"
  1160.    property no scheduling action may have been performed.
  1161.  
  1162.    The "Organizer" of an event may receive the "REPLY" method from a CU
  1163.    not in the original "REQUEST". For example, a "REPLY" may be received
  1164.    from a "Delegate" to an event. In addition, the "REPLY" method may be
  1165.    received from an unknown CU (a "Party Crasher"). This uninvited
  1166.    "Attendee" may be accepted, or the "Organizer" may cancel the event
  1167.    for the uninvited "Attendee" by sending a "CANCEL" method to the
  1168.    uninvited "Attendee".
  1169.  
  1170.    An "Attendee" can include a message to the "Organizer" using the
  1171.    "COMMENT" property. For example, if the user indicates tentative
  1172.    acceptance and wants to let the "Organizer" know why, the reason can
  1173.    be expressed in the "COMMENT" property value.
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Silverberg, et. al.         Standards Track                    [Page 21]
  1179.  
  1180. RFC 2446                          iTIP                     November 1998
  1181.  
  1182.  
  1183.    The "Organizer" may also receive a "REPLY" from one CU on behalf of
  1184.    another. Like the scenario enumerated above for the "Organizer",
  1185.    "Attendees" may have another CU respond on their behalf. This is done
  1186.    using the "sent-by" parameter.
  1187.  
  1188.    The optional properties listed in the table below (those listed as
  1189.    "0+" or "0 or 1") MUST NOT be changed from those of the original
  1190.    request.  If property changes are desired the COUNTER message must be
  1191.    used.
  1192.  
  1193.    This method type is an iCalendar object that conforms to the
  1194.    following property constraints:
  1195.  
  1196. Component/Property  Presence
  1197. ------------------- ----------------------------------------------
  1198. METHOD              1       MUST be "REPLY"
  1199. VEVENT              1+      All components MUST have the same UID
  1200.     ATTENDEE        1       MUST be the address of the Attendee
  1201.                             replying.
  1202.     DTSTAMP         1
  1203.     ORGANIZER       1
  1204.     RECURRENCE-ID   0 or 1  only if referring to an instance of a
  1205.                             recurring calendar component.  Otherwise
  1206.                             it must NOT be present.
  1207.     UID             1       MUST be the UID of the original REQUEST
  1208.  
  1209.     SEQUENCE        0 or 1  MUST if non-zero, MUST be the sequence
  1210.                             number of the original REQUEST. MAY be
  1211.                             present if 0.
  1212.  
  1213.     ATTACH          0+
  1214.     CATEGORIES      0 or 1  This property may contain a list of values
  1215.     CLASS           0 or 1
  1216.     COMMENT         0 or 1
  1217.     CONTACT         0+
  1218.     CREATED         0 or 1
  1219.     DESCRIPTION     0 or 1
  1220.     DTEND           0 or 1  if present DURATION MUST NOT be present
  1221.     DTSTART         0 or 1
  1222.     DURATION        0 or 1  if present DTEND MUST NOT be present
  1223.     EXDATE          0+
  1224.     EXRULE          0+
  1225.     GEO             0 or 1
  1226.     LAST-MODIFIED   0 or 1
  1227.     LOCATION        0 or 1
  1228.     PRIORITY        0 or 1
  1229.     RDATE           0+
  1230.     RELATED-TO      0+
  1231.  
  1232.  
  1233.  
  1234. Silverberg, et. al.         Standards Track                    [Page 22]
  1235.  
  1236. RFC 2446                          iTIP                     November 1998
  1237.  
  1238.  
  1239.     RESOURCES       0 or 1  This property MAY contain a list of values
  1240.     REQUEST-STATUS  0+
  1241.     RRULE           0+
  1242.     STATUS          0 or 1
  1243.     SUMMARY         0 or 1
  1244.     TRANSP          0 or 1
  1245.     URL             0 or 1
  1246.     X-PROPERTY      0+
  1247.  
  1248. VTIMEZONE           0 or 1 MUST be present if any date/time refers
  1249.                            to a timezone
  1250. X-COMPONENT         0+
  1251.  
  1252. VALARM              0
  1253. VFREEBUSY           0
  1254. VJOURNAL            0
  1255. VTODO               0
  1256.  
  1257. 3.2.4 ADD
  1258.  
  1259.    The "ADD" method in a "VEVENT" calendar component is used to add one
  1260.    or more instances to an existing "VEVENT". Unlike the "REQUEST"
  1261.    method, when using issuing an "ADD" method, the "Organizer" does not
  1262.    send the full "VEVENT" description; only the new instance(s). The
  1263.    "ADD" method is especially useful if there are instance-specific
  1264.    properties to be preserved in a recurring "VEVENT". For instance, an
  1265.    "Organizer" may have originally scheduled a weekly Thursday meeting.
  1266.    At some point, several instances changed. Location or start time may
  1267.    have changed, or some instances may have unique "DESCRIPTION"
  1268.    properties. The "ADD" method allows the "Organizer" to add new
  1269.    instances to an existing event using a single ITIP message without
  1270.    redefining the entire recurring pattern.
  1271.  
  1272.    The "UID" must be that of the existing event. If the "UID" property
  1273.    value in the "ADD" is not found on the recipient's calendar, then the
  1274.    recipient SHOULD send a "REFRESH" to the "Organizer" in order to be
  1275.    updated with the latest version of the "VEVENT".  If an "Attendee"
  1276.    implementation does not support the "ADD" method it should respond
  1277.    with a "REQUEST-STATUS" value of 3.14 and ask for a "REFRESH".
  1278.  
  1279.    This method type is an iCalendar object that conforms to the
  1280.    following property constraints:
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Silverberg, et. al.         Standards Track                    [Page 23]
  1291.  
  1292. RFC 2446                          iTIP                     November 1998
  1293.  
  1294.  
  1295. Component/Property  Presence
  1296. ------------------- ----------------------------------------------
  1297. METHOD              1      MUST be "ADD"
  1298. VEVENT              1
  1299.     DTSTAMP         1
  1300.     DTSTART         1
  1301.     ORGANIZER       1
  1302.     SEQUENCE        1      MUST be greater than 0
  1303.     SUMMARY         1      Can be null
  1304.     UID             1      MUST match that of the original event
  1305.  
  1306.     ATTACH          0+
  1307.     ATTENDEE        0+
  1308.     CATEGORIES      0 or 1 This property MAY contain a list of values
  1309.     CLASS           0 or 1
  1310.     COMMENT         0 or 1
  1311.     CONTACT         0+
  1312.     CREATED         0 or 1
  1313.     DESCRIPTION     0 or 1  Can be null
  1314.     DTEND           0 or 1  if present DURATION MUST NOT be present
  1315.     DURATION        0 or 1  if present DTEND MUST NOT be present
  1316.     EXDATE          0+
  1317.     EXRULE          0+
  1318.     GEO             0 or 1
  1319.     LAST-MODIFIED   0 or 1
  1320.     LOCATION        0 or 1
  1321.     PRIORITY        0 or 1
  1322.     RDATE           0+
  1323.     RELATED-TO      0+
  1324.     RESOURCES       0 or 1  This property MAY contain a list of values
  1325.     RRULE           0+
  1326.     STATUS          0 or 1  MAY be one of TENTATIVE/CONFIRMED
  1327.     TRANSP          0 or 1
  1328.     URL             0 or 1
  1329.     X-PROPERTY      0+
  1330.  
  1331.     RECURRENCE-ID   0
  1332.     REQUEST-STATUS  0
  1333.  
  1334. VALARM              0+
  1335. VTIMEZONE           0+     MUST be present if any date/time refers to
  1336.                            a timezone
  1337. X-COMPONENT         0+
  1338.  
  1339. VFREEBUSY           0
  1340. VTODO               0
  1341. VJOURNAL            0
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Silverberg, et. al.         Standards Track                    [Page 24]
  1347.  
  1348. RFC 2446                          iTIP                     November 1998
  1349.  
  1350.  
  1351. 3.2.5 CANCEL
  1352.  
  1353.    The "CANCEL" method in a "VEVENT" calendar component is used to send
  1354.    a cancellation notice of an existing event request to the
  1355.    "Attendees". The message is sent by the "Organizer" of the event. For
  1356.    a recurring event, either the whole event or instances of an event
  1357.    may be cancelled. To cancel the complete range of recurring event,
  1358.    the "UID" property value for the event MUST be specified and a
  1359.    "RECURRENCE-ID" MUST NOT be specified in the "CANCEL" method. In
  1360.    order to cancel an individual instance of the event, the
  1361.    "RECURRENCE-ID" property value for the event MUST be specified in the
  1362.    "CANCEL" method.
  1363.  
  1364.    There are two options for canceling a sequence of instances of a
  1365.    recurring "VEVENT" calendar component:
  1366.  
  1367.    (a) the "RECURRENCE-ID" property for an instance in the sequence MUST
  1368.        be specified with the "RANGE" property parameter value of
  1369.        THISANDPRIOR (or THISANDFUTURE)  to indicate cancellation of the
  1370.        specified "VEVENT" calendar component and all instances before
  1371.        (or after); or
  1372.  
  1373.    (b) individual recurrence instances may be cancelled by specifying
  1374.        multiple "RECURRENCE-ID" properties corresponding to the
  1375.        instances to be cancelled.
  1376.  
  1377.    When a "VEVENT" is cancelled, the "SEQUENCE" property value MUST be
  1378.    incremented.
  1379.  
  1380.    This method type is an iCalendar object that conforms to the
  1381.    following property constraints:
  1382.  
  1383. Component/Property  Presence
  1384. ------------------- ----------------------------------------------
  1385. METHOD              1      MUST be "CANCEL"
  1386.  
  1387. VEVENT              1+     All must have the same UID
  1388.     ATTENDEE        0+     MUST include all "Attendees" being removed
  1389.                            the event. MUST include all "Attendees" if
  1390.                            the entire event is cancelled.
  1391.     DTSTAMP         1
  1392.     ORGANIZER       1
  1393.     SEQUENCE        1
  1394.     UID             1       MUST be the UID of the original REQUEST
  1395.  
  1396.     COMMENT         0 or 1
  1397.     ATTACH          0+
  1398.     CATEGORIES      0 or 1  This property may contain a list of values
  1399.  
  1400.  
  1401.  
  1402. Silverberg, et. al.         Standards Track                    [Page 25]
  1403.  
  1404. RFC 2446                          iTIP                     November 1998
  1405.  
  1406.  
  1407.     CLASS           0 or 1
  1408.     CONTACT         0+
  1409.     CREATED         0 or 1
  1410.     DESCRIPTION     0 or 1
  1411.     DTEND           0 or 1 if present DURATION MUST NOT be present
  1412.     DTSTART         0 or 1
  1413.     DURATION        0 or 1 if present DTEND MUST NOT be present
  1414.     EXDATE          0+
  1415.     EXRULE          0+
  1416.     GEO             0 or 1
  1417.     LAST-MODIFIED   0 or 1
  1418.     LOCATION        0 or 1
  1419.     PRIORITY        0 or 1
  1420.     RDATE           0+
  1421.     RECURRENCE-ID   0 or 1  MUST be present if referring to one or
  1422.                             more or more recurring instances.
  1423.                             Otherwise it MUST NOT be present
  1424.     RELATED-TO      0+
  1425.     RESOURCES       0 or 1
  1426.     RRULE           0+
  1427.     STATUS          0 or 1  MUST be set to CANCELLED. If uninviting
  1428.                             specific "Attendees" then MUST NOT be
  1429.                             included.
  1430.     SUMMARY         0 or 1
  1431.     TRANSP          0 or 1
  1432.     URL             0 or 1
  1433.     X-PROPERTY      0+
  1434.     REQUEST-STATUS  0
  1435.  
  1436. VTIMEZONE           0+     MUST be present if any date/time refers to
  1437.                            a timezone
  1438. X-COMPONENT         0+
  1439.  
  1440. VTODO               0
  1441. VJOURNAL            0
  1442. VFREEBUSY           0
  1443. VALARM              0
  1444.  
  1445. 3.2.6 REFRESH
  1446.  
  1447.    The "REFRESH" method in a "VEVENT" calendar component is used by
  1448.    "Attendees" of an existing event to request an updated description
  1449.    from the event "Organizer". The "REFRESH" method must specify the
  1450.    "UID" property of the event to update. A recurrence instance of an
  1451.    event may be requested by specifying the "RECURRENCE-ID" property
  1452.    corresponding to the associated event. The "Organizer" responds with
  1453.    the latest description and version of the event.
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Silverberg, et. al.         Standards Track                    [Page 26]
  1459.  
  1460. RFC 2446                          iTIP                     November 1998
  1461.  
  1462.  
  1463.    This method type is an iCalendar object that conforms to the
  1464.    following property constraints:
  1465.  
  1466. Component/Property  Presence
  1467. ------------------- ----------------------------------------------
  1468. METHOD              1      MUST be "REFRESH"
  1469.  
  1470. VEVENT              1
  1471.     ATTENDEE        1      MUST be the address of requestor
  1472.     DTSTAMP         1
  1473.     ORGANIZER       1
  1474.     UID             1      MUST be the UID associated with original
  1475.                            REQUEST
  1476.     COMMENT         0 or 1
  1477.     RECURRENCE-ID   0 or 1 MUST only if referring to an instance of a
  1478.                            recurring calendar component.  Otherwise
  1479.                            it must NOT be present.
  1480.     X-PROPERTY      0+
  1481.  
  1482.     ATTACH          0
  1483.     CATEGORIES      0
  1484.     CLASS           0
  1485.     CONTACT         0
  1486.     CREATED         0
  1487.     DESCRIPTION     0
  1488.     DTEND           0
  1489.     DTSTART         0
  1490.     DURATION        0
  1491.     EXDATE          0
  1492.     EXRULE          0
  1493.     GEO             0
  1494.     LAST-MODIFIED   0
  1495.     LOCATION        0
  1496.     PRIORITY        0
  1497.     RDATE           0
  1498.     RELATED-TO      0
  1499.     REQUEST-STATUS  0
  1500.     RESOURCES       0
  1501.     RRULE           0
  1502.     SEQUENCE        0
  1503.     STATUS          0
  1504.     SUMMARY         0
  1505.     TRANSP          0
  1506.     URL             0
  1507.  
  1508. X-COMPONENT         0+
  1509.  
  1510. VTODO               0
  1511.  
  1512.  
  1513.  
  1514. Silverberg, et. al.         Standards Track                    [Page 27]
  1515.  
  1516. RFC 2446                          iTIP                     November 1998
  1517.  
  1518.  
  1519. VJOURNAL            0
  1520. VFREEBUSY           0
  1521. VTIMEZONE           0
  1522. VALARM              0
  1523.  
  1524. 3.2.7 COUNTER
  1525.  
  1526.    The "COUNTER" method for a "VEVENT" calendar component is used by an
  1527.    "Attendee" of an existing event to submit to the "Organizer" a
  1528.    counter proposal to the event description. The "Attendee" sends this
  1529.    message to the "Organizer" of the event.
  1530.  
  1531.    The counter proposal is an iCalendar object consisting of a VEVENT
  1532.    calendar component describing the complete description of the
  1533.    alternate event.
  1534.  
  1535.    The "Organizer" rejects the counter proposal by sending the
  1536.    "Attendee" a VEVENT "DECLINECOUNTER" method. The "Organizer" accepts
  1537.    the counter proposal by rescheduling the event as described in
  1538.    section 3.2.2.1 Rescheduling an Event.
  1539.  
  1540.    This method type is an iCalendar object that conforms to the
  1541.    following property constraints:
  1542.  
  1543. Component/Property  Presence
  1544. ------------------- ----------------------------------------------
  1545. METHOD              1      MUST be "COUNTER"
  1546.  
  1547. VEVENT              1
  1548.     DTSTAMP         1
  1549.     DTSTART         1
  1550.     ORGANIZER       1       MUST be the "Organizer" of the original
  1551.                             event
  1552.     SEQUENCE        1       MUST be present if value is greater than 0,
  1553.                             MAY be present if 0
  1554.     SUMMARY         1       Can be null
  1555.     UID             1       MUST be the UID associated with the REQUEST
  1556.                             being countered
  1557.  
  1558.     ATTACH          0+
  1559.     ATTENDEE        0+      Can also  be used to propose other
  1560.                             "Attendees"
  1561.     CATEGORIES      0 or 1  This property may contain a list of values
  1562.     CLASS           0 or 1
  1563.     COMMENT         0 or 1
  1564.     CONTACT         0+
  1565.     CREATED         0 or 1
  1566.     DESCRIPTION     0 or 1
  1567.  
  1568.  
  1569.  
  1570. Silverberg, et. al.         Standards Track                    [Page 28]
  1571.  
  1572. RFC 2446                          iTIP                     November 1998
  1573.  
  1574.  
  1575.     DTEND           0 or 1  if present DURATION MUST NOT be present
  1576.     DURATION        0 or 1  if present DTEND MUST NOT be present
  1577.     EXDATE          0+
  1578.     EXRULE          0+
  1579.     GEO             0 or 1
  1580.     LAST-MODIFIED   0 or 1
  1581.     LOCATION        0 or 1
  1582.     PRIORITY        0 or 1
  1583.     RDATE           0+
  1584.     RECURRENCE-ID   0 or 1  MUST only if referring to an instance of a
  1585.                             recurring calendar component.  Otherwise it
  1586.                             MUST NOT be present.
  1587.     RELATED-TO      0+
  1588.     REQUEST-STATUS  0+
  1589.     RESOURCES       0 or 1  This property may contain a list of values
  1590.     RRULE           0+
  1591.     STATUS          0 or 1  Value must be one of CONFIRMED/TENATIVE/
  1592.                             CANCELLED
  1593.     TRANSP          0 or 1
  1594.     URL             0 or 1
  1595.     X-PROPERTY      0+
  1596.  
  1597. VALARM              0+
  1598. VTIMEZONE           0+      MUST be present if any date/time refers to
  1599.                             a timezone
  1600. X-COMPONENT         0+
  1601.  
  1602. VTODO               0
  1603. VJOURNAL            0
  1604. VFREEBUSY           0
  1605.  
  1606. 3.2.8 DECLINECOUNTER
  1607.  
  1608.    The "DECLINECOUNTER" method in a "VEVENT" calendar component is used
  1609.    by the "Organizer" of an event to reject a counter proposal submitted
  1610.    by an "Attendee". The "Organizer" must send the "DECLINECOUNTER"
  1611.    message to the "Attendee" that sent the "COUNTER" method to the
  1612.    "Organizer".
  1613.  
  1614.    This method type is an iCalendar object that conforms to the
  1615.    following property constraints:
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Silverberg, et. al.         Standards Track                    [Page 29]
  1627.  
  1628. RFC 2446                          iTIP                     November 1998
  1629.  
  1630.  
  1631. Component/Property  Presence
  1632. ------------------- ----------------------------------------------
  1633. METHOD              1      MUST be "DECLINECOUNTER"
  1634.  
  1635. VEVENT              1
  1636.     DTSTAMP         1
  1637.     ORGANIZER       1
  1638.     UID             1       MUST, same UID specified in original
  1639.                             REQUEST and subsequent COUNTER
  1640.     COMMENT         0 or 1
  1641.     RECURRENCE-ID   0 or 1  MUST only if referring to an instance of a
  1642.                             recurring calendar component.  Otherwise it
  1643.                             MUST NOT be present.
  1644.     REQUEST-STATUS  0+
  1645.     SEQUENCE        0 OR 1  MUST be present if value is greater than 0,
  1646.                             MAY be present if 0
  1647.     X-PROPERTY      0+
  1648.     ATTACH          0
  1649.     ATTENDEE        0
  1650.     CATEGORIES      0
  1651.     CLASS           0
  1652.     CONTACT         0
  1653.     CREATED         0
  1654.     DESCRIPTION     0
  1655.     DTEND           0
  1656.     DTSTART         0
  1657.     DURATION        0
  1658.     EXDATE          0
  1659.     EXRULE          0
  1660.     GEO             0
  1661.     LAST-MODIFIED   0
  1662.     LOCATION        0
  1663.     PRIORITY        0
  1664.     RDATE           0
  1665.     RELATED-TO      0
  1666.     RESOURCES       0
  1667.     RRULE           0
  1668.     STATUS          0
  1669.     SUMMARY         0
  1670.     TRANSP          0
  1671.     URL             0
  1672.  
  1673. X-COMPONENT         0+
  1674. VTODO               0
  1675. VJOURNAL            0
  1676. VFREEBUSY           0
  1677. VTIMEZONE           0
  1678. VALARM              0
  1679.  
  1680.  
  1681.  
  1682. Silverberg, et. al.         Standards Track                    [Page 30]
  1683.  
  1684. RFC 2446                          iTIP                     November 1998
  1685.  
  1686.  
  1687. 3.3 Methods For VFREEBUSY Components
  1688.  
  1689.    This section defines the property set for the methods that are
  1690.    applicable to the "VFREEBUSY" calendar component. Each of the methods
  1691.    is defined using a restriction table.
  1692.  
  1693.    This document only addresses the transfer of busy time information.
  1694.    Applications desiring free time information MUST infer this from
  1695.    available busy time information.
  1696.  
  1697.    The busy time information within the iCalendar object MAY be grouped
  1698.    into more than one "VFREEBUSY" calendar component. This capability
  1699.    allows busy time periods to be grouped according to some common
  1700.    periodicity, such as a calendar week, month, or year. In this case,
  1701.    each "VFREEBUSY" calendar component MUST include the "ATTENDEE",
  1702.    "DTSTART" and "DTEND" properties in order to specify the source of
  1703.    the busy time information and the date and time interval over which
  1704.    the busy time information covers.
  1705.  
  1706.    The "FREEBUSY" property value MAY include a list of values, separated
  1707.    by the COMMA character ([US-ASCII] decimal 44). Alternately, multiple
  1708.    busy time periods MAY be specified with multiple instances of the
  1709.    "FREEBUSY" property. Both forms MUST be supported by implementations
  1710.    conforming to this document. Duplicate busy time periods SHOULD NOT
  1711.    be specified in an iCalendar object. However, two different busy time
  1712.    periods MAY overlap.
  1713.  
  1714.    "FREEBUSY" properties should be sorted such that their values are in
  1715.    ascending order, based on the start time, and then the end time, with
  1716.    the earliest periods first. For example, today's busy time
  1717.    information should appear after yesterday's busy time information.
  1718.    And the busy time for this half-hour should appear after the busy
  1719.    time for earlier today.
  1720.  
  1721.    Since events may span a day boundary, free busy time period may also
  1722.    span a day boundary. Individual "A" requests busy time from
  1723.    individuals "B", "C" and "D". Individual "B" and "C" replies with
  1724.    busy time data to individual "A". Individual "D" does not support
  1725.    busy time requests and does not reply with any data. If the transport
  1726.    binding supports exception messages, then individual "D" returns an
  1727.    "unsupported capability" message to individual "A4.34.3".
  1728.  
  1729.    The following summarizes the methods that are defined for the
  1730.    "VFREEBUSY" calendar component.
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Silverberg, et. al.         Standards Track                    [Page 31]
  1739.  
  1740. RFC 2446                          iTIP                     November 1998
  1741.  
  1742.  
  1743.    |================|==================================================|
  1744.    | Method         |  Description                                     |
  1745.    |================|==================================================|
  1746.    | PUBLISH        | Publish unsolicited busy time data.              |
  1747.    | REQUEST        | Request busy time data.                          |
  1748.    | REPLY          | Reply to a busy time request.                    |
  1749.    |================|==================================================|
  1750.  
  1751. 3.3.1 PUBLISH
  1752.  
  1753.    The "PUBLISH" method in a "VFREEBUSY" calendar component is used to
  1754.    publish busy time data. The method may be sent from one CU to any
  1755.    other.  The purpose of the method is to provide a message for sending
  1756.    unsolicited busy time data. That is, the busy time data is not being
  1757.    sent as a "REPLY" to the receipt of a "REQUEST" method.
  1758.  
  1759.    The "ATTENDEE" property must be specified in the busy time
  1760.    information.  The value is the CU address of the originator of the
  1761.    busy time information.
  1762.  
  1763.    This method type is an iCalendar object that conforms to the
  1764.    following property constraints:
  1765.  
  1766. Component/Property  Presence
  1767. ------------------- ----------------------------------------------
  1768. METHOD              1       MUST be "PUBLISH"
  1769.  
  1770. VFREEBUSY           1+
  1771.     DTSTAMP         1
  1772.     DTSTART         1       DateTime values must be in UTC
  1773.     DTEND           1       DateTime values must be in UTC
  1774.     FREEBUSY        1+      MUST be BUSYTIME. Multiple instances are
  1775.                             allowed. Multiple instances must be sorted
  1776.                             in ascending order
  1777.     ORGANIZER       1       MUST contain the address of originator of
  1778.                             busy time data.
  1779.  
  1780.     COMMENT         0 or 1
  1781.     CONTACT         0+
  1782.     X-PROPERTY      0+
  1783.     URL             0 or 1  Specifies busy time URL
  1784.  
  1785.     ATTENDEE        0
  1786.     DURATION        0
  1787.     REQUEST-STATUS  0
  1788.     UID             0
  1789.  
  1790. X-COMPONENT         0+
  1791.  
  1792.  
  1793.  
  1794. Silverberg, et. al.         Standards Track                    [Page 32]
  1795.  
  1796. RFC 2446                          iTIP                     November 1998
  1797.  
  1798.  
  1799. VEVENT              0
  1800. VTODO               0
  1801. VJOURNAL            0
  1802. VTIMEZONE           0
  1803. VALARM              0
  1804.  
  1805. 3.3.2 REQUEST
  1806.  
  1807.    The "REQUEST" method in a "VFREEBUSY" calendar component is used to
  1808.    ask a "Calendar User" for their busy time information. The request
  1809.    may be for a busy time information bounded by a specific date and
  1810.    time interval.
  1811.  
  1812.    This message only permits requests for busy time information. The
  1813.    message is sent from a "Calendar User" requesting the busy time
  1814.    information to one or more intended recipients.
  1815.  
  1816.    If the originator of the "REQUEST" method is not authorized to make a
  1817.    busy time request on the recipient's calendar system, then an
  1818.    exception message SHOULD be returned in a "REPLY" method, but no busy
  1819.    time data need be returned.
  1820.  
  1821.    This method type is an iCalendar object that conforms to the
  1822.    following property constraints:
  1823.  
  1824. Component/Property  Presence
  1825. ------------------- ----------------------------------------------
  1826. METHOD              1      MUST be "REQUEST"
  1827.  
  1828. VFREEBUSY           1
  1829.     ATTENDEE        1+     contain the address of the calendar store
  1830.     DTEND           1      DateTime values must be in UTC
  1831.     DTSTAMP         1
  1832.     DTSTART         1      DateTime values must be in UTC
  1833.     ORGANIZER       1      MUST be the request originator's address
  1834.     UID             1
  1835.     COMMENT         0 or 1
  1836.     CONTACT         0+
  1837.     X-PROPERTY      0+
  1838.  
  1839.     FREEBUSY        0
  1840.     DURATION        0
  1841.     REQUEST-STATUS  0
  1842.     URL             0
  1843.  
  1844. X-COMPONENT         0+
  1845. VALARM              0
  1846. VEVENT              0
  1847.  
  1848.  
  1849.  
  1850. Silverberg, et. al.         Standards Track                    [Page 33]
  1851.  
  1852. RFC 2446                          iTIP                     November 1998
  1853.  
  1854.  
  1855. VTODO               0
  1856. VJOURNAL            0
  1857. VTIMEZONE           0
  1858.  
  1859. 3.3.3 REPLY
  1860.  
  1861.    The "REPLY" method in a "VFREEBUSY" calendar component is used to
  1862.    respond to a busy time request. The method is sent by the recipient
  1863.    of a busy time request to the originator of the request.
  1864.  
  1865.    The "REPLY" method may also be used to respond to an unsuccessful
  1866.    "REQUEST" method. Depending on the "REQUEST-STATUS" value, no busy
  1867.    time information may be returned.
  1868.  
  1869.    This method type is an iCalendar object that conforms to the
  1870.    following property constraints:
  1871.  
  1872. Component/Property  Presence
  1873. ------------------- ----------------------------------------------
  1874. METHOD              1      MUST be "REPLY"
  1875.  
  1876. VFREEBUSY           1
  1877.     ATTENDEE        1      (address of recipient replying)
  1878.     DTSTAMP         1
  1879.     DTEND           1      DateTime values must be in UTC
  1880.     DTSTART         1      DateTime values must be in UTC
  1881.     FREEBUSY        1+      (values MUST all be of the same data
  1882.                             type. Multiple instances are allowed.
  1883.                             Multiple instances MUST be sorted in
  1884.                             ascending order. Values MAY NOT overlap)
  1885.     ORGANIZER       1       MUST be the request originator's address
  1886.     UID             1
  1887.  
  1888.     COMMENT         0 or 1
  1889.     CONTACT         0+
  1890.     REQUEST-STATUS  0+
  1891.     URL             0 or 1  (specifies busy time URL)
  1892.     X-PROPERTY      0+
  1893.     DURATION        0
  1894.     SEQUENCE        0
  1895.  
  1896. X-COMPONENT         0+
  1897. VALARM              0
  1898. VEVENT              0
  1899. VTODO               0
  1900. VJOURNAL            0
  1901. VTIMEZONE           0
  1902.  
  1903.  
  1904.  
  1905.  
  1906. Silverberg, et. al.         Standards Track                    [Page 34]
  1907.  
  1908. RFC 2446                          iTIP                     November 1998
  1909.  
  1910.  
  1911. 3.4 Methods For VTODO Components
  1912.  
  1913.    This section defines the property set for the methods that are
  1914.    applicable to the "VTODO" calendar component. Each of the methods is
  1915.    defined using a restriction table that specifies the property
  1916.    constraints that define the particular method.
  1917.  
  1918.    The following summarizes the methods that are defined for the "VTODO"
  1919.    calendar component.
  1920.  
  1921.    +================+==================================================+
  1922.    | Method         |  Description                                     |
  1923.    |================+==================================================|
  1924.    | PUBLISH        | Post notification of a VTODO. Used primarily as  |
  1925.    |                | a method of advertising the existence of a VTODO.|
  1926.    |                |                                                  |
  1927.    | REQUEST        | Assign a VTODO. This is an explicit assignment to|
  1928.    |                | one or more Calendar Users. The REQUEST method   |
  1929.    |                | is also used to update or change an existing     |
  1930.    |                | VTODO. Clients that cannot handle REQUEST MAY    |
  1931.    |                | degrade the method to treat it as a PUBLISH.     |
  1932.    |                |                                                  |
  1933.    | REPLY          | Reply to a VTODO request. Attendees MAY set      |
  1934.    |                | PARTSTAT to ACCEPTED, DECLINED, TENTATIVE,       |
  1935.    |                | DELEGATED, PARTIAL, and COMPLETED.               |
  1936.    |                |                                                  |
  1937.    | ADD            | Add one or more instances to an existing to-do.  |
  1938.    |                |                                                  |
  1939.    | CANCEL         | Cancel one or more instances of an existing      |
  1940.    |                | to-do.                                           |
  1941.    |                |                                                  |
  1942.    | REFRESH        | A request sent to a VTODO Organizer asking for   |
  1943.    |                | the latest version of a VTODO.                   |
  1944.    |                |                                                  |
  1945.    | COUNTER        | Counter a REQUEST with an alternative proposal.  |
  1946.    |                |                                                  |
  1947.    | DECLINECOUNTER | Decline a counter proposal by an Attendee.       |
  1948.    +================+==================================================+
  1949.  
  1950. 3.4.1 PUBLISH
  1951.  
  1952.    The "PUBLISH" method in a "VTODO" calendar component has no
  1953.    associated response. It is simply a posting of an iCalendar object
  1954.    that maybe added to a calendar. It MUST have an "Organizer".  It MUST
  1955.    NOT have "Attendees". Its expected usage is for encapsulating an
  1956.    arbitrary "VTODO" calendar component as an iCalendar object. The
  1957.    "Organizer" MAY subsequently update (with another "PUBLISH" method),
  1958.    add instances to (with an "ADD" method), or cancel (with a "CANCEL"
  1959.  
  1960.  
  1961.  
  1962. Silverberg, et. al.         Standards Track                    [Page 35]
  1963.  
  1964. RFC 2446                          iTIP                     November 1998
  1965.  
  1966.  
  1967.    method) a previously published "VTODO" calendar component.
  1968.  
  1969.    This method type is an iCalendar object that conforms to the
  1970.    following property constraints:
  1971.  
  1972. Component/Property  Presence
  1973. ------------------- ----------------------------------------------
  1974. METHOD               1       MUST be "PUBLISH"
  1975. VTODO                1+
  1976.     DTSTAMP          1
  1977.     DTSTART          1
  1978.     ORGANIZER        1
  1979.     PRIORITY         1
  1980.     SEQUENCE         0 or 1  MUST be present if value is greater than
  1981.                              0, MAY be present if 0
  1982.     SUMMARY          1       Can be null.
  1983.     UID              1
  1984.  
  1985.     ATTACH           0+
  1986.     CATEGORIES       0 or 1  This property may contain a list of values
  1987.     CLASS            0 or 1
  1988.     COMMENT          0 or 1
  1989.     CONTACT          0+
  1990.     CREATED          0 or 1
  1991.     DESCRIPTION      0 or 1  Can be null
  1992.     DUE              0 or 1  If present DURATION MUST NOT be present
  1993.     DURATION         0 or 1  If present DUE MUST NOT be present
  1994.     EXDATE           0+
  1995.     EXRULE           0+
  1996.     GEO              0 or 1
  1997.     LAST-MODIFIED    0 or 1
  1998.     LOCATION         0 or 1
  1999.     PERCENT-COMPLETE 0 or 1
  2000.     RDATE            0+
  2001.     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
  2002.                              recurring calendar component.  Otherwise
  2003.                              it MUST NOT be present.
  2004.  
  2005.     RELATED-TO       0+
  2006.     RESOURCES        0 or 1  This property may contain a list of values
  2007.     RRULE            0+
  2008. STATUS           0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
  2009.                              PROCESS/CANCELLED
  2010.     URL              0 or 1
  2011.     X-PROPERTY      0+
  2012.  
  2013.     ATTENDEE         0
  2014.     REQUEST-STATUS   0
  2015.  
  2016.  
  2017.  
  2018. Silverberg, et. al.         Standards Track                    [Page 36]
  2019.  
  2020. RFC 2446                          iTIP                     November 1998
  2021.  
  2022.  
  2023. VTIMEZONE            0+    MUST be present if any date/time refers to
  2024.                            a timezone
  2025. VALARM               0+
  2026. X-COMPONENT          0+
  2027.  
  2028. VFREEBUSY            0
  2029. VEVENT               0
  2030. VJOURNAL             0
  2031.  
  2032. 3.4.2 REQUEST
  2033.  
  2034.    The "REQUEST" method in a "VTODO" calendar component provides the
  2035.    following scheduling functions:
  2036.  
  2037.      .  Assign a to-do to one or more "Calendar Users";
  2038.      .  Reschedule an existing to-do;
  2039.      .  Update the details of an existing to-do, without rescheduling
  2040.         it;
  2041.      .  Update the completion status of "Attendees" of an existing
  2042.         to-do, without rescheduling it;
  2043.      .  Reconfirm an existing to-do, without rescheduling it;
  2044.      .  Delegate/reassign an existing to-do to another "Calendar User".
  2045.  
  2046.    The assigned "Calendar Users" are identified in the "VTODO" calendar
  2047.    component by individual "ATTENDEE;ROLE=REQ-PARTICIPANT" property
  2048.    value sequences.
  2049.  
  2050.    The originator of a "REQUEST" is the "Organizer" of the to-do. The
  2051.    recipient of a "REQUEST" is the "Calendar User" assigned the to-do.
  2052.    The "Attendee" uses the "REPLY" method to convey their acceptance and
  2053.    completion status to the "Organizer" of the "REQUEST".
  2054.  
  2055.    The "UID", "SEQUENCE", and "DTSTAMP" properties are used to
  2056.    distinguish the various uses of the "REQUEST" method. If the "UID"
  2057.    property value in the "REQUEST" is not found on the recipient's
  2058.    calendar, then the "REQUEST" is for a new to-do. If the "UID"
  2059.    property value is found on the recipient's calendar, then the
  2060.    "REQUEST" is a rescheduling, an update, or a reconfirm of the "VTODO"
  2061.    calendar object.
  2062.  
  2063.    If the "Organizer" of the "REQUEST" method is not authorized to make
  2064.    a to-do request on the "Attendee's" calendar system, then an
  2065.    exception is returned in the "REQUEST-STATUS" property of a
  2066.    subsequent "REPLY" method, but no scheduling action is performed.
  2067.  
  2068.    For the "REQUEST" method, multiple "VTODO" components in a single
  2069.    iCalendar object are only permitted when for components with the same
  2070.    "UID" property.  That is, a series of recurring events may have
  2071.  
  2072.  
  2073.  
  2074. Silverberg, et. al.         Standards Track                    [Page 37]
  2075.  
  2076. RFC 2446                          iTIP                     November 1998
  2077.  
  2078.  
  2079.    instance-specific information.  In this case, multiple "VTODO"
  2080.    components are needed to express the entire series.
  2081.  
  2082.    This method type is an iCalendar object that conforms to the
  2083.    following property constraints:
  2084.  
  2085. Component/Property  Presence
  2086. ------------------- ----------------------------------------------
  2087. METHOD                1       MUST be "REQUEST"
  2088. VTODO                 1+      All components must have the same UID
  2089.     ATTENDEE          1+
  2090.     DTSTAMP           1
  2091.     DTSTART           1
  2092.     ORGANIZER         1
  2093.     PRIORITY          1
  2094.     SEQUENCE          0 or 1  MUST be present if value is greater than
  2095.                               0, MAY be present if 0
  2096.     SUMMARY           1       Can be null.
  2097.     UID               1
  2098.  
  2099.     ATTACH            0+
  2100.     CATEGORIES        0 or 1   This property may contain a list of
  2101.                                values
  2102.     CLASS             0 or 1
  2103.     COMMENT           0 or 1
  2104.     CONTACT           0+
  2105.     CREATED           0 or 1
  2106.     DESCRIPTION       0 or 1  Can be null
  2107.     DUE               0 or 1  If present DURATION MUST NOT be present
  2108.     DURATION          0 or 1  If present DUE MUST NOT be present
  2109.     EXDATE            0+
  2110.     EXRULE            0+
  2111.     GEO               0 or 1
  2112.     LAST-MODIFIED     0 or 1
  2113.     LOCATION          0 or 1
  2114.     PERCENT-COMPLETE  0 or 1
  2115.     RDATE             0+
  2116.     RECURRENCE-ID     0 or 1  present if referring to an instance of a
  2117.                               recurring calendar component.  Otherwise
  2118.                               it MUST NOT be present.
  2119.     RELATED-TO        0+
  2120.     RESOURCES         0 or 1  This property may contain a list of
  2121.                               values
  2122.     RRULE             0+
  2123.     STATUS            0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
  2124.                               PROCESS
  2125.     URL               0 or 1
  2126.     X-PROPERTY        0+
  2127.  
  2128.  
  2129.  
  2130. Silverberg, et. al.         Standards Track                    [Page 38]
  2131.  
  2132. RFC 2446                          iTIP                     November 1998
  2133.  
  2134.  
  2135.     REQUEST-STATUS    0
  2136.  
  2137. VALARM                0+
  2138.  
  2139. VTIMEZONE             0+  MUST be present if any date/time refers
  2140.                           to a timezone
  2141. X-COMPONENT           0+
  2142.  
  2143. VEVENT                0
  2144. VFREEBUSY             0
  2145. VJOURNAL              0
  2146.  
  2147. 3.4.2.1 REQUEST for Rescheduling a VTODO
  2148.  
  2149.    The "REQUEST" method may be used to reschedule a "VTODO" calendar
  2150.    component.
  2151.  
  2152.    Rescheduling a "VTODO" calendar component involves a change to the
  2153.    existing "VTODO" calendar component in terms of its start or due time
  2154.    or recurrence intervals and possibly the description. If the
  2155.    recipient CUA of a "REQUEST" method finds that the "UID" property
  2156.    value already exists on the calendar, but that the "SEQUENCE"
  2157.    property value in the "REQUEST" is greater than the value for the
  2158.    existing VTODO, then the "REQUEST" method describes a rescheduling of
  2159.    the "VTODO" calendar component.
  2160.  
  2161. 3.4.2.2 REQUEST for Update or Reconfirmation of a VTODO
  2162.  
  2163.    The "REQUEST" method may be used to update or reconfirm a "VTODO"
  2164.    calendar component. Reconfirmation is merely an update of "Attendee"
  2165.    completion status or overall "VTODO" calendar component status.
  2166.  
  2167.    An update to an existing "VTODO" calendar component does not involve
  2168.    changes to the start or due time or recurrence intervals, nor
  2169.    generally to the description for the "VTODO" calendar component. If
  2170.    the recipient CUA of a "REQUEST" method finds that the "UID" property
  2171.    value already exists on the calendar and that the "SEQUENCE" property
  2172.    value in the "REQUEST" is the same as the value for the existing
  2173.    event, then the "REQUEST" method describes an update of the "VTODO"
  2174.    calendar component details, but not a rescheduling of the "VTODO"
  2175.    calendar component.
  2176.  
  2177.    The update "REQUEST" is the appropriate response to a "REFRESH"
  2178.    method sent from an "Attendee" to the "Organizer" of a "VTODO"
  2179.    calendar component.
  2180.  
  2181.    Unsolicited "REQUEST" methods MAY be sent by the "Organizer" of a
  2182.    "VTODO" calendar component. The unsolicited "REQUEST" methods are
  2183.  
  2184.  
  2185.  
  2186. Silverberg, et. al.         Standards Track                    [Page 39]
  2187.  
  2188. RFC 2446                          iTIP                     November 1998
  2189.  
  2190.  
  2191.    used to update the details of the "VTODO" (without rescheduling it or
  2192.    updating the completion status of "Attendees") or the "VTODO"
  2193.    calendar component itself (i.e., reconfirm the "VTODO").
  2194.  
  2195. 3.4.2.3 REQUEST for Delegating a VTODO
  2196.  
  2197.    The "REQUEST" method is also used to delegate or reassign ownership
  2198.    of a "VTODO" calendar component to another "Calendar User". For
  2199.    example, it may be used to delegate an "Attendee's" role (i.e.
  2200.    "chair", or "participant") for a "VTODO" calendar component. The
  2201.    "REQUEST" method is sent by one of the "Attendees" of an existing
  2202.  
  2203.    "VTODO" calendar component to some other individual. An "Attendee" of
  2204.    a "VTODO" calendar component MUST NOT delegate to the "Organizer" of
  2205.    the event.
  2206.  
  2207.    For the purposes of this description, the "Attendee" delegating the
  2208.    "VTODO" calendar component is referred to as the "Delegator". The
  2209.    "Attendee" receiving the delegation request is referred to as the
  2210.    "Delegate".
  2211.  
  2212.    The "Delegator" of a "VTODO" calendar component MUST forward the
  2213.    existing "REQUEST" method for a "VTODO" calendar component to the
  2214.    "Delegate". The "VTODO" calendar component description MUST include
  2215.    the "Delegator's" up-to-date "VTODO" calendar component definition.
  2216.    The "REQUEST" method MUST also include an "ATTENDEE" property with
  2217.    the calendar address of the "Delegate". The "Delegator" MUST also
  2218.    send a "REPLY" method back to the "Organizer" with the "Delegator's"
  2219.    "Attendee" property "partstat" parameter value set to "DELEGATED". In
  2220.    addition, the "delegated-to" parameter MUST be included with the
  2221.    calendar address of the "Delegate". A response to the delegation
  2222.    "REQUEST" is sent from the "Delegate" to the "Organizer" and
  2223.    optionally, to the "Delegator". The "REPLY" method from the
  2224.    "Delegate" SHOULD include the "ATTENDEE" property with their calendar
  2225.    address and the "delegated-from" parameter with the value of the
  2226.    "Delegator's" calendar address.
  2227.  
  2228.    The delegation "REQUEST" method MUST assign a value for the "RSVP"
  2229.    property parameter associated with the "Delegator's" "Attendee"
  2230.    property to that of the "Delegate's" "ATTENDEE" property. For example
  2231.    if the "Delegator's" "ATTENDEE" property specifies "RSVP=TRUE", then
  2232.    the "Delegate's" "ATTENDEE" property MUST specify "RSVP=TRUE".
  2233.  
  2234. 3.4.2.4 REQUEST Forwarded To An Uninvited Calendar User
  2235.  
  2236.    An "Attendee" assigned a "VTODO" calendar component may send the
  2237.    "VTODO" calendar component to another new CU, not previously
  2238.    associated with the "VTODO" calendar component. The current
  2239.  
  2240.  
  2241.  
  2242. Silverberg, et. al.         Standards Track                    [Page 40]
  2243.  
  2244. RFC 2446                          iTIP                     November 1998
  2245.  
  2246.  
  2247.    "Attendee" assigned the "VTODO" calendar component does this by
  2248.    forwarding the original "REQUEST" method to the new CU. The new CU
  2249.    can send a "REPLY" to the "Organizer" of the "VTODO" calendar
  2250.    component. The reply contains an "ATTENDEE" property for the new CU.
  2251.  
  2252.    The "Organizer" ultimately decides whether or not the new CU becomes
  2253.    part of the to-do and is not obligated to do anything with a "REPLY"
  2254.    from a new (uninvited) CU. If the "Organizer" does not want the new
  2255.    CU to be part of the to-do, the new "ATTENDEE" property is not added
  2256.    to the "VTODO" calendar component. The "Organizer" MAY send the CU a
  2257.    "CANCEL" message to indicate that they will not be added to the to-
  2258.    do. If the "Organizer" decides to add the new CU, the new "ATTENDEE"
  2259.    property is added to the "VTODO" calendar component. Furthermore, the
  2260.    "Organizer" is free to change any "ATTENDEE" property parameter from
  2261.    the values supplied by the new CU to something the "Organizer"
  2262.    considers appropriate.
  2263.  
  2264. 3.4.2.5 REQUEST Updated Attendee Status
  2265.  
  2266.    An "Organizer" of a "VTODO" may request an updated status from one or
  2267.    more "Attendees". The "Organizer" sends a "REQUEST" method to the
  2268.    "Attendee" with the "ATTENDEE;RSVP=TRUE" property sequence. The
  2269.    "SEQUENCE" property for the "VTODO" is not changed from its previous
  2270.    value. A recipient determines that the only change in the "REQUEST"
  2271.    is that their "RSVP" property parameter indicates a request for an
  2272.    updated status. The recipient SHOULD respond with a "REPLY" method
  2273.    indicating their current status with respect to the "REQUEST".
  2274.  
  2275. 3.4.3 REPLY
  2276.  
  2277.    The "REPLY" method in a "VTODO" calendar component is used to respond
  2278.    (e.g., accept or decline) to a request or to reply to a delegation
  2279.    request. It is also used by an "Attendee" to update their completion
  2280.    status. When used to provide a delegation response, the "Delegator"
  2281.    MUST include the calendar address of the "Delegate" in the
  2282.    "delegated-to" parameter of the "Delegator's" "ATTENDEE" property.
  2283.    The "Delegate" MUST include the calendar address of the "Delegator"
  2284.    on the "delegated-from" parameter of the "Delegate's" "ATTENDEE"
  2285.    property.
  2286.  
  2287.    The "REPLY" method MAY also be used to respond to an unsuccessful
  2288.    "VTODO" calendar component "REQUEST" method. Depending on the
  2289.    "REQUEST-STATUS" value, no scheduling action may have been performed.
  2290.  
  2291.    The "Organizer" of a "VTODO" calendar component MAY receive a "REPLY"
  2292.    method from a "Calendar User" not in the original "REQUEST". For
  2293.    example, a "REPLY" method MAY be received from a "Delegate" of a
  2294.    "VTODO" calendar component. In addition, the "REPLY" method MAY be
  2295.  
  2296.  
  2297.  
  2298. Silverberg, et. al.         Standards Track                    [Page 41]
  2299.  
  2300. RFC 2446                          iTIP                     November 1998
  2301.  
  2302.  
  2303.    received from an unknown "Calendar User", having been forwarded the
  2304.    "REQUEST" by an original "Attendee" of the "VTODO" calendar
  2305.    component. This uninvited "Attendee" MAY be accepted, or the
  2306.    "Organizer" MAY cancel the "VTODO" calendar component for the
  2307.    uninvited "Attendee" by sending them a "CANCEL" method.
  2308.  
  2309.    This method type is an iCalendar object that conforms to the
  2310.    following property constraints:
  2311.  
  2312. Component/Property   Presence
  2313. -------------------  ---------------------------------------------
  2314. METHOD               1      MUST be "REPLY"
  2315. VTODO                1+     All component MUST have the same UID
  2316.     ATTENDEE         1+
  2317.     DTSTAMP          1
  2318.     ORGANIZER        1
  2319.     REQUEST-STATUS   1+
  2320.     UID              1      MUST must be the address of the replying
  2321.                             attendee
  2322.  
  2323.     ATTACH           0+
  2324.     CATEGORIES       0 or 1 This property may contain a list of values
  2325.     CLASS            0 or 1
  2326.     COMMENT          0 or 1
  2327.     CONTACT          0+
  2328.     CREATED          0 or 1
  2329.     DESCRIPTION      0 or 1
  2330.     DTSTART          0 or 1
  2331.     DUE              0 or 1  If present DURATION MUST NOT be present
  2332.     DURATION         0 or 1  If present DUE MUST NOT be present
  2333.     EXDATE           0+
  2334.     EXRULE           0+
  2335.     GEO              0 or 1
  2336.     LAST-MODIFIED    0 or 1
  2337.     LOCATION         0 or 1
  2338.     PERCENT-COMPLETE 0 or 1
  2339.     PRIORITY         0 or 1
  2340.     RDATE            0+
  2341.     RELATED-TO       0+
  2342.     RESOURCES        0 or 1  This property may contain a list of values
  2343.     RRULE            0+
  2344.     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
  2345.                              Recurring calendar component. Otherwise it
  2346.                              MUST NOT be present
  2347.     SEQUENCE         0 or 1  MUST be the sequence number of
  2348.                              the original REQUEST if greater than 0.
  2349.                              MAY be present if 0.
  2350.     STATUS           0 or 1
  2351.  
  2352.  
  2353.  
  2354. Silverberg, et. al.         Standards Track                    [Page 42]
  2355.  
  2356. RFC 2446                          iTIP                     November 1998
  2357.  
  2358.  
  2359.     SUMMARY          0 or 1  Can be null
  2360.     URL              0 or 1
  2361.     X-PROPERTY       0+
  2362.  
  2363. VTIMEZONE            0 or 1  MUST be present if any date/time refers to
  2364.                              a timezone
  2365. X-COMPONENT          0+
  2366.  
  2367. VALARM               0
  2368. VEVENT               0
  2369. VFREEBUSY            0
  2370.  
  2371. 3.4.4 ADD
  2372.  
  2373.    The "ADD" method in a "VTODO" calendar component is used to add one
  2374.    or more instances to an existing to-do.
  2375.  
  2376.    If the "UID" property value in the "ADD" is not found on the
  2377.    recipient's calendar, then the recipient SHOULD send a "REFRESH" to
  2378.    the "Organizer" in order to be updated with the latest version of the
  2379.    "VTODO". If an "Attendee" implementation does not support the "ADD"
  2380.    method it should respond with a "REQUEST-STATUS" value of 5.3 and ask
  2381.    for a "REFRESH".
  2382.  
  2383.    The "SEQUENCE" property value is incremented as the sequence of to-
  2384.    dos has changed.
  2385.  
  2386.    This method type is an iCalendar object that conforms to the
  2387.    following property constraints:
  2388.  
  2389. Component/Property  Presence
  2390. ------------------- ----------------------------------------------
  2391. METHOD                1       MUST be "ADD"
  2392. VTODO                 1
  2393.     DTSTAMP           1
  2394.     ORGANIZER         1
  2395.     PRIORITY          1
  2396.     SEQUENCE          1       MUST be greater than 0
  2397.     SUMMARY           1       Can be null.
  2398.     UID               1       MUST match that of the original to-do
  2399.  
  2400.     ATTACH            0+
  2401.     ATTENDEE          0+
  2402.     CATEGORIES        0 or 1  This property may contain a list of
  2403.                               values
  2404.     CLASS             0 or 1
  2405.     COMMENT           0 or 1
  2406.     CONTACT           0+
  2407.  
  2408.  
  2409.  
  2410. Silverberg, et. al.         Standards Track                    [Page 43]
  2411.  
  2412. RFC 2446                          iTIP                     November 1998
  2413.  
  2414.  
  2415.     CREATED           0 or 1
  2416.     DESCRIPTION       0 or 1  Can be null
  2417.     DTSTART           0 or 1
  2418.     DUE               0 or 1  If present DURATION MUST NOT be present
  2419.     DURATION          0 or 1  If present DUE MUST NOT be present
  2420.     EXDATE            0+
  2421.     EXRULE            0+
  2422.     GEO               0 or 1
  2423.     LAST-MODIFIED     0 or 1
  2424.     LOCATION          0 or 1
  2425.     PERCENT-COMPLETE  0 or 1
  2426.     RDATE             0+
  2427.     RELATED-TO        0+
  2428.     RESOURCES         0 or 1  This property may contain a list of
  2429.                               values
  2430.     RRULE             0+
  2431.     STATUS            0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
  2432.                               PROCESS
  2433.     URL               0 or 1
  2434.     X-PROPERTY        0+
  2435.  
  2436.     RECURRENCE-ID     0
  2437.     REQUEST-STATUS    0
  2438.  
  2439. VALARM                0+
  2440. VTIMEZONE             0+      MUST be present if any date/time refers
  2441.                               to a timezone
  2442. X-COMPONENT           0+
  2443.  
  2444. VEVENT                0
  2445. VJOURNAL              0
  2446. VFREEBUSY             0
  2447.  
  2448. 3.4.5 CANCEL
  2449.  
  2450.    The "CANCEL" method in a "VTODO" calendar component is used to send a
  2451.    cancellation notice of an existing "VTODO" calendar request to the
  2452.    "Attendees". The message is sent by the "Organizer" of a "VTODO"
  2453.    calendar component to the "Attendees" of the "VTODO" calendar
  2454.    component.  For a recurring "VTODO" calendar component, either the
  2455.    whole "VTODO" calendar component or instances of a "VTODO" calendar
  2456.    component may be cancelled. To cancel the complete range of a
  2457.    recurring "VTODO" calendar component, the "UID" property value for
  2458.    the "VTODO" calendar component MUST be specified and a "RECURRENCE-
  2459.    ID" MUST NOT be specified in the "CANCEL" method. In order to cancel
  2460.    an individual instance of a recurring "VTODO" calendar component, the
  2461.    "RECURRENCE-ID" property value for the "VTODO" calendar component
  2462.    MUST be specified in the "CANCEL" method.
  2463.  
  2464.  
  2465.  
  2466. Silverberg, et. al.         Standards Track                    [Page 44]
  2467.  
  2468. RFC 2446                          iTIP                     November 1998
  2469.  
  2470.  
  2471.    There are two options for canceling a sequence of instances of a
  2472.    recurring "VTODO" calendar component:
  2473.  
  2474.    (a) the "RECURRENCE-ID" property for an instance in the sequence MUST
  2475.        be specified with the "RANGE" property parameter value of
  2476.        THISANDPRIOR (or THISANDFUTURE)  to indicate cancellation of the
  2477.        specified "VTODO" calendar component and all instances before (or
  2478.        after); or
  2479.  
  2480.    (b) individual recurrence instances may be cancelled by specifying
  2481.        multiple "RECURRENCE-ID" properties corresponding to the
  2482.        instances to be cancelled.
  2483.  
  2484.    When a "VTODO" is cancelled, the "SEQUENCE" property value MUST be
  2485.    incremented.
  2486.  
  2487.    This method type is an iCalendar object that conforms to the
  2488.    following property constraints:
  2489.  
  2490. Component/Property   Presence
  2491. -------------------  ---------------------------------------------
  2492. METHOD               1     MUST be "CANCEL"
  2493. VTODO                1
  2494.     ATTENDEE         0+    include all "Attendees" being removed from
  2495.                            the todo. MUST include all "Attendees" if
  2496.                            the entire todo is cancelled.
  2497.     UID              1     MUST echo original UID
  2498.     DTSTAMP          1
  2499.     ORGANIZER        1
  2500.     SEQUENCE         1
  2501.  
  2502.     ATTACH           0+
  2503.     CATEGORIES       0 or 1 This property MAY contain a list of values
  2504.     CLASS            0 or 1
  2505.     COMMENT          0 or 1
  2506.     CONTACT          0+
  2507.     CREATED          0 or 1
  2508.     DESCRIPTION      0 or 1
  2509.     DTSTART          0 or 1
  2510.     DUE              0 or 1  If present DURATION MUST NOT be present
  2511.     DURATION         0 or 1  If present DUE MUST NOT be present
  2512.     EXDATE           0+
  2513.     EXRULE           0+
  2514.     GEO              0 or 1
  2515.     LAST-MODIFIED    0 or 1
  2516.     LOCATION         0 or 1
  2517.     PERCENT-COMPLETE 0 or 1
  2518.     RDATE            0+
  2519.  
  2520.  
  2521.  
  2522. Silverberg, et. al.         Standards Track                    [Page 45]
  2523.  
  2524. RFC 2446                          iTIP                     November 1998
  2525.  
  2526.  
  2527.     RECURRENCE-ID    0 or 1 MUST only if referring to one or more
  2528.                             instances of a recurring calendar
  2529.                             component. Otherwise it MUST NOT be
  2530.                             present.
  2531.     RELATED-TO       0+
  2532.     RESOURCES        0 or 1 This property MAY contain a list of values
  2533.     RRULE            0+
  2534.     PRIORITY         0 or 1
  2535.     STATUS           0 or 1  If present it MUST be set to "CANCELLED".
  2536.                              MUST NOT be used if purpose is to remove
  2537.                              "ATTENDEES" rather than cancel the entire
  2538.                              VTODO.
  2539.     URL              0 or 1
  2540.     X-PROPERTY       0+
  2541.  
  2542.     REQUEST-STATUS   0
  2543.  
  2544. VTIMEZONE            0 or 1  MUST be present if any date/time refers to
  2545.                              a timezone
  2546. X-COMPONENT          0+
  2547.  
  2548. VALARM               0
  2549. VEVENT               0
  2550. VFREEBUSY            0
  2551.  
  2552. 3.4.6 REFRESH
  2553.  
  2554.    The "REFRESH" method in a "VTODO" calendar component is used by
  2555.    "Attendees" of an existing "VTODO" calendar component to request an
  2556.    updated description from the "Organizer" of the "VTODO" calendar
  2557.    component. The "Organizer" of the "VTODO" calendar component MAY use
  2558.    this method to request an updated status from the "Attendees". The
  2559.    "REFRESH" method MUST specify the "UID" property corresponding to the
  2560.    "VTODO" calendar component needing update.
  2561.  
  2562.    A refresh of a recurrence instance of a "VTODO" calendar component
  2563.    may be requested by specifying the "RECURRENCE-ID" property
  2564.    corresponding to the associated "VTODO" calendar component. The
  2565.    "Organizer" responds with the latest description and rendition of the
  2566.    "VTODO" calendar component.  In most cases this will be a REQUEST
  2567.    unless the "VTODO" has been cancelled, in which case the ORGANIZER
  2568.    MUST send a "CANCEL". This method is intended to facilitate machine
  2569.    processing of requests for updates to a "VTODO" calendar component.
  2570.  
  2571.    This method type is an iCalendar object that conforms to the
  2572.    following property constraints:
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. Silverberg, et. al.         Standards Track                    [Page 46]
  2579.  
  2580. RFC 2446                          iTIP                     November 1998
  2581.  
  2582.  
  2583. Component/Property   Presence
  2584. -------------------  ---------------------------------------------
  2585. METHOD               1      MUST be "REFRESH"
  2586. VTODO                1
  2587.     ATTENDEE         1
  2588.     DTSTAMP          1
  2589.     UID              1       MUST echo original UID
  2590.  
  2591.     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
  2592.                              Recurring calendar component. Otherwise it
  2593.                              MUST NOT be present
  2594.     X-PROPERTY       0+
  2595.  
  2596.     ATTACH           0
  2597.     CATEGORIES       0
  2598.     CLASS            0
  2599.     COMMENT          0
  2600.     CONTACT          0
  2601.     CREATED          0
  2602.     DESCRIPTION      0
  2603.     DTSTART          0
  2604.     DUE              0
  2605.     DURATION         0
  2606.     EXDATE           0
  2607.     EXRULE           0
  2608.     GEO              0
  2609.     LAST-MODIFIED    0
  2610.     LOCATION         0
  2611.     ORGANIZER        0
  2612.     PERCENT-COMPLETE 0
  2613.     PRIORITY         0
  2614.     RDATE            0
  2615.     RELATED-TO       0
  2616.     REQUEST-STATUS   0
  2617.     RESOURCES        0
  2618.     RRULE            0
  2619.     SEQUENCE         0
  2620.     STATUS           0
  2621.     URL              0
  2622.  
  2623. X-COMPONENT          0+
  2624.  
  2625. VALARM               0
  2626. VEVENT               0
  2627. VFREEBUSY            0
  2628. VTIMEZONE            0
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634. Silverberg, et. al.         Standards Track                    [Page 47]
  2635.  
  2636. RFC 2446                          iTIP                     November 1998
  2637.  
  2638.  
  2639. 3.4.7 COUNTER
  2640.  
  2641.    The "COUNTER" method in a "VTODO" calendar component is used by an
  2642.    "Attendee" of an existing "VTODO" calendar component to submit to the
  2643.    "Organizer" a counter proposal for the "VTODO" calendar component.
  2644.    The "Attendee" sends the message to the "Organizer" of the "VTODO"
  2645.    calendar component.
  2646.  
  2647.    The counter proposal is an iCalendar object consisting of a "VTODO"
  2648.    calendar component describing the complete description of the
  2649.    alternate "VTODO" calendar component.
  2650.  
  2651.    The "Organizer" rejects the counter proposal by sending the
  2652.    "Attendee" a "DECLINECOUNTER" method. The "Organizer" accepts the
  2653.    counter proposal by sending all of the "Attendees" of the "VTODO"
  2654.    calendar component a "REQUEST" method rescheduling the "VTODO"
  2655.    calendar component. In the latter case, the "Organizer" SHOULD reset
  2656.    the individual "RSVP" property parameter values to TRUE on each
  2657.    "ATTENDEE" property; in order to force a response by the "Attendees".
  2658.  
  2659.    This method type is an iCalendar object that conforms to the
  2660.    following property constraints:
  2661.  
  2662. Component/Property  Presence
  2663. ------------------- ----------------------------------------------
  2664. METHOD               1      MUST be "COUNTER"
  2665. VTODO                1
  2666.     ATTENDEE         1+
  2667.     DTSTAMP          1
  2668.     ORGANIZER        1
  2669.     PRIORITY         1
  2670.     SUMMARY          1      Can be null
  2671.     UID              1
  2672.  
  2673.     ATTACH           0+
  2674.     CATEGORIES       0 or 1 This property MAY contain a list of values
  2675.     CLASS            0 or 1
  2676.     COMMENT          0 or 1
  2677.     CONTACT          0+
  2678.     CREATED          0 or 1
  2679.     DESCRIPTION      0 or 1 Can be null
  2680.     DTSTART          0 or 1
  2681.     DUE              0 or 1  If present DURATION MUST NOT be present
  2682.     DURATION         0 or 1  If present DUE MUST NOT be present
  2683.     EXDATE           0+
  2684.     EXRULE           0+
  2685.     GEO              0 or 1
  2686.     LAST-MODIFIED    0 or 1
  2687.  
  2688.  
  2689.  
  2690. Silverberg, et. al.         Standards Track                    [Page 48]
  2691.  
  2692. RFC 2446                          iTIP                     November 1998
  2693.  
  2694.  
  2695.     LOCATION         0 or 1
  2696.     PERCENT-COMPLETE 0 or 1
  2697.     RDATE            0+
  2698.     RECURRENCE-ID    0 or 1 MUST only 3.5if referring to an instance of a
  2699.                             recurring calendar component.  Otherwise it
  2700.                             MUST NOT be present.
  2701.     RELATED-TO       0+
  2702.     REQUEST-STATUS   0+
  2703.     RESOURCES        0 or 1 This property MAY contain a list of values
  2704.     RRULE            0 or 1
  2705.     SEQUENCE         0 or 1 MUST echo the original SEQUENCE number.
  2706.                             MUST be present if non-zero. MAY be present
  2707.                             if zero.
  2708.     STATUS           0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-
  2709.                             PROCESS/CANCELLED
  2710.     URL              0 or 1
  2711.     X-PROPERTY       0+
  2712.  
  2713.  
  2714. VALARM               0+
  2715. VTIMEZONE            0 or 1  MUST be present if any date/time refers to
  2716.                              a timezone
  2717. X-COMPONENT          0+
  2718.  
  2719. VEVENT               0
  2720. VFREEBUSY            0
  2721.  
  2722. 3.4.8 DECLINECOUNTER
  2723.  
  2724.    The "DECLINECOUNTER" method in a "VTODO" calendar component is used
  2725.    by an "Organizer" of "VTODO" calendar component to reject a counter
  2726.    proposal offered by one of the "Attendees". The "Organizer" sends the
  2727.    message to the "Attendee" that sent the "COUNTER" method to the
  2728.    "Organizer".
  2729.  
  2730.    This method type is an iCalendar object that conforms to the
  2731.    following property constraints:
  2732.  
  2733. Component/Property   Presence
  2734. -------------------  ---------------------------------------------
  2735. METHOD               1       MUST be "DECLINECOUNTER"
  2736.  
  2737. VTODO                1
  2738.     ATTENDEE         1+      MUST for all attendees
  2739.     DTSTAMP          1
  2740.     ORGANIZER        1
  2741.     SEQUENCE         1       MUST echo the original SEQUENCE number
  2742.     UID              1       MUST echo original UID
  2743.  
  2744.  
  2745.  
  2746. Silverberg, et. al.         Standards Track                    [Page 49]
  2747.  
  2748. RFC 2446                          iTIP                     November 1998
  2749.  
  2750.  
  2751.     ATTACH           0+
  2752.     CATEGORIES       0 or 1  This property may contain a list of values
  2753.     CLASS            0 or 1
  2754.     COMMENT          0 or 1
  2755.     CONTACT          0+
  2756.     CREATED          0 or 1
  2757.     DESCRIPTION      0 or 1
  2758.     DTSTART          0 or 1
  2759.     DUE              0 or 1  If present DURATION MUST NOT be present
  2760.     DURATION         0 or 1  If present DUE MUST NOT be present
  2761.     EXDATE           0+
  2762.     EXRULE           0+
  2763.     GEO              0 or 1
  2764.     LAST-MODIFIED    0 or 1
  2765.     LOCATION         0 or 1
  2766.     PERCENT-COMPLETE 0 or 1
  2767.     PRIORITY         0 or 1
  2768.     RDATE            0+
  2769.     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
  2770.                              recurring calendar component.  Otherwise
  2771.                              it MUST NOT be present.
  2772.     RELATED-TO       0+
  2773.     REQUEST-STATUS   0+
  2774.     RESOURCES        0 or 1  This property MAY contain a list of values
  2775.     RRULE            0+
  2776.     STATUS           0 or 1  MAY be one of COMPLETED/NEEDS ACTION/IN-
  2777.                              PROCESS
  2778.     URL              0 or 1
  2779.     X-PROPERTY       0+
  2780.  
  2781. VTIMEZONE            0+  MUST be present if any date/time refers to
  2782.                          a timezone
  2783. X-COMPONENT          0+
  2784.  
  2785. VALARM               0
  2786. VEVENT               0
  2787. VFREEBUSY            0
  2788.  
  2789. 3.5 Methods For VJOURNAL Components
  2790.  
  2791.    This section defines the property set for the methods that are
  2792.    applicable to the "VJOURNAL" calendar component.
  2793.  
  2794.    The following summarizes the methods that are defined for the
  2795.    "VJOURNAL" calendar component.
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802. Silverberg, et. al.         Standards Track                    [Page 50]
  2803.  
  2804. RFC 2446                          iTIP                     November 1998
  2805.  
  2806.  
  2807.    +================+==================================================+
  2808.    | Method         |  Description                                     |
  2809.    |================+==================================================|
  2810.    | PUBLISH        | Post a journal entry. Used primarily as a method |
  2811.    |                | of advertising the existence of a journal entry. |
  2812.    |                |                                                  |
  2813.    | ADD            | Add one or more instances to an existing journal |
  2814.    |                | entry.                                           |
  2815.    |                |                                                  |
  2816.    | CANCEL         | Cancel one or more instances of an existing      |
  2817.    |                | journal entry.                                   |
  2818.    +================+==================================================+
  2819.  
  2820. 3.5.1 PUBLISH
  2821.  
  2822.    The "PUBLISH" method in a "VJOURNAL" calendar component has no
  2823.    associated response. It is simply a posting of an iCalendar object
  2824.    that may be added to a calendar. It MUST have an "Organizer". It MUST
  2825.    NOT have "Attendees". The expected usage is for encapsulating an
  2826.  
  2827.    arbitrary journal entry as an iCalendar object. The "Organizer" MAY
  2828.    subsequently update (with another "PUBLISH" method) or cancel (with a
  2829.    "CANCEL" method) a previously published journal entry.
  2830.  
  2831.    This method type is an iCalendar object that conforms to the
  2832.    following property constraints:
  2833.  
  2834. Component/Property  Presence
  2835. ------------------- ----------------------------------------------
  2836. METHOD               1       MUST be "PUBLISH"
  2837. VJOURNAL             1+
  2838.     DESCRIPTION      1       Can be null.
  2839.     DTSTAMP          1
  2840.     DTSTART          1
  2841.     ORGANIZER        1
  2842.     UID              1
  2843.  
  2844.     ATTACH           0+
  2845.     CATEGORIES       0 or 1  This property MAY contain a list of values
  2846.     CLASS            0 or 1
  2847.     COMMENT          0 or 1
  2848.     CONTACT          0+
  2849.     CREATED          0 or 1
  2850.     EXDATE           0+
  2851.     EXRULE           0+
  2852.     LAST-MODIFIED    0 or 1
  2853.     RDATE            0+
  2854.     RECURRENCE-ID    0 or 1  MUST only if referring to an instance of a
  2855.  
  2856.  
  2857.  
  2858. Silverberg, et. al.         Standards Track                    [Page 51]
  2859.  
  2860. RFC 2446                          iTIP                     November 1998
  2861.  
  2862.  
  2863.                              recurring calendar component.  Otherwise
  2864.                              it MUST NOT be present.
  2865.     RELATED-TO       0+
  2866.     RRULE            0+
  2867.     SEQUENCE         0 or 1  MUST echo the original SEQUENCE number.
  2868.                              MUST be present if non-zero. MAY be
  2869.                              present if zero.
  2870.     STATUS           0 or 1  MAY be one of DRAFT/FINAL/CANCELLED
  2871.     SUMMARY          0 or 1  Can be null
  2872.     URL              0 or 1
  2873.     X-PROPERTY       0+
  2874.  
  2875.     ATTENDEE         0
  2876.  
  2877. VALARM               0+
  2878. VTIMEZONE            0+      MUST be present if any date/time refers to
  2879.                              a timezone
  2880. X-COMPONENT          0+
  2881.  
  2882. VEVENT               0
  2883. VFREEBUSY            0
  2884. VTODO                0
  2885.  
  2886. 3.5.2 ADD
  2887.  
  2888.    The "ADD" method in a "VJOURNAL" calendar component is used to add
  2889.    one or more instances to an existing "VJOURNAL" entry. There is no
  2890.    response to the "Organizer".
  2891.  
  2892.    If the "UID" property value in the "ADD" is not found on the
  2893.    recipient's calendar, then the recipient MAY treat the "ADD" as a
  2894.    "PUBLISH".
  2895.  
  2896.    This method type is an iCalendar object that conforms to the
  2897.    following property constraints:
  2898.  
  2899. Component/Property  Presence
  2900. ------------------- ----------------------------------------------
  2901. METHOD               1      MUST be "ADD"
  2902. VJOURNAL             1
  2903.     DESCRIPTION      1      Can be null.
  2904.     DTSTAMP          1
  2905.     DTSTART          1
  2906.     ORGANIZER        1
  2907.     SEQUENCE         1      MUST be greater than 0
  2908.     UID              1      MUST match that of the original journal
  2909.  
  2910.     ATTACH           0+
  2911.  
  2912.  
  2913.  
  2914. Silverberg, et. al.         Standards Track                    [Page 52]
  2915.  
  2916. RFC 2446                          iTIP                     November 1998
  2917.  
  2918.  
  2919.     CATEGORIES       0 or 1 This property MAY contain a list of values
  2920.     CLASS            0 or 1
  2921.     COMMENT          0 or 1
  2922.     CONTACT          0+
  2923.     CREATED          0 or 1
  2924.     EXDATE           0+
  2925.     EXRULE           0+
  2926.     LAST-MODIFIED    0 or 1
  2927.     RDATE            0+
  2928.     RELATED-TO       0+
  2929.     RRULE            0+
  2930.     STATUS           0 or 1  MAY be one of DRAFT/FINAL/CANCELLED
  2931.     SUMMARY          0 or 1  Can be null
  2932.     URL              0 or 1
  2933.     X-PROPERTY       0+
  2934.  
  2935.     ATTENDEE         0
  2936.     RECURRENCE-ID    0
  2937.  
  2938. VALARM               0+
  2939. VTIMEZONE            0 or 1 MUST be present if any date/time refers to
  2940.                             a timezone
  2941. X-COMPONENT          0+
  2942.  
  2943. VEVENT               0
  2944. VFREEBUSY            0
  2945. VTODO                0
  2946.  
  2947. 3.5.3 CANCEL
  2948.  
  2949.    The "CANCEL" method in a "VJOURNAL" calendar component is used to
  2950.    send a cancellation notice of an existing journal entry. The message
  2951.    is sent by the "Organizer" of a journal entry. For a recurring
  2952.    journal entry, either the whole journal entry or instances of a
  2953.    journal entry may be cancelled. To cancel the complete range of a
  2954.    recurring journal entry, the "UID" property value for the journal
  2955.    entry MUST be specified and a "RECURRENCE-ID" property MUST NOT be
  2956.    specified in the "CANCEL" method.  In order to cancel an individual
  2957.    instance of the journal entry, the "RECURRENCE-ID" property value for
  2958.    the journal entry MUST be specified in the "CANCEL" method.
  2959.  
  2960.    There are two options for canceling a sequence of instances of a
  2961.    recurring "VJOURNAL" calendar component:
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970. Silverberg, et. al.         Standards Track                    [Page 53]
  2971.  
  2972. RFC 2446                          iTIP                     November 1998
  2973.  
  2974.  
  2975.    (a) the "RECURRENCE-ID" property for an instance in the sequence MUST
  2976.        be specified with the "RANGE" property parameter value of
  2977.        THISANDPRIOR (or THISANDFUTURE)  to indicate cancellation of the
  2978.        specified "VTODO" calendar component and all instances before (or
  2979.        after); or
  2980.  
  2981.    (b) individual recurrence instances may be cancelled by specifying
  2982.        multiple "RECURRENCE-ID" properties corresponding to the
  2983.        instances to be cancelled.
  2984.  
  2985.    When a "VJOURNAL" is cancelled, the "SEQUENCE" property value MUST be
  2986.    incremented.
  2987.  
  2988.    This method type is an iCalendar object that conforms to the
  2989.    following property constraints:
  2990.  
  2991. Component/Property   Presence
  2992. -------------------  ---------------------------------------------
  2993. METHOD               1       MUST be "CANCEL"
  2994. VJOURNAL             1+      All MUST have the same UID
  2995.     DTSTAMP          1
  2996.     ORGANIZER        1
  2997.     SEQUENCE         1
  2998.     UID              1       MUST be the UID of the original REQUEST
  2999.  
  3000.     ATTACH           0+
  3001.     ATTENDEE         0+
  3002.     CATEGORIES       0 or 1  This property MAY contain a list of values
  3003.     CLASS            0 or 1
  3004.     COMMENT          0 or 1
  3005.     CONTACT          0+
  3006.     CREATED          0 or 1
  3007.     DESCRIPTION      0 or 1
  3008.     DTSTART          0 or 1
  3009.     EXDATE           0+
  3010.     EXRULE           0+
  3011.     LAST-MODIFIED    0 or 1
  3012.     RDATE            0+
  3013.     RECURRENCE-ID    0 or 1  only if referring to an instance of a
  3014.                              recurring calendar component.  Otherwise
  3015.                              it MUST NOT be present.
  3016.     RELATED-TO       0+
  3017.     RRULE            0+
  3018.     STATUS           0 or 1  MAY be present, must be "CANCELLED" if
  3019.                              present
  3020.     SUMMARY          0 or 1
  3021.     URL              0 or 1
  3022.     X-PROPERTY       0+
  3023.  
  3024.  
  3025.  
  3026. Silverberg, et. al.         Standards Track                    [Page 54]
  3027.  
  3028. RFC 2446                          iTIP                     November 1998
  3029.  
  3030.  
  3031.     REQUEST-STATUS   0
  3032.  
  3033. VTIMEZONE            0+      MUST be present if any date/time refers to
  3034.                              a timezone
  3035. X-COMPONENT          0+
  3036. VALARM               0
  3037. VEVENT               0
  3038. VFREEBUSY            0
  3039. VTODO                0
  3040.  
  3041. 3.6 Status Replies
  3042.  
  3043.    The "REQUEST-STATUS" property may include the following values:
  3044.  
  3045. |==============+============================+=========================|
  3046. | Short Return | Longer Return Status       | Offending Data          |
  3047. | Status Code  | Description                |                         |
  3048. |==============+============================+=========================|
  3049. | 2.0          | Success.                   | None.                   |
  3050. |==============+============================+=========================|
  3051. | 2.1          | Success but fallback taken | Property name and value |
  3052. |              | on one or more property    | MAY be specified.       |
  3053. |              | values.                    |                         |
  3054. |==============+============================+=========================|
  3055. | 2.2          | Success, invalid property  | Property name MAY be    |
  3056. |              | ignored.                   | specified.              |
  3057. |==============+============================+=========================|
  3058. | 2.3          | Success, invalid property  | Property parameter name |
  3059. |              | parameter ignored.         | and value MAY be        |
  3060. |              |                            | specified.              |
  3061. |==============+============================+=========================|
  3062. | 2.4          | Success, unknown non-      | Non-standard property   |
  3063. |              | standard property ignored. | name MAY be specified.  |
  3064. |==============+============================+=========================|
  3065. | 2.5          | Success, unknown non       | Property and non-       |
  3066. |              | standard property value    | standard value MAY be   |
  3067. |              | ignored.                   | specified.              |
  3068. |==============+============================+=========================|
  3069. | 2.6          | Success, invalid calendar  | Calendar component      |
  3070. |              | component ignored.         | sentinel (e.g., BEGIN:  |
  3071. |              |                            | ALARM) MAY be           |
  3072. |              |                            | specified.              |
  3073. |==============+============================+=========================|
  3074. | 2.7          | Success, request forwarded | Original and forwarded  |
  3075. |              | to Calendar User.          | caluser addresses MAY   |
  3076. |              |                            | be specified.           |
  3077. |==============+============================+=========================|
  3078. | 2.8          | Success, repeating event   | RRULE or RDATE property |
  3079.  
  3080.  
  3081.  
  3082. Silverberg, et. al.         Standards Track                    [Page 55]
  3083.  
  3084. RFC 2446                          iTIP                     November 1998
  3085.  
  3086.  
  3087. |              | ignored. Scheduled as a    | name and value MAY be   |
  3088. |              | single component.          | specified.              |
  3089. |==============+============================+=========================|
  3090. | 2.9          | Success, truncated end date| DTEND property value    |
  3091. |              | time to date boundary.     | MAY be specified.       |
  3092. |==============+============================+=========================|
  3093. | 2.10         | Success, repeating VTODO   | RRULE or RDATE property |
  3094. |              | ignored. Scheduled as a    | name and value MAY be   |
  3095. |              | single VTODO.              | specified.              |
  3096. |==============+============================+=========================|
  3097. | 2.11         | Success, unbounded RRULE   | RRULE property name and |
  3098. |              | clipped at some finite     | value MAY be specified. |
  3099. |              | number of instances        | Number of instances MAY |
  3100. |              |                            | also be specified.      |
  3101. |==============+============================+=========================|
  3102. | 3.0          | Invalid property name.     | Property name MAY be    |
  3103. |              |                            | specified.              |
  3104. |==============+============================+=========================|
  3105. | 3.1          | Invalid property value.    | Property name and value |
  3106. |              |                            | MAY be specified.       |
  3107. |==============+============================+=========================|
  3108. | 3.2          | Invalid property parameter.| Property parameter name |
  3109. |              |                            | and value MAY be        |
  3110. |              |                            | specified.              |
  3111. |==============+============================+=========================|
  3112. | 3.3          | Invalid property parameter | Property parameter name |
  3113. |              | value.                     | and value MAY be        |
  3114. |              |                            | specified.              |
  3115. |==============+============================+=========================|
  3116. | 3.4          | Invalid calendar component | Calendar component      |
  3117. |              | sequence.                  | sentinel MAY be         |
  3118. |              |                            | specified (e.g., BEGIN: |
  3119. |              |                            | VTIMEZONE).             |
  3120. |==============+============================+=========================|
  3121. | 3.5          | Invalid date or time.      | Date/time value(s) MAY  |
  3122. |              |                            | be specified.           |
  3123. |==============+============================+=========================|
  3124. | 3.6          | Invalid rule.              | Rule value MAY be       |
  3125. |              |                            | specified.              |
  3126. |==============+============================+=========================|
  3127. | 3.7          | Invalid Calendar User.     | Attendee property value |
  3128. |              |                            |MAY be specified.        |
  3129. |==============+============================+=========================|
  3130. | 3.8          | No authority.              | METHOD and Attendee     |
  3131. |              |                            | property values MAY be  |
  3132. |              |                            | specified.              |
  3133. |==============+============================+=========================|
  3134.  
  3135.  
  3136.  
  3137.  
  3138. Silverberg, et. al.         Standards Track                    [Page 56]
  3139.  
  3140. RFC 2446                          iTIP                     November 1998
  3141.  
  3142.  
  3143. | 3.9          | Unsupported version.       | VERSION property name   |
  3144. |              |                            | and value MAY be        |
  3145. |              |                            | specified.              |
  3146. |==============+============================+=========================|
  3147. | 3.10         | Request entity too large.  | None.                   |
  3148. |==============+============================+=========================|
  3149. | 3.11         | Required component or      | Component or property   |
  3150. |              | property missing.          | name MAY be specified.  |
  3151. |==============+============================+=========================|
  3152. | 3.12         | Unknown component or       | Component or property   |
  3153. |              | property found             | name MAY be specified   |
  3154. |==============+============================+=========================|
  3155. | 3.13         | Unsupported component or   | Component or property   |
  3156. |              | property found             | name MAY be specified   |
  3157. |==============+============================+=========================|
  3158. | 3.14         | Unsupported capability     | Method or action MAY    |
  3159. |              |                            | be specified            |
  3160. |==============+============================+=========================|
  3161. | 4.0          | Event conflict. Date/time  | DTSTART and DTEND       |
  3162. |              | is busy.                   | property name and values|
  3163. |              |                            | MAY be specified.       |
  3164. |==============+============================+=========================|
  3165. | 5.0          | Request MAY supported.     | Method property value   |
  3166. |              |                            | MAY be specified.       |
  3167. |==============+============================+=========================|
  3168. | 5.1          | Service unavailable.       | ATTENDEE property value |
  3169. |              |                            | MAY be specified.       |
  3170. |==============+============================+=========================|
  3171. | 5.2          | Invalid calendar service.  | ATTENDEE property value |
  3172. |              |                            | MAY be specified.       |
  3173. |==============+============================+=========================|
  3174. | 5.3          | No scheduling support for  | ATTENDEE property value |
  3175. |              | user.                      | MAY be specified.       |
  3176. |==============+============================+=========================|
  3177.  
  3178. 3.7 Implementation Considerations
  3179.  
  3180. 3.7.1 Working With Recurrence Instances
  3181.  
  3182.    iCalendar includes a recurrence grammar to represent recurring
  3183.    events.  The benefit of such a grammar is the ability to represent a
  3184.    number of events in a single object. However, while this simplifies
  3185.    creation of a recurring event, meeting instances still need to be
  3186.    referenced. For instance, an "Attendee" may decline the third
  3187.    instance of a recurring Friday event. Similarly, the "Organizer" may
  3188.    change the time or location to a single instance of the recurring
  3189.    event.
  3190.  
  3191.  
  3192.  
  3193.  
  3194. Silverberg, et. al.         Standards Track                    [Page 57]
  3195.  
  3196. RFC 2446                          iTIP                     November 1998
  3197.  
  3198.  
  3199.    Since implementations may elect to store recurring events as either a
  3200.    single event object or a collection of discreet, related event
  3201.    objects, the protocol is designed so that each recurring instance may
  3202.    be both referenced and versioned. Hence, implementations that choose
  3203.    to maintain per-instance properties (such as "ATTENDEE" property
  3204.    "partstat" parameter) may do so. However, the protocol does not
  3205.    require per-instance recognition unless the instance itself must be
  3206.    renegotiated.
  3207.  
  3208.    The scenarios for recurrence instance referencing are listed below.
  3209.    For purposes of simplification a change to an event refers to a
  3210.    "trigger property."  That is, a property that has a substantive
  3211.    effect on the meeting itself such as start time, location, due date
  3212.    (for "VTODO" calendar component components) and possibly description.
  3213.  
  3214.    "Organizer" initiated actions:
  3215.  
  3216.      .  "Organizer" deletes or changes a single instance of a recurring
  3217.         event
  3218.      .  "Organizer" makes changes that affect all future instances
  3219.      .  "Organizer" makes changes that affect all previous instances
  3220.      .  "Organizer" deletes or modifies a previously changed instance
  3221.  
  3222.    "Attendee" initiated actions:
  3223.  
  3224.      .  "Attendee" changes status for a particular recurrence instance
  3225.      .  "Attendee" sends Event-Counter for a particular recurrence
  3226.         instance
  3227.  
  3228.    An instance of a recurring event is assigned a unique identification,
  3229.    "RECURRENCE-ID" property, when that instance is renegotiated.
  3230.    Negotiation may be necessary when a substantive change to the event
  3231.    or to-do has be made (such as changing the start time, end time, due
  3232.    date or location). The "Organizer" can identify a specific recurrence
  3233.    instance using the "RECURRENCE-ID" property. The property value is
  3234.    equal to the date/time of the instance. If the "Organizer" wishes to
  3235.    change the "DTSTART", the original "DTSTART" value is used for
  3236.    "RECURRENCE-ID" property and the new "DTSTART" and "DTEND" values
  3237.    reflect the change.  Note that after the change has occurred, the
  3238.    "RECURRENCE-ID" has changed to the new "DTSTART" value.
  3239.  
  3240. 3.7.2 Attendee Property Considerations
  3241.  
  3242.    The "ORGANIZER" property is required on published events, to-dos, and
  3243.    journal entries for two reasons. First, only the "Organizer" is
  3244.    allowed to update and redistribute an event or to-do component. It
  3245.    follows that the "ORGANIZER" property MUST be present in the event,
  3246.    to-do, or journal entry component so that the CUA has a basis for
  3247.  
  3248.  
  3249.  
  3250. Silverberg, et. al.         Standards Track                    [Page 58]
  3251.  
  3252. RFC 2446                          iTIP                     November 1998
  3253.  
  3254.  
  3255.    authorizing an update.  Second, it is prudent to provide a point of
  3256.    contact for anyone who receives a published component in case of
  3257.    problems.
  3258.  
  3259.    There are valid [RFC-822] addresses that represent groups. Sending
  3260.    email to such an address results in mail being sent to multiple
  3261.    recipients.  Such an address may be used as the value of an
  3262.    "ATTENDEE" property.  Thus, it is possible that the recipient of a
  3263.    "REQUEST" does not appear explicitly in the list.
  3264.  
  3265.    It is recommended that the general approach to finding a "Calendar
  3266.    User" in an attendee list be as follows:
  3267.  
  3268.    1.  Search for the "Calendar User" in the attendee list where
  3269.        "TYPE=INDIVIDUAL"
  3270.  
  3271.    2.  Failing (1) look for attendees where "TYPE=GROUP" or
  3272.        'TYPE=UNKNOWN".  The CUA then determines if the "Calendar User"
  3273.        is a member of one of these groups. If so, the "REPLY" method
  3274.        sent to the "Organizer" MUST contain a new "ATTENDEE" property in
  3275.        which:
  3276.          .  the "type" property parameter is set to INDIVIDUAL
  3277.          .  the "member" property parameter is set to the name of the
  3278.             group
  3279.  
  3280.    3.  Failing (2) the CUA MAY ignore or accept the request as the
  3281.        "Calendar User" wishes.
  3282.  
  3283. 3.7.3 X-Tokens
  3284.  
  3285.    To make iCalendar objects extensible, new property types MAY be
  3286.    inserted into components. These properties are called X-Tokens as
  3287.    they are prefixed with "X-". A client is not required to make sense
  3288.    of X-Tokens.  Clients are not required to save X-Tokens or use them
  3289.    in replies.
  3290.  
  3291. 4 Examples
  3292.  
  3293. 4.1 Published Event Examples
  3294.  
  3295.    In the calendaring and scheduling context, publication refers to the
  3296.    one way transfer of event information. Consumers of published events
  3297.    simply incorporate the event into a calendar. No reply is expected.
  3298.    Individual "A" publishes an event. Individual "B" reads the event and
  3299.    incorporates it into their calendar. Events are published in several
  3300.    ways including: embedding the event as an object in a web page, e-
  3301.    mailing the event to a distribution list, and posting the event to a
  3302.    newsgroup.
  3303.  
  3304.  
  3305.  
  3306. Silverberg, et. al.         Standards Track                    [Page 59]
  3307.  
  3308. RFC 2446                          iTIP                     November 1998
  3309.  
  3310.  
  3311.    The table below illustrates the sequence of events between the
  3312.    publisher and the consumers of a published event.
  3313.  
  3314.    +-------------------------------------------------------------------+
  3315.    | Action                          |  "Organizer"                    |
  3316.    +---------------------------------+---------------------------------+
  3317.    | Publish an event                | "A" sends or posts a PUBLISH    |
  3318.    |                                 | message                         |
  3319.    +---------------------------------+---------------------------------+
  3320.    | "B" reads a published event     |                                 |
  3321.    +---------------------------------+---------------------------------+
  3322.    | Publish an updated event        | "A" sends or posts a PUBLISH    |
  3323.    |                                 | message                         |
  3324.    +---------------------------------+---------------------------------+
  3325.    | "B" reads the updated event     |                                 |
  3326.    +---------------------------------+---------------------------------+
  3327.    | Cancel a published event        | "A" sends or posts a CANCEL     |
  3328.    |                                 | message                         |
  3329.    +---------------------------------+---------------------------------+
  3330.    | "B" reads the canceled event    |                                 |
  3331.    |  publication                    |                                 |
  3332.    +---------------------------------+---------------------------------+
  3333.  
  3334. 4.1.1 A Minimal Published Event
  3335.  
  3336.    The iCalendar object below describes a single event that begins on
  3337.    July 1, 1997 at 20:00 UTC. This event contains the minimum set of
  3338.    properties for a "PUBLISH" for a "VEVENT" calendar component.
  3339.  
  3340.    BEGIN:VCALENDAR
  3341.    METHOD:PUBLISH
  3342.    PRODID:-//ACME/DesktopCalendar//EN
  3343.    VERSION:2.0
  3344.    BEGIN:VEVENT
  3345.    ORGANIZER:mailto:a@example.com
  3346.    DTSTART:19970701T200000Z
  3347.    DTSTAMP:19970611T190000Z
  3348.    SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
  3349.    UID:0981234-1234234-23@example.com
  3350.    END:VEVENT
  3351.    END:VCALENDAR
  3352.  
  3353. 4.1.2 Changing A Published Event
  3354.  
  3355.    The iCalendar object below describes an update to the event described
  3356.    in 4.1.1, the time has been changed, an end time has been added, and
  3357.    the sequence number has been adjusted.
  3358.  
  3359.  
  3360.  
  3361.  
  3362. Silverberg, et. al.         Standards Track                    [Page 60]
  3363.  
  3364. RFC 2446                          iTIP                     November 1998
  3365.  
  3366.  
  3367.    BEGIN:VCALENDAR
  3368.    METHOD:PUBLISH
  3369.    VERSION:2.0
  3370.    PRODID:-//ACME/DesktopCalendar//EN
  3371.    BEGIN:VEVENT
  3372.    ORGANIZER:mailto:a@example.com
  3373.    DTSTAMP:19970612T190000Z
  3374.    DTSTART:19970701T210000Z
  3375.    DTEND:19970701T230000Z
  3376.    SEQUENCE:1
  3377.    UID:0981234-1234234-23@example.com
  3378.    SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
  3379.    END:VEVENT
  3380.    END:VCALENDAR
  3381.  
  3382.    The "UID" property is used by the client to identify the event. The
  3383.    "SEQUENCE" property indicates that this is a change to the event. The
  3384.    event with a matching UID and sequence number 0 is superseded by this
  3385.    event.
  3386.  
  3387.    The "SEQUENCE" property provides a reliable way to distinguish
  3388.    different versions of the same event. Each time an event is
  3389.    published, its sequence number is incremented. If a client receives
  3390.    an event with a sequence number 5 and finds it has the same event
  3391.    with sequence number 2, the event SHOULD be updated. However, if the
  3392.    client received an event with sequence number 2 and finds it already
  3393.    has sequence number 5 of the same event, the event MUST NOT be
  3394.    updated.
  3395.  
  3396. 4.1.3 Canceling A Published Event
  3397.  
  3398.    The iCalendar object below cancels the event described in 4.1.1. This
  3399.    cancels the event with "SEQUENCE" property of 0, 1, and 2.
  3400.  
  3401.    BEGIN:VCALENDAR
  3402.    METHOD:CANCEL
  3403.    VERSION:2.0
  3404.    PRODID:-//ACME/DesktopCalendar//EN
  3405.    BEGIN:VEVENT
  3406.    ORGANIZER:mailto:a@example.com
  3407.    COMMENT:DUKES forfeit the game
  3408.    SEQUENCE:2
  3409.    UID:0981234-1234234-23@example.com
  3410.    DTSTAMP:19970613T190000Z
  3411.    END:VEVENT
  3412.    END:VCALENDAR
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418. Silverberg, et. al.         Standards Track                    [Page 61]
  3419.  
  3420. RFC 2446                          iTIP                     November 1998
  3421.  
  3422.  
  3423. 4.1.4 A Rich Published Event
  3424.  
  3425.    This example describes the same event as in 4.1.1, but in much
  3426.    greater detail.
  3427.  
  3428.    BEGIN:VCALENDAR
  3429.    PRODID:-//ACME/DesktopCalendar//EN
  3430.    METHOD:PUBLISH
  3431.    SCALE:GREGORIAN
  3432.    VERSION:2.0
  3433.    BEGIN:VTIMEZONE
  3434.    TZID:America-Chicago
  3435.    TZURL:http://zones.stds_r_us.net/tz/America-Chicago
  3436.    BEGIN:STANDARD
  3437.    DTSTART:19671029T020000
  3438.    RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
  3439.    TZOFFSETFROM:-0500
  3440.    TZOFFSETTO:-0600
  3441.    TZNAME:CST
  3442.    END:STANDARD
  3443.    BEGIN:DAYLIGHT
  3444.    DTSTART:19870405T020000
  3445.    RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
  3446.    TZOFFSETFROM:-0600
  3447.    TZOFFSETTO:-0500
  3448.    TZNAME:CDT
  3449.    END:DAYLIGHT
  3450.    END:VTIMEZONE
  3451.    BEGIN:VEVENT
  3452.    ORGANIZER:mailto:a@example.com
  3453.    ATTACH:http://www.dukes.com/
  3454.    CATEGORIES:SPORTS EVENT,ENTERTAINMENT
  3455.    CLASS:PRIVATE
  3456.    DESCRIPTION:MIDWAY STADIUM\n
  3457.     Big time game. MUST see.\n
  3458.     Expected duration:2 hours\n
  3459.    DTEND;TZID=America-Chicago:19970701T180000
  3460.    DTSTART;TZID=America-Chicago:19970702T160000
  3461.    DTSTAMP:19970614T190000Z
  3462.    STATUS:CONFIRMED
  3463.    LOCATION;VALUE=URI:http://www.midwaystadium.com/
  3464.    PRIORITY:2
  3465.    RESOURCES:SCOREBOARD
  3466.    SEQUENCE:3
  3467.    SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
  3468.    UID:0981234-1234234-23@example.com
  3469.    RELATED-TO:0981234-1234234-14@example.com
  3470.    BEGIN:VALARM
  3471.  
  3472.  
  3473.  
  3474. Silverberg, et. al.         Standards Track                    [Page 62]
  3475.  
  3476. RFC 2446                          iTIP                     November 1998
  3477.  
  3478.  
  3479.    TRIGGER:-PT2H
  3480.    ACTION:DISPLAY
  3481.    DESCRIPTION:You should be leaving for the game now.
  3482.    END:VALARM
  3483.    BEGIN:VALARM
  3484.    TRIGGER:-PT30M
  3485.    ACTION:AUDIO
  3486.    END:VALARM
  3487.    END:VEVENT
  3488.    END:VCALENDAR
  3489.  
  3490.    The "RELATED-TO" field contains the "UID" property of a related
  3491.    calendar event. The "SEQUENCE" property 3 indicates that this event
  3492.    supersedes versions 0, 1, and 2.
  3493.  
  3494. 4.1.5 Anniversaries or Events attached to entire days
  3495.  
  3496.    This example demonstrates the use of the "value" parameter to tie a
  3497.    "VEVENT" to day rather than a specific time.
  3498.  
  3499.    BEGIN:VCALENDAR
  3500.    PRODID:-//ACME/DesktopCalendar//EN
  3501.    METHOD:PUBLISH
  3502.    VERSION:2.0
  3503.    BEGIN:VEVENT
  3504.    ORGANIZER:mailto:a@example.com
  3505.    DTSTAMP:19970614T190000Z
  3506.    UID:0981234-1234234-23@example.com
  3507.    DTSTART;VALUE=DATE:19970714
  3508.    RRULE:FREQ=YEARLY;INTERVAL=1
  3509.    SUMMARY: Bastille Day
  3510.    END:VEVENT
  3511.    END:VCALENDAR
  3512.  
  3513. 4.2 Group Event Examples
  3514.  
  3515.    Group events are distinguished from published events in that they
  3516.    have "Attendees" and that there is interaction between the
  3517.    "Attendees" and the "Organizer" with respect to the event. Individual
  3518.    "A" requests a meeting between individuals "A", "B", "C" and "D".
  3519.    Individual "B" confirms attendance to the meeting. Individual "C"
  3520.    declines attendance.  Individual "D" tentatively confirms attendance.
  3521.    The following table illustrates the the message flow between these
  3522.    individuals. A, the CU scheduling the meeting, is referenced as the
  3523.    "Organizer".
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530. Silverberg, et. al.         Standards Track                    [Page 63]
  3531.  
  3532. RFC 2446                          iTIP                     November 1998
  3533.  
  3534.  
  3535. +---------------------------------------------------------------------+
  3536. | Action             |  "Organizer"        | Attendee                 |
  3537. +---------------------------------------------------------------------+
  3538. | Initiate a meeting | "A" sends a REQUEST |                          |
  3539. | request            | message to "B", "C",|                          |
  3540. |                    | and "D"             |                          |
  3541. +---------------------------------------------------------------------+
  3542. | Accept the meeting |                     | "B" sends a REPLY        |
  3543. | request            |                     | message to "A" with its  |
  3544. |                    |                     | ATTENDEE "partstat" para-|
  3545. |                    |                     | set to "accepted"        |
  3546. +---------------------------------------------------------------------+
  3547. | Decline the meeting|                     | "C" sends a REPLY        |
  3548. | request            |                     | message to "A" with its  |
  3549. |                    |                     | ATTENDEE "partstat" para-|
  3550. |                    |                     | set to "declined"        |
  3551. +---------------------------------------------------------------------+
  3552. | Tentatively accept |                     | "D" sends a REPLY        |
  3553. | the meeting request|                     | message to "A" with its  |
  3554. |                    |                     | ATTENDEE "partstat" para-|
  3555. |                    |                     | set to "tentative"       |
  3556. +---------------------------------------------------------------------+
  3557. | Confirm meeting    | "A" sends a REQUEST |                          |
  3558. | status with        | message to "B" and  |                          |
  3559. | attendees          | "D" with updated    |                          |
  3560. |                    | information.        |                          |
  3561. +---------------------------------------------------------------------+
  3562.  
  3563. 4.2.1 A Group Event Request
  3564.  
  3565.    A sample meeting request is sent from "A" to "B", "C", and "D". _E_
  3566.    is also sent a copy of the request but is not expected to attend and
  3567.    need not reply. "E" illustrates how CUAs might implement an "FYI"
  3568.    type feature. Note the use of the "role" parameter. The default value
  3569.    for the "role" parameter is "req-participant" and it need not be
  3570.    enumerated. In this case we are using the value "non-participant" to
  3571.    indicate "E" is a non-attending CU. The parameter is not needed on
  3572.    other "Attendees" since "participant" is the default value.
  3573.  
  3574.    BEGIN:VCALENDAR
  3575.    PRODID:-//ACME/DesktopCalendar//EN
  3576.    METHOD:REQUEST
  3577.    VERSION:2.0
  3578.    BEGIN:VEVENT
  3579.    ORGANIZER:Mailto:A@example.com
  3580.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com
  3581.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=B:Mailto:B@example.com
  3582.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=C:Mailto:C@example.com
  3583.  
  3584.  
  3585.  
  3586. Silverberg, et. al.         Standards Track                    [Page 64]
  3587.  
  3588. RFC 2446                          iTIP                     November 1998
  3589.  
  3590.  
  3591.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
  3592.    ATTENDEE;RSVP=FALSE;TYPE=ROOM:conf_Big@example.com
  3593.    ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
  3594.    DTSTAMP:19970611T190000Z
  3595.    DTSTART:19970701T200000Z
  3596.    DTEND:19970701T2000000Z
  3597.    SUMMARY:Conference
  3598.    UID:calsrv.example.com-873970198738777@example.com
  3599.    SEQUENCE:0
  3600.    STATUS:CONFIRMED
  3601.    END:VEVENT
  3602.    END:VCALENDAR
  3603.  
  3604. 4.2.2 Reply To A Group Event Request
  3605.  
  3606.    Attendee "B" accepts the meeting.
  3607.  
  3608.    BEGIN:VCALENDAR
  3609.    PRODID:-//ACME/DesktopCalendar//EN
  3610.    METHOD:REPLY
  3611.    VERSION:2.0
  3612.    BEGIN:VEVENT
  3613.    ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
  3614.    ORGANIZER:MAILTO:A@example.com
  3615.    UID:calsrv.example.com-873970198738777@example.com
  3616.    SEQUENCE:0
  3617.    REQUEST-STATUS:2.0;Success
  3618.    DTSTAMP:19970612T190000Z
  3619.    END:VEVENT
  3620.    END:VCALENDAR
  3621.  
  3622.    "B" could have declined the meeting or indicated tentative acceptance
  3623.    by setting the "ATTENDEE" "partstat" parameter to "declined" or
  3624.    "tentative", respectively. Also, "REQUEST-STATUS" is not required in
  3625.    successful transactions.
  3626.  
  3627. 4.2.3 Update An Event
  3628.  
  3629.    The event is moved to a different time. The combination of the "UID"
  3630.    property (unchanged) and the "SEQUENCE" (bumped to 1) properties
  3631.    indicate the update.
  3632.  
  3633.    BEGIN:VCALENDAR
  3634.    PRODID:-//ACME/DesktopCalendar//EN
  3635.    METHOD:REQUEST
  3636.    VERSION:2.0
  3637.    BEGIN:VEVENT
  3638.    ORGANIZER:Mailto:A@example.com
  3639.  
  3640.  
  3641.  
  3642. Silverberg, et. al.         Standards Track                    [Page 65]
  3643.  
  3644. RFC 2446                          iTIP                     November 1998
  3645.  
  3646.  
  3647.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  3648.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
  3649.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
  3650.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
  3651.    ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE;
  3652.     CUTYPE=ROOM:Mailto:Conf@example.com
  3653.    ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
  3654.    DTSTART:19970701T180000Z
  3655.    DTEND:19970701T190000Z
  3656.    SUMMARY:Phone Conference
  3657.    UID:calsrv.example.com-873970198738777@example.com
  3658.    SEQUENCE:1
  3659.    DTSTAMP:19970613T190000Z
  3660.    STATUS:CONFIRMED
  3661.    END:VEVENT
  3662.    END:VCALENDAR
  3663.  
  3664. 4.2.4 Countering an Event Proposal
  3665.  
  3666.    "A" sends a "REQUEST" to "B" and "C". "B" makes a counter-proposal to
  3667.    "A" to change the time and location.
  3668.  
  3669.    "A" sends the following "REQUEST":
  3670.  
  3671.    BEGIN:VCALENDAR
  3672.    PRODID:-//ACME/DesktopCalendar//EN
  3673.    METHOD:REQUEST
  3674.    VERSION:2.0
  3675.    BEGIN:VEVENT
  3676.    ORGANIZER:Mailto:A@example.com
  3677.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  3678.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
  3679.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
  3680.    DTSTART:19970701T190000Z
  3681.    DTEND:19970701T200000Z
  3682.    SUMMARY:Discuss the Merits of the election results
  3683.    LOCATION:Green Conference Room
  3684.    UID:calsrv.example.com-873970198738777a@example.com
  3685.    SEQUENCE:0
  3686.    DTSTAMP:19970611T190000Z
  3687.    STATUS:CONFIRMED
  3688.    END:VEVENT
  3689.    END:VCALENDAR
  3690.  
  3691.    "B" sends "COUNTER" to "A", requesting changes to time and place. "B"
  3692.    uses the "COMMENT" property to communicate a rationale for the
  3693.    change.  Note that the "SEQUENCE" property is NOT incremented on a
  3694.    "COUNTER".
  3695.  
  3696.  
  3697.  
  3698. Silverberg, et. al.         Standards Track                    [Page 66]
  3699.  
  3700. RFC 2446                          iTIP                     November 1998
  3701.  
  3702.  
  3703.    BEGIN:VCALENDAR
  3704.    PRODID:-//ACME/DesktopCalendar//EN
  3705.    METHOD:COUNTER
  3706.    VERSION:2.0
  3707.    BEGIN:VEVENT
  3708.    ORGANIZER:Mailto:A@example.com
  3709.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  3710.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
  3711.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
  3712.    DTSTART:19970701T160000Z
  3713.    DTEND:19970701T190000Z
  3714.    DTSTAMP:19970612T190000Z
  3715.    SUMMARY:Discuss the Merits of the election results
  3716.    LOCATION:Green Conference Room
  3717.    COMMENT:This time works much better and I think the big conference
  3718.      room is too big
  3719.    UID:calsrv.example.com-873970198738777a@example.com
  3720.    SEQUENCE:0
  3721.    DTSTAMP:19970611T190000Z
  3722.    END:VEVENT
  3723.    END:VCALENDAR
  3724.  
  3725.    "A" accepts the changes from "B". To accept a counter-proposal, the
  3726.    "Organizer" sends a new event "REQUEST" with an incremented sequence
  3727.    number.
  3728.  
  3729.    BEGIN:VCALENDAR
  3730.    PRODID:-//ACME/DesktopCalendar//EN
  3731.    METHOD:REQUEST
  3732.    VERSION:2.0
  3733.    BEGIN:VEVENT
  3734.    ORGANIZER:Mailto:A@example.com
  3735.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  3736.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
  3737.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
  3738.    DTSTAMP:19970613T190000Z
  3739.    DTSTART:19970701T160000Z
  3740.    DTEND:19970701T190000Z
  3741.    SUMMARY:Discuss the Merits of the election results - changed to
  3742.      meet B's schedule
  3743.    LOCATION:Green Conference Room
  3744.    UID:calsrv.example.com-873970198738777@example.com
  3745.    SEQUENCE:1
  3746.    STATUS:CONFIRMED
  3747.    END:VEVENT
  3748.    END:VCALENDAR
  3749.  
  3750.    Instead, "A" rejects "B's" counter proposal
  3751.  
  3752.  
  3753.  
  3754. Silverberg, et. al.         Standards Track                    [Page 67]
  3755.  
  3756. RFC 2446                          iTIP                     November 1998
  3757.  
  3758.  
  3759.    BEGIN:VCALENDAR
  3760.    PRODID:-//ACME/DesktopCalendar//EN
  3761.    METHOD:DECLINECOUNTER
  3762.    VERSION:2.0
  3763.    BEGIN:VEVENT
  3764.    ORGANIZER:Mailto:A@example.com
  3765.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
  3766.    COMMENT:Sorry, I cannot change this meeting time
  3767.    UID:calsrv.example.com-873970198738777@example.com
  3768.    SEQUENCE:0
  3769.    DTSTAMP:19970614T190000Z
  3770.    END:VEVENT
  3771.    END:VCALENDAR
  3772.  
  3773. 4.2.5 Delegating an Event
  3774.  
  3775.    When delegating an event request to another "Calendar User", the
  3776.    "Delegator" must both update the "Organizer" with a "REPLY" and send
  3777.    a request to the "Delegate". There is currently no protocol
  3778.    limitation to delegation depth. It is possible for the original
  3779.  
  3780.    delegate to delegate the meeting to someone else, and so on. When a
  3781.    request is delegated from one CUA to another there are a number of
  3782.    responsibilities required of the "Delegator". The "Delegator" MUST:
  3783.  
  3784.      .  Send a "REPLY" to the "Organizer" with the following updates:
  3785.      .  The "Delegator's" "ATTENDEE" property "partstat" parameter set
  3786.         to "delegated" and the "delegated-to" parameter is set to the
  3787.         address of the "Delegate"
  3788.      .  Add an additional "ATTENDEE" property for the "Delegate" with
  3789.         the "delegated-from" property parameter set to the "Delegator"
  3790.      .  Indicate whether they want to continue to receive updates when
  3791.         the "Organizer" sends out updated versions of the event.
  3792.         Setting the "rsvp" property parameter to "TRUE" will cause the
  3793.         updates to be sent, setting it to "FALSE" causes no further
  3794.         updates to be sent. Note that in either case, if the "Delegate"
  3795.         declines the invitation the "Delegator" will be notified.
  3796.      .  The "Delegator" MUST also send a copy of the original "REQUEST"
  3797.         method to the "Delegate".
  3798.  
  3799.    It is not required that the "Delegate" include the "Delegator" in
  3800.    their "REPLY" method. However, it is strongly advised since this will
  3801.    inform the "Delegator" whether the "Delegate" plans to attend the
  3802.    meeting.  [Editors note:  How so?] If the "Delegate" declines the
  3803.    meeting, the "Delegator" may elect to delegate the "REQUEST" to
  3804.    another CUA. The process is the same.
  3805.  
  3806.  
  3807.  
  3808.  
  3809.  
  3810. Silverberg, et. al.         Standards Track                    [Page 68]
  3811.  
  3812. RFC 2446                          iTIP                     November 1998
  3813.  
  3814.  
  3815. +---------------------------------------------------------------------+
  3816. | Action             |  "Organizer"        | Attendee                 |
  3817. +---------------------------------------------------------------------+
  3818. | Initiate a meeting | "A" sends a REQUEST |                          |
  3819. | request            | message to "B" and  |                          |
  3820. |                    | "C"                 |                          |
  3821. +---------------------------------------------------------------------+
  3822. | Delegate:          |                     | "C" sends a REPLY to "A" |
  3823. | "C" delegates to   |                     | with the ATTENDEE.       |
  3824. | "E"                |                     | "partstat" parameter set |
  3825. |                    |                     | to "delegated" and with a|
  3826. |                    |                     | new "ATTENDEE" property  |
  3827. |                    |                     | for "E". "E's" ATTENDEE  |
  3828. |                    |                     | "delegated-from" param   |
  3829. |                    |                     | is set to "C". "C's"     |
  3830. |                    |                     | ATTENDEE "delegated-to"  |
  3831. |                    |                     | param is set to "E".     |
  3832. |                    |                     | "C" sends REQUEST message|
  3833. |                    |                     | to "E" with the original |
  3834. |                    |                     | meeting request          |
  3835. |                    |                     | information. The         |
  3836. |                    |                     |  "partstat" property     |
  3837. |                    |                     | parameter for "C" is set |
  3838. |                    |                     | to "delegated" and the   |
  3839. |                    |                     |  "delegated-to"          |
  3840. |                    |                     | parameter is set to      |
  3841. |                    |                     | the address of "E". An   |
  3842. |                    |                     | "ATTENDEE" property is   |
  3843. |                    |                     | added for "E" and the    |
  3844. |                    |                     | "delegated-from"         |
  3845. |                    |                     | parameter is set to      |
  3846. |                    |                     | the address of "C".      |
  3847. +---------------------------------------------------------------------+
  3848. | Confirm meeting    |                     | "E" sends REPLY message  |
  3849. | attendance         |                     | to "A" and optionally "C"|
  3850. |                    |                     | with its "partstat"      |
  3851. |                    |                     | property parameter set   |
  3852. |                    |                     | to "ACCEPTED"            |
  3853. +---------------------------------------------------------------------+
  3854. | Optional:          | "A" sends REQUEST   |                          |
  3855. | Redistribute       | message to "B", "C" |                          |
  3856. | meeting to         | and "E".            |                          |
  3857. | attendees          |                     |                          |
  3858. +---------------------------------------------------------------------+
  3859.  
  3860.  
  3861.  
  3862.  
  3863.  
  3864.  
  3865.  
  3866. Silverberg, et. al.         Standards Track                    [Page 69]
  3867.  
  3868. RFC 2446                          iTIP                     November 1998
  3869.  
  3870.  
  3871.    "C" responds to the "Organizer".
  3872.  
  3873.    BEGIN:VCALENDAR
  3874.    PRODID:-//ACME/DesktopCalendar//EN
  3875.    METHOD:REPLY
  3876.    VERSION:2.0
  3877.    BEGIN:VEVENT
  3878.    ORGANIZER:MAILTO:A@Example.com
  3879.    ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
  3880.     TO="Mailto:E@example.com":Mailto:C@example.com
  3881.    UID:calsrv.example.com-873970198738777@example.com
  3882.    SEQUENCE:0
  3883.    REQUEST-STATUS:2.0;Success
  3884.    DTSTAMP:19970611T190000Z
  3885.    END:VEVENT
  3886.    END:VCALENDAR
  3887.  
  3888.    Attendee "C" delegates presence at the meeting to "E".
  3889.  
  3890.    BEGIN:VCALENDAR
  3891.    PRODID:-//ACME/DesktopCalendar//EN
  3892.    METHOD:REQUEST
  3893.    VERSION:2.0
  3894.    BEGIN:VEVENT
  3895.    ORGANIZER:Mailto:A@example.com
  3896.    ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
  3897.     TO="Mailto:E@example.com":Mailto:C@example.com
  3898.    ATTENDEE;RSVP=TRUE;
  3899.     DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
  3900.    DTSTART:19970701T180000Z
  3901.    DTEND:19970701T200000Z
  3902.    SUMMARY:Phone Conference
  3903.    UID:calsrv.example.com-873970198738777@example.com
  3904.    SEQUENCE:0
  3905.    STATUS:CONFIRMED
  3906.    DTSTAMP:19970611T190000Z
  3907.    END:VEVENT
  3908.    END:VCALENDAR
  3909.  
  3910. 4.2.6 Delegate Accepts the Meeting
  3911.  
  3912.    To accept a delegated meeting, the delegate, "E", sends the following
  3913.    message to "A" and "C":
  3914.  
  3915.    BEGIN:VCALENDAR
  3916.    PRODID:-//ACME/DesktopCalendar//EN
  3917.    METHOD:REPLY
  3918.    VERSION:2.0
  3919.  
  3920.  
  3921.  
  3922. Silverberg, et. al.         Standards Track                    [Page 70]
  3923.  
  3924. RFC 2446                          iTIP                     November 1998
  3925.  
  3926.  
  3927.    BEGIN:VEVENT
  3928.    ORGANIZER:MAILTO:A@Example.com
  3929.    ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED-
  3930.     FROM="Mailto:C@example.com":Mailto:E@example.com
  3931.    ATTENDEE;PARTSTAT=DELEGATED;
  3932.     DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
  3933.    UID:calsrv.example.com-873970198738777@example.com
  3934.    SEQUENCE:0
  3935.    REQUEST-STATUS:2.0;Success
  3936.    DTSTAMP:19970614T190000Z
  3937.    END:VEVENT
  3938.    END:VCALENDAR
  3939.  
  3940. 4.2.7 Delegate Declines the Meeting
  3941.  
  3942.    In this example the "Delegate" declines the meeting request and sets
  3943.    the "ATTENDEE" property "partstat" parameter to "DECLINED". The
  3944.    "Organizer" SHOULD resend the "REQUEST" to "C" with the "partstat"
  3945.    parameter of the "Delegate" set to "declined". This lets the
  3946.    "Delegator" know that the "Delegate" has declined and provides an
  3947.    opportunity to the "Delegator" to either accept the request or
  3948.    delegate it to another CU.
  3949.  
  3950.    Response from "E" to "A" and "C". Note the use of the "COMMENT"
  3951.    property "E" uses to indicate why the delegation was declined.
  3952.  
  3953.    BEGIN:VCALENDAR
  3954.    PRODID:-//ACME/DesktopCalendar//EN
  3955.    METHOD:REPLY
  3956.    VERSION:2.0
  3957.    BEGIN:VEVENT
  3958.    ORGANIZER:MAILTO:A@Example.com
  3959.    ATTENDEE;PARTSTAT=DELEGATED;
  3960.     DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
  3961.    ATTENDEE;PARTSTAT=DECLINED;
  3962.     DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
  3963.    COMMENT:Sorry, I will be out of town at that time.
  3964.    UID:calsrv.example.com-873970198738777@example.com
  3965.    SEQUENCE:0
  3966.    REQUEST-STATUS:2.0;Success
  3967.    DTSTAMP:19970614T190000Z
  3968.    END:VEVENT
  3969.    END:VCALENDAR
  3970.  
  3971.    "A" resends the "REQUEST" method to "C". "A" may also wish to express
  3972.    the fact that the item was delegated in the "COMMENT" property.
  3973.  
  3974.  
  3975.  
  3976.  
  3977.  
  3978. Silverberg, et. al.         Standards Track                    [Page 71]
  3979.  
  3980. RFC 2446                          iTIP                     November 1998
  3981.  
  3982.  
  3983.    BEGIN:VCALENDAR
  3984.    PRODID:-//ACME/DesktopCalendar//EN
  3985.    METHOD:REQUEST
  3986.    VERSION:2.0
  3987.    BEGIN:VEVENT
  3988.    ORGANIZER:MAILTO:A@Example.com
  3989.    ATTENDEE;PARTSTAT=DECLINED;
  3990.     DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
  3991.    ATTENDEE;RSVP=TRUE:Mailto:C@example.com
  3992.    UID:calsrv.example.com-873970198738777@example.com
  3993.    SEQUENCE:0
  3994.    SUMMARY:Phone Conference
  3995.    DTSTART:19970701T180000Z
  3996.    DTEND:19970701T200000Z
  3997.    DTSTAMP:19970614T200000Z
  3998.    COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR
  3999.     INVITATION
  4000.    END:VEVENT
  4001.    END:VCALENDAR
  4002.  
  4003. 4.2.8 Forwarding an Event Request
  4004.  
  4005.    The protocol does not prevent an "Attendee" from "forwarding" an
  4006.    "VEVENT" calendar component to other "Calendar Users". Forwarding
  4007.    differs from delegation in that the forwarded "Calendar User" (often
  4008.    referred to as a "Party Crasher") does not replace the forwarding
  4009.    "Calendar User". Implementations are not required to add the "Party
  4010.    Crasher" to the "Attendee" list and hence there is no guarantee that
  4011.    a "Party Crasher" will receive additional updates to the Event. The
  4012.    forwarding "Calendar User" SHOULD NOT add the "Party Crasher" to the
  4013.    attendee list. The "Organizer" MAY add the forwarded "Calendar User"
  4014.    to the attendee list.
  4015.  
  4016. 4.2.9 Cancel A Group Event
  4017.  
  4018.    Individual "A" requests a meeting between individuals "A", "B", "C",
  4019.    and "D". Individual "B" declines attendance to the meeting.
  4020.    Individual "A" decides to cancel the meeting. The following table
  4021.    illustrates the sequence of messages that would be exchanged between
  4022.    these individuals.
  4023.  
  4024.    Messages related to a previously canceled event ("SEQUENCE" property
  4025.    value is less than the "SEQUENCE" property value of the "CANCEL"
  4026.    message) MUST be ignored.
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034. Silverberg, et. al.         Standards Track                    [Page 72]
  4035.  
  4036. RFC 2446                          iTIP                     November 1998
  4037.  
  4038.  
  4039.    +--------------------------------------------------------------------+
  4040.    | Action             |  "Organizer"        | "Attendee"              |
  4041.    +--------------------------------------------------------------------+
  4042.    | Initiate a meeting | "A" sends a REQUEST |                         |
  4043.    | request            | message to "B", "C",|                         |
  4044.    |                    | and "D"             |                         |
  4045.    +--------------------------------------------------------------------+
  4046.    | Decline the meeting|                     | "B" sends a "REPLY"     |
  4047.    | request            |                     | message to "A" with its |
  4048.    |                    |                     | "partstat" para-         |
  4049.    |                    |                     | set to "declined".      |
  4050.    +--------------------------------------------------------------------+
  4051.    | Cancel the meeting | "A" sends a CANCEL  |                         |
  4052.    |                    | message to "B", "C" |                         |
  4053.    |                    | and "D"             |                         |
  4054.    +--------------------------------------------------------------------+
  4055.  
  4056.    The example shows how "A" cancels the event.
  4057.  
  4058.    BEGIN:VCALENDAR
  4059.    PRODID:-//ACME/DesktopCalendar//EN
  4060.    METHOD:CANCEL
  4061.    VERSION:2.0
  4062.    BEGIN:VEVENT
  4063.    ORGANIZER:Mailto:A@example.com
  4064.    ATTENDEE;TYPE=INDIVIDUAL;Mailto:A@example.com
  4065.    ATTENDEE;TYPE=INDIVIDUAL:Mailto:B@example.com
  4066.    ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
  4067.    ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
  4068.    COMMENT:Mr. B cannot attend. It's raining. Lets cancel.
  4069.    UID:calsrv.example.com-873970198738777@example.com
  4070.    SEQUENCE:1
  4071.    STATUS:CANCELLED
  4072.    DTSTAMP:19970613T190000Z
  4073.    END:VEVENT
  4074.    END:VCALENDAR
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090. Silverberg, et. al.         Standards Track                    [Page 73]
  4091.  
  4092. RFC 2446                          iTIP                     November 1998
  4093.  
  4094.  
  4095. 4.2.10 Removing Attendees
  4096.  
  4097.    "A" wants to remove "B" from a meeting. This is done by sending a
  4098.    "CANCEL" to "B" and removing "B" from the attendee list in the master
  4099.    copy of the event.
  4100.  
  4101.    +--------------------------------------------------------------------+
  4102.    | Action             |  "Organizer"        | "Attendee"              |
  4103.    +--------------------------------------------------------------------+
  4104.    | Remove an "B"      | "A" sends a CANCEL  |                         |
  4105.    | as an "Attendee"   | message to "B"      |                         |
  4106.    +--------------------------------------------------------------------+
  4107.    | Update the master  | "A" sends the       |                         |
  4108.    | copy of the event  | updated event to    |                         |
  4109.    |                    | the remaining       |                         |
  4110.    |                    | "Attendees"         |                         |
  4111.    +--------------------------------------------------------------------+
  4112.  
  4113.    The original meeting includes "A", "B", "C", and "D". The example
  4114.    below shows the "CANCEL" that "A" sends to "B". Note that in the
  4115.    example below the "STATUS" property is omitted. This is used when the
  4116.    meeting itself is cancelled and not when the intent is to remove an
  4117.    "Attendee" from the Event.
  4118.  
  4119.    BEGIN:VCALENDAR
  4120.    PRODID:-//ACME/DesktopCalendar//EN
  4121.    METHOD:CANCEL
  4122.    VERSION:2.0
  4123.    BEGIN:VEVENT
  4124.    ORGANIZER:Mailto:A@example.com
  4125.    ATTENDEE:mailto:B@example.com
  4126.    COMMENT:You're off the hook for this meeting
  4127.    UID:calsrv.example.com-873970198738777@example.com
  4128.    DTSTAMP:19970613T193000Z
  4129.    SEQUENCE:1
  4130.    END:VEVENT
  4131.    END:VCALENDAR
  4132.  
  4133.    The updated master copy of the event is shown below. The "Organizer"
  4134.    MAY resend the updated event to the remaining "Attendees". Note that
  4135.    "B" has been removed.
  4136.  
  4137.    BEGIN:VCALENDAR
  4138.    PRODID:-//ACME/DesktopCalendar//EN
  4139.    METHOD:REQUEST
  4140.    VERSION:2.0
  4141.    BEGIN:VEVENT
  4142.    ORGANIZER:Mailto:A@example.com
  4143.  
  4144.  
  4145.  
  4146. Silverberg, et. al.         Standards Track                    [Page 74]
  4147.  
  4148. RFC 2446                          iTIP                     November 1998
  4149.  
  4150.  
  4151.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4152.    ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
  4153.    ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
  4154.    ATTENDEE;TYPE=ROOM:CR_Big@example.com
  4155.    ATTENDEE;ROLE=NON-PARTICIPANT;
  4156.     RSVP=FALSE:Mailto:E@example.com
  4157.    DTSTAMP:19970611T190000Z
  4158.    DTSTART:19970701T200000Z
  4159.    DTEND:19970701T203000Z
  4160.    SUMMARY:Phone Conference
  4161.    UID:calsrv.example.com-873970198738777@example.com
  4162.    SEQUENCE:2
  4163.    STATUS:CONFIRMED
  4164.    END:VEVENT
  4165.    END:VCALENDAR
  4166.  
  4167. 4.2.11 Replacing the Organizer
  4168.  
  4169.    The scenario for this example begins with "A" as the "Organizer" for
  4170.    a recurring meeting with "B", "C", and "D". "A" receives a new job
  4171.    offer in another country and drops out of touch.  "A" left no
  4172.    forwarding address or way to be reached.  Using out-of-band
  4173.    communication, the other "Attendees" eventually learn what has
  4174.    happened and reach an agreement that "B" should become the new
  4175.    "Organizer" for the meeting. To do this, "B" sends out a new version
  4176.    of the event and the other "Attendees" agree to accept "B" as the new
  4177.    "Organizer". "B" also removes "A" from the event.
  4178.  
  4179.    When the "Organizer" is replaced, the "SEQUENCE" property value MUST
  4180.    be incremented.
  4181.  
  4182.    This is the message "B" sends to "C" and "D"
  4183.  
  4184.    BEGIN:VCALENDAR
  4185.    PRODID:-//ACME/DesktopCalendar//EN
  4186.    METHOD:REQUEST
  4187.    VERSION:2.0
  4188.    BEGIN:VEVENT
  4189.    ORGANIZER:Mailto:B@example.com
  4190.    ATTENDEE;ROLE=CHAIR;STATUS=ACCEPTED:Mailto:B@example.com
  4191.    ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
  4192.    ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
  4193.    DTSTAMP:19970611T190000Z
  4194.    DTSTART:19970701T200000Z
  4195.    DTEND:19970701T203000Z
  4196.    RRULE:FREQ=WEEKLY
  4197.    SUMMARY:Phone Conference
  4198.    UID:123456@example.com
  4199.  
  4200.  
  4201.  
  4202. Silverberg, et. al.         Standards Track                    [Page 75]
  4203.  
  4204. RFC 2446                          iTIP                     November 1998
  4205.  
  4206.  
  4207.    SEQUENCE:1
  4208.    STATUS:CONFIRMED
  4209.    END:VEVENT
  4210.    END:VCALENDAR
  4211.  
  4212. 4.3 Busy Time Examples
  4213.  
  4214.    Busy time objects can be used in several ways. First, a CU may
  4215.    request busy time from another CU for a specific range of time. That
  4216.    request can be answered with a busy time Reply. Additionally, a CU
  4217.    may simply publish their busy time for a given interval and point
  4218.    other CUs to the published location. The following examples outline
  4219.    both scenarios.
  4220.  
  4221.    Individual "A" publishes busy time for one week.
  4222.  
  4223.    BEGIN:VCALENDAR
  4224.    PRODID:-//ACME/DesktopCalendar//EN
  4225.    VERSION:2.0
  4226.    METHOD:PUBLISH
  4227.    BEGIN:VFREEBUSY
  4228.    DTSTAMP:19980101T124100Z
  4229.    ORGANIZER:MAILTO:A@Example.com
  4230.    DTSTART:19980101T124200Z
  4231.    DTEND:19980107T124200Z
  4232.    FREEBUSY:19980101T180000Z/19980101T190000Z
  4233.    FREEBUSY:19980103T020000Z/19980103T050000Z
  4234.    FREEBUSY:19980107T020000Z/19980107T050000Z
  4235.    FREEBUSY:19980113T000000Z/19980113T010000Z
  4236.    FREEBUSY:19980115T190000Z/19980115T200000Z
  4237.    FREEBUSY:19980115T220000Z/19980115T230000Z
  4238.    FREEBUSY:19980116T013000Z/19980116T043000Z
  4239.    END:VFREEBUSY
  4240.    END:VCALENDAR
  4241.  
  4242.    Individual "A" requests busy time from individuals "B", "C".
  4243.    Individual "B" and "C" replies with busy time data to individual "A".
  4244.    The following table illustrates the sequence of messages that would
  4245.    be exchanged between these individuals.
  4246.  
  4247.  
  4248.  
  4249.  
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258. Silverberg, et. al.         Standards Track                    [Page 76]
  4259.  
  4260. RFC 2446                          iTIP                     November 1998
  4261.  
  4262.  
  4263. +--------------------------------------------------------------------+
  4264. | Action             |  "Organizer"        | Attendee                |
  4265. +--------------------------------------------------------------------+
  4266. | Initiate a busy    | "A" sends "REQUEST" |                         |
  4267. | time request       | message to "B" and  |                         |
  4268. |                    | and "C"             |                         |
  4269. +--------------------------------------------------------------------+
  4270. | Reply to the "BUSY"|                     | "B" sends a "REPLY"     |
  4271. | request with "BUSY"|                     | message to "A" with     |
  4272. | time data          |                     | busy time data          |
  4273. +--------------------------------------------------------------------+
  4274.  
  4275. 4.3.1 Request Busy Time
  4276.  
  4277.    "A" sends a "BUSY-REQUEST" to "B" and "C" for busy time
  4278.  
  4279.    BEGIN:VCALENDAR
  4280.    PRODID:-//ACME/DesktopCalendar//EN
  4281.    METHOD:REQUEST
  4282.    VERSION:2.0
  4283.    BEGIN:VFREEBUSY
  4284.    ORGANIZER:Mailto:A@example.com
  4285.    ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
  4286.    ATTENDEE:Mailto:B@example.com
  4287.    ATTENDEE:Mailto:C@example.com
  4288.    DTSTAMP:19970613T190000Z
  4289.    DTSTART:19970701T080000Z
  4290.    DTEND:19970701T200000
  4291.    UID:calsrv.example.com-873970198738777@example.com
  4292.    END:VFREEBUSY
  4293.    END:VCALENDAR
  4294.  
  4295. 4.3.2 Reply To A Busy Time Request
  4296.  
  4297.    "B" sends a "REPLY" method type of a "VFREEBUSY" calendar component
  4298.    to "A"
  4299.  
  4300.    BEGIN:VCALENDAR
  4301.    PRODID:-//ACME/DesktopCalendar//EN
  4302.    METHOD:REPLY
  4303.    VERSION:2.0
  4304.    BEGIN:VFREEBUSY
  4305.    ORGANIZER:MAILTO:A@example.com
  4306.    ATTENDEE:Mailto:B@example.com
  4307.    DTSTART:19970701T080000Z
  4308.    DTEND:19970701T200000Z
  4309.    UID:calsrv.example.com-873970198738777@example.com
  4310.    FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M
  4311.  
  4312.  
  4313.  
  4314. Silverberg, et. al.         Standards Track                    [Page 77]
  4315.  
  4316. RFC 2446                          iTIP                     November 1998
  4317.  
  4318.  
  4319.    DTSTAMP:19970613T190030Z
  4320.    END:VFREEBUSY
  4321.    END:VCALENDAR
  4322.  
  4323.    "B" is busy from 09:00 to 10:00 and from 14:00 to 14:30.
  4324.  
  4325. 4.4 Recurring Event and Time Zone Examples
  4326.  
  4327. 4.4.1 A Recurring Event Spanning Time Zones
  4328.  
  4329.    This event describes a weekly phone conference. The "Attendees" are
  4330.    each in a different time zone.
  4331.  
  4332.    BEGIN:VCALENDAR
  4333.    PRODID:-//ACME/DesktopCalendar//EN
  4334.    METHOD:REQUEST
  4335.    VERSION:2.0
  4336.    BEGIN:VTIMEZONE
  4337.    TZID:America-SanJose
  4338.    TZURL:http://zones.stds_r_us.net/tz/America-SanJose
  4339.    BEGIN:STANDARD
  4340.    DTSTART:19671029T020000
  4341.    RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
  4342.    TZOFFSETFROM:-0700
  4343.    TZOFFSETTO:-0800
  4344.    TZNAME:PST
  4345.    END:STANDARD
  4346.    BEGIN:DAYLIGHT
  4347.    DTSTART:19870405T020000
  4348.    RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
  4349.    TZOFFSETFROM:-0800
  4350.    TZOFFSETTO:-0700
  4351.    TZNAME:PDT
  4352.    END:DAYLIGHT
  4353.    END:VTIMEZONE
  4354.    BEGIN:VEVENT
  4355.    ORGANIZER:Mailto:A@example.com
  4356.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:A@example.COM
  4357.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:B@example.fr
  4358.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:c@example.jp
  4359.    DTSTAMP:19970613T190030Z
  4360.    DTSTART;TZID=America-SanJose:19970701T140000
  4361.    DTEND;TZID=America-SanJose:19970701T150000
  4362.    RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU
  4363.    RDATE;TZID=America-SanJose:19970910T140000
  4364.    EXDATE;TZID=America-SanJose:19970909T140000
  4365.    EXDATE;TZID=America-SanJose:19971028T140000
  4366.    SUMMARY:Weekly Phone Conference
  4367.  
  4368.  
  4369.  
  4370. Silverberg, et. al.         Standards Track                    [Page 78]
  4371.  
  4372. RFC 2446                          iTIP                     November 1998
  4373.  
  4374.  
  4375.    UID:calsrv.example.com-873970198738777@example.com
  4376.    SEQUENCE:0
  4377.    STATUS:CONFIRMED
  4378.    END:VEVENT
  4379.    END:VCALENDAR
  4380.  
  4381.    The first two components of this iCalendar object are the time zone
  4382.    components. The "DTSTART" date coincides with the first instance of
  4383.    the RRULE property.
  4384.  
  4385.    The recurring meeting is defined in a particular time zone,
  4386.    presumably that of the originator. The client for each "Attendee" has
  4387.    the responsibility of determining the recurrence time in the
  4388.    "Attendee's" time zone.
  4389.  
  4390.    The repeating event starts on Tuesday, July 1, 1997 at 2:00pm PDT.
  4391.    "Attendee" B@example.fr is in France where the local time on this
  4392.    date is 9 hours ahead of PDT or 23:00. "Attendee" C@example.jp is in
  4393.    Japan where local time is 8 hours ahead of UTC or Wednesday, July 2
  4394.    at 06:00.  The event repeats weekly on Tuesdays (in PST/PDT). The
  4395.    "RRULE" property results in 20 instances. The last instance falls on
  4396.    Tuesday, November 11, 1997 2:00pm PDT. The "RDATE" property adds
  4397.    another instance: WED, 10-SEP-1997 2:00 PM PST.
  4398.  
  4399.    There are two exceptions to this recurring appointment. The first one
  4400.    is:
  4401.  
  4402.    TUE, 09-SEP-1997 23:00 GMT
  4403.    TUE, 09-SEP-1997 14:00 PDT
  4404.    WED, 10-SEP-1997 06:00 JST
  4405.  
  4406.    and the second is:
  4407.  
  4408.    TUE, 28-OCT-1997 23:00 GMT
  4409.    TUE, 28-OCT-1997 14:00 PST
  4410.    WED, 29-OCT-1997 06:00 JST
  4411.  
  4412. 4.4.2 Modify A Recurring Instance
  4413.  
  4414.    In this example the "Organizer" issues a recurring meeting. Later the
  4415.    "Organizer" changes an instance of the event by changing the
  4416.    "DTSTART" property. Note the use of "RECURRENCE-ID" property and
  4417.    "SEQUENCE" property in the second request.
  4418.  
  4419.    Original Request:
  4420.  
  4421.    BEGIN:VCALENDAR
  4422.    METHOD:REQUEST
  4423.  
  4424.  
  4425.  
  4426. Silverberg, et. al.         Standards Track                    [Page 79]
  4427.  
  4428. RFC 2446                          iTIP                     November 1998
  4429.  
  4430.  
  4431.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4432.    VERSION:2.0
  4433.    BEGIN:VEVENT
  4434.    UID:guid-1@host1.com
  4435.    SEQUENCE:0
  4436.    RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
  4437.    ORGANIZER:Mailto:A@example.com
  4438.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4439.    ATTENDEE:Mailto:B@example.com
  4440.    ATTENDEE:Mailto:C@example.com
  4441.    ATTENDEE:Mailto:D@example.com
  4442.    DESCRIPTION:IETF-C&S Conference Call
  4443.    CLASS:PUBLIC
  4444.    SUMMARY:IETF Calendaring Working Group Meeting
  4445.    DTSTART:19970601T210000Z
  4446.    DTEND:19970601T220000Z
  4447.    LOCATION:Conference Call
  4448.    DTSTAMP:19970526T083000Z
  4449.    STATUS:CONFIRMED
  4450.    END:VEVENT
  4451.    END:VCALENDAR
  4452.  
  4453.    The event request below is to change the time of a specific instance.
  4454.    This changes the July 1st instance to July 3rd.
  4455.  
  4456.    BEGIN:VCALENDAR
  4457.    METHOD:REQUEST
  4458.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4459.    VERSION:2.0
  4460.    BEGIN:VEVENT
  4461.    UID:guid-1@host1com
  4462.    RECURRENCE-ID:19970701T210000Z
  4463.    SEQUENCE:1
  4464.    ORGANIZER:Mailto:A@example.com
  4465.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4466.    ATTENDEE:Mailto:B@example.com
  4467.    ATTENDEE:Mailto:C@example.com
  4468.    ATTENDEE:Mailto:D@example.com
  4469.    DESCRIPTION:IETF-C&S Conference Call
  4470.    CLASS:PUBLIC
  4471.    SUMMARY:IETF Calendaring Working Group Meeting
  4472.    DTSTART:19970703T210000Z
  4473.    DTEND:19970703T220000Z
  4474.    LOCATION:Conference Call
  4475.    DTSTAMP:19970626T093000Z
  4476.    STATUS:CONFIRMED
  4477.    END:VEVENT
  4478.    END:VCALENDAR
  4479.  
  4480.  
  4481.  
  4482. Silverberg, et. al.         Standards Track                    [Page 80]
  4483.  
  4484. RFC 2446                          iTIP                     November 1998
  4485.  
  4486.  
  4487. 4.4.3 Cancel an Instance
  4488.  
  4489.    In this example the "Organizer" of a recurring event deletes the
  4490.    August 1st instance.
  4491.  
  4492.    BEGIN:VCALENDAR
  4493.    METHOD:CANCEL
  4494.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4495.    VERSION:2.0
  4496.    BEGIN:VEVENT
  4497.    UID:guid-1@host1.com
  4498.    ORGANIZER:Mailto:A@example.com
  4499.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4500.    ATTENDEE:Mailto:B@example.com
  4501.    ATTENDEE:Mailto:C@example.com
  4502.    ATTENDEE:Mailto:D@example.com
  4503.    RECURRENCE-ID:19970801T210000Z
  4504.    SEQUENCE:2
  4505.    STATUS:CANCELLED
  4506.    DTSTAMP:19970721T093000Z
  4507.    END:VEVENT
  4508.    END:VCALENDAR
  4509.  
  4510. 4.4.4 Cancel Recurring Event
  4511.  
  4512.    In this example the "Organizer" wishes to cancel the entire recurring
  4513.    event and any exceptions.
  4514.  
  4515.    BEGIN:VCALENDAR
  4516.    METHOD:CANCEL
  4517.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4518.    VERSION:2.0
  4519.    BEGIN:VEVENT
  4520.    UID:guid-1@host1.com
  4521.    ORGANIZER:Mailto:A@example.com
  4522.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4523.    ATTENDEE:Mailto:B@example.com
  4524.    ATTENDEE:Mailto:C@example.com
  4525.    ATTENDEE:Mailto:D@example.com
  4526.    DTSTAMP:19970721T103000Z
  4527.    STATUS:CANCELLED
  4528.    SEQUENCE:3
  4529.    END:VEVENT
  4530.    END:VCALENDAR
  4531.  
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538. Silverberg, et. al.         Standards Track                    [Page 81]
  4539.  
  4540. RFC 2446                          iTIP                     November 1998
  4541.  
  4542.  
  4543. 4.4.5 Change All Future Instances
  4544.  
  4545.    This example changes the meeting location from a conference call to
  4546.    Seattle starting September 1 and extends to all future instances.
  4547.  
  4548.    BEGIN:VCALENDAR
  4549.    METHOD:REQUEST
  4550.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4551.    VERSION:2.0
  4552.    BEGIN:VEVENT
  4553.    UID:guid-1@host1.com
  4554.    RECURRENCE-ID;THISANDFUTURE:19970901T210000Z
  4555.    SEQUENCE:3
  4556.    ORGANIZER:Mailto:A@example.com
  4557.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4558.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4559.    ATTENDEE;RSVP=TRUE:Mailto:C@example.com
  4560.    ATTENDEE;RSVP=TRUE:Mailto:D@example.com
  4561.    DESCRIPTION:IETF-C&S Discussion
  4562.    CLASS:PUBLIC
  4563.    SUMMARY:IETF Calendaring Working Group Meeting
  4564.    DTSTART:19970901T210000Z
  4565.    DTEND:19970901T220000Z
  4566.    LOCATION:Building 32, Microsoft, Seattle, WA
  4567.    DTSTAMP:19970526T083000Z
  4568.    STATUS:CONFIRMED
  4569.    END:VEVENT
  4570.    END:VCALENDAR
  4571.  
  4572. 4.4.6 Add A New Instance To A Recurring Event
  4573.  
  4574.    This example adds a one-time additional instance to the recurring
  4575.    event.  "Organizer" adds a second July meeting on the 15th.
  4576.  
  4577.    BEGIN:VCALENDAR
  4578.    METHOD:ADD
  4579.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4580.    VERSION:2.0
  4581.    BEGIN:VEVENT
  4582.    UID:123456789@host1.com
  4583.    SEQUENCE:4
  4584.    ORGANIZER:Mailto:A@example.com
  4585.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4586.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4587.    ATTENDEE;RSVP=TRUE:Mailto:C@example.com
  4588.    ATTENDEE;RSVP=TRUE:Mailto:D@example.com
  4589.    DESCRIPTION:IETF-C&S Conference Call
  4590.    CLASS:PUBLIC
  4591.  
  4592.  
  4593.  
  4594. Silverberg, et. al.         Standards Track                    [Page 82]
  4595.  
  4596. RFC 2446                          iTIP                     November 1998
  4597.  
  4598.  
  4599.    SUMMARY:IETF Calendaring Working Group Meeting
  4600.    DTSTART:19970715T210000Z
  4601.    DTEND:19970715T220000Z
  4602.    LOCATION:Conference Call
  4603.    DTSTAMP:19970629T093000Z
  4604.    STATUS:CONFIRMED
  4605.    END:VEVENT
  4606.    END:VCALENDAR
  4607.  
  4608. 4.4.7 Add A New Series of Instances To A Recurring Event
  4609.  
  4610.    The scenario for this example involves an ongoing meeting, originally
  4611.    set up to occur every Tuesday.  The "Organizer" later decides that
  4612.    the meetings need to be on Tuesdays and Thursdays, but does not want
  4613.    to reschedule the entire meeting or lose any of the per-instance
  4614.    information already collected.
  4615.  
  4616.    The original event:
  4617.  
  4618.    BEGIN:VCALENDAR
  4619.    METHOD:REQUEST
  4620.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4621.    VERSION:2.0
  4622.    BEGIN:VEVENT
  4623.    UID:123456789@host1.com
  4624.    SEQUENCE:0
  4625.    RRULE:WKST=SU;BYDAY=TU;FREQ=WEEKLY
  4626.    ORGANIZER:Mailto:A@example.com
  4627.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4628.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4629.    SUMMARY:Review Accounts
  4630.    DTSTART:19980303T210000Z
  4631.    DTEND:19980303T220000Z
  4632.    LOCATION:The White Room
  4633.    DTSTAMP:19980301T093000Z
  4634.    STATUS:CONFIRMED
  4635.    END:VEVENT
  4636.    END:VCALENDAR
  4637.  
  4638.    Assume that many other updates happen to this event and that a lot of
  4639.    instance-specific information exists in the recurring series. The
  4640.    "SEQUENCE" property value is 7 for the next update. Now the
  4641.    "Organizer" wants to add Thursdays to the event:
  4642.  
  4643.    BEGIN:VCALENDAR
  4644.    METHOD:ADD
  4645.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4646.    VERSION:2.0
  4647.  
  4648.  
  4649.  
  4650. Silverberg, et. al.         Standards Track                    [Page 83]
  4651.  
  4652. RFC 2446                          iTIP                     November 1998
  4653.  
  4654.  
  4655.    BEGIN:VEVENT
  4656.    UID:123456789@host1.com
  4657.    SEQUENCE:7
  4658.    RRULE:WKST=SU;BYDAY=TH;FREQ=WEEKLY
  4659.    ORGANIZER:Mailto:A@example.com
  4660.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4661.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4662.    SUMMARY:Review Accounts
  4663.    DTSTART:19980303T210000Z
  4664.    DTEND:19980303T220000Z
  4665.    DTSTAMP:19980303T193000Z
  4666.    LOCATION:The Usual conference room
  4667.    STATUS:CONFIRMED
  4668.    END:VEVENT
  4669.    END:VCALENDAR
  4670.  
  4671.    Alternatively, if the "Organizer" is not concerned with per-instance
  4672.    updates, the entire event can be rescheduled using a "REQUEST". This
  4673.    is done by using the "UID" of the event to reschedule and including
  4674.    the modified "RRULE". Note, that since this is an entire rescheduling
  4675.    of the event, any instance-specific information will be lost.
  4676.  
  4677.    BEGIN:VCALENDAR
  4678.    METHOD:REQUEST
  4679.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4680.    VERSION:2.0
  4681.    BEGIN:VEVENT
  4682.    UID:123456789@host1.com
  4683.    SEQUENCE:7
  4684.    RRULE:WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY
  4685.    ORGANIZER:Mailto:A@example.com
  4686.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4687.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4688.    SUMMARY:Review Accounts
  4689.    DTSTART:19980303T210000Z
  4690.    DTEND:19980303T220000Z
  4691.    DTSTAMP:19980303T193000Z
  4692.    LOCATION:The White Room
  4693.    STATUS:CONFIRMED
  4694.    END:VEVENT
  4695.    END:VCALENDAR
  4696.  
  4697.    The next series of examples illustrate how an "Organizer" would
  4698.    respond to a "REFRESH" submitted by an "Attendee" after a series of
  4699.    instance-specific modifications. To convey all instance-specific
  4700.    changes, the "Organizer" must provide the latest event description
  4701.    and the relevant instances. The first three examples show the history
  4702.    including the initial "VEVENT" request and subsequent instance
  4703.  
  4704.  
  4705.  
  4706. Silverberg, et. al.         Standards Track                    [Page 84]
  4707.  
  4708. RFC 2446                          iTIP                     November 1998
  4709.  
  4710.  
  4711.    changes and finally the "REFRESH".
  4712.  
  4713.    Original Request:
  4714.  
  4715.    BEGIN:VCALENDAR
  4716.    METHOD:REQUEST
  4717.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4718.    VERSION:2.0
  4719.    BEGIN:VEVENT
  4720.    UID:123456789@host1.com
  4721.    SEQUENCE:0
  4722.    RDATE:19980304T180000Z
  4723.    RDATE:19980311T180000Z
  4724.    RDATE:19980318T180000Z
  4725.    ORGANIZER:Mailto:A@example.com
  4726.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4727.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4728.    SUMMARY:Review Accounts
  4729.    DTSTART:19980304T180000Z
  4730.    DTEND:19980304T200000Z
  4731.    DTSTAMP:19980303T193000Z
  4732.    LOCATION:Conference Room A
  4733.    STATUS:CONFIRMED
  4734.    END:VEVENT
  4735.    END:VCALENDAR
  4736.  
  4737.    Organizer changes 2nd instance Location and Time:
  4738.  
  4739.    BEGIN:VCALENDAR
  4740.    METHOD:REQUEST
  4741.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4742.    VERSION:2.0
  4743.    BEGIN:VEVENT
  4744.    UID:123456789@host1.com
  4745.    SEQUENCE:1
  4746.    RECURRENCE-ID:19980311T180000Z
  4747.    ORGANIZER:Mailto:A@example.com
  4748.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4749.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4750.    SUMMARY:Review Accounts
  4751.    DTSTART:19980311T160000Z
  4752.    DTEND:19980311T180000Z
  4753.    DTSTAMP:19980306T193000Z
  4754.    LOCATION:The Small conference room
  4755.    STATUS:CONFIRMED
  4756.    END:VEVENT
  4757.    END:VCALENDAR
  4758.  
  4759.  
  4760.  
  4761.  
  4762. Silverberg, et. al.         Standards Track                    [Page 85]
  4763.  
  4764. RFC 2446                          iTIP                     November 1998
  4765.  
  4766.  
  4767.    Organizer adds a 4th instance of the meeting using the "ADD" method
  4768.  
  4769.    BEGIN:VCALENDAR
  4770.    METHOD:ADD
  4771.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4772.    VERSION:2.0
  4773.    BEGIN:VEVENT
  4774.    UID:123456789@host1.com
  4775.    SEQUENCE:2
  4776.    ORGANIZER:Mailto:A@example.com
  4777.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4778.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4779.    SUMMARY:Review Accounts
  4780.    DTSTART:19980315T180000Z
  4781.    DTEND:19980315T200000Z
  4782.    DTSTAMP:19980307T193000Z
  4783.    LOCATION:Conference Room A
  4784.    STATUS:CONFIRMED
  4785.    END:VEVENT
  4786.    END:VCALENDAR
  4787.  
  4788.    If "B" requests a "REFRESH", "A" responds with the following to
  4789.    capture all instance-specific data. In this case both the initial
  4790.    request and an additional "VEVENT" that specifies the instance-
  4791.    specific data are included. Because these are both of the same type
  4792.    (they are both "VEVENTS"), they can be conveyed in the same iCalendar
  4793.    object.
  4794.  
  4795.    BEGIN:VCALENDAR
  4796.    METHOD:REQUEST
  4797.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4798.    VERSION:2.0
  4799.    BEGIN:VEVENT
  4800.    UID:123456789@host1.com
  4801.    SEQUENCE:2
  4802.    RDATE:19980304T180000Z
  4803.    RDATE:19980311T160000Z
  4804.    RDATE:19980315T180000Z
  4805.    Error! Bookmark not defined.
  4806.    ORGANIZER:Mailto:A@example.com
  4807.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  4808.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4809.    SUMMARY:Review Accounts
  4810.    DTSTART:19980304T180000Z
  4811.    DTEND:19980304T200000Z
  4812.    DTSTAMP:19980303T193000Z
  4813.    LOCATION:Conference Room A
  4814.    STATUS:CONFIRMED
  4815.  
  4816.  
  4817.  
  4818. Silverberg, et. al.         Standards Track                    [Page 86]
  4819.  
  4820. RFC 2446                          iTIP                     November 1998
  4821.  
  4822.  
  4823.    END:VEVENT
  4824.  
  4825.    BEGIN:VEVENT
  4826.    Error! Bookmark not defined.
  4827.    SEQUENCE:2
  4828.    RECURRENCE-ID:19980311T160000Z
  4829.    Error! Bookmark not defined.
  4830.    ATTENDEE;ROLE=CHAIR;Error! Bookmark not defined.
  4831.    ATTENDEE;Error! Bookmark not defined.
  4832.    SUMMARY:Review Accounts
  4833.    DTSTART:19980311T160000Z
  4834.    DTEND:19980304T180000Z
  4835.    DTSTAMP:19980306T193000Z
  4836.    LOCATION:The Small conference room
  4837.    STATUS:CONFIRMED
  4838.    END:VEVENT
  4839.  
  4840.    END:VCALENDAR
  4841.  
  4842. 4.4.8 Counter An Instance Of A Recurring Event
  4843.  
  4844.    In this example one of the "Attendees" counters the "DTSTART"
  4845.    property of the proposed second July meeting.
  4846.  
  4847.    BEGIN:VCALENDAR
  4848.    METHOD:COUNTER
  4849.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4850.    VERSION:2.0
  4851.    BEGIN:VEVENT
  4852.    UID:guid-1@host1.com
  4853.    RECURRENCE-ID:19970715T210000Z
  4854.    SEQUENCE:4
  4855.    ORGANIZER:Mailto:A@example.com
  4856.    ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com
  4857.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4858.    ATTENDEE;RSVP=TRUE:Mailto:C@example.com
  4859.    ATTENDEE;RSVP=TRUE:Mailto:D@example.com
  4860.    DESCRIPTION:IETF-C&S Conference Call
  4861.    CLASS:PUBLIC
  4862.    SUMMARY:IETF Calendaring Working Group Meeting
  4863.    DTSTART:19970715T220000Z
  4864.    DTEND:19970715T230000Z
  4865.    LOCATION:Conference Call
  4866.    COMMENT:May we bump this by an hour? I have a conflict
  4867.    DTSTAMP:19970629T094000Z
  4868.    END:VEVENT
  4869.    END:VCALENDAR
  4870.  
  4871.  
  4872.  
  4873.  
  4874. Silverberg, et. al.         Standards Track                    [Page 87]
  4875.  
  4876. RFC 2446                          iTIP                     November 1998
  4877.  
  4878.  
  4879. 4.4.9 Error Reply To A Request
  4880.  
  4881.    The following example illustrates a scenario where a meeting is
  4882.    proposed containing an unsupported property and a bad property.
  4883.  
  4884.    Original Request
  4885.  
  4886.    BEGIN:VCALENDAR
  4887.    METHOD:REQUEST
  4888.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4889.    VERSION:2.0
  4890.    BEGIN:VEVENT
  4891.    UID:guid-1@host1.com
  4892.    SEQUENCE:0
  4893.    RRULE:FREQ=MONTHLY;BYMONTHDAY=1
  4894.    ORGANIZER:Mailto:A@example.com
  4895.    ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
  4896.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  4897.    ATTENDEE;RSVP=TRUE:Mailto:C@example.com
  4898.    ATTENDEE;RSVP=TRUE:Mailto:D@example.com
  4899.    DESCRIPTION:IETF-C&S Conference Call
  4900.    CLASS:PUBLIC
  4901.    SUMMARY:IETF Calendaring Working Group Meeting
  4902.    DTSTART:19970601T210000Z
  4903.    DTEND:19970601T220000Z
  4904.    DTSTAMP:19970602T094000Z
  4905.    LOCATION:Conference Call
  4906.    STATUS:CONFIRMED
  4907.    FOO:BAR
  4908.    END:VEVENT
  4909.    END:VCALENDAR
  4910.  
  4911.    Response from "B" to indicate that RRULE is not supported and an
  4912.    unrecognized property was encountered
  4913.  
  4914.    BEGIN:VCALENDAR
  4915.    PRODID:-//RDU Software//NONSGML HandCal//EN
  4916.    METHOD:REPLY
  4917.    VERSION:2.0
  4918.    BEGIN:VEVENT
  4919.    ORGANIZER:Mailto:A@example.com
  4920.    ATTENDEE:Mailto:B@example.com
  4921.    REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single
  4922.      event;RRULE
  4923.    REQUEST-STATUS:3.0;Invalid Property Name;FOO
  4924.    UID:guid-1@host1.com
  4925.    SEQUENCE:0
  4926.    DTSTAMP:19970603T094000Z
  4927.  
  4928.  
  4929.  
  4930. Silverberg, et. al.         Standards Track                    [Page 88]
  4931.  
  4932. RFC 2446                          iTIP                     November 1998
  4933.  
  4934.  
  4935.    END:VEVENT
  4936.    END:VCALENDAR
  4937.  
  4938. 4.5 Group To-do Examples
  4939.  
  4940.    Individual "A" creates a group task in which individuals "A", "B",
  4941.    "C" and "D" will participate. Individual "B" confirms acceptance of
  4942.    the task. Individual "C" declines the task. Individual "D"
  4943.    tentatively accepts the task. The following table illustrates the
  4944.    sequence of messages that would be exchanged between these
  4945.    individuals. Individual "A" then issues a "REQUEST" method to obtain
  4946.    the status of the to-do from each participant. The response indicates
  4947.    the individual "Attendee's" completion status. The table below
  4948.    illustrates the message flow.
  4949.  
  4950. +--------------------------------------------------------------------+
  4951. | Action             |  "Organizer"        | Attendee                |
  4952. +--------------------------------------------------------------------+
  4953. | Initiate a to-do   | "A" sends a REQUEST |                         |
  4954. | request            | message to "B", "C",|                         |
  4955. |                    | and "D"             |                         |
  4956. +--------------------------------------------------------------------+
  4957. | Accept the to-do   |                     | "B" sends a "REPLY"     |
  4958. | request            |                     | message to "A" with its |
  4959. |                    |                     | "partstat" paramater    |
  4960. |                    |                     | set to "accepted".      |
  4961. +--------------------------------------------------------------------+
  4962. | Decline the to-do  |                     | "C" sends a REPLY       |
  4963. | request            |                     | message to "A" with its |
  4964. |                    |                     | "partstat" parameter    |
  4965. |                    |                     | set to "declined".      |
  4966. +--------------------------------------------------------------------+
  4967. | Tentatively accept |                     | "D" sends a REPLY       |
  4968. | the to-do request  |                     | message to "A" with its |
  4969. |                    |                     | "partstat" parameter    |
  4970. |                    |                     | set to "tentative".     |
  4971. +--------------------------------------------------------------------+
  4972. | Check attendee     | "A" sends a REQUEST |                         |
  4973. | completion status  | message to "B" and  |                         |
  4974. |                    | "D" with current    |                         |
  4975. |                    | information.        |                         |
  4976. +--------------------------------------------------------------------+
  4977. | Attendee indicates |                     | "B" sends a "REPLY"     |
  4978. | percent complete   |                     | message indicating      |
  4979. |                    |                     | percent complete        |
  4980.  
  4981.  
  4982.  
  4983.  
  4984.  
  4985.  
  4986. Silverberg, et. al.         Standards Track                    [Page 89]
  4987.  
  4988. RFC 2446                          iTIP                     November 1998
  4989.  
  4990.  
  4991. +--------------------------------------------------------------------+
  4992. | Attendee indicates |                     | "D" sends a "REPLY"     |
  4993. | completion         |                     | message indicating      |
  4994. |                    |                     | completion              |
  4995. +--------------------------------------------------------------------+
  4996.  
  4997. 4.5.1 A VTODO Request
  4998.  
  4999.    A sample "REQUEST" for a "VTODO" calendar component that "A" sends to
  5000.    "B", "C", and "D".
  5001.  
  5002.    BEGIN:VCALENDAR
  5003.    PRODID:-//ACME/DesktopCalendar//EN
  5004.    METHOD:REQUEST
  5005.    VERSION:2.0
  5006.    BEGIN:VTODO
  5007.    ORGANIZER:Mailto:A@example.com
  5008.    ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
  5009.    ATTENDEE;RSVP=TRUE:Mailto:B@example.com
  5010.    ATTENDEE;RSVP=TRUE:Mailto:C@example.com
  5011.    ATTENDEE;RSVP=TRUE:Mailto:D@example.com
  5012.    DTSTART:19970701T170000Z
  5013.    DUE:19970722T170000Z
  5014.    PRIORITY:1
  5015.    SUMMARY:Create the requirements document
  5016.    UID:calsrv.example.com-873970198738777-00@example.com
  5017.    SEQUENCE:0
  5018.    DTSTAMP:19970717T200000Z
  5019.    STATUS:Needs Action
  5020.    END:VTODO
  5021.    END:VCALENDAR
  5022.  
  5023. 4.5.2 A VTODO Reply
  5024.  
  5025.    "B" accepts the to-do.
  5026.  
  5027.    BEGIN:VCALENDAR
  5028.    PRODID:-//ACME/DesktopCalendar//EN
  5029.    METHOD:REPLY
  5030.    VERSION:2.0
  5031.    BEGIN:VTODO
  5032.    ORGANIZER:Mailto:A@example.com
  5033.    ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
  5034.    UID:calsrv.example.com-873970198738777-00@example.com
  5035.    COMMENT:I'll send you my input by e-mail
  5036.    SEQUENCE:0
  5037.    DTSTAMP:19970717T203000Z
  5038.    REQUEST-STATUS:2.0;Success
  5039.  
  5040.  
  5041.  
  5042. Silverberg, et. al.         Standards Track                    [Page 90]
  5043.  
  5044. RFC 2446                          iTIP                     November 1998
  5045.  
  5046.  
  5047.    END:VTODO
  5048.    END:VCALENDAR
  5049.  
  5050.    "B" could have declined the TODO or indicated tentative acceptance by
  5051.    setting the "partstat" property parameter sequence to "declined" or
  5052.    "tentative", respectively.
  5053.  
  5054. 4.5.3 A VTODO Request for Updated Status
  5055.  
  5056.    "A" requests status from all "Attendees".
  5057.  
  5058.    BEGIN:VCALENDAR
  5059.    PRODID:-//ACME/DesktopCalendar//EN
  5060.    METHOD:REQUEST
  5061.    VERSION:2.0
  5062.    BEGIN:VTODO
  5063.    ORGANIZER:Mailto:A@example.com
  5064.    ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
  5065.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
  5066.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
  5067.    UID:calsrv.example.com-873970198738777-00@example.com
  5068.    SUMMARY:Create the requirements document
  5069.    PRIORITY:1
  5070.    SEQUENCE:0
  5071.    STATUS:IN-PROCESS
  5072.    DTSTART:19970701T170000Z
  5073.    DTSTAMP:19970717T230000Z
  5074.    END:VTODO
  5075.    END:VCALENDAR
  5076.  
  5077. 4.5.4 A Reply: Percent-Complete
  5078.  
  5079.    A reply indicating the task being worked on and that "B" is 75%
  5080.    complete with "B's" part of the assignment.
  5081.  
  5082.    BEGIN:VCALENDAR
  5083.    PRODID:-//ACME/DesktopCalendar//EN
  5084.    METHOD:REPLY
  5085.    VERSION:2.0
  5086.    BEGIN:VTODO
  5087.    ORGANIZER:MAILTO:A@example.com
  5088.    ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
  5089.    PERCENT-COMPLETE:75
  5090.    UID:calsrv.example.com-873970198738777-00@example.com
  5091.    DTSTAMP:19970717T233000Z
  5092.    SEQUENCE:0
  5093.    END:VTODO
  5094.    END:VCALENDAR
  5095.  
  5096.  
  5097.  
  5098. Silverberg, et. al.         Standards Track                    [Page 91]
  5099.  
  5100. RFC 2446                          iTIP                     November 1998
  5101.  
  5102.  
  5103. 4.5.5 A Reply: Completed
  5104.  
  5105.    A reply indicating that "D" completed "D's" part of the assignment.
  5106.  
  5107.    BEGIN:VCALENDAR
  5108.    PRODID:-//ACME/DesktopCalendar//EN
  5109.    METHOD:REPLY
  5110.    VERSION:2.0
  5111.    BEGIN:VTODO
  5112.    ORGANIZER:MAILTO:A@example.com
  5113.    ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com
  5114.    UID:calsrv.example.com-873970198738777-00@example.com
  5115.    DTSTAMP:19970717T233000Z
  5116.    SEQUENCE:0
  5117.    END:VTODO
  5118.    END:VCALENDAR
  5119.  
  5120. 4.5.6 An Updated VTODO Request
  5121.  
  5122.    Organizer "A" resends the "VTODO" calendar component. "A" sets the
  5123.    overall completion for the to-do at 40%.
  5124.  
  5125.    BEGIN:VCALENDAR
  5126.    PRODID:-//ACME/DesktopCalendar//EN
  5127.    METHOD:REQUEST
  5128.    VERSION:2.0
  5129.    BEGIN:VTODO
  5130.    ORGANIZER:Mailto:A@example.com
  5131.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  5132.    ATTENDEE;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:Mailto:B@example.com
  5133.    ATTENDEE;PARTSTAT=IN-PROCESS;TYPE=INDIVIDUAL:Mailto:D@example.com
  5134.    DTSTART:19970701T170000Z
  5135.    DUE:19970722T170000Z
  5136.    PRIORITY:1
  5137.    SUMMARY:Create the requirements document
  5138.    UID:calsrv.example.com-873970198738777-00@example.com
  5139.    SEQUENCE:1
  5140.    DTSTAMP:19970718T100000Z
  5141.    STATUS:IN-PROGRESS
  5142.    PERCENT-COMPLETE:40
  5143.    END:VTODO
  5144.    END:VCALENDAR
  5145.  
  5146. 4.5.7 Recurring VTODOs
  5147.  
  5148.    The following examples relate to recurring "VTODO" calendar
  5149.    components.
  5150.  
  5151.  
  5152.  
  5153.  
  5154. Silverberg, et. al.         Standards Track                    [Page 92]
  5155.  
  5156. RFC 2446                          iTIP                     November 1998
  5157.  
  5158.  
  5159. 4.5.7.1 Request for a Recurring VTODO
  5160.  
  5161.    In this example "A" sends a recurring "VTODO" calendar component to
  5162.    "B" and "D".
  5163.  
  5164.    BEGIN:VCALENDAR
  5165.    PRODID:-//ACME/DesktopCalendar//EN
  5166.    METHOD:REQUEST
  5167.    VERSION:2.0
  5168.    BEGIN:VTODO
  5169.    ORGANIZER:Mailto:A@example.com
  5170.    ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
  5171.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
  5172.    ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
  5173.    RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
  5174.    DTSTART:19980101T100000-0700
  5175.    DUE:19980103T100000-0700
  5176.    SUMMARY:Send Status Reports to Area Managers
  5177.    UID:calsrv.example.com-873970198738777-00@example.com
  5178.    SEQUENCE:0
  5179.    DTSTAMP:19970717T200000Z
  5180.    STATUS:NEEDS ACTION
  5181.    PRIORITY:1
  5182.    END:VTODO
  5183.    END:VCALENDAR
  5184.  
  5185. 4.5.7.2 Calculating due dates in recurring VTODOs
  5186.  
  5187.    The due date in a recurring "VTODO" calendar component is either a
  5188.    fixed interval specified in the "REQUEST" method or specified using
  5189.    the "RECURRENCE-ID" property. The former is calculated by applying
  5190.    the difference between "DTSTART" and "DUE" properties and applying it
  5191.    to each of the start of each recurring instance. Hence, if the
  5192.    initial "VTODO" calendar component specifies a "DTSTART" property
  5193.    value of "19970701T190000Z" and a "DUE" property value of
  5194.    "19970801T190000Z" the interval of one day which is applied to each
  5195.    recurring instance of the "VTODO" calendar component to determine the
  5196.    "DUE" date of the instance.
  5197.  
  5198. 4.5.7.3 Replying to an instance of a recurring VTODO
  5199.  
  5200.    In this example "B" updates "A" on a single instance of the "VTODO"
  5201.    calendar component.
  5202.  
  5203.    BEGIN:VCALENDAR
  5204.    PRODID:-//ACME/DesktopCalendar//EN
  5205.    METHOD:REPLY
  5206.    VERSION:2.0
  5207.  
  5208.  
  5209.  
  5210. Silverberg, et. al.         Standards Track                    [Page 93]
  5211.  
  5212. RFC 2446                          iTIP                     November 1998
  5213.  
  5214.  
  5215.    BEGIN:VTODO
  5216.    ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
  5217.    PERCENT-COMPLETE:75
  5218.    UID:calsrv.example.com-873970198738777-00@example.com
  5219.    DTSTAMP:19970717T233000Z
  5220.    RECURRENCE-ID:19980101T170000Z
  5221.    SEQUENCE:1
  5222.    END:VTODO
  5223.    END:VCALENDAR
  5224.  
  5225. 4.6 Journal Examples
  5226.  
  5227.    The iCalendar object below describes a single journal entry for
  5228.    October 2, 1997. The "RELATED-TO" property references the phone
  5229.    conference event for which minutes were taken.
  5230.  
  5231.    BEGIN:VCALENDAR
  5232.    METHOD:PUBLISH
  5233.    PRODID:-//ACME/DesktopCalendar//EN
  5234.    VERSION:2.0
  5235.    BEGIN:VJOURNAL
  5236.    DTSTART:19971002T200000Z
  5237.    ORGANIZER:MAILTO:A@Example.com
  5238.    SUMMARY:Phone conference minutes
  5239.    DESCRIPTION:The editors meeting was held on October 1, 1997.
  5240.      Details are in the attached document.
  5241.    UID:0981234-1234234-2410@example.com
  5242.    RELATED-TO:0981234-1234234-2402-35@example.com
  5243.    ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt
  5244.    END:VJOURNAL
  5245.    END:VCALENDAR
  5246.  
  5247. 4.7 Other Examples
  5248.  
  5249. 4.7.1 Event Refresh
  5250.  
  5251.    Refresh the event with "UID" property value of "guid-1-
  5252.    12345@host1.com":
  5253.  
  5254.    BEGIN:VCALENDAR
  5255.    PRODID:-//RDU Software//NONSGML HandCal//EN
  5256.    METHOD:REFRESH
  5257.    VERSION:2.0
  5258.    BEGIN:VEVENT
  5259.    ORGANIZER:Mailto:A@example.com
  5260.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  5261.    ATTENDEE:Mailto:B@example.com
  5262.    ATTENDEE:Mailto:C@example.com
  5263.  
  5264.  
  5265.  
  5266. Silverberg, et. al.         Standards Track                    [Page 94]
  5267.  
  5268. RFC 2446                          iTIP                     November 1998
  5269.  
  5270.  
  5271.    ATTENDEE:Mailto:D@example.com
  5272.    UID: guid-1-12345@host1.com
  5273.    DTSTAMP:19970603T094000
  5274.    END:VEVENT
  5275.    END:VCALENDAR
  5276.  
  5277. 4.7.2 Bad RECURRENCE-ID
  5278.  
  5279.    Component instances are identified by the combination of "UID",
  5280.    "RECURRENCE-ID", and "SEQUENCE". When an "Organizer" sends a request
  5281.    to an "Attendee", there are three cases in which an instance cannot
  5282.    be found.  They are:
  5283.  
  5284.    1.  The component with the referenced "UID" and "RECURRENCE-ID" has
  5285.        been found but the "SEQUENCE" number in the calendar store does
  5286.        not match that of the ITIP message.
  5287.  
  5288.    2.  The component with the referenced "UID" has been found, the
  5289.        "SEQUENCE" numbers match, but the "RECURRENCE-ID" cannot be
  5290.        found.
  5291.  
  5292.    3.  The "UID" and "SEQUENCE" numbers are found but the CUA does not
  5293.        support recurrences.
  5294.  
  5295.    In case (1), two things can happen. If the "SEQUENCE" number of the
  5296.    "Attendee's" instance is larger than that in the "Organizer's"
  5297.    message then the "Attendee" is receiving an out-of-sequence message
  5298.    and MUST ignore it.  If the "SEQUENCE" number of the "Attendee's"
  5299.    instance is smaller, then the "Organizer" is sending out a newer
  5300.    version of the component and the "Attendee's" version needs to be
  5301.    updated. Since one or more updates have been missed, the "Attendee"
  5302.    SHOULD send a "REFRESH" message to the "Organizer" to get an updated
  5303.    version of the event.
  5304.  
  5305.    In case (2), something has gone wrong.  Both the "Organizer" and the
  5306.    "Attendee" should have the same instances, but the "Attendee" does
  5307.    not have the referenced instance.  In this case the "Attendee" SHOULD
  5308.    send a "REFRESH" to the "Organizer" to get an updated version of the
  5309.    event.
  5310.  
  5311.    In case (3), the limitations of the "Attendee's" CUA makes it
  5312.    impossible to match an instance other than the single instance
  5313.    scheduled. In this case, the "Attendee" need not send a "REFRESH" to
  5314.    the "Organizer".
  5315.  
  5316.    The example below shows a sequence in which an "Attendee" sends a
  5317.    "REFRESH" to the "Organizer".
  5318.  
  5319.  
  5320.  
  5321.  
  5322. Silverberg, et. al.         Standards Track                    [Page 95]
  5323.  
  5324. RFC 2446                          iTIP                     November 1998
  5325.  
  5326.  
  5327. +--------------------------------------------------------------------+
  5328. | Action             |  "Organizer"        | Attendee                |
  5329. +--------------------------------------------------------------------+
  5330. | Update an instance | "A" sends  "REQUEST"|                         |
  5331. | request            | message to "B"      |                         |
  5332. +--------------------------------------------------------------------+
  5333. | Attendee requests  |                     | "B" sends a "REFRESH"   |
  5334. | refresh because    |                     | message to "A"          |
  5335. | "RECURRENCE-ID" was|                     |                         |
  5336. | not found          |                     |                         |
  5337. +--------------------------------------------------------------------+
  5338. | Refresh the entire | "A" sends the       |                         |
  5339. | Event              | latest copy of the  |                         |
  5340. |                    | Event to "B"        |                         |
  5341. +--------------------------------------------------------------------+
  5342. | Attendee handles   |                     | "B" updates to the      |
  5343. | the request and    |                     | latest copy of the      |
  5344. | updates the        |                     | meeting.                |
  5345. | instance           |                     |                         |
  5346. +--------------------------------------------------------------------+
  5347.  
  5348.    Request from "A":
  5349.  
  5350.    BEGIN:VCALENDAR
  5351.    METHOD:REQUEST
  5352.    PRODID:-//RDU Software//NONSGML HandCal//EN
  5353.    VERSION:2.0
  5354.    BEGIN:VEVENT
  5355.    UID:acme-12345@host1.com
  5356.    SEQUENCE:3
  5357.    RRULE:FREQ=WEEKLY
  5358.    RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z
  5359.    ORGANIZER:Mailto:A@example.com
  5360.    ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
  5361.    ATTENDEE:Mailto:B@example.com
  5362.    DESCRIPTION:IETF-C&S Conference Call
  5363.    SUMMARY:IETF Calendaring Working Group Meeting
  5364.    DTSTART:19970801T210000Z
  5365.    DTEND:19970801T220000Z
  5366.    RECURRENCE-ID:19970809T210000Z
  5367.    DTSTAMP:19970726T083000
  5368.    STATUS:CONFIRMED
  5369.    END:VEVENT
  5370.    END:VCALENDAR
  5371.  
  5372.    "B" has the event with "UID" property "acme-12345@host1.com" but
  5373.    "B's" "SEQUENCE" property value is "1" and the event does not have an
  5374.    instance at the specified recurrence time. This means that "B" has
  5375.  
  5376.  
  5377.  
  5378. Silverberg, et. al.         Standards Track                    [Page 96]
  5379.  
  5380. RFC 2446                          iTIP                     November 1998
  5381.  
  5382.  
  5383.    missed at least one update and needs a new copy of the event.  "B"
  5384.    requests the latest copy of the event with the following refresh
  5385.    message:
  5386.  
  5387.    BEGIN:VCALENDAR
  5388.    PRODID:-//RDU Software//NONSGML HandCal//EN
  5389.    METHOD:REFRESH
  5390.    VERSION:2.0
  5391.    BEGIN:VEVENT
  5392.    ORGANIZER:Mailto:A@example.com
  5393.    ATTENDEE:Mailto:B@example.com
  5394.    UID:acme-12345@host1.com
  5395.    DTSTAMP:19970603T094000
  5396.    END:VEVENT
  5397.    END:VCALENDAR
  5398.  
  5399. 5 Application Protocol Fallbacks
  5400.  
  5401. 5.1 Partial Implementation
  5402.  
  5403.    Applications that support this memo are not required to support the
  5404.    entire protocol. The following describes how methods and properties
  5405.    SHOULD "fallback" in applications that do not support the complete
  5406.    protocol. If a method or property is not addressed in this section,
  5407.    it may be ignored.
  5408.  
  5409. 5.1.1 Event-Related Fallbacks
  5410.  
  5411. Method           Fallback
  5412. --------------   -----------------------------------------------------
  5413. PUBLISH          Required
  5414. REQUEST          PUBLISH
  5415. REPLY            Required
  5416. ADD              Required
  5417. CANCEL           Required
  5418. REFRESH          Required
  5419. COUNTER          Reply with Not Supported
  5420. DECLINECOUNTER   Required if EVENT-COUNTER is implemented; otherwise
  5421.                  reply with Not Supported
  5422.  
  5423. iCalendar
  5424. Property         Fallback
  5425. --------------   -----------------------------------------------------
  5426. CALSCALE         Ignore; assume GREGORIAN
  5427. PRODID           Ignore
  5428. METHOD           Required as described in the Method list above
  5429. VERSION          Ignore
  5430.  
  5431.  
  5432.  
  5433.  
  5434. Silverberg, et. al.         Standards Track                    [Page 97]
  5435.  
  5436. RFC 2446                          iTIP                     November 1998
  5437.  
  5438.  
  5439. Event-Related
  5440. Components       Fallback
  5441. --------------   -----------------------------------------------------
  5442. VALARM           Reply with Not Supported
  5443. VTIMEZONE        Required if any DateTime value refers to a time zone.
  5444.  
  5445. Component
  5446. Property         Fallback
  5447. --------------   -----------------------------------------------------
  5448. ATTACH           Ignore
  5449. ATTENDEE         Required if EVENT-REQUEST is not implemented;
  5450.                  otherwise reply with Not Supported
  5451. CATEGORIES       Ignore
  5452. CLASS            Ignore
  5453. COMMENT          Ignore
  5454. COMPLETED        Ignore
  5455. nCONTACT          Ignore
  5456. CREATED          Ignore
  5457. DESCRIPTION      Required
  5458. DURATION         Reply with Not Supported
  5459. DTSTAMP          Required
  5460. DTSTART          Required
  5461. DTEND            Required
  5462. EXDATE           Ignore
  5463. EXRULE           Ignore Reply with Not Supported. If implemented,
  5464.                  VTIMEZONE MUST also be implemented.
  5465. GEO              Ignore
  5466. LAST-MODIFIED    Ignore
  5467. LOCATION         Required
  5468. ORGANIZER        Ignore
  5469. PRIORITY         Ignore
  5470. RELATED-TO       Ignore
  5471. RDATE            Ignore
  5472. RRULE            Ignore. The first instance occurs on the DTStart
  5473.                  property. If implemented, VTIMEZONE MUST also be
  5474.                  implemented.
  5475. RECURRENCE-ID    Required if RRULE is implemented; otherwise Ignore
  5476. REQUEST-STATUS   Required
  5477. RESOURCES        Ignore
  5478. SEQUENCE         Required
  5479. STATUS           Ignore
  5480. SUMMARY          Ignore
  5481. TRANSP           Required if FREEBUSY is implemented; otherwise Ignore
  5482. URL              Ignore
  5483. UID              Required
  5484. X-               Ignore
  5485.  
  5486.  
  5487.  
  5488.  
  5489.  
  5490. Silverberg, et. al.         Standards Track                    [Page 98]
  5491.  
  5492. RFC 2446                          iTIP                     November 1998
  5493.  
  5494.  
  5495. 5.1.2 Free/Busy-Related Fallbacks
  5496.  
  5497. Method           Fallback
  5498. --------------   -----------------------------------------------------
  5499. PUBLISH          Implementations MAY ignore the METHOD type. The
  5500.                  REQUEST-STATUS "3.14;Unsupported capability" MUST be
  5501.                  returned.
  5502. REQUEST          Implementations MAY ignore the METHOD type. The
  5503.                  REQUEST-STATUS "3.14;Unsupported capability" MUST be
  5504.                  returned.
  5505. REPLY            Implementations MAY ignore the METHOD type. The
  5506.                  REQUEST-STATUS "3.14;Unsupported capability" MUST be
  5507.                  returned.
  5508.  
  5509.  
  5510. iCalendar
  5511. Property         Fallback
  5512. --------------   -----------------------------------------------------
  5513. CALSCALE         Ignore; assume GREGORIAN.
  5514. PRODID           Ignore
  5515. METHOD           Required as described in the Method list above.
  5516. VERSION          Ignore
  5517.  
  5518.  
  5519. Component
  5520. Property         Fallback
  5521. --------------   -----------------------------------------------------
  5522. COMMENT          Ignore
  5523. CONTACT          Ignore
  5524. DTEND            Required
  5525. DTSTAMP          Required
  5526. DTSTART          Required
  5527. DURATION         Required
  5528. FREEBUSY         Required
  5529. ORGANIZER        Ignore
  5530. REQUEST-STATUS   Ignore
  5531. UID              Required
  5532. URL              Ignore
  5533. X-               Ignore
  5534.  
  5535. 5.1.3 To-Do-Related Fallbacks
  5536.  
  5537. Method           Fallback
  5538. --------------   -----------------------------------------------------
  5539. PUBLISH          Required
  5540. REQUEST          PUBLISH
  5541. REPLY            Required
  5542. ADD              Required
  5543.  
  5544.  
  5545.  
  5546. Silverberg, et. al.         Standards Track                    [Page 99]
  5547.  
  5548. RFC 2446                          iTIP                     November 1998
  5549.  
  5550.  
  5551. CANCEL           Required
  5552. REFRESH          Required
  5553. COUNTER          Reply with Not Supported
  5554. DECLINECOUNTER   Required if VTODO - COUNTER is implemented; otherwise
  5555.                  reply with Not Supported
  5556.  
  5557. iCalendar
  5558. Property         Fallback
  5559. --------------   -----------------------------------------------------
  5560. CALSCALE         Ignore; assume GREGORIAN.
  5561. PRODID           Ignore
  5562. METHOD           Required as described in the Method list above.
  5563. VERSION          Ignore
  5564.  
  5565.  
  5566. To-Do-Related
  5567. Components       Fallback
  5568. --------------   -----------------------------------------------------
  5569. VALARM           Reply with Not Supported
  5570. VTIMEZONE        Required if any DateTime value refers to a time zone.
  5571.  
  5572.  
  5573. Component
  5574. Property         Fallback
  5575. --------------   -----------------------------------------------------
  5576. ATTACH           Ignore
  5577. ATTENDEE         Required if REQUEST is not implemented; otherwise
  5578.                  ignore
  5579. CATEGORIES       Ignore
  5580. CLASS            Ignore
  5581. COMMENT          Ignore
  5582. COMPLETED        Required
  5583. CONTACT          Ignore
  5584. CREATED          Ignore
  5585. DESCRIPTION      Required
  5586. DUE              Required
  5587. DURATION         Ignore Reply with Not Supported
  5588. DTSTAMP          Required
  5589. DTSTART          Required
  5590. EXDATE           Ignore Reply with Not Supported
  5591. EXRULE           Ignore Reply with Not Supported. If implemented,
  5592.                  VTIMEZONE MUST also be implemented.
  5593. LAST-MODIFIED    Ignore
  5594. LOCATION         Ignore
  5595. ORGANIZER        Ignore
  5596. PERCENT-COMPLETE Ignore
  5597. PRIORITY         Required
  5598. RECURRENCE-ID    Ignore
  5599.  
  5600.  
  5601.  
  5602. Silverberg, et. al.         Standards Track                   [Page 100]
  5603.  
  5604. RFC 2446                          iTIP                     November 1998
  5605.  
  5606.  
  5607. RELATED-TO       Ignore
  5608. REQUEST-STATUS   Ignore
  5609. RDATE            Ignore
  5610. RRULE            Ignore.  The first instance occurs on the DTSTART
  5611.                  property. If implemented, VTIMEZONE MUST also be
  5612.                  implemented.
  5613. RESOURCES        Ignore
  5614. SEQUENCE         Required
  5615. STATUS           Required
  5616. SUMMARY          Ignore
  5617. URL              Ignore
  5618. UID              Required
  5619. X-               Ignore
  5620.  
  5621. 5.1.4 Journal-Related Fallbacks
  5622.  
  5623.  
  5624. Method           Fallback
  5625. --------------   -----------------------------------------------------
  5626. PUBLISH          Implementations MAY ignore the METHOD type. The
  5627.                  REQUEST-STATUS "3.14;Unsupported capability" MUST be
  5628.                  returned.
  5629. ADD              Implementations MAY ignore the METHOD type. The
  5630.                  REQUEST-STATUS "3.14;Unsupported capability" MUST be
  5631.                  returned.
  5632. CANCEL           Implementations MAY ignore the METHOD type. The
  5633.                  REQUEST-STATUS "3.14;Unsupported capability" MUST be
  5634.                  returned.
  5635.  
  5636.  
  5637. iCalendar
  5638. Property         Fallback
  5639. --------------   -----------------------------------------------------
  5640. CALSCALE         Ignore; assume GREGORIAN.
  5641. PRODID           Ignore
  5642. METHOD           Required as described in the Method list above.
  5643. VERSION          Ignore
  5644.  
  5645.  
  5646. Journal-Related
  5647. Components       Fallback
  5648. --------------   -----------------------------------------------------
  5649. VTIMEZONE        Required if any DateTime value refers to a time zone.
  5650.  
  5651.  
  5652.  
  5653.  
  5654.  
  5655.  
  5656.  
  5657.  
  5658. Silverberg, et. al.         Standards Track                   [Page 101]
  5659.  
  5660. RFC 2446                          iTIP                     November 1998
  5661.  
  5662.  
  5663. Component
  5664. Property         Fallback
  5665. --------------   -----------------------------------------------------
  5666. ATTACH           Ignore
  5667. ATTENDEE         Required if JOURNAL-REQUEST is implemented; otherwise
  5668.                  ignore
  5669. CATEGORIES       Ignore
  5670. CLASS            Ignore
  5671. COMMENT          Ignore
  5672. CONTACT          Ignore
  5673. CREATED          Ignore
  5674. DESCRIPTION      Required
  5675. DTSTAMP          Required
  5676. DTSTART          Required
  5677. EXDATE           Ignore
  5678. EXRULE           Ignore Reply with Not Supported. If implemented,
  5679.                  VTIMEZONE MUST also be implemented.
  5680. LAST-MODIFIED    Ignore
  5681. ORGANIZER        Ignore
  5682. RECURRENCE-ID    Ignore
  5683. RELATED-TO       Ignore
  5684. RDATE            Ignore.
  5685. RRULE            Ignore. The first instance occurs on the DTSTART
  5686.                  property. If implemented, VTIMEZONE MUST also be
  5687.                  implemented.
  5688. SEQUENCE         Required
  5689. STATUS           Ignore
  5690. SUMMARY          Required
  5691. URL              Ignore
  5692. UID              Required
  5693. X-               Ignore
  5694.  
  5695. 5.2 Latency Issues
  5696.  
  5697.    With a store-and-forward transport, it is possible for events to
  5698.    arrive out of sequence. That is, a "CANCEL" method may be received
  5699.    prior to receiving the associated "REQUEST" for the calendar
  5700.    component. This section discusses a few of these scenarios.
  5701.  
  5702. 5.2.1 Cancellation of an Unknown Calendar Component.
  5703.  
  5704.    When a "CANCEL" method is received before the original "REQUEST"
  5705.    method the calendar will be unable to correlate the "UID" property of
  5706.    the cancellation with an existing calendar component. It is suggested
  5707.    that messages that can not be correlated that also contain non-zero
  5708.    sequence numbers be held and not discarded. Implementations MAY age
  5709.    them out if no other messages arrive with the same "UID" property
  5710.    value and a lower sequence number.
  5711.  
  5712.  
  5713.  
  5714. Silverberg, et. al.         Standards Track                   [Page 102]
  5715.  
  5716. RFC 2446                          iTIP                     November 1998
  5717.  
  5718.  
  5719. 5.2.2 Unexpected Reply from an Unknown Delegate
  5720.  
  5721.    When an "Attendee" delegates an item to another CU they MUST send a
  5722.    "REPLY" method to the "Organizer" using the "ATTENDEE" properties to
  5723.    indicate that the request was delegated and to whom. Hence, it is
  5724.    possible for an "Organizer" to receive an "REPLY" from a CU not
  5725.    listed as one of the original "Attendees". The resolution is left to
  5726.    the implementation but it is expected that the calendaring software
  5727.    will either accept the reply or hold it until the related "REPLY"
  5728.    method is received from the "Delegator". If the version of the
  5729.    "REPLY" method is out of date the "Organizer" SHOULD treat the
  5730.    message as a "REFRESH" message and update the delegate with the
  5731.    correct version.
  5732.  
  5733. 5.3 Sequence Number
  5734.  
  5735.    Under some conditions, a CUA may receive requests and replies with
  5736.    the same "SEQUENCE" property value. The "DTSTAMP" property is
  5737.    utilized as a tie-breaker when two items with the same "SEQUENCE"
  5738.    property value are evaluated.
  5739.  
  5740. 6 Security Considerations
  5741.  
  5742.    ITIP is an abstract transport protocol which will be bound to a
  5743.    real-time transport, a store-and-forward transport, and perhaps other
  5744.    transports. The transport protocol will be responsible for providing
  5745.    facilities for authentication and encryption using standard Internet
  5746.    mechanisms that are mutually understood between the sender and
  5747.    receiver.
  5748.  
  5749. 6.1 Security Threats
  5750.  
  5751. 6.1.1 Spoofing the "Organizer"
  5752.  
  5753.    In iTIP, the "Organizer" (or someone working on the "Organizer's"
  5754.    behalf) is the only person authorized to make changes to an existing
  5755.    "VEVENT", "VTODO", "VJOURNAL" calendar component and republish it or
  5756.    redistribute updates to the "Attendees". An iCalendar object that
  5757.    maliciously changes or cancels an existing "VEVENT", "VTODO" or
  5758.    "VJOURNAL" calendar component may be constructed by someone other
  5759.    than the "Organizer" and republished or sent to the "Attendees".
  5760.  
  5761. 6.1.2 Spoofing the "Attendee"
  5762.  
  5763.    In iTIP, an "Attendee" of a "VEVENT" or "VTODO" calendar component
  5764.    (or someone working on the "Attendee's" behalf) is the only person
  5765.    authorized to update any parameter associated with their "ATTENDEE"
  5766.    property and send it to the "Organizer". An iCalendar object that
  5767.  
  5768.  
  5769.  
  5770. Silverberg, et. al.         Standards Track                   [Page 103]
  5771.  
  5772. RFC 2446                          iTIP                     November 1998
  5773.  
  5774.  
  5775.    maliciously changes the "ATTENDEE" parameters may be constructed by
  5776.    someone other than the real "Attendee" and sent to the "Organizer".
  5777.  
  5778. 6.1.3 Unauthorized Replacement of the Organizer
  5779.  
  5780.    There will be circumstances when "Attendees" of an event or to-do
  5781.    decide, using out-of-band mechanisms, that the "Organizer" must be
  5782.    replaced. When the new "Organizer" sends out the updated "VEVENT" or
  5783.    "VTODO" the "Attendee's" CUA will detect that the "Organizer" has
  5784.    been changed, but it has no way of knowing whether or not the change
  5785.    was mutually agreed upon.
  5786.  
  5787. 6.1.4 Eavesdropping
  5788.  
  5789.    The iCalendar object is constructed with human-readable clear text.
  5790.    Any information contained in an iCalendar object may be read and/or
  5791.    changed by unauthorized persons while the object is in transit.
  5792.  
  5793. 6.1.5 Flooding a Calendar
  5794.  
  5795.    Implementations MAY provide a means to automatically incorporate
  5796.    "REQUEST" methods into a calendar. This presents the opportunity for
  5797.    a calendar to be flooded with requests, which effectively block all
  5798.    the calendar's free time.
  5799.  
  5800. 6.1.6     Procedural Alarms
  5801.  
  5802.    The "REQUEST" methods for "VEVENT" and "VTODO" calendar components
  5803.    MAY contain "VALARM" calendar components. The "VALARM" calendar
  5804.    component may be of type "PROCEDURE" and MAY have an attachment
  5805.    containing an executable program. Implementations that incorporate
  5806.    these types of alarms are subject to any virus or malicious attack
  5807.    that may occur as a result of executing the attachment.
  5808.  
  5809. 6.1.7 Unauthorized REFRESH Requests
  5810.  
  5811.    It is possible for an "Organizer" to receive a "REFRESH" request from
  5812.    someone who is not an "Attendee" of an event or to-do. Only
  5813.    "Attendee's" of an event or to-do are authorized to receive replies
  5814.    to "REFRESH" requests. Replying to such requests to anyone who is not
  5815.    an "Attendee" may be a security problem.
  5816.  
  5817. 6.2 Recommendations
  5818.  
  5819.    For an application where the information is sensitive or critical and
  5820.    the network is subject is subject to a high probability of attack,
  5821.    iTIP transactions SHOULD be encrypted. This may be accomplished using
  5822.    public key technology, specifically Security Multiparts for MIME
  5823.  
  5824.  
  5825.  
  5826. Silverberg, et. al.         Standards Track                   [Page 104]
  5827.  
  5828. RFC 2446                          iTIP                     November 1998
  5829.  
  5830.  
  5831.    [RFC-1847] in the iTIP transport binding. This helps mitigate the
  5832.    threats of spoofing, eavesdropping and malicious changes in transit.
  5833.  
  5834. 6.2.1 Use of [RFC-1847] to secure iTIP transactions
  5835.  
  5836.    iTIP transport bindings MUST provide a mechanism based on Security
  5837.    Multiparts for MIME [RFC-1847] to enable authentication of the
  5838.    sender's identity, and privacy and integrity of the data being
  5839.    transmitted. This allows the receiver of a signed iCalendar object to
  5840.    verify the identity of the sender. This sender may then be correlated
  5841.    to an "ATTENDEE" property in the iCalendar object. If the correlation
  5842.    is made and the sender is authorized to make the requested change or
  5843.    update then the operation may proceed. It also allows the message to
  5844.    be encrypted to prevent unauthorized reading of the message contents
  5845.    in transit. iTIP transport binding documents describe this process in
  5846.    detail.
  5847.  
  5848.    Implementations MAY provide controls for users to disable this
  5849.    capability.
  5850.  
  5851. 6.2.2 Implementation Controls
  5852.  
  5853.    The threat of unauthorized replacement of the "Organizer" SHOULD be
  5854.    mitigated by a calendar system that uses this protocol by providing
  5855.    controls or alerts that make "Calendar Users" aware of such
  5856.    "Organizer" changes and allowing them to decide whether or not the
  5857.    request should be honored.
  5858.  
  5859.    The threat of flooding a calendar SHOULD be mitigated by a calendar
  5860.    system that uses this protocol by providing controls that may be used
  5861.    to limit the acceptable sources for iTIP transactions, and perhaps
  5862.    the size of messages and volume of traffic, by source.
  5863.  
  5864.    The threat of malicious procedural alarms SHOULD be mitigated by a
  5865.    calendar system that uses this protocol by providing controls that
  5866.    may be used to disallow procedural alarms in iTIP transactions and/or
  5867.    remove all alarms from the object before delivery to the recipient.
  5868.  
  5869.    The threat of unauthorized "REFRESH" requests SHOULD be mitigated by
  5870.    a calendar system that uses this protocol by providing controls or
  5871.    alerts that allow "Calendar User" to decide whether or not the
  5872.    request should be honored.  An implementation MAY decide to maintain,
  5873.    for audit or historical purposes,  "Calendar Users" who were part of
  5874.    an attendee list and who were subsequently uninvited.  Similar
  5875.    controls or alerts should be provided when a "REFRESH" request is
  5876.    received from these "Calendar Users" as well.
  5877.  
  5878.  
  5879.  
  5880.  
  5881.  
  5882. Silverberg, et. al.         Standards Track                   [Page 105]
  5883.  
  5884. RFC 2446                          iTIP                     November 1998
  5885.  
  5886.  
  5887. 7 Acknowledgments
  5888.  
  5889.    A hearty thanks to the following individuals who have participated in
  5890.    the drafting, review and discussion of this memo:
  5891.  
  5892.    Anik Ganguly, Dan Hickman, Paul Hill, Daryl Huff, Bruce Kahn, Antoine
  5893.    Leca, Bob Mahoney, John Noerenberg, Leo Parker, John Rose, Doug
  5894.    Royer, Vinod Seraphin, Richard Shusterman, Derik Stenerson, John Sun,
  5895.    Alexander Taler, Kevin Tsurutome.
  5896.  
  5897. 8 Bibliography
  5898.  
  5899.    [iCAL]     Dawson, F. and D. Stenerson, "Internet Calendaring and
  5900.               Scheduling Core Object Specification - iCalendar", RFC
  5901.               2445, November 1998.
  5902.  
  5903.    [iMIP]     Dawson, F., Mansour, S. and S. Silverberg, "iCalendar
  5904.               Message-Based Interoperability Protocol - iMIP", RFC 2447,
  5905.               November 1998.
  5906.  
  5907.    [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate
  5908.               Requirement Levels", BCP 14, RFC 2119, March 1997.
  5909.  
  5910.    [US-ASCII] Coded Character Set--7-bit American Standard Code for
  5911.               Information Interchange, ANSI X3.4-1986.
  5912.  
  5913.  
  5914.  
  5915.  
  5916.  
  5917.  
  5918.  
  5919.  
  5920.  
  5921.  
  5922.  
  5923.  
  5924.  
  5925.  
  5926.  
  5927.  
  5928.  
  5929.  
  5930.  
  5931.  
  5932.  
  5933.  
  5934.  
  5935.  
  5936.  
  5937.  
  5938. Silverberg, et. al.         Standards Track                   [Page 106]
  5939.  
  5940. RFC 2446                          iTIP                     November 1998
  5941.  
  5942.  
  5943. 9 Authors' Addresses
  5944.  
  5945.    The following address information is provided in a vCard v3.0,
  5946.    Electronic Business Card, format.
  5947.  
  5948.    The authors of this memo are:
  5949.  
  5950.    BEGIN:VCARD
  5951.    VERSION:3.0
  5952.    N:Dawson;Frank
  5953.    FN:Frank Dawson
  5954.    ORG:Lotus Development Corporation
  5955.    ADR;WORK;POSTAL;PARCEL:;;6544 Battleford Drive;Raleigh;NC;27613-
  5956.     3502;USA
  5957.    TEL;TYPE=WORK,MSG:+1-919-676-9515
  5958.    TEL;TYPE=WORK,FAX:+1-919-676-9564
  5959.    EMAIL;TYPE=PREF,INTERNET:Frank_Dawson@Lotus.com
  5960.    EMAIL;TYPE=INTERNET:fdawson@earthlink.net
  5961.    URL:http://home.earthlink.net/~fdawson
  5962.    END:VCARD
  5963.  
  5964.    BEGIN:VCARD
  5965.    VERSION:3.0
  5966.    N:Hopson;Ross
  5967.    FN:Ross Hopson
  5968.    ORG:On Technology, Inc.
  5969.    ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 1600;434 Fayetteville St.
  5970.      Mall\, Two Hannover Square;Raleigh;NC;27601
  5971.    TEL;TYPE=WORK,MSG:+1-919-890-4036
  5972.    TEL;TYPE=WORK,FAX:+1-919-890-4100
  5973.    EMAIL;TYPE=INTERNET:rhopson@on.com
  5974.    END:VCARD
  5975.  
  5976.    BEGIN:VCARD
  5977.    VERSION:3.0
  5978.    N:Mansour;Steve
  5979.    FN:Steve Mansour
  5980.    ORG:Netscape Communications Corporation
  5981.    ADR;TYPE=WORK,POSTAL,PARCEL:;;501 East Middlefield Road;Mountain
  5982.      View;CA;94043;USA
  5983.    TEL;TYPE=WORK,MSG:+1-650-937-2378
  5984.    TEL;TYPE=WORK,FAX:+1-650-937-2103
  5985.    EMAIL;TYPE=INTERNET:sman@netscape.com
  5986.    END:VCARD
  5987.  
  5988.  
  5989.  
  5990.  
  5991.  
  5992.  
  5993.  
  5994. Silverberg, et. al.         Standards Track                   [Page 107]
  5995.  
  5996. RFC 2446                          iTIP                     November 1998
  5997.  
  5998.  
  5999.    BEGIN:VCARD
  6000.    VERSION:3.0
  6001.    N:Silverberg;Steve
  6002.    FN:Steve Silverberg
  6003.    ORG:Microsoft Corporation
  6004.    ADR;TYPE=WORK,POSTAL,PARCEL:;;One Microsoft Way;
  6005.    Redmond;WA;98052-6399;USA
  6006.    TEL;TYPE=WORK,MSG:+1-425-936-9277
  6007.    TEL;TYPE=WORK,FAX:+1-425-936-8019
  6008.    EMAIL;INTERNET:stevesil@Microsoft.com
  6009.    END:VCARD
  6010.  
  6011.    The iCalendar object is a result of the work of the Internet
  6012.    Engineering Task Force Calendaring and scheduling Working Group. The
  6013.    chairman of that working group is:
  6014.  
  6015.    BEGIN:VCARD
  6016.    VERSION:3.0
  6017.    N:Ganguly;Anik
  6018.    FN:Anik Ganguly
  6019.    ORG:Open Text Inc.
  6020.    ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 101;38777 West Six Mile Road;
  6021.     Livonia;MI;48152;USA
  6022.    TEL;TYPE=WORK,MSG:+1-734-542-5955
  6023.    EMAIL;TYPE=INTERNET:ganguly@acm.org
  6024.    END:VCARD
  6025.  
  6026.    The co-chairman of that working group is:
  6027.  
  6028.    BEGIN:VCARD
  6029.    VERSION:3.0
  6030.    N:Moskowitz;Robert
  6031.    FN:Robert Moskowitz
  6032.    NICKNAME:Bob
  6033.    EMAIL; TYPE=INTERNET:rgm-ietf@htt-consult.com
  6034.    END:VCARD
  6035.  
  6036.  
  6037.  
  6038.  
  6039.  
  6040.  
  6041.  
  6042.  
  6043.  
  6044.  
  6045.  
  6046.  
  6047.  
  6048.  
  6049.  
  6050. Silverberg, et. al.         Standards Track                   [Page 108]
  6051.  
  6052. RFC 2446                          iTIP                     November 1998
  6053.  
  6054.  
  6055. 10.  Full Copyright Statement
  6056.  
  6057.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  6058.  
  6059.    This document and translations of it may be copied and furnished to
  6060.    others, and derivative works that comment on or otherwise explain it
  6061.    or assist in its implementation may be prepared, copied, published
  6062.    and distributed, in whole or in part, without restriction of any
  6063.    kind, provided that the above copyright notice and this paragraph are
  6064.    included on all such copies and derivative works.  However, this
  6065.    document itself may not be modified in any way, such as by removing
  6066.    the copyright notice or references to the Internet Society or other
  6067.    Internet organizations, except as needed for the purpose of
  6068.    developing Internet standards in which case the procedures for
  6069.    copyrights defined in the Internet Standards process must be
  6070.    followed, or as required to translate it into languages other than
  6071.    English.
  6072.  
  6073.    The limited permissions granted above are perpetual and will not be
  6074.    revoked by the Internet Society or its successors or assigns.
  6075.  
  6076.    This document and the information contained herein is provided on an
  6077.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  6078.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  6079.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  6080.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  6081.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  6082.  
  6083.  
  6084.  
  6085.  
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.  
  6095.  
  6096.  
  6097.  
  6098.  
  6099.  
  6100.  
  6101.  
  6102.  
  6103.  
  6104.  
  6105.  
  6106. Silverberg, et. al.         Standards Track                   [Page 109]
  6107.  
  6108.