summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2446.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2446.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2446.txt')
-rw-r--r--doc/rfc/rfc2446.txt6107
1 files changed, 6107 insertions, 0 deletions
diff --git a/doc/rfc/rfc2446.txt b/doc/rfc/rfc2446.txt
new file mode 100644
index 0000000..8e038a2
--- /dev/null
+++ b/doc/rfc/rfc2446.txt
@@ -0,0 +1,6107 @@
+
+
+
+
+
+
+Network Working Group S. Silverberg
+Request for Comments: 2446 Microsoft
+Category: Standards Track S. Mansour
+ Netscape
+ F. Dawson
+ Lotus
+ R. Hopson
+ ON Technologies
+ November 1998
+
+
+ iCalendar Transport-Independent Interoperability Protocol
+ (iTIP)
+ Scheduling Events, BusyTime, To-dos and Journal Entries
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (1998). All Rights Reserved.
+
+Abstract
+
+ This document specifies how calendaring systems use iCalendar objects
+ to interoperate with other calendar systems. It does so in a general
+ way so as to allow multiple methods of communication between systems.
+ Subsequent documents specify interoperable methods of communications
+ between systems that use this protocol.
+
+ The document outlines a model for calendar exchange that defines both
+ static and dynamic event, to-do, journal and free/busy objects.
+ Static objects are used to transmit information from one entity to
+ another without the expectation of continuity or referential
+ integrity with the original item. Dynamic objects are a superset of
+ static objects and will gracefully degrade to their static
+ counterparts for clients that only support static objects.
+
+ This document specifies an Internet protocol based on the iCalendar
+ object specification that provides scheduling interoperability
+ between different calendar systems. The Internet protocol is called
+ the "iCalendar Transport-Independent Interoperability Protocol
+ (iTIP)".
+
+
+
+Silverberg, et. al. Standards Track [Page 1]
+
+RFC 2446 iTIP November 1998
+
+
+ iTIP complements the iCalendar object specification by adding
+ semantics for group scheduling methods commonly available in current
+ calendar systems. These scheduling methods permit two or more
+ calendar systems to perform transactions such as publish, schedule,
+ reschedule, respond to scheduling requests, negotiation of changes or
+ cancel iCalendar-based calendar components.
+
+ iTIP is defined independent of the particular transport used to
+ transmit the scheduling information. Companion memos to iTIP provide
+ bindings of the interoperability protocol to a number of Internet
+ protocols.
+
+Table of Contents
+
+ 1 INTRODUCTION...................................................5
+ 1.1 FORMATTING CONVENTIONS .....................................5
+ 1.2 RELATED DOCUMENTS ..........................................6
+ 1.3 ITIP ROLES AND TRANSACTIONS ................................6
+ 2 INTEROPERABILITY MODELS........................................8
+ 2.1 APPLICATION PROTOCOL .......................................9
+ 2.1.1 Calendar Entry State ...................................9
+ 2.1.2 Delegation .............................................9
+ 2.1.3 Acting on Behalf of other Calendar Users ..............10
+ 2.1.4 Component Revisions ...................................10
+ 2.1.5 Message Sequencing ....................................11
+ 3 APPLICATION PROTOCOL ELEMENTS.................................12
+ 3.1 COMMON COMPONENT RESTRICTION TABLES .......................13
+ 3.2 METHODS FOR VEVENT CALENDAR COMPONENTS ....................14
+ 3.2.1 PUBLISH ...............................................15
+ 3.2.2 REQUEST ...............................................17
+ 3.2.2.1 Rescheduling an Event..............................19
+ 3.2.2.2 Updating or Reconfirmation of an Event.............19
+ 3.2.2.3 Delegating an Event to another CU..................19
+ 3.2.2.4 Changing the Organizer.............................20
+ 3.2.2.5 Sending on Behalf of the Organizer.................20
+ 3.2.2.6 Forwarding to An Uninvited CU......................20
+ 3.2.2.7 Updating Attendee Status...........................21
+ 3.2.3 REPLY .................................................21
+ 3.2.4 ADD ...................................................23
+ 3.2.5 CANCEL ................................................25
+ 3.2.6 REFRESH ...............................................26
+ 3.2.7 COUNTER ...............................................28
+ 3.2.8 DECLINECOUNTER ........................................29
+ 3.3 METHODS FOR VFREEBUSY COMPONENTS ..........................31
+ 3.3.1 PUBLISH ...............................................32
+ 3.3.2 REQUEST ...............................................33
+ 3.3.3 REPLY .................................................34
+ 3.4 METHODS FOR VTODO COMPONENTS ..............................35
+
+
+
+Silverberg, et. al. Standards Track [Page 2]
+
+RFC 2446 iTIP November 1998
+
+
+ 3.4.1 PUBLISH ...............................................35
+ 3.4.2 REQUEST ...............................................37
+ 3.4.2.1 REQUEST for Rescheduling a VTODO...................39
+ 3.4.2.2 REQUEST for Update or Reconfirmation of a VTODO....39
+ 3.4.2.3 REQUEST for Delegating a VTODO.....................40
+ 3.4.2.4 REQUEST Forwarded To An Uninvited Calendar User....40
+ 3.4.2.5 REQUEST Updated Attendee Status....................41
+ 3.4.3 REPLY .................................................41
+ 3.4.4 ADD ...................................................43
+ 3.4.5 CANCEL ................................................44
+ 3.4.6 REFRESH ...............................................46
+ 3.4.7 COUNTER ...............................................48
+ 3.4.8 DECLINECOUNTER ........................................49
+ 3.5 METHODS FOR VJOURNAL COMPONENTS ...........................50
+ 3.5.1 PUBLISH ...............................................51
+ 3.5.2 ADD ...................................................52
+ 3.5.3 CANCEL ................................................53
+ 3.6 STATUS REPLIES ............................................55
+ 3.7 IMPLEMENTATION CONSIDERATIONS .............................57
+ 3.7.1 Working With Recurrence Instances .....................57
+ 3.7.2 Attendee Property Considerations ......................58
+ 3.7.3 X-Tokens ..............................................59
+ 4 EXAMPLES......................................................59
+ 4.1 PUBLISHED EVENT EXAMPLES ..................................59
+ 4.1.1 A Minimal Published Event .............................60
+ 4.1.2 Changing A Published Event ............................60
+ 4.1.3 Canceling A Published Event ...........................61
+ 4.1.4 A Rich Published Event ................................62
+ 4.1.5 Anniversaries or Events attached to entire days .......63
+ 4.2 GROUP EVENT EXAMPLES ......................................63
+ 4.2.1 A Group Event Request .................................64
+ 4.2.2 Reply To A Group Event Request ........................65
+ 4.2.3 Update An Event .......................................65
+ 4.2.4 Countering an Event Proposal ..........................66
+ 4.2.5 Delegating an Event ...................................68
+ 4.2.6 Delegate Accepts the Meeting ..........................70
+ 4.2.7 Delegate Declines the Meeting .........................71
+ 4.2.8 Forwarding an Event Request ...........................72
+ 4.2.9 Cancel A Group Event ..................................72
+ 4.2.10 Removing Attendees ...................................74
+ 4.2.11 Replacing the Organizer ..............................75
+ 4.3 BUSY TIME EXAMPLES ........................................76
+ 4.3.1 Request Busy Time .....................................77
+ 4.3.2 Reply To A Busy Time Request ..........................77
+ 4.4 RECURRING EVENT AND TIME ZONE EXAMPLES ....................78
+ 4.4.1 A Recurring Event Spanning Time Zones .................78
+ 4.4.2 Modify A Recurring Instance ...........................79
+ 4.4.3 Cancel an Instance ....................................81
+
+
+
+Silverberg, et. al. Standards Track [Page 3]
+
+RFC 2446 iTIP November 1998
+
+
+ 4.4.4 Cancel Recurring Event ................................81
+ 4.4.5 Change All Future Instances ...........................82
+ 4.4.6 Add A New Instance To A Recurring Event ...............82
+ 4.4.7 Add A New Series of Instances To A Recurring Event ....83
+ 4.4.8 Counter An Instance Of A Recurring Event ..............87
+ 4.4.9 Error Reply To A Request ..............................88
+ 4.5 GROUP TO-DO EXAMPLES ......................................89
+ 4.5.1 A VTODO Request .......................................90
+ 4.5.2 A VTODO Reply .........................................90
+ 4.5.3 A VTODO Request for Updated Status ....................91
+ 4.5.4 A Reply: Percent-Complete .............................91
+ 4.5.5 A Reply: Completed ....................................92
+ 4.5.6 An Updated VTODO Request ..............................92
+ 4.5.7 Recurring VTODOs ......................................92
+ 4.5.7.1 Request for a Recurring VTODO......................93
+ 4.5.7.2 Calculating due dates in recurring VTODOs..........93
+ 4.5.7.3 Replying to an instance of a recurring VTODO.......93
+ 4.6 JOURNAL EXAMPLES ..........................................94
+ 4.7 OTHER EXAMPLES ............................................94
+ 4.7.1 Event Refresh .........................................94
+ 4.7.2 Bad RECURRENCE-ID .....................................95
+ 5 APPLICATION PROTOCOL FALLBACKS................................97
+ 5.1 PARTIAL IMPLEMENTATION ....................................97
+ 5.1.1 Event-Related Fallbacks ...............................97
+ 5.1.2 Free/Busy-Related Fallbacks ...........................99
+ 5.1.3 To-Do-Related Fallbacks ...............................99
+ 5.1.4 Journal-Related Fallbacks ............................101
+ 5.2 LATENCY ISSUES ...........................................102
+ 5.2.1 Cancellation of an Unknown Calendar Component. .......102
+ 5.2.2 Unexpected Reply from an Unknown Delegate ............103
+ 5.3 SEQUENCE NUMBER ..........................................103
+ 6 SECURITY CONSIDERATIONS......................................103
+ 6.1 SECURITY THREATS .........................................103
+ 6.1.1 Spoofing the "Organizer" .............................103
+ 6.1.2 Spoofing the "Attendee" ..............................103
+ 6.1.3 Unauthorized Replacement of the Organizer ............104
+ 6.1.4 Eavesdropping ........................................104
+ 6.1.5 Flooding a Calendar ..................................104
+ 6.1.6 Procedural Alarms ....................................104
+ 6.1.7 Unauthorized REFRESH Requests ........................104
+ 6.2 RECOMMENDATIONS ..........................................104
+ 6.2.1 Use of [RFC-1847] to secure iTIP transactions ........105
+ 6.2.2 Implementation Controls ..............................105
+ 7 ACKNOWLEDGMENTS..............................................106
+ 8 BIBLIOGRAPHY.................................................106
+ 9 AUTHORS' ADDRESSES...........................................107
+ 10 FULL COPYRIGHT STATEMENT....................................109
+
+
+
+
+Silverberg, et. al. Standards Track [Page 4]
+
+RFC 2446 iTIP November 1998
+
+
+1 Introduction
+
+ This document specifies how calendaring systems use iCalendar objects
+ to interoperate with other calendar systems. In particular, it
+ specifies how to schedule events, to-dos, or daily journal entries.
+ It further specifies how to search for available busy time
+ information. It does so in a general way so as to allow multiple
+ methods of communication between systems. Subsequent documents
+ specify transport bindings between systems that use this protocol.
+
+ This protocol is based on messages sent from an originator to one or
+ more recipients. For certain types of messages, a recipient may
+ reply, in order to update their status and may also return
+ transaction/request status information. The protocol supports the
+ ability for the message originator to modify or cancel the original
+ message. The protocol also supports the ability for recipients to
+ suggest changes to the originator of a message. The elements of the
+ protocol also define the user roles for its transactions.
+
+1.1 Formatting Conventions
+
+ In order to refer to elements of the calendaring and scheduling
+ model, core object or interoperability protocol defined in [iCAL] and
+ [iTIP] several formatting conventions have been utilized.
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC-2119].
+
+ Calendaring and scheduling roles are referred to in quoted-strings of
+ text with the first character of each word in upper case. For
+ example, "Organizer" refers to a role of a "Calendar User" (CU)
+ within the scheduling protocol defined by [iTIP]. Calendar components
+ defined by [iCAL] are referred to with capitalized, quoted-strings of
+ text. All calendar components start with the letter "V". For example,
+ "VEVENT" refers to the event calendar component, "VTODO" refers to
+ the to-do calendar component and "VJOURNAL" refers to the daily
+ journal calendar component. Scheduling methods defined by [iTIP] are
+ referred to with capitalized, quoted-strings of text. For example,
+ "REQUEST" refers to the method for requesting a scheduling calendar
+ component be created or modified, "REPLY" refers to the method a
+ recipient of a request uses to update their status with the
+ "Organizer" of the calendar component.
+
+ Properties defined by [iCAL] are referred to with capitalized,
+ quoted-strings of text, followed by the word "property". For example,
+ "ATTENDEE" property refers to the iCalendar property used to convey
+ the calendar address of a "Calendar User". Property parameters
+
+
+
+Silverberg, et. al. Standards Track [Page 5]
+
+RFC 2446 iTIP November 1998
+
+
+ defined by this memo are referred to with lower case, quoted-strings
+ of text, followed by the word "parameter". For example, "value"
+ parameter refers to the iCalendar property parameter used to override
+ the default data type for a property value. Enumerated values defined
+ by this memo are referred to with capitalized text, either alone or
+ followed by the word "value".
+
+ In tables, the quoted-string text is specified without quotes in
+ order to minimize the table length.
+
+1.2 Related Documents
+
+ Implementers will need to be familiar with several other memos that,
+ along with this one, describe the Internet calendaring and scheduling
+ standards. This document, [iTIP], specifies an interoperability
+ protocol for scheduling between different implementations. The
+ related documents are:
+
+ [iCAL] - specifies the objects, data types, properties and
+ property parameters used in the protocols, along with the
+ methods for representing and encoding them;
+
+ [iMIP] specifies an Internet email binding for [iTIP].
+
+ This memo does not attempt to repeat the specification of concepts or
+ definitions from these other memos. Where possible, references are
+ made to the memo that provides for the specification of these
+ concepts or definitions.
+
+1.3 ITIP Roles and Transactions
+
+ ITIP defines methods for exchanging [iCAL] objects for the purposes
+ of group calendaring and scheduling between "Calendar Users" (CUs).
+ CUs take on one of two roles in iTIP. The CU who initiates an
+ exchange takes on the role of "Organizer". For example, the CU who
+ proposes a group meeting is the "Organizer". The CUs asked to
+ participate in the group meeting by the "Organizer" take on the role
+ of "Attendee". Note that "role" is also a descriptive parameter to
+ the _ATTENDEE_ property. Its use is to convey descriptive context to
+ an "Attendee" such as "chair", "req-participant" or "non-participant"
+ and has nothing to do with the calendaring workflow.
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 6]
+
+RFC 2446 iTIP November 1998
+
+
+ The ITIP methods are listed below and their usage and semantics are
+ defined in section 3 of this document.
+
+ +================+==================================================+
+ | Method | Description |
+ |================+==================================================|
+ | PUBLISH | Used to publish a calendar entry to one or more |
+ | | Calendar Users. There is no interactivity |
+ | | between the publisher and any other calendar |
+ | | user. An example might include a baseball team |
+ | | publishing its schedule to the public. |
+ | | |
+ | REQUEST | Used to schedule a calendar entry with other |
+ | | Calendar Users. Requests are interactive in that |
+ | | they require the receiver to respond using |
+ | | the Reply methods. Meeting Requests, Busy |
+ | | Time requests and the assignment of VTODOs to |
+ | | other Calendar Users are all examples. |
+ | | Requests are also used by the "Organizer" to |
+ | | update the status of a calendar entry. |
+ | | |
+ | REPLY | A Reply is used in response to a Request to |
+ | | convey "Attendee" status to the "Organizer". |
+ | | Replies are commonly used to respond to meeting |
+ | | and task requests. |
+ | | |
+ | ADD | Add one or more instances to an existing |
+ | | VEVENT, VTODO, or VJOURNAL. |
+ | | |
+ | CANCEL | Cancel one or more instances of an existing |
+ | | VEVENT, VTODO, or VJOURNAL. |
+ | | |
+ | REFRESH | The Refresh method is used by an "Attendee" to |
+ | | request the latest version of a calendar entry. |
+ | | |
+ | COUNTER | The Counter method is used by an "Attendee" to |
+ | | negotiate a change in the calendar entry. |
+ | | Examples include the request to change a |
+ | | proposed Event time or change the due date for a |
+ | | VTODO. |
+ | | |
+ | DECLINE- | Used by the "Organizer" to decline the proposed |
+ | COUNTER | counter-proprosal. |
+ +================+==================================================+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 7]
+
+RFC 2446 iTIP November 1998
+
+
+ Group scheduling in iTIP is accomplished using the set of "request"
+ and "response" methods described above. The following table shows the
+ methods broken down by who can send them.
+
+ +================+==================================================+
+ | Originator | Methods |
+ |================+==================================================|
+ | Organizer | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER |
+ | | |
+ | Attendee | REPLY, REFRESH, COUNTER |
+ | | REQUEST only when delegating |
+ +================+==================================================+
+
+ Note that for some calendar component types, the allowable methods
+ are a subset of the above set.
+
+2 Interoperability Models
+
+ There are two distinct protocols relevant to interoperability: an
+ "Application Protocol" and a "Transport Protocol". The Application
+ Protocol defines the content of the iCalendar objects sent between
+ sender and receiver to accomplish the scheduling transactions listed
+ above. The Transport Protocol defines how the iCalendar objects are
+ sent between the sender and receiver. This document focuses on the
+ Application Protocol. Binding documents such as [iMIP] focus on the
+ Transport Protocol.
+
+ The connection between Sender and Receiver in the diagram below
+ refers to the Application Protocol. The iCalendar objects passed from
+ the Sender to the Receiver are presented in Section 3, Application
+ Protocol Elements.
+
+ +----------+ +----------+
+ | | iTIP | |
+ | Sender |<-------------------->| Receiver |
+ | | | |
+ +----------+ +----------+
+
+ There are several variations of this diagram in which the Sender and
+ Receiver take on various roles of a "Calendar User Agent" (CUA) or a
+ "Calendar Service" (CS).
+
+ The architecture of iTIP is depicted in the diagram below. An
+ application written to this specification may work with bindings for
+ the store-and-forward transport, the real time transport, or both.
+ Also note that iTIP could be bound to other transports.
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 8]
+
+RFC 2446 iTIP November 1998
+
+
+ +------------------------------------------+
+ | iTIP |
+ +------------------------------------------+
+ |Real-time | Store-and-Fwd | Other |
+ |Transport | Transport | Transports... |
+ +------------------------------------------+
+
+2.1 Application Protocol
+
+ In the iTIP model, a calendar entry is created and managed by an
+ "Organizer". The "Organizer" interacts with other CUs by sending one
+ or more of the iTIP messages listed above. "Attendees" use the
+ "REPLY" method to communicate their status. "Attendees" do not make
+ direct changes to the master calendar entry. They can, however, use
+ the "COUNTER" method to suggest changes to the "Organizer". In any
+ case, the "Organizer" has complete control over the master calendar
+ entry.
+
+2.1.1 Calendar Entry State
+
+ There are two distinct states relevant to calendar entries: the
+ overall state of the entry and the state associated with an
+ "Attendee" to that entry.
+
+ The state of an entry is defined by the "STATUS" property and is
+ controlled by the "Organizer." There is no default value for the
+ "STATUS" property. The "Organizer" sets the "STATUS" property to the
+ appropriate value for each calendar entry.
+
+ The state of a particular "Attendee" relative to an entry is defined
+ by the "partstat" parameter in the "ATTENDEE" property for each
+ "Attendee". When an "Organizer" issues the initial entry, "Attendee"
+ status is unknown. The "Organizer" specifies this by setting the
+ "partstat" parameter to "NEEDS-ACTION". Each "Attendee" modifies
+ their "ATTENDEE" property "partstat" parameter to an appropriate
+ value as part of a "REPLY" message sent back to the "Organizer".
+
+2.1.2 Delegation
+
+ Delegation is defined as the process by which an "Attendee" grants
+ another CU (or several CUs) the right to attend on their behalf. The
+ "Organizer" is made aware of this change because the delegating
+ "Attendee" informs the "Organizer". These steps are detailed in the
+ REQUEST method section.
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 9]
+
+RFC 2446 iTIP November 1998
+
+
+2.1.3 Acting on Behalf of other Calendar Users
+
+ In many organizations one user will act on behalf of another to
+ organize and/or respond to meeting requests. ITIP provides two
+ mechanisms that support these activities.
+
+ First, the "Organizer" is treated as a special entity, separate from
+ "Attendees". All responses from "Attendees" flow to the "Organizer",
+ making it easy to separate a calendar user organizing a meeting from
+ calendar users attending the meeting. Additionally, iCalendar
+ provides descriptive roles for each "Attendee". For instance, a role
+ of "chair" may be ascribed to one or more "Attendees". The "chair"
+ and the "Organizer" may or may not be the same calendar user. This
+ maps well to scenarios where an assistant may manage meeting
+ logistics for another individual who chairs a meeting.
+
+ Second, a "sent-by" parameter may be specified in either the
+ "Organizer" or "Attendee" properties. When specified, the "sent-by"
+ parameter indicates that the responding CU acted on behalf of the
+ specified "Attendee" or "Organizer".
+
+2.1.4 Component Revisions
+
+ The "SEQUENCE" property is used by the "Organizer" to indicate
+ revisions to the calendar component. The rules for incrementing the
+ "SEQUENCE" number are defined in [iCAL]. For clarity, these rules are
+ paraphrased here in terms of how they are applied in [iTIP]. For a
+ given "UID" in a calendar component:
+
+ . For the "PUBLISH" and "REQUEST" methods, the "SEQUENCE" property
+ value is incremented according to the rules defined in [iCAL].
+
+ . The "SEQUENCE" property value MUST be incremented each time the
+ "Organizer" uses the "ADD" or "CANCEL" methods.
+
+ . The "SEQUENCE" property value MUST NOT be incremented when using
+ "REPLY", "REFRESH", "COUNTER", "DECLINECOUNTER", or when sending a
+ delegation "REQUEST".
+
+ In some circumstances the "Organizer" may not have received responses
+ to the final revision sent out. In this situation, the "Organizer"
+ may wish to send an update "REQUEST", and set "RSVP=TRUE" for all
+ "Attendees", so that current responses can be collected.
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 10]
+
+RFC 2446 iTIP November 1998
+
+
+ The value of the "SEQUENCE" property contained in a response from an
+ "Attendee" may not always match the "Organizer's" revision.
+ Implementations may choose to have the CUA indicate to the CU that
+ the response is to an entry that has been revised and allow the CU to
+ decide whether or not to accept the response.
+
+2.1.5 Message Sequencing
+
+ CUAs that handle the [iTIP] application protocol must often correlate
+ a component in a calendar store with a component received in the
+ [iTIP] message. For example, an event may be updated with a later
+ revision of the same event. To accomplish this, a CUA must correlate
+ the version of the event already in its calendar store with the
+ version sent in the [iTIP] message. In addition to this correlation,
+ there are several factors that can cause [iTIP] messages to arrive in
+ an unexpected order. That is, an "Organizer" could receive a reply
+ to an earlier revision of a component AFTER receiving a reply to a
+ later revision.
+
+ To maximize interoperability and to handle messages that arrive in an
+ unexpected order, use the following rules:
+
+ 1. The primary key for referencing a particular iCalendar component
+ is the "UID" property value. To reference an instance of a
+ recurring component, the primary key is composed of the "UID" and
+ the "RECURRENCE-ID" properties.
+
+ 2. The secondary key for referencing a component is the "SEQUENCE"
+ property value. For components where the "UID" is the same, the
+ component with the highest numeric value for the "SEQUENCE"
+ property obsoletes all other revisions of the component with
+ lower values.
+
+ 3. "Attendees" send "REPLY" messages to the "Organizer". For
+ replies where the "UID" property value is the same, the value of
+ the "SEQUENCE" property indicates the revision of the component
+ to which the "Attendee" is replying. The reply with the highest
+ numeric value for the "SEQUENCE" property obsoletes all other
+ replies with lower values.
+
+ 4. In situations where the "UID" and "SEQUENCE" properties match,
+ the "DTSTAMP" property is used as the tie-breaker. The component
+ with the latest "DTSTAMP" overrides all others. Similarly, for
+ "Attendee" responses where the "UID" property values match and
+ the "SEQUENCE" property values match, the response with the
+ latest "DTSTAMP" overrides all others.
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 11]
+
+RFC 2446 iTIP November 1998
+
+
+ Hence, CUAs must persist the following component properties: "UID",
+ "RECURRENCE-ID", "SEQUENCE", and "DTSTAMP". Furthermore, for each
+ "ATTENDEE" property of a component CUAs must persist the "SEQUENCE"
+ and "DTSTAMP" property values associated with the "Attendee's"
+ response.
+
+3 Application Protocol Elements
+
+ ITIP messages are "text/calendar" MIME entities that contain
+ calendaring and scheduling information. The particular type of [iCAL]
+ message is referred to as the "method type". Each method type is
+ identified by a "METHOD" property specified as part of the
+ "text/calendar" content type. The table below shows various
+ combinations of calendar components and the method types that this
+ memo supports.
+
+ +=================================================+
+ | | VEVENT | VTODO | VJOURNAL | VFREEBUSY |
+ |=================================================|
+ |Publish | Yes | Yes | Yes | Yes |
+ |Request | Yes | Yes | No | Yes |
+ |Refresh | Yes | Yes | No | No |
+ |Cancel | Yes | Yes | Yes | No |
+ |Add | Yes | Yes | Yes | No |
+ |Reply | Yes | Yes | No | Yes |
+ |Counter | Yes | Yes | No | No |
+ |Decline- | | | | |
+ |Counter | Yes | Yes | No | No |
+ +=================================================+
+
+ Each method type is defined in terms of its associated components and
+ properties. Some components and properties are required, some are
+ optional and others are excluded. The restrictions are expressed in
+ this document using a simple "restriction table". The first column
+ indicates the name of a component or property. Properties of the
+ iCalendar object are not indented. Properties of a component are
+ indented. The second column contains "MUST" if the component or
+ property must be present, "MAY" if the component or property is
+ optional, and "NOT" if the component or property must not be present.
+ Entries in the second column sometimes contain comments for further
+ clarification.
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 12]
+
+RFC 2446 iTIP November 1998
+
+
+3.1 Common Component Restriction Tables
+
+ The restriction table below applies to properties of the iCalendar
+ object. That is, the properties at the outermost scope. The presence
+ column uses the following values to assert whether a property is
+ required, is optional and the number of times it may appear in the
+ iCalendar object.
+
+ Presence Value Description
+ --------------------------------------------------------------
+ 1 One instance MUST be present
+ 1+ At least one instance MUST be present
+ 0 Instances of this property Must NOT be present
+ 0+ Multiple instances MAY be present
+ 0 or 1 Up to 1 instance of this property MAY be present
+ ---------------------------------------------------------------
+
+ The tables also call out "X-PROPERTY" and "X-COMPONENT" to show
+ where vendor-specific properties and components can appear. The
+ tables do not lay out the restrictions of property parameters. Those
+ restrictions are defined in [iCAL].
+
+ Component/Property Presence
+ ------------------- ----------------------------------------------
+ CALSCALE 0 or 1
+ PRODID 1
+ VERSION 1 Value MUST be "2.0"
+ X-PROPERTY 0+
+
+
+ DateTime values MAY refer to a "VTIMEZONE" component. The property
+ restrictions in the table below apply to any "VTIMEZONE" component in
+ an ITIP message.
+
+ Component/Property Presence
+ ------------------- ----------------------------------------------
+ VTIMEZONE 0+ MUST be present if any date/time refers
+ to timezone
+ DAYLIGHT 0+ MUST be one or more of either STANDARD or
+ DAYLIGHT
+ COMMENT 0 or 1
+ DTSTART 1 MUST be local time format
+ RDATE 0+ if present RRULE MUST NOT be present
+ RRULE 0+ if present RDATE MUST NOT be present
+ TZNAME 0 or 1
+ TZOFFSET 1
+ TZOFFSETFROM 1
+ TZOFFSETTO 1
+
+
+
+Silverberg, et. al. Standards Track [Page 13]
+
+RFC 2446 iTIP November 1998
+
+
+ X-PROPERTY 0+
+ LAST-MODIFIED 0 or 1
+ STANDARD 0+ MUST be one or more of either STANDARD or
+ DAYLIGHT
+ COMMENT 0 or 1
+ DTSTART 1 MUST be local time format
+ RDATE 0+ if present RRULE MUST NOT be present
+ RRULE 0+ if present RDATE MUST NOT be present
+ TZNAME 0 or 1
+ TZOFFSETFROM 1
+ TZOFFSETTO 1
+ X-PROPERTY 0+
+ TZID 1
+ TZURL 0 or 1
+ X-PROPERTY 0+
+
+ The property restrictions in the table below apply to any "VALARM"
+ component in an ITIP message.
+
+ Component/Property Presence
+ ------------------- ----------------------------------------------
+ VALARM 0+
+ ACTION 1
+ ATTACH 0+
+ DESCRIPTION 0 or 1
+ DURATION 0 or 1 if present REPEAT MUST be present
+ REPEAT 0 or 1 if present DURATION MUST be present
+ SUMMARY 0 or 1
+ TRIGGER 1
+ X-PROPERTY 0+
+
+3.2 Methods for VEVENT Calendar Components
+
+ This section defines the property set restrictions for the method
+ types that are applicable to the "VEVENT" calendar component. Each
+ method is defined using a table that clarifies the property
+ constraints that define the particular method.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 14]
+
+RFC 2446 iTIP November 1998
+
+
+ The following summarizes the methods that are defined for the
+ "VEVENT" calendar component.
+
+ +================+==================================================+
+ | Method | Description |
+ |================+==================================================|
+ | PUBLISH | Post notification of an event. Used primarily as |
+ | | a method of advertising the existence of an |
+ | | event. |
+ | | |
+ | REQUEST | Make a request for an event. This is an explicit |
+ | | invitation to one or more "Attendees". Event |
+ | | Requests are also used to update or change an |
+ | | existing event. Clients that cannot handle |
+ | | REQUEST may degrade the event to view it as an |
+ | | PUBLISH. |
+ | | |
+ | REPLY | Reply to an event request. Clients may set their |
+ | | status ("partstat") to ACCEPTED, DECLINED, |
+ | | TENTATIVE, or DELEGATED. |
+ | | |
+ | ADD | Add one or more instances to an existing event. |
+ | | |
+ | CANCEL | Cancel one or more instances of an existing |
+ | | event. |
+ | | |
+ | REFRESH | A request is sent to an "Organizer" by an |
+ | | "Attendee" asking for the latest version of an |
+ | | event to be resent to the requester. |
+ | | |
+ | COUNTER | Counter a REQUEST with an alternative proposal, |
+ | | Sent by an "Attendee" to the "Organizer". |
+ | | |
+ | DECLINECOUNTER | Decline a counter proposal. Sent to an |
+ | | "Attendee" by the "Organizer". |
+ +================+==================================================+
+
+3.2.1 PUBLISH
+
+ The "PUBLISH" method in a "VEVENT" calendar component is an
+ unsolicited posting of an iCalendar object. Any CU may add published
+ components to their calendar. The "Organizer" MUST be present in a
+ published iCalendar component. "Attendees" MUST NOT be present. Its
+ expected usage is for encapsulating an arbitrary event as an
+ iCalendar object. The "Organizer" may subsequently update (with
+ another "PUBLISH" method), add instances to (with an "ADD" method),
+ or cancel (with a "CANCEL" method) a previously published "VEVENT"
+ calendar component.
+
+
+
+Silverberg, et. al. Standards Track [Page 15]
+
+RFC 2446 iTIP November 1998
+
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST equal "PUBLISH"
+VEVENT 1+
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1
+ SUMMARY 1 Can be null.
+ UID 1
+ RECURRENCE-ID 0 or 1 only if referring to an instance of a
+ recurring calendar component. Otherwise
+ it MUST NOT be present.
+ SEQUENCE 0 or 1 MUST be present if value is greater than
+ 0, MAY be present if 0
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of
+ values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1 Can be null
+ DTEND 0 or 1 if present DURATION MUST NOT be present
+ DURATION 0 or 1 if present DTEND MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RELATED-TO 0+
+ RESOURCES 0 or 1 This property MAY contain a list of values
+ RRULE 0+
+ STATUS 0 or 1 MAY be one of TENTATIVE/CONFIRMED/CANCELLED
+ TRANSP 0 or 1
+ URL 0 or 1
+ X-PROPERTY 0+
+
+ ATTENDEE 0
+ REQUEST-STATUS 0
+
+VALARM 0+
+VFREEBUSY 0
+VJOURNAL 0
+
+
+
+Silverberg, et. al. Standards Track [Page 16]
+
+RFC 2446 iTIP November 1998
+
+
+VTODO 0
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+3.2.2 REQUEST
+
+ The "REQUEST" method in a "VEVENT" component provides the following
+ scheduling functions:
+
+ . Invite "Attendees" to an event;
+ . Reschedule an existing event;
+ . Response to a REFRESH request;
+ . Update the details of an existing event, without rescheduling it;
+ . Update the status of "Attendees" of an existing event, without
+ rescheduling it;
+ . Reconfirm an existing event, without rescheduling it;
+ . Forward a "VEVENT" to another uninvited CU.
+ . For an existing "VEVENT" calendar component, delegate the role of
+ "Attendee" to another CU;
+ . For an existing "VEVENT" calendar component, changing the role of
+ "Organizer" to another CU.
+
+ The "Organizer" originates the "REQUEST". The recipients of the
+ "REQUEST" method are the CUs invited to the event, the "Attendees".
+ "Attendees" use the "REPLY" method to convey attendance status to the
+ "Organizer".
+
+ The "UID" and "SEQUENCE" properties are used to distinguish the
+ various uses of the "REQUEST" method. If the "UID" property value in
+ the "REQUEST" is not found on the recipient's calendar, then the
+ "REQUEST" is for a new "VEVENT" calendar component. If the "UID"
+ property value is found on the recipient's calendar, then the
+ "REQUEST" is for a rescheduling, an update, or a reconfirm of the
+ "VEVENT" calendar component.
+
+ For the "REQUEST" method, multiple "VEVENT" components in a single
+ iCalendar object are only permitted when for components with the same
+ "UID" property. That is, a series of recurring events may have
+ instance-specific information. In this case, multiple "VEVENT"
+ components are needed to express the entire series.
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 17]
+
+RFC 2446 iTIP November 1998
+
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+-----------------------------------------------------------------
+METHOD 1 MUST be "REQUEST"
+VEVENT 1+ All components MUST have the same UID
+ ATTENDEE 1+
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1
+ SEQUENCE 0 or 1 MUST be present if value is greater than 0,
+ MAY be present if 0
+ SUMMARY 1 Can be null
+ UID 1
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1 Can be null
+ DTEND 0 or 1 if present DURATION MUST NOT be present
+ DURATION 0 or 1 if present DTEND MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 only if referring to an instance of a
+ recurring calendar component. Otherwise it
+ MUST NOT be present.
+ RELATED-TO 0+
+ REQUEST-STATUS 0+
+ RESOURCES 0 or 1 This property MAY contain a list of values
+ RRULE 0+
+ STATUS 0 or 1 MAY be one of TENTATIVE/CONFIRMED
+ TRANSP 0 or 1
+ URL 0 or 1
+ X-PROPERTY 0+
+
+VALARM 0+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 18]
+
+RFC 2446 iTIP November 1998
+
+
+VFREEBUSY 0
+VJOURNAL 0
+VTODO 0
+
+3.2.2.1 Rescheduling an Event
+
+ The "REQUEST" method may be used to reschedule an event. A
+ rescheduled event involves a change to the existing event in terms of
+ its time or recurrence intervals and possibly the location or
+ description. If the recipient CUA of a "REQUEST" method finds that
+ the "UID" property value already exists on the calendar, but that the
+ "SEQUENCE" (or "DTSTAMP") property value in the "REQUEST" method is
+ greater than the value for the existing event, then the "REQUEST"
+ method describes a rescheduling of the event.
+
+3.2.2.2 Updating or Reconfirmation of an Event
+
+ The "REQUEST" method may be used to update or reconfirm an event. An
+ update to an existing event does not involve changes to the time or
+ recurrence intervals, and might not involve a change to the location
+ or description for the event. If the recipient CUA of a "REQUEST"
+ method finds that the "UID" property value already exists on the
+ calendar and that the "SEQUENCE" property value in the "REQUEST" is
+ the same as the value for the existing event, then the "REQUEST"
+ method describes an update of the event details, but no rescheduling
+ of the event.
+
+ The update "REQUEST" method is the appropriate response to a
+ "REFRESH" method sent from an "Attendee" to the "Organizer" of an
+ event.
+
+ The "Organizer" of an event may also send unsolicited "REQUEST"
+ methods. The unsolicited "REQUEST" methods may be used to update the
+ details of the event without rescheduling it, to update the
+ "partstat" parameter of "Attendees", or to reconfirm the event.
+
+3.2.2.3 Delegating an Event to another CU
+
+ Some calendar and scheduling systems allow "Attendees" to delegate
+ their presence at an event to another calendar user. ITIP supports
+ this concept using the following workflow. Any "Attendee" may
+ delegate their right to participate in a calendar VEVENT to another
+ CU. The implication is that the delegate participates in lieu of the
+ original "Attendee"; NOT in addition to the "Attendee". The delegator
+ MUST notify the "Organizer" of this action using the steps outlined
+ below. Implementations may support or restrict delegation as they
+ see fit. For instance, some implementations may restrict a delegate
+ from delegating a "REQUEST" to another CU.
+
+
+
+Silverberg, et. al. Standards Track [Page 19]
+
+RFC 2446 iTIP November 1998
+
+
+ The "Delegator" of an event forwards the existing "REQUEST" to the
+ "Delegate". The "REQUEST" method MUST include an "ATTENDEE" property
+ with the calendar address of the "Delegate". The "Delegator" MUST
+ also send a "REPLY" method to the "Organizer" with the "Delegator's"
+ "ATTENDEE" property "partstat" parameter value set to "delegated". In
+ addition, the "delegated-to" parameter MUST be included with the
+ calendar address of the "Delegate".
+
+ In response to the request, the "Delegate" MUST send a "REPLY" method
+ to the "Organizer" and optionally, to the "Delegator". The "REPLY"
+ method " SHOULD include the "ATTENDEE" property with the "delegated-
+ from" parameter value of the "Delegator's" calendar address.
+
+ The "Delegator" may continue to receive updates to the event even
+ though they will not be attending. This is accomplished by the
+ "Delegator" setting their "role" attribute to " NON-PARTICIPANT" in
+ the "REPLY" to the "Organizer"
+
+3.2.2.4 Changing the Organizer
+
+ The situation may arise where the "Organizer" of a VEVENT is no
+ longer able to perform the "Organizer" role and abdicates without
+ passing on the "Organizer" role to someone else. When this occurs the
+ "Attendees" of the VEVENT may use out-of-band mechanisms to
+ communicate the situation and agree upon a new "Organizer". The new
+ "Organizer" should then send out a new "REQUEST" with a modified
+ version of the VEVENT in which the "SEQUENCE" number has been
+ incremented and value of the "ORGANIZER" property has been changed to
+ the calendar address of the new "Organizer".
+
+3.2.2.5 Sending on Behalf of the Organizer
+
+ There are a number of scenarios that support the need for a calendar
+ user to act on behalf of the "Organizer" without explicit role
+ changing. This might be the case if the CU designated as "Organizer"
+ was sick or unable to perform duties associated with that function.
+ In these cases iTIP supports the notion of one CU acting on behalf of
+ another. Using the "sent-by" parameter, a calendar user could send an
+ updated "VEVENT" REQUEST. In the case where one CU sends on behalf of
+ another CU, the "Attendee" responses are still directed back towards
+ the CU designated as "Organizer".
+
+3.2.2.6 Forwarding to An Uninvited CU
+
+ An "Attendee" invited to an event may invite another uninvited CU to
+ the event. The invited "Attendee" accomplishes this by forwarding the
+ original "REQUEST" method to the uninvited CU. The "Organizer"
+ decides whether or not the uninvited CU is added to the attendee
+
+
+
+Silverberg, et. al. Standards Track [Page 20]
+
+RFC 2446 iTIP November 1998
+
+
+ list. If the "Organizer" decides not to add the uninvited CU no
+ further action is required, however the "Organizer" MAY send the
+ uninvited CU a "CANCEL" message. If the "Organizer" decides to add
+ an uninvited CU, a new "ATTENDEE" property is added for the uninvited
+ CU with its property parameters set as the "Organizer" deems
+ appropriate. When forwarding a "REQUEST" to another CU, the
+ forwarding "Attendee" MUST NOT make changes to the VEVENT property
+ set.
+
+3.2.2.7 Updating Attendee Status
+
+ The "Organizer" of an event may also request updated status from one
+ or more "Attendees. The "Organizer" sends a "REQUEST" method to the
+ "Attendee" and sets the "ATTENDEE;RSVP=TRUE" property parameter. The
+ "SEQUENCE" property for the event is not changed from its previous
+ value. A recipient will determine that the only change in the
+ "REQUEST" is that their "RSVP" property parameter indicates a request
+ for updated status. The recipient SHOULD respond with a "REPLY"
+ method indicating their current status with respect to the "REQUEST".
+
+3.2.3 REPLY
+
+ The "REPLY" method in a "VEVENT" calendar component is used to
+ respond (e.g., accept or decline) to a "REQUEST" or to reply to a
+ delegation "REQUEST". When used to provide a delegation response, the
+ "Delegator" SHOULD include the calendar address of the "Delegate" on
+ the "delegated-to" property parameter of the "Delegator's" "ATTENDEE"
+ property. The "Delegate" SHOULD include the calendar address of the
+ "Delegator" on the "delegated-from" property parameter of the
+ "Delegate's" "ATTENDEE" property.
+
+ The "REPLY" method may also be used to respond to an unsuccessful
+ "REQUEST" method. Depending on the value of the "REQUEST-STATUS"
+ property no scheduling action may have been performed.
+
+ The "Organizer" of an event may receive the "REPLY" method from a CU
+ not in the original "REQUEST". For example, a "REPLY" may be received
+ from a "Delegate" to an event. In addition, the "REPLY" method may be
+ received from an unknown CU (a "Party Crasher"). This uninvited
+ "Attendee" may be accepted, or the "Organizer" may cancel the event
+ for the uninvited "Attendee" by sending a "CANCEL" method to the
+ uninvited "Attendee".
+
+ An "Attendee" can include a message to the "Organizer" using the
+ "COMMENT" property. For example, if the user indicates tentative
+ acceptance and wants to let the "Organizer" know why, the reason can
+ be expressed in the "COMMENT" property value.
+
+
+
+
+Silverberg, et. al. Standards Track [Page 21]
+
+RFC 2446 iTIP November 1998
+
+
+ The "Organizer" may also receive a "REPLY" from one CU on behalf of
+ another. Like the scenario enumerated above for the "Organizer",
+ "Attendees" may have another CU respond on their behalf. This is done
+ using the "sent-by" parameter.
+
+ The optional properties listed in the table below (those listed as
+ "0+" or "0 or 1") MUST NOT be changed from those of the original
+ request. If property changes are desired the COUNTER message must be
+ used.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "REPLY"
+VEVENT 1+ All components MUST have the same UID
+ ATTENDEE 1 MUST be the address of the Attendee
+ replying.
+ DTSTAMP 1
+ ORGANIZER 1
+ RECURRENCE-ID 0 or 1 only if referring to an instance of a
+ recurring calendar component. Otherwise
+ it must NOT be present.
+ UID 1 MUST be the UID of the original REQUEST
+
+ SEQUENCE 0 or 1 MUST if non-zero, MUST be the sequence
+ number of the original REQUEST. MAY be
+ present if 0.
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1
+ DTEND 0 or 1 if present DURATION MUST NOT be present
+ DTSTART 0 or 1
+ DURATION 0 or 1 if present DTEND MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RELATED-TO 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 22]
+
+RFC 2446 iTIP November 1998
+
+
+ RESOURCES 0 or 1 This property MAY contain a list of values
+ REQUEST-STATUS 0+
+ RRULE 0+
+ STATUS 0 or 1
+ SUMMARY 0 or 1
+ TRANSP 0 or 1
+ URL 0 or 1
+ X-PROPERTY 0+
+
+VTIMEZONE 0 or 1 MUST be present if any date/time refers
+ to a timezone
+X-COMPONENT 0+
+
+VALARM 0
+VFREEBUSY 0
+VJOURNAL 0
+VTODO 0
+
+3.2.4 ADD
+
+ The "ADD" method in a "VEVENT" calendar component is used to add one
+ or more instances to an existing "VEVENT". Unlike the "REQUEST"
+ method, when using issuing an "ADD" method, the "Organizer" does not
+ send the full "VEVENT" description; only the new instance(s). The
+ "ADD" method is especially useful if there are instance-specific
+ properties to be preserved in a recurring "VEVENT". For instance, an
+ "Organizer" may have originally scheduled a weekly Thursday meeting.
+ At some point, several instances changed. Location or start time may
+ have changed, or some instances may have unique "DESCRIPTION"
+ properties. The "ADD" method allows the "Organizer" to add new
+ instances to an existing event using a single ITIP message without
+ redefining the entire recurring pattern.
+
+ The "UID" must be that of the existing event. If the "UID" property
+ value in the "ADD" is not found on the recipient's calendar, then the
+ recipient SHOULD send a "REFRESH" to the "Organizer" in order to be
+ updated with the latest version of the "VEVENT". If an "Attendee"
+ implementation does not support the "ADD" method it should respond
+ with a "REQUEST-STATUS" value of 3.14 and ask for a "REFRESH".
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 23]
+
+RFC 2446 iTIP November 1998
+
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "ADD"
+VEVENT 1
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1
+ SEQUENCE 1 MUST be greater than 0
+ SUMMARY 1 Can be null
+ UID 1 MUST match that of the original event
+
+ ATTACH 0+
+ ATTENDEE 0+
+ CATEGORIES 0 or 1 This property MAY contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1 Can be null
+ DTEND 0 or 1 if present DURATION MUST NOT be present
+ DURATION 0 or 1 if present DTEND MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RELATED-TO 0+
+ RESOURCES 0 or 1 This property MAY contain a list of values
+ RRULE 0+
+ STATUS 0 or 1 MAY be one of TENTATIVE/CONFIRMED
+ TRANSP 0 or 1
+ URL 0 or 1
+ X-PROPERTY 0+
+
+ RECURRENCE-ID 0
+ REQUEST-STATUS 0
+
+VALARM 0+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VFREEBUSY 0
+VTODO 0
+VJOURNAL 0
+
+
+
+
+Silverberg, et. al. Standards Track [Page 24]
+
+RFC 2446 iTIP November 1998
+
+
+3.2.5 CANCEL
+
+ The "CANCEL" method in a "VEVENT" calendar component is used to send
+ a cancellation notice of an existing event request to the
+ "Attendees". The message is sent by the "Organizer" of the event. For
+ a recurring event, either the whole event or instances of an event
+ may be cancelled. To cancel the complete range of recurring event,
+ the "UID" property value for the event MUST be specified and a
+ "RECURRENCE-ID" MUST NOT be specified in the "CANCEL" method. In
+ order to cancel an individual instance of the event, the
+ "RECURRENCE-ID" property value for the event MUST be specified in the
+ "CANCEL" method.
+
+ There are two options for canceling a sequence of instances of a
+ recurring "VEVENT" calendar component:
+
+ (a) the "RECURRENCE-ID" property for an instance in the sequence MUST
+ be specified with the "RANGE" property parameter value of
+ THISANDPRIOR (or THISANDFUTURE) to indicate cancellation of the
+ specified "VEVENT" calendar component and all instances before
+ (or after); or
+
+ (b) individual recurrence instances may be cancelled by specifying
+ multiple "RECURRENCE-ID" properties corresponding to the
+ instances to be cancelled.
+
+ When a "VEVENT" is cancelled, the "SEQUENCE" property value MUST be
+ incremented.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "CANCEL"
+
+VEVENT 1+ All must have the same UID
+ ATTENDEE 0+ MUST include all "Attendees" being removed
+ the event. MUST include all "Attendees" if
+ the entire event is cancelled.
+ DTSTAMP 1
+ ORGANIZER 1
+ SEQUENCE 1
+ UID 1 MUST be the UID of the original REQUEST
+
+ COMMENT 0 or 1
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of values
+
+
+
+Silverberg, et. al. Standards Track [Page 25]
+
+RFC 2446 iTIP November 1998
+
+
+ CLASS 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1
+ DTEND 0 or 1 if present DURATION MUST NOT be present
+ DTSTART 0 or 1
+ DURATION 0 or 1 if present DTEND MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 MUST be present if referring to one or
+ more or more recurring instances.
+ Otherwise it MUST NOT be present
+ RELATED-TO 0+
+ RESOURCES 0 or 1
+ RRULE 0+
+ STATUS 0 or 1 MUST be set to CANCELLED. If uninviting
+ specific "Attendees" then MUST NOT be
+ included.
+ SUMMARY 0 or 1
+ TRANSP 0 or 1
+ URL 0 or 1
+ X-PROPERTY 0+
+ REQUEST-STATUS 0
+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VTODO 0
+VJOURNAL 0
+VFREEBUSY 0
+VALARM 0
+
+3.2.6 REFRESH
+
+ The "REFRESH" method in a "VEVENT" calendar component is used by
+ "Attendees" of an existing event to request an updated description
+ from the event "Organizer". The "REFRESH" method must specify the
+ "UID" property of the event to update. A recurrence instance of an
+ event may be requested by specifying the "RECURRENCE-ID" property
+ corresponding to the associated event. The "Organizer" responds with
+ the latest description and version of the event.
+
+
+
+
+Silverberg, et. al. Standards Track [Page 26]
+
+RFC 2446 iTIP November 1998
+
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "REFRESH"
+
+VEVENT 1
+ ATTENDEE 1 MUST be the address of requestor
+ DTSTAMP 1
+ ORGANIZER 1
+ UID 1 MUST be the UID associated with original
+ REQUEST
+ COMMENT 0 or 1
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+ recurring calendar component. Otherwise
+ it must NOT be present.
+ X-PROPERTY 0+
+
+ ATTACH 0
+ CATEGORIES 0
+ CLASS 0
+ CONTACT 0
+ CREATED 0
+ DESCRIPTION 0
+ DTEND 0
+ DTSTART 0
+ DURATION 0
+ EXDATE 0
+ EXRULE 0
+ GEO 0
+ LAST-MODIFIED 0
+ LOCATION 0
+ PRIORITY 0
+ RDATE 0
+ RELATED-TO 0
+ REQUEST-STATUS 0
+ RESOURCES 0
+ RRULE 0
+ SEQUENCE 0
+ STATUS 0
+ SUMMARY 0
+ TRANSP 0
+ URL 0
+
+X-COMPONENT 0+
+
+VTODO 0
+
+
+
+Silverberg, et. al. Standards Track [Page 27]
+
+RFC 2446 iTIP November 1998
+
+
+VJOURNAL 0
+VFREEBUSY 0
+VTIMEZONE 0
+VALARM 0
+
+3.2.7 COUNTER
+
+ The "COUNTER" method for a "VEVENT" calendar component is used by an
+ "Attendee" of an existing event to submit to the "Organizer" a
+ counter proposal to the event description. The "Attendee" sends this
+ message to the "Organizer" of the event.
+
+ The counter proposal is an iCalendar object consisting of a VEVENT
+ calendar component describing the complete description of the
+ alternate event.
+
+ The "Organizer" rejects the counter proposal by sending the
+ "Attendee" a VEVENT "DECLINECOUNTER" method. The "Organizer" accepts
+ the counter proposal by rescheduling the event as described in
+ section 3.2.2.1 Rescheduling an Event.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "COUNTER"
+
+VEVENT 1
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1 MUST be the "Organizer" of the original
+ event
+ SEQUENCE 1 MUST be present if value is greater than 0,
+ MAY be present if 0
+ SUMMARY 1 Can be null
+ UID 1 MUST be the UID associated with the REQUEST
+ being countered
+
+ ATTACH 0+
+ ATTENDEE 0+ Can also be used to propose other
+ "Attendees"
+ CATEGORIES 0 or 1 This property may contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1
+
+
+
+Silverberg, et. al. Standards Track [Page 28]
+
+RFC 2446 iTIP November 1998
+
+
+ DTEND 0 or 1 if present DURATION MUST NOT be present
+ DURATION 0 or 1 if present DTEND MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+ recurring calendar component. Otherwise it
+ MUST NOT be present.
+ RELATED-TO 0+
+ REQUEST-STATUS 0+
+ RESOURCES 0 or 1 This property may contain a list of values
+ RRULE 0+
+ STATUS 0 or 1 Value must be one of CONFIRMED/TENATIVE/
+ CANCELLED
+ TRANSP 0 or 1
+ URL 0 or 1
+ X-PROPERTY 0+
+
+VALARM 0+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VTODO 0
+VJOURNAL 0
+VFREEBUSY 0
+
+3.2.8 DECLINECOUNTER
+
+ The "DECLINECOUNTER" method in a "VEVENT" calendar component is used
+ by the "Organizer" of an event to reject a counter proposal submitted
+ by an "Attendee". The "Organizer" must send the "DECLINECOUNTER"
+ message to the "Attendee" that sent the "COUNTER" method to the
+ "Organizer".
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 29]
+
+RFC 2446 iTIP November 1998
+
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "DECLINECOUNTER"
+
+VEVENT 1
+ DTSTAMP 1
+ ORGANIZER 1
+ UID 1 MUST, same UID specified in original
+ REQUEST and subsequent COUNTER
+ COMMENT 0 or 1
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+ recurring calendar component. Otherwise it
+ MUST NOT be present.
+ REQUEST-STATUS 0+
+ SEQUENCE 0 OR 1 MUST be present if value is greater than 0,
+ MAY be present if 0
+ X-PROPERTY 0+
+ ATTACH 0
+ ATTENDEE 0
+ CATEGORIES 0
+ CLASS 0
+ CONTACT 0
+ CREATED 0
+ DESCRIPTION 0
+ DTEND 0
+ DTSTART 0
+ DURATION 0
+ EXDATE 0
+ EXRULE 0
+ GEO 0
+ LAST-MODIFIED 0
+ LOCATION 0
+ PRIORITY 0
+ RDATE 0
+ RELATED-TO 0
+ RESOURCES 0
+ RRULE 0
+ STATUS 0
+ SUMMARY 0
+ TRANSP 0
+ URL 0
+
+X-COMPONENT 0+
+VTODO 0
+VJOURNAL 0
+VFREEBUSY 0
+VTIMEZONE 0
+VALARM 0
+
+
+
+Silverberg, et. al. Standards Track [Page 30]
+
+RFC 2446 iTIP November 1998
+
+
+3.3 Methods For VFREEBUSY Components
+
+ This section defines the property set for the methods that are
+ applicable to the "VFREEBUSY" calendar component. Each of the methods
+ is defined using a restriction table.
+
+ This document only addresses the transfer of busy time information.
+ Applications desiring free time information MUST infer this from
+ available busy time information.
+
+ The busy time information within the iCalendar object MAY be grouped
+ into more than one "VFREEBUSY" calendar component. This capability
+ allows busy time periods to be grouped according to some common
+ periodicity, such as a calendar week, month, or year. In this case,
+ each "VFREEBUSY" calendar component MUST include the "ATTENDEE",
+ "DTSTART" and "DTEND" properties in order to specify the source of
+ the busy time information and the date and time interval over which
+ the busy time information covers.
+
+ The "FREEBUSY" property value MAY include a list of values, separated
+ by the COMMA character ([US-ASCII] decimal 44). Alternately, multiple
+ busy time periods MAY be specified with multiple instances of the
+ "FREEBUSY" property. Both forms MUST be supported by implementations
+ conforming to this document. Duplicate busy time periods SHOULD NOT
+ be specified in an iCalendar object. However, two different busy time
+ periods MAY overlap.
+
+ "FREEBUSY" properties should be sorted such that their values are in
+ ascending order, based on the start time, and then the end time, with
+ the earliest periods first. For example, today's busy time
+ information should appear after yesterday's busy time information.
+ And the busy time for this half-hour should appear after the busy
+ time for earlier today.
+
+ Since events may span a day boundary, free busy time period may also
+ span a day boundary. Individual "A" requests busy time from
+ individuals "B", "C" and "D". Individual "B" and "C" replies with
+ busy time data to individual "A". Individual "D" does not support
+ busy time requests and does not reply with any data. If the transport
+ binding supports exception messages, then individual "D" returns an
+ "unsupported capability" message to individual "A4.34.3".
+
+ The following summarizes the methods that are defined for the
+ "VFREEBUSY" calendar component.
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 31]
+
+RFC 2446 iTIP November 1998
+
+
+ |================|==================================================|
+ | Method | Description |
+ |================|==================================================|
+ | PUBLISH | Publish unsolicited busy time data. |
+ | REQUEST | Request busy time data. |
+ | REPLY | Reply to a busy time request. |
+ |================|==================================================|
+
+3.3.1 PUBLISH
+
+ The "PUBLISH" method in a "VFREEBUSY" calendar component is used to
+ publish busy time data. The method may be sent from one CU to any
+ other. The purpose of the method is to provide a message for sending
+ unsolicited busy time data. That is, the busy time data is not being
+ sent as a "REPLY" to the receipt of a "REQUEST" method.
+
+ The "ATTENDEE" property must be specified in the busy time
+ information. The value is the CU address of the originator of the
+ busy time information.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "PUBLISH"
+
+VFREEBUSY 1+
+ DTSTAMP 1
+ DTSTART 1 DateTime values must be in UTC
+ DTEND 1 DateTime values must be in UTC
+ FREEBUSY 1+ MUST be BUSYTIME. Multiple instances are
+ allowed. Multiple instances must be sorted
+ in ascending order
+ ORGANIZER 1 MUST contain the address of originator of
+ busy time data.
+
+ COMMENT 0 or 1
+ CONTACT 0+
+ X-PROPERTY 0+
+ URL 0 or 1 Specifies busy time URL
+
+ ATTENDEE 0
+ DURATION 0
+ REQUEST-STATUS 0
+ UID 0
+
+X-COMPONENT 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 32]
+
+RFC 2446 iTIP November 1998
+
+
+VEVENT 0
+VTODO 0
+VJOURNAL 0
+VTIMEZONE 0
+VALARM 0
+
+3.3.2 REQUEST
+
+ The "REQUEST" method in a "VFREEBUSY" calendar component is used to
+ ask a "Calendar User" for their busy time information. The request
+ may be for a busy time information bounded by a specific date and
+ time interval.
+
+ This message only permits requests for busy time information. The
+ message is sent from a "Calendar User" requesting the busy time
+ information to one or more intended recipients.
+
+ If the originator of the "REQUEST" method is not authorized to make a
+ busy time request on the recipient's calendar system, then an
+ exception message SHOULD be returned in a "REPLY" method, but no busy
+ time data need be returned.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "REQUEST"
+
+VFREEBUSY 1
+ ATTENDEE 1+ contain the address of the calendar store
+ DTEND 1 DateTime values must be in UTC
+ DTSTAMP 1
+ DTSTART 1 DateTime values must be in UTC
+ ORGANIZER 1 MUST be the request originator's address
+ UID 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ X-PROPERTY 0+
+
+ FREEBUSY 0
+ DURATION 0
+ REQUEST-STATUS 0
+ URL 0
+
+X-COMPONENT 0+
+VALARM 0
+VEVENT 0
+
+
+
+Silverberg, et. al. Standards Track [Page 33]
+
+RFC 2446 iTIP November 1998
+
+
+VTODO 0
+VJOURNAL 0
+VTIMEZONE 0
+
+3.3.3 REPLY
+
+ The "REPLY" method in a "VFREEBUSY" calendar component is used to
+ respond to a busy time request. The method is sent by the recipient
+ of a busy time request to the originator of the request.
+
+ The "REPLY" method may also be used to respond to an unsuccessful
+ "REQUEST" method. Depending on the "REQUEST-STATUS" value, no busy
+ time information may be returned.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "REPLY"
+
+VFREEBUSY 1
+ ATTENDEE 1 (address of recipient replying)
+ DTSTAMP 1
+ DTEND 1 DateTime values must be in UTC
+ DTSTART 1 DateTime values must be in UTC
+ FREEBUSY 1+ (values MUST all be of the same data
+ type. Multiple instances are allowed.
+ Multiple instances MUST be sorted in
+ ascending order. Values MAY NOT overlap)
+ ORGANIZER 1 MUST be the request originator's address
+ UID 1
+
+ COMMENT 0 or 1
+ CONTACT 0+
+ REQUEST-STATUS 0+
+ URL 0 or 1 (specifies busy time URL)
+ X-PROPERTY 0+
+ DURATION 0
+ SEQUENCE 0
+
+X-COMPONENT 0+
+VALARM 0
+VEVENT 0
+VTODO 0
+VJOURNAL 0
+VTIMEZONE 0
+
+
+
+
+Silverberg, et. al. Standards Track [Page 34]
+
+RFC 2446 iTIP November 1998
+
+
+3.4 Methods For VTODO Components
+
+ This section defines the property set for the methods that are
+ applicable to the "VTODO" calendar component. Each of the methods is
+ defined using a restriction table that specifies the property
+ constraints that define the particular method.
+
+ The following summarizes the methods that are defined for the "VTODO"
+ calendar component.
+
+ +================+==================================================+
+ | Method | Description |
+ |================+==================================================|
+ | PUBLISH | Post notification of a VTODO. Used primarily as |
+ | | a method of advertising the existence of a VTODO.|
+ | | |
+ | REQUEST | Assign a VTODO. This is an explicit assignment to|
+ | | one or more Calendar Users. The REQUEST method |
+ | | is also used to update or change an existing |
+ | | VTODO. Clients that cannot handle REQUEST MAY |
+ | | degrade the method to treat it as a PUBLISH. |
+ | | |
+ | REPLY | Reply to a VTODO request. Attendees MAY set |
+ | | PARTSTAT to ACCEPTED, DECLINED, TENTATIVE, |
+ | | DELEGATED, PARTIAL, and COMPLETED. |
+ | | |
+ | ADD | Add one or more instances to an existing to-do. |
+ | | |
+ | CANCEL | Cancel one or more instances of an existing |
+ | | to-do. |
+ | | |
+ | REFRESH | A request sent to a VTODO Organizer asking for |
+ | | the latest version of a VTODO. |
+ | | |
+ | COUNTER | Counter a REQUEST with an alternative proposal. |
+ | | |
+ | DECLINECOUNTER | Decline a counter proposal by an Attendee. |
+ +================+==================================================+
+
+3.4.1 PUBLISH
+
+ The "PUBLISH" method in a "VTODO" calendar component has no
+ associated response. It is simply a posting of an iCalendar object
+ that maybe added to a calendar. It MUST have an "Organizer". It MUST
+ NOT have "Attendees". Its expected usage is for encapsulating an
+ arbitrary "VTODO" calendar component as an iCalendar object. The
+ "Organizer" MAY subsequently update (with another "PUBLISH" method),
+ add instances to (with an "ADD" method), or cancel (with a "CANCEL"
+
+
+
+Silverberg, et. al. Standards Track [Page 35]
+
+RFC 2446 iTIP November 1998
+
+
+ method) a previously published "VTODO" calendar component.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "PUBLISH"
+VTODO 1+
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1
+ PRIORITY 1
+ SEQUENCE 0 or 1 MUST be present if value is greater than
+ 0, MAY be present if 0
+ SUMMARY 1 Can be null.
+ UID 1
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1 Can be null
+ DUE 0 or 1 If present DURATION MUST NOT be present
+ DURATION 0 or 1 If present DUE MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PERCENT-COMPLETE 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+ recurring calendar component. Otherwise
+ it MUST NOT be present.
+
+ RELATED-TO 0+
+ RESOURCES 0 or 1 This property may contain a list of values
+ RRULE 0+
+STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-
+ PROCESS/CANCELLED
+ URL 0 or 1
+ X-PROPERTY 0+
+
+ ATTENDEE 0
+ REQUEST-STATUS 0
+
+
+
+Silverberg, et. al. Standards Track [Page 36]
+
+RFC 2446 iTIP November 1998
+
+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+VALARM 0+
+X-COMPONENT 0+
+
+VFREEBUSY 0
+VEVENT 0
+VJOURNAL 0
+
+3.4.2 REQUEST
+
+ The "REQUEST" method in a "VTODO" calendar component provides the
+ following scheduling functions:
+
+ . Assign a to-do to one or more "Calendar Users";
+ . Reschedule an existing to-do;
+ . Update the details of an existing to-do, without rescheduling
+ it;
+ . Update the completion status of "Attendees" of an existing
+ to-do, without rescheduling it;
+ . Reconfirm an existing to-do, without rescheduling it;
+ . Delegate/reassign an existing to-do to another "Calendar User".
+
+ The assigned "Calendar Users" are identified in the "VTODO" calendar
+ component by individual "ATTENDEE;ROLE=REQ-PARTICIPANT" property
+ value sequences.
+
+ The originator of a "REQUEST" is the "Organizer" of the to-do. The
+ recipient of a "REQUEST" is the "Calendar User" assigned the to-do.
+ The "Attendee" uses the "REPLY" method to convey their acceptance and
+ completion status to the "Organizer" of the "REQUEST".
+
+ The "UID", "SEQUENCE", and "DTSTAMP" properties are used to
+ distinguish the various uses of the "REQUEST" method. If the "UID"
+ property value in the "REQUEST" is not found on the recipient's
+ calendar, then the "REQUEST" is for a new to-do. If the "UID"
+ property value is found on the recipient's calendar, then the
+ "REQUEST" is a rescheduling, an update, or a reconfirm of the "VTODO"
+ calendar object.
+
+ If the "Organizer" of the "REQUEST" method is not authorized to make
+ a to-do request on the "Attendee's" calendar system, then an
+ exception is returned in the "REQUEST-STATUS" property of a
+ subsequent "REPLY" method, but no scheduling action is performed.
+
+ For the "REQUEST" method, multiple "VTODO" components in a single
+ iCalendar object are only permitted when for components with the same
+ "UID" property. That is, a series of recurring events may have
+
+
+
+Silverberg, et. al. Standards Track [Page 37]
+
+RFC 2446 iTIP November 1998
+
+
+ instance-specific information. In this case, multiple "VTODO"
+ components are needed to express the entire series.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "REQUEST"
+VTODO 1+ All components must have the same UID
+ ATTENDEE 1+
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1
+ PRIORITY 1
+ SEQUENCE 0 or 1 MUST be present if value is greater than
+ 0, MAY be present if 0
+ SUMMARY 1 Can be null.
+ UID 1
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of
+ values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1 Can be null
+ DUE 0 or 1 If present DURATION MUST NOT be present
+ DURATION 0 or 1 If present DUE MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PERCENT-COMPLETE 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 present if referring to an instance of a
+ recurring calendar component. Otherwise
+ it MUST NOT be present.
+ RELATED-TO 0+
+ RESOURCES 0 or 1 This property may contain a list of
+ values
+ RRULE 0+
+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-
+ PROCESS
+ URL 0 or 1
+ X-PROPERTY 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 38]
+
+RFC 2446 iTIP November 1998
+
+
+ REQUEST-STATUS 0
+
+VALARM 0+
+
+VTIMEZONE 0+ MUST be present if any date/time refers
+ to a timezone
+X-COMPONENT 0+
+
+VEVENT 0
+VFREEBUSY 0
+VJOURNAL 0
+
+3.4.2.1 REQUEST for Rescheduling a VTODO
+
+ The "REQUEST" method may be used to reschedule a "VTODO" calendar
+ component.
+
+ Rescheduling a "VTODO" calendar component involves a change to the
+ existing "VTODO" calendar component in terms of its start or due time
+ or recurrence intervals and possibly the description. If the
+ recipient CUA of a "REQUEST" method finds that the "UID" property
+ value already exists on the calendar, but that the "SEQUENCE"
+ property value in the "REQUEST" is greater than the value for the
+ existing VTODO, then the "REQUEST" method describes a rescheduling of
+ the "VTODO" calendar component.
+
+3.4.2.2 REQUEST for Update or Reconfirmation of a VTODO
+
+ The "REQUEST" method may be used to update or reconfirm a "VTODO"
+ calendar component. Reconfirmation is merely an update of "Attendee"
+ completion status or overall "VTODO" calendar component status.
+
+ An update to an existing "VTODO" calendar component does not involve
+ changes to the start or due time or recurrence intervals, nor
+ generally to the description for the "VTODO" calendar component. If
+ the recipient CUA of a "REQUEST" method finds that the "UID" property
+ value already exists on the calendar and that the "SEQUENCE" property
+ value in the "REQUEST" is the same as the value for the existing
+ event, then the "REQUEST" method describes an update of the "VTODO"
+ calendar component details, but not a rescheduling of the "VTODO"
+ calendar component.
+
+ The update "REQUEST" is the appropriate response to a "REFRESH"
+ method sent from an "Attendee" to the "Organizer" of a "VTODO"
+ calendar component.
+
+ Unsolicited "REQUEST" methods MAY be sent by the "Organizer" of a
+ "VTODO" calendar component. The unsolicited "REQUEST" methods are
+
+
+
+Silverberg, et. al. Standards Track [Page 39]
+
+RFC 2446 iTIP November 1998
+
+
+ used to update the details of the "VTODO" (without rescheduling it or
+ updating the completion status of "Attendees") or the "VTODO"
+ calendar component itself (i.e., reconfirm the "VTODO").
+
+3.4.2.3 REQUEST for Delegating a VTODO
+
+ The "REQUEST" method is also used to delegate or reassign ownership
+ of a "VTODO" calendar component to another "Calendar User". For
+ example, it may be used to delegate an "Attendee's" role (i.e.
+ "chair", or "participant") for a "VTODO" calendar component. The
+ "REQUEST" method is sent by one of the "Attendees" of an existing
+
+ "VTODO" calendar component to some other individual. An "Attendee" of
+ a "VTODO" calendar component MUST NOT delegate to the "Organizer" of
+ the event.
+
+ For the purposes of this description, the "Attendee" delegating the
+ "VTODO" calendar component is referred to as the "Delegator". The
+ "Attendee" receiving the delegation request is referred to as the
+ "Delegate".
+
+ The "Delegator" of a "VTODO" calendar component MUST forward the
+ existing "REQUEST" method for a "VTODO" calendar component to the
+ "Delegate". The "VTODO" calendar component description MUST include
+ the "Delegator's" up-to-date "VTODO" calendar component definition.
+ The "REQUEST" method MUST also include an "ATTENDEE" property with
+ the calendar address of the "Delegate". The "Delegator" MUST also
+ send a "REPLY" method back to the "Organizer" with the "Delegator's"
+ "Attendee" property "partstat" parameter value set to "DELEGATED". In
+ addition, the "delegated-to" parameter MUST be included with the
+ calendar address of the "Delegate". A response to the delegation
+ "REQUEST" is sent from the "Delegate" to the "Organizer" and
+ optionally, to the "Delegator". The "REPLY" method from the
+ "Delegate" SHOULD include the "ATTENDEE" property with their calendar
+ address and the "delegated-from" parameter with the value of the
+ "Delegator's" calendar address.
+
+ The delegation "REQUEST" method MUST assign a value for the "RSVP"
+ property parameter associated with the "Delegator's" "Attendee"
+ property to that of the "Delegate's" "ATTENDEE" property. For example
+ if the "Delegator's" "ATTENDEE" property specifies "RSVP=TRUE", then
+ the "Delegate's" "ATTENDEE" property MUST specify "RSVP=TRUE".
+
+3.4.2.4 REQUEST Forwarded To An Uninvited Calendar User
+
+ An "Attendee" assigned a "VTODO" calendar component may send the
+ "VTODO" calendar component to another new CU, not previously
+ associated with the "VTODO" calendar component. The current
+
+
+
+Silverberg, et. al. Standards Track [Page 40]
+
+RFC 2446 iTIP November 1998
+
+
+ "Attendee" assigned the "VTODO" calendar component does this by
+ forwarding the original "REQUEST" method to the new CU. The new CU
+ can send a "REPLY" to the "Organizer" of the "VTODO" calendar
+ component. The reply contains an "ATTENDEE" property for the new CU.
+
+ The "Organizer" ultimately decides whether or not the new CU becomes
+ part of the to-do and is not obligated to do anything with a "REPLY"
+ from a new (uninvited) CU. If the "Organizer" does not want the new
+ CU to be part of the to-do, the new "ATTENDEE" property is not added
+ to the "VTODO" calendar component. The "Organizer" MAY send the CU a
+ "CANCEL" message to indicate that they will not be added to the to-
+ do. If the "Organizer" decides to add the new CU, the new "ATTENDEE"
+ property is added to the "VTODO" calendar component. Furthermore, the
+ "Organizer" is free to change any "ATTENDEE" property parameter from
+ the values supplied by the new CU to something the "Organizer"
+ considers appropriate.
+
+3.4.2.5 REQUEST Updated Attendee Status
+
+ An "Organizer" of a "VTODO" may request an updated status from one or
+ more "Attendees". The "Organizer" sends a "REQUEST" method to the
+ "Attendee" with the "ATTENDEE;RSVP=TRUE" property sequence. The
+ "SEQUENCE" property for the "VTODO" is not changed from its previous
+ value. A recipient determines that the only change in the "REQUEST"
+ is that their "RSVP" property parameter indicates a request for an
+ updated status. The recipient SHOULD respond with a "REPLY" method
+ indicating their current status with respect to the "REQUEST".
+
+3.4.3 REPLY
+
+ The "REPLY" method in a "VTODO" calendar component is used to respond
+ (e.g., accept or decline) to a request or to reply to a delegation
+ request. It is also used by an "Attendee" to update their completion
+ status. When used to provide a delegation response, the "Delegator"
+ MUST include the calendar address of the "Delegate" in the
+ "delegated-to" parameter of the "Delegator's" "ATTENDEE" property.
+ The "Delegate" MUST include the calendar address of the "Delegator"
+ on the "delegated-from" parameter of the "Delegate's" "ATTENDEE"
+ property.
+
+ The "REPLY" method MAY also be used to respond to an unsuccessful
+ "VTODO" calendar component "REQUEST" method. Depending on the
+ "REQUEST-STATUS" value, no scheduling action may have been performed.
+
+ The "Organizer" of a "VTODO" calendar component MAY receive a "REPLY"
+ method from a "Calendar User" not in the original "REQUEST". For
+ example, a "REPLY" method MAY be received from a "Delegate" of a
+ "VTODO" calendar component. In addition, the "REPLY" method MAY be
+
+
+
+Silverberg, et. al. Standards Track [Page 41]
+
+RFC 2446 iTIP November 1998
+
+
+ received from an unknown "Calendar User", having been forwarded the
+ "REQUEST" by an original "Attendee" of the "VTODO" calendar
+ component. This uninvited "Attendee" MAY be accepted, or the
+ "Organizer" MAY cancel the "VTODO" calendar component for the
+ uninvited "Attendee" by sending them a "CANCEL" method.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ---------------------------------------------
+METHOD 1 MUST be "REPLY"
+VTODO 1+ All component MUST have the same UID
+ ATTENDEE 1+
+ DTSTAMP 1
+ ORGANIZER 1
+ REQUEST-STATUS 1+
+ UID 1 MUST must be the address of the replying
+ attendee
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1
+ DTSTART 0 or 1
+ DUE 0 or 1 If present DURATION MUST NOT be present
+ DURATION 0 or 1 If present DUE MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PERCENT-COMPLETE 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RELATED-TO 0+
+ RESOURCES 0 or 1 This property may contain a list of values
+ RRULE 0+
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+ Recurring calendar component. Otherwise it
+ MUST NOT be present
+ SEQUENCE 0 or 1 MUST be the sequence number of
+ the original REQUEST if greater than 0.
+ MAY be present if 0.
+ STATUS 0 or 1
+
+
+
+Silverberg, et. al. Standards Track [Page 42]
+
+RFC 2446 iTIP November 1998
+
+
+ SUMMARY 0 or 1 Can be null
+ URL 0 or 1
+ X-PROPERTY 0+
+
+VTIMEZONE 0 or 1 MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VALARM 0
+VEVENT 0
+VFREEBUSY 0
+
+3.4.4 ADD
+
+ The "ADD" method in a "VTODO" calendar component is used to add one
+ or more instances to an existing to-do.
+
+ If the "UID" property value in the "ADD" is not found on the
+ recipient's calendar, then the recipient SHOULD send a "REFRESH" to
+ the "Organizer" in order to be updated with the latest version of the
+ "VTODO". If an "Attendee" implementation does not support the "ADD"
+ method it should respond with a "REQUEST-STATUS" value of 5.3 and ask
+ for a "REFRESH".
+
+ The "SEQUENCE" property value is incremented as the sequence of to-
+ dos has changed.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "ADD"
+VTODO 1
+ DTSTAMP 1
+ ORGANIZER 1
+ PRIORITY 1
+ SEQUENCE 1 MUST be greater than 0
+ SUMMARY 1 Can be null.
+ UID 1 MUST match that of the original to-do
+
+ ATTACH 0+
+ ATTENDEE 0+
+ CATEGORIES 0 or 1 This property may contain a list of
+ values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 43]
+
+RFC 2446 iTIP November 1998
+
+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1 Can be null
+ DTSTART 0 or 1
+ DUE 0 or 1 If present DURATION MUST NOT be present
+ DURATION 0 or 1 If present DUE MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PERCENT-COMPLETE 0 or 1
+ RDATE 0+
+ RELATED-TO 0+
+ RESOURCES 0 or 1 This property may contain a list of
+ values
+ RRULE 0+
+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-
+ PROCESS
+ URL 0 or 1
+ X-PROPERTY 0+
+
+ RECURRENCE-ID 0
+ REQUEST-STATUS 0
+
+VALARM 0+
+VTIMEZONE 0+ MUST be present if any date/time refers
+ to a timezone
+X-COMPONENT 0+
+
+VEVENT 0
+VJOURNAL 0
+VFREEBUSY 0
+
+3.4.5 CANCEL
+
+ The "CANCEL" method in a "VTODO" calendar component is used to send a
+ cancellation notice of an existing "VTODO" calendar request to the
+ "Attendees". The message is sent by the "Organizer" of a "VTODO"
+ calendar component to the "Attendees" of the "VTODO" calendar
+ component. For a recurring "VTODO" calendar component, either the
+ whole "VTODO" calendar component or instances of a "VTODO" calendar
+ component may be cancelled. To cancel the complete range of a
+ recurring "VTODO" calendar component, the "UID" property value for
+ the "VTODO" calendar component MUST be specified and a "RECURRENCE-
+ ID" MUST NOT be specified in the "CANCEL" method. In order to cancel
+ an individual instance of a recurring "VTODO" calendar component, the
+ "RECURRENCE-ID" property value for the "VTODO" calendar component
+ MUST be specified in the "CANCEL" method.
+
+
+
+Silverberg, et. al. Standards Track [Page 44]
+
+RFC 2446 iTIP November 1998
+
+
+ There are two options for canceling a sequence of instances of a
+ recurring "VTODO" calendar component:
+
+ (a) the "RECURRENCE-ID" property for an instance in the sequence MUST
+ be specified with the "RANGE" property parameter value of
+ THISANDPRIOR (or THISANDFUTURE) to indicate cancellation of the
+ specified "VTODO" calendar component and all instances before (or
+ after); or
+
+ (b) individual recurrence instances may be cancelled by specifying
+ multiple "RECURRENCE-ID" properties corresponding to the
+ instances to be cancelled.
+
+ When a "VTODO" is cancelled, the "SEQUENCE" property value MUST be
+ incremented.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ---------------------------------------------
+METHOD 1 MUST be "CANCEL"
+VTODO 1
+ ATTENDEE 0+ include all "Attendees" being removed from
+ the todo. MUST include all "Attendees" if
+ the entire todo is cancelled.
+ UID 1 MUST echo original UID
+ DTSTAMP 1
+ ORGANIZER 1
+ SEQUENCE 1
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property MAY contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1
+ DTSTART 0 or 1
+ DUE 0 or 1 If present DURATION MUST NOT be present
+ DURATION 0 or 1 If present DUE MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PERCENT-COMPLETE 0 or 1
+ RDATE 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 45]
+
+RFC 2446 iTIP November 1998
+
+
+ RECURRENCE-ID 0 or 1 MUST only if referring to one or more
+ instances of a recurring calendar
+ component. Otherwise it MUST NOT be
+ present.
+ RELATED-TO 0+
+ RESOURCES 0 or 1 This property MAY contain a list of values
+ RRULE 0+
+ PRIORITY 0 or 1
+ STATUS 0 or 1 If present it MUST be set to "CANCELLED".
+ MUST NOT be used if purpose is to remove
+ "ATTENDEES" rather than cancel the entire
+ VTODO.
+ URL 0 or 1
+ X-PROPERTY 0+
+
+ REQUEST-STATUS 0
+
+VTIMEZONE 0 or 1 MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VALARM 0
+VEVENT 0
+VFREEBUSY 0
+
+3.4.6 REFRESH
+
+ The "REFRESH" method in a "VTODO" calendar component is used by
+ "Attendees" of an existing "VTODO" calendar component to request an
+ updated description from the "Organizer" of the "VTODO" calendar
+ component. The "Organizer" of the "VTODO" calendar component MAY use
+ this method to request an updated status from the "Attendees". The
+ "REFRESH" method MUST specify the "UID" property corresponding to the
+ "VTODO" calendar component needing update.
+
+ A refresh of a recurrence instance of a "VTODO" calendar component
+ may be requested by specifying the "RECURRENCE-ID" property
+ corresponding to the associated "VTODO" calendar component. The
+ "Organizer" responds with the latest description and rendition of the
+ "VTODO" calendar component. In most cases this will be a REQUEST
+ unless the "VTODO" has been cancelled, in which case the ORGANIZER
+ MUST send a "CANCEL". This method is intended to facilitate machine
+ processing of requests for updates to a "VTODO" calendar component.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 46]
+
+RFC 2446 iTIP November 1998
+
+
+Component/Property Presence
+------------------- ---------------------------------------------
+METHOD 1 MUST be "REFRESH"
+VTODO 1
+ ATTENDEE 1
+ DTSTAMP 1
+ UID 1 MUST echo original UID
+
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+ Recurring calendar component. Otherwise it
+ MUST NOT be present
+ X-PROPERTY 0+
+
+ ATTACH 0
+ CATEGORIES 0
+ CLASS 0
+ COMMENT 0
+ CONTACT 0
+ CREATED 0
+ DESCRIPTION 0
+ DTSTART 0
+ DUE 0
+ DURATION 0
+ EXDATE 0
+ EXRULE 0
+ GEO 0
+ LAST-MODIFIED 0
+ LOCATION 0
+ ORGANIZER 0
+ PERCENT-COMPLETE 0
+ PRIORITY 0
+ RDATE 0
+ RELATED-TO 0
+ REQUEST-STATUS 0
+ RESOURCES 0
+ RRULE 0
+ SEQUENCE 0
+ STATUS 0
+ URL 0
+
+X-COMPONENT 0+
+
+VALARM 0
+VEVENT 0
+VFREEBUSY 0
+VTIMEZONE 0
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 47]
+
+RFC 2446 iTIP November 1998
+
+
+3.4.7 COUNTER
+
+ The "COUNTER" method in a "VTODO" calendar component is used by an
+ "Attendee" of an existing "VTODO" calendar component to submit to the
+ "Organizer" a counter proposal for the "VTODO" calendar component.
+ The "Attendee" sends the message to the "Organizer" of the "VTODO"
+ calendar component.
+
+ The counter proposal is an iCalendar object consisting of a "VTODO"
+ calendar component describing the complete description of the
+ alternate "VTODO" calendar component.
+
+ The "Organizer" rejects the counter proposal by sending the
+ "Attendee" a "DECLINECOUNTER" method. The "Organizer" accepts the
+ counter proposal by sending all of the "Attendees" of the "VTODO"
+ calendar component a "REQUEST" method rescheduling the "VTODO"
+ calendar component. In the latter case, the "Organizer" SHOULD reset
+ the individual "RSVP" property parameter values to TRUE on each
+ "ATTENDEE" property; in order to force a response by the "Attendees".
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "COUNTER"
+VTODO 1
+ ATTENDEE 1+
+ DTSTAMP 1
+ ORGANIZER 1
+ PRIORITY 1
+ SUMMARY 1 Can be null
+ UID 1
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property MAY contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1 Can be null
+ DTSTART 0 or 1
+ DUE 0 or 1 If present DURATION MUST NOT be present
+ DURATION 0 or 1 If present DUE MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+
+
+
+Silverberg, et. al. Standards Track [Page 48]
+
+RFC 2446 iTIP November 1998
+
+
+ LOCATION 0 or 1
+ PERCENT-COMPLETE 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 MUST only 3.5if referring to an instance of a
+ recurring calendar component. Otherwise it
+ MUST NOT be present.
+ RELATED-TO 0+
+ REQUEST-STATUS 0+
+ RESOURCES 0 or 1 This property MAY contain a list of values
+ RRULE 0 or 1
+ SEQUENCE 0 or 1 MUST echo the original SEQUENCE number.
+ MUST be present if non-zero. MAY be present
+ if zero.
+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-
+ PROCESS/CANCELLED
+ URL 0 or 1
+ X-PROPERTY 0+
+
+
+VALARM 0+
+VTIMEZONE 0 or 1 MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VEVENT 0
+VFREEBUSY 0
+
+3.4.8 DECLINECOUNTER
+
+ The "DECLINECOUNTER" method in a "VTODO" calendar component is used
+ by an "Organizer" of "VTODO" calendar component to reject a counter
+ proposal offered by one of the "Attendees". The "Organizer" sends the
+ message to the "Attendee" that sent the "COUNTER" method to the
+ "Organizer".
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ---------------------------------------------
+METHOD 1 MUST be "DECLINECOUNTER"
+
+VTODO 1
+ ATTENDEE 1+ MUST for all attendees
+ DTSTAMP 1
+ ORGANIZER 1
+ SEQUENCE 1 MUST echo the original SEQUENCE number
+ UID 1 MUST echo original UID
+
+
+
+Silverberg, et. al. Standards Track [Page 49]
+
+RFC 2446 iTIP November 1998
+
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property may contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1
+ DTSTART 0 or 1
+ DUE 0 or 1 If present DURATION MUST NOT be present
+ DURATION 0 or 1 If present DUE MUST NOT be present
+ EXDATE 0+
+ EXRULE 0+
+ GEO 0 or 1
+ LAST-MODIFIED 0 or 1
+ LOCATION 0 or 1
+ PERCENT-COMPLETE 0 or 1
+ PRIORITY 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+ recurring calendar component. Otherwise
+ it MUST NOT be present.
+ RELATED-TO 0+
+ REQUEST-STATUS 0+
+ RESOURCES 0 or 1 This property MAY contain a list of values
+ RRULE 0+
+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-
+ PROCESS
+ URL 0 or 1
+ X-PROPERTY 0+
+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VALARM 0
+VEVENT 0
+VFREEBUSY 0
+
+3.5 Methods For VJOURNAL Components
+
+ This section defines the property set for the methods that are
+ applicable to the "VJOURNAL" calendar component.
+
+ The following summarizes the methods that are defined for the
+ "VJOURNAL" calendar component.
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 50]
+
+RFC 2446 iTIP November 1998
+
+
+ +================+==================================================+
+ | Method | Description |
+ |================+==================================================|
+ | PUBLISH | Post a journal entry. Used primarily as a method |
+ | | of advertising the existence of a journal entry. |
+ | | |
+ | ADD | Add one or more instances to an existing journal |
+ | | entry. |
+ | | |
+ | CANCEL | Cancel one or more instances of an existing |
+ | | journal entry. |
+ +================+==================================================+
+
+3.5.1 PUBLISH
+
+ The "PUBLISH" method in a "VJOURNAL" calendar component has no
+ associated response. It is simply a posting of an iCalendar object
+ that may be added to a calendar. It MUST have an "Organizer". It MUST
+ NOT have "Attendees". The expected usage is for encapsulating an
+
+ arbitrary journal entry as an iCalendar object. The "Organizer" MAY
+ subsequently update (with another "PUBLISH" method) or cancel (with a
+ "CANCEL" method) a previously published journal entry.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "PUBLISH"
+VJOURNAL 1+
+ DESCRIPTION 1 Can be null.
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1
+ UID 1
+
+ ATTACH 0+
+ CATEGORIES 0 or 1 This property MAY contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ EXDATE 0+
+ EXRULE 0+
+ LAST-MODIFIED 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a
+
+
+
+Silverberg, et. al. Standards Track [Page 51]
+
+RFC 2446 iTIP November 1998
+
+
+ recurring calendar component. Otherwise
+ it MUST NOT be present.
+ RELATED-TO 0+
+ RRULE 0+
+ SEQUENCE 0 or 1 MUST echo the original SEQUENCE number.
+ MUST be present if non-zero. MAY be
+ present if zero.
+ STATUS 0 or 1 MAY be one of DRAFT/FINAL/CANCELLED
+ SUMMARY 0 or 1 Can be null
+ URL 0 or 1
+ X-PROPERTY 0+
+
+ ATTENDEE 0
+
+VALARM 0+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VEVENT 0
+VFREEBUSY 0
+VTODO 0
+
+3.5.2 ADD
+
+ The "ADD" method in a "VJOURNAL" calendar component is used to add
+ one or more instances to an existing "VJOURNAL" entry. There is no
+ response to the "Organizer".
+
+ If the "UID" property value in the "ADD" is not found on the
+ recipient's calendar, then the recipient MAY treat the "ADD" as a
+ "PUBLISH".
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ----------------------------------------------
+METHOD 1 MUST be "ADD"
+VJOURNAL 1
+ DESCRIPTION 1 Can be null.
+ DTSTAMP 1
+ DTSTART 1
+ ORGANIZER 1
+ SEQUENCE 1 MUST be greater than 0
+ UID 1 MUST match that of the original journal
+
+ ATTACH 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 52]
+
+RFC 2446 iTIP November 1998
+
+
+ CATEGORIES 0 or 1 This property MAY contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ EXDATE 0+
+ EXRULE 0+
+ LAST-MODIFIED 0 or 1
+ RDATE 0+
+ RELATED-TO 0+
+ RRULE 0+
+ STATUS 0 or 1 MAY be one of DRAFT/FINAL/CANCELLED
+ SUMMARY 0 or 1 Can be null
+ URL 0 or 1
+ X-PROPERTY 0+
+
+ ATTENDEE 0
+ RECURRENCE-ID 0
+
+VALARM 0+
+VTIMEZONE 0 or 1 MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+
+VEVENT 0
+VFREEBUSY 0
+VTODO 0
+
+3.5.3 CANCEL
+
+ The "CANCEL" method in a "VJOURNAL" calendar component is used to
+ send a cancellation notice of an existing journal entry. The message
+ is sent by the "Organizer" of a journal entry. For a recurring
+ journal entry, either the whole journal entry or instances of a
+ journal entry may be cancelled. To cancel the complete range of a
+ recurring journal entry, the "UID" property value for the journal
+ entry MUST be specified and a "RECURRENCE-ID" property MUST NOT be
+ specified in the "CANCEL" method. In order to cancel an individual
+ instance of the journal entry, the "RECURRENCE-ID" property value for
+ the journal entry MUST be specified in the "CANCEL" method.
+
+ There are two options for canceling a sequence of instances of a
+ recurring "VJOURNAL" calendar component:
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 53]
+
+RFC 2446 iTIP November 1998
+
+
+ (a) the "RECURRENCE-ID" property for an instance in the sequence MUST
+ be specified with the "RANGE" property parameter value of
+ THISANDPRIOR (or THISANDFUTURE) to indicate cancellation of the
+ specified "VTODO" calendar component and all instances before (or
+ after); or
+
+ (b) individual recurrence instances may be cancelled by specifying
+ multiple "RECURRENCE-ID" properties corresponding to the
+ instances to be cancelled.
+
+ When a "VJOURNAL" is cancelled, the "SEQUENCE" property value MUST be
+ incremented.
+
+ This method type is an iCalendar object that conforms to the
+ following property constraints:
+
+Component/Property Presence
+------------------- ---------------------------------------------
+METHOD 1 MUST be "CANCEL"
+VJOURNAL 1+ All MUST have the same UID
+ DTSTAMP 1
+ ORGANIZER 1
+ SEQUENCE 1
+ UID 1 MUST be the UID of the original REQUEST
+
+ ATTACH 0+
+ ATTENDEE 0+
+ CATEGORIES 0 or 1 This property MAY contain a list of values
+ CLASS 0 or 1
+ COMMENT 0 or 1
+ CONTACT 0+
+ CREATED 0 or 1
+ DESCRIPTION 0 or 1
+ DTSTART 0 or 1
+ EXDATE 0+
+ EXRULE 0+
+ LAST-MODIFIED 0 or 1
+ RDATE 0+
+ RECURRENCE-ID 0 or 1 only if referring to an instance of a
+ recurring calendar component. Otherwise
+ it MUST NOT be present.
+ RELATED-TO 0+
+ RRULE 0+
+ STATUS 0 or 1 MAY be present, must be "CANCELLED" if
+ present
+ SUMMARY 0 or 1
+ URL 0 or 1
+ X-PROPERTY 0+
+
+
+
+Silverberg, et. al. Standards Track [Page 54]
+
+RFC 2446 iTIP November 1998
+
+
+ REQUEST-STATUS 0
+
+VTIMEZONE 0+ MUST be present if any date/time refers to
+ a timezone
+X-COMPONENT 0+
+VALARM 0
+VEVENT 0
+VFREEBUSY 0
+VTODO 0
+
+3.6 Status Replies
+
+ The "REQUEST-STATUS" property may include the following values:
+
+|==============+============================+=========================|
+| Short Return | Longer Return Status | Offending Data |
+| Status Code | Description | |
+|==============+============================+=========================|
+| 2.0 | Success. | None. |
+|==============+============================+=========================|
+| 2.1 | Success but fallback taken | Property name and value |
+| | on one or more property | MAY be specified. |
+| | values. | |
+|==============+============================+=========================|
+| 2.2 | Success, invalid property | Property name MAY be |
+| | ignored. | specified. |
+|==============+============================+=========================|
+| 2.3 | Success, invalid property | Property parameter name |
+| | parameter ignored. | and value MAY be |
+| | | specified. |
+|==============+============================+=========================|
+| 2.4 | Success, unknown non- | Non-standard property |
+| | standard property ignored. | name MAY be specified. |
+|==============+============================+=========================|
+| 2.5 | Success, unknown non | Property and non- |
+| | standard property value | standard value MAY be |
+| | ignored. | specified. |
+|==============+============================+=========================|
+| 2.6 | Success, invalid calendar | Calendar component |
+| | component ignored. | sentinel (e.g., BEGIN: |
+| | | ALARM) MAY be |
+| | | specified. |
+|==============+============================+=========================|
+| 2.7 | Success, request forwarded | Original and forwarded |
+| | to Calendar User. | caluser addresses MAY |
+| | | be specified. |
+|==============+============================+=========================|
+| 2.8 | Success, repeating event | RRULE or RDATE property |
+
+
+
+Silverberg, et. al. Standards Track [Page 55]
+
+RFC 2446 iTIP November 1998
+
+
+| | ignored. Scheduled as a | name and value MAY be |
+| | single component. | specified. |
+|==============+============================+=========================|
+| 2.9 | Success, truncated end date| DTEND property value |
+| | time to date boundary. | MAY be specified. |
+|==============+============================+=========================|
+| 2.10 | Success, repeating VTODO | RRULE or RDATE property |
+| | ignored. Scheduled as a | name and value MAY be |
+| | single VTODO. | specified. |
+|==============+============================+=========================|
+| 2.11 | Success, unbounded RRULE | RRULE property name and |
+| | clipped at some finite | value MAY be specified. |
+| | number of instances | Number of instances MAY |
+| | | also be specified. |
+|==============+============================+=========================|
+| 3.0 | Invalid property name. | Property name MAY be |
+| | | specified. |
+|==============+============================+=========================|
+| 3.1 | Invalid property value. | Property name and value |
+| | | MAY be specified. |
+|==============+============================+=========================|
+| 3.2 | Invalid property parameter.| Property parameter name |
+| | | and value MAY be |
+| | | specified. |
+|==============+============================+=========================|
+| 3.3 | Invalid property parameter | Property parameter name |
+| | value. | and value MAY be |
+| | | specified. |
+|==============+============================+=========================|
+| 3.4 | Invalid calendar component | Calendar component |
+| | sequence. | sentinel MAY be |
+| | | specified (e.g., BEGIN: |
+| | | VTIMEZONE). |
+|==============+============================+=========================|
+| 3.5 | Invalid date or time. | Date/time value(s) MAY |
+| | | be specified. |
+|==============+============================+=========================|
+| 3.6 | Invalid rule. | Rule value MAY be |
+| | | specified. |
+|==============+============================+=========================|
+| 3.7 | Invalid Calendar User. | Attendee property value |
+| | |MAY be specified. |
+|==============+============================+=========================|
+| 3.8 | No authority. | METHOD and Attendee |
+| | | property values MAY be |
+| | | specified. |
+|==============+============================+=========================|
+
+
+
+
+Silverberg, et. al. Standards Track [Page 56]
+
+RFC 2446 iTIP November 1998
+
+
+| 3.9 | Unsupported version. | VERSION property name |
+| | | and value MAY be |
+| | | specified. |
+|==============+============================+=========================|
+| 3.10 | Request entity too large. | None. |
+|==============+============================+=========================|
+| 3.11 | Required component or | Component or property |
+| | property missing. | name MAY be specified. |
+|==============+============================+=========================|
+| 3.12 | Unknown component or | Component or property |
+| | property found | name MAY be specified |
+|==============+============================+=========================|
+| 3.13 | Unsupported component or | Component or property |
+| | property found | name MAY be specified |
+|==============+============================+=========================|
+| 3.14 | Unsupported capability | Method or action MAY |
+| | | be specified |
+|==============+============================+=========================|
+| 4.0 | Event conflict. Date/time | DTSTART and DTEND |
+| | is busy. | property name and values|
+| | | MAY be specified. |
+|==============+============================+=========================|
+| 5.0 | Request MAY supported. | Method property value |
+| | | MAY be specified. |
+|==============+============================+=========================|
+| 5.1 | Service unavailable. | ATTENDEE property value |
+| | | MAY be specified. |
+|==============+============================+=========================|
+| 5.2 | Invalid calendar service. | ATTENDEE property value |
+| | | MAY be specified. |
+|==============+============================+=========================|
+| 5.3 | No scheduling support for | ATTENDEE property value |
+| | user. | MAY be specified. |
+|==============+============================+=========================|
+
+3.7 Implementation Considerations
+
+3.7.1 Working With Recurrence Instances
+
+ iCalendar includes a recurrence grammar to represent recurring
+ events. The benefit of such a grammar is the ability to represent a
+ number of events in a single object. However, while this simplifies
+ creation of a recurring event, meeting instances still need to be
+ referenced. For instance, an "Attendee" may decline the third
+ instance of a recurring Friday event. Similarly, the "Organizer" may
+ change the time or location to a single instance of the recurring
+ event.
+
+
+
+
+Silverberg, et. al. Standards Track [Page 57]
+
+RFC 2446 iTIP November 1998
+
+
+ Since implementations may elect to store recurring events as either a
+ single event object or a collection of discreet, related event
+ objects, the protocol is designed so that each recurring instance may
+ be both referenced and versioned. Hence, implementations that choose
+ to maintain per-instance properties (such as "ATTENDEE" property
+ "partstat" parameter) may do so. However, the protocol does not
+ require per-instance recognition unless the instance itself must be
+ renegotiated.
+
+ The scenarios for recurrence instance referencing are listed below.
+ For purposes of simplification a change to an event refers to a
+ "trigger property." That is, a property that has a substantive
+ effect on the meeting itself such as start time, location, due date
+ (for "VTODO" calendar component components) and possibly description.
+
+ "Organizer" initiated actions:
+
+ . "Organizer" deletes or changes a single instance of a recurring
+ event
+ . "Organizer" makes changes that affect all future instances
+ . "Organizer" makes changes that affect all previous instances
+ . "Organizer" deletes or modifies a previously changed instance
+
+ "Attendee" initiated actions:
+
+ . "Attendee" changes status for a particular recurrence instance
+ . "Attendee" sends Event-Counter for a particular recurrence
+ instance
+
+ An instance of a recurring event is assigned a unique identification,
+ "RECURRENCE-ID" property, when that instance is renegotiated.
+ Negotiation may be necessary when a substantive change to the event
+ or to-do has be made (such as changing the start time, end time, due
+ date or location). The "Organizer" can identify a specific recurrence
+ instance using the "RECURRENCE-ID" property. The property value is
+ equal to the date/time of the instance. If the "Organizer" wishes to
+ change the "DTSTART", the original "DTSTART" value is used for
+ "RECURRENCE-ID" property and the new "DTSTART" and "DTEND" values
+ reflect the change. Note that after the change has occurred, the
+ "RECURRENCE-ID" has changed to the new "DTSTART" value.
+
+3.7.2 Attendee Property Considerations
+
+ The "ORGANIZER" property is required on published events, to-dos, and
+ journal entries for two reasons. First, only the "Organizer" is
+ allowed to update and redistribute an event or to-do component. It
+ follows that the "ORGANIZER" property MUST be present in the event,
+ to-do, or journal entry component so that the CUA has a basis for
+
+
+
+Silverberg, et. al. Standards Track [Page 58]
+
+RFC 2446 iTIP November 1998
+
+
+ authorizing an update. Second, it is prudent to provide a point of
+ contact for anyone who receives a published component in case of
+ problems.
+
+ There are valid [RFC-822] addresses that represent groups. Sending
+ email to such an address results in mail being sent to multiple
+ recipients. Such an address may be used as the value of an
+ "ATTENDEE" property. Thus, it is possible that the recipient of a
+ "REQUEST" does not appear explicitly in the list.
+
+ It is recommended that the general approach to finding a "Calendar
+ User" in an attendee list be as follows:
+
+ 1. Search for the "Calendar User" in the attendee list where
+ "TYPE=INDIVIDUAL"
+
+ 2. Failing (1) look for attendees where "TYPE=GROUP" or
+ 'TYPE=UNKNOWN". The CUA then determines if the "Calendar User"
+ is a member of one of these groups. If so, the "REPLY" method
+ sent to the "Organizer" MUST contain a new "ATTENDEE" property in
+ which:
+ . the "type" property parameter is set to INDIVIDUAL
+ . the "member" property parameter is set to the name of the
+ group
+
+ 3. Failing (2) the CUA MAY ignore or accept the request as the
+ "Calendar User" wishes.
+
+3.7.3 X-Tokens
+
+ To make iCalendar objects extensible, new property types MAY be
+ inserted into components. These properties are called X-Tokens as
+ they are prefixed with "X-". A client is not required to make sense
+ of X-Tokens. Clients are not required to save X-Tokens or use them
+ in replies.
+
+4 Examples
+
+4.1 Published Event Examples
+
+ In the calendaring and scheduling context, publication refers to the
+ one way transfer of event information. Consumers of published events
+ simply incorporate the event into a calendar. No reply is expected.
+ Individual "A" publishes an event. Individual "B" reads the event and
+ incorporates it into their calendar. Events are published in several
+ ways including: embedding the event as an object in a web page, e-
+ mailing the event to a distribution list, and posting the event to a
+ newsgroup.
+
+
+
+Silverberg, et. al. Standards Track [Page 59]
+
+RFC 2446 iTIP November 1998
+
+
+ The table below illustrates the sequence of events between the
+ publisher and the consumers of a published event.
+
+ +-------------------------------------------------------------------+
+ | Action | "Organizer" |
+ +---------------------------------+---------------------------------+
+ | Publish an event | "A" sends or posts a PUBLISH |
+ | | message |
+ +---------------------------------+---------------------------------+
+ | "B" reads a published event | |
+ +---------------------------------+---------------------------------+
+ | Publish an updated event | "A" sends or posts a PUBLISH |
+ | | message |
+ +---------------------------------+---------------------------------+
+ | "B" reads the updated event | |
+ +---------------------------------+---------------------------------+
+ | Cancel a published event | "A" sends or posts a CANCEL |
+ | | message |
+ +---------------------------------+---------------------------------+
+ | "B" reads the canceled event | |
+ | publication | |
+ +---------------------------------+---------------------------------+
+
+4.1.1 A Minimal Published Event
+
+ The iCalendar object below describes a single event that begins on
+ July 1, 1997 at 20:00 UTC. This event contains the minimum set of
+ properties for a "PUBLISH" for a "VEVENT" calendar component.
+
+ BEGIN:VCALENDAR
+ METHOD:PUBLISH
+ PRODID:-//ACME/DesktopCalendar//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:mailto:a@example.com
+ DTSTART:19970701T200000Z
+ DTSTAMP:19970611T190000Z
+ SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
+ UID:0981234-1234234-23@example.com
+ END:VEVENT
+ END:VCALENDAR
+
+4.1.2 Changing A Published Event
+
+ The iCalendar object below describes an update to the event described
+ in 4.1.1, the time has been changed, an end time has been added, and
+ the sequence number has been adjusted.
+
+
+
+
+Silverberg, et. al. Standards Track [Page 60]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VCALENDAR
+ METHOD:PUBLISH
+ VERSION:2.0
+ PRODID:-//ACME/DesktopCalendar//EN
+ BEGIN:VEVENT
+ ORGANIZER:mailto:a@example.com
+ DTSTAMP:19970612T190000Z
+ DTSTART:19970701T210000Z
+ DTEND:19970701T230000Z
+ SEQUENCE:1
+ UID:0981234-1234234-23@example.com
+ SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
+ END:VEVENT
+ END:VCALENDAR
+
+ The "UID" property is used by the client to identify the event. The
+ "SEQUENCE" property indicates that this is a change to the event. The
+ event with a matching UID and sequence number 0 is superseded by this
+ event.
+
+ The "SEQUENCE" property provides a reliable way to distinguish
+ different versions of the same event. Each time an event is
+ published, its sequence number is incremented. If a client receives
+ an event with a sequence number 5 and finds it has the same event
+ with sequence number 2, the event SHOULD be updated. However, if the
+ client received an event with sequence number 2 and finds it already
+ has sequence number 5 of the same event, the event MUST NOT be
+ updated.
+
+4.1.3 Canceling A Published Event
+
+ The iCalendar object below cancels the event described in 4.1.1. This
+ cancels the event with "SEQUENCE" property of 0, 1, and 2.
+
+ BEGIN:VCALENDAR
+ METHOD:CANCEL
+ VERSION:2.0
+ PRODID:-//ACME/DesktopCalendar//EN
+ BEGIN:VEVENT
+ ORGANIZER:mailto:a@example.com
+ COMMENT:DUKES forfeit the game
+ SEQUENCE:2
+ UID:0981234-1234234-23@example.com
+ DTSTAMP:19970613T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 61]
+
+RFC 2446 iTIP November 1998
+
+
+4.1.4 A Rich Published Event
+
+ This example describes the same event as in 4.1.1, but in much
+ greater detail.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:PUBLISH
+ SCALE:GREGORIAN
+ VERSION:2.0
+ BEGIN:VTIMEZONE
+ TZID:America-Chicago
+ TZURL:http://zones.stds_r_us.net/tz/America-Chicago
+ BEGIN:STANDARD
+ DTSTART:19671029T020000
+ RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+ TZOFFSETFROM:-0500
+ TZOFFSETTO:-0600
+ TZNAME:CST
+ END:STANDARD
+ BEGIN:DAYLIGHT
+ DTSTART:19870405T020000
+ RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+ TZOFFSETFROM:-0600
+ TZOFFSETTO:-0500
+ TZNAME:CDT
+ END:DAYLIGHT
+ END:VTIMEZONE
+ BEGIN:VEVENT
+ ORGANIZER:mailto:a@example.com
+ ATTACH:http://www.dukes.com/
+ CATEGORIES:SPORTS EVENT,ENTERTAINMENT
+ CLASS:PRIVATE
+ DESCRIPTION:MIDWAY STADIUM\n
+ Big time game. MUST see.\n
+ Expected duration:2 hours\n
+ DTEND;TZID=America-Chicago:19970701T180000
+ DTSTART;TZID=America-Chicago:19970702T160000
+ DTSTAMP:19970614T190000Z
+ STATUS:CONFIRMED
+ LOCATION;VALUE=URI:http://www.midwaystadium.com/
+ PRIORITY:2
+ RESOURCES:SCOREBOARD
+ SEQUENCE:3
+ SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
+ UID:0981234-1234234-23@example.com
+ RELATED-TO:0981234-1234234-14@example.com
+ BEGIN:VALARM
+
+
+
+Silverberg, et. al. Standards Track [Page 62]
+
+RFC 2446 iTIP November 1998
+
+
+ TRIGGER:-PT2H
+ ACTION:DISPLAY
+ DESCRIPTION:You should be leaving for the game now.
+ END:VALARM
+ BEGIN:VALARM
+ TRIGGER:-PT30M
+ ACTION:AUDIO
+ END:VALARM
+ END:VEVENT
+ END:VCALENDAR
+
+ The "RELATED-TO" field contains the "UID" property of a related
+ calendar event. The "SEQUENCE" property 3 indicates that this event
+ supersedes versions 0, 1, and 2.
+
+4.1.5 Anniversaries or Events attached to entire days
+
+ This example demonstrates the use of the "value" parameter to tie a
+ "VEVENT" to day rather than a specific time.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:PUBLISH
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:mailto:a@example.com
+ DTSTAMP:19970614T190000Z
+ UID:0981234-1234234-23@example.com
+ DTSTART;VALUE=DATE:19970714
+ RRULE:FREQ=YEARLY;INTERVAL=1
+ SUMMARY: Bastille Day
+ END:VEVENT
+ END:VCALENDAR
+
+4.2 Group Event Examples
+
+ Group events are distinguished from published events in that they
+ have "Attendees" and that there is interaction between the
+ "Attendees" and the "Organizer" with respect to the event. Individual
+ "A" requests a meeting between individuals "A", "B", "C" and "D".
+ Individual "B" confirms attendance to the meeting. Individual "C"
+ declines attendance. Individual "D" tentatively confirms attendance.
+ The following table illustrates the the message flow between these
+ individuals. A, the CU scheduling the meeting, is referenced as the
+ "Organizer".
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 63]
+
+RFC 2446 iTIP November 1998
+
+
++---------------------------------------------------------------------+
+| Action | "Organizer" | Attendee |
++---------------------------------------------------------------------+
+| Initiate a meeting | "A" sends a REQUEST | |
+| request | message to "B", "C",| |
+| | and "D" | |
++---------------------------------------------------------------------+
+| Accept the meeting | | "B" sends a REPLY |
+| request | | message to "A" with its |
+| | | ATTENDEE "partstat" para-|
+| | | set to "accepted" |
++---------------------------------------------------------------------+
+| Decline the meeting| | "C" sends a REPLY |
+| request | | message to "A" with its |
+| | | ATTENDEE "partstat" para-|
+| | | set to "declined" |
++---------------------------------------------------------------------+
+| Tentatively accept | | "D" sends a REPLY |
+| the meeting request| | message to "A" with its |
+| | | ATTENDEE "partstat" para-|
+| | | set to "tentative" |
++---------------------------------------------------------------------+
+| Confirm meeting | "A" sends a REQUEST | |
+| status with | message to "B" and | |
+| attendees | "D" with updated | |
+| | information. | |
++---------------------------------------------------------------------+
+
+4.2.1 A Group Event Request
+
+ A sample meeting request is sent from "A" to "B", "C", and "D". _E_
+ is also sent a copy of the request but is not expected to attend and
+ need not reply. "E" illustrates how CUAs might implement an "FYI"
+ type feature. Note the use of the "role" parameter. The default value
+ for the "role" parameter is "req-participant" and it need not be
+ enumerated. In this case we are using the value "non-participant" to
+ indicate "E" is a non-attending CU. The parameter is not needed on
+ other "Attendees" since "participant" is the default value.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=B:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=C:Mailto:C@example.com
+
+
+
+Silverberg, et. al. Standards Track [Page 64]
+
+RFC 2446 iTIP November 1998
+
+
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
+ ATTENDEE;RSVP=FALSE;TYPE=ROOM:conf_Big@example.com
+ ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
+ DTSTAMP:19970611T190000Z
+ DTSTART:19970701T200000Z
+ DTEND:19970701T2000000Z
+ SUMMARY:Conference
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+4.2.2 Reply To A Group Event Request
+
+ Attendee "B" accepts the meeting.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VEVENT
+ ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
+ ORGANIZER:MAILTO:A@example.com
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ REQUEST-STATUS:2.0;Success
+ DTSTAMP:19970612T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+ "B" could have declined the meeting or indicated tentative acceptance
+ by setting the "ATTENDEE" "partstat" parameter to "declined" or
+ "tentative", respectively. Also, "REQUEST-STATUS" is not required in
+ successful transactions.
+
+4.2.3 Update An Event
+
+ The event is moved to a different time. The combination of the "UID"
+ property (unchanged) and the "SEQUENCE" (bumped to 1) properties
+ indicate the update.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+
+
+
+Silverberg, et. al. Standards Track [Page 65]
+
+RFC 2446 iTIP November 1998
+
+
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
+ ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE;
+ CUTYPE=ROOM:Mailto:Conf@example.com
+ ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
+ DTSTART:19970701T180000Z
+ DTEND:19970701T190000Z
+ SUMMARY:Phone Conference
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:1
+ DTSTAMP:19970613T190000Z
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+4.2.4 Countering an Event Proposal
+
+ "A" sends a "REQUEST" to "B" and "C". "B" makes a counter-proposal to
+ "A" to change the time and location.
+
+ "A" sends the following "REQUEST":
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
+ DTSTART:19970701T190000Z
+ DTEND:19970701T200000Z
+ SUMMARY:Discuss the Merits of the election results
+ LOCATION:Green Conference Room
+ UID:calsrv.example.com-873970198738777a@example.com
+ SEQUENCE:0
+ DTSTAMP:19970611T190000Z
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ "B" sends "COUNTER" to "A", requesting changes to time and place. "B"
+ uses the "COMMENT" property to communicate a rationale for the
+ change. Note that the "SEQUENCE" property is NOT incremented on a
+ "COUNTER".
+
+
+
+Silverberg, et. al. Standards Track [Page 66]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:COUNTER
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
+ DTSTART:19970701T160000Z
+ DTEND:19970701T190000Z
+ DTSTAMP:19970612T190000Z
+ SUMMARY:Discuss the Merits of the election results
+ LOCATION:Green Conference Room
+ COMMENT:This time works much better and I think the big conference
+ room is too big
+ UID:calsrv.example.com-873970198738777a@example.com
+ SEQUENCE:0
+ DTSTAMP:19970611T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+ "A" accepts the changes from "B". To accept a counter-proposal, the
+ "Organizer" sends a new event "REQUEST" with an incremented sequence
+ number.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
+ DTSTAMP:19970613T190000Z
+ DTSTART:19970701T160000Z
+ DTEND:19970701T190000Z
+ SUMMARY:Discuss the Merits of the election results - changed to
+ meet B's schedule
+ LOCATION:Green Conference Room
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:1
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ Instead, "A" rejects "B's" counter proposal
+
+
+
+Silverberg, et. al. Standards Track [Page 67]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:DECLINECOUNTER
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ COMMENT:Sorry, I cannot change this meeting time
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ DTSTAMP:19970614T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+4.2.5 Delegating an Event
+
+ When delegating an event request to another "Calendar User", the
+ "Delegator" must both update the "Organizer" with a "REPLY" and send
+ a request to the "Delegate". There is currently no protocol
+ limitation to delegation depth. It is possible for the original
+
+ delegate to delegate the meeting to someone else, and so on. When a
+ request is delegated from one CUA to another there are a number of
+ responsibilities required of the "Delegator". The "Delegator" MUST:
+
+ . Send a "REPLY" to the "Organizer" with the following updates:
+ . The "Delegator's" "ATTENDEE" property "partstat" parameter set
+ to "delegated" and the "delegated-to" parameter is set to the
+ address of the "Delegate"
+ . Add an additional "ATTENDEE" property for the "Delegate" with
+ the "delegated-from" property parameter set to the "Delegator"
+ . Indicate whether they want to continue to receive updates when
+ the "Organizer" sends out updated versions of the event.
+ Setting the "rsvp" property parameter to "TRUE" will cause the
+ updates to be sent, setting it to "FALSE" causes no further
+ updates to be sent. Note that in either case, if the "Delegate"
+ declines the invitation the "Delegator" will be notified.
+ . The "Delegator" MUST also send a copy of the original "REQUEST"
+ method to the "Delegate".
+
+ It is not required that the "Delegate" include the "Delegator" in
+ their "REPLY" method. However, it is strongly advised since this will
+ inform the "Delegator" whether the "Delegate" plans to attend the
+ meeting. [Editors note: How so?] If the "Delegate" declines the
+ meeting, the "Delegator" may elect to delegate the "REQUEST" to
+ another CUA. The process is the same.
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 68]
+
+RFC 2446 iTIP November 1998
+
+
++---------------------------------------------------------------------+
+| Action | "Organizer" | Attendee |
++---------------------------------------------------------------------+
+| Initiate a meeting | "A" sends a REQUEST | |
+| request | message to "B" and | |
+| | "C" | |
++---------------------------------------------------------------------+
+| Delegate: | | "C" sends a REPLY to "A" |
+| "C" delegates to | | with the ATTENDEE. |
+| "E" | | "partstat" parameter set |
+| | | to "delegated" and with a|
+| | | new "ATTENDEE" property |
+| | | for "E". "E's" ATTENDEE |
+| | | "delegated-from" param |
+| | | is set to "C". "C's" |
+| | | ATTENDEE "delegated-to" |
+| | | param is set to "E". |
+| | | "C" sends REQUEST message|
+| | | to "E" with the original |
+| | | meeting request |
+| | | information. The |
+| | | "partstat" property |
+| | | parameter for "C" is set |
+| | | to "delegated" and the |
+| | | "delegated-to" |
+| | | parameter is set to |
+| | | the address of "E". An |
+| | | "ATTENDEE" property is |
+| | | added for "E" and the |
+| | | "delegated-from" |
+| | | parameter is set to |
+| | | the address of "C". |
++---------------------------------------------------------------------+
+| Confirm meeting | | "E" sends REPLY message |
+| attendance | | to "A" and optionally "C"|
+| | | with its "partstat" |
+| | | property parameter set |
+| | | to "ACCEPTED" |
++---------------------------------------------------------------------+
+| Optional: | "A" sends REQUEST | |
+| Redistribute | message to "B", "C" | |
+| meeting to | and "E". | |
+| attendees | | |
++---------------------------------------------------------------------+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 69]
+
+RFC 2446 iTIP November 1998
+
+
+ "C" responds to the "Organizer".
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:MAILTO:A@Example.com
+ ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
+ TO="Mailto:E@example.com":Mailto:C@example.com
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ REQUEST-STATUS:2.0;Success
+ DTSTAMP:19970611T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+ Attendee "C" delegates presence at the meeting to "E".
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
+ TO="Mailto:E@example.com":Mailto:C@example.com
+ ATTENDEE;RSVP=TRUE;
+ DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
+ DTSTART:19970701T180000Z
+ DTEND:19970701T200000Z
+ SUMMARY:Phone Conference
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ STATUS:CONFIRMED
+ DTSTAMP:19970611T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+4.2.6 Delegate Accepts the Meeting
+
+ To accept a delegated meeting, the delegate, "E", sends the following
+ message to "A" and "C":
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+
+
+
+Silverberg, et. al. Standards Track [Page 70]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VEVENT
+ ORGANIZER:MAILTO:A@Example.com
+ ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED-
+ FROM="Mailto:C@example.com":Mailto:E@example.com
+ ATTENDEE;PARTSTAT=DELEGATED;
+ DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ REQUEST-STATUS:2.0;Success
+ DTSTAMP:19970614T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+4.2.7 Delegate Declines the Meeting
+
+ In this example the "Delegate" declines the meeting request and sets
+ the "ATTENDEE" property "partstat" parameter to "DECLINED". The
+ "Organizer" SHOULD resend the "REQUEST" to "C" with the "partstat"
+ parameter of the "Delegate" set to "declined". This lets the
+ "Delegator" know that the "Delegate" has declined and provides an
+ opportunity to the "Delegator" to either accept the request or
+ delegate it to another CU.
+
+ Response from "E" to "A" and "C". Note the use of the "COMMENT"
+ property "E" uses to indicate why the delegation was declined.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:MAILTO:A@Example.com
+ ATTENDEE;PARTSTAT=DELEGATED;
+ DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
+ ATTENDEE;PARTSTAT=DECLINED;
+ DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
+ COMMENT:Sorry, I will be out of town at that time.
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ REQUEST-STATUS:2.0;Success
+ DTSTAMP:19970614T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+ "A" resends the "REQUEST" method to "C". "A" may also wish to express
+ the fact that the item was delegated in the "COMMENT" property.
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 71]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:MAILTO:A@Example.com
+ ATTENDEE;PARTSTAT=DECLINED;
+ DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:C@example.com
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ SUMMARY:Phone Conference
+ DTSTART:19970701T180000Z
+ DTEND:19970701T200000Z
+ DTSTAMP:19970614T200000Z
+ COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR
+ INVITATION
+ END:VEVENT
+ END:VCALENDAR
+
+4.2.8 Forwarding an Event Request
+
+ The protocol does not prevent an "Attendee" from "forwarding" an
+ "VEVENT" calendar component to other "Calendar Users". Forwarding
+ differs from delegation in that the forwarded "Calendar User" (often
+ referred to as a "Party Crasher") does not replace the forwarding
+ "Calendar User". Implementations are not required to add the "Party
+ Crasher" to the "Attendee" list and hence there is no guarantee that
+ a "Party Crasher" will receive additional updates to the Event. The
+ forwarding "Calendar User" SHOULD NOT add the "Party Crasher" to the
+ attendee list. The "Organizer" MAY add the forwarded "Calendar User"
+ to the attendee list.
+
+4.2.9 Cancel A Group Event
+
+ Individual "A" requests a meeting between individuals "A", "B", "C",
+ and "D". Individual "B" declines attendance to the meeting.
+ Individual "A" decides to cancel the meeting. The following table
+ illustrates the sequence of messages that would be exchanged between
+ these individuals.
+
+ Messages related to a previously canceled event ("SEQUENCE" property
+ value is less than the "SEQUENCE" property value of the "CANCEL"
+ message) MUST be ignored.
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 72]
+
+RFC 2446 iTIP November 1998
+
+
+ +--------------------------------------------------------------------+
+ | Action | "Organizer" | "Attendee" |
+ +--------------------------------------------------------------------+
+ | Initiate a meeting | "A" sends a REQUEST | |
+ | request | message to "B", "C",| |
+ | | and "D" | |
+ +--------------------------------------------------------------------+
+ | Decline the meeting| | "B" sends a "REPLY" |
+ | request | | message to "A" with its |
+ | | | "partstat" para- |
+ | | | set to "declined". |
+ +--------------------------------------------------------------------+
+ | Cancel the meeting | "A" sends a CANCEL | |
+ | | message to "B", "C" | |
+ | | and "D" | |
+ +--------------------------------------------------------------------+
+
+ The example shows how "A" cancels the event.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:CANCEL
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;TYPE=INDIVIDUAL;Mailto:A@example.com
+ ATTENDEE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
+ ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
+ COMMENT:Mr. B cannot attend. It's raining. Lets cancel.
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:1
+ STATUS:CANCELLED
+ DTSTAMP:19970613T190000Z
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 73]
+
+RFC 2446 iTIP November 1998
+
+
+4.2.10 Removing Attendees
+
+ "A" wants to remove "B" from a meeting. This is done by sending a
+ "CANCEL" to "B" and removing "B" from the attendee list in the master
+ copy of the event.
+
+ +--------------------------------------------------------------------+
+ | Action | "Organizer" | "Attendee" |
+ +--------------------------------------------------------------------+
+ | Remove an "B" | "A" sends a CANCEL | |
+ | as an "Attendee" | message to "B" | |
+ +--------------------------------------------------------------------+
+ | Update the master | "A" sends the | |
+ | copy of the event | updated event to | |
+ | | the remaining | |
+ | | "Attendees" | |
+ +--------------------------------------------------------------------+
+
+ The original meeting includes "A", "B", "C", and "D". The example
+ below shows the "CANCEL" that "A" sends to "B". Note that in the
+ example below the "STATUS" property is omitted. This is used when the
+ meeting itself is cancelled and not when the intent is to remove an
+ "Attendee" from the Event.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:CANCEL
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE:mailto:B@example.com
+ COMMENT:You're off the hook for this meeting
+ UID:calsrv.example.com-873970198738777@example.com
+ DTSTAMP:19970613T193000Z
+ SEQUENCE:1
+ END:VEVENT
+ END:VCALENDAR
+
+ The updated master copy of the event is shown below. The "Organizer"
+ MAY resend the updated event to the remaining "Attendees". Note that
+ "B" has been removed.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+
+
+
+Silverberg, et. al. Standards Track [Page 74]
+
+RFC 2446 iTIP November 1998
+
+
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
+ ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
+ ATTENDEE;TYPE=ROOM:CR_Big@example.com
+ ATTENDEE;ROLE=NON-PARTICIPANT;
+ RSVP=FALSE:Mailto:E@example.com
+ DTSTAMP:19970611T190000Z
+ DTSTART:19970701T200000Z
+ DTEND:19970701T203000Z
+ SUMMARY:Phone Conference
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:2
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+4.2.11 Replacing the Organizer
+
+ The scenario for this example begins with "A" as the "Organizer" for
+ a recurring meeting with "B", "C", and "D". "A" receives a new job
+ offer in another country and drops out of touch. "A" left no
+ forwarding address or way to be reached. Using out-of-band
+ communication, the other "Attendees" eventually learn what has
+ happened and reach an agreement that "B" should become the new
+ "Organizer" for the meeting. To do this, "B" sends out a new version
+ of the event and the other "Attendees" agree to accept "B" as the new
+ "Organizer". "B" also removes "A" from the event.
+
+ When the "Organizer" is replaced, the "SEQUENCE" property value MUST
+ be incremented.
+
+ This is the message "B" sends to "C" and "D"
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:B@example.com
+ ATTENDEE;ROLE=CHAIR;STATUS=ACCEPTED:Mailto:B@example.com
+ ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
+ ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
+ DTSTAMP:19970611T190000Z
+ DTSTART:19970701T200000Z
+ DTEND:19970701T203000Z
+ RRULE:FREQ=WEEKLY
+ SUMMARY:Phone Conference
+ UID:123456@example.com
+
+
+
+Silverberg, et. al. Standards Track [Page 75]
+
+RFC 2446 iTIP November 1998
+
+
+ SEQUENCE:1
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+4.3 Busy Time Examples
+
+ Busy time objects can be used in several ways. First, a CU may
+ request busy time from another CU for a specific range of time. That
+ request can be answered with a busy time Reply. Additionally, a CU
+ may simply publish their busy time for a given interval and point
+ other CUs to the published location. The following examples outline
+ both scenarios.
+
+ Individual "A" publishes busy time for one week.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ VERSION:2.0
+ METHOD:PUBLISH
+ BEGIN:VFREEBUSY
+ DTSTAMP:19980101T124100Z
+ ORGANIZER:MAILTO:A@Example.com
+ DTSTART:19980101T124200Z
+ DTEND:19980107T124200Z
+ FREEBUSY:19980101T180000Z/19980101T190000Z
+ FREEBUSY:19980103T020000Z/19980103T050000Z
+ FREEBUSY:19980107T020000Z/19980107T050000Z
+ FREEBUSY:19980113T000000Z/19980113T010000Z
+ FREEBUSY:19980115T190000Z/19980115T200000Z
+ FREEBUSY:19980115T220000Z/19980115T230000Z
+ FREEBUSY:19980116T013000Z/19980116T043000Z
+ END:VFREEBUSY
+ END:VCALENDAR
+
+ Individual "A" requests busy time from individuals "B", "C".
+ Individual "B" and "C" replies with busy time data to individual "A".
+ The following table illustrates the sequence of messages that would
+ be exchanged between these individuals.
+
+
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 76]
+
+RFC 2446 iTIP November 1998
+
+
++--------------------------------------------------------------------+
+| Action | "Organizer" | Attendee |
++--------------------------------------------------------------------+
+| Initiate a busy | "A" sends "REQUEST" | |
+| time request | message to "B" and | |
+| | and "C" | |
++--------------------------------------------------------------------+
+| Reply to the "BUSY"| | "B" sends a "REPLY" |
+| request with "BUSY"| | message to "A" with |
+| time data | | busy time data |
++--------------------------------------------------------------------+
+
+4.3.1 Request Busy Time
+
+ "A" sends a "BUSY-REQUEST" to "B" and "C" for busy time
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VFREEBUSY
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ ATTENDEE:Mailto:C@example.com
+ DTSTAMP:19970613T190000Z
+ DTSTART:19970701T080000Z
+ DTEND:19970701T200000
+ UID:calsrv.example.com-873970198738777@example.com
+ END:VFREEBUSY
+ END:VCALENDAR
+
+4.3.2 Reply To A Busy Time Request
+
+ "B" sends a "REPLY" method type of a "VFREEBUSY" calendar component
+ to "A"
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VFREEBUSY
+ ORGANIZER:MAILTO:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ DTSTART:19970701T080000Z
+ DTEND:19970701T200000Z
+ UID:calsrv.example.com-873970198738777@example.com
+ FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M
+
+
+
+Silverberg, et. al. Standards Track [Page 77]
+
+RFC 2446 iTIP November 1998
+
+
+ DTSTAMP:19970613T190030Z
+ END:VFREEBUSY
+ END:VCALENDAR
+
+ "B" is busy from 09:00 to 10:00 and from 14:00 to 14:30.
+
+4.4 Recurring Event and Time Zone Examples
+
+4.4.1 A Recurring Event Spanning Time Zones
+
+ This event describes a weekly phone conference. The "Attendees" are
+ each in a different time zone.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VTIMEZONE
+ TZID:America-SanJose
+ TZURL:http://zones.stds_r_us.net/tz/America-SanJose
+ BEGIN:STANDARD
+ DTSTART:19671029T020000
+ RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+ TZOFFSETFROM:-0700
+ TZOFFSETTO:-0800
+ TZNAME:PST
+ END:STANDARD
+ BEGIN:DAYLIGHT
+ DTSTART:19870405T020000
+ RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+ TZOFFSETFROM:-0800
+ TZOFFSETTO:-0700
+ TZNAME:PDT
+ END:DAYLIGHT
+ END:VTIMEZONE
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:A@example.COM
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:B@example.fr
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:c@example.jp
+ DTSTAMP:19970613T190030Z
+ DTSTART;TZID=America-SanJose:19970701T140000
+ DTEND;TZID=America-SanJose:19970701T150000
+ RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU
+ RDATE;TZID=America-SanJose:19970910T140000
+ EXDATE;TZID=America-SanJose:19970909T140000
+ EXDATE;TZID=America-SanJose:19971028T140000
+ SUMMARY:Weekly Phone Conference
+
+
+
+Silverberg, et. al. Standards Track [Page 78]
+
+RFC 2446 iTIP November 1998
+
+
+ UID:calsrv.example.com-873970198738777@example.com
+ SEQUENCE:0
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ The first two components of this iCalendar object are the time zone
+ components. The "DTSTART" date coincides with the first instance of
+ the RRULE property.
+
+ The recurring meeting is defined in a particular time zone,
+ presumably that of the originator. The client for each "Attendee" has
+ the responsibility of determining the recurrence time in the
+ "Attendee's" time zone.
+
+ The repeating event starts on Tuesday, July 1, 1997 at 2:00pm PDT.
+ "Attendee" B@example.fr is in France where the local time on this
+ date is 9 hours ahead of PDT or 23:00. "Attendee" C@example.jp is in
+ Japan where local time is 8 hours ahead of UTC or Wednesday, July 2
+ at 06:00. The event repeats weekly on Tuesdays (in PST/PDT). The
+ "RRULE" property results in 20 instances. The last instance falls on
+ Tuesday, November 11, 1997 2:00pm PDT. The "RDATE" property adds
+ another instance: WED, 10-SEP-1997 2:00 PM PST.
+
+ There are two exceptions to this recurring appointment. The first one
+ is:
+
+ TUE, 09-SEP-1997 23:00 GMT
+ TUE, 09-SEP-1997 14:00 PDT
+ WED, 10-SEP-1997 06:00 JST
+
+ and the second is:
+
+ TUE, 28-OCT-1997 23:00 GMT
+ TUE, 28-OCT-1997 14:00 PST
+ WED, 29-OCT-1997 06:00 JST
+
+4.4.2 Modify A Recurring Instance
+
+ In this example the "Organizer" issues a recurring meeting. Later the
+ "Organizer" changes an instance of the event by changing the
+ "DTSTART" property. Note the use of "RECURRENCE-ID" property and
+ "SEQUENCE" property in the second request.
+
+ Original Request:
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+
+
+
+Silverberg, et. al. Standards Track [Page 79]
+
+RFC 2446 iTIP November 1998
+
+
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:guid-1@host1.com
+ SEQUENCE:0
+ RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ ATTENDEE:Mailto:C@example.com
+ ATTENDEE:Mailto:D@example.com
+ DESCRIPTION:IETF-C&S Conference Call
+ CLASS:PUBLIC
+ SUMMARY:IETF Calendaring Working Group Meeting
+ DTSTART:19970601T210000Z
+ DTEND:19970601T220000Z
+ LOCATION:Conference Call
+ DTSTAMP:19970526T083000Z
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ The event request below is to change the time of a specific instance.
+ This changes the July 1st instance to July 3rd.
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:guid-1@host1com
+ RECURRENCE-ID:19970701T210000Z
+ SEQUENCE:1
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ ATTENDEE:Mailto:C@example.com
+ ATTENDEE:Mailto:D@example.com
+ DESCRIPTION:IETF-C&S Conference Call
+ CLASS:PUBLIC
+ SUMMARY:IETF Calendaring Working Group Meeting
+ DTSTART:19970703T210000Z
+ DTEND:19970703T220000Z
+ LOCATION:Conference Call
+ DTSTAMP:19970626T093000Z
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+Silverberg, et. al. Standards Track [Page 80]
+
+RFC 2446 iTIP November 1998
+
+
+4.4.3 Cancel an Instance
+
+ In this example the "Organizer" of a recurring event deletes the
+ August 1st instance.
+
+ BEGIN:VCALENDAR
+ METHOD:CANCEL
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:guid-1@host1.com
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ ATTENDEE:Mailto:C@example.com
+ ATTENDEE:Mailto:D@example.com
+ RECURRENCE-ID:19970801T210000Z
+ SEQUENCE:2
+ STATUS:CANCELLED
+ DTSTAMP:19970721T093000Z
+ END:VEVENT
+ END:VCALENDAR
+
+4.4.4 Cancel Recurring Event
+
+ In this example the "Organizer" wishes to cancel the entire recurring
+ event and any exceptions.
+
+ BEGIN:VCALENDAR
+ METHOD:CANCEL
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:guid-1@host1.com
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ ATTENDEE:Mailto:C@example.com
+ ATTENDEE:Mailto:D@example.com
+ DTSTAMP:19970721T103000Z
+ STATUS:CANCELLED
+ SEQUENCE:3
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 81]
+
+RFC 2446 iTIP November 1998
+
+
+4.4.5 Change All Future Instances
+
+ This example changes the meeting location from a conference call to
+ Seattle starting September 1 and extends to all future instances.
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:guid-1@host1.com
+ RECURRENCE-ID;THISANDFUTURE:19970901T210000Z
+ SEQUENCE:3
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:C@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:D@example.com
+ DESCRIPTION:IETF-C&S Discussion
+ CLASS:PUBLIC
+ SUMMARY:IETF Calendaring Working Group Meeting
+ DTSTART:19970901T210000Z
+ DTEND:19970901T220000Z
+ LOCATION:Building 32, Microsoft, Seattle, WA
+ DTSTAMP:19970526T083000Z
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+4.4.6 Add A New Instance To A Recurring Event
+
+ This example adds a one-time additional instance to the recurring
+ event. "Organizer" adds a second July meeting on the 15th.
+
+ BEGIN:VCALENDAR
+ METHOD:ADD
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:4
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:C@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:D@example.com
+ DESCRIPTION:IETF-C&S Conference Call
+ CLASS:PUBLIC
+
+
+
+Silverberg, et. al. Standards Track [Page 82]
+
+RFC 2446 iTIP November 1998
+
+
+ SUMMARY:IETF Calendaring Working Group Meeting
+ DTSTART:19970715T210000Z
+ DTEND:19970715T220000Z
+ LOCATION:Conference Call
+ DTSTAMP:19970629T093000Z
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+4.4.7 Add A New Series of Instances To A Recurring Event
+
+ The scenario for this example involves an ongoing meeting, originally
+ set up to occur every Tuesday. The "Organizer" later decides that
+ the meetings need to be on Tuesdays and Thursdays, but does not want
+ to reschedule the entire meeting or lose any of the per-instance
+ information already collected.
+
+ The original event:
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:0
+ RRULE:WKST=SU;BYDAY=TU;FREQ=WEEKLY
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ SUMMARY:Review Accounts
+ DTSTART:19980303T210000Z
+ DTEND:19980303T220000Z
+ LOCATION:The White Room
+ DTSTAMP:19980301T093000Z
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ Assume that many other updates happen to this event and that a lot of
+ instance-specific information exists in the recurring series. The
+ "SEQUENCE" property value is 7 for the next update. Now the
+ "Organizer" wants to add Thursdays to the event:
+
+ BEGIN:VCALENDAR
+ METHOD:ADD
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+
+
+
+Silverberg, et. al. Standards Track [Page 83]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:7
+ RRULE:WKST=SU;BYDAY=TH;FREQ=WEEKLY
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ SUMMARY:Review Accounts
+ DTSTART:19980303T210000Z
+ DTEND:19980303T220000Z
+ DTSTAMP:19980303T193000Z
+ LOCATION:The Usual conference room
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ Alternatively, if the "Organizer" is not concerned with per-instance
+ updates, the entire event can be rescheduled using a "REQUEST". This
+ is done by using the "UID" of the event to reschedule and including
+ the modified "RRULE". Note, that since this is an entire rescheduling
+ of the event, any instance-specific information will be lost.
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:7
+ RRULE:WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ SUMMARY:Review Accounts
+ DTSTART:19980303T210000Z
+ DTEND:19980303T220000Z
+ DTSTAMP:19980303T193000Z
+ LOCATION:The White Room
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ The next series of examples illustrate how an "Organizer" would
+ respond to a "REFRESH" submitted by an "Attendee" after a series of
+ instance-specific modifications. To convey all instance-specific
+ changes, the "Organizer" must provide the latest event description
+ and the relevant instances. The first three examples show the history
+ including the initial "VEVENT" request and subsequent instance
+
+
+
+Silverberg, et. al. Standards Track [Page 84]
+
+RFC 2446 iTIP November 1998
+
+
+ changes and finally the "REFRESH".
+
+ Original Request:
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:0
+ RDATE:19980304T180000Z
+ RDATE:19980311T180000Z
+ RDATE:19980318T180000Z
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ SUMMARY:Review Accounts
+ DTSTART:19980304T180000Z
+ DTEND:19980304T200000Z
+ DTSTAMP:19980303T193000Z
+ LOCATION:Conference Room A
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ Organizer changes 2nd instance Location and Time:
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:1
+ RECURRENCE-ID:19980311T180000Z
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ SUMMARY:Review Accounts
+ DTSTART:19980311T160000Z
+ DTEND:19980311T180000Z
+ DTSTAMP:19980306T193000Z
+ LOCATION:The Small conference room
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+Silverberg, et. al. Standards Track [Page 85]
+
+RFC 2446 iTIP November 1998
+
+
+ Organizer adds a 4th instance of the meeting using the "ADD" method
+
+ BEGIN:VCALENDAR
+ METHOD:ADD
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:2
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ SUMMARY:Review Accounts
+ DTSTART:19980315T180000Z
+ DTEND:19980315T200000Z
+ DTSTAMP:19980307T193000Z
+ LOCATION:Conference Room A
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ If "B" requests a "REFRESH", "A" responds with the following to
+ capture all instance-specific data. In this case both the initial
+ request and an additional "VEVENT" that specifies the instance-
+ specific data are included. Because these are both of the same type
+ (they are both "VEVENTS"), they can be conveyed in the same iCalendar
+ object.
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:123456789@host1.com
+ SEQUENCE:2
+ RDATE:19980304T180000Z
+ RDATE:19980311T160000Z
+ RDATE:19980315T180000Z
+ Error! Bookmark not defined.
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ SUMMARY:Review Accounts
+ DTSTART:19980304T180000Z
+ DTEND:19980304T200000Z
+ DTSTAMP:19980303T193000Z
+ LOCATION:Conference Room A
+ STATUS:CONFIRMED
+
+
+
+Silverberg, et. al. Standards Track [Page 86]
+
+RFC 2446 iTIP November 1998
+
+
+ END:VEVENT
+
+ BEGIN:VEVENT
+ Error! Bookmark not defined.
+ SEQUENCE:2
+ RECURRENCE-ID:19980311T160000Z
+ Error! Bookmark not defined.
+ ATTENDEE;ROLE=CHAIR;Error! Bookmark not defined.
+ ATTENDEE;Error! Bookmark not defined.
+ SUMMARY:Review Accounts
+ DTSTART:19980311T160000Z
+ DTEND:19980304T180000Z
+ DTSTAMP:19980306T193000Z
+ LOCATION:The Small conference room
+ STATUS:CONFIRMED
+ END:VEVENT
+
+ END:VCALENDAR
+
+4.4.8 Counter An Instance Of A Recurring Event
+
+ In this example one of the "Attendees" counters the "DTSTART"
+ property of the proposed second July meeting.
+
+ BEGIN:VCALENDAR
+ METHOD:COUNTER
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:guid-1@host1.com
+ RECURRENCE-ID:19970715T210000Z
+ SEQUENCE:4
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:C@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:D@example.com
+ DESCRIPTION:IETF-C&S Conference Call
+ CLASS:PUBLIC
+ SUMMARY:IETF Calendaring Working Group Meeting
+ DTSTART:19970715T220000Z
+ DTEND:19970715T230000Z
+ LOCATION:Conference Call
+ COMMENT:May we bump this by an hour? I have a conflict
+ DTSTAMP:19970629T094000Z
+ END:VEVENT
+ END:VCALENDAR
+
+
+
+
+Silverberg, et. al. Standards Track [Page 87]
+
+RFC 2446 iTIP November 1998
+
+
+4.4.9 Error Reply To A Request
+
+ The following example illustrates a scenario where a meeting is
+ proposed containing an unsupported property and a bad property.
+
+ Original Request
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:guid-1@host1.com
+ SEQUENCE:0
+ RRULE:FREQ=MONTHLY;BYMONTHDAY=1
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:C@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:D@example.com
+ DESCRIPTION:IETF-C&S Conference Call
+ CLASS:PUBLIC
+ SUMMARY:IETF Calendaring Working Group Meeting
+ DTSTART:19970601T210000Z
+ DTEND:19970601T220000Z
+ DTSTAMP:19970602T094000Z
+ LOCATION:Conference Call
+ STATUS:CONFIRMED
+ FOO:BAR
+ END:VEVENT
+ END:VCALENDAR
+
+ Response from "B" to indicate that RRULE is not supported and an
+ unrecognized property was encountered
+
+ BEGIN:VCALENDAR
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single
+ event;RRULE
+ REQUEST-STATUS:3.0;Invalid Property Name;FOO
+ UID:guid-1@host1.com
+ SEQUENCE:0
+ DTSTAMP:19970603T094000Z
+
+
+
+Silverberg, et. al. Standards Track [Page 88]
+
+RFC 2446 iTIP November 1998
+
+
+ END:VEVENT
+ END:VCALENDAR
+
+4.5 Group To-do Examples
+
+ Individual "A" creates a group task in which individuals "A", "B",
+ "C" and "D" will participate. Individual "B" confirms acceptance of
+ the task. Individual "C" declines the task. Individual "D"
+ tentatively accepts the task. The following table illustrates the
+ sequence of messages that would be exchanged between these
+ individuals. Individual "A" then issues a "REQUEST" method to obtain
+ the status of the to-do from each participant. The response indicates
+ the individual "Attendee's" completion status. The table below
+ illustrates the message flow.
+
++--------------------------------------------------------------------+
+| Action | "Organizer" | Attendee |
++--------------------------------------------------------------------+
+| Initiate a to-do | "A" sends a REQUEST | |
+| request | message to "B", "C",| |
+| | and "D" | |
++--------------------------------------------------------------------+
+| Accept the to-do | | "B" sends a "REPLY" |
+| request | | message to "A" with its |
+| | | "partstat" paramater |
+| | | set to "accepted". |
++--------------------------------------------------------------------+
+| Decline the to-do | | "C" sends a REPLY |
+| request | | message to "A" with its |
+| | | "partstat" parameter |
+| | | set to "declined". |
++--------------------------------------------------------------------+
+| Tentatively accept | | "D" sends a REPLY |
+| the to-do request | | message to "A" with its |
+| | | "partstat" parameter |
+| | | set to "tentative". |
++--------------------------------------------------------------------+
+| Check attendee | "A" sends a REQUEST | |
+| completion status | message to "B" and | |
+| | "D" with current | |
+| | information. | |
++--------------------------------------------------------------------+
+| Attendee indicates | | "B" sends a "REPLY" |
+| percent complete | | message indicating |
+| | | percent complete |
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 89]
+
+RFC 2446 iTIP November 1998
+
+
++--------------------------------------------------------------------+
+| Attendee indicates | | "D" sends a "REPLY" |
+| completion | | message indicating |
+| | | completion |
++--------------------------------------------------------------------+
+
+4.5.1 A VTODO Request
+
+ A sample "REQUEST" for a "VTODO" calendar component that "A" sends to
+ "B", "C", and "D".
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VTODO
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:C@example.com
+ ATTENDEE;RSVP=TRUE:Mailto:D@example.com
+ DTSTART:19970701T170000Z
+ DUE:19970722T170000Z
+ PRIORITY:1
+ SUMMARY:Create the requirements document
+ UID:calsrv.example.com-873970198738777-00@example.com
+ SEQUENCE:0
+ DTSTAMP:19970717T200000Z
+ STATUS:Needs Action
+ END:VTODO
+ END:VCALENDAR
+
+4.5.2 A VTODO Reply
+
+ "B" accepts the to-do.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VTODO
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
+ UID:calsrv.example.com-873970198738777-00@example.com
+ COMMENT:I'll send you my input by e-mail
+ SEQUENCE:0
+ DTSTAMP:19970717T203000Z
+ REQUEST-STATUS:2.0;Success
+
+
+
+Silverberg, et. al. Standards Track [Page 90]
+
+RFC 2446 iTIP November 1998
+
+
+ END:VTODO
+ END:VCALENDAR
+
+ "B" could have declined the TODO or indicated tentative acceptance by
+ setting the "partstat" property parameter sequence to "declined" or
+ "tentative", respectively.
+
+4.5.3 A VTODO Request for Updated Status
+
+ "A" requests status from all "Attendees".
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VTODO
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
+ UID:calsrv.example.com-873970198738777-00@example.com
+ SUMMARY:Create the requirements document
+ PRIORITY:1
+ SEQUENCE:0
+ STATUS:IN-PROCESS
+ DTSTART:19970701T170000Z
+ DTSTAMP:19970717T230000Z
+ END:VTODO
+ END:VCALENDAR
+
+4.5.4 A Reply: Percent-Complete
+
+ A reply indicating the task being worked on and that "B" is 75%
+ complete with "B's" part of the assignment.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VTODO
+ ORGANIZER:MAILTO:A@example.com
+ ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
+ PERCENT-COMPLETE:75
+ UID:calsrv.example.com-873970198738777-00@example.com
+ DTSTAMP:19970717T233000Z
+ SEQUENCE:0
+ END:VTODO
+ END:VCALENDAR
+
+
+
+Silverberg, et. al. Standards Track [Page 91]
+
+RFC 2446 iTIP November 1998
+
+
+4.5.5 A Reply: Completed
+
+ A reply indicating that "D" completed "D's" part of the assignment.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+ BEGIN:VTODO
+ ORGANIZER:MAILTO:A@example.com
+ ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com
+ UID:calsrv.example.com-873970198738777-00@example.com
+ DTSTAMP:19970717T233000Z
+ SEQUENCE:0
+ END:VTODO
+ END:VCALENDAR
+
+4.5.6 An Updated VTODO Request
+
+ Organizer "A" resends the "VTODO" calendar component. "A" sets the
+ overall completion for the to-do at 40%.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VTODO
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;PARTSTAT=IN-PROCESS;TYPE=INDIVIDUAL:Mailto:D@example.com
+ DTSTART:19970701T170000Z
+ DUE:19970722T170000Z
+ PRIORITY:1
+ SUMMARY:Create the requirements document
+ UID:calsrv.example.com-873970198738777-00@example.com
+ SEQUENCE:1
+ DTSTAMP:19970718T100000Z
+ STATUS:IN-PROGRESS
+ PERCENT-COMPLETE:40
+ END:VTODO
+ END:VCALENDAR
+
+4.5.7 Recurring VTODOs
+
+ The following examples relate to recurring "VTODO" calendar
+ components.
+
+
+
+
+Silverberg, et. al. Standards Track [Page 92]
+
+RFC 2446 iTIP November 1998
+
+
+4.5.7.1 Request for a Recurring VTODO
+
+ In this example "A" sends a recurring "VTODO" calendar component to
+ "B" and "D".
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REQUEST
+ VERSION:2.0
+ BEGIN:VTODO
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
+ ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
+ RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
+ DTSTART:19980101T100000-0700
+ DUE:19980103T100000-0700
+ SUMMARY:Send Status Reports to Area Managers
+ UID:calsrv.example.com-873970198738777-00@example.com
+ SEQUENCE:0
+ DTSTAMP:19970717T200000Z
+ STATUS:NEEDS ACTION
+ PRIORITY:1
+ END:VTODO
+ END:VCALENDAR
+
+4.5.7.2 Calculating due dates in recurring VTODOs
+
+ The due date in a recurring "VTODO" calendar component is either a
+ fixed interval specified in the "REQUEST" method or specified using
+ the "RECURRENCE-ID" property. The former is calculated by applying
+ the difference between "DTSTART" and "DUE" properties and applying it
+ to each of the start of each recurring instance. Hence, if the
+ initial "VTODO" calendar component specifies a "DTSTART" property
+ value of "19970701T190000Z" and a "DUE" property value of
+ "19970801T190000Z" the interval of one day which is applied to each
+ recurring instance of the "VTODO" calendar component to determine the
+ "DUE" date of the instance.
+
+4.5.7.3 Replying to an instance of a recurring VTODO
+
+ In this example "B" updates "A" on a single instance of the "VTODO"
+ calendar component.
+
+ BEGIN:VCALENDAR
+ PRODID:-//ACME/DesktopCalendar//EN
+ METHOD:REPLY
+ VERSION:2.0
+
+
+
+Silverberg, et. al. Standards Track [Page 93]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VTODO
+ ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
+ PERCENT-COMPLETE:75
+ UID:calsrv.example.com-873970198738777-00@example.com
+ DTSTAMP:19970717T233000Z
+ RECURRENCE-ID:19980101T170000Z
+ SEQUENCE:1
+ END:VTODO
+ END:VCALENDAR
+
+4.6 Journal Examples
+
+ The iCalendar object below describes a single journal entry for
+ October 2, 1997. The "RELATED-TO" property references the phone
+ conference event for which minutes were taken.
+
+ BEGIN:VCALENDAR
+ METHOD:PUBLISH
+ PRODID:-//ACME/DesktopCalendar//EN
+ VERSION:2.0
+ BEGIN:VJOURNAL
+ DTSTART:19971002T200000Z
+ ORGANIZER:MAILTO:A@Example.com
+ SUMMARY:Phone conference minutes
+ DESCRIPTION:The editors meeting was held on October 1, 1997.
+ Details are in the attached document.
+ UID:0981234-1234234-2410@example.com
+ RELATED-TO:0981234-1234234-2402-35@example.com
+ ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt
+ END:VJOURNAL
+ END:VCALENDAR
+
+4.7 Other Examples
+
+4.7.1 Event Refresh
+
+ Refresh the event with "UID" property value of "guid-1-
+ 12345@host1.com":
+
+ BEGIN:VCALENDAR
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ METHOD:REFRESH
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ ATTENDEE:Mailto:C@example.com
+
+
+
+Silverberg, et. al. Standards Track [Page 94]
+
+RFC 2446 iTIP November 1998
+
+
+ ATTENDEE:Mailto:D@example.com
+ UID: guid-1-12345@host1.com
+ DTSTAMP:19970603T094000
+ END:VEVENT
+ END:VCALENDAR
+
+4.7.2 Bad RECURRENCE-ID
+
+ Component instances are identified by the combination of "UID",
+ "RECURRENCE-ID", and "SEQUENCE". When an "Organizer" sends a request
+ to an "Attendee", there are three cases in which an instance cannot
+ be found. They are:
+
+ 1. The component with the referenced "UID" and "RECURRENCE-ID" has
+ been found but the "SEQUENCE" number in the calendar store does
+ not match that of the ITIP message.
+
+ 2. The component with the referenced "UID" has been found, the
+ "SEQUENCE" numbers match, but the "RECURRENCE-ID" cannot be
+ found.
+
+ 3. The "UID" and "SEQUENCE" numbers are found but the CUA does not
+ support recurrences.
+
+ In case (1), two things can happen. If the "SEQUENCE" number of the
+ "Attendee's" instance is larger than that in the "Organizer's"
+ message then the "Attendee" is receiving an out-of-sequence message
+ and MUST ignore it. If the "SEQUENCE" number of the "Attendee's"
+ instance is smaller, then the "Organizer" is sending out a newer
+ version of the component and the "Attendee's" version needs to be
+ updated. Since one or more updates have been missed, the "Attendee"
+ SHOULD send a "REFRESH" message to the "Organizer" to get an updated
+ version of the event.
+
+ In case (2), something has gone wrong. Both the "Organizer" and the
+ "Attendee" should have the same instances, but the "Attendee" does
+ not have the referenced instance. In this case the "Attendee" SHOULD
+ send a "REFRESH" to the "Organizer" to get an updated version of the
+ event.
+
+ In case (3), the limitations of the "Attendee's" CUA makes it
+ impossible to match an instance other than the single instance
+ scheduled. In this case, the "Attendee" need not send a "REFRESH" to
+ the "Organizer".
+
+ The example below shows a sequence in which an "Attendee" sends a
+ "REFRESH" to the "Organizer".
+
+
+
+
+Silverberg, et. al. Standards Track [Page 95]
+
+RFC 2446 iTIP November 1998
+
+
++--------------------------------------------------------------------+
+| Action | "Organizer" | Attendee |
++--------------------------------------------------------------------+
+| Update an instance | "A" sends "REQUEST"| |
+| request | message to "B" | |
++--------------------------------------------------------------------+
+| Attendee requests | | "B" sends a "REFRESH" |
+| refresh because | | message to "A" |
+| "RECURRENCE-ID" was| | |
+| not found | | |
++--------------------------------------------------------------------+
+| Refresh the entire | "A" sends the | |
+| Event | latest copy of the | |
+| | Event to "B" | |
++--------------------------------------------------------------------+
+| Attendee handles | | "B" updates to the |
+| the request and | | latest copy of the |
+| updates the | | meeting. |
+| instance | | |
++--------------------------------------------------------------------+
+
+ Request from "A":
+
+ BEGIN:VCALENDAR
+ METHOD:REQUEST
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ VERSION:2.0
+ BEGIN:VEVENT
+ UID:acme-12345@host1.com
+ SEQUENCE:3
+ RRULE:FREQ=WEEKLY
+ RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ DESCRIPTION:IETF-C&S Conference Call
+ SUMMARY:IETF Calendaring Working Group Meeting
+ DTSTART:19970801T210000Z
+ DTEND:19970801T220000Z
+ RECURRENCE-ID:19970809T210000Z
+ DTSTAMP:19970726T083000
+ STATUS:CONFIRMED
+ END:VEVENT
+ END:VCALENDAR
+
+ "B" has the event with "UID" property "acme-12345@host1.com" but
+ "B's" "SEQUENCE" property value is "1" and the event does not have an
+ instance at the specified recurrence time. This means that "B" has
+
+
+
+Silverberg, et. al. Standards Track [Page 96]
+
+RFC 2446 iTIP November 1998
+
+
+ missed at least one update and needs a new copy of the event. "B"
+ requests the latest copy of the event with the following refresh
+ message:
+
+ BEGIN:VCALENDAR
+ PRODID:-//RDU Software//NONSGML HandCal//EN
+ METHOD:REFRESH
+ VERSION:2.0
+ BEGIN:VEVENT
+ ORGANIZER:Mailto:A@example.com
+ ATTENDEE:Mailto:B@example.com
+ UID:acme-12345@host1.com
+ DTSTAMP:19970603T094000
+ END:VEVENT
+ END:VCALENDAR
+
+5 Application Protocol Fallbacks
+
+5.1 Partial Implementation
+
+ Applications that support this memo are not required to support the
+ entire protocol. The following describes how methods and properties
+ SHOULD "fallback" in applications that do not support the complete
+ protocol. If a method or property is not addressed in this section,
+ it may be ignored.
+
+5.1.1 Event-Related Fallbacks
+
+Method Fallback
+-------------- -----------------------------------------------------
+PUBLISH Required
+REQUEST PUBLISH
+REPLY Required
+ADD Required
+CANCEL Required
+REFRESH Required
+COUNTER Reply with Not Supported
+DECLINECOUNTER Required if EVENT-COUNTER is implemented; otherwise
+ reply with Not Supported
+
+iCalendar
+Property Fallback
+-------------- -----------------------------------------------------
+CALSCALE Ignore; assume GREGORIAN
+PRODID Ignore
+METHOD Required as described in the Method list above
+VERSION Ignore
+
+
+
+
+Silverberg, et. al. Standards Track [Page 97]
+
+RFC 2446 iTIP November 1998
+
+
+Event-Related
+Components Fallback
+-------------- -----------------------------------------------------
+VALARM Reply with Not Supported
+VTIMEZONE Required if any DateTime value refers to a time zone.
+
+Component
+Property Fallback
+-------------- -----------------------------------------------------
+ATTACH Ignore
+ATTENDEE Required if EVENT-REQUEST is not implemented;
+ otherwise reply with Not Supported
+CATEGORIES Ignore
+CLASS Ignore
+COMMENT Ignore
+COMPLETED Ignore
+nCONTACT Ignore
+CREATED Ignore
+DESCRIPTION Required
+DURATION Reply with Not Supported
+DTSTAMP Required
+DTSTART Required
+DTEND Required
+EXDATE Ignore
+EXRULE Ignore Reply with Not Supported. If implemented,
+ VTIMEZONE MUST also be implemented.
+GEO Ignore
+LAST-MODIFIED Ignore
+LOCATION Required
+ORGANIZER Ignore
+PRIORITY Ignore
+RELATED-TO Ignore
+RDATE Ignore
+RRULE Ignore. The first instance occurs on the DTStart
+ property. If implemented, VTIMEZONE MUST also be
+ implemented.
+RECURRENCE-ID Required if RRULE is implemented; otherwise Ignore
+REQUEST-STATUS Required
+RESOURCES Ignore
+SEQUENCE Required
+STATUS Ignore
+SUMMARY Ignore
+TRANSP Required if FREEBUSY is implemented; otherwise Ignore
+URL Ignore
+UID Required
+X- Ignore
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 98]
+
+RFC 2446 iTIP November 1998
+
+
+5.1.2 Free/Busy-Related Fallbacks
+
+Method Fallback
+-------------- -----------------------------------------------------
+PUBLISH Implementations MAY ignore the METHOD type. The
+ REQUEST-STATUS "3.14;Unsupported capability" MUST be
+ returned.
+REQUEST Implementations MAY ignore the METHOD type. The
+ REQUEST-STATUS "3.14;Unsupported capability" MUST be
+ returned.
+REPLY Implementations MAY ignore the METHOD type. The
+ REQUEST-STATUS "3.14;Unsupported capability" MUST be
+ returned.
+
+
+iCalendar
+Property Fallback
+-------------- -----------------------------------------------------
+CALSCALE Ignore; assume GREGORIAN.
+PRODID Ignore
+METHOD Required as described in the Method list above.
+VERSION Ignore
+
+
+Component
+Property Fallback
+-------------- -----------------------------------------------------
+COMMENT Ignore
+CONTACT Ignore
+DTEND Required
+DTSTAMP Required
+DTSTART Required
+DURATION Required
+FREEBUSY Required
+ORGANIZER Ignore
+REQUEST-STATUS Ignore
+UID Required
+URL Ignore
+X- Ignore
+
+5.1.3 To-Do-Related Fallbacks
+
+Method Fallback
+-------------- -----------------------------------------------------
+PUBLISH Required
+REQUEST PUBLISH
+REPLY Required
+ADD Required
+
+
+
+Silverberg, et. al. Standards Track [Page 99]
+
+RFC 2446 iTIP November 1998
+
+
+CANCEL Required
+REFRESH Required
+COUNTER Reply with Not Supported
+DECLINECOUNTER Required if VTODO - COUNTER is implemented; otherwise
+ reply with Not Supported
+
+iCalendar
+Property Fallback
+-------------- -----------------------------------------------------
+CALSCALE Ignore; assume GREGORIAN.
+PRODID Ignore
+METHOD Required as described in the Method list above.
+VERSION Ignore
+
+
+To-Do-Related
+Components Fallback
+-------------- -----------------------------------------------------
+VALARM Reply with Not Supported
+VTIMEZONE Required if any DateTime value refers to a time zone.
+
+
+Component
+Property Fallback
+-------------- -----------------------------------------------------
+ATTACH Ignore
+ATTENDEE Required if REQUEST is not implemented; otherwise
+ ignore
+CATEGORIES Ignore
+CLASS Ignore
+COMMENT Ignore
+COMPLETED Required
+CONTACT Ignore
+CREATED Ignore
+DESCRIPTION Required
+DUE Required
+DURATION Ignore Reply with Not Supported
+DTSTAMP Required
+DTSTART Required
+EXDATE Ignore Reply with Not Supported
+EXRULE Ignore Reply with Not Supported. If implemented,
+ VTIMEZONE MUST also be implemented.
+LAST-MODIFIED Ignore
+LOCATION Ignore
+ORGANIZER Ignore
+PERCENT-COMPLETE Ignore
+PRIORITY Required
+RECURRENCE-ID Ignore
+
+
+
+Silverberg, et. al. Standards Track [Page 100]
+
+RFC 2446 iTIP November 1998
+
+
+RELATED-TO Ignore
+REQUEST-STATUS Ignore
+RDATE Ignore
+RRULE Ignore. The first instance occurs on the DTSTART
+ property. If implemented, VTIMEZONE MUST also be
+ implemented.
+RESOURCES Ignore
+SEQUENCE Required
+STATUS Required
+SUMMARY Ignore
+URL Ignore
+UID Required
+X- Ignore
+
+5.1.4 Journal-Related Fallbacks
+
+
+Method Fallback
+-------------- -----------------------------------------------------
+PUBLISH Implementations MAY ignore the METHOD type. The
+ REQUEST-STATUS "3.14;Unsupported capability" MUST be
+ returned.
+ADD Implementations MAY ignore the METHOD type. The
+ REQUEST-STATUS "3.14;Unsupported capability" MUST be
+ returned.
+CANCEL Implementations MAY ignore the METHOD type. The
+ REQUEST-STATUS "3.14;Unsupported capability" MUST be
+ returned.
+
+
+iCalendar
+Property Fallback
+-------------- -----------------------------------------------------
+CALSCALE Ignore; assume GREGORIAN.
+PRODID Ignore
+METHOD Required as described in the Method list above.
+VERSION Ignore
+
+
+Journal-Related
+Components Fallback
+-------------- -----------------------------------------------------
+VTIMEZONE Required if any DateTime value refers to a time zone.
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 101]
+
+RFC 2446 iTIP November 1998
+
+
+Component
+Property Fallback
+-------------- -----------------------------------------------------
+ATTACH Ignore
+ATTENDEE Required if JOURNAL-REQUEST is implemented; otherwise
+ ignore
+CATEGORIES Ignore
+CLASS Ignore
+COMMENT Ignore
+CONTACT Ignore
+CREATED Ignore
+DESCRIPTION Required
+DTSTAMP Required
+DTSTART Required
+EXDATE Ignore
+EXRULE Ignore Reply with Not Supported. If implemented,
+ VTIMEZONE MUST also be implemented.
+LAST-MODIFIED Ignore
+ORGANIZER Ignore
+RECURRENCE-ID Ignore
+RELATED-TO Ignore
+RDATE Ignore.
+RRULE Ignore. The first instance occurs on the DTSTART
+ property. If implemented, VTIMEZONE MUST also be
+ implemented.
+SEQUENCE Required
+STATUS Ignore
+SUMMARY Required
+URL Ignore
+UID Required
+X- Ignore
+
+5.2 Latency Issues
+
+ With a store-and-forward transport, it is possible for events to
+ arrive out of sequence. That is, a "CANCEL" method may be received
+ prior to receiving the associated "REQUEST" for the calendar
+ component. This section discusses a few of these scenarios.
+
+5.2.1 Cancellation of an Unknown Calendar Component.
+
+ When a "CANCEL" method is received before the original "REQUEST"
+ method the calendar will be unable to correlate the "UID" property of
+ the cancellation with an existing calendar component. It is suggested
+ that messages that can not be correlated that also contain non-zero
+ sequence numbers be held and not discarded. Implementations MAY age
+ them out if no other messages arrive with the same "UID" property
+ value and a lower sequence number.
+
+
+
+Silverberg, et. al. Standards Track [Page 102]
+
+RFC 2446 iTIP November 1998
+
+
+5.2.2 Unexpected Reply from an Unknown Delegate
+
+ When an "Attendee" delegates an item to another CU they MUST send a
+ "REPLY" method to the "Organizer" using the "ATTENDEE" properties to
+ indicate that the request was delegated and to whom. Hence, it is
+ possible for an "Organizer" to receive an "REPLY" from a CU not
+ listed as one of the original "Attendees". The resolution is left to
+ the implementation but it is expected that the calendaring software
+ will either accept the reply or hold it until the related "REPLY"
+ method is received from the "Delegator". If the version of the
+ "REPLY" method is out of date the "Organizer" SHOULD treat the
+ message as a "REFRESH" message and update the delegate with the
+ correct version.
+
+5.3 Sequence Number
+
+ Under some conditions, a CUA may receive requests and replies with
+ the same "SEQUENCE" property value. The "DTSTAMP" property is
+ utilized as a tie-breaker when two items with the same "SEQUENCE"
+ property value are evaluated.
+
+6 Security Considerations
+
+ ITIP is an abstract transport protocol which will be bound to a
+ real-time transport, a store-and-forward transport, and perhaps other
+ transports. The transport protocol will be responsible for providing
+ facilities for authentication and encryption using standard Internet
+ mechanisms that are mutually understood between the sender and
+ receiver.
+
+6.1 Security Threats
+
+6.1.1 Spoofing the "Organizer"
+
+ In iTIP, the "Organizer" (or someone working on the "Organizer's"
+ behalf) is the only person authorized to make changes to an existing
+ "VEVENT", "VTODO", "VJOURNAL" calendar component and republish it or
+ redistribute updates to the "Attendees". An iCalendar object that
+ maliciously changes or cancels an existing "VEVENT", "VTODO" or
+ "VJOURNAL" calendar component may be constructed by someone other
+ than the "Organizer" and republished or sent to the "Attendees".
+
+6.1.2 Spoofing the "Attendee"
+
+ In iTIP, an "Attendee" of a "VEVENT" or "VTODO" calendar component
+ (or someone working on the "Attendee's" behalf) is the only person
+ authorized to update any parameter associated with their "ATTENDEE"
+ property and send it to the "Organizer". An iCalendar object that
+
+
+
+Silverberg, et. al. Standards Track [Page 103]
+
+RFC 2446 iTIP November 1998
+
+
+ maliciously changes the "ATTENDEE" parameters may be constructed by
+ someone other than the real "Attendee" and sent to the "Organizer".
+
+6.1.3 Unauthorized Replacement of the Organizer
+
+ There will be circumstances when "Attendees" of an event or to-do
+ decide, using out-of-band mechanisms, that the "Organizer" must be
+ replaced. When the new "Organizer" sends out the updated "VEVENT" or
+ "VTODO" the "Attendee's" CUA will detect that the "Organizer" has
+ been changed, but it has no way of knowing whether or not the change
+ was mutually agreed upon.
+
+6.1.4 Eavesdropping
+
+ The iCalendar object is constructed with human-readable clear text.
+ Any information contained in an iCalendar object may be read and/or
+ changed by unauthorized persons while the object is in transit.
+
+6.1.5 Flooding a Calendar
+
+ Implementations MAY provide a means to automatically incorporate
+ "REQUEST" methods into a calendar. This presents the opportunity for
+ a calendar to be flooded with requests, which effectively block all
+ the calendar's free time.
+
+6.1.6 Procedural Alarms
+
+ The "REQUEST" methods for "VEVENT" and "VTODO" calendar components
+ MAY contain "VALARM" calendar components. The "VALARM" calendar
+ component may be of type "PROCEDURE" and MAY have an attachment
+ containing an executable program. Implementations that incorporate
+ these types of alarms are subject to any virus or malicious attack
+ that may occur as a result of executing the attachment.
+
+6.1.7 Unauthorized REFRESH Requests
+
+ It is possible for an "Organizer" to receive a "REFRESH" request from
+ someone who is not an "Attendee" of an event or to-do. Only
+ "Attendee's" of an event or to-do are authorized to receive replies
+ to "REFRESH" requests. Replying to such requests to anyone who is not
+ an "Attendee" may be a security problem.
+
+6.2 Recommendations
+
+ For an application where the information is sensitive or critical and
+ the network is subject is subject to a high probability of attack,
+ iTIP transactions SHOULD be encrypted. This may be accomplished using
+ public key technology, specifically Security Multiparts for MIME
+
+
+
+Silverberg, et. al. Standards Track [Page 104]
+
+RFC 2446 iTIP November 1998
+
+
+ [RFC-1847] in the iTIP transport binding. This helps mitigate the
+ threats of spoofing, eavesdropping and malicious changes in transit.
+
+6.2.1 Use of [RFC-1847] to secure iTIP transactions
+
+ iTIP transport bindings MUST provide a mechanism based on Security
+ Multiparts for MIME [RFC-1847] to enable authentication of the
+ sender's identity, and privacy and integrity of the data being
+ transmitted. This allows the receiver of a signed iCalendar object to
+ verify the identity of the sender. This sender may then be correlated
+ to an "ATTENDEE" property in the iCalendar object. If the correlation
+ is made and the sender is authorized to make the requested change or
+ update then the operation may proceed. It also allows the message to
+ be encrypted to prevent unauthorized reading of the message contents
+ in transit. iTIP transport binding documents describe this process in
+ detail.
+
+ Implementations MAY provide controls for users to disable this
+ capability.
+
+6.2.2 Implementation Controls
+
+ The threat of unauthorized replacement of the "Organizer" SHOULD be
+ mitigated by a calendar system that uses this protocol by providing
+ controls or alerts that make "Calendar Users" aware of such
+ "Organizer" changes and allowing them to decide whether or not the
+ request should be honored.
+
+ The threat of flooding a calendar SHOULD be mitigated by a calendar
+ system that uses this protocol by providing controls that may be used
+ to limit the acceptable sources for iTIP transactions, and perhaps
+ the size of messages and volume of traffic, by source.
+
+ The threat of malicious procedural alarms SHOULD be mitigated by a
+ calendar system that uses this protocol by providing controls that
+ may be used to disallow procedural alarms in iTIP transactions and/or
+ remove all alarms from the object before delivery to the recipient.
+
+ The threat of unauthorized "REFRESH" requests SHOULD be mitigated by
+ a calendar system that uses this protocol by providing controls or
+ alerts that allow "Calendar User" to decide whether or not the
+ request should be honored. An implementation MAY decide to maintain,
+ for audit or historical purposes, "Calendar Users" who were part of
+ an attendee list and who were subsequently uninvited. Similar
+ controls or alerts should be provided when a "REFRESH" request is
+ received from these "Calendar Users" as well.
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 105]
+
+RFC 2446 iTIP November 1998
+
+
+7 Acknowledgments
+
+ A hearty thanks to the following individuals who have participated in
+ the drafting, review and discussion of this memo:
+
+ Anik Ganguly, Dan Hickman, Paul Hill, Daryl Huff, Bruce Kahn, Antoine
+ Leca, Bob Mahoney, John Noerenberg, Leo Parker, John Rose, Doug
+ Royer, Vinod Seraphin, Richard Shusterman, Derik Stenerson, John Sun,
+ Alexander Taler, Kevin Tsurutome.
+
+8 Bibliography
+
+ [iCAL] Dawson, F. and D. Stenerson, "Internet Calendaring and
+ Scheduling Core Object Specification - iCalendar", RFC
+ 2445, November 1998.
+
+ [iMIP] Dawson, F., Mansour, S. and S. Silverberg, "iCalendar
+ Message-Based Interoperability Protocol - iMIP", RFC 2447,
+ November 1998.
+
+ [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [US-ASCII] Coded Character Set--7-bit American Standard Code for
+ Information Interchange, ANSI X3.4-1986.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 106]
+
+RFC 2446 iTIP November 1998
+
+
+9 Authors' Addresses
+
+ The following address information is provided in a vCard v3.0,
+ Electronic Business Card, format.
+
+ The authors of this memo are:
+
+ BEGIN:VCARD
+ VERSION:3.0
+ N:Dawson;Frank
+ FN:Frank Dawson
+ ORG:Lotus Development Corporation
+ ADR;WORK;POSTAL;PARCEL:;;6544 Battleford Drive;Raleigh;NC;27613-
+ 3502;USA
+ TEL;TYPE=WORK,MSG:+1-919-676-9515
+ TEL;TYPE=WORK,FAX:+1-919-676-9564
+ EMAIL;TYPE=PREF,INTERNET:Frank_Dawson@Lotus.com
+ EMAIL;TYPE=INTERNET:fdawson@earthlink.net
+ URL:http://home.earthlink.net/~fdawson
+ END:VCARD
+
+ BEGIN:VCARD
+ VERSION:3.0
+ N:Hopson;Ross
+ FN:Ross Hopson
+ ORG:On Technology, Inc.
+ ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 1600;434 Fayetteville St.
+ Mall\, Two Hannover Square;Raleigh;NC;27601
+ TEL;TYPE=WORK,MSG:+1-919-890-4036
+ TEL;TYPE=WORK,FAX:+1-919-890-4100
+ EMAIL;TYPE=INTERNET:rhopson@on.com
+ END:VCARD
+
+ BEGIN:VCARD
+ VERSION:3.0
+ N:Mansour;Steve
+ FN:Steve Mansour
+ ORG:Netscape Communications Corporation
+ ADR;TYPE=WORK,POSTAL,PARCEL:;;501 East Middlefield Road;Mountain
+ View;CA;94043;USA
+ TEL;TYPE=WORK,MSG:+1-650-937-2378
+ TEL;TYPE=WORK,FAX:+1-650-937-2103
+ EMAIL;TYPE=INTERNET:sman@netscape.com
+ END:VCARD
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 107]
+
+RFC 2446 iTIP November 1998
+
+
+ BEGIN:VCARD
+ VERSION:3.0
+ N:Silverberg;Steve
+ FN:Steve Silverberg
+ ORG:Microsoft Corporation
+ ADR;TYPE=WORK,POSTAL,PARCEL:;;One Microsoft Way;
+ Redmond;WA;98052-6399;USA
+ TEL;TYPE=WORK,MSG:+1-425-936-9277
+ TEL;TYPE=WORK,FAX:+1-425-936-8019
+ EMAIL;INTERNET:stevesil@Microsoft.com
+ END:VCARD
+
+ The iCalendar object is a result of the work of the Internet
+ Engineering Task Force Calendaring and scheduling Working Group. The
+ chairman of that working group is:
+
+ BEGIN:VCARD
+ VERSION:3.0
+ N:Ganguly;Anik
+ FN:Anik Ganguly
+ ORG:Open Text Inc.
+ ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 101;38777 West Six Mile Road;
+ Livonia;MI;48152;USA
+ TEL;TYPE=WORK,MSG:+1-734-542-5955
+ EMAIL;TYPE=INTERNET:ganguly@acm.org
+ END:VCARD
+
+ The co-chairman of that working group is:
+
+ BEGIN:VCARD
+ VERSION:3.0
+ N:Moskowitz;Robert
+ FN:Robert Moskowitz
+ NICKNAME:Bob
+ EMAIL; TYPE=INTERNET:rgm-ietf@htt-consult.com
+ END:VCARD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 108]
+
+RFC 2446 iTIP November 1998
+
+
+10. Full Copyright Statement
+
+ Copyright (C) The Internet Society (1998). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Silverberg, et. al. Standards Track [Page 109]
+