home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-10-14 | 226.6 KB | 6,108 lines |
-
-
-
-
-
-
- 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]
-
-