home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_a_c / draft-ietf-calsch-itip-01.txt < prev    next >
Text File  |  1997-10-28  |  189KB  |  4,960 lines

  1.  
  2.  
  3. Network Working Group                       Steve Silverberg, Microsoft
  4. INTERNET-DRAFT                                  Steve Mansour, Netscape
  5. Calendaring and Scheduling Working Group            Frank Dawson, Lotus
  6. <draft-ietf-calsch-itip-01.txt>             Ross Hopson, ON Technologies
  7. Expires in six months from                              October 24,1997
  8.  
  9.        iCalendar Transport-Independent Interoperability Protocol
  10.                                  (iTIP)
  11.         Scheduling Events, BusyTime, To-dos and Journal Entries
  12.  
  13.  
  14. Status of this Memo
  15.  
  16.    This document is an Internet-Draft. Internet-Drafts are working
  17.    documents of the Internet Engineering Task Force (IETF), its areas,
  18.    and its working groups. Note that other groups MAY also distribute
  19.    working documents as Internet-Drafts.
  20.  
  21.    Internet-Drafts are draft documents valid for a maximum of six
  22.    months. Internet-Drafts MAY be updated, replaced, or made obsolete by
  23.    other documents at any time. It is not appropriate to use Internet-
  24.    Drafts as reference material or to cite them other than as a "working
  25.    draft" or "work in progress".
  26.  
  27.    To learn the current status of any Internet-Draft, please check the
  28.    1id-abstracts.txt listing contained in the Internet-Drafts Shadow
  29.    Directories on ds.internic.net (US East Coast), nic.nordu.net
  30.    (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
  31.    Rim).
  32.  
  33.    Distribution of this document is unlimited.
  34.  
  35.    Copyright (C) The Internet Society 1997. All Rights Reserved.
  36.  
  37. Abstract
  38.  
  39.    This document specifies how calendaring systems use iCalendar objects
  40.    to interoperate with other calendar systems. It does so in a general
  41.    way so as to allow multiple methods of communication between systems.
  42.    Subsequent documents specify interoperable methods of communications
  43.    between systems that use this protocol.
  44.  
  45.    The document outlines a model for calendar exchange that defines both
  46.    static and dynamic event, to-do, journal and free/busy objects.
  47.    Static objects are used to transmit information from one entity to
  48.    another without the expectation of continuity or referential
  49.    integrity with the original item. Dynamic objects are a superset of
  50.    static objects and will gracefully degrade to their static
  51.    counterparts for clients that only support static objects.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. Silverberg/Mansour/Dawson/Hopson  1                   Expires MAY 1998
  66.  
  67.  
  68. Internet Draft                   iTIP                  October 24, 1997
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127. Silverberg/Mansour/Dawson/Hopson  2                   Expires MAY 1998
  128.  
  129.  
  130. Internet Draft                   iTIP                  October 24, 1997
  131.  
  132.  
  133.  
  134.    Table of Contents
  135.  
  136.  
  137. 1    7
  138. Introduction   8
  139.  1.1 Formatting Conventions  8
  140.  1.2 Related Documents  9
  141.  1.3 Calendar Roles9
  142.  1.4 iTIP Transactions  10
  143. 2 Interoperability Models     11
  144.  2.1 Application Protocol    11
  145.   2.1.1 Calendar Entry State 12
  146. 3 Application Protocol Elements    12
  147.  3.1 Methods For "VEVENT" Calendar Component13
  148.   3.1.1 PUBLISH    14
  149.   3.1.2 REQUEST    15
  150.     3.1.2.1 REQUEST for Rescheduling an Event    16
  151.     3.1.2.2 REQUEST for Update or Reconfirmation of an Event    16
  152.     3.1.2.3 REQUEST for Delegating an Event from an "Attendee" to
  153.     another CU17
  154.     3.1.2.4 REQUEST for Delegating role of "Organizer" to another CU 17
  155.     3.1.2.5 REQUEST for Changing the "Organizer" from one CU to another
  156.      18
  157.     3.1.2.6 REQUEST for Changing the "Owner"18
  158.     3.1.2.7 REQUEST Forwarded To An Uninvited Calendar User18
  159.     3.1.2.8 REQUEST Updated Attendee Status 18
  160.   3.1.3 REPLY 18
  161.   3.1.4 CANCEL19
  162.   3.1.5 REFRESH    20
  163.   3.1.6 COUNTER    21
  164.   3.1.7 DECLINECOUNTER  22
  165.  3.2 Methods For VFREEBUSY Component   23
  166.   3.2.1 PUBLISH    24
  167.   3.2.2 REQUEST    25
  168.   3.2.3 REPLY 26
  169.  3.3 Methods For VTODO Component  27
  170.   3.3.1 PUBLISH    28
  171.   3.3.2 REQUEST    29
  172.     3.3.2.1 REQUEST for Rescheduling a VTODO30
  173.     3.3.2.2 REQUEST for Update or Reconfirmation of a VTODO30
  174.     3.3.2.3 REQUEST for Delegating a VTODO  31
  175.     3.3.2.4 REQUEST Forwarded To An Uninvited Calendar User31
  176.     3.3.2.5 REQUEST Updated Attendee Status 32
  177.   3.3.3 REPLY 32
  178.   3.3.4 CANCEL33
  179.   3.3.5 REFRESH    34
  180.   3.3.6 COUNTER    35
  181.   3.3.7 DECLINECOUNTER  36
  182.  3.4 Methods For VJOURNAL Component    37
  183.   3.4.1 PUBLISH    37
  184.   3.4.2 CANCEL38
  185.   3.4.3 REFRESH    39
  186.  3.5 Status Replies39
  187.  3.6 Implementation Considerations41
  188.  
  189.  
  190. Silverberg/Mansour/Dawson/Hopson  3                   Expires MAY 1998
  191.  
  192.  
  193. Internet Draft                   iTIP                  October 24, 1997
  194.  
  195.  
  196.   3.6.1 Working With Recurrence Instances   41
  197.   3.6.2 Attendee Property Considerations    42
  198.   3.6.3 When To Refresh An Event  43
  199.   3.6.4 Timezones  43
  200.   3.6.5 Alarms43
  201.   3.6.6 SUMMARY Property43
  202.   3.6.7 X-Tokens   43
  203. 4 Examples     44
  204.  4.1 Published Event Examples44
  205.   4.1.1 A Minimal Published Event 44
  206.   4.1.2 Changing A Published Event45
  207.   4.1.3 Canceling A Published Event    45
  208.   4.1.4 A Rich Published Event    46
  209.   4.1.5 Anniversaries or Events attached to entire days    47
  210.  4.2 Group Event Examples    48
  211.   4.2.1 A Group Event Request48
  212.   4.2.2 Reply To A Group Event Request 49
  213.   4.2.3 Update An Event 49
  214.   4.2.4 Countering an Event Proposal   50
  215.   4.2.5 Delegate An Event    51
  216.   4.2.6 Delegate Accepts the Meeting   54
  217.   4.2.7 Delegate Declines the Meeting  54
  218.   4.2.8 Forwarding an Event Request    55
  219.   4.2.9 Cancel A Group Event 55
  220.  4.3 Busy Time Examples 56
  221.   4.3.1 Request Busy Time    56
  222.   4.3.2 Reply To A Busy Time Request   57
  223.  4.4 Recurring Event and Time Zone Examples 57
  224.   4.4.1 A Recurring Event Spanning Time Zones    57
  225.   4.4.2 Modify A Recurring Instance    59
  226.   4.4.3 Cancel A Recurring Instance    60
  227.   4.4.4 Cancel An Exception  60
  228.   4.4.5 Cancel Recurring Event    61
  229.   4.4.6 Change All Future Instances    61
  230.   4.4.7 Add A New Instance To A Recurring Event  62
  231.   4.4.8 Counter An Instance Of A Recurring Event 62
  232.   4.4.9 Error Reply To A request  63
  233.  4.5 Group To-do Examples    64
  234.   4.5.1 A VTODO Request 65
  235.   4.5.2 A VTODO Reply   65
  236.   4.5.3 A VTODO Refresh 65
  237.   4.5.4 A Refresh Reply: Percent-Complete   66
  238.   4.5.5 A Refresh Reply: Completed66
  239.   4.5.6 An Updated VTODO Request  66
  240.   4.5.7 A Recurring VTODOs   67
  241.     4.5.7.1 Request for a Recurring VTODO   67
  242.     4.5.7.2 Calculating due dates in recurring VTODOs 68
  243.     4.5.7.3 Replying to an instance of a recurring VTODO   68
  244.  4.6 Journal Examples   68
  245.  4.7 Other Examples69
  246.   4.7.1 Event Refresh   69
  247.   4.7.2 Bad RECURRENCE-ID    69
  248. 5 Application Protocol Fallbacks   70
  249.  5.1 Partial Implementation  70
  250.  
  251.  
  252. Silverberg/Mansour/Dawson/Hopson  4                   Expires MAY 1998
  253.  
  254.  
  255. Internet Draft                   iTIP                  October 24, 1997
  256.  
  257.  
  258.   5.1.1 Event-Related Fallbacks   70
  259.   5.1.2 To-Do-Related Fallbacks   72
  260.   5.1.3 Journal-Related Fallbacks 74
  261.  5.2 Latency Issues75
  262.   5.2.1 Cancellation of an Unknown Calendar Component.75
  263.   5.2.2 Unexpected Reply from an Unknown Delegate75
  264.  5.3 Sequence Number    76
  265. 6 Security Considerations     76
  266.  6.1 Security Threats   76
  267.   6.1.1 Spoofing the "Organizer"  76
  268.   6.1.2 Spoofing the "Attendee"   76
  269.   6.1.3 Eavesdropping   77
  270.   6.1.4 Flooding a Calendar  77
  271.   6.1.5 Procedural Alarms    77
  272.  6.2 Recommendations    77
  273.   6.2.1 Use of [RFC1847] to secure iTIP transactions  77
  274.   6.2.2 Implementation Controls   77
  275. 7 Acknowledgments   78
  276. 8 Bibliography 78
  277. 9 Authors Addresses 79
  278. 10 Full Copyright Statement   80
  279.  
  280.  
  281. 1
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314. Silverberg/Mansour/Dawson/Hopson  5                   Expires MAY 1998
  315.  
  316.  
  317. Internet Draft                   iTIP                  October 24, 1997
  318.  
  319.  
  320.    Introduction
  321.  
  322.    This document specifies how calendaring systems use iCalendar objects
  323.    to interoperate with other calendar systems. In particular, it
  324.    specifies how to schedule events, to-dos, or daily journal entries.
  325.    It further specifies how to search for available busy time
  326.    information. It does so in a general way so as to allow multiple
  327.    methods of communication between systems. Subsequent documents
  328.    specify interoperable methods of communications between systems that
  329.    use this protocol.
  330.  
  331.    This protocol is based on requests sent from an originator and
  332.    conveyed to one or more recipients. A recipient of a request MAY
  333.    reply, in order to update their status and MAY also return
  334.    transaction/request status information. The protocol also supports
  335.    the ability for the entry originator to modify or cancel the original
  336.    entry. The elements of the protocol also include the notion of user
  337.    roles.
  338.  
  339. 1.1 Formatting Conventions
  340.  
  341.    In order to refer to elements of the calendaring and scheduling
  342.    model, core object or interoperability protocol defined in [ICMS],
  343.    [ICAL] and [ITIP] several formatting conventions have been utilized.
  344.  
  345.    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  346.    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
  347.    document are to be interopreted as described in [RFC 2119].
  348.  
  349.    Calendaring and scheduling roles defined by [ICMS] are referred to in
  350.    quoted-strings of text with the first character of each word in upper
  351.    case. For example, "Organizer" refers to a role of a "Calendar User"
  352.    within the scheduling protocol defined by [ITIP] Calendar components
  353.    defined by [ICAL] are referred to with capitalized, quoted-strings of
  354.    text. All calendar components start with the letter "V". For example,
  355.    "VEVENT" refers to the event calendar component, "VTODO" refers to
  356.    the to-do calendar component and "VJOURNAL" refers to the daily
  357.    journal calendar component. Scheduling methods defined by [ITIP] are
  358.    referred to with capitalized, quoted-strings of text. For example,
  359.    "REQUEST" refers to the method for requesting a scheduling calendar
  360.    component be created or modified, "REPLY" refers to the method a
  361.    recipient of a request uses to update their status with the
  362.    "Organizer" of the calendar component.
  363.  
  364.    Properties defined by [ICAL] are referred to with capitalized,
  365.    quoted-strings of text, followed by the word "property". For example,
  366.    "ATTENDEE" property refers to the iCalendar property used to convey
  367.    the calendar address of a "Calendar User". Property parameters
  368.    defined by this memo are referred to with lower case, quoted-strings
  369.    of text, followed by the word "parameter". For example, "value"
  370.    parameter refers to the iCalendar property parameter used to override
  371.    the default data type for a property value. Enumerated values defined
  372.    by this memo are referred to with capitalized text, either alone or
  373.    followed by the word "value".
  374.  
  375.  
  376.  
  377.  
  378.  
  379. Silverberg/Mansour/Dawson/Hopson  6                   Expires MAY 1998
  380.  
  381.  
  382. Internet Draft                   iTIP                  October 24, 1997
  383.  
  384.  
  385.    In tables, the quoted-string text is specified without quotes in
  386.    order to minimize the table length.
  387.  
  388. 1.2 Related Documents
  389.  
  390.    Implementers will need to be familiar with several other memos that,
  391.    along with this one, describe the Internet calendaring and scheduling
  392.    standards. This document, [ITIP], specifies an interoperability
  393.    protocol for scheduling between different implementations;
  394.  
  395.      [ICMS] - describes the abstract model and defines common terms and
  396.      concepts;
  397.  
  398.      [ICAL] - specifies the objects, data types, properties and property
  399.      parameters used in the protocols, along with the methods for
  400.      representing and encoding them;
  401.  
  402.      [IRIP] - specifies an Internet real time protocol binding for
  403.      [ITIP].
  404.  
  405.      [IMIP] specifies an Internet email binding for [ITIP].
  406.  
  407.    This memo does not attempt to repeat the specification of concepts or
  408.    definitions from these other memos. Where possible, references are
  409.    made to the memo that provides for the specification of these
  410.    concepts or definitions.
  411.  
  412. 1.3 Calendar Roles
  413.  
  414.    Roles are a behavior or set of activities performed by particular
  415.    groups of users or agents at a given state of the calendar
  416.    transaction. This specification describes 4 roles that determine a
  417.    range of actions and responsibilities specific to each role.
  418.  
  419. +=====================================================================+
  420. |  Role Name   |  Description                                         |
  421. |=====================================================================|
  422. | Owner        | The calendar entry owner is the only Calendar User   |
  423. |              | allowed to directly modify an entry using the iTIP   |
  424. |              | protocol. However, the Owner MAY delegate or         |
  425. |              | assign an Organizer to manage the entry on their     |
  426. |              | behalf. Usually, a calendar entry Owner is also the  |
  427. |              | Organizer.                                           |
  428. |              |                                                      |
  429. | Organizer    | The Organizer controls manipulation of the calendar  |
  430. |              | entry. In most cases, the Owner and the Organizer    |
  431. |              | are the same Calendar User.                          |
  432. |              |                                                      |
  433. | Attendee     | An Attendee is a Calendar User associated with       |
  434. |              | a calendar entry via a Request method issued by an   |
  435. |              | Organizer or another Attendee. Attendees are not     |
  436. |              | capable of directly manipulating calendar entries,   |
  437. |              | but MUST act through the Organizer.                  |
  438. |              |                                                      |
  439. | Delegate     | A Delegate is a proxy that acts on behalf of another |
  440. |              | Calendar User. ITIP addresses two forms of           |
  441.  
  442.  
  443.  
  444. Silverberg/Mansour/Dawson/Hopson  7                   Expires MAY 1998
  445.  
  446.  
  447. Internet Draft                   iTIP                  October 24, 1997
  448.  
  449.  
  450. |              | delegation:                                          |
  451. |              | 1) An Owner MAY delegate or re-assign an Organizer   |
  452. |              | to manage a calendar entry                           |
  453. |              | 2) An Attendee MAY delegate a calendar entry request |
  454. |              | to another Calendar User.                            |
  455. +=====================================================================+
  456.  
  457.  
  458. 1.4 iTIP Transactions
  459.  
  460.    This protocol defines seven methods for exchanging [ICAL] objects for
  461.    the purposes of group calendaring and scheduling between "Calendar
  462.    Users". The methods are defined below and their usage and semantics
  463.    are outlined in section 3 of this document.
  464.  
  465. +================+==================================================+
  466. | Method         |  Description                                     |
  467. |================+==================================================|
  468. | PUBLISH        | Used to publish a calendar entry to one or more  |
  469. |                | Calendar Users. There is no interactivity        |
  470. |                | between the publisher and any other calendar     |
  471. |                | user. An example might include a baseball team   |
  472. |                | publishing its schedule to the public.           |
  473. |                |                                                  |
  474. | REQUEST        | Used to schedule a calendar entry with other     |
  475. |                | Calendar Users. Requests are interactive in that |
  476. |                | they MAY require the receiver to respond using   |
  477. |                | the the Reply methods. Meeting Requests, Busy    |
  478. |                | Time requests and the assignment of VTODOs to    |
  479. |                | other Calendar Users are all examples.           |
  480. |                | Requests are also used by the "Organizer" to     |
  481. |                | update the status of a calendar entry.           |
  482. | REPLY          | A Reply is used in response to a Request to      |
  483. |                | convey "Attendee" status to the "Organizer".     |
  484. |                | Replies are commonly used to respond to meeting  |
  485. |                | and task requests.                               |
  486. |                |                                                  |
  487. | CANCEL         | The Cancel method is used to cancel an existing  |
  488. |                | calendar entry such as a VEVENT or VTODO.        |
  489. |                |                                                  |
  490. | REFRESH        | The Refresh method is used by an "Attendee" to   |
  491. |                | request the latest version of a calendar entry   |
  492. |                |                                                  |
  493. | COUNTER        | The Counter method is used by an "Attendee" to   |
  494. |                | negotiate a change in the calendar entry.        |
  495. |                | Examples include the request to change a         |
  496. |                | proposed Event time or change the due date for a |
  497. |                | VTODO.                                           |
  498. | DECLINE-       |                                                  |
  499. | COUNTER        | Used by the "Organizer" to decline the proposed  |
  500. |                | counter-proprosal by an "Attendee"               |
  501. +================+==================================================+
  502.  
  503.  
  504.  
  505.  
  506. Silverberg/Mansour/Dawson/Hopson  8                   Expires MAY 1998
  507.  
  508.  
  509. Internet Draft                   iTIP                  October 24, 1997
  510.  
  511.  
  512. 2  Interoperability Models
  513.  
  514.    There are two distinct protocols relevant to interoperability: an
  515.    "Application Protocol" and a "Transport Protocol". The Application
  516.    Protocol defines the content of the iCalendar objects sent between
  517.    sender and receiver to accomplish the scheduling transactions listed
  518.    in section 1.4. The Transport Protocol defines how the iCalendar
  519.    objects are sent between the sender and receiver. This document
  520.    focuses on the Application Protocol.
  521.  
  522.    The connection between Sender and Receiver in the diagram below
  523.    refers to the Application Protocol. In particular, the iCalendar
  524.    objects passed from the Sender to the Receiver which conform to those
  525.    presented in Section 3, Application Protocol Elements.
  526.  
  527.              +----------+                      +----------+
  528.              |          |        iTIP          |          |
  529.              |  Sender  |<-------------------->| Receiver |
  530.              |          |                      |          |
  531.              +----------+                      +----------+
  532.  
  533.  
  534.    There are several variations of this diagram in which the Sender and
  535.    Receiver take on various roles of "CUA"  or CS. These variants are
  536.    detailed in the Model document [ICMS]
  537.  
  538.    The architecture of iTIP is depicted in the diagram below. An
  539.    application written to this specification MAY work with bindings for
  540.    the store-and-forward transport, the real time transport, or both.
  541.    Also note that iTIP could be bound to other transports. If a
  542.    capability is not available on a particular transport binding, iTIP
  543.    provides a mechanism for indicating so.
  544.  
  545.               +------------------------------------------+
  546.               |                   iTIP                   |
  547.               +------------------------------------------+
  548.               |Real-time | Store-and-Fwd | Other         |
  549.               |Transport | Transport     | Transports... |
  550.               +------------------------------------------+
  551.  
  552.  
  553. 2.1 Application Protocol
  554.  
  555.    The model for the application protocol is centered with the
  556.    "Organizer" of the calendar entry. That is, the "Organizer" of a
  557.    Calendar entry sends a request to one or more "Attendees". The
  558.    "Attendees" then reply to the "Organizer". The "Organizer" maintains
  559.    the status of the event.
  560.  
  561.    The "Owner" is usually the "Organizer" of the calendar entry.
  562.    However, the "Owner" MAY delegate or assign an "Organizer" to manage
  563.    the calendar entry on their behalf. In cases where the "Owner" has
  564.    delegated to another "Organizer", the "Owner" must still be specified
  565.    in associated "REQUEST" and "COUNTER" methods.
  566.  
  567.  
  568.  
  569.  
  570.  
  571. Silverberg/Mansour/Dawson/Hopson  9                   Expires MAY 1998
  572.  
  573.  
  574. Internet Draft                   iTIP                  October 24, 1997
  575.  
  576.  
  577.    The data sources for the application protocol are the "Calendar
  578.    Users". Examples of these users are the "Organizer" and "Attendees"
  579.    of an iCalendar event. The data objects are the iCalendar objects
  580.    that are exchanged between "Calendar Users".
  581.  
  582. 2.1.1     Calendar Entry State
  583.  
  584.    There are two distinct states relevant to calendar entries: the
  585.    overall state of the entry and the state associated with an
  586.    "Attendee" to that entry.
  587.  
  588.    The state of an entry is defined by the "STATUS" property and is
  589.    controlled by the "Organizer." There is no default value for the
  590.    "STATUS" property. The "Organizer" MAY either set the "STATUS"
  591.    property to TENTATIVE or CONFIRMED values. The "Organizer" MAY also
  592.    set the "STATUS" property to CANCELLED value by sending a "CANCEL"
  593.    method to each "Attendee".
  594.  
  595.    The state of a particular "Attendee" relative to an entry is defined
  596.    by the "STATUS" property parameter in the "ATTENDEE" property for
  597.    that "Attendee". When an "Organizer" sends out an entry, the state
  598.    associated with each "Attendee" is NEEDS-ACTION. Each "Attendee" MAY
  599.    modify their "ATTENDEE" property "STATUS" parameter to an appropriate
  600.    value and send it back to the "Organizer" in a "REPLY" message.
  601.  
  602. 3 Application Protocol Elements
  603.  
  604.    Messages are "text/calendar" MIME entities that contain calendaring
  605.    and scheduling information. The particular type of [ICAL] message is
  606.    referred to as the "method type". Each method type is identified by a
  607.    "METHOD" property specified as part of the "text/calendar" content
  608.    type. The table below shows various combinations of calendar
  609.    components and the method types that this memo supports.
  610.  
  611.           +=================================================+
  612.           |         | VEVENT | VTODO | VJOURNAL | VFREEBUSY |
  613.           |=================================================|
  614.           |Publish  |  Yes   |  Yes  |  Yes     |   Yes     |
  615.           |Request  |  Yes   |  Yes  |  No      |   Yes     |
  616.           |Refresh  |  Yes   |  Yes  |  Yes     |   No      |
  617.           |Cancel   |  Yes   |  Yes  |  Yes     |   No      |
  618.           |Reply    |  Yes   |  Yes  |  No      |   Yes     |
  619.           |Counter  |  Yes   |  Yes  |  No      |   No      |
  620.           |Decline- |        |       |          |           |
  621.           |Counter  |  Yes   |  Yes  |  No      |   No      |
  622.           +=================================================+
  623.  
  624.  
  625.    Each method type is defined in terms of its associated properties.
  626.    Some properties are required, some are optional and others are
  627.    excluded. The property restrictions are expressed in this memo using
  628.    the following formal notation:
  629.  
  630.      prop-restriction    = "(" description component method
  631.                1*MUST-component *MAY-component *not-component ")"
  632.  
  633.  
  634.  
  635. Silverberg/Mansour/Dawson/Hopson  10                   Expires MAY 1998
  636.  
  637.  
  638. Internet Draft                   iTIP                  October 24, 1997
  639.  
  640.  
  641.  
  642.      description    = "DESCRIPTION" *ws text
  643.      component      = "COMPONENT" *ws ("CALPROPOS" / "VEVENT" /
  644.                       "VTODO" / "VJOURNAL")
  645.      method         = "METHOD" *ws <any of the methods defined in this
  646.                        memo for the associated calendar component>
  647.  
  648.      MUST-component = "MUST COMPONENT =" *ws ("VEVENT" / "VTODO" /
  649.                       "VJOURNAL" / "VTIMEZONE" / "VALARM" /
  650.                       "VFREEBUSY" / "X-TOKEN")
  651.                       *ws "(" [ws] 1*MUST-props *ws
  652.                       *MAY-props *ws *not-props *ws ")"
  653.  
  654.      MAY-component  = "MAY COMPONENT =" *ws ("VEVENT" / "VTODO" /
  655.                       "VJOURNAL" / "VTIMEZONE" / "VALARM" /
  656.                       "VFREEBUSY" / "X-TOKEN")
  657.                       *ws "(" [ws] ((*MUST-props *ws
  658.                       *MAY-props *ws *not-props *ws) / any) ")"
  659.  
  660.      not-component  = "NOT COMPONENT =" *ws ("VEVENT" / "VTODO" /
  661.                       "VJOURNAL" / "VTIMEZONE" / "VALARM" /
  662.                       "VFREEBUSY" /"X-TOKEN")
  663.  
  664.      MUST-props     = "MUST PROPERTY =" *ws restriction-list
  665.      MAY-props      = "MAY PROPERTY =" *ws (restriction-list / any)
  666.      not-props      = "NOT PROPERTY =" *ws (restriction-list)
  667.  
  668.      restriction-list    = restriction
  669.                          / restriction *ws "," *ws restriction
  670.      restriction    = property-name
  671.                       [*ws "{" parm-or-val-restriction "}"]
  672.      property-name  = <any of the valid properties for the component>
  673.      parm-or-val-restriction  = <a text string description of a
  674.                     constraint on the property parameters
  675.                     or values>
  676.      any       = "ANY"  -- Specifies that any permissible
  677.                  properties are allowed - -
  678.  
  679.      ws        = HTAB / SPACE
  680.  
  681.      HTAB      = <Horizontal TAB character>
  682.      SPACE     = <Required Space character>
  683.  
  684.  
  685. 3.1 Methods For "VEVENT" Calendar Component
  686.  
  687.    This section defines the property set restrictions for the method
  688.    types that are applicable to the "VEVENT" calendar component. Each of
  689.    the methods is defined using a grammar that clarifies the property
  690.    constraints that define the particular method.
  691.  
  692.    The following summarizes the methods that are defined for the
  693.    "VEVENT" calendar component.
  694.  
  695.  
  696.  
  697.  
  698. Silverberg/Mansour/Dawson/Hopson  11                   Expires MAY 1998
  699.  
  700.  
  701. Internet Draft                   iTIP                  October 24, 1997
  702.  
  703.  
  704.    +================+==================================================+
  705.    | Method         |  Description                                     |
  706.    |================+==================================================|
  707.    | PUBLISH        | Post notification of an event. Used primarily as |
  708.    |                | a method of advertising the existence of an      |
  709.    |                | event.                                           |
  710.    | REQUEST        | Make a request for an event. This is an explicit |
  711.    |                | invitation to one or more "Attendees". Event     |
  712.    |                | Requests are also used to update or change an    |
  713.    |                | existing event. Clients that cannot handle       |
  714.    |                | REQUEST MAYdegrade the event to view it as an    |
  715.    |                | PUBLISH.                                         |
  716.    | REPLY          | Reply to an event request. Clients MAYset their  |
  717.    |                | status to                                        |
  718.    |                | ACCEPTED, DECLINED, TENTATIVE, DELEGATED.        |
  719.    | CANCEL         | Cancel an existing event request.                |
  720.    | REFRESH        | A request sent to an  by an "Attendee"           |
  721.    |                | "Organizer" asking                               |
  722.    |                | for the latest version of an event to be resent  |
  723.    |                | to the requester.                                |
  724.    | COUNTER        | Counter a REQUEST with an alternative proposal.  |
  725.    | DECLINECOUNTER | Decline a counter proposal by an "Attendee".     |
  726.    +================+==================================================+
  727.  
  728.  
  729. 3.1.1     PUBLISH
  730.  
  731.    The "PUBLISH" method in a "VEVENT" calendar component provides an
  732.    unsolicited posting of an iCalendar object. Any "Calendar User" MAY
  733.    add the published components to their calendar. It requires and
  734.    accepts no responses to the "Organizer". Its expected usage is for
  735.    encapsulating an arbitrary event or to-do as an iCalendar object. The
  736.    "Organizer" MAY subsequently update (with another "PUBLISH" method)
  737.    or cancel (with a "CANCEL" method) a previously published "VEVENT"
  738.    calendar component.
  739.  
  740.    This method type is an iCalendar object that conforms to the
  741.    following property constraints:
  742.  
  743.      (DESCRIPTION "Event - Publish" COMPONENT "VEVENT" METHOD "PUBLISH
  744.  
  745.      MUST COMPONENT = CALPROPS (
  746.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"PUBLISH"})
  747.      MUST COMPONENT = VEVENT (
  748.           MUST PROPERTY = ATTENDEE{ROLE=OWNER and ORGANIZER if
  749.                different}, DESCRIPTION{MAY BE NULL},DTSTAMP, DTSTART,
  750.                SEQUENCE{IF NE 0}, UID
  751.           MAY PROPERTY = ATTACH, ATTENDEE{other than ROLE=OWNER |
  752.                ORGANIZER}, CATEGORIES, CLASS, COMMENT, CONTACT
  753.                CREATED, DTEND, EXDATE, EXRULE, GEO, LAST-MODIFIED,
  754.                LOCATION,PRIORITY, RELATED-TO, RDATE, RECURRENCE-ID,
  755.                RESOURCES, RRULE, SEQUENCE{IF EQ 0},
  756.                STATUS{TENTATIVE/CONFIRMED/CANCELLED},
  757.                SUMMARY{MAYBE NULL}, URL
  758.  
  759.  
  760.  
  761. Silverberg/Mansour/Dawson/Hopson  12                   Expires MAY 1998
  762.  
  763.  
  764. Internet Draft                   iTIP                  October 24, 1997
  765.  
  766.  
  767.           NOT PROPERTY = REQUEST-STATUS, TRANSP)
  768.      MAY COMPONENT = VTIMEZONE (
  769.           MUST PROPERTY = DTSTART, TZOFFSET
  770.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME,
  771.           NOT PROPERTY = CREATED)
  772.      MAY COMPONENT = VALARM (
  773.           MUST PROPERTY = CATEGORIES, DTSTART, DURATION, REPEAT
  774.           MAY PROPERTY = ATTACH, DESCRIPTION, SUMMARY
  775.           NOT PROPERTY = COMMENT, CREATED, LAST-MODIFIED, RELATED-TO,
  776.                URL)
  777.      MAY COMPONENT = X-TOKENS (ANY)
  778.      NOT COMPONENT = VTODO
  779.      NOT COMPONENT = VJOURNAL
  780.      NOT COMPONENT = VFREEBUSY
  781.      )
  782.  
  783. 3.1.2     REQUEST
  784.  
  785.    The "REQUEST" method in a "VEVENT" calendar component provides the
  786.    following scheduling functions:
  787.  
  788.       ╖ Invite "Attendees" to an event;
  789.  
  790.       ╖ Reschedule an existing event;
  791.  
  792.       ╖ Update the details of an existing event, without rescheduling
  793.         it;
  794.  
  795.       ╖ Update the status of "Attendees" of an existing event, without
  796.         rescheduling it;
  797.  
  798.       ╖ Reconfirm an existing event, without rescheduling it;
  799.  
  800.       ╖ For an existing "VEVENT" calendar component, delegate the role
  801.         of "Attendee" to another "Calendar User";
  802.  
  803.       ╖ For an existing "VEVENT" calendar component, delegate the role
  804.         of "Organizer" to another "Calendar User".
  805.  
  806.    The originator of the "REQUEST" method is the "Organizer" of the
  807.    event. Normally this is the "Owner" of the event. The recipient of
  808.    the "REQUEST" method is the "Calendar User" invited to the event,
  809.    called the "Attendee". The "Attendee" uses the "REPLY" method to
  810.    convey their attendance status to the "Organizer" of a VEVENT
  811.    "REQUEST".
  812.  
  813.    The "UID" and "SEQUENCE" properties are used to distinguish the
  814.    various uses of the "REQUEST" method. If the "UID" property value in
  815.    the "REQUEST" is not found on the recipient's calendar, then the
  816.    "REQUEST" is for a new "VEVENT" calendar component. If the "UID"
  817.    property value is found on the recipient's calendar, then the
  818.    "REQUEST"' is for either a rescheduling, an update, or a reconfirm of
  819.    the "VEVENT" calendar component.
  820.  
  821.    If the "Organizer" of the "REQUEST" method is not authorized to make
  822.    an event request on the "Attendee's" calendar system, then an
  823.    exception is returned in the "REQUEST-STATUS" property of a
  824.    subsequent "REPLY" method, but no scheduling action is performed.
  825.  
  826.  
  827.  
  828. Silverberg/Mansour/Dawson/Hopson  13                   Expires MAY 1998
  829.  
  830.  
  831. Internet Draft                   iTIP                  October 24, 1997
  832.  
  833.  
  834.    This method type is an iCalendar object that conforms to the
  835.    following property constraints:
  836.  
  837.      (DESCRIPTION "Event - Request" COMPONENT "VEVENT" METHOD "REQUEST"
  838.  
  839.      MUST COMPONENT = CALPROPS (
  840.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REQUEST"})
  841.      MUST COMPONENT = VEVENT (
  842.           MUST PROPERTY = ATTENDEE{ ROLE=OWNER and ORGANIZER if
  843.                different and "STATUS parameter absent or
  844.                STATUS=NEEDS-ACTION on Attendees}, DESCRIPTION{MAYBE
  845.                NULL}, DTSTAMP,DTSTART,SEQUENCE{IF NE 0}, UID
  846.           MAY PROPERTY = ATTACH, CATEGORIES, CLASS, COMMENT, CONTACT,
  847.                CREATED, DTEND, EXDATE, EXRULE, GEO, LAST-MODIFIED,
  848.                LOCATION, PRIORITY, RDATE, RECURRENCE-ID, RELATED-TO,
  849.                RESOURCES, RRULE, SEQUENCE{IF EQ 0},
  850.                STATUS{TENTATIVE/CONFIRMED /CANCELLED}, SUMMARY {MAYBE
  851.                NULL}, TRANSP, URL
  852.           NOT PROPERTY = REQUEST-STATUS)
  853.      MAY COMPONENT = VTIMEZONE (
  854.           MUST PROPERTY = DTSTART, TZOFFSET
  855.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  856.           NOT PROPERTY = CREATED)
  857.      MAY COMPONENT = VALARM (
  858.           MUST PROPERTY = CATEGORIES, DTSTART, DURATION, REPEAT
  859.           MAY PROPERTY = ATTACH, DESCRIPTION, SUMMARY
  860.           NOT PROPERTY = COMMENT, CREATED, LAST-MODIFIED, RELATED-TO,
  861.                URL)
  862.      MAY COMPONENT = X-TOKENS (ANY)
  863.      NOT COMPONENT = VTODO
  864.      NOT COMPONENT = VJOURNAL
  865.      NOT COMPONENT = VFREEBUSY
  866.      )
  867.  
  868.  
  869. 3.1.2.1   REQUEST for Rescheduling an Event
  870.  
  871.    The "REQUEST" method MAY be used to reschedule an event.
  872.  
  873.    A rescheduled event involves a change to the existing event in terms
  874.    of it's time or recurrence intervals and possibly the location or
  875.    description. If the recipient "CUA" of a "REQUEST" method finds that
  876.    the "UID" property value already exists on the calendar, but that the
  877.    "SEQUENCE" property value in the "REQUEST" method is greater than the
  878.    value for the existing event, then the "REQUEST" method describes a
  879.    rescheduling of the event.
  880.  
  881. 3.1.2.2   REQUEST for Update or Reconfirmation of an Event
  882.  
  883.    The "REQUEST" method MAY be used to update or reconfirm an event.
  884.  
  885.    An update to an existing event does not involve changes to the time
  886.    or recurrence intervals, and might not involve a change to the
  887.    location or description for the event. If the recipient "CUA" of a
  888.    "REQUEST" method finds that the "UID" property value already exists
  889.  
  890.  
  891. Silverberg/Mansour/Dawson/Hopson  14                   Expires MAY 1998
  892.  
  893.  
  894. Internet Draft                   iTIP                  October 24, 1997
  895.  
  896.  
  897.    on the calendar and that the "SEQUENCE" property value in the
  898.    "REQUEST" is the same as the value for the existing event, then the
  899.    "REQUEST" method describes an update of the event details, but no
  900.    rescheduling of the event.
  901.  
  902.    The update "REQUEST" method is the appropriate response to a
  903.    "REFRESH" method sent from an "Attendee" to the "Organizer" of an
  904.    event.
  905.  
  906.    Unsolicited "REQUEST" methods MAY also be sent by the "Organizer" of
  907.    an event. The unsolicited "REQUEST" methods MAY be used to either
  908.    update the details of the event, without rescheduling it, to update
  909.    the "STATUS" property parameter of "Attendees", or to reconfirm the
  910.    event.
  911.  
  912. 3.1.2.3   REQUEST for Delegating an Event from an "Attendee" to another
  913.       CU
  914.  
  915.    The "REQUEST" method MAY be used to delegate an event to another
  916.    "Calendar User". The method is used to delegate the "Attendee's" role
  917.    (i.e., "Organizer" or "Attendee") for an event. The "REQUEST" method
  918.    for delegation is sent by one of the "Attendees" of an existing event
  919.    request to some other "Calendar User". In order to avoid scheduling
  920.    loops, the method MUST NOT be sent from an "Attendee" back to the
  921.    "Organizer" of the event. An "Attendee" MAY NOT delegate to the
  922.    "Organizer" of the event.
  923.  
  924.    For the purposes of this description, the "Attendee" delegating the
  925.    event is referred to as the "delegator". The "Attendee" receiving the
  926.    delegation request is referred to as the "delegatee".
  927.  
  928.    The "delegator" of an event MUST forward the existing "REQUEST"
  929.    method for an event to the "delegatee". The event description MUST
  930.    include the "delegator's" up-to-date event definition. The "REQUEST"
  931.    method MUST also include an "ATTENDEE" property with the calendar
  932.    address of the "delegatee". The "delegator" MUST also send a "REPLY"
  933.    method back to the "Organizer" with the "delegator's" "Attendee"
  934.    property "STATUS" parameter value set to DELEGATED. In addition, the
  935.    "DELEGATED-TO" parameter SHOULD be included with the calendar address
  936.    of the "delegatee". A response to the delegation "REQUEST" is sent
  937.    from the "delegatee" to the "Organizer" and optionally, to the
  938.    "delegator". The "REPLY" method from the "delegatee" SHOULD include
  939.    their "ATTENDEE" property with the "DELEGATED-FROM" parameter value
  940.    of the "delegator's"calendar address.
  941.  
  942.    The delegation "REQUEST" method MUST assign the values of the "RSVP"
  943.    and "EXPECT" property parameters associated with the "delegator's"
  944.    "ATTENDEE" property to that of the "delegatee's" "ATTENDEE" property.
  945.    For example if the "delegator's" "ATTENDEE" property specifies
  946.    "RSVP=TRUE;EXPECT=REQUEST", then the "delegatee's" "ATTENDEE"
  947.    property MUST specify "RSVP=TRUE;EXPECT=REQUEST".
  948.  
  949. 3.1.2.4   REQUEST for Delegating role of "Organizer" to another CU
  950.  
  951.    If the "Owner" of an existing "VEVENT" calendar component wishes to
  952.    delegate the role of "Organizer" to another CU, they MAY issue
  953.  
  954.  
  955.  
  956. Silverberg/Mansour/Dawson/Hopson  15                   Expires MAY 1998
  957.  
  958.  
  959. Internet Draft                   iTIP                  October 24, 1997
  960.  
  961.  
  962.    another "REQUEST" method that notifies all "Attendees" and the new
  963.    "Organizer" of this change. The "Owner MUST modify several property
  964.    parameters of the "ATTENDEE" property including the "ROLE", where the
  965.    role of "Owner" and "Organizer" MUST be specified. Additionally, the
  966.    "DELEGATED-TO" and "DELEGATED-FROM" parameters MUST specify the
  967.    "Organizer" and "Owner" calendar addresses. The "Owner" MAY request
  968.    reconfirmation by incrementing the "SEQUENCE" property and setting
  969.    the "RSVP" property parameter to TRUE. This will cause a
  970.    reconfirmation to be sent to the new organizer.
  971.  
  972. 3.1.2.5   REQUEST for Changing the "Organizer" from one CU to another
  973.  
  974.    An "Owner" of an existing "VEVENT" calendar component MAY change the
  975.    "Organizer" from one "CU" to another by sending a "REQUEST" method.
  976.    The "ROLE" property parameter value of ORGANIZER MUST be assigned to
  977.    the new "Organizer". If the old "Organizer" is still an "Attendee"
  978.    then "ROLE" property parameter for that "CU" MUST be set to ATTENDEE.
  979.  
  980. 3.1.2.6   REQUEST for Changing the "Owner"
  981.  
  982.    This memo does not support the notion of changing ownership of a
  983.    "VEVENT" calendar component.
  984.  
  985. 3.1.2.7   REQUEST Forwarded To An Uninvited Calendar User
  986.  
  987.    An "Attendee" invited to an event MAY invite another uninvited
  988.    "Calendar User" to the event. The invited "Attendee" accomplishes
  989.    this scheduling action by forwarding the original "REQUEST" method to
  990.    the uninvited "Calendar User". The forwarded "REQUEST" method need
  991.    not include a new "ATTENDEE" property for the uninvited "Attendee".
  992.    Whether the uninvited "Calendar User" is added to the attendee list,
  993.    and thus informed of changes to the "VEVENT" calendar component is an
  994.    implementation issue.
  995.  
  996. 3.1.2.8   REQUEST Updated Attendee Status
  997.  
  998.    An "Organizer" of an event MAY also request an updated status from
  999.    one of the "Attendees". This is achieved by the "Organizer" sending a
  1000.    "REQUEST" method to the "Attendee" with the "ATTENDEE;RSVP=TRUE"
  1001.    property sequence. The "SEQUENCE" property for the event is not
  1002.    changed from its previous value. A recipient will determine that the
  1003.    only change in the "REQUEST" is that their "RSVP" property parameter
  1004.    indicates a request for an updated status. The recipient SHOULD
  1005.    respond with a "REPLY" method indicating their current status with
  1006.    respect to the "REQUEST".
  1007.  
  1008.    This capability MAY also be achieved by the "Organizer" sending the
  1009.    "REFRESH" method to the "Attendees".
  1010.  
  1011. 3.1.3     REPLY
  1012.  
  1013.    The "REPLY" method in a "VEVENT" calendar component is used to
  1014.    respond (e.g., accept or decline) to a request or to reply to a
  1015.    delegation request. When used in to provide a delegation response,
  1016.  
  1017.  
  1018.  
  1019. Silverberg/Mansour/Dawson/Hopson  16                   Expires MAY 1998
  1020.  
  1021.  
  1022. Internet Draft                   iTIP                  October 24, 1997
  1023.  
  1024.  
  1025.    the "delegator" SHOULD include the calendar address of the
  1026.    "delegatee" on the "DELEGATED-TO" property parameter of the
  1027.    "delegator's" "ATTENDEE" property. The "delegatee" SHOULD include the
  1028.    calendar address of the "delegator" on the "DELEGATED-FROM" property
  1029.    parameter of the "delegatee's" "ATTENDEE" property.
  1030.  
  1031.    The "REPLY" method MAY also be used to respond to an unsuccessful
  1032.    "REQUEST" method. Depending on the value of the "REQUEST-STATUS"
  1033.    property no scheduling action MAY have been performed.
  1034.  
  1035.    The "Organizer" of an event MAY receive the "REPLY" method from a
  1036.    "Calendar User" not in the original "REQUEST". For example, a "REPLY"
  1037.    method MAY be received from a "delegatee" to an event. In addition,
  1038.    the "REPLY" method MAY be received from an unknown "Calendar User",
  1039.    forwarded the "REQUEST" from an invited "Attendee". This uninvited
  1040.    "Attendee" MAY be accepted, or the "Organizer" MAY cancel the event
  1041.    for the uninvited "Attendee" by sending them a "CANCEL" method to the
  1042.    univited "Attendee".
  1043.  
  1044.    This method type is an iCalendar object that conforms to the
  1045.    following property constraints:
  1046.  
  1047.      (DESCRIPTION "Event - Reply" COMPONENT "VEVENT" METHOD "REPLY"
  1048.  
  1049.      MUST COMPONENT = CALPROPS (
  1050.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REPLY"})
  1051.      MUST COMPONENT = VEVENT (
  1052.           MUST PROPERTY = ATTENDEE{MUST be address of ATTENDEE
  1053.                replying}, DTSTAMP, SEQUENCE{IF NE 0}, UID{UID
  1054.                associated with original REQUEST}
  1055.           MAY PROPERTY = COMMENT{provides comment from ATTENDEE to
  1056.                "Organizer"}, EXDATE, EXRULE, RECURRENCE-ID, REQUEST-
  1057.                STATUS, SEQUENCE{IF EQ 0}, SUMMARY {MAYBE NULL}, URL
  1058.           NOT PROPERTY = ATTACH, CATEGORIES, CLASS, CONTACT, CREATED,
  1059.                DESCRIPTION, DTSTART, DTEND, GEO, LAST-MODIFIED,
  1060.                PRIORITY, RELATED-TO, RESOURCES, RDATE, RRULE, STATUS,
  1061.                SUMMARY, TRANSP)
  1062.      MAY COMPONENT = X-TOKENS (ANY)
  1063.      NOT COMPONENT = VTODO
  1064.      NOT COMPONENT = VJOURNAL
  1065.      NOT COMPONENT = VFREEBUSY
  1066.      NOT COMPONENT = VTIMEZONE
  1067.      NOT COMPONENT = VALARM
  1068.      )
  1069.  
  1070. 3.1.4     CANCEL
  1071.  
  1072.    The "CANCEL" method in a "VEVENT" calendar component is used to send
  1073.    a cancellation notice of an existing event request to the
  1074.    "Attendees". The message is sent by the "Organizer" of an event to
  1075.    the "Attendees" of the event. For a recurring event, either the whole
  1076.    event or instances of an event MAY be cancelled. To cancel the
  1077.    complete range of recurring event, the "UID" property value for the
  1078.    event MUST be specified in the "CANCEL" method. In order to cancel an
  1079.    individual instance of the event, the "RECURRENCE-ID" property value
  1080.  
  1081.  
  1082.  
  1083. Silverberg/Mansour/Dawson/Hopson  17                   Expires MAY 1998
  1084.  
  1085.  
  1086. Internet Draft                   iTIP                  October 24, 1997
  1087.  
  1088.  
  1089.    for the event MUST be specified in the "CANCEL" method. In order to
  1090.    cancel a sequence of recurring events, either the"RECURRENCE-ID"
  1091.    property for the first event instance in the sequence MUST be
  1092.    specified with the "RANGE" property parameter value of THISANDPRIOR
  1093.    or THISANDFUTURE to indicate cancellation of the event instances
  1094.    before and after the first event instance, respectively. Lastly,
  1095.    individual recurrence instances MAY be cancelled by specifying
  1096.    multiple"RECURRENCE-ID" properties corresponding to the instances to
  1097.    be cancelled.
  1098.  
  1099.    This method type is an iCalendar object that conforms to the
  1100.    following property constraints:
  1101.  
  1102.      (DESCRIPTION "Event - Cancel" COMPONENT "VEVENT" METHOD "CANCEL"
  1103.  
  1104.      MUST COMPONENT = CALPROPS (
  1105.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"CANCEL"})
  1106.      MUST COMPONENT = VEVENT (
  1107.           MUST PROPERTY = DTSTAMP, SEQUENCE{IF NE 0}, UID{UID
  1108.                associated with original REQUEST}
  1109.           MAY PROPERTY = COMMENT{provides comment from "Organizer" to
  1110.                ATTENDEE}, EXDATE, EXRULE, RECURRENCE-ID, SEQUENCE{IF EQ
  1111.                0}, STATUS{CANCELLED}
  1112.           NOT PROPERTY = ATTACH, ATTENDEE, CATEGORIES, CLASS, CONTACT,
  1113.                CREATED, DESCRIPTION, DTSTART, DTEND, GEO, LAST-
  1114.                MODIFIED, PRIORITY, RDATE, RELATED-TO, RESOURCES,
  1115.                REQUEST-STATUS, RRULE, SUMMARY, TRANSP, URL)
  1116.      MAY COMPONENT = X-TOKENS (ANY)
  1117.      NOT COMPONENT = VTODO
  1118.      NOT COMPONENT = VJOURNAL
  1119.      NOT COMPONENT = VFREEBUSY
  1120.      NOT COMPONENT = VTIMEZONE
  1121.      NOT COMPONENT = VALARM
  1122.      )
  1123.  
  1124. 3.1.5     REFRESH
  1125.  
  1126.    The "REFRESH" method in a "VEVENT" calendar component is used by
  1127.    "Attendees" of an existing event to request an updated description
  1128.    from the event "Organizer". The "REFRESH" method MUST specify the
  1129.    "UID" property corresponding to the event needing update. A
  1130.    recurrence instance of an event MAY be requested by specifying the
  1131.    "RECURRENCE-ID" property corresponding to the associated event. The
  1132.    "Organizer" MUST respond with the latest description and version of
  1133.    the event. This method is intended to facilitate machine processing
  1134.    of event update requests by an "Attendee".
  1135.  
  1136.    This method type is an iCalendar object that conforms to the
  1137.    following property constraints:
  1138.  
  1139.      (DESCRIPTION "Event - Refresh" COMPONENT "VEVENT" METHOD "REFRESH"
  1140.  
  1141.      MUST COMPONENT = CALPROPS (
  1142.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REFRESH"})
  1143.      MUST COMPONENT = VEVENT (
  1144.  
  1145.  
  1146. Silverberg/Mansour/Dawson/Hopson  18                   Expires MAY 1998
  1147.  
  1148.  
  1149. Internet Draft                   iTIP                  October 24, 1997
  1150.  
  1151.  
  1152.                MUST PROPERTY = ATTENDEE{address of requestor}, DTSTAMP,
  1153.                SEQUENCE{IF NE 0}, UID{UID associated with original
  1154.                REQUEST}
  1155.           MAY PROPERTY = COMMENT{provides comment from ATTENDEE to
  1156.                "Organizer"}, RECURRENCE-ID, SEQUENCE{IF EQ 0}
  1157.           NOT PROPERTY = ATTACH, CATEGORIES, CLASS, CONTACT, CREATED,
  1158.                DESCRIPTION, DTSTART, DTEND, EXDATE, EXRULE, GEO,
  1159.                LAST-MODIFIED, PRIORITY, RDATE,RELATED-TO, RESOURCES,
  1160.                REQUEST-STATUS, RRULE,SUMMARY, STATUS, TRANSP, URL)
  1161.      MAY COMPONENT = X-TOKENS (ANY)
  1162.      NOT COMPONENT = VTODO
  1163.      NOT COMPONENT = VJOURNAL
  1164.      NOT COMPONENT = VFREEBUSY
  1165.      NOT COMPONENT = VTIMEZONE
  1166.      NOT COMPONENT = VALARM
  1167.      )
  1168.  
  1169. 3.1.6     COUNTER
  1170.  
  1171.    The "COUNTER" method in a "VEVENT" calendar component is used by an
  1172.    "Attendee" of an existing event to submit to the "Organizer" a
  1173.    counter proposal to the event description. The "Attendee" MUST send
  1174.    the message to the "Organizer" of the event.
  1175.  
  1176.    The counter proposal is an iCalendar object consisting of a VEVENT
  1177.    calendar component describing the complete description of the
  1178.    alternate event.
  1179.  
  1180.    The "Organizer" rejects the counter proposal by sending the
  1181.    "Attendee" a VEVENT "DECLINECOUNTER" method. The "Organizer" accepts
  1182.    the counter proposal by sending all of the "Attendees" to the event a
  1183.    VEVENT "REQUEST" method rescheduling the event. In the later case,
  1184.    the "Organizer" SHOULD reset the individual "RSVP" property parameter
  1185.    values to TRUE on each "ATTENDEE" property in order to force a
  1186.    response by the "Attendees".
  1187.  
  1188.    This method type is an iCalendar object that conforms to the
  1189.    following property constraints:
  1190.  
  1191.      (DESCRIPTION "Event - Counter Proposal" COMPONENT "EVENT"
  1192.      METHOD "COUNTER"
  1193.  
  1194.      MUST COMPONENT = CALPROPS (
  1195.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"COUNTER"})
  1196.      MUST COMPONENT = VEVENT (
  1197.           MUST PROPERTY = ATTENDEE{STATUS parameter absent or
  1198.                STATUS=NEEDS ACTION, Owner and Organizer if different,
  1199.                MAY also be used to propose other  "Attendees"},
  1200.                DESCRIPTION{MAYBE NULL}, DTSTAMP, DTSTART,
  1201.                SEQUENCE{IF NE 0}, UID{MUST be the UID associated with
  1202.                the REQUEST being countered}
  1203.           MAY PROPERTY = ATTACH, CATEGORIES, CLASS, COMMENT{provides a
  1204.                comment from the ATTENDEE to the "Organizer"}, CONTACT,
  1205.                CREATED,            DTEND, EXDATE, EXRULE, GEO, LAST-
  1206.                MODIFIED, LOCATION, PRIORITY, RDATE, RECURRENCE-ID,
  1207.  
  1208.  
  1209.  
  1210. Silverberg/Mansour/Dawson/Hopson  19                   Expires MAY 1998
  1211.  
  1212.  
  1213. Internet Draft                   iTIP                  October 24, 1997
  1214.  
  1215.  
  1216.                RELATED-TO, RESOURCES,        RRULE, SEQUENCE{IF EQ 0},
  1217.                STATUS{TENTATIVE/CONFIRMED/CANCELLED} , SUMMARY {MAYBE
  1218.                NULL}, TRANSP, URL
  1219.           NOT PROPERTY = COMPLETED, DUE, DURATION, REQUEST-STATUS)
  1220.      MAY COMPONENT = VTIMEZONE (
  1221.           MUST PROPERTY = DTSTART, TZOFFSET
  1222.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  1223.           NOT PROPERTY = CREATED)
  1224.      MAY COMPONENT = VALARM (IF COMPONENT EXISTS
  1225.           MUST PROPERTY = CATEGORIES, DTSTART, DURATION, REPEAT
  1226.           MAY PROPERTY = ATTACH, DESCRIPTION, SUMMARY
  1227.      NOT PROPERTY = COMMENT, CREATED, LAST-MODIFIED, RELATED-TO, URL)
  1228.      MAY COMPONENT = X-TOKENS (ANY)
  1229.      NOT COMPONENT = VTODO
  1230.      NOT COMPONENT = VJOURNAL
  1231.      NOT COMPONENT = VFREEBUSY
  1232.      )
  1233.  
  1234. 3.1.7     DECLINECOUNTER
  1235.  
  1236.    The "DECLINECOUNTER" method in a "VEVENT" calendar component is used
  1237.    by the "Organizer" of an event to reject a counter proposal submitted
  1238.    by an "Attendee". The "Organizer" MUST send the "DECLINECOUNTER"
  1239.    message to the "Attendee" that sent the "COUNTER" method to the
  1240.    "Organizer".
  1241.  
  1242.    The counter proposal is an iCalendar object consisting of a VEVENT
  1243.    calendar component describing the complete description of the
  1244.    alternate event.
  1245.  
  1246.    The "Organizer" rejects the counter proposal by sending the
  1247.    "Attendee" a "DECLINECOUNTER" method. The "Organizer" accepts the
  1248.    counter proposal by sending all of the "Attendees" to the event a
  1249.    "REQUEST" method; rescheduling the event. Since this is a rescheduled
  1250.    event, the "SEQUENCE" property value will be incremented. In the
  1251.    later case, the "Organizer" SHOULD reset the individual "RSVP"
  1252.    parameter values to TRUE on all of the "ATTENDEE" properties; in
  1253.    order to force a response by the "Attendees".
  1254.  
  1255.    This method type is an iCalendar object that conforms to the
  1256.    following property constraints:
  1257.  
  1258.      (DESCRIPTION "Event - Cancel" COMPONENT "VEVENT" METHOD
  1259.           "DECLINECOUNTER"
  1260.  
  1261.      MUST COMPONENT = CALPROPS (
  1262.           MUST PROPERTY = PRODID, VERSION{"2.0"},METHOD{
  1263.           "DECLINECOUNTER"})
  1264.      MUST COMPONENT = VEVENT (
  1265.           MUST PROPERTY = DTSTAMP, SEQUENCE{IF NE 0}, UID{same UID
  1266.                specified In Original REQUEST and subsequent COUNTER}
  1267.           MAY PROPERTY = COMMENT{provides comment from "Organizer" to
  1268.                ATTENDEE}, RECURRENCE-ID, REQUEST-STATUS, SEQUENCE{IF EQ
  1269.                0}
  1270.           NOT PROPERTY = ATTACH, ATTENDEE, CATEGORIES, CLASS, CONTACT,
  1271.  
  1272.  
  1273.  
  1274. Silverberg/Mansour/Dawson/Hopson  20                   Expires MAY 1998
  1275.  
  1276.  
  1277. Internet Draft                   iTIP                  October 24, 1997
  1278.  
  1279.  
  1280.                CREATED, DESCRIPTION, DTSTART, DTEND, EXDATE, EXRULE,
  1281.                GEO, LAST-MODIFIED, PRIORITY, RDATE, RELATED-TO,
  1282.                RESOURCES, RRULE,STATUS, SUMMARY, TRANSP, URL)
  1283.      MAY COMPONENT = X-TOKENS (ANY)
  1284.      NOT COMPONENT = VTODO
  1285.      NOT COMPONENT = VJOURNAL
  1286.      NOT COMPONENT = VFREEBUSY
  1287.      NOT COMPONENT = VTIMEZONE
  1288.      NOT COMPONENT = VALARM
  1289.      )
  1290.  
  1291.  
  1292. 3.2 Methods For VFREEBUSY Component
  1293.  
  1294.    This section defines the property set for the methods that are
  1295.    applicable to the "VFREEBUSY" calendar component. Each of the methods
  1296.    is defined using a grammar that specifies the property constraints
  1297.    that define the particular method.
  1298.  
  1299.    This memo only addresses the transfer of busy time information.
  1300.    Applications desiring free time information MUST infer this from
  1301.    available busy time information.
  1302.  
  1303.    The busy time information within the iCalendar object MAY be grouped
  1304.    into more than one "VFREEBUSY" calendar component. This capability
  1305.    allows busy time periods to be grouped according to some common
  1306.    periodicity, such as a calendar week, month, or year. In this case,
  1307.    each "VFREEBUSY" calendar component MUST include the "ATTENDEE",
  1308.    "DTSTART" and "DTEND" properties in order to specify the source of
  1309.    the busy time information and the date and time interval over which
  1310.    the busy time information covers.
  1311.  
  1312.    The "FREEBUSY" property value MAY include a list of values, separated
  1313.    by the COMMA character (ASCII decimal 44). Alternately, multiple busy
  1314.    time periods MAY be specified with multiple instances of the
  1315.    "FREEBUSY" property. Both forms MUST be supported by implementations
  1316.    conforming to this document. Duplicate busy time periods SHOULD NOT
  1317.    be specified in an iCalendar object. However, two different busy time
  1318.    periods MAY overlap.
  1319.  
  1320.    "FREEBUSY" properties SHOULD be sorted such that their values are in
  1321.    ascending order, based on the start time, and then the end time, with
  1322.    the earliest periods first. For example, today's busy time
  1323.    information SHOULD appear after yesterday's busy time information.
  1324.    And the busy time for this half hour SHOULD appear after the busy
  1325.    time for earlier today.
  1326.  
  1327.    Since events MAY span a day boundary, free busy time period MAY also
  1328.    span a day boundary. Individual "A" requests busy time from
  1329.    individuals "B", "C" and "D". Individual "B" and "C" replies with
  1330.    busy time data to individual "A". Individual "D" does not support
  1331.    busy time requests and does not reply with any data. If the transport
  1332.    binding supports exception messages, then a "unsupported capability"
  1333.    message is returned by individual "D" to individual "A".
  1334.  
  1335.    The following summarizes the methods that are defined for the
  1336.    "VFREEBUSY" calendar component.
  1337.  
  1338.  
  1339. Silverberg/Mansour/Dawson/Hopson  21                   Expires MAY 1998
  1340.  
  1341.  
  1342. Internet Draft                   iTIP                  October 24, 1997
  1343.  
  1344.  
  1345.  
  1346.  |================|==================================================|
  1347.  | Method         |  Description                                     |
  1348.  |================|==================================================|
  1349.  | PUBLISH        | Publish unsolicited busy time data.              |
  1350.  | REQUEST        | Request busy time data.                          |
  1351.  | REPLY          | Reply to a busy time request.                    |
  1352.  |================|==================================================|
  1353.  
  1354.  
  1355. 3.2.1     PUBLISH
  1356.  
  1357.    The "PUBLISH" method in a "VFREEBUSY" calendar component is used to
  1358.    publish busy time data. The method MAY be sent from one "Calendar
  1359.    User" to any other. The purpose of the method is to provide a message
  1360.    for sending unsolicited busy time data. That is, the busy time data
  1361.    is not being sent as a "REPLY" to the receipt of a "REQUEST" method.
  1362.  
  1363.    Busy time intervals are represented by individual instances of the
  1364.    "FREEBUSY" property. There is one occurrence of the property for each
  1365.    busy time interval. Duplicate busy time periods SHOULD NOT be
  1366.    returned. However, two different busy time periods MAY overlap.
  1367.  
  1368.    The "FREEBUSY" property value MAY include a list of values, separated
  1369.    by the COMA character (ASCII decimal 44).
  1370.  
  1371.    "FREEBUSY" properties SHOULD be sorted such that their values are in
  1372.    ascending order, from the most recent to past. For example, today's
  1373.    busy time information SHOULD appear after yesterday's busy time
  1374.    information. And the busy time for this half hour SHOULD appear after
  1375.    the busy time for earlier today.
  1376.  
  1377.    Since events MAY span a day boundary, free busy time period MAY also
  1378.    span a day boundary.
  1379.  
  1380.    The busy time periods MAY be grouped into more than one "VFREEBUSY"
  1381.    calendar component. This capability allows busy time periods to be
  1382.    grouped according to some common periodicity, such as a calendar
  1383.    week, month, or year. In this case, each "VFREEBUSY" calendar
  1384.    component MUST include the "ATTENDEE", "DTSTART" and "DTEND"
  1385.    properties in order to specify the originator and date and time
  1386.    interval for the busy time information.
  1387.  
  1388.    The "ATTENDEE" property MUST be specified in the busy time
  1389.    information. The value is the "Calendar User" address of the
  1390.    originator of the busy time information.
  1391.  
  1392.    This method type is an iCalendar object that conforms to the
  1393.    following property constraints:
  1394.  
  1395.      (DESCRIPTION "Busy - Busy Time Publish" COMPONENT "VFREEBUSY"
  1396.           METHOD "PUBLISH"
  1397.  
  1398.      MUST COMPONENT = CALPROPS (
  1399.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"PUBLISH"})
  1400.      MUST COMPONENT = VFREEBUSY (
  1401.           MUST PROPERTY = ATTENDEE{address of originator of busy time
  1402.  
  1403.  
  1404.  
  1405. Silverberg/Mansour/Dawson/Hopson  22                   Expires MAY 1998
  1406.  
  1407.  
  1408. Internet Draft                   iTIP                  October 24, 1997
  1409.  
  1410.  
  1411.                data},FREEBUSY{values MUST all be of the same data type.
  1412.                Multiple instances are allowed. Multiple instances MUST
  1413.                be sorted in ascending order. Values MAY NOT overlap},
  1414.                RELATED-TO{refers to another related VFREEBUSY
  1415.                component},
  1416.           MAY PROPERTY = COMMENT{comment from attendee to originator of
  1417.                request}, CREATED{specifies when the busy time data was
  1418.                created}, DTSTART{represents start of interval for busy
  1419.                time data}, DTEND{represents end of interval for busy
  1420.                time data},LAST-MODIFIED{specifies when busy time data
  1421.                was last modified}, SEQUENCE{IF EQ 0}, URL{specifies busy
  1422.                time URL}
  1423.           NOT PROPERTY = DTSTAMP, DURATION, REQUEST-STATUS, SEQUENCE,
  1424.                UID)
  1425.      MAY COMPONENT = VTIMEZONE (
  1426.           MUST PROPERTY = DTSTART, TZOFFSET
  1427.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  1428.           NOT PROPERTY = CREATED)
  1429.      MAY COMPONENT = X-TOKENS (ANY)
  1430.      NOT COMPONENT = VEVENT
  1431.      NOT COMPONENT = VTODO
  1432.      NOT COMPONENT = VJOURNAL
  1433.      NOT COMPONENT = VALARM
  1434.      )
  1435.  
  1436. 3.2.2     REQUEST
  1437.  
  1438.    The "REQUEST" method in a "VFREEBUSY" calendar component is used to
  1439.    ask a "Calendar User" for their busy time information. The request
  1440.    MAY be for a busy time information bounded by a specific date and
  1441.    time interval.
  1442.  
  1443.    This message only permits requests for busy time information. The
  1444.    message is sent from a "Calendar User" requesting the busy time
  1445.    information to one or more intended recipients.
  1446.  
  1447.    An "ATTENDEE" property MUST be included for the originator of the
  1448.    request and each of the intended recipients that the method is sent
  1449.    to. The originator is indicated with an "ATTENDEE" property parameter
  1450.    sequence of ";ROLE=ORGANIZER". The recipients are indicated with an
  1451.    "ATTENDEE" property parameter sequence of ";ROLE=ATTENDEE". The
  1452.    requests MAY be fanned out in separate messages to the recipients,
  1453.    with each "REQUEST" method only including the associated "ATTENDEE"
  1454.    properties for the recipients of the message.
  1455.  
  1456.    If the originator of the "REQUEST" method is not authorized to make a
  1457.    busy time request on the recipient's calendar system, then an
  1458.    exception message is returned in a "REPLY" method, but no busy time
  1459.    data need be returned.
  1460.  
  1461.    This method type is an iCalendar object that conforms to the
  1462.    following property constraints:
  1463.  
  1464.      (DESCRIPTION "FREEBUSY - Request For Busy Time" COMPONENT
  1465.           "VFREEBUSY" METHOD "REQUEST"
  1466.  
  1467.  
  1468.  
  1469. Silverberg/Mansour/Dawson/Hopson  23                   Expires MAY 1998
  1470.  
  1471.  
  1472. Internet Draft                   iTIP                  October 24, 1997
  1473.  
  1474.  
  1475.      MUST COMPONENT = CALPROPS (
  1476.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REQUEST"})
  1477.      MUST COMPONENT = VFREEBUSY (
  1478.           MUST PROPERTY = ATTENDEE{Attendee instances for the Owner and
  1479.                Organizer if different and the intended recipient of the
  1480.                request}, DTSTAMP, DTSTART, DTEND,SEQUENCE{IF NE 0}, UID
  1481.           MAY PROPERTY = SEQUENCE{IF EQ 0}
  1482.           NOT PROPERTY = COMMENT, CREATED, DURATION, FREEBUSY,
  1483.                LAST-MODIFIED, RELATED-TO, URL, REQUEST-STATUS)
  1484.      MAY COMPONENT = VTIMEZONE (
  1485.           MUST PROPERTY = DTSTART, TZOFFSET
  1486.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  1487.           NOT PROPERTY = CREATED)
  1488.      MAY COMPONENT X-TOKENS (ANY)
  1489.      NOT COMPONENT = VEVENT
  1490.      NOT COMPONENT = VTODO
  1491.      NOT COMPONENT = VJOURNAL
  1492.      NOT COMPONENT = VALARM
  1493.      )
  1494.  
  1495. 3.2.3     REPLY
  1496.  
  1497.    The "REPLY" method in a "VFREEBUSY" calendar component is used to
  1498.    respond to an existing busy time request. The method is sent from a
  1499.    recipient of a busy time request back to the originator of the
  1500.    request. The originator of the request is specified by the "ATTENDEE"
  1501.    property parameter sequence of ";ROLE=ORGANIZER".
  1502.  
  1503.    The "REPLY" method MAY also be used to respond to an unsuccessful
  1504.    "REQUEST" method. Depending on the "REQUEST-STATUS" value, no busy
  1505.    time information MAY be returned.
  1506.  
  1507.    Busy time intervals are represented by individual instances of the
  1508.    "FREEBUSY" property. There is one occurrence of the property for each
  1509.    busy time interval. Duplicate busy time periods SHOULD NOT be
  1510.    returned. However, two different busy time periods MAY overlap.
  1511.  
  1512.    The "FREEBUSY" property value MAY include a list of values, separated
  1513.    by the COMA character (ASCII decimal 44).
  1514.  
  1515.    "FREEBUSY" properties SHOULD be sorted such that their values are in
  1516.    ascending order, from the most recent to past. For example, today's
  1517.    busy time information SHOULD appear after yesterday's busy time
  1518.    information. And the busy time for this half hour SHOULD appear after
  1519.    the busy time for earlier today.
  1520.  
  1521.    Since events MAY span a day boundary, free busy time period MAY also
  1522.    span a day boundary.
  1523.  
  1524.    The busy time periods MAY be grouped into more than one "VFREEBUSY"
  1525.    calendar component. This capability allows busy time periods to be
  1526.    grouped according to some common periodicity, such as a calendar
  1527.    week, month, or year. In this case, each "VFREEBUSY" calendar
  1528.    component MUST include the "ATTENDEE", "DTSTART" and "DTEND"
  1529.    properties in order to identify the source and date and time range
  1530.    for the busy time data.
  1531.  
  1532.  
  1533.  
  1534. Silverberg/Mansour/Dawson/Hopson  24                   Expires MAY 1998
  1535.  
  1536.  
  1537. Internet Draft                   iTIP                  October 24, 1997
  1538.  
  1539.  
  1540.    The "ATTENDEE" property MUST be specified in the busy time reply. The
  1541.    value is the fully qualified RFC 822 address of the recipient
  1542.    replying to the busy time request.
  1543.  
  1544.    This method type is an iCalendar object that conforms to the
  1545.    following property constraints:
  1546.  
  1547.      (DESCRIPTION "FreeBusy - Busy Time Reply" COMPONENT "VFREEBUSY"
  1548.      METHOD "REPLY"
  1549.  
  1550.      MUST COMPONENT = CALPROPS (
  1551.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REPLY"})
  1552.      MUST COMPONENT = VFREEBUSY (
  1553.           MUST PROPERTY = ATTENDEE{address of recipient replying},
  1554.                DTSTAMP, DTSTART, DTEND, FREEBUSY{values MUST all be of
  1555.                the same data type. Multiple instances are allowed.
  1556.                Multiple instances MUST be sorted in ascending order.
  1557.                Values MAY NOT overlap}, RELATED-TO{refers to another
  1558.                related VFREEBUSY component}, REQUEST-STATUS, UID
  1559.           MAY PROPERTY = COMMENT{comment from attendee to originator of
  1560.                request}, CREATED{specifies when the busy time data was
  1561.                created}, DTSTART{represents start of interval for busy
  1562.                time data}, DTEND{represents end of interval for busy
  1563.                time data},LAST-MODIFIED{specifies when busy time data
  1564.                was last modified}, SEQUENCE{IF EQ 0}, URL{specifies busy
  1565.                time URL}
  1566.           NOT PROPERTY = DURATION, SEQUENCE)
  1567.      MAY COMPONENT = VTIMEZONE (
  1568.           MUST PROPERTY = DTSTART, TZOFFSET
  1569.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  1570.           NOT PROPERTY CREATED)
  1571.      MAY COMPONENT = X-TOKENS (ANY)
  1572.      NOT COMPONENT = VEVENT
  1573.      NOT COMPONENT = VTODO
  1574.      NOT COMPONENT = VJOURNAL
  1575.      NOT COMPONENT = VALARM
  1576.      )
  1577.  
  1578.  
  1579. 3.3 Methods For VTODO Component
  1580.  
  1581.    This section defines the property set for the methods that are
  1582.    applicable to the "VTODO" calendar component . Each of the methods is
  1583.    defined using a grammar that specifies the property constraints that
  1584.    define the particular method.
  1585.  
  1586.    The following summarizes the methods that are defined for the "VTODO"
  1587.    calendar component .
  1588.  
  1589. +================+==================================================+
  1590. | Method         |  Description                                     |
  1591. |================+==================================================|
  1592. | PUBLISH        | Post notification of a VTODO. Used primarily as  |
  1593. |                | a method of advertising the existence of a VTODO.|
  1594. | REQUEST        | Assign a VTODO. This is an explicit assignment to|
  1595.  
  1596.  
  1597. Silverberg/Mansour/Dawson/Hopson  25                   Expires MAY 1998
  1598.  
  1599.  
  1600. Internet Draft                   iTIP                  October 24, 1997
  1601.  
  1602.  
  1603. |                | one or more Calendar Users.VTODO REQUEST method  |
  1604. |                | is also used to update or change an existing     |
  1605. |                | VTODO. Clients that cannot handle REQUEST MAY    |
  1606. |                | degrade the method to view it as a PUBLISH.      |
  1607. | REPLY          | Reply to a VTODO request. Attendees MAY set      |
  1608. |                | status to ACCEPTED, DECLINED, TENTATIVE,         |
  1609. |                | DELEGATED, PARTIAL, and COMPLETED.               |
  1610. | CANCEL         | Cancel an existing VTODO assignment.             |
  1611. | REFRESH        | A request sent to a VTODO "Organizer" asking for |
  1612. |                | the latest version of a                          |
  1613. | COUNTER        | Counter a REQUEST with an alternative proposal.  |
  1614. | DECLINECOUNTER | Decline a counter proposal by an attendee.       |
  1615. +================+==================================================+
  1616.  
  1617.  
  1618. 3.3.1     PUBLISH
  1619.  
  1620.    The "PUBLISH" method in a "VTODO" calendar component has no reply
  1621.    response associated with it. Instead, it is simply a posting of an
  1622.    iCalendar object that MAY be added to a calendar by a "Calendar
  1623.    User". It requires and accepts no responses to the "Organizer". It's
  1624.    expected usage is for encapsulating an arbitrary "VTODO" calendar
  1625.    component as an iCalendar object. The "Organizer" MAY subsequently
  1626.    update (with another "PUBLISH" method) or cancel (with a "CANCEL"
  1627.    method) a previously published "VTODO" calendar component .
  1628.  
  1629.    This method type is an iCalendar object that conforms to the
  1630.    following property constraints:
  1631.  
  1632.      (DESCRIPTION "VTODO - Publish" COMPONENT "VTODO" METHOD "PUBLISH
  1633.  
  1634.      MUST COMPONENT = CALPROPS (
  1635.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"PUBLISH"})
  1636.      MUST COMPONENT = VTODO(
  1637.           MUST PROPERTY = ATTENDEE{only Owner and Organizer if
  1638.                different}, DESCRIPTION{MAYBE NULL}, DTSTAMP, DTSTART,
  1639.                PRIORITY, SEQUENCE{IF NE 0}, UID
  1640.           MAY PROPERTY = ATTACH, ATTENDEE{other than ROLE=OWNER |
  1641.                ORGANIZER}, CATEGORIES, CLASS, COMMENT, COMPLETED,
  1642.                CONTACT, CREATED, DUE, EXDATE, EXRULE, GEO, LAST-
  1643.                MODIFIED, LOCATION,PERCENT-COMPLETE, RELATED-TO, RDATE,
  1644.                RECURRENCE-ID, RESOURCES, RRULE, SEQUENCE{IF EQ 0},
  1645.                STATUS{TENTATIVE/CONFIRMED/CANCELLED}, SUMMARY{MAYBE
  1646.                NULL}, URL
  1647.           NOT PROPERTY = REQUEST-STATUS)
  1648.      MAY COMPONENT = VTIMEZONE (
  1649.           MUST PROPERTY = DTSTART, TZOFFSET
  1650.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  1651.           NOT PROPERTY = CREATED)
  1652.      MAY COMPONENT = VALARM (
  1653.           MUST PROPERTY = CATEGORIES, DTSTART, DURATION, REPEAT
  1654.           MAY PROPERTY = ATTACH, DESCRIPTION, SUMMARY
  1655.      NOT PROPERTY =  COMMENT, CREATED, LAST-MODIFIED, RELATED-TO, URL)
  1656.      MAY COMPONENT = X-TOKENS (ANY)
  1657.  
  1658.  
  1659.  
  1660. Silverberg/Mansour/Dawson/Hopson  26                   Expires MAY 1998
  1661.  
  1662.  
  1663. Internet Draft                   iTIP                  October 24, 1997
  1664.  
  1665.  
  1666.      NOT COMPONENT = VEVENT
  1667.      NOT COMPONENT = VJOURNAL
  1668.      NOT COMPONENT = VFREEBUSY
  1669.      )
  1670.  
  1671. 3.3.2     REQUEST
  1672.  
  1673.    The "REQUEST" method in a "VTODO" calendar component provides the
  1674.    following scheduling functions:
  1675.  
  1676.       ╖ Assign a to-do to one or more "Calendar Users";
  1677.  
  1678.       ╖ Reschedule an existing to-do;
  1679.  
  1680.       ╖ Update the details of an existing to-do, without rescheduling
  1681.         it;
  1682.  
  1683.       ╖ Update the completion status of "Attendees" of an existing to-
  1684.         do, without rescheduling it;
  1685.  
  1686.       ╖ Reconfirm an existing to-do, without rescheduling it;
  1687.  
  1688.       ╖ Delegate/reassign an existing to-do to another "Calendar User".
  1689.  
  1690.    The assigned "Calendar Users" are identified in the "VTODO" calendar
  1691.    component by individual "ATTENDEE;ROLE=ATTENDEE" property value
  1692.    sequences.
  1693.  
  1694.    The originator of a "REQUEST" is the "Organizer" of the to-do. The
  1695.    recipient of a "REQUEST" is the "Calendar User" assigned the to-do,
  1696.    called the Attendee. The "Attendee" uses the "REPLY" method to convey
  1697.    their acceptance and completion status to the "Organizer" of the
  1698.    "REQUEST".
  1699.  
  1700.    The "UID" and "SEQUENCE" properties are used to distinguish the
  1701.    various uses of the "REQUEST" method. If the "UID" property value in
  1702.    the "REQUEST" is not found on the recipient's calendar, then the
  1703.    "REQUEST" is for a new to-do. If the "UID" property value is found on
  1704.    the recipient's calendar, then the "REQUEST" is for either a
  1705.    rescheduling, an update, or a reconfirm of the "VTODO" calendar
  1706.    object.
  1707.  
  1708.    If the "Organizer" of the "REQUEST" method is not authorized to make
  1709.    a to-do request on the "Attendee's" calendar system, then an
  1710.    exception is returned in the "REQUEST-STATUS" property of a
  1711.    subsequent "REPLY" method, but no scheduling action is performed.
  1712.  
  1713.    This method type is an iCalendar object that conforms to the
  1714.    following property constraints:
  1715.  
  1716.      (DESCRIPTION "VTODO - Request" COMPONENT "VTODO" METHOD "REQUEST"
  1717.  
  1718.      MUST COMPONENT = CALPROPS (
  1719.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REQUEST"})
  1720.      MUST COMPONENT = VTODO(
  1721.           MUST PROPERTY = ATTENDEE{For Owner and Organizer if different
  1722.                and each Attendee},DESCRIPTION{MAYBE NULL}, DTSTAMP,
  1723.                DTSTART, PRIORITY, SEQUENCE{IF NE 0}, UID
  1724.           MAY PROPERTY = ATTACH, CATEGORIES, CLASS, COMMENT, CONTACT,
  1725.  
  1726.  
  1727.  
  1728. Silverberg/Mansour/Dawson/Hopson  27                   Expires MAY 1998
  1729.  
  1730.  
  1731. Internet Draft                   iTIP                  October 24, 1997
  1732.  
  1733.  
  1734.                CREATED, DUE, EXDATE, EXRULE, GEO, LAST-MODIFIED,
  1735.                LOCATION, PERCENT-COMPLETE, RELATED-TO, RDATE,
  1736.                RECURRENCE-ID, RESOURCES, RRULE, SEQUENCE{IF EQ 0},
  1737.                STATUS{TENTATIVE/CONFIRMED/CANCELLED}, SUMMARY{MAYBE
  1738.                NULL}, URL
  1739.           NOT PROPERTY = COMPLETED, REQUEST-STATUS)
  1740.      MAY COMPONENT = VTIMEZONE (
  1741.           MUST PROPERTY = DTSTART, TZOFFSET
  1742.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  1743.           NOT PROPERTY = CREATED)
  1744.      MAY COMPONENT = VALARM (
  1745.           MUST PROPERTY = CATEGORIES, DTSTART, DURATION, REPEAT
  1746.           MAY PROPERTY = ATTACH, DESCRIPTION, SUMMARY
  1747.           NOT PROPERTY =  COMMENT, CREATED, LAST-MODIFIED, RELATED-TO,
  1748.                URL)
  1749.      MAY COMPONENT = X-TOKENS (ANY)
  1750.      NOT COMPONENT = VEVENT
  1751.      NOT COMPONENT = VJOURNAL
  1752.      NOT COMPONENT = VFREEBUSY
  1753.      )
  1754.  
  1755.  
  1756. 3.3.2.1   REQUEST for Rescheduling a VTODO
  1757.  
  1758.    The "REQUEST" method MAY be used to reschedule a "VTODO" calendar
  1759.    component .
  1760.  
  1761.    A rescheduled "VTODO" calendar component involves a change to the
  1762.    existing "VTODO" calendar component in terms of it's start or due
  1763.    time or recurrence intervals and possibly the description. If the
  1764.    recipient "CUA"  of a "REQUEST" method finds that the "UID" property
  1765.    value already exists on the calendar, but that the "SEQUENCE"
  1766.    property value in the "REQUEST" is greater than the value for the
  1767.    existing VTODO, then the "REQUEST" method describes a rescheduling of
  1768.    the "VTODO" calendar component.
  1769.  
  1770. 3.3.2.2   REQUEST for Update or Reconfirmation of a VTODO
  1771.  
  1772.    The "REQUEST" method MAY be used to update or reconfirm a "VTODO"
  1773.    calendar component. Reconfirmation is merely an update of "Attendee"
  1774.    completion status or overall "VTODO" calendar component status.
  1775.  
  1776.    An update to an existing "VTODO" calendar component does not involve
  1777.    changes to the start or due time or recurrence intervals, nor
  1778.    generally to the description for the "VTODO" calendar component. If
  1779.    the recipient "CUA" of a "REQUEST" method finds that the "UID"
  1780.    property value already exists on the calendar and that the "SEQUENCE"
  1781.    property value in the "REQUEST" is the same as the value for the
  1782.    existing event, then the "REQUEST" method describes an update of the
  1783.    "VTODO" calendar component details, but no rescheduling of the
  1784.    "VTODO" calendar component.
  1785.  
  1786.    The update "REQUEST" is the appropriate response to a "REFRESH"
  1787.    method sent from an "Attendee" to the "Organizer" of a "VTODO"
  1788.    calendar component.
  1789.  
  1790.  
  1791.  
  1792. Silverberg/Mansour/Dawson/Hopson  28                   Expires MAY 1998
  1793.  
  1794.  
  1795. Internet Draft                   iTIP                  October 24, 1997
  1796.  
  1797.  
  1798.    Unsolicited "REQUEST" methods MAY also be sent by the "Organizer" of
  1799.    a "VTODO" calendar component. The unsolicited "REQUEST" methods MAY
  1800.    be used to either update the details of the VTODO, without
  1801.    rescheduling it or to update the completion status of "Attendees" or
  1802.    the "VTODO" calendar component itself (i.e., reconfirm the VTODO).
  1803.  
  1804. 3.3.2.3   REQUEST for Delegating a VTODO
  1805.  
  1806.    The "REQUEST" method MAY be used to delegate or reassign ownership of
  1807.    a "VTODO" calendar component to another "Calendar User". The
  1808.    "REQUEST" method is used to delegate the "Attendee's" role (i.e. "
  1809.    "Organizer", or "Attendee") for a "VTODO" calendar component. The
  1810.    "REQUEST" method is sent by one of the "Attendees" of an existing
  1811.    "VTODO" calendar component request to some other individual. In order
  1812.    to avoid scheduling loops, the method MUST NOT be sent from an
  1813.    "Attendee" back to the "Organizer" of the "VTODO" calendar component.
  1814.    An "Attendee" of a "VTODO" calendar component MAY NOT delegate to the
  1815.    "Organizer" of the event.
  1816.  
  1817.    For the purposes of this description, the "Attendee" delegating the
  1818.    "VTODO" calendar component is referred to as the "delegator". The
  1819.    "Attendee" receiving the delegation request is referred to as the
  1820.    "delegatee".
  1821.  
  1822.    The "delegator" of a "VTODO" calendar component MUST forward the
  1823.    existing "REQUEST" method for a "VTODO" calendar component to the
  1824.    "delegatee". The "VTODO" calendar component description MUST include
  1825.    the "delegator's" up-to-date "VTODO" calendar component definition.
  1826.    The "REQUEST" method MUST also include an "ATTENDEE" property with
  1827.    the calendar address of the "delegatee". The "delegator" MUST also
  1828.    send a "REPLY" method back to the "Organizer" with the "delegator's"
  1829.    "Attendee" property "STATUS" parameter value set to DELEGATED. In
  1830.    addition, the "DELEGATED-TO" parameter SHOULD be included with the
  1831.    calendar address of the "delegatee". A response to the delegation
  1832.    "REQUEST" is sent from the "delegatee" to the "Organizer" and
  1833.    optionally, to the "delegator". The "REPLY" method from the
  1834.    "delegatee" SHOULD include the "ATTENDEE" property with their
  1835.    calendar address and the "DELEGATED-FROM" parameter with the value of
  1836.    the "delegator's"calendar address.
  1837.  
  1838.    The delegation "REQUEST" method MUST assign the values of the "RSVP"
  1839.    and "EXPECT" property parameters associated with the "delegator's"
  1840.    "Attendee" property to that of the "delegatee's" "Attendee" property.
  1841.    For example if the "delegator's" "Attendee" property specifies
  1842.    "RSVP=TRUE;EXPECT=REQUEST", then the "delegatee's" "Attendee"
  1843.    property MUST specify "RSVP=TRUE;EXPECT=REQUEST".
  1844.  
  1845. 3.3.2.4   REQUEST Forwarded To An Uninvited Calendar User
  1846.  
  1847.    An "Attendee" assigned a "VTODO" calendar component MAY also assign
  1848.    the "VTODO" calendar component to another new "Calendar User", not
  1849.    previously associated with the "VTODO" calendar component. The
  1850.    current "Attendee" assigned the "VTODO" calendar component
  1851.    accomplishes this scheduling action by forwarding the original
  1852.    "REQUEST" method to the new "Calendar User".
  1853.  
  1854.  
  1855.  
  1856. Silverberg/Mansour/Dawson/Hopson  29                   Expires MAY 1998
  1857.  
  1858.  
  1859. Internet Draft                   iTIP                  October 24, 1997
  1860.  
  1861.  
  1862.    An "Organizer" of a "VTODO" calendar component MAY also request an
  1863.    updated completion status from one of the "Attendees". This is
  1864.    achieved by the "Organizer" sending a "REQUEST" method to the
  1865.    "Attendee" with the "ATTENDEE;RSVP=TRUE" property sequence. The
  1866.    "SEQUENCE" property for the "VTODO" calendar component is not changed
  1867.    from its previous value. A recipient will determine that the only
  1868.    change in the "REQUEST" is that their "RSVP" property parameter
  1869.    indicates a request for an updated status. The recipient SHOULD
  1870.    respond with a "REPLY" method indicating their current status with
  1871.    respect to the "REQUEST".
  1872.  
  1873. 3.3.2.5   REQUEST Updated Attendee Status
  1874.  
  1875.    An "Organizer" of a to-do MAY also request an updated status from one
  1876.    of the "Attendees". This is achieved by the "Organizer" sending a
  1877.    "REQUEST" method to the "Attendee" with the "ATTENDEE;RSVP=TRUE"
  1878.    property sequence. The "SEQUENCE" property for the to-do is not
  1879.    changed from its previous value. A recipient will determine that the
  1880.    only change in the "REQUEST" is that their "RSVP" property parameter
  1881.    indicates a request for an updated status. The recipient SHOULD
  1882.    respond with a "REPLY" method indicating their current status with
  1883.    respect to the "REQUEST".
  1884.  
  1885.    This capability MAY also be achieved by the "Organizer" sending the
  1886.    "REFRESH" method to the "Attendees".
  1887.  
  1888. 3.3.3     REPLY
  1889.  
  1890.    The "REPLY" method in a "VTODO" calendar component is used to respond
  1891.    (e.g., accept or decline) to a request or to reply to a delegation
  1892.    request. It is also used by an "Attendee" to update their completion
  1893.    status. When used to provide a delegation response, the "delegator"
  1894.    SHOULD include the calendar address of the "delegatee" in the
  1895.    "DELEGATED-TO" parameter of the "delegator's" "ATTENDEE" property.
  1896.    The "delegatee" SHOULD include the calendar address of the
  1897.    "delegator" on the "DELEGATED-FROM" parameter of the "delegatee's"
  1898.    "ATTENDEE" property.
  1899.  
  1900.    The "REPLY" method MAY also be used to respond to an unsuccessful
  1901.    "VTODO" calendar component "REQUEST" method. Depending on the
  1902.    "REQUEST-STATUS" value, no scheduling action MAY have been performed.
  1903.  
  1904.    The "Organizer" of a "VTODO" calendar component MAY receive a "REPLY"
  1905.    method from a "Calendar User" not in the original "REQUEST". For
  1906.    example, a "REPLY" method MAY be received from a "delegatee" of a
  1907.    "VTODO" calendar component. In addition, the "REPLY" method MAY be
  1908.    received from an unknown "Calendar User"; forwarded the "REQUEST"
  1909.    from an original "Attendee" assigned the "VTODO" calendar component.
  1910.    This uninvited "Attendee" MAY be accepted, or the "Organizer" MAY
  1911.    cancel the "VTODO" calendar component for the uninvited "Attendee" by
  1912.    sending them a "CANCEL" method.
  1913.  
  1914.    This method type is an iCalendar object that conforms to the
  1915.    following property constraints:
  1916.  
  1917.      (DESCRIPTION "VTODO - Reply" COMPONENT "VTODO" METHOD "REPLY"
  1918.  
  1919.  
  1920. Silverberg/Mansour/Dawson/Hopson  30                   Expires MAY 1998
  1921.  
  1922.  
  1923. Internet Draft                   iTIP                  October 24, 1997
  1924.  
  1925.  
  1926.  
  1927.      MUST COMPONENT = CALPROPS (
  1928.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REPLY"})
  1929.      MUST COMPONENT = VTODO(
  1930.           MUST PROPERTY = ATTENDEE{MUST be address of ATTENDEE
  1931.                replying}, DTSTAMP, SEQUENCE{IF NE 0}, UID{UID
  1932.                associated with original REQUEST}
  1933.           MAY PROPERTY = COMMENT{provides comment from ATTENDEE to
  1934.                "Organizer"}, COMPLETED, EXDATE, EXRULE, RECURRENCE-ID,
  1935.                REQUEST-STATUS, PERCENT-COMPLETE, SEQUENCE{IF EQ 0},
  1936.                SUMMARY {MAYBE NULL}, URL
  1937.           NOT PROPERTY = ATTACH, CATEGORIES, CLASS, CONTACT, CREATED,
  1938.                DESCRIPTION, DTSTART, DUE, GEO, LAST-MODIFIED, PRIORITY,
  1939.                RELATED-TO, RESOURCES, RDATE, RRULE, STATUS, SUMMARY,
  1940.                TRANSP)
  1941.      MAY COMPONENT = X-TOKENS (ANY)
  1942.      NOT COMPONENT = VEVENT
  1943.      NOT COMPONENT = VJOURNAL
  1944.      NOT COMPONENT = VFREEBUSY
  1945.      NOT COMPONENT = VTIMEZONE
  1946.      NOT COMPONENT = VALARM
  1947.      )
  1948.  
  1949. 3.3.4     CANCEL
  1950.  
  1951.    The "CANCEL" method in a "VTODO" calendar component is used to send a
  1952.    cancellation notice of an existing "VTODO" calendar request request
  1953.    to the "Attendees". The message is sent by the "Organizer" of a
  1954.    "VTODO" calendar component to the "Attendees" of the "VTODO" calendar
  1955.    component. For a recurring "VTODO" calendar component, either the
  1956.    whole "VTODO" calendar component or instances of a "VTODO" calendar
  1957.    component MAY be cancelled. To cancel the complete range of a
  1958.    recurring "VTODO" calendar component, the "UID" property value for
  1959.    the "VTODO" calendar component MUST be specified in the "CANCEL"
  1960.    method. In order to cancel an individual instance of a recurring
  1961.    "VTODO" calendar component, the "RECURRENCE-ID" property value for
  1962.    the "VTODO" calendar component MUST be specified in the "CANCEL"
  1963.    method. In order to cancel a sequence of instances of a recurring
  1964.    "VTODO" calendar component, either the "RECURRENCE-ID" property for
  1965.    the first instance in the sequence MUST be specified with the "RANGE"
  1966.    property parameter value of THISANDPRIOR or THISANDFUTURE; to
  1967.    indicate cancellation of the "VTODO" calendar component instances
  1968.    before and after the first instance, respectively. Lastly, individual
  1969.    recurrence instances MAY be cancelled by specifying multiple
  1970.    "RECURRENCE-ID" properties corresponding to the instances to be
  1971.    cancelled.
  1972.  
  1973.    This method type is an iCalendar object that conforms to the
  1974.    following property constraints:
  1975.  
  1976.      (DESCRIPTION "VTODO - Cancel" COMPONENT "VTODO" METHOD "CANCEL"
  1977.  
  1978.      MUST COMPONENT = CALPROPS (
  1979.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"CANCEL"})
  1980.  
  1981.  
  1982.  
  1983. Silverberg/Mansour/Dawson/Hopson  31                   Expires MAY 1998
  1984.  
  1985.  
  1986. Internet Draft                   iTIP                  October 24, 1997
  1987.  
  1988.  
  1989.      MUST COMPONENT = VTODO(
  1990.           MUST PROPERTY = DTSTAMP, SEQUENCE{IF NE 0}, UID{UID
  1991.                associated with original REQUEST}
  1992.           MAY PROPERTY = COMMENT{provides comment from "Organizer" to
  1993.                ATTENDEE}, EXDATE, EXRULE, RECURRENCE-ID, SEQUENCE{IF EQ
  1994.                0}, STATUS{CANCELLED}
  1995.           NOT PROPERTY = ATTACH, ATTENDEE, CATEGORIES, CLASS,
  1996.                COMPLETED, CONTACT, CREATED, DESCRIPTION, DTSTART, DUE,
  1997.                GEO, LAST-MODIFIED, PRIORITY, RDATE, RELATED-TO,
  1998.                RESOURCES, REQUEST-STATUS, RRULE, SUMMARY, TRANSP, URL)
  1999.      MAY COMPONENT = X-TOKENS (ANY)
  2000.      NOT COMPONENT = VEVENT
  2001.      NOT COMPONENT = VJOURNAL
  2002.      NOT COMPONENT = VFREEBUSY
  2003.      NOT COMPONENT = VTIMEZONE
  2004.      NOT COMPONENT = VALARM
  2005.      )
  2006.  
  2007. 3.3.5     REFRESH
  2008.  
  2009.    The "REFRESH" method in a "VTODO" calendar component is used by
  2010.    "Attendees" of an existing "VTODO" calendar component to request an
  2011.    updated description from the "Organizer" of the "VTODO" calendar
  2012.    component. The "Organizer" of the "VTODO" calendar component MAY also
  2013.    use this method to request an updated status from the "Attendees".
  2014.    The "REFRESH" method MUST specify the "UID" property corresponding to
  2015.    the "VTODO" calendar component needing update.
  2016.  
  2017.    A refresh of a recurrence instance of a "VTODO" calendar component
  2018.    MAY be requested by specifying the "RECURRENCE-ID" property
  2019.    corresponding to the associated "VTODO" calendar component. The
  2020.    "Organizer" MUST respond with the latest description and rendition of
  2021.    the "VTODO" calendar component. This method is intended to facilitate
  2022.    machine processing of requests for updates to a "VTODO" calendar
  2023.    component.
  2024.  
  2025.    This method type is an iCalendar object that conforms to the
  2026.    following property constraints:
  2027.  
  2028.      (DESCRIPTION "VTODO - Refresh" COMPONENT "VTODO" METHOD "REFRESH"
  2029.  
  2030.      MUST COMPONENT = CALPROPS (
  2031.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REFRESH"})
  2032.      MUST COMPONENT = VTODO(
  2033.           MUST PROPERTY = ATTENDEE{address of requestor}, DTSTAMP,
  2034.                SEQUENCE{IF NE 0}, UID{UID associated with original
  2035.                REQUEST} MAY PROPERTY = COMMENT{provides comment from
  2036.                ATTENDEE to "Organizer"}, RECURRENCE-ID, SEQUENCE{IF EQ
  2037.                0}
  2038.           NOT PROPERTY = ATTACH, CATEGORIES, CLASS, COMPLETED, CONTACT,
  2039.                CREATED, DESCRIPTION, DTSTART, DUE, EXDATE, EXRULE, GEO,
  2040.                LAST-MODIFIED, PRIORITY, RDATE,RELATED-TO, RESOURCES,
  2041.                REQUEST-STATUS, RRULE,SUMMARY, STATUS, TRANSP, URL)
  2042.      MAY COMPONENT = X-TOKENS (ANY)
  2043.      NOT COMPONENT = VEVENT
  2044.  
  2045.  
  2046. Silverberg/Mansour/Dawson/Hopson  32                   Expires MAY 1998
  2047.  
  2048.  
  2049. Internet Draft                   iTIP                  October 24, 1997
  2050.  
  2051.  
  2052.      NOT COMPONENT = VJOURNAL
  2053.      NOT COMPONENT = VFREEBUSY
  2054.      NOT COMPONENT = VTIMEZONE
  2055.      NOT COMPONENT = VALARM
  2056.      )
  2057.  
  2058. 3.3.6     COUNTER
  2059.  
  2060.    The "COUNTER" method in a "VTODO" calendar component is used by an
  2061.    "Attendee" of an existing "VTODO" calendar component to submit to the
  2062.    "Organizer" a counter proposal for the "VTODO" calendar component.
  2063.    The "Attendee" MUST send the message to the "Organizer" of the
  2064.    "VTODO" calendar component.
  2065.  
  2066.    The counter proposal is an iCalendar object consisting of a "VTODO"
  2067.    calendar component describing the complete description of the
  2068.    alternate "VTODO" calendar component.
  2069.  
  2070.    The "Organizer" rejects the counter proposal by sending the
  2071.    "Attendee" a "DECLINECOUNTER" method. The "Organizer" accepts the
  2072.    counter proposal by sending all of the "Attendees" of the "VTODO"
  2073.    calendar component a "REQUEST" method rescheduling the "VTODO"
  2074.    calendar component. In the later case, the "Organizer" SHOULD reset
  2075.    the individual "RSVP" property parameter values to TRUE on each
  2076.    "ATTENDEE" property; in order to force a response by the "Attendees".
  2077.  
  2078.    This method type is an iCalendar object that conforms to the
  2079.    following property constraints:
  2080.  
  2081.      (DESCRIPTION "VTODO- Request" COMPONENT "VTODO" METHOD "REQUEST"
  2082.  
  2083.      MUST COMPONENT = CALPROPS (
  2084.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REQUEST"})
  2085.      MUST COMPONENT = VTODO(
  2086.           MUST PROPERTY = ATTENDEE{For Owner and Orginator if different
  2087.                and Attendees}, DESCRIPTION{MAYBE NULL}, DTSTAMP,
  2088.                DTSTART, PRIORITY, SEQUENCE{IF NE 0}, UID
  2089.           MAY PROPERTY = ATTACH, CATEGORIES, CLASS, COMMENT, COMPLETED,
  2090.                CONTACT, CREATED, DUE, EXDATE, EXRULE, GEO, LAST-
  2091.                MODIFIED,LOCATION,RELATED-TO, RDATE, RECURRENCE-ID,
  2092.                RESOURCES, RRULE, SEQUENCE{IF EQ 0},
  2093.                STATUS{TENTATIVE/CONFIRMED/CANCELLED}, SUMMARY{MAYBE
  2094.                NULL}, URL
  2095.           NOT PROPERTY = REQUEST-STATUS)
  2096.      MAY COMPONENT = VTIMEZONE (
  2097.           MUST PROPERTY = DTSTART, TZOFFSET
  2098.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  2099.           NOT PROPERTY = CREATED)
  2100.      MAY COMPONENT = VALARM (
  2101.           MUST PROPERTY = CATEGORIES, DTSTART, DURATION, REPEAT
  2102.           MAY PROPERTY = ATTACH, DESCRIPTION, SUMMARY
  2103.      NOT PROPERTY =  COMMENT, CREATED, LAST-MODIFIED, RELATED-TO, URL)
  2104.      MAY COMPONENT = X-TOKENS (ANY)
  2105.      NOT COMPONENT = VEVENT
  2106.      NOT COMPONENT = VJOURNAL
  2107.  
  2108.  
  2109.  
  2110. Silverberg/Mansour/Dawson/Hopson  33                   Expires MAY 1998
  2111.  
  2112.  
  2113. Internet Draft                   iTIP                  October 24, 1997
  2114.  
  2115.  
  2116.      NOT COMPONENT = VFREEBUSY
  2117.      )
  2118.  
  2119. 3.3.7     DECLINECOUNTER
  2120.  
  2121.    The "DECLINECOUNTER" method in a "VTODO" calendar component is used
  2122.    by an "Organizer" of "VTODO" calendar component to reject a counter
  2123.    proposal offered by one of the "Attendees". The "Organizer" MUST send
  2124.    the message to the "Attendee" that sent the "COUNTER" method to the
  2125.    "Organizer".
  2126.  
  2127.    The counter proposal is an iCalendar object consisting of a "VTODO"
  2128.    calendar component describing the complete description of the
  2129.    alternate "VTODO" calendar component.
  2130.  
  2131.    The "Organizer" rejects the counter proposal by sending the
  2132.    "Attendee" a "DECLINECOUNTER" method. The "Organizer" accepts the
  2133.    counter proposal by sending all of the "Attendees" of the "VTODO"
  2134.    calendar component a "REQUEST" method rescheduling the "VTODO"
  2135.    calendar component. Since this is a rescheduled "VTODO", the
  2136.    "SEQUENCE" property value will be incremented. In the later case, the
  2137.    "Organizer" SHOULD reset the individual "RSVP" property parameter
  2138.    values to TRUE on all of the "ATTENDEE" properties in order to force
  2139.    a response by the "Attendees".
  2140.  
  2141.    This method type is an iCalendar object that conforms to the
  2142.    following property constraints:
  2143.  
  2144.      (DESCRIPTION "VTODO - Cancel" COMPONENT "VTODO" METHOD
  2145.      "DECLINECOUNTER"
  2146.  
  2147.      MUST COMPONENT = CALPROPS (
  2148.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD
  2149.                {"DECLINECOUNTER"})
  2150.      MUST COMPONENT = VTODO(
  2151.           MUST PROPERTY = DTSTAMP, SEQUENCE{IF NE 0}, UID{same UID
  2152.                specified In Original REQUEST and subsequent COUNTER}
  2153.           MAY PROPERTY = COMMENT{provides comment from "Organizer" to
  2154.                ATTENDEE}, RECURRENCE-ID, REQUEST-STATUS, SEQUENCE{IF EQ
  2155.                0}
  2156.           NOT PROPERTY = ATTACH, ATTENDEE, CATEGORIES, CLASS,
  2157.                COMPLETED, CONTACT, CREATED, DESCRIPTION, DTSTART, DUE,
  2158.                EXDATE, EXRULE, GEO, LAST-MODIFIED, PRIORITY, RDATE,
  2159.                RELATED-TO, RESOURCES, RRULE, STATUS, SUMMARY, TRANSP,
  2160.                URL)
  2161.      MAY COMPONENT = X-TOKENS (ANY)
  2162.      NOT COMPONENT = VEVENT
  2163.      NOT COMPONENT = VJOURNAL
  2164.      NOT COMPONENT = VFREEBUSY
  2165.      NOT COMPONENT = VTIMEZONE
  2166.      NOT COMPONENT = VALARM
  2167.      )
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174. Silverberg/Mansour/Dawson/Hopson  34                   Expires MAY 1998
  2175.  
  2176.  
  2177. Internet Draft                   iTIP                  October 24, 1997
  2178.  
  2179.  
  2180. 3.4 Methods For VJOURNAL Component
  2181.  
  2182.    This section defines the property set for the methods that are
  2183.    applicable to the "VJOURNAL" calendar component. Each of the methods
  2184.    is defined using a grammar that clarifies the property constraints
  2185.    that define the particular method.
  2186.  
  2187.    The following summarizes the methods that are defined for the
  2188.    "VJOURNAL" calendar component.
  2189.  
  2190.  +================+==================================================+
  2191.  | Method         |  Description                                     |
  2192.  |================+==================================================|
  2193.  | PUBLISH        | Post a journal entry. Used primarily as a method |
  2194.  |                | of advertising the existence of a journal entry  |
  2195.  | CANCEL         | Cancel an existing journal entry request.        |
  2196.  | REFRESH        | A request sent to the journal "Organizer" for    |
  2197.  |                | the latest version of the journal entry to be    |
  2198.  |                | resent the requester.                            |
  2199.  +================+==================================================+
  2200.  
  2201.  
  2202. 3.4.1     PUBLISH
  2203.  
  2204.    The "PUBLISH" method in a "VJOURNAL" calendar component has no reply
  2205.    response associated with it. Instead, it is simply a posting of an
  2206.    iCalendar object that MAY be added to a calendar by a "Calendar User"
  2207.    agent. It requires and accepts no responses to the "Organizer". The
  2208.    expected usage is for encapsulating an arbitrary journal entry as an
  2209.    iCalendar object. The "Organizer" MAY subsequently update (with
  2210.    another "PUBLISH" method) or cancel (with a "CANCEL" method) a
  2211.    previously published journal entry.
  2212.  
  2213.    This method type is an iCalendar object that conforms to the
  2214.    following property constraints:
  2215.  
  2216.      (DESCRIPTION "Journal - Publish" COMPONENT "VJOURNAL" METHOD
  2217.           "PUBLISH
  2218.  
  2219.      MUST COMPONENT = CALPROPS (
  2220.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"PUBLISH"})
  2221.      MUST COMPONENT = VJOURNAL (
  2222.           MUST PROPERTY = DESCRIPTION{MAYBE NULL}, DTSTAMP,
  2223.                DTSTART{VALUE=DATE}, SEQUENCE{IF NE 0}, UID
  2224.           MAY PROPERTY = ATTACH, ATTENDEE{only ROLE=ORGANIZER and
  2225.                OWNER if different}, CATEGORIES, CLASS, COMMENT,
  2226.                CONTACT, CREATED, EXDATE, EXRULE, LAST-MODIFIED,
  2227.                RELATED-TO, RDATE, RECURRENCE-ID, RRULE, SEQUENCE{IF EQ
  2228.                0}, SUMMARY{MAYBE NULL}, URL
  2229.           NOT PROPERTY = REQUEST-STATUS)
  2230.      MAY COMPONENT = VTIMEZONE (
  2231.           MUST PROPERTY = DTSTART, TZOFFSET
  2232.           MAY PROPERTY = COMMENT, DAYLIGHT, (RDATE / RRULE), TZNAME
  2233.           NOT PROPERTY = CREATED)
  2234.      MAY COMPONENT = X-TOKENS (ANY)
  2235.  
  2236.  
  2237. Silverberg/Mansour/Dawson/Hopson  35                   Expires MAY 1998
  2238.  
  2239.  
  2240. Internet Draft                   iTIP                  October 24, 1997
  2241.  
  2242.  
  2243.      NOT COMPONENT = VEVENT
  2244.      NOT COMPONENT = VTODO
  2245.      NOT COMPONENT = VALARM
  2246.      NOT COMPONENT = VFREEBUSY
  2247.      )
  2248.  
  2249. 3.4.2     CANCEL
  2250.  
  2251.    The "CANCEL" method in a "VJOURNAL" calendar component is used to
  2252.    send a cancellation notice of an existing journal entry request to
  2253.    the "Attendees". The message is sent by the "Organizer" of a journal
  2254.    entry to the "Attendees" of the journal entry. For a recurring
  2255.    journal entry, either the whole journal entry or instances of a
  2256.    journal entry MAY be cancelled. To cancel the complete range of a
  2257.    recurring journal entry, the "UID" property value for the journal
  2258.    entry MUST be specified in the "CANCEL" method. In order to cancel an
  2259.    individual instance of the journal entry, the "RECURRENCE-ID"
  2260.    property value for the journal entry MUST be specified in the
  2261.    "CANCEL" method. In order to cancel a sequence of instances in a
  2262.    recurring journal entry, the "RECURRENCE-ID" property for the first
  2263.    journal entry instance in the sequence MUST be specified with the
  2264.    "RANGE" property parameter value of THISANDPRIOR or THISANDFUTURE; to
  2265.    indicate cancellation of the journal entry instances before and after
  2266.    the first journal entry instance, respectively. Lastly, individual
  2267.    recurrence instances MAY be cancelled by specifying multiple
  2268.    "RECURRENCE-ID" properties corresponding to the instances to be
  2269.    cancelled.
  2270.  
  2271.    This method type is an iCalendar object that conforms to the
  2272.    following property constraints:
  2273.  
  2274.      (DESCRIPTION "Journal - Cancel" COMPONENT "VJOURNAL" METHOD
  2275.           "CANCEL"
  2276.  
  2277.      MUST COMPONENT = CALPROPS (
  2278.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"CANCEL"})
  2279.      MUST COMPONENT = VJOURNAL (
  2280.           MUST PROPERTY = DTSTAMP, SEQUENCE{IF NE 0}, UID{UID
  2281.                associated with original REQUEST}
  2282.           MAY PROPERTY = COMMENT{provides comment from "Organizer" to
  2283.                ATTENDEE}, EXDATE, EXRULE, RECURRENCE-ID, SEQUENCE{IF EQ
  2284.                0}, STATUS{CANCELLED}
  2285.           NOT PROPERTY = ATTACH, ATTENDEE, CATEGORIES, CLASS, CONTACT,
  2286.                CREATED, DESCRIPTION, DTSTART, LAST-MODIFIED, RDATE,
  2287.                RELATED-TO, REQUEST-STATUS, RRULE, SUMMARY, URL)
  2288.      MAY COMPONENT = X-TOKENS (ANY)
  2289.      NOT COMPONENT = VEVENT
  2290.      NOT COMPONENT = VTODO
  2291.      NOT COMPONENT = VFREEBUSY
  2292.      NOT COMPONENT = VTIMEZONE
  2293.      NOT COMPONENT = VALARM
  2294.      )
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300. Silverberg/Mansour/Dawson/Hopson  36                   Expires MAY 1998
  2301.  
  2302.  
  2303. Internet Draft                   iTIP                  October 24, 1997
  2304.  
  2305.  
  2306. 3.4.3     REFRESH
  2307.  
  2308.    The "REFRESH" method in a "VJOURNAL" calendar component is used by
  2309.    "Attendees" of an existing journal entry to request an updated
  2310.    description from the journal entry "Organizer". The "REFRESH" method
  2311.    MUST specify the "UID" property corresponding to the journal entry
  2312.    needing update. A recurrence instance of a journal entry MAY be
  2313.    requested by specifying the"RECURRENCE-ID" property corresponding to
  2314.    the associated journal entry. The "Organizer" MUST respond with the
  2315.    latest description and version of the journal entry. This method is
  2316.    intended to facilitate machine processing of the "REFRESH" response.
  2317.  
  2318.    This method type is an iCalendar object that conforms to the
  2319.    following property constraints:
  2320.  
  2321.      (DESCRIPTION "Journal - Refresh" COMPONENT "VJOURNAL" METHOD
  2322.           "REFRESH"
  2323.  
  2324.      MUST COMPONENT = CALPROPS (
  2325.           MUST PROPERTY = PRODID, VERSION{"2.0"}, METHOD{"REFRESH"})
  2326.      MUST COMPONENT = VJOURNAL (
  2327.           MUST PROPERTY = ATTENDEE{address of requestor}, DTSTAMP,
  2328.                SEQUENCE{IF NE 0}, UID{UID associated with original
  2329.                REQUEST}
  2330.           MAY PROPERTY = COMMENT{provides comment from ATTENDEE to
  2331.                "Organizer"}, RECURRENCE-ID, SEQUENCE{IF EQ 0}
  2332.           NOT PROPERTY = ATTACH, CATEGORIES, CLASS, CONTACT, CREATED,
  2333.                DESCRIPTION, DTSTART, EXDATE, EXRULE, LAST-MODIFIED,
  2334.                PRIORITY, RDATE, RELATED-TO, REQUEST-STATUS, RRULE,
  2335.                SUMMARY, URL)
  2336.      MAY COMPONENT = X-TOKENS (ANY)
  2337.      NOT COMPONENT = VEVENT
  2338.      NOT COMPONENT = VTODO
  2339.      NOT COMPONENT = VFREEBUSY
  2340.      NOT COMPONENT = VTIMEZONE
  2341.      NOT COMPONENT = VALARM
  2342.      )
  2343.  
  2344.  
  2345. 3.5 Status Replies
  2346.  
  2347.    The "REQUEST-STATUS" property MAY include the following values:
  2348.  
  2349. |==============+============================+=========================|
  2350. | Short Return | Longer Return Status       | Offending Data          |
  2351. | Status Code  | Description                |                         |
  2352. |==============+============================+=========================|
  2353. | 2.0          | Success.                   | None.                   |
  2354. |==============+============================+=========================|
  2355. | 2.1          | Success but fallback taken | Property name and value |
  2356. |              | on one or more property    | MAY be specified.       |
  2357. |              | values.                    |                         |
  2358. |==============+============================+=========================|
  2359. | 2.2          | Success, invalid property  | Property name MAY be    |
  2360.  
  2361.  
  2362.  
  2363. Silverberg/Mansour/Dawson/Hopson  37                   Expires MAY 1998
  2364.  
  2365.  
  2366. Internet Draft                   iTIP                  October 24, 1997
  2367.  
  2368.  
  2369. |              | ignored.                   | specified.              |
  2370. |==============+============================+=========================|
  2371. | 2.3          | Success, invalid property  | Property parameter name |
  2372. |              | parameter ignored.         | and value MAY be        |
  2373. |              |                            | specified.              |
  2374. |==============+============================+=========================|
  2375. | 2.4          | Success, unknown non-      | Non-standard property   |
  2376. |              | standard property ignored. | name MAY be specified.  |
  2377. |==============+============================+=========================|
  2378. | 2.5          | Success, unknown non       | Property and non-       |
  2379. |              | standard property value    | standard value MAY be   |
  2380. |              | ignored.                   | specified.              |
  2381. |==============+============================+=========================|
  2382. | 2.6          | Success, invalid calendar  | Calendar component      |
  2383. |              | component ignored.         | sentinel (e.g., "BEGIN: |
  2384. |              |                            | ALARM") MAY be          |
  2385. |              |                            | specified.              |
  2386. |==============+============================+=========================|
  2387. | 2.7          | Success, request forwarded | Original and forwarded  |
  2388. |              | to Calendar User.          | caluser addresses MAY   |
  2389. |              |                            | be specified.           |
  2390. |==============+============================+=========================|
  2391. | 2.8          | Success, repeating event   | RRULE or RDATE property |
  2392. |              | ignored. Scheduled as a    | name and value MAY be   |
  2393. |              | single event.              | specified.              |
  2394. |==============+============================+=========================|
  2395. | 2.9          | Success, truncated end date| DTEND property value    |
  2396. |              | time to date boundary.     | MAY be specified.       |
  2397. |==============+============================+=========================|
  2398. | 2.10         | Success, repeating VTODO   | RRULE or RDATE property |
  2399. |              | ignored. Scheduled as a    | name and value MAY be   |
  2400. |              | single VTODO.              | specified.              |
  2401. |==============+============================+=========================|
  2402. | 3.0          | Invalid property name.     | Property name MAY be    |
  2403. |              |                            | specified.              |
  2404. |==============+============================+=========================|
  2405. | 3.1          | Invalid property value.    | Property name and value |
  2406. |              |                            | MAY be specified.       |
  2407. |==============+============================+=========================|
  2408. | 3.2          | Invalid property parameter.| Property parameter name |
  2409. |              |                            | and value MAY be        |
  2410. |              |                            | specified.              |
  2411. |==============+============================+=========================|
  2412. | 3.3          | Invalid property parameter | Property parameter name |
  2413. |              | value.                     | and value MAY be        |
  2414. |              |                            | specified.              |
  2415. |==============+============================+=========================|
  2416. | 3.4          | Invalid calendar component | Calendar component      |
  2417. |              | sequence.                  | sentinel MAY be         |
  2418. |              |                            | specified (e.g., BEGIN: |
  2419. |              |                            | VTIMEZONE).             |
  2420. |==============+============================+=========================|
  2421. | 3.5          | Invalid date or time.      | Date/time value(s) MAY  |
  2422. |              |                            | be specified.           |
  2423.  
  2424.  
  2425. Silverberg/Mansour/Dawson/Hopson  38                   Expires MAY 1998
  2426.  
  2427.  
  2428. Internet Draft                   iTIP                  October 24, 1997
  2429.  
  2430.  
  2431. |==============+============================+=========================|
  2432. | 3.6          | Invalid rule.              | Rule value MAY be       |
  2433. |              |                            | specified.              |
  2434. |==============+============================+=========================|
  2435. | 3.7          | Invalid Calendar User.     | Attendee property value |
  2436. |              |                            |MAY be specified.        |
  2437. |==============+============================+=========================|
  2438. | 3.8          | No authority.              | PROFILE and ATTENDEE    |
  2439. |              |                            | property values MAY be  |
  2440. |              |                            | specified.              |
  2441. |==============+============================+=========================|
  2442. | 3.9          | Unsupported version.       | VERSION property name   |
  2443. |              |                            | and value MAY be        |
  2444. |              |                            | specified.              |
  2445. |==============+============================+=========================|
  2446. | 3.10         | Request entity too large.  | None.                   |
  2447. |==============+============================+=========================|
  2448. | 4.0          | Event conflict. Date/time  | DTSTART and DTEND       |
  2449. |              | is busy.                   | property name and values|
  2450. |              |                            | MAY be specified.       |
  2451. |==============+============================+=========================|
  2452. | 5.0          | Request not supported.     | Method property value   |
  2453. |              |                            | MAY be specified.       |
  2454. |==============+============================+=========================|
  2455. | 5.1          | Service unavailable.       | ATTENDEE property value |
  2456. |              |                            | MAY be specified.       |
  2457. |==============+============================+=========================|
  2458. | 5.2          | Invalid calendar service.  | ATTENDEE property value |
  2459. |              |                            | MAY be specified.       |
  2460. |==============+============================+=========================|
  2461. | 5.3          | No scheduling support for  | ATTENDEE property value |
  2462. |              | user.                      | MAY be specified.       |
  2463. |==============+============================+=========================|
  2464.  
  2465.  
  2466. 3.6 Implementation Considerations
  2467.  
  2468.  
  2469. 3.6.1     Working With Recurrence Instances
  2470.  
  2471.    iCalendar includes a recurrence grammar to represent recurring
  2472.    events. The benefit of such a grammar is the ability to represent a
  2473.    number of events in a single object. However, while this simplifies
  2474.    creation of a recurring event, meeting instances MAY still need to be
  2475.    referenced. For instance, an "Attendee" MAY decline the third
  2476.    instance of a recurring Friday event. Similarly, the "Organizer" MAY
  2477.    change the time or location to a single instance of the recurring
  2478.    event.
  2479.  
  2480.    Since implementations MAY elect to store recurring events as either a
  2481.    single event object or a collection of discreet, related event
  2482.    objects, the protocol is designed so that each recurring instance MAY
  2483.    be both referenced and versioned. Hence, implementations that choose
  2484.    to maintain per-instance properties (such as "ATTENDEE" property
  2485.    "STATUS" parameter) MAY do so. However, the protocol does not require
  2486.  
  2487.  
  2488. Silverberg/Mansour/Dawson/Hopson  39                   Expires MAY 1998
  2489.  
  2490.  
  2491. Internet Draft                   iTIP                  October 24, 1997
  2492.  
  2493.  
  2494.    per-instance recognition unless the instance itself MUST be
  2495.    renegotiated.
  2496.  
  2497.    The scenarios for recurrence instance referencing are listed below.
  2498.    For purposes of simplification a change to an event refers to a
  2499.    "trigger property."  That is, a property that has a substantive
  2500.    affect on the meeting itself such as start time, location, due date
  2501.    (for "VTODO" calendar component components) and possibly description.
  2502.  
  2503.       ╖ "Organizer" initiated actions:
  2504.  
  2505.       ╖ "Organizer" deletes or changes a single instance of a recurring
  2506.         event
  2507.  
  2508.       ╖ "Organizer" makes changes that affect all future instances
  2509.  
  2510.       ╖ "Organizer" makes changes that affect all previous instances
  2511.  
  2512.       ╖ "Organizer" deletes or modifies a previously changed instance
  2513.  
  2514.       ╖ Attendee initiated actions:
  2515.  
  2516.       ╖ Attendee changes status for a particular recurrence instance
  2517.  
  2518.       ╖ Attendee sends Event-Counter for a particular recurrence
  2519.         instance
  2520.  
  2521.    An instance of a recurring event is assigned a unique identification,
  2522.    "RECURRENCE-ID" property, when that instance MUST be renegotiated.
  2523.    Negotiation is necessary when the start time, end time, due date or
  2524.    location are modified. If the "Organizer" wishes to identify a
  2525.    specific recurrence instance it is done using the "RECURRENCE-ID"
  2526.    property. The property value is equal to the date/time of the
  2527.    instance. If the "Organizer" wishes to change the"DTSTART", the
  2528.    original "DTSTART" value is used for"RECURRENCE-ID" property and the
  2529.    new "DTSTART" and "DTEND" values reflect the change. If the
  2530.    "Organizer" wishes to add a new instance to the recurring event then
  2531.    a "REQUEST" is issued with an "RDATE" property equal to the new
  2532.    instance date. It is recommended that the "Organizer" include the
  2533.    "RECURRENCE-ID" property[SS1]. Since the creation of a new event
  2534.    instance requires negotiation, the sequence number is also
  2535.    incremented.
  2536.  
  2537. 3.6.2     Attendee Property Considerations
  2538.  
  2539.    The "ATTENDEE" property for the "Organizer" is required on published
  2540.    events, to-dos, and journal entries for two reasons. First, a
  2541.    published only the "Organizer" is allowed to update an event, to-do,
  2542.    or journal entry component. The "Organizer" "ATTENDEE" property MUST
  2543.    be present in the event, to-do, or journal entry component so that
  2544.    the "CUA" has a basis for authorizing an update. Second, it is
  2545.    prudent to provide a point of contact for anyone who receives a
  2546.    published component in case of problems.
  2547.  
  2548.    There are valid RFC 822 addresses that represent groups. Sending
  2549.    email to such an address results in mail being sent to multiple
  2550.    recipients. Such an address MAY be used as the value of an "ATTENDEE"
  2551.    property. Thus, it is possible that the recipient of a "REQUEST" does
  2552.    not appear explicitly in the list list.
  2553.  
  2554.  
  2555.  
  2556. Silverberg/Mansour/Dawson/Hopson  40                   Expires MAY 1998
  2557.  
  2558.  
  2559. Internet Draft                   iTIP                  October 24, 1997
  2560.  
  2561.  
  2562.    It is recommended that the general approach to finding a "Calendar
  2563.    User" in an attendee list be as follows:
  2564.  
  2565.      1.        Search for the "Calendar User" in the attendee list where
  2566.        "TYPE=INDIVIDUAL"
  2567.  
  2568.      2.        Failing (1) look for attendees where "TYPE=GROUP" or
  2569.        'TYPE=UNKNOWN". The "CUA" MUST then determine if the "CU" is a
  2570.        member of one of these groups. If so, the "REPLY" method sent to
  2571.        the "Organizer" MUST contain a new "ATTENDEE" property in which
  2572.        the "TYPE" property parameter is set to INDIVIDUAL and the
  2573.        "GROUP" property parameter is set to the name of the group.
  2574.  
  2575.      3.        Failing (2) the "CUA" MAY ignore or accept the request as the
  2576.        "Calendar User" wishes.
  2577.  
  2578. 3.6.3     When To Refresh An Event
  2579.  
  2580.    An "VEVENT" or "VTODO" calendar component SHOULD be resent to all
  2581.    "Attendees" whenever the "SEQUENCE" property is incremented or any
  2582.    other substantive change is made.
  2583.  
  2584. 3.6.4     Timezones
  2585.  
  2586.    If a recurring event has any instance where "DTSTART" and "DTEND"
  2587.    fall on different sides of a time zone shift, the "VTIMEZONE"
  2588.    components are required.
  2589.  
  2590.    The threat of duplicate time zone definitions exists. SHOULD an
  2591.    iCalendar object contain multiple conflicting time zone components,
  2592.    the one with the latest "DTSTART" property supersedes the others.
  2593.  
  2594. 3.6.5     Alarms
  2595.  
  2596.    It is recommended that application software ask the user whether or
  2597.    not they want alarms included when they read the event.
  2598.  
  2599. 3.6.6     SUMMARY Property
  2600.  
  2601.    The minimum support for the "SUMMARY" property in a recipient MUST be
  2602.    for a 255 byte value. Implementations MAY truncate longer length
  2603.    values.
  2604.  
  2605. 3.6.7     X-Tokens
  2606.  
  2607.    To make iCalendar objects extensible, new property types MAY be
  2608.    inserted into components. These properties are called X-Tokens as
  2609.    they are prefixed with "X-". A client is not required to make sense
  2610.    of X-Tokens. Clients are not required to save X-Tokens or use them in
  2611.    event replies.
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620. Silverberg/Mansour/Dawson/Hopson  41                   Expires MAY 1998
  2621.  
  2622.  
  2623. Internet Draft                   iTIP                  October 24, 1997
  2624.  
  2625.  
  2626. 4  Examples
  2627.  
  2628.  
  2629. 4.1 Published Event Examples
  2630.  
  2631.    In the calendaring and scheduling context, publication refers to the
  2632.    one way transfer of event information. Consumers of published events
  2633.    simply incorporate the event into a calendar. No reply is expected.
  2634.    Individual "A" publishes an event. Individual "B" reads the event and
  2635.    incorporates it into their calendar. Events MAY be published in
  2636.    several ways including: embedding the event as an object in a web
  2637.    page, e-mailing the event to a distribution list, and posting the
  2638.    event to a newsgroup.
  2639.  
  2640.    The table below illustrates the sequence of events between the
  2641.    publisher and the consumers of a published event.
  2642.  
  2643. +-------------------------------------------------------------------+
  2644. | Action                          |  "Organizer"                    |
  2645. +---------------------------------+---------------------------------+
  2646. | Publish an event                | "A" sends or posts a PUBLISH    |
  2647. |                                 | message                         |
  2648. +---------------------------------+---------------------------------+
  2649. | "B" reads a published event     |                                 |
  2650. +---------------------------------+---------------------------------+
  2651. | Publish an updated event        | "A" sends or posts a PUBLISH    |
  2652. |                                 | message                         |
  2653. +---------------------------------+---------------------------------+
  2654. | "B" reads the updated event     |                                 |
  2655. +---------------------------------+---------------------------------+
  2656. | Cancel a published event        | "A" sends or posts a CANCEL     |
  2657. |                                 | message                         |
  2658. +---------------------------------+---------------------------------+
  2659. | "B" reads the canceled event    |                                 |
  2660. |  publication                    |                                 |
  2661. +---------------------------------+---------------------------------+
  2662.  
  2663.  
  2664. 4.1.1     A Minimal Published Event
  2665.  
  2666.    The iCalendar object below describes a single event that begins on
  2667.    July 1, 1997 at 20:00 UTC. This event contains the minimum set of
  2668.    properties for a "PUBLISH" for a "VEVENT" calendar component.
  2669.  
  2670.      BEGIN:VCALENDAR
  2671.      METHOD:PUBLISH
  2672.      PRODID:-//ACME/DesktopCalendar//EN
  2673.      VERSION:2.0
  2674.      BEGIN:VEVENT
  2675.      ATTENDEE;ROLE=OWNER:a@host.com
  2676.      DTSTART:19970701T200000Z
  2677.      DTSTAMP:19970611T190000Z
  2678.      SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
  2679.      UID:0981234-1234234-23@host.com
  2680.      END:VEVENT
  2681.  
  2682.  
  2683.  
  2684. Silverberg/Mansour/Dawson/Hopson  42                   Expires MAY 1998
  2685.  
  2686.  
  2687. Internet Draft                   iTIP                  October 24, 1997
  2688.  
  2689.  
  2690.      END:VCALENDAR
  2691.  
  2692.  
  2693. 4.1.2     Changing A Published Event
  2694.  
  2695.    The iCalendar object below describes an update to the event described
  2696.    in 4.1.1, the time has been changed, an end time has been added, and
  2697.    the sequence number has been adjusted.
  2698.  
  2699.      BEGIN:VCALENDAR
  2700.      METHOD:PUBLISH
  2701.      VERSION:2.0
  2702.      PRODID:-//ACME/DesktopCalendar//EN
  2703.      BEGIN:VEVENT
  2704.      ATTENDEE;ROLE=OWNER:a@acme.com
  2705.      DTSTAMP:19970612T190000Z
  2706.      DTSTART:19970701T210000Z
  2707.      DTEND:19970701T230000Z
  2708.      SEQUENCE:2
  2709.      UID:0981234-1234234-23@host.com
  2710.      SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
  2711.      END:VEVENT
  2712.      END:VCALENDAR
  2713.  
  2714.  
  2715.    The "UID" property is used by the client to identify the event. The
  2716.    "SEQUENCE" property indicates that this is the second change to the
  2717.    event. Events with sequence numbers 0 and 1 are superseded by this
  2718.    event.
  2719.  
  2720.    The "SEQUENCE" property provides a reliable way to distinguish
  2721.    different versions of the same event. Each time an event is
  2722.    published, its sequence number is incremented. If a client receives
  2723.    an event with a sequence number 5 and finds it has the same event
  2724.    with sequence number 2, the event SHOULD be updated. However, if the
  2725.    client received an event with sequence number 2 and finds it already
  2726.    has sequence number 5 of the same event, the event SHOULD NOT be
  2727.    updated.
  2728.  
  2729. 4.1.3     Canceling A Published Event
  2730.  
  2731.    The iCalendar object below cancels the event described in 4.1.1. This
  2732.    cancels the event with "SEQUENCE" property of 0, 1, and 2.
  2733.  
  2734.      BEGIN:VCALENDAR
  2735.      METHOD:CANCEL
  2736.      VERSION:2.0
  2737.      PRODID:-//ACME/DesktopCalendar//EN
  2738.      BEGIN:VEVENT
  2739.      ATTENDEE;ROLE=OWNER:a@acme.com
  2740.      COMMENT:DUKES forfeit the game
  2741.      SEQUENCE:2
  2742.      UID:0981234-1234234-23@host.com
  2743.      DTSTAMP:19970613T190000Z
  2744.      STATUS:CANCELLED
  2745.  
  2746.  
  2747. Silverberg/Mansour/Dawson/Hopson  43                   Expires MAY 1998
  2748.  
  2749.  
  2750. Internet Draft                   iTIP                  October 24, 1997
  2751.  
  2752.  
  2753.      END:VEVENT
  2754.      END:VCALENDAR
  2755.  
  2756.  
  2757. 4.1.4     A Rich Published Event
  2758.  
  2759.    This example describes the same event as in 4.1.1, but in much
  2760.    greater detail.
  2761.  
  2762.      BEGIN:VCALENDAR
  2763.  
  2764.      PRODID:-//ACME/DesktopCalendar//EN
  2765.      METHOD:PUBLISH
  2766.      CALSCALE:GREGORIAN
  2767.      SOURCE:http://www.midwaystadium.com/stadium-cal/1997-events.or4
  2768.      NAME:1997 GAME SCHEDULE
  2769.      VERSION:2.0
  2770.  
  2771.      BEGIN:VTIMEZONE
  2772.      DAYLIGHT:TRUE
  2773.      DTSTART:19970406T070000-0600
  2774.      RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
  2775.      TZNAME:CDT
  2776.      TZOFFSET:-0500
  2777.      END:VTIMEZONE
  2778.  
  2779.      BEGIN:VTIMEZONE
  2780.      DAYLIGHT:FALSE
  2781.      DTSTART:19971026T0200-0500
  2782.      RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
  2783.      TZNAME:CST
  2784.      TZOFFSET:-0600
  2785.      END:VTIMEZONE
  2786.  
  2787.      BEGIN:VEVENT
  2788.      ATTENDEE;ROLE=OWNER:a@acme.com
  2789.      ATTACH:http://www.midwaystadium.com
  2790.      CATEGORIES:SPORTS EVENT;ENTERTAINMENT
  2791.      CLASS:PRIVATE
  2792.      CREATED:19970415T194319Z
  2793.      DESCRIPTION:MIDWAY STADIUM\n
  2794.       Big time game. MUST see.\n
  2795.       Expected duration:2 hours\n
  2796.      DTEND:19970701T180000
  2797.      DTSTART:19970702T160000
  2798.      DTSTAMP:19970614T190000Z
  2799.      STATUS:CONFIRMED
  2800.      LAST-MODIFIED:19970416T162421Z
  2801.      LOCATION;VALUE=URL:http://www.midwaystadium.com/
  2802.      PRIORITY:2
  2803.      RESOURCES:SCOREBOARD
  2804.      SEQUENCE:3
  2805.      SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
  2806.      UID:0981234-1234234-23@host.com
  2807.  
  2808.  
  2809. Silverberg/Mansour/Dawson/Hopson  44                   Expires MAY 1998
  2810.  
  2811.  
  2812. Internet Draft                   iTIP                  October 24, 1997
  2813.  
  2814.  
  2815.      RELATED-TO:0981234-1234234-14@host.com
  2816.  
  2817.      BEGIN:VALARM
  2818.      DTSTART:19970701T190000Z
  2819.      REPEAT:2
  2820.      DURATION:PT2H
  2821.      CATEGORIES:DISPLAY,AUDIO
  2822.      DESCRIPTION:ItÆs almost game time
  2823.      END:VALARM
  2824.  
  2825.      BEGIN:VALARM
  2826.      DTSTART:19970701T153000
  2827.      CATEGORIES:DISPLAY,AUDIO
  2828.      DESCRIPTION:You SHOULD leave now. Game starts in 30 min!
  2829.      END:VALARM
  2830.  
  2831.      END:VEVENT
  2832.      END:VCALENDAR
  2833.  
  2834.  
  2835.    The "CLASS" property is specified, though it is not really needed
  2836.    here. Since this is a published event, a program that displays it
  2837.    need not apply any content filtering based on the "CLASS" attribute.
  2838.    If this event is copied into a userÆs calendar, the "CLASS" would be
  2839.    included as part of the copy.  The handling of the "CLASS" tag at
  2840.    that point is implementation specific.
  2841.  
  2842.    The "RELATED-TO" field contains the "UID" property of a related
  2843.    calendar event. The handling of this property is application
  2844.    dependent.
  2845.  
  2846.    The "SEQUENCE" property 3 indicates that this event supersedes
  2847.    versions 0, 1, and 2.
  2848.  
  2849. 4.1.5     Anniversaries or Events attached to entire days
  2850.  
  2851.    This example demonstrates the use of the "value" parameter to tie a
  2852.    VEVENT to day rather than a specific time.
  2853.  
  2854.      BEGIN:VCALENDAR
  2855.      PRODID:-//ACME/DesktopCalendar//EN
  2856.      METHOD:PUBLISH
  2857.      VERSION:2.0
  2858.      BEGIN:VEVENT
  2859.      DTSTAMP:19970614T190000Z
  2860.      UID:0981234-1234234-23@host.com
  2861.      DTSTART;VALUE=DATE:19970714
  2862.      RRULE:FREQ=YEARLY;INTERVAL=1
  2863.      SUMMARY: Bastille Day
  2864.      END:VEVENT
  2865.      END:VCALENDAR
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873. Silverberg/Mansour/Dawson/Hopson  45                   Expires MAY 1998
  2874.  
  2875.  
  2876. Internet Draft                   iTIP                  October 24, 1997
  2877.  
  2878.  
  2879. 4.2 Group Event Examples
  2880.  
  2881.    Group events are distinguished from published events in that they
  2882.    have "Attendees" and that there is interaction between the
  2883.    "Attendees" with respect to the event. Individual "A" requests a
  2884.    meeting between individuals "A", "B", "C" and "D". Individual "B"
  2885.    confirms attendance to the meeting. Individual "C" declines
  2886.    attendance. Individual "D" tentatively confirms their attendance.
  2887.    This is sometimes referred to as "penciling-in" the event on a
  2888.    calendar. The following table illustrates the sequence of messages
  2889.    that would be exchanged between these individuals. The table below
  2890.    illustrates the message flow.
  2891.  
  2892. +--------------------------------------------------------------------+
  2893. | Action             |  "Organizer"        | Attendee                |
  2894. +--------------------------------------------------------------------+
  2895. | Initiate a meeting | "A" sends a REQUEST |                         |
  2896. | request            | message to "B", "C",|                         |
  2897. |                    | and "D"             |                         |
  2898. +--------------------------------------------------------------------+
  2899. | Accept the meeting |                     | "B" sends a REPLY       |
  2900. | request            |                     | message to "A" with its |
  2901. |                    |                     | ATTENDEE STATUS para-   |
  2902. |                    |                     | set to "ACCEPTED"       |
  2903. +--------------------------------------------------------------------+
  2904. | Decline the meeting|                     | "C" sends a REPLY       |
  2905. | request            |                     | message to "A" with its |
  2906. |                    |                     | ATTENDEE STATUS para-   |
  2907. |                    |                     | set to "DECLINED"       |
  2908. +--------------------------------------------------------------------+
  2909. | Tentatively accept |                     | "D" sends a REPLY       |
  2910. | the meeting request|                     | message to "A" with its |
  2911. |                    |                     | ATTENDEE STATUS para-   |
  2912. |                    |                     | set to "TENTATIVE"      |
  2913. +--------------------------------------------------------------------+
  2914. | Confirm meeting    | "A" sends a REQUEST |                         |
  2915. | status with        | message to "B" and  |                         |
  2916. | attendees          | "C" with updated    |                         |
  2917. |                    | information.        |                         |
  2918. +--------------------------------------------------------------------+
  2919.  
  2920.  
  2921. 4.2.1     A Group Event Request
  2922.  
  2923.    A sample meeting request that "A" sends to "B", "C", and "D".
  2924.  
  2925.      BEGIN:VCALENDAR
  2926.      PRODID:-//ACME/DesktopCalendar//EN
  2927.      METHOD:REQUEST
  2928.      VERSION:2.0
  2929.      BEGIN:VEVENT
  2930.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  2931.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  2932.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  2933.  
  2934.  
  2935. Silverberg/Mansour/Dawson/Hopson  46                   Expires MAY 1998
  2936.  
  2937.  
  2938. Internet Draft                   iTIP                  October 24, 1997
  2939.  
  2940.  
  2941.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:D@acme.com
  2942.      ATTENDEE;RSVP=NO;EXPECT=REQUIRE;TYPE=ROOM:CR_Big_One@acme.com
  2943.      DTSTAMP:19970611T190000Z
  2944.      DTSTART:19970701T100000-0700
  2945.      DTEND:19970701T103000-0700
  2946.      SUMMARY:Phone Conference
  2947.      UID:www.acme.com-873970198738777@host.com
  2948.      SEQUENCE:0
  2949.      STATUS:CONFIRMED
  2950.      END:VEVENT
  2951.      END:VCALENDAR
  2952.  
  2953.  
  2954. 4.2.2     Reply To A Group Event Request
  2955.  
  2956.    Attendee "B" accepts the meeting.
  2957.  
  2958.      BEGIN:VCALENDAR
  2959.      PRODID:-//ACME/DesktopCalendar//EN
  2960.      METHOD:REPLY
  2961.      VERSION:2.0
  2962.      BEGIN:VEVENT
  2963.      ATTENDEE;STATUS=ACCEPTED:B@acme.com
  2964.      UID:www.acme.com-873970198738777@host.com
  2965.      SEQUENCE:0
  2966.      REQUEST-STATUS:2.0;Success
  2967.      DTSTAMP:19970612T190000Z
  2968.      END:VEVENT
  2969.      END:VCALENDAR
  2970.  
  2971.  
  2972.    "B" could have declined the meeting or indicated tentative acceptance
  2973.    by setting the ATTENDEE;"STATUS" parameter to DECLINED or TENTATIVE,
  2974.    respectively.
  2975.  
  2976. 4.2.3     Update An Event
  2977.  
  2978.    The event is moved to a different time. The combination of the "UID"
  2979.    property(which remains the same) and the SEQUENCE (bumped to 1)
  2980.    properties indicate the update.
  2981.  
  2982.      BEGIN:VCALENDAR
  2983.      PRODID:-//ACME/DesktopCalendar//EN
  2984.      METHOD:REQUEST
  2985.      VERSION:2.0
  2986.      BEGIN:VEVENT
  2987.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  2988.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  2989.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  2990.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:D@acme.com
  2991.      ATTENDEE;RSVP=NO;EXPECT=REQUIRE;TYPE=ROOM:CR_Big_One@acme.com
  2992.      DTSTART:19970701T110000-0700
  2993.      DTEND:19970701T113000-0700
  2994.      SUMMARY:Phone Conference
  2995.  
  2996.  
  2997.  
  2998. Silverberg/Mansour/Dawson/Hopson  47                   Expires MAY 1998
  2999.  
  3000.  
  3001. Internet Draft                   iTIP                  October 24, 1997
  3002.  
  3003.  
  3004.      UID:www.acme.com-873970198738777@host.com
  3005.      SEQUENCE:1
  3006.      DTSTAMP:19970613T190000Z
  3007.      STATUS:CONFIRMED
  3008.      END:VEVENT
  3009.      END:VCALENDAR
  3010.  
  3011.  
  3012. 4.2.4     Countering an Event Proposal
  3013.  
  3014.    Attendee A sends "REQUEST" to B and C. B makes a counter proposal to
  3015.    A to change the time and location.
  3016.  
  3017.    Attendee A sends "REQUEST":
  3018.  
  3019.      BEGIN:VCALENDAR
  3020.      PRODID:-//ACME/DesktopCalendar//EN
  3021.      METHOD:REQUEST
  3022.      VERSION:2.0
  3023.      BEGIN:VEVENT
  3024.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  3025.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  3026.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  3027.      DTSTART:19970701T190000Z
  3028.      DTEND:19970701T200000Z
  3029.      SUMMARY:Discuss the Merits of the election results
  3030.      LOCATION:The Big Conference Room
  3031.      UID:www.acme.com-873970198738777@host.com
  3032.      SEQUENCE:0
  3033.      DTSTAMP:19970611T190000Z
  3034.      STATUS:CONFIRMED
  3035.      END:VEVENT
  3036.      END:VCALENDAR
  3037.  
  3038.  
  3039.    Attendee B sends "COUNTER" to A, requesting changes to time and
  3040.    place:
  3041.  
  3042.      BEGIN:VCALENDAR
  3043.      PRODID:-//ACME/DesktopCalendar//EN
  3044.      METHOD:COUNTER
  3045.      VERSION:2.0
  3046.      BEGIN:VEVENT
  3047.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  3048.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  3049.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  3050.      DTSTART:19970701T160000Z
  3051.      DTEND:19970701T190000Z
  3052.      DTSTAMP:19970612T190000Z
  3053.      SUMMARY:Discuss the Merits of the election results
  3054.      LOCATION:The Small Conference Room
  3055.      COMMENT:This time works much better and I think the big conference
  3056.        room is too big
  3057.      UID:www.acme.com-873970198738777@host.com
  3058.      SEQUENCE:0
  3059.  
  3060.  
  3061. Silverberg/Mansour/Dawson/Hopson  48                   Expires MAY 1998
  3062.  
  3063.  
  3064. Internet Draft                   iTIP                  October 24, 1997
  3065.  
  3066.  
  3067.      DTSTAMP:19970611T190000Z
  3068.      END:VEVENT
  3069.      END:VCALENDAR
  3070.  
  3071.  
  3072.    Attendee A accepts the changes from B
  3073.  
  3074.      BEGIN:VCALENDAR
  3075.      PRODID:-//ACME/DesktopCalendar//EN
  3076.      METHOD:REQUEST
  3077.      VERSION:2.0
  3078.      BEGIN:VEVENT
  3079.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  3080.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  3081.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  3082.      DTSTAMP:19970613T190000Z
  3083.      DTSTART:19970701T160000Z
  3084.      DTEND:19970701T190000Z
  3085.      SUMMARY:Discuss the Merits of the election results - changed to
  3086.        suite B's schedule
  3087.      LOCATION:The Small Conference Room
  3088.      UID:www.acme.com-873970198738777@host.com
  3089.      SEQUENCE:1
  3090.      STATUS:CONFIRMED
  3091.      END:VEVENT
  3092.      END:VCALENDAR
  3093.  
  3094.  
  3095.    A rejects B's counter proposal
  3096.  
  3097.      BEGIN:VCALENDAR
  3098.      PRODID:-//ACME/DesktopCalendar//EN
  3099.      METHOD:COUNTERDECLINE
  3100.      VERSION:2.0
  3101.      BEGIN:VEVENT
  3102.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  3103.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  3104.      COMMENT:Sorry, I cannot change this meeting time
  3105.      UID:www.acme.com-873970198738777@host.com
  3106.      SEQUENCE:1
  3107.      DTSTAMP:19970614T190000Z
  3108.      END:VEVENT
  3109.  
  3110.  
  3111. 4.2.5     Delegate An Event
  3112.  
  3113.    When delegating an event request to another "Calendar User", the
  3114.    "delegator" MUST both update the "Organizer" with a "REPLY" and send
  3115.    a request to the "delegatee". There is currently no protocol
  3116.    limitation to delegation depth. It is possible for the original
  3117.    delegate to delegate the meeting to someone else, and so on. When a
  3118.    request is delegated from one "CUA" to another there are a number of
  3119.    responsibilities required of the "delegator". They MUST:
  3120.  
  3121.  
  3122.  
  3123.  
  3124. Silverberg/Mansour/Dawson/Hopson  49                   Expires MAY 1998
  3125.  
  3126.  
  3127. Internet Draft                   iTIP                  October 24, 1997
  3128.  
  3129.  
  3130.       ╖ Send an REPLY to the "Organizer" with their attendee/status
  3131.         property parameter set to "Delegated"
  3132.  
  3133.       ╖ Include the delegate as an additional attendee with the
  3134.         "Delegated-From" property parameter set to the delegator
  3135.  
  3136.       ╖ Include the original UID of the REQUEST
  3137.  
  3138.       ╖ The delegator MUST also send a copy of the original REQUEST to
  3139.         the delegate. The delegator modifies the request to include:
  3140.  
  3141.       ╖ The ATTENDEE/STATUS property parameter for the delegator
  3142.         (sender in this case) is set to "DELEGATED"
  3143.  
  3144.       ╖ ATTENDEE/DELEGATED-TO parameter is set to the address of the
  3145.         delegatee
  3146.  
  3147.       ╖ An ATTENDEE property is added for delegatee
  3148.  
  3149.    As a rule, it is not required that the "delegatee" include the
  3150.    "delegator" in their "REPLY" method. However, it is strongly advised
  3151.    since this will inform the "delegator" whether their proxy plans to
  3152.    attend the meeting. If the "delegatee" declines the meeting, the
  3153.    "delegator" MAY elect to try and delegate the "REQUEST" to another
  3154.    "CUA". The process is the same.
  3155.  
  3156. +---------------------------------------------------------------------+
  3157. | Action             |  "Organizer"        | Attendee                 |
  3158. +---------------------------------------------------------------------+
  3159. | Initiate a meeting | "A" sends a REQUEST |                          |
  3160. | request            | message to "B" and  |                          |
  3161. +---------------------------------------------------------------------+
  3162. | Delegate:          |                     | "C" sends a REPLY to "A" |
  3163. | "C" delegates to   |                     | with the ATTENDEE.STATUS |
  3164. | "E"                |                     | parameter set to         |
  3165. |                    |                     | "DELEGATED" and with a   |
  3166. |                    |                     | new ATTENDEE property    |
  3167. |                    |                     | for "E". "E's" ATTENDEE  |
  3168. |                    |                     | DELEGATED-FROM property  |
  3169. |                    |                     | is set to "C". "C's"     |
  3170. |                    |                     | ATTENDEE.DELEGATED-TO    |
  3171. |                    |                     | property is set to "E".  |
  3172. |                    |                     | "C" sends REQUEST message|
  3173. |                    |                     | to "E" with the original |
  3174. |                    |                     | meeting request          |
  3175. |                    |                     | information. The         |
  3176. |                    |                     | ATTENDEE/STATUS property |
  3177. |                    |                     | parameter for "C" is set |
  3178. |                    |                     | to "DELEGATED" and the   |
  3179. |                    |                     | ATTENDEE/DELEGATED-TO    |
  3180. |                    |                     | parameter is set to      |
  3181. |                    |                     | the address of "E". An   |
  3182. |                    |                     | ATTENDEE property is     |
  3183. |                    |                     | added for "E" and the    |
  3184. |                    |                     | ATTENDEE/DELEGATED-FROM  |
  3185. |                    |                     | parameter is set to      |
  3186. |                    |                     | the address of "C".      |
  3187.  
  3188.  
  3189.  
  3190. Silverberg/Mansour/Dawson/Hopson  50                   Expires MAY 1998
  3191.  
  3192.  
  3193. Internet Draft                   iTIP                  October 24, 1997
  3194.  
  3195.  
  3196. +---------------------------------------------------------------------+
  3197. | Confirm meeting    |                     | "E" sends REPLY message  |
  3198. | attendance         |                     | to "A" and optionally "C"|
  3199. |                    |                     | with its ATTENDEE/STATUS |
  3200. |                    |                     | property parameter set   |
  3201. |                    |                     | to "ACCEPTED"            |
  3202. +---------------------------------------------------------------------+
  3203. | Optional:          | "A" sends REQUEST   |                          |
  3204. | Redistribute       | message to "B", "C" |                          |
  3205. | meeting to         | and "E". SEQUENCE   |                          |
  3206. | attendees          | number is now 1.    |                          |
  3207. +---------------------------------------------------------------------+
  3208.  
  3209.  
  3210.    Attendee "C" responds to meeting "Organizer" "A"
  3211.  
  3212.      BEGIN:VCALENDAR
  3213.      PRODID:-//ACME/DesktopCalendar//EN
  3214.      METHOD:REPLY
  3215.      VERSION:2.0
  3216.      BEGIN:VEVENT
  3217.      ATTENDEE;ROLE=ATTENDEE;STATUS=DELEGATED;DELEGATED-
  3218.       TO=E@acme.com:C@acme.com
  3219.      UID:www.acme.com-873970198738777@host.com
  3220.      SEQUENCE:0
  3221.      REQUEST-STATUS:2.0;Success
  3222.      DTSTAMP:19970611T190000Z
  3223.      END:VEVENT
  3224.      END:VCALENDAR
  3225.  
  3226.  
  3227.    Attendee "C" delegates presence at the meeting to "E".
  3228.  
  3229.      BEGIN:VCALENDAR
  3230.      PRODID:-//ACME/DesktopCalendar//EN
  3231.      METHOD:REQUEST
  3232.      VERSION:2.0
  3233.      BEGIN:VEVENT
  3234.      ATTENDEE;ROLE=Organizer;STATUS=ACCEPTED:A@acme.com
  3235.      ATTENDEE;ROLE=DELEGATE;RSVP=YES;EXPECT=REQUEST;
  3236.       DELEGATED-FROM=C@acme.com:E@acme.com
  3237.      ATTENDEE;ROLE=ATTENDEE;STATUS=DELEGATED;
  3238.       DELEGATED-TO=E@acme.com:C@acme.com
  3239.      DTSTART:19970701T110000-0700
  3240.      DTEND:19970701T113000-0700
  3241.      SUMMARY:Phone Conference
  3242.      UID:www.acme.com-873970198738777@host.com
  3243.      SEQUENCE:0
  3244.      STATUS:CONFIRMED
  3245.      DTSTAMP:19970611T190000Z
  3246.      END:VEVENT
  3247.      END:VCALENDAR
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253. Silverberg/Mansour/Dawson/Hopson  51                   Expires MAY 1998
  3254.  
  3255.  
  3256. Internet Draft                   iTIP                  October 24, 1997
  3257.  
  3258.  
  3259. 4.2.6     Delegate Accepts the Meeting
  3260.  
  3261.    To accept a delegated meeting, the delegate sends the following
  3262.    message to "A" and "C"
  3263.  
  3264.      BEGIN:VCALENDAR
  3265.      PRODID:-//ACME/DesktopCalendar//EN
  3266.      METHOD:REPLY
  3267.      VERSION:2.0
  3268.      BEGIN:VEVENT
  3269.      ATTENDEE;ROLE=ATTENDEE;STATUS=CONFIRMED;
  3270.       DELEGATED-FROM=C@acme.com:E@acme.com
  3271.      UID:www.acme.com-873970198738777@host.com
  3272.      SEQUENCE:1
  3273.      REQUEST-STATUS:2.0;Success
  3274.      DTSTAMP:19970614T190000Z
  3275.      END:VEVENT
  3276.      END:VCALENDAR
  3277.  
  3278.  
  3279. 4.2.7     Delegate Declines the Meeting
  3280.  
  3281.    In this example the delegate declines the meeting request and sets
  3282.    the "ATTENDEE" property "STATUS" parameter to DECLINED. The
  3283.    "Organizer" SHOULD resend the "REQUEST" to "C" with the status of the
  3284.    delegate set to DECLINED. This lets the "delegator" know that the
  3285.    "delegate" has declined and provides an opportunity to the
  3286.    "delegator" to either accept or delegate the request to another
  3287.    "Calendar User".
  3288.  
  3289.    Response from "E" to "A" and "C".
  3290.  
  3291.      BEGIN:VCALENDAR
  3292.      PRODID:-//ACME/DesktopCalendar//EN
  3293.      METHOD:REPLY
  3294.      VERSION:2.0
  3295.      BEGIN:VEVENT
  3296.      ATTENDEE;ROLE=ATTENDEE;STATUS=DECLINED;
  3297.       DELEGATED-FROM=C@acme.com:E@acme.com
  3298.      UID:www.acme.com-873970198738777@host.com
  3299.      SEQUENCE:1
  3300.      REQUEST-STATUS:2.0;Success
  3301.      DTSTAMP:19970614T190000Z
  3302.      END:VEVENT
  3303.      END:VCALENDAR
  3304.  
  3305.  
  3306.    "A" resends the "REQUEST" method to "C". "A" MAY also wish to express
  3307.    the fact that the item was delegated in the "COMMENT" property.
  3308.  
  3309.      BEGIN:VCALENDAR
  3310.      PRODID:-//ACME/DesktopCalendar//EN
  3311.      METHOD:REPLY
  3312.      VERSION:2.0
  3313.      BEGIN:VEVENT
  3314.  
  3315.  
  3316. Silverberg/Mansour/Dawson/Hopson  52                   Expires MAY 1998
  3317.  
  3318.  
  3319. Internet Draft                   iTIP                  October 24, 1997
  3320.  
  3321.  
  3322.      ATTENDEE;ROLE=ATTENDEE;STATUS=DECLINED;
  3323.       DELEGATED-FROM=C@acme.com:E@acme.com
  3324.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  3325.      UID:www.acme.com-873970198738777@host.com
  3326.      SEQUENCE:2
  3327.      REQUEST-STATUS:2.0;Success
  3328.      DTSTAMP:19970614T200000Z
  3329.      COMMENT:DELEGATE (ATTENDEE E@acme.com) DECLINED YOUR INVITATION
  3330.      END:VEVENT
  3331.      END:VCALENDAR
  3332.  
  3333.  
  3334. 4.2.8     Forwarding an Event Request
  3335.  
  3336.    The protocol does not prevent an "Attendee" from "forwarding" an
  3337.    "VEVENT" calendar component to other "Calendar Users". Forwarding
  3338.    differs from delegation in that the forwarded "Calendar User" (often
  3339.    referred to as a "Party Crasher") does not replace the forwarding
  3340.    "Calendar User". Implementations are not required to add the "Party
  3341.    Crasher" to the "Attendee" list and hence there is no guarantee that
  3342.    a "Party Crasher" will receive additional updates to the Event. The
  3343.    forwarding "Calendar User" SHOULD NOT add the "Party Crasher" to the
  3344.    attendee list.
  3345.  
  3346. 4.2.9     Cancel A Group Event
  3347.  
  3348.    Individual "A" requests a meeting between individuals "A", "B" and
  3349.    "C". Individual "B" declines attendance to the meeting. Individual
  3350.    "A" decides to cancel the meeting. The following table illustrates
  3351.    the sequence of messages that would be exchanged between these
  3352.    individuals.
  3353.  
  3354.    Messages related to a previously canceled event ("SEQUENCE" property
  3355.    value is less than the "SEQUENCE" property value of the "CANCEL"
  3356.    message) or "VTODO" calendar component MUST be ignored.
  3357.  
  3358. +--------------------------------------------------------------------+
  3359. | Action             |  "Organizer"        | Attendee                |
  3360. +--------------------------------------------------------------------+
  3361. | Initiate a meeting | "A" sends a REQUEST |                         |
  3362. | request            | message to "B" and  |                         |
  3363. |                    | and "C"             |                         |
  3364. +--------------------------------------------------------------------+
  3365. | Decline the meeting|                     | "B" sends a REPLY       |
  3366. | request            |                     | message to "A" with its |
  3367. |                    |                     | ATTENDEE STATUS para-   |
  3368. |                    |                     | set to "DECLINED".      |
  3369. +--------------------------------------------------------------------+
  3370. | Cancel the meeting | "A" sends a CANCEL  |                         |
  3371. |                    | message to "B" and  |                         |
  3372. |                    | "C"                 |                         |
  3373. +--------------------------------------------------------------------+
  3374.  
  3375.  
  3376.    The example shows how "A" cancels the event.
  3377.  
  3378.  
  3379. Silverberg/Mansour/Dawson/Hopson  53                   Expires MAY 1998
  3380.  
  3381.  
  3382. Internet Draft                   iTIP                  October 24, 1997
  3383.  
  3384.  
  3385.  
  3386.      BEGIN:VCALENDAR
  3387.      PRODID:-//ACME/DesktopCalendar//EN
  3388.      METHOD:CANCEL
  3389.      VERSION:2.0
  3390.      BEGIN:VEVENT
  3391.      COMMENT:Mr. B cannot attend. IÆll reschedule the meeting later.
  3392.      UID:www.acme.com-873970198738777@host.com
  3393.      SEQUENCE:0
  3394.      DTSTAMP:19970613T190000Z
  3395.      STATUS:CANCELLED
  3396.      END:VEVENT
  3397.      END:VCALENDAR
  3398.  
  3399.  
  3400.    The "Organizer" of a meeting MAY "uninvite" or remove "Attendees" by
  3401.    sending a "CANCEL" method to only those "Attendees".
  3402.  
  3403. 4.3 Busy Time Examples
  3404.  
  3405.    Individual "A" requests busy time from individuals "B", "C" and "D".
  3406.    Individual "B" and "C" replies with busy time data to individual "A".
  3407.    Individual "D" does not support busy time requests and does not reply
  3408.    with any data.
  3409.  
  3410.    The following table illustrates the sequence of messages that would
  3411.    be exchanged between these individuals.
  3412.  
  3413. +--------------------------------------------------------------------+
  3414. | Action             |  "Organizer"        | Attendee                |
  3415. +--------------------------------------------------------------------+
  3416. | Initiate a busy    | "A" sends a REQUEST |                         |
  3417. | time request       | message to "B" and  |                         |
  3418. |                    | and "C"             |                         |
  3419. +--------------------------------------------------------------------+
  3420. | Reply to the busy  |                     | "B" sends a REPLY       |
  3421. | request with busy  |                     | message to "A" with     |
  3422. | time data          |                     | busy time data          |
  3423. +--------------------------------------------------------------------+
  3424.  
  3425.  
  3426. 4.3.1     Request Busy Time
  3427.  
  3428.    "A" sends a BUSY-"REQUEST" to "B" and "C" for busy time
  3429.  
  3430.      BEGIN:VCALENDAR
  3431.      PRODID:-//ACME/DesktopCalendar//EN
  3432.      METHOD:REQUEST
  3433.      VERSION:2.0
  3434.      BEGIN:VFREEBUSY
  3435.      ATTENDEE;ROLE=OWNER:A@acme.com
  3436.      ATTENDEE:B@acme.com
  3437.      ATTENDEE:C@acme.com
  3438.      DTSTAMP:19970613T190000Z
  3439.      DTSTART:19970701T080000-0700
  3440.  
  3441.  
  3442. Silverberg/Mansour/Dawson/Hopson  54                   Expires MAY 1998
  3443.  
  3444.  
  3445. Internet Draft                   iTIP                  October 24, 1997
  3446.  
  3447.  
  3448.      DTEND:19970701T200000-0700
  3449.      UID:www.acme.com-873970198738777@host.com
  3450.      END:VFREEBUSY
  3451.      END:VCALENDAR
  3452.  
  3453.  
  3454. 4.3.2     Reply To A Busy Time Request
  3455.  
  3456.    "B" sends a "REPLY" method type of a "VFREEBUSY" calendar component
  3457.    to "A"
  3458.  
  3459.      BEGIN:VCALENDAR
  3460.      PRODID:-//ACME/DesktopCalendar//EN
  3461.      METHOD:REPLY
  3462.      VERSION:2.0
  3463.      BEGIN:VFREEBUSY
  3464.      ATTENDEE:B@acme.com
  3465.      DTSTART:19970701T080000-0700
  3466.      DTEND:19970701T200000-0700
  3467.      UID:www.acme.com-873970198738777@host.com
  3468.      FREEBUSY:19970701T090000-0700/PT1H,19970701T140000-0700/PT30H
  3469.      DTSTAMP:19970613T190030Z
  3470.      END:VFREEBUSY
  3471.      END:VCALENDAR
  3472.  
  3473.  
  3474.    B is busy from 09:00 to 10:00 and from 14:00 to 14:30.
  3475.  
  3476. 4.4 Recurring Event and Time Zone Examples
  3477.  
  3478.  
  3479. 4.4.1     A Recurring Event Spanning Time Zones
  3480.  
  3481.    This event describes a weekly phone conference. The "Attendees" are
  3482.    each in a different time zone.
  3483.  
  3484.      BEGIN:VCALENDAR
  3485.  
  3486.      PRODID:-//ACME/DesktopCalendar//EN
  3487.      METHOD:REQUEST
  3488.      VERSION:2.0
  3489.  
  3490.      BEGIN:VTIMEZONE
  3491.      DAYLIGHT:TRUE
  3492.      DTSTART:19970406T200000-0800
  3493.      RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
  3494.      TZNAME:PDT
  3495.      TZOFFSET:-0700
  3496.      END:VTIMEZONE
  3497.  
  3498.      BEGIN:VTIMEZONE
  3499.      DAYLIGHT:FALSE
  3500.      DTSTART:19971026T200000-0700
  3501.      RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
  3502.      TZNAME:PST
  3503.  
  3504.  
  3505. Silverberg/Mansour/Dawson/Hopson  55                   Expires MAY 1998
  3506.  
  3507.  
  3508. Internet Draft                   iTIP                  October 24, 1997
  3509.  
  3510.  
  3511.      TZOFFSET:-0800
  3512.      END:VTIMEZONE
  3513.  
  3514.      BEGIN:VEVENT
  3515.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:sman@mcom.com
  3516.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:gb@mcom.fr
  3517.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:kimiko@mcom.jp
  3518.      DTSTAMP:19970613T190030Z
  3519.      DTSTART:19970701T140000
  3520.      DTEND:19970701T150000
  3521.      RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU
  3522.      RDATE:19970910T140000
  3523.      EXDATE:19970909T140000
  3524.      EXDATE:19971028T150000
  3525.      SUMMARY:Weekly Phone Conference
  3526.      UID:www.acme.com-873970198738777@host.com
  3527.      SEQUENCE:0
  3528.      STATUS:CONFIRMED
  3529.      END:VEVENT
  3530.  
  3531.      END:VCALENDAR
  3532.  
  3533.  
  3534.    The "VTIMEZONE" components SHOULD appear in an iCalendar object
  3535.    containing recurring events. This is especially important if a
  3536.    recurring event has "Attendees" in different time zones. There MAY be
  3537.    multiple VTIMEZONE components in an iCalendar object, however, they
  3538.    MUST be used to define the same time zone. That is, there cannot be
  3539.    VTIMEZONE components describing both PST/PDT and EST/EDT at the
  3540.    component level in the same iCalendar object.
  3541.  
  3542.    The first two components of this iCalendar object are the time zone
  3543.    components. The "DTSTART" date coincides with the first instance of
  3544.    the RRULE property.
  3545.  
  3546.    The recurring meeting is defined in a particular time zone,
  3547.    presumably that of the originator. The client for each "Attendee" has
  3548.    the responsibility of determining the recurrence time in the
  3549.    "Attendee's" time zone.
  3550.  
  3551.    The repeating event starts on Tuesday, July 1, 1997 at 2:00pm. Since
  3552.    no time zone is specified in the "DTSTART" property, the time zone
  3553.    component of PDT applies to the start and end times. "Attendee"
  3554.    gb@mcom.fr is in France where the local time on this date is 7 hours
  3555.    later than PDT or 21:00. "Attendee" kimiko@mcom.jp is in Japan where
  3556.    local time is 9 hours ahead of than UTC or Wednesday, July 2 at
  3557.    07:00. The event repeats weekly on Tuesdays (in PST/PDT). The "RRULE"
  3558.    property results in 20 instances. The last instance falls on Tuesday,
  3559.    November 11, 1997 2:00pm PST. The "RDATE" property adds another
  3560.    instance: WED, 10-SEP-1997 21:00 GMT.
  3561.  
  3562.    There are two exceptions to this recurring appointment. The first one
  3563.    is:
  3564.  
  3565.    TUE, 09-SEP-1997 21:00 GMT
  3566.    TUE, 09-SEP-1997 14:00 PDT
  3567.    WED, 10-SEP-1997 07:00 JDT
  3568.  
  3569.  
  3570. Silverberg/Mansour/Dawson/Hopson  56                   Expires MAY 1998
  3571.  
  3572.  
  3573. Internet Draft                   iTIP                  October 24, 1997
  3574.  
  3575.  
  3576.    and the second is:
  3577.  
  3578.    TUE, 28-OCT-1997 22:00 GMT
  3579.    TUE, 28-OCT-1997 14:00 PST
  3580.    WED, 29-OCT-1997 07:00 JST
  3581.  
  3582. 4.4.2     Modify A Recurring Instance
  3583.  
  3584.    In this example the "Organizer" issues a recurring meeting. Later the
  3585.    "Organizer" changes an instance of the event by changing the
  3586.    "DTSTART" property. Note the use of "RECURRENCE-ID" property and
  3587.    "SEQUENCE" property in the second request.
  3588.  
  3589.    Original Request:
  3590.  
  3591.      BEGIN:VCALENDAR
  3592.      METHOD:REQUEST
  3593.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3594.      VERSION:2.0
  3595.      BEGIN:VEVENT
  3596.      CREATED:19970526T083000
  3597.      UID:guid-1@host1.com
  3598.      SEQUENCE:0
  3599.      RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
  3600.      ATTENDEE;EXPECT=REQUEST:Sman@netscape.com
  3601.      ATTENDEE;EXPECT=REQUEST:Frank_Dawson@Lotus.com
  3602.      ATTENDEE;EXPECT=REQUEST:Deriks@Microsoft.com
  3603.      ATTENDEE;EXPECT=REQUEST:Alecd@Microsoft.com
  3604.      DESCRIPTION:IETF-C&S Conference Call
  3605.      CLASS:PUBLIC
  3606.      SUMMARY:IETF Calendaring Working Group Meeting
  3607.      DTSTART:19970601T210000Z
  3608.      DTEND:19970601T220000Z
  3609.      LOCATION:Conference Call
  3610.      DTSTAMP:19970526T083000
  3611.      STATUS:CONFIRMED
  3612.      END:VEVENT
  3613.      END:VCALENDAR
  3614.  
  3615.  
  3616.    The event request below is to change a time and create an exception.
  3617.    This creates an exception on July 3rd.
  3618.  
  3619.      BEGIN:VCALENDAR
  3620.      METHOD:REQUEST
  3621.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3622.      VERSION:2.0
  3623.      BEGIN:VEVENT
  3624.      CREATED:19970526T083000
  3625.      UID:guid-1@host1com
  3626.      RECURRENCE-ID:19970701T210000Z
  3627.      SEQUENCE:1
  3628.      RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
  3629.      ATTENDEE;EXPECT=REQUEST:Sman@netscape.com
  3630.      ATTENDEE;EXPECT=REQUEST:Frank_Dawson@Lotus.com
  3631.  
  3632.  
  3633.  
  3634. Silverberg/Mansour/Dawson/Hopson  57                   Expires MAY 1998
  3635.  
  3636.  
  3637. Internet Draft                   iTIP                  October 24, 1997
  3638.  
  3639.  
  3640.      ATTENDEE;EXPECT=REQUEST:Deriks@Microsoft.com
  3641.      ATTENDEE;EXPECT=REQUEST:Alecd@Microsoft.com
  3642.      DESCRIPTION:IETF-C&S Conference Call
  3643.      CLASS:PUBLIC
  3644.      SUMMARY:IETF Calendaring Working Group Meeting
  3645.      DTSTART:19970703T210000Z
  3646.      DTEND:19970703T220000Z
  3647.      LOCATION:Conference Call
  3648.      DTSTAMP:19970626T093000
  3649.      STATUS:CONFIRMED
  3650.      END:VEVENT
  3651.      END:VCALENDAR
  3652.  
  3653.  
  3654. 4.4.3     Cancel A Recurring Instance
  3655.  
  3656.    In this example the "Organizer" of a recurring event wishes to delete
  3657.    an instance. This is referred to as an "exception" to the recurring
  3658.    event.
  3659.  
  3660.      BEGIN:VCALENDAR
  3661.      METHOD:CANCEL
  3662.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3663.      VERSION:2.0
  3664.      BEGIN:VEVENT
  3665.      UID:guid-1@host1.com
  3666.      RECURRENCE-ID:19970801T210000Z
  3667.      SEQUENCE:2
  3668.      DTSTAMP:19970721T093000
  3669.      STATUS:CANCELLED
  3670.      END:VEVENT
  3671.      END:VCALENDAR
  3672.  
  3673.  
  3674. 4.4.4     Cancel An Exception
  3675.  
  3676.    In the following example, the "Organizer" has created an exception
  3677.    (as in 4.4.3) and now wishes to cancel it. In this case a "CANCEL"
  3678.    method is sent with the specific "RECURRENCE-ID", "UID" and
  3679.    "SEQUENCE" properties of the exception. This same sequence MAY be
  3680.    used to decline a previously accepted modification to a recurring
  3681.    event (as in 4.4.2).
  3682.  
  3683.      BEGIN:VCALENDAR
  3684.      METHOD:CANCEL
  3685.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3686.      VERSION:2.0
  3687.      BEGIN:VEVENT
  3688.      UID:guid-1@host1.com
  3689.      RECURRENCE-ID:19970801T210000Z
  3690.      SEQUENCE:2
  3691.      DTSTAMP:19970721T103000
  3692.      STATUS:CANCELLED
  3693.      END:VEVENT
  3694.  
  3695.  
  3696. Silverberg/Mansour/Dawson/Hopson  58                   Expires MAY 1998
  3697.  
  3698.  
  3699. Internet Draft                   iTIP                  October 24, 1997
  3700.  
  3701.  
  3702.      END:VCALENDAR
  3703.  
  3704.  
  3705. 4.4.5     Cancel Recurring Event
  3706.  
  3707.    In this example the "Organizer" wishes to cancel the entire recurring
  3708.    event and any child exceptions.
  3709.  
  3710.      BEGIN:VCALENDAR
  3711.      METHOD:CANCEL
  3712.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3713.      VERSION:2.0
  3714.      BEGIN:VEVENT
  3715.      UID:guid-1@host1.com
  3716.      DTSTAMP:19970721T103000
  3717.      SEQUENCE:2
  3718.      STATUS:CANCELLED
  3719.      END:VEVENT
  3720.      END:VCALENDAR
  3721.  
  3722.  
  3723. 4.4.6     Change All Future Instances
  3724.  
  3725.    This example changes the meeting location from a conference call to
  3726.    Seattle starting Sept 1 and extends to all future instances.
  3727.  
  3728.      BEGIN:VCALENDAR
  3729.      METHOD:REQUEST
  3730.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3731.      VERSION:2.0
  3732.      BEGIN:VEVENT
  3733.      CREATED:19970526T083000
  3734.      UID:guid-1@host1.com
  3735.      RECURRENCE-ID;THISANDFUTURE:19970901T210000Z
  3736.      SEQUENCE:3
  3737.      RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
  3738.      ATTENDEE;EXPECT=REQUEST:Sman@netscape.com
  3739.      ATTENDEE;EXPECT=REQUEST:Frank_Dawson@Lotus.com
  3740.      ATTENDEE;EXPECT=REQUEST:Deriks@Microsoft.com
  3741.      ATTENDEE;EXPECT=REQUEST:Alecd@Microsoft.com
  3742.      DESCRIPTION:IETF-C&S Conference Call
  3743.      CLASS:PUBLIC
  3744.      SUMMARY:IETF Calendaring Working Group Meeting
  3745.      DTSTART:19970901T210000Z [SS2][SS3]
  3746.      DTEND:19970901T220000Z
  3747.      LOCATION:Building 32, Microsoft, Seattle, WA
  3748.      DTSTAMP:19970526T083000
  3749.      STATUS:CONFIRMED
  3750.      END:VEVENT
  3751.      END:VCALENDAR
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.  
  3758. Silverberg/Mansour/Dawson/Hopson  59                   Expires MAY 1998
  3759.  
  3760.  
  3761. Internet Draft                   iTIP                  October 24, 1997
  3762.  
  3763.  
  3764. 4.4.7     Add A New Instance To A Recurring Event
  3765.  
  3766.    This example adds a one-time additional instance to the recurring
  3767.    event. "Organizer" adds a second July meeting on the 15th.
  3768.  
  3769.      BEGIN:VCALENDAR
  3770.      METHOD:REQUEST
  3771.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3772.      VERSION:2.0
  3773.      BEGIN:VEVENT
  3774.      CREATED:19970526T083000
  3775.      UID:guid-1@host1.com
  3776.      RECURRENCE-ID:19970715T210000Z
  3777.      SEQUENCE:4
  3778.      RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
  3779.      RDATE;VALUE=PERIOD:19970715T210000Z/19970715T220000Z
  3780.      ATTENDEE;EXPECT=REQUEST:Sman@netscape.com
  3781.      ATTENDEE;EXPECT=REQUEST:Frank_Dawson@Lotus.com
  3782.      ATTENDEE;EXPECT=REQUEST:Deriks@Microsoft.com
  3783.      ATTENDEE;EXPECT=REQUEST:Alecd@Microsoft.com
  3784.      DESCRIPTION:IETF-C&S Conference Call
  3785.      CLASS:PUBLIC
  3786.      SUMMARY:IETF Calendaring Working Group Meeting
  3787.      DTSTART:19970715T210000Z
  3788.      DTEND:19970715T220000Z
  3789.      LOCATION:Conference Call
  3790.      DTSTAMP:19970629T093000
  3791.      STATUS:CONFIRMED
  3792.      END:VEVENT
  3793.      END:VCALENDAR
  3794.  
  3795.  
  3796. 4.4.8     Counter An Instance Of A Recurring Event
  3797.  
  3798.    In this example one of the "Attendees" counters the "DTSTART"
  3799.    property of the proposed second July meeting.
  3800.  
  3801.      BEGIN:VCALENDAR
  3802.      METHOD:COUNTER
  3803.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3804.      VERSION:2.0
  3805.      BEGIN:VEVENT
  3806.      CREATED:19970526T083000
  3807.      UID:guid-1@host1.com
  3808.      RECURRENCE-ID:19970715T210000Z
  3809.      SEQUENCE:4
  3810.      RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
  3811.      ATTENDEE;EXPECT=REQUEST:Sman@netscape.com
  3812.      ATTENDEE;EXPECT=REQUEST:Frank_Dawson@Lotus.com
  3813.      ATTENDEE;EXPECT=REQUEST:Deriks@Microsoft.com
  3814.      ATTENDEE;EXPECT=REQUEST:Alecd@Microsoft.com
  3815.      DESCRIPTION:IETF-C&S Conference Call
  3816.      CLASS:PUBLIC
  3817.      SUMMARY:IETF Calendaring Working Group Meeting
  3818.  
  3819.  
  3820. Silverberg/Mansour/Dawson/Hopson  60                   Expires MAY 1998
  3821.  
  3822.  
  3823. Internet Draft                   iTIP                  October 24, 1997
  3824.  
  3825.  
  3826.      DTSTART:19970715T220000Z
  3827.      DTEND:19970715T230000Z
  3828.      LOCATION:Conference Call
  3829.      COMMENT:May we bump this by an hour? I have a conflict
  3830.      DTSTAMP:19970629T094000
  3831.      END:VEVENT
  3832.      END:VCALENDAR
  3833.  
  3834.  
  3835. 4.4.9     Error Reply To A request
  3836.  
  3837.    The following example illustrates a scenario where a meeting is
  3838.    proposed that contains a property that is not supported (in this
  3839.    case, the "RRULE" property).
  3840.  
  3841.    Original Request:
  3842.  
  3843.      BEGIN:VCALENDAR
  3844.      METHOD:REQUEST
  3845.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3846.      VERSION:2.0
  3847.      BEGIN:VEVENT
  3848.      CREATED:19970526T083000
  3849.      UID:guid-1@host1.com
  3850.      SEQUENCE:0
  3851.      RRULE:FREQ=MONTHLY;BYMONTHDAY=1
  3852.      ATTENDEE;EXPECT=REQUEST:Sman@netscape.com
  3853.      ATTENDEE;EXPECT=REQUEST:Frank_Dawson@Lotus.com
  3854.      ATTENDEE;EXPECT=REQUEST:Deriks@Microsoft.com
  3855.      ATTENDEE;EXPECT=REQUEST:Alecd@Microsoft.com
  3856.      DESCRIPTION:IETF-C&S Conference Call
  3857.      CLASS:PUBLIC
  3858.      SUMMARY:IETF Calendaring Working Group Meeting
  3859.      DTSTART:19970601T210000Z
  3860.      DTEND:19970601T220000Z
  3861.      DTSTAMP:19970602T094000
  3862.      LOCATION:Conference Call
  3863.      STATUS:CONFIRMED
  3864.      END:VEVENT
  3865.      END:VCALENDAR
  3866.  
  3867.  
  3868.    Response to indicate that RRULE is not supported:
  3869.  
  3870.      BEGIN:VCALENDAR
  3871.      PRODID:-//RDU Software//NONSGML HandCal//EN
  3872.      METHOD:REPLY
  3873.      VERSION:2.0
  3874.      BEGIN:VEVENT
  3875.      REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single
  3876.        event;RRULE
  3877.      UID:guid-1@host1.com
  3878.      SEQUENCE:0
  3879.      DTSTAMP:19970603T094000
  3880.      END:VEVENT
  3881.  
  3882.  
  3883. Silverberg/Mansour/Dawson/Hopson  61                   Expires MAY 1998
  3884.  
  3885.  
  3886. Internet Draft                   iTIP                  October 24, 1997
  3887.  
  3888.  
  3889.      END:VCALENDAR
  3890.  
  3891.  
  3892. 4.5 Group To-do Examples
  3893.  
  3894.    Individual "A" creates a group task in which individuals "A", "B",
  3895.    "C" and "D" will participate. Individual "B" confirms acceptance of
  3896.    the task. Individual "C" declines the task. Individual "D"
  3897.    tentatively accepts the task. The following table illustrates the
  3898.    sequence of messages that would be exchanged between these
  3899.    individuals. Individual "A" then issues a "REFRESH" method to obtain
  3900.    the status of the to-do from each participant. The response indicates
  3901.    the individual "Attendee's" completion status. The table below
  3902.    illustrates the message flow.
  3903.  
  3904. +--------------------------------------------------------------------+
  3905. | Action             |  "Organizer"        | Attendee                |
  3906. +--------------------------------------------------------------------+
  3907. | Initiate a to-do   | "A" sends a REQUEST |                         |
  3908. | request            | message to "B", "C",|                         |
  3909. |                    | and "D"             |                         |
  3910. +--------------------------------------------------------------------+
  3911. | Accept the to-do   |                     | "B" sends a REPLY       |
  3912. | request            |                     | message to "A" with its |
  3913. |                    |                     | ATTENDEE STATUS para-   |
  3914. |                    |                     | set to "ACCEPTED".      |
  3915. +--------------------------------------------------------------------+
  3916. | Decline the to-do  |                     | "C" sends a REPLY       |
  3917. | request            |                     | message to "A" with its |
  3918. |                    |                     | ATTENDEE STATUS para-   |
  3919. |                    |                     | set to "DECLINED".      |
  3920. +--------------------------------------------------------------------+
  3921. | Tentatively accept |                     | "D" sends a REPLY       |
  3922. | the to-do request  |                     | message to "A" with its |
  3923. |                    |                     | ATTENDEE STATUS para-   |
  3924. |                    |                     | set to "TENTATIVE".     |
  3925. +--------------------------------------------------------------------+
  3926. | Check attendee     | "A" sends a REFRESH |                         |
  3927. | completion status  | message to "B" and  |                         |
  3928. |                    | "C" with current    |                         |
  3929. |                    | information.        |                         |
  3930. +--------------------------------------------------------------------+
  3931. | Attendee indicates |                     | "B" sends a REPLY       |
  3932. | percent complete   |                     | message indicating      |
  3933. |                    |                     | percent complete        |
  3934. +--------------------------------------------------------------------+
  3935. | Attendee indicates |                     | "C" sends a REPLY       |
  3936. | completion         |                     | message indicating      |
  3937. |                    |                     | completion              |
  3938. +--------------------------------------------------------------------+
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945. Silverberg/Mansour/Dawson/Hopson  62                   Expires MAY 1998
  3946.  
  3947.  
  3948. Internet Draft                   iTIP                  October 24, 1997
  3949.  
  3950.  
  3951. 4.5.1     A VTODO Request
  3952.  
  3953.    A sample "REQUEST" with for a "VTODO" calendar component that "A"
  3954.    sends to "B", "C", and "D".
  3955.  
  3956.      BEGIN:VCALENDAR
  3957.      PRODID:-//ACME/DesktopCalendar//EN
  3958.      METHOD:REQUEST
  3959.      VERSION:2.0
  3960.      BEGIN:VTODO
  3961.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  3962.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  3963.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  3964.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:D@acme.com
  3965.      DTSTART:19970701T100000-0700
  3966.      DUE:19970722T100000-0700
  3967.      SUMMARY:Create the requirements document
  3968.      UID:www.acme.com-873970198738777-00@host.com
  3969.      SEQUENCE:0
  3970.      DTSTAMP:19970717T200000Z
  3971.      STATUS:CONFIRMED
  3972.      END:VTODO
  3973.      END:VCALENDAR
  3974.  
  3975.  
  3976. 4.5.2     A VTODO Reply
  3977.  
  3978.    Attendee "B" accepts the meeting.
  3979.  
  3980.      BEGIN:VCALENDAR
  3981.      PRODID:-//ACME/DesktopCalendar//EN
  3982.      METHOD:REPLY
  3983.      VERSION:2.0
  3984.      BEGIN:VTODO
  3985.      ATTENDEE;STATUS=ACCEPTED:B@acme.com
  3986.      UID:www.acme.com-873970198738777-00@host.com
  3987.      COMMENT:I'll send you my input by e-mail
  3988.      SEQUENCE:0
  3989.      DTSTAMP:19970717T203000Z
  3990.      REQUEST-STATUS:2.0;Success
  3991.      END:VTODO
  3992.      END:VCALENDAR
  3993.  
  3994.  
  3995.    "B" could have declined the meeting or indicated tentative acceptance
  3996.    by setting the "ATTENDEE;STATUS=" property parameter sequence to
  3997.    DECLINED or TENTATIVE, respectively.
  3998.  
  3999. 4.5.3     A VTODO Refresh
  4000.  
  4001.    "A" requests status from all "Attendees".
  4002.  
  4003.      BEGIN:VCALENDAR
  4004.      PRODID:-//ACME/DesktopCalendar//EN
  4005.  
  4006.  
  4007.  
  4008. Silverberg/Mansour/Dawson/Hopson  63                   Expires MAY 1998
  4009.  
  4010.  
  4011. Internet Draft                   iTIP                  October 24, 1997
  4012.  
  4013.  
  4014.      METHOD:REFRESH
  4015.      VERSION:2.0
  4016.      BEGIN:VTODO
  4017.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  4018.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  4019.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  4020.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:D@acme.com
  4021.      UID:www.acme.com-873970198738777-00@host.com
  4022.      DTSTAMP:19970717T230000Z
  4023.      END:VTODO
  4024.      END:VCALENDAR
  4025.  
  4026.  
  4027. 4.5.4     A Refresh Reply: Percent-Complete
  4028.  
  4029.    A reply indicating that the task in being worked on and that "B" is
  4030.    75% complete with "B's" part of the assignment.
  4031.  
  4032.      BEGIN:VCALENDAR
  4033.      PRODID:-//ACME/DesktopCalendar//EN
  4034.      METHOD:REPLY
  4035.      VERSION:2.0
  4036.      BEGIN:VTODO
  4037.      ATTENDEE;STATUS=IN-PROCESS:B@acme.com
  4038.      PERCENT-COMPLETE:75
  4039.      UID:www.acme.com-873970198738777-00@host.com
  4040.      DTSTAMP:19970717T233000Z
  4041.      SEQUENCE:0
  4042.      END:VTODO
  4043.      END:VCALENDAR
  4044.  
  4045.  
  4046. 4.5.5     A Refresh Reply: Completed
  4047.  
  4048.    A reply indicating that "C" finished with "C's" part of the
  4049.    assignment.
  4050.  
  4051.      BEGIN:VCALENDAR
  4052.      PRODID:-//ACME/DesktopCalendar//EN
  4053.      METHOD:REPLY
  4054.      VERSION:2.0
  4055.      BEGIN:VTODO
  4056.      ATTENDEE;STATUS=COMPLETED:C@acme.com
  4057.      UID:www.acme.com-873970198738777-00@host.com
  4058.      DTSTAMP:19970717T233000Z
  4059.      SEQUENCE:0
  4060.      END:VTODO
  4061.      END:VCALENDAR
  4062.  
  4063.  
  4064. 4.5.6     An Updated VTODO Request
  4065.  
  4066.    Owner "A" resends the "VTODO" calendar component. "A" set's the
  4067.    overall completion for the to-do at 40%.
  4068.  
  4069.  
  4070. Silverberg/Mansour/Dawson/Hopson  64                   Expires MAY 1998
  4071.  
  4072.  
  4073. Internet Draft                   iTIP                  October 24, 1997
  4074.  
  4075.  
  4076.  
  4077.      BEGIN:VCALENDAR
  4078.      PRODID:-//ACME/DesktopCalendar//EN
  4079.      METHOD:REQUEST
  4080.      VERSION:2.0
  4081.      BEGIN:VTODO
  4082.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  4083.      ATTENDEE;STATUS=ACCEPTED;TYPE=INDIVIDUAL:B@acme.com
  4084.      ATTENDEE;STATUS=COMPLETED;TYPE=INDIVIDUAL:C@acme.com
  4085.      ATTENDEE;STATUS=TENTATIVE;TYPE=INDIVIDUAL:D@acme.com
  4086.      DTSTART:19970701T100000-0700
  4087.      DUE:19970722T100000-0700
  4088.      SUMMARY:Create the requirements document
  4089.      UID:www.acme.com-873970198738777-00@host.com
  4090.      SEQUENCE:1
  4091.      DTSTAMP:19970718T100000Z
  4092.      STATUS:IN-PROGRESS
  4093.      PERCENT-COMPLETE:40
  4094.      END:VTODO
  4095.      END:VCALENDAR
  4096.  
  4097.  
  4098. 4.5.7     A Recurring VTODOs
  4099.  
  4100.    The following examples relate to recurring "VTODO" calendar
  4101.    components.
  4102.  
  4103. 4.5.7.1   Request for a Recurring VTODO
  4104.  
  4105.    In this example "A" sends a recurring "VTODO" calendar component to
  4106.    "B" and "C".
  4107.  
  4108.      BEGIN:VCALENDAR
  4109.      PRODID:-//ACME/DesktopCalendar//EN
  4110.      METHOD:REQUEST
  4111.      VERSION:2.0
  4112.      BEGIN:VTODO
  4113.      ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:A@acme.com
  4114.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:B@acme.com
  4115.      ATTENDEE;RSVP=YES;EXPECT=REQUEST;TYPE=INDIVIDUAL:C@acme.com
  4116.      RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
  4117.      DTSTART:19980101T100000-0700
  4118.      DUE:19980103T100000-0700
  4119.      SUMMARY:Send Status Reports to Area Managers
  4120.      UID:www.acme.com-873970198738777-00@host.com
  4121.      SEQUENCE:0
  4122.      DTSTAMP:19970717T200000Z
  4123.      STATUS:CONFIRMED
  4124.      END:VTODO
  4125.      END:VCALENDAR
  4126.  
  4127.  
  4128.  
  4129.  
  4130.  
  4131.  
  4132. Silverberg/Mansour/Dawson/Hopson  65                   Expires MAY 1998
  4133.  
  4134.  
  4135. Internet Draft                   iTIP                  October 24, 1997
  4136.  
  4137.  
  4138. 4.5.7.2   Calculating due dates in recurring VTODOs
  4139.  
  4140.    The due date in a recurring "VTODO" calendar component is either a
  4141.    fixed interval specified in the "REQUEST" method or specified
  4142.    specifically using the "RECURRENCE-ID" property. The former is
  4143.    calculated by applying the difference between "DTSTART" and "DUE"
  4144.    properties and applying it to each of the start of each recurring
  4145.    instance. Hence, if the initial "VTODO" calendar component specifies
  4146.    a "DTSTART" property value of "19970701T190000Z" and a "DUE" property
  4147.    value of "19970801T190000Z" the interval of one day which could be
  4148.    applied to each recurring instance of the "VTODO" calendar component.
  4149.  
  4150. 4.5.7.3   Replying to an instance of a recurring VTODO
  4151.  
  4152.    In this example "B" updates "A" on a single instance of the "VTODO"
  4153.    calendar component.
  4154.  
  4155.      BEGIN:VCALENDAR
  4156.      PRODID:-//ACME/DesktopCalendar//EN
  4157.      METHOD:REPLY
  4158.      VERSION:2.0
  4159.      BEGIN:VTODO
  4160.      ATTENDEE;STATUS=IN-PROCESS:B@acme.com
  4161.      PERCENT-COMPLETE:75
  4162.      UID:www.acme.com-873970198738777-00@host.com
  4163.      DTSTAMP:19970717T233000Z
  4164.      RECURRENCE-ID:19980101T100000-0700
  4165.      SEQUENCE:0
  4166.      END:VTODO
  4167.      END:VCALENDAR
  4168.  
  4169.  
  4170. 4.6 Journal Examples
  4171.  
  4172.    The iCalendar object below describes a single journal entry for
  4173.    October 2, 1997. The "RELATED-TO" property references the phone
  4174.    conference event for which minutes were taken.
  4175.  
  4176.      BEGIN:VCALENDAR
  4177.      PROFILE:PUBLISH
  4178.      PRODID:-//ACME/DesktopCalendar//EN
  4179.      VERSION:2.0
  4180.      BEGIN:VJOURNAL
  4181.      DTSTART:19971002T200000Z
  4182.      SUMMARY:Phone conference minutes
  4183.      DESCRIPTION:The editors meeting was held on October 1, 1997.
  4184.        Details are in the attached document.
  4185.      UID:0981234-1234234-2410@host.com
  4186.      RELATED-TO:0981234-1234234-2402-35@host.com
  4187.      ATTACH:ftp\://ftp.example.com/pub/ed/minutes100197.txt
  4188.      END:VJOURNAL
  4189.      END:VCALENDAR
  4190.  
  4191.  
  4192.  
  4193.  
  4194. Silverberg/Mansour/Dawson/Hopson  66                   Expires MAY 1998
  4195.  
  4196.  
  4197. Internet Draft                   iTIP                  October 24, 1997
  4198.  
  4199.  
  4200. 4.7 Other Examples
  4201.  
  4202.  
  4203. 4.7.1     Event Refresh
  4204.  
  4205.    Refresh the event with "UID" property value of "guid-1-
  4206.    12345@host1.com":
  4207.  
  4208.      BEGIN:VCALENDAR
  4209.      PRODID:-//RDU Software//NONSGML HandCal//EN
  4210.      METHOD:REFRESH
  4211.      VERSION:2.0
  4212.      BEGIN:VEVENT
  4213.      ATTENDEE;ROLE=OWNER;EXPECT=REQUEST:Sman@netscape.com
  4214.      ATTENDEE;EXPECT=REQUEST:Frank_Dawson@Lotus.com
  4215.      ATTENDEE;EXPECT=REQUEST:Deriks@Microsoft.com
  4216.      ATTENDEE;EXPECT=REQUEST:Alecd@Microsoft.com
  4217.      UID: guid-1-12345@host1.com
  4218.      DTSTAMP:19970603T094000
  4219.      END:VEVENT
  4220.      END:VCALENDAR
  4221.  
  4222. 4.7.2     Bad RECURRENCE-ID
  4223.  
  4224.    If an "Attendee" receives a request that references a "RECURRENCE-ID"
  4225.    property that can not be found, the "Attendee" SHOULD send a
  4226.    "REFRESH" method back to the "Organizer" for the latest copy of the
  4227.    event.
  4228.  
  4229. +--------------------------------------------------------------------+
  4230. | Action             |  "Organizer"        | Attendee                |
  4231. +--------------------------------------------------------------------+
  4232. | Update an instance | "A" sends a REQUEST |                         |
  4233. | request            | message to "B"      |                         |
  4234. +--------------------------------------------------------------------+
  4235. | Attendee requests  |                     | "B" sends a REFRESH     |
  4236. | refresh because    |                     | message to "A"          |
  4237. | RecurrenceID was   |                     |                         |
  4238. | not found          |                     |                         |
  4239. +--------------------------------------------------------------------+
  4240. | Refresh the entire | "A" sends the       |                         |
  4241. | Event              | latest copy of the  |                         |
  4242. |                    | Event to "B"        |                         |
  4243. +--------------------------------------------------------------------+
  4244. | Attendee handles   |                     | "B" updates to the      |
  4245. | the request and    |                     | latest copy of the      |
  4246. | updates the        |                     | meeting.                |
  4247. | instance           |                     |                         |
  4248. +--------------------------------------------------------------------+
  4249.  
  4250.  
  4251.    Request from "A":
  4252.  
  4253.      BEGIN:VCALENDAR
  4254.      METHOD:REQUEST
  4255.  
  4256.  
  4257. Silverberg/Mansour/Dawson/Hopson  67                   Expires MAY 1998
  4258.  
  4259.  
  4260. Internet Draft                   iTIP                  October 24, 1997
  4261.  
  4262.  
  4263.      PRODID:-//RDU Software//NONSGML HandCal//EN
  4264.      VERSION:2.0
  4265.      BEGIN:VEVENT
  4266.      UID:acme-12345@host1.com
  4267.      SEQUENCE:3
  4268.      RRULE:FREQ=WEEKLY
  4269.      RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z
  4270.      ATTENDEE;STATUS=ACCEPTED;ROLE=OWNER:sman@netscape.com
  4271.      ATTENDEE;EXPECT=REQUEST:stevesil@microsoft.com
  4272.      DESCRIPTION:IETF-C&S Conference Call
  4273.      SUMMARY:IETF Calendaring Working Group Meeting
  4274.      DTSTART:19970801T210000Z
  4275.      DTEND:19970801T220000Z
  4276.      DTSTAMP:19970726T083000
  4277.      STATUS:CONFIRMED
  4278.      END:VEVENT
  4279.      END:VCALENDAR
  4280.  
  4281.  
  4282.    "B" has the event with "UID" property"acme-12345@host1.com" but the
  4283.    "SEQUENCE" property value is "1" and the event does not have an
  4284.    instance at the specified recurrence time. This means that the
  4285.    "Owner" is either adding a new instance or that the new instance was
  4286.    added when "SEQUENCE" property value "2" of the event was generated.
  4287.    In either case, "B" needs a new copy of the event.
  4288.  
  4289.      BEGIN:VCALENDAR
  4290.      PRODID:-//RDU Software//NONSGML HandCal//EN
  4291.      METHOD:REFRESH
  4292.      VERSION:2.0
  4293.      BEGIN:VEVENT
  4294.      ATTENDEE;STATUS=ACCEPTED;ROLE=OWNER:sman@netscape.com
  4295.      ATTENDEE;EXPECT=REQUEST:stevesil@microsoft.com
  4296.      UID:acme-12345@host1.com
  4297.      DTSTAMP:19970603T094000
  4298.      END:VEVENT
  4299.      END:VCALENDAR
  4300.  
  4301.  
  4302. 5  Application Protocol Fallbacks
  4303.  
  4304.  
  4305. 5.1 Partial Implementation
  4306.  
  4307.    Applications that support this memo are not required to support the
  4308.    entire protocol. The following describes how methods and properties
  4309.    SHOULD "fallback" in applications that do not support the complete
  4310.    protocol. If a method or property is not addressed in this section,
  4311.    it MAY be ignored.
  4312.  
  4313. 5.1.1     Event-Related Fallbacks
  4314.  
  4315.  
  4316. Method           Fallback
  4317. --------------   -----------------------------------------------------
  4318.  
  4319.  
  4320.  
  4321. Silverberg/Mansour/Dawson/Hopson  68                   Expires MAY 1998
  4322.  
  4323.  
  4324. Internet Draft                   iTIP                  October 24, 1997
  4325.  
  4326.  
  4327. PUBLISH          Required.
  4328. CANCEL           Required.
  4329. REQUEST          PUBLISH
  4330. REPLY            Required.
  4331. DELEGATE         Reply with Not Supported.
  4332. REQUEST          Reply with Not Supported.
  4333. REPLY            Reply with Not Supported.
  4334. COUNTER          Reply with Not Supported
  4335. DECLINECOUNTER   Required if EVENT-COUNTER is implemented; otherwise
  4336.                  reply with Not Supported.
  4337.  
  4338. iCalendar
  4339. Property         Fallback
  4340. --------------   -----------------------------------------------------
  4341. CALSCALE         Ignore; assume GREGORIAN.
  4342. GEO              Ignore.
  4343. PRODID           Ignore.
  4344. METHOD           Required as described in the Method list above.
  4345. SOURCE           Ignore
  4346. NAME             Ignore.
  4347. VERSION          Ignore.
  4348.  
  4349. Event-Related
  4350. Components       Fallback
  4351. --------------   -----------------------------------------------------
  4352. VFREEBUSY        Reply with Not Supported.
  4353. VALARM           Reply with Not Supported.
  4354. VTIMEZONE        Required if RRULE or RDATE is implemented; otherwise
  4355.                  ignore and use local time.
  4356.  
  4357. Component
  4358. Property         Fallback
  4359. --------------   -----------------------------------------------------
  4360. ATTACH           Ignore.
  4361. ATTENDEE         Required if EVENT-REQUEST is not implemented;
  4362.                  otherwise reply with Not Supported.
  4363. CATEGORIES       Required if in VALARM and VALARM is implemented,
  4364.                  otherwise ignore.
  4365. CLASS            Ignore.
  4366. COMMENT          Ignore.
  4367. COMPLETED        Ignore.
  4368. CREATED          Ignore.
  4369. DAYLIGHT         Required if VTIMEZONE is implemented; otherwise
  4370.                  Ignore.
  4371. DESCRIPTION      Required.
  4372. DELEGATED-FROM   Required if EVENT-DELEGATE is implemented; otherwise
  4373.                  Ignore.
  4374. DELEGATED-TO     Required if EVENT-DELEGATE is implemented; otherwise
  4375.                  Ignore.
  4376. DUE              Ignore.
  4377. DURATION         Reply with Not Supported.
  4378. DTSTAMP          Required.
  4379. DTSTART          Required.
  4380. DTEND            Required.
  4381.  
  4382.  
  4383. Silverberg/Mansour/Dawson/Hopson  69                   Expires MAY 1998
  4384.  
  4385.  
  4386. Internet Draft                   iTIP                  October 24, 1997
  4387.  
  4388.  
  4389. EXDATE           Ignore.
  4390. EXRULE           Ignore.
  4391. FREEBUSY         Reply with Not Supported.
  4392. LAST-MODIFIED    Ignore.
  4393. LOCATION         Required.
  4394. PRIORITY         Ignore.
  4395. RELATED-TO       Ignore.
  4396. RDATE            Ignore. If implemented, VTIMEZONE MUST also be
  4397.                  implemented.
  4398. RRULE            Ignore. The first instance occurs on the DTStart
  4399.                  property.
  4400. RECURRENCE-ID    Required if RRULE is implemented; otherwise Ignore.
  4401. REQUEST-STATUS   Required.
  4402. RESOURCES        Ignore.
  4403. SEQUENCE         Required.
  4404. STATUS           Ignore.
  4405. SUMMARY          Ignore.
  4406. TRANSP           Required if FREEBUSY is implemented; otherwise Ignore.
  4407. TZNAME           Required if VTIMEZONE is implemented; otherwise
  4408.                  Ignore.
  4409. TZOFFSET         Required if VTIMEZONE is implemented; otherwise
  4410.                  Ignore.
  4411. URL              Ignore.
  4412. UID              Required.
  4413. X-               Ignore.
  4414.  
  4415.  
  4416. 5.1.2     To-Do-Related Fallbacks
  4417.  
  4418.  
  4419. Method           Fallback
  4420. --------------   -----------------------------------------------------
  4421. PUBLISH          Required.
  4422. CANCEL           Required.
  4423. REQUEST          TODO-PUBLISH
  4424. REPLY            Required.
  4425.  
  4426. iCalendar
  4427. Property         Fallback
  4428. --------------   -----------------------------------------------------
  4429. CALSCALE         Ignore; assume GREGORIAN.
  4430. GEO              Ignore.
  4431. PRODID           Ignore.
  4432. METHOD           Required as described in the Method list above.
  4433. SOURCE           Ignore
  4434. NAME             Ignore.
  4435. VERSION          Ignore.
  4436.  
  4437. To-Do-Related
  4438. Components       Fallback
  4439. --------------   -----------------------------------------------------
  4440. VALARM           Reply with Not Supported.
  4441. VTIMEZONE        Required if RRULE or RDATE is implemented;
  4442.                  otherwise ignore and use local time.
  4443.  
  4444.  
  4445.  
  4446. Silverberg/Mansour/Dawson/Hopson  70                   Expires MAY 1998
  4447.  
  4448.  
  4449. Internet Draft                   iTIP                  October 24, 1997
  4450.  
  4451.  
  4452.  
  4453. Component
  4454. Property         Fallback
  4455. --------------   -----------------------------------------------------
  4456. CALSCALE         Ignore; assume GREGORIAN.
  4457. GEO              Ignore.
  4458. PRODID           Ignore.
  4459. PROFILE          Required as described in the Method list above.
  4460. SOURCE           Ignore
  4461. NAME             Ignore.
  4462. VERSION          Assume "2.0".
  4463. Property         Fallback
  4464. ATTACH           Ignore.
  4465. ATTENDEE         Required if REQUEST is not implemented; otherwise
  4466.                  ignore.
  4467. CATEGORIES       Ignore.
  4468. CLASS            Ignore.
  4469. COMMENT          Ignore.
  4470. COMPLETED        Required.
  4471. CREATED          Ignore.
  4472. DAYLIGHT         Required if VTIMEZONE is implemented; otherwise
  4473.                  ignore.
  4474. DESCRIPTION      Required.
  4475. DUE              Required.
  4476. DURATION         Ignore. Reply with Not Supported.
  4477. DTSTAMP          Required.
  4478. DTSTART          Required.
  4479. EXDATE           Ignore. Reply with Not Supported.
  4480. EXRULE           Ignore. Reply with Not Supported.
  4481. LAST-MODIFIED    Ignore.
  4482. LOCATION         Ignore.
  4483. PERCENT-COMPLETE Ignore
  4484. PRIORITY         Required.
  4485. RELATED-TO       Ignore.
  4486. RDATE            Ignore. If implemented, VTIMEZONE MUST also be
  4487.                  implemented.
  4488. RRULE            Ignore. The first instance occurs on the DTStart
  4489.                  property.
  4490. RESOURCES        Ignore.
  4491. SEQUENCE         Required.
  4492. STATUS           Required.
  4493. SUMMARY          Ignore.
  4494. TRANSP           Required if FREEBUSY is implemented; otherwise Ignore.
  4495. TZNAME           Required if VTIMEZONE is implemented; otherwise
  4496.                  Ignore.
  4497. TZOFFSET         Required if VTIMEZONE is implemented; otherwise
  4498.                  Ignore.
  4499. URL              Ignore.
  4500. UID              Required.
  4501. X-               Ignore.
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508. Silverberg/Mansour/Dawson/Hopson  71                   Expires MAY 1998
  4509.  
  4510.  
  4511. Internet Draft                   iTIP                  October 24, 1997
  4512.  
  4513.  
  4514. 5.1.3     Journal-Related Fallbacks
  4515.  
  4516.  
  4517. Method           Fallback
  4518. --------------   -----------------------------------------------------
  4519. PUBLISH          Implementations MAY ignore the profile type. The
  4520.                  REQUEST-STATUS "302;Request not supported" MUST be
  4521.                  returned.
  4522. CANCEL           Implementations MAY ignore the profile type. The
  4523.                  REQUEST-STATUS "302;Request not supported" MUST be
  4524.                  returned.
  4525. REFRESH          Implementations MAY ignore the profile type. The
  4526.                  REQUEST-STATUS "302;Request not supported" MUST be
  4527.                  returned.
  4528.  
  4529. iCalendar
  4530. Property         Fallback
  4531. --------------   -----------------------------------------------------
  4532. CALSCALE         Ignore; assume GREGORIAN.
  4533. GEO              Ignore.
  4534. PRODID           Ignore.
  4535. METHOD           Required as described in the Method list above.
  4536. SOURCE           Ignore
  4537. NAME             Ignore.
  4538. VERSION          Ignore.
  4539.  
  4540. Journal-Related
  4541. Components       Fallback
  4542. --------------   -----------------------------------------------------
  4543. VTIMEZONE        Required if RRULE or RDATE is implemented; otherwise
  4544.                  ignore and use local time.
  4545. CALSCALE         Ignore; assume GREGORIAN.
  4546. GEO              Ignore.
  4547. PRODID           Ignore.
  4548. METHOD           Required as described in the Method section above.
  4549. SOURCE           Ignore
  4550. NAME             Ignore.
  4551. VERSION          Assume "2.0".
  4552.  
  4553. Component
  4554. Property         Fallback
  4555. --------------   -----------------------------------------------------
  4556. ATTACH           Ignore.
  4557. ATTENDEE         Required if JOURNAL-REQUEST is implemented; otherwise
  4558.                  ignore.
  4559. CATEGORIES       Ignore.
  4560. CLASS            Ignore.
  4561. COMMENT          Ignore.
  4562. CREATED          Ignore.
  4563. DAYLIGHT         Required if VTIMEZONE is implemented; otherwise
  4564.                  Ignore.
  4565. DESCRIPTION      Required.
  4566. DTSTAMP          Required.
  4567. DTSTART          Required.
  4568.  
  4569.  
  4570.  
  4571. Silverberg/Mansour/Dawson/Hopson  72                   Expires MAY 1998
  4572.  
  4573.  
  4574. Internet Draft                   iTIP                  October 24, 1997
  4575.  
  4576.  
  4577. DTEND            Required.
  4578. EXDATE           Ignore.
  4579. EXRULE           Ignore.
  4580. LAST-MODIFIED    Ignore.
  4581. RELATED-TO       Ignore.
  4582. RDATE            Ignore. If implemented, VTIMEZONE MUST also be
  4583.                  implemented.
  4584. RRULE            Ignore. The first instance occurs on the DTStart
  4585.                  property.
  4586. SEQUENCE         Required.
  4587. STATUS           Ignore.
  4588. TRANSP           Required if FREEBUSY is implemented; otherwise ignore.
  4589. TZNAME           Required if VTIMEZONE is implemented; otherwise
  4590.                  ignore.
  4591. TZOFFSET         Required if VTIMEZONE is implemented; otherwise
  4592.                  ignore.
  4593. URL              Ignore.
  4594. UID              Required.
  4595. X-               Ignore.
  4596.  
  4597.  
  4598. 5.2 Latency Issues
  4599.  
  4600.    With a store-and-forward transport, it is possible for events to
  4601.    arrive out of sequence. That is, you MAY receive a "CANCEL" method
  4602.    prior to receiving the associated "REQUEST" for the calendar
  4603.    component. This section discusses a few of these scenarios.
  4604.  
  4605. 5.2.1     Cancellation of an Unknown Calendar Component.
  4606.  
  4607.    When a "CANCEL" method is received before the original "REQUEST"
  4608.    method the calendar will be unable to correlate the "UID" property of
  4609.    the cancellation with an existing calendar component. It is suggested
  4610.    that messages that can not be correlated that also contain non-zero
  4611.    sequence numbers be held and not discarded. Implementations MAY age
  4612.    them out if no other messages arrive with the same "UID" property
  4613.    value and a lower sequence number.
  4614.  
  4615. 5.2.2     Unexpected Reply from an Unknown Delegate
  4616.  
  4617.    When an "Attendee" delegates an item to another "Calendar User" they
  4618.    MUST send a "REPLY" method to the "Organizer" using the "ATTENDEE"
  4619.    properties to indicate the fact that the request was delegated and to
  4620.    whom the item was delegated. Hence it is possible for an "Organizer"
  4621.    to receive an "REPLY" from a "Calendar User" not listed as one of the
  4622.    original "Attendees". The resolution is left to the implementation
  4623.    but it is expected that the calendaring software will either accept
  4624.    the reply or hold it until the related "REPLY" method is received
  4625.    from the "delegator". If the version of the "REPLY" method is out of
  4626.    date the "Organizer" SHOULD treat the message as a "STATUS-REQUEST"
  4627.    and update the delegate with the correct version.
  4628.  
  4629.  
  4630.  
  4631.  
  4632.  
  4633. Silverberg/Mansour/Dawson/Hopson  73                   Expires MAY 1998
  4634.  
  4635.  
  4636. Internet Draft                   iTIP                  October 24, 1997
  4637.  
  4638.  
  4639. 5.3 Sequence Number
  4640.  
  4641.    Under some conditions, a "CUA" MAY receive requests and replies with
  4642.    the same "SEQUENCE" property value. The "DTSTAMP" property is
  4643.    utilized as a tie-breaker when two items with the same "SEQUENCE"
  4644.    property value are evaluated. Furthermore, the "SEQUENCE" property is
  4645.    only incremented when one or more of the following properties
  4646.    changes:
  4647.  
  4648.       ╖ DTSTART
  4649.  
  4650.       ╖ DTEND
  4651.  
  4652.       ╖ RDATE
  4653.  
  4654.       ╖ RRULE
  4655.  
  4656.       ╖ EXDATE
  4657.  
  4658.       ╖ EXRULE
  4659.  
  4660.       ╖ DUE (for VTODO components)
  4661.  
  4662.       ╖ and possibly LOCATION
  4663.  
  4664. 6  Security Considerations
  4665.  
  4666.    This memo outlines an abstract transport protocol which will be bound
  4667.    to a real-time transport, a store-and-forward transport, and perhaps
  4668.    other transports. The transport protocol will be responsible for
  4669.    providing facilities for authentication and encryption using standard
  4670.    Internet mechanisms that are mutually understood between the sender
  4671.    and receiver.
  4672.  
  4673. 6.1 Security Threats
  4674.  
  4675.  
  4676. 6.1.1     Spoofing the "Organizer"
  4677.  
  4678.    In this memo, the "Organizer" is the only person authorized to make
  4679.    changes to an existing "VEVENT", "VTODO", "VJOURNAL" calendar
  4680.    component and redistribute the updates to the "Attendees". An
  4681.    iCalendar object that maliciously changes or cancels an existing
  4682.    "VEVENT", "VTODO" or "VJOURNAL" calendar component MAY be constructed
  4683.    by someone other than the "Organizer" and sent to the "Attendees".
  4684.  
  4685. 6.1.2     Spoofing the "Attendee"
  4686.  
  4687.    In this memo, an "Attendee" of a "VEVENT", "VTODO", "VJOURNAL"
  4688.    calendar component is the only person authorized to update any
  4689.    parameter associated with their "ATTENDEE" property and send it to
  4690.    the "Organizer". An iCalendar object that maliciously changes the
  4691.    "ATTENDEE" parameters MAY be constructed by someone other than the
  4692.    real "Attendee" and sent to the "Organizer".
  4693.  
  4694.  
  4695.  
  4696.  
  4697.  
  4698.  
  4699.  
  4700. Silverberg/Mansour/Dawson/Hopson  74                   Expires MAY 1998
  4701.  
  4702.  
  4703. Internet Draft                   iTIP                  October 24, 1997
  4704.  
  4705.  
  4706. 6.1.3     Eavesdropping
  4707.  
  4708.    The iCalendar object is constructed with human-readable clear text.
  4709.    Any information contained in an iCalendar object MAY be read and/or
  4710.    changed by unauthorized persons while the object is in transit.
  4711.  
  4712. 6.1.4     Flooding a Calendar
  4713.  
  4714.    Implementations MAY provide a means to automatically incorporate
  4715.    "REQUEST" methods into a calendar.  This presents the opportunity for
  4716.    a calendar to be flooded with requests, which effectively block all
  4717.    the calendar's free time.
  4718.  
  4719. 6.1.5     Procedural Alarms
  4720.  
  4721.    The "REQUEST" methods for "VEVENT" and "VTODO" calendar components
  4722.    MAY contain "VALARM" calendar components. The "VALARM" calendar
  4723.    component MAY be of type PROCEDURE and MAY have an attachment
  4724.    containing some sort of executable program. Implementations that
  4725.    incorporate these types of alarms are subject to any virus or
  4726.    malicious attack that MAY occur as a result of executing the
  4727.    attachment.
  4728.  
  4729. 6.2 Recommendations
  4730.  
  4731.    For an application where the information is sensitive or critical and
  4732.    the network is subject is subject to a high probability of attack,
  4733.    iTIP transactions SHOULD be secured. This MAY be accomplished using
  4734.    public key technology, specifically Security Multiparts for MIME
  4735.    [RFC1847] in the iTIP transport binding.  This helps mitigate the
  4736.    threats of spoofing, eavesdropping and malicious changes in transit.
  4737.  
  4738. 6.2.1     Use of [RFC1847] to secure iTIP transactions
  4739.  
  4740.    iTIP transport bindings SHOULD provide a mechanism based on Security
  4741.    Multiparts for MIME [RFC1847] to enable authentication of the
  4742.    senderÆs identity, and privacy and integrity of the data being
  4743.    transmitted. This allows the receiver of a signed iCalendar object to
  4744.    verify the identity of the sender. This sender MAY then be correlated
  4745.    to an "ATTENDEE" property in the iCalendar object. If the correlation
  4746.    is made and the sender is authorized to make the requested change or
  4747.    update then the operation MAY proceed. It also allows the message to
  4748.    be encrypted to prevent unauthorized reading of the message contents
  4749.    in transit. iTIP transport binding documents describe this process in
  4750.    detail.
  4751.  
  4752. 6.2.2     Implementation Controls
  4753.  
  4754.    The threat of flooding a calendar SHOULD be mitigated by a calendar
  4755.    system that uses this protocol by providing controls that MAY be used
  4756.    to limit the acceptable sources for iTIP transactions, and perhaps
  4757.    the size of messages and volume of traffic, by source.
  4758.  
  4759.  
  4760.  
  4761.  
  4762. Silverberg/Mansour/Dawson/Hopson  75                   Expires MAY 1998
  4763.  
  4764.  
  4765. Internet Draft                   iTIP                  October 24, 1997
  4766.  
  4767.  
  4768.    The threat of malicious procedural alarms SHOULD be mitigated by a
  4769.    calendar system that uses this protocol by providing controls that
  4770.    MAY be used to disallow procedural alarms in iTIP transactions and/or
  4771.    remove all alarms from the object before delivery to the recipient.
  4772.  
  4773. 7  Acknowledgments
  4774.  
  4775.    A hearty thanks to the following individuals who have participated in
  4776.    the drafting, review and discussion of this memo:
  4777.  
  4778.    Anik Ganguly, Bruce Kahn, John Noerenberg, Leo Parker, John Rose,
  4779.    Vinod Seraphin, Richard Shusterman, Derik Stenerson, John Sun, Kevin
  4780.    Tsurutome.
  4781.  
  4782. 8  Bibliography
  4783.  
  4784.    [ICAL] "Internet Calendaring and Scheduling Core Object Specification
  4785.    - iCalendar", Internet-Draft, October 1997,
  4786.    ftp://ftp.ietf.org/internet-drafts/draft-ietf-calsch-ical-03.txt.
  4787.  
  4788.    [ICMS] "Internet Calendaring Model Specification", Internet-Draft,
  4789.    October 1997, ftp://ftp.ietf.org/internet-drafts/draft-ietf-calsch-
  4790.    mod-01.txt.
  4791.  
  4792.    [ID-UTF8] "UTF-8, a transformation format of Unicode and ISO 10646",
  4793.    Internet-Draft, July 1996, ftp://ftp.ietf.org/internet-drafts/draft-
  4794.    yergeau-utf8-01.txt.
  4795.  
  4796.    [IMIP] "iCalendar Message-Based Interoperability Protocol - iMIP",
  4797.    Internet-Draft, October 1997, ftp://ftp.ietf.org/internet-
  4798.    drafts/draft-ietf-calsch-imip-01.txt.
  4799.  
  4800.    [ISO8601] "Data elements and interchange formats - information
  4801.    interchange - Representation of dates and times", ISO 8601, 1996-06-
  4802.    15, +1 (212) 642-4900 for ANSI Sales.
  4803.  
  4804.    [VCAL] "vCalendar - The Electronic Calendaring and Scheduling Format
  4805.    - Version 1.0", Versit Consortium, September 18, 1996,
  4806.    http://www.imc.org/pdi/vcal-10.doc.
  4807.  
  4808.    [VCARD] "vCard - The Electronic Business Card Exchange Format -
  4809.    Version 2.1", Versit Consortium, September 18, 1996,
  4810.    http://www.imc.org/pdi/vcard-21.doc.
  4811.  
  4812.    [RFC821] Postel, "Simple Mail Transfer Protocol", RFC 821,
  4813.    organization name, November 1996,
  4814.    http://ds.internic.net/rfc/rfc821.txt.
  4815.  
  4816.    [RFC1983] "Internet Users' Glossary", RFC 1983, August 1996,
  4817.    http://ds.internic.net/rfc/rfc1983.txt.
  4818.  
  4819.    [RFC2119] "Key words for use in RFCs to Indicate Requirement Levels",
  4820.    RFC 2119, March 1997, http://ds.internic.net/rfc/rfc2119.txt.
  4821.  
  4822.    [RFC2045] N. Freed and N. Borenstein, "Multipurpose Internet Mail
  4823.    Extensions - Part One - Format of Internet Message Bodies", RFC 2045,
  4824.    Innosoft, First Virtual, November 1996,
  4825.    http://ds.internic.net/rfc/rfc2045.txt.
  4826.  
  4827.  
  4828.  
  4829.  
  4830. Silverberg/Mansour/Dawson/Hopson  76                   Expires MAY 1998
  4831.  
  4832.  
  4833. Internet Draft                   iTIP                  October 24, 1997
  4834.  
  4835.  
  4836.    [RFC2046] N. Freed and N. Borenstein, "Multipurpose Internet Mail
  4837.    Extensions - Part Two - Media Types", RFC 2046, Innosoft, First
  4838.    Virtual, November 1996, http://ds.internic.net/rfc/rfc2046.txt.
  4839.  
  4840.    [UNICODE] The Unicode Consortium, "The Unicode Standard -Version
  4841.    2.0", Addison-Wesley Developers Press, July 1996. UTF-8 is described
  4842.    in section A-2.
  4843.  
  4844.    [US-ASCII] Coded Character Set--7-bit AmeriMAYStandard Code for
  4845.    Information Interchange, ANSI X3.4-1986.
  4846.  
  4847. 9  Authors Addresses
  4848.  
  4849.    The following address information is provided in a MIME-VCARD,
  4850.    Electronic Business Card, format.
  4851.  
  4852.    The authors of this draft are:
  4853.  
  4854.      BEGIN:VCARD
  4855.      FN:Frank Dawson
  4856.      ORG:Lotus Development Corporation
  4857.      ADR;WORK;POSTAL;PARCEL:;;6544 Battleford Drive;Raleigh;NC;27613-
  4858.        3502;USA
  4859.      TEL;WORK;MSG:+1-919-676-9515
  4860.      TEL;WORK;FAX:+1-919-676-9564
  4861.      EMAIL;INTERNET:Frank_Dawson@Lotus.com
  4862.      URL:http://home.earthlink.net/~fdawson
  4863.      END:VCARD
  4864.  
  4865.      BEGIN:VCARD
  4866.      FN:Ross Hopson
  4867.      ORG:On Technology, Inc.
  4868.      ADR;WORK;POSTAL;PARCEL:Suite 1600;;434 Fayetteville St.
  4869.        Mall, Two Hannover Square;Raleigh;NC;27601
  4870.      TEL;WORK;MSG:+1-919-890-4036
  4871.      TEL;WORK;FAX:+1-919-890-4100
  4872.      EMAIL;INTERNET:rhopson@on.com
  4873.      END:VCARD
  4874.  
  4875.      BEGIN:VCARD
  4876.      FN:Steve Mansour
  4877.      ORG:Netscape Communications Corporation
  4878.      ADR;WORK;POSTAL;PARCEL:;;501 East Middlefield Road;Mountain
  4879.        View;CA;94043;USA
  4880.      TEL;WORK;MSG:+1-415-937-2378
  4881.      TEL;WORK;FAX:+1-415-428-4059
  4882.      EMAIL;INTERNET:sman@netscape.com
  4883.      END:VCARD
  4884.  
  4885.      BEGIN:VCARD
  4886.      FN:Steve Silverberg
  4887.      ORG:Microsoft Corporation
  4888.      ADR;WORK;POSTAL;PARCEL:;;One Microsoft Way;
  4889.      Redmond;WA;98052-6399;USA
  4890.      TEL;WORK;MSG:+1-425-936-9277
  4891.  
  4892.  
  4893.  
  4894. Silverberg/Mansour/Dawson/Hopson  77                   Expires MAY 1998
  4895.  
  4896.  
  4897. Internet Draft                   iTIP                  October 24, 1997
  4898.  
  4899.  
  4900.      TEL;WORK;FAX:+1-425-936-8019
  4901.      EMAIL;INTERNET:stevesil@Microsoft.com
  4902.      END:VCARD
  4903.  
  4904.  
  4905.    The iCalendar object is a result of the work of the Internet
  4906.    Engineering Task Force Calendaring and scheduling Working Group. The
  4907.    chairman of that working group is:
  4908.  
  4909.      BEGIN:VCARD
  4910.      FN:Anik Ganguly
  4911.      ORG:Campbel Services, Inc.
  4912.      ADR;WORK;POSTAL;PARCEL:10 Floor;;21700 Northwestern
  4913.        Highway;Southfield;MI;48075;USA
  4914.      TEL;WORK;MSG:+1-248-559-5955
  4915.      TEL;WORK;FAX:+1-248-559-5034
  4916.      EMAIL;INTERNET:anik@ontime.com
  4917.      END:VCARD
  4918.  
  4919.  
  4920. 10 Full Copyright Statement
  4921.  
  4922.    "Copyright (C) The Internet Society (date).  All Rights Reserved.
  4923.  
  4924.    This document and translations of it MAY be copied and furnished to
  4925.    others, and derivative works that comment on or otherwise explain it
  4926.    or assist in its implmentation MAY be prepared, copied, published and
  4927.    distributed, in whole or in part, without restriction of any kind,
  4928.    provided that the above copyright notice and this paragraph are
  4929.    included on all such copies and derivative works.  However, this
  4930.    document itself MAY NOT be modified in any way, such as by removing
  4931.    the copyright notice or references to the Internet Society or other
  4932.    Internet organizations, except as needed for the purpose of
  4933.    developing Internet standards in which case the procedures for
  4934.    copyrights defined in the Internet Standards process MUST be
  4935.    followed, or as required to translate it into languages other than
  4936.    English.
  4937.  
  4938.    The limited permissions granted above are perpetual and will not be
  4939.    revoked by the Internet Society or its successors or assigns.
  4940.  
  4941.    This document and the information contained herein is provided on an
  4942.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  4943.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  4944.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  4945.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  4946.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  4947.  
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.  
  4958.  
  4959. Silverberg/Mansour/Dawson/Hopson  78                   Expires MAY 1998
  4960.