Internet DRAFT - draft-ietf-calsify-2446bis
draft-ietf-calsify-2446bis
Network Working Group C. Daboo, Ed.
Internet-Draft Apple Inc.
Obsoletes: 2446 (if approved) November 3, 2008
Intended status: Standards Track
Expires: May 7, 2009
iCalendar Transport-Independent Interoperability Protocol (iTIP)
draft-ietf-calsify-2446bis-08
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 7, 2009.
Abstract
This document specifies a protocol using the iCalendar object
specification to provide scheduling interoperability between
different calendaring systems. This is done without reference to a
specific transport protocol so as to allow multiple methods of
communication between systems. Subsequent documents will define
profiles of this protocol using specific interoperable methods of
communications between systems.
iTIP complements the iCalendar object specification by adding
semantics for group scheduling methods commonly available in current
calendaring systems. These scheduling methods permit two or more
Daboo Expires May 7, 2009 [Page 1]
Internet-Draft iTIP November 2008
calendaring systems to perform transactions such as publish,
schedule, reschedule, respond to scheduling requests, negotiation of
changes or cancel.
Table of Contents
1. Introduction and Overview . . . . . . . . . . . . . . . . . . 5
1.1. Formatting Conventions . . . . . . . . . . . . . . . . . 5
1.2. Related Documents . . . . . . . . . . . . . . . . . . . . 6
1.3. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4. Methods . . . . . . . . . . . . . . . . . . . . . . . . . 7
2. Interoperability Models . . . . . . . . . . . . . . . . . . . 8
2.1. Application Protocol . . . . . . . . . . . . . . . . . . 9
2.1.1. Scheduling State . . . . . . . . . . . . . . . . . . 9
2.1.2. Delegation . . . . . . . . . . . . . . . . . . . . . 10
2.1.3. Acting on Behalf of other Calendar Users . . . . . . 10
2.1.4. Component Revisions . . . . . . . . . . . . . . . . . 10
2.1.5. Message Sequencing . . . . . . . . . . . . . . . . . 12
3. Application Protocol Elements . . . . . . . . . . . . . . . . 13
3.1. Common Component Restriction Tables . . . . . . . . . . . 14
3.1.1. VCALENDAR . . . . . . . . . . . . . . . . . . . . . . 14
3.1.2. VTIMEZONE . . . . . . . . . . . . . . . . . . . . . . 14
3.1.3. VALARM . . . . . . . . . . . . . . . . . . . . . . . 15
3.2. Methods for VEVENT Calendar Components . . . . . . . . . 16
3.2.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.5. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.6. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.7. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.8. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . 33
3.3. Methods For VFREEBUSY Components . . . . . . . . . . . . 34
3.3.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4. Methods For VTODO Components . . . . . . . . . . . . . . 39
3.4.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4.4. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4.5. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 50
3.4.6. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.7. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 54
3.4.8. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . 56
3.5. Methods For VJOURNAL Components . . . . . . . . . . . . . 58
3.5.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 58
Daboo Expires May 7, 2009 [Page 2]
Internet-Draft iTIP November 2008
3.5.2. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.5.3. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 62
3.6. Status Replies . . . . . . . . . . . . . . . . . . . . . 64
3.7. Implementation Considerations . . . . . . . . . . . . . . 67
3.7.1. Working With Recurrence Instances . . . . . . . . . . 67
3.7.2. Attendee Property Considerations . . . . . . . . . . 68
3.7.3. Extension Tokens . . . . . . . . . . . . . . . . . . 69
4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.1. Published Event Examples . . . . . . . . . . . . . . . . 69
4.1.1. A Minimal Published Event . . . . . . . . . . . . . . 70
4.1.2. Changing A Published Event . . . . . . . . . . . . . 70
4.1.3. Canceling A Published Event . . . . . . . . . . . . . 71
4.1.4. A Rich Published Event . . . . . . . . . . . . . . . 71
4.1.5. Anniversaries or Events attached to entire days . . . 73
4.2. Group Event Examples . . . . . . . . . . . . . . . . . . 73
4.2.1. A Group Event Request . . . . . . . . . . . . . . . . 74
4.2.2. Reply To A Group Event Request . . . . . . . . . . . 75
4.2.3. Update An Event . . . . . . . . . . . . . . . . . . . 75
4.2.4. Countering an Event Proposal . . . . . . . . . . . . 76
4.2.5. Delegating an Event . . . . . . . . . . . . . . . . . 79
4.2.6. Delegate Accepts the Meeting . . . . . . . . . . . . 81
4.2.7. Delegate Declines the Meeting . . . . . . . . . . . . 82
4.2.8. Forwarding an Event Request . . . . . . . . . . . . . 83
4.2.9. Cancel A Group Event . . . . . . . . . . . . . . . . 83
4.2.10. Removing Attendees . . . . . . . . . . . . . . . . . 84
4.2.11. Replacing the Organizer . . . . . . . . . . . . . . . 86
4.3. Busy Time Examples . . . . . . . . . . . . . . . . . . . 87
4.3.1. Publish Busy Time . . . . . . . . . . . . . . . . . . 87
4.3.2. Request Busy Time . . . . . . . . . . . . . . . . . . 88
4.3.3. Reply To A Busy Time Request . . . . . . . . . . . . 89
4.4. Recurring Event and Time Zone Examples . . . . . . . . . 89
4.4.1. A Recurring Event Spanning Time Zones . . . . . . . . 89
4.4.2. Modify A Recurring Instance . . . . . . . . . . . . . 91
4.4.3. Cancel an Instance . . . . . . . . . . . . . . . . . 93
4.4.4. Cancel Recurring Event . . . . . . . . . . . . . . . 94
4.4.5. Change All Future Instances . . . . . . . . . . . . . 94
4.4.6. Add A New Instance To A Recurring Event . . . . . . . 95
4.4.7. Add A New Series of Instances To A Recurring Event . 96
4.4.8. Counter An Instance Of A Recurring Event . . . . . . 101
4.4.9. Error Reply To A Request . . . . . . . . . . . . . . 102
4.5. Group To-do Examples . . . . . . . . . . . . . . . . . . 104
4.5.1. A VTODO Request . . . . . . . . . . . . . . . . . . . 105
4.5.2. A VTODO Reply . . . . . . . . . . . . . . . . . . . . 105
4.5.3. A VTODO Request for Updated Status . . . . . . . . . 106
4.5.4. A Reply: Percent-Complete . . . . . . . . . . . . . . 106
4.5.5. A Reply: Completed . . . . . . . . . . . . . . . . . 107
4.5.6. An Updated VTODO Request . . . . . . . . . . . . . . 107
4.5.7. Recurring VTODOs . . . . . . . . . . . . . . . . . . 108
Daboo Expires May 7, 2009 [Page 3]
Internet-Draft iTIP November 2008
4.6. Journal Examples . . . . . . . . . . . . . . . . . . . . 109
4.7. Other Examples . . . . . . . . . . . . . . . . . . . . . 109
4.7.1. Event Refresh . . . . . . . . . . . . . . . . . . . . 109
4.7.2. Bad RECURRENCE-ID . . . . . . . . . . . . . . . . . . 110
5. Application Protocol Fallbacks . . . . . . . . . . . . . . . 113
5.1. Partial Implementation . . . . . . . . . . . . . . . . . 113
5.1.1. Event-Related Fallbacks . . . . . . . . . . . . . . . 113
5.1.2. Free/Busy-Related Fallbacks . . . . . . . . . . . . . 115
5.1.3. To-Do-Related Fallbacks . . . . . . . . . . . . . . . 116
5.1.4. Journal-Related Fallbacks . . . . . . . . . . . . . . 118
5.2. Latency Issues . . . . . . . . . . . . . . . . . . . . . 119
5.2.1. Cancellation of an Unknown Calendar Component. . . . 119
5.2.2. Unexpected Reply from an Unknown Delegate . . . . . . 120
5.3. Sequence Number . . . . . . . . . . . . . . . . . . . . . 120
6. Security Considerations . . . . . . . . . . . . . . . . . . . 120
6.1. Security Threats . . . . . . . . . . . . . . . . . . . . 120
6.1.1. Spoofing the "Organizer" . . . . . . . . . . . . . . 120
6.1.2. Spoofing the "Attendee" . . . . . . . . . . . . . . . 120
6.1.3. Unauthorized Replacement of the Organizer . . . . . . 121
6.1.4. Eavesdropping . . . . . . . . . . . . . . . . . . . . 121
6.1.5. Flooding a Calendar . . . . . . . . . . . . . . . . . 121
6.1.6. Unauthorized REFRESH Requests . . . . . . . . . . . . 121
6.2. Recommendations . . . . . . . . . . . . . . . . . . . . . 121
6.2.1. Use of [RFC1847] to secure iTIP transactions . . . . 121
6.2.2. Implementation Controls . . . . . . . . . . . . . . . 122
7. IANA Consideration . . . . . . . . . . . . . . . . . . . . . 122
7.1. METHOD:PUBLISH . . . . . . . . . . . . . . . . . . . . . 123
7.2. METHOD:REQUEST . . . . . . . . . . . . . . . . . . . . . 123
7.3. METHOD:REPLY . . . . . . . . . . . . . . . . . . . . . . 123
7.4. METHOD:ADD . . . . . . . . . . . . . . . . . . . . . . . 123
7.5. METHOD:CANCEL . . . . . . . . . . . . . . . . . . . . . . 124
7.6. METHOD:REFRESH . . . . . . . . . . . . . . . . . . . . . 124
7.7. METHOD:COUNTER . . . . . . . . . . . . . . . . . . . . . 124
7.8. METHOD:DECLINE-COUNTER . . . . . . . . . . . . . . . . . 124
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 124
9. Normative References . . . . . . . . . . . . . . . . . . . . 125
Appendix A. Differences from RFC 2446 . . . . . . . . . . . . . 125
A.1. Changed Restrictions . . . . . . . . . . . . . . . . . . 125
A.2. Deprecated features . . . . . . . . . . . . . . . . . . . 126
Appendix B. Change History (to be removed prior to
publication as an RFC) . . . . . . . . . . . . . . . 126
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 129
Intellectual Property and Copyright Statements . . . . . . . . . 130
Daboo Expires May 7, 2009 [Page 4]
Internet-Draft iTIP November 2008
1. Introduction and Overview
This document specifies how calendaring systems use iCalendar
[I-D.ietf-calsify-rfc2445bis] objects to interoperate with other
calendaring 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 without specifying how communication between different
systems actually takes place. 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.
This specification obsoletes RFC 2446 - a list of important changes
is provided in Appendix A.
1.1. Formatting Conventions
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 [RFC2119].
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.
Calendar components defined by [I-D.ietf-calsify-rfc2445bis] 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 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 [I-D.ietf-calsify-rfc2445bis] are referred to
Daboo Expires May 7, 2009 [Page 5]
Internet-Draft iTIP November 2008
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 defined by this specification are referred to
with capitalized, 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 specification 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
specifications that, along with this one, describe the Internet
calendaring and scheduling standards. The related documents are:
[I-D.ietf-calsify-rfc2445bis] - specifies the objects, data types,
properties and property parameters used in the protocols, along
with the methods for representing and encoding them.
[I-D.ietf-calsify-rfc2447bis] specifies an Internet email binding
for iTIP.
This specification does not attempt to repeat the concepts or
definitions from these other specifications. Where possible,
explicit references are made to the other specifications.
1.3. Roles
Exchanges of iCalendar objects for the purposes of group calendaring
and scheduling occur between "Calendar Users" (CUs). CUs take on
several roles in iTIP:
+-----------+-------------------------------------------------------+
| Role | Description |
+-----------+-------------------------------------------------------+
| Organizer | The CU who initiates an exchange takes on the role of |
| | "Organizer". For example, the CU who proposes a |
| | group meeting is the "Organizer". |
| | |
Daboo Expires May 7, 2009 [Page 6]
Internet-Draft iTIP November 2008
| Attendee | CUs who are included in the scheduling message as |
| | possible recipients of that scheduling message. For |
| | example, the CUs asked to participate in a group |
| | meeting by the "Organizer" take on the role of |
| | "Attendee". |
| | |
| Other CU | A CU that is not explicitly included in a scheduling |
| | message, i.e., not the "Organizer" or an "Attendee". |
+-----------+-------------------------------------------------------+
Note that "ROLE" is also a descriptive parameter to the iCalendar
"ATTENDEE" property. Its use is to convey descriptive context about
an "Attendee" such as "chair", "required participant" or "non-
required participant" and has nothing to do with the calendaring
workflow.
1.4. Methods
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 an iCalendar object 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 an iCalendar object 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 tasks to other |
| | Calendar Users are all examples. Requests are |
| | also used by the "Organizer" to update the |
| | status of an iCalendar object. |
| | |
| 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 new instances to an existing |
| | recurring iCalendar object. |
| | |
Daboo Expires May 7, 2009 [Page 7]
Internet-Draft iTIP November 2008
| CANCEL | Cancel one or more instances of an existing |
| | iCalendar object. |
| | |
| REFRESH | The Refresh method is used by an "Attendee" to |
| | request the latest version of an iCalendar |
| | object. |
| | |
| COUNTER | The Counter method is used by an "Attendee" to |
| | negotiate a change in an iCalendar objecy. |
| | Examples include the request to change a |
| | proposed event time or change the due date for a |
| | task. |
| | |
| DECLINECOUNTER | Used by the "Organizer" to decline the proposed |
| | counter-proposal. |
+----------------+--------------------------------------------------+
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. In addition, apart from "VTIMEZONE"
iCalendar components, only one component type is allowed in a single
iTIP message.
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
[I-D.ietf-calsify-rfc2447bis] focus on the Transport Protocol.
The connection between Sender and Receiver in the diagram below
Daboo Expires May 7, 2009 [Page 8]
Internet-Draft iTIP November 2008
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.
+--------------------------------------------------------+
| iTIP Protocol |
+--------------------------------------------------------+
| Transport |
+ - - - - - + - - - - - - + - - - - - +
| Real-time | Store-and-Forward | Others |
+-----------------+--------------------+-----------------+
2.1. Application Protocol
In the iTIP model, an iCalendar object 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 iCalendar object. They can, however,
use the "COUNTER" method to suggest changes to the "Organizer". In
any case, the "Organizer" has complete control over the master
iCalendar object.
2.1.1. Scheduling State
There are two distinct states relevant to iCalendar objects used in
scheduling: the overall state of the iCalendar object and the state
associated with an "Attendee" in that iCalendar object.
Daboo Expires May 7, 2009 [Page 9]
Internet-Draft iTIP November 2008
The state of an iCalendar object 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 iCalendar object.
The state of a particular "Attendee" relative to a iCalendar object
used for scheduling is defined by the "PARTSTAT" parameter in the
"ATTENDEE" property for each "Attendee". When an "Organizer" issues
the initial iCalendar object, "Attendee" status is typically 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.
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. When the "Organizer" makes
changes to one of the following properties, the sequence number MUST
Daboo Expires May 7, 2009 [Page 10]
Internet-Draft iTIP November 2008
be incremented:
o "DTSTART"
o "DTEND"
o "DURATION"
o "DUE"
o "RRULE"
o "RDATE"
o "EXDATE"
o "STATUS"
In addition, changes made by the "Organizer" to other properties MAY
also require the sequence number to be incremented. The "Organizer"
CUA MUST increment the sequence number whenever it makes changes to
properties in the calendar component that the "Organizer" deems will
jeopardize the validity of the participation status of the
"Attendees". For example, changing the location of a meeting from
one location to another distant location could effectively impact the
participation status of the "Attendees".
Depending on the "METHOD", the "SEQUENCE" property MUST follow these
rules in the context of iTIP:
o For the "PUBLISH" and "REQUEST" methods, the "SEQUENCE" property
value is incremented according to the rules stated above.
o The "SEQUENCE" property value MUST be incremented each time the
"Organizer" uses the "ADD" or "CANCEL" methods.
o 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.
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 iCalendar object that has been revised and
allow the CU to decide whether or not to accept the response.
Whilst a change in sequence number is indicative of a significant
change to a previously scheduled item, "Attendee" CUAs SHOULD NOT
rely solely on a change in sequence number as a means of detecting a
significant change. Instead CUAs SHOULD compare the old and new
Daboo Expires May 7, 2009 [Page 11]
Internet-Draft iTIP November 2008
versions of the calendar components and determine the exact nature of
the changes and make decisions, possibly based on calendar user
preferences, as to whether the user needs to be explicitly informed
of the change.
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" and
"RECURRENCE-ID" property values are 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" and "RECURRENCE-ID" property values are
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", "RECURRENCE-ID", and "SEQUENCE"
property values 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",
"RECURRENCE-ID", and "SEQUENCE" property values match, the
response with the latest "DTSTAMP" overrides all others.
Hence, CUAs will need to persist the following component properties
in order to correctly process iTIP messages: "UID", "RECURRENCE-ID",
Daboo Expires May 7, 2009 [Page 12]
Internet-Draft iTIP November 2008
"SEQUENCE", and "DTSTAMP". Furthermore, for each "ATTENDEE" property
of a component, "Organizer" CUAs will need to persist the "SEQUENCE"
and "DTSTAMP" property values associated with the "Attendee's" last
response, so that any earlier responses from an "Attendee" that are
received out of order (e.g., due to a delay in the transport) can be
correctly discarded.
3. Application Protocol Elements
ITIP messages are "text/calendar" MIME entities that contain
calendaring and scheduling information. The particular type of
iCalendar 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
specification 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 |
| DECLINECOUNTER | 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 (the "Presence" column) indicates
whether a component or property should be present or not, and if
present how many times it can occur. The third column contains
comments for further clarification.
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.
Daboo Expires May 7, 2009 [Page 13]
Internet-Draft iTIP November 2008
+----------------+--------------------------------------------------+
| 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 "IANA-PROPERTY", "X-PROPERTY", "IANA-
COMPONENT" and "X-COMPONENT" to show where registered and vendor-
specific property and component extensions can appear. The tables do
not lay out the restrictions of property parameters. Those
restrictions are defined in [I-D.ietf-calsify-rfc2445bis].
3.1. Common Component Restriction Tables
3.1.1. VCALENDAR
The restriction table below applies to properties of the iCalendar
object. That is, the properties at the outermost scope.
+-----------------------------------------------------+
| Constraints for properties in a VCALENDAR Component |
+-----------------------------------------------------+
+--------------------+----------+---------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+---------------------+
| CALSCALE | 0 or 1 | |
| PRODID | 1 | |
| VERSION | 1 | Value MUST be "2.0" |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
+--------------------+----------+---------------------+
3.1.2. VTIMEZONE
"VTIMEZONE" components may be referred to by other components via a
"TZID" parameter on a "DATETIME" value type. The property
restrictions in the table below apply to any "VTIMEZONE" component in
an ITIP message.
+--------------------------------------+
| Constraints for VTIMEZONE Components |
+--------------------------------------+
Daboo Expires May 7, 2009 [Page 14]
Internet-Draft iTIP November 2008
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| 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+ | |
| DTSTART | 1 | MUST be local time format |
| RDATE | 0+ | if present RRULE MUST NOT be |
| | | present |
| RRULE | 0 or 1 | if present RDATE MUST NOT be |
| | | present |
| TZNAME | 0+ | |
| TZOFFSETFROM | 1 | |
| TZOFFSETTO | 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| LAST-MODIFIED | 0 or 1 | |
| STANDARD | 0+ | MUST be one or more of either |
| | | STANDARD or DAYLIGHT |
| COMMENT | 0+ | |
| DTSTART | 1 | MUST be local time format |
| RDATE | 0+ | if present RRULE MUST NOT be |
| | | present |
| RRULE | 0 or 1 | if present RDATE MUST NOT be |
| | | present |
| TZNAME | 0+ | |
| TZOFFSETFROM | 1 | |
| TZOFFSETTO | 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| TZID | 1 | |
| TZURL | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
+--------------------+----------+-----------------------------------+
3.1.3. VALARM
The property restrictions in the table below apply to any "VALARM"
component in an ITIP message.
+-----------------------------------+
| Constraints for VALARM Components |
+-----------------------------------+
Daboo Expires May 7, 2009 [Page 15]
Internet-Draft iTIP November 2008
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| VALARM | 0+ | |
| ACTION | 1 | |
| ATTACH | 0+ | |
| ATTENDEE | 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 | |
| IANA-PROPERTY | 0+ | |
| 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.
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. |
| | |
Daboo Expires May 7, 2009 [Page 16]
Internet-Draft iTIP November 2008
| 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.
This method type is an iCalendar object that conforms to the
following property constraints:
+----------------------------------------------+
| Constraints for a METHOD:PUBLISH of a VEVENT |
+----------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| 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. |
Daboo Expires May 7, 2009 [Page 17]
Internet-Draft iTIP November 2008
| SEQUENCE | 0 or 1 | MUST be present if value is |
| | | greater than 0, MAY be present if |
| | | 0 |
| ATTACH | 0+ | |
| CATEGORIES | 0+ | |
| CLASS | 0 or 1 | |
| COMMENT | 0+ | |
| CONTACT | 0 or 1 | |
| 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+ | |
| GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | |
| RDATE | 0+ | |
| RELATED-TO | 0+ | |
| RESOURCES | 0+ | |
| RRULE | 0 or 1 | |
| STATUS | 0 or 1 | MAY be one of |
| | | TENTATIVE/CONFIRMED/CANCELLED |
| TRANSP | 0 or 1 | |
| URL | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| ATTENDEE | 0 | |
| REQUEST-STATUS | 0 | |
| | | |
| VALARM | 0+ | |
| | | |
| VFREEBUSY | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VTODO | 0 | |
| | | |
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
+--------------------+----------+-----------------------------------+
Daboo Expires May 7, 2009 [Page 18]
Internet-Draft iTIP November 2008
3.2.2. REQUEST
The "REQUEST" method in a "VEVENT" component provides the following
scheduling functions:
o Invite "Attendees" to an event
o Reschedule an existing event
o Response to a REFRESH request
o Update the details of an existing event, without rescheduling it
o Update the status of "Attendees" of an existing event, without
rescheduling it
o Reconfirm an existing event, without rescheduling it
o Forward a "VEVENT" to another uninvited CU
o For an existing "VEVENT" calendar component, delegate the role of
"Attendee" to another CU
o 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.
This method type is an iCalendar object that conforms to the
following property constraints:
+----------------------------------------------+
| Constraints for a METHOD:REQUEST of a VEVENT |
+----------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "REQUEST" |
Daboo Expires May 7, 2009 [Page 19]
Internet-Draft iTIP November 2008
| | | |
| 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+ | |
| CLASS | 0 or 1 | |
| COMMENT | 0+ | |
| 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+ | |
| 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+ | |
| RRULE | 0 or 1 | |
| STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED |
| TRANSP | 0 or 1 | |
| URL | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| | | |
| VALARM | 0+ | |
| | | |
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone |
| | | |
Daboo Expires May 7, 2009 [Page 20]
Internet-Draft iTIP November 2008
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VFREEBUSY | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VTODO | 0 | |
+--------------------+----------+-----------------------------------+
3.2.2.1. Rescheduling an Event
The "REQUEST" method may be used to reschedule an event. A
rescheduled event involves a change to the existing event in terms of
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
Daboo Expires May 7, 2009 [Page 21]
Internet-Draft iTIP November 2008
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.
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". Also, a new "ATTENDEE" property
for the "Delegate" MUST be included and must specify the calendar
user address set in the "DELEGATED-TO" parameter, as above.
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 the "ORGANIZER" property has been changed to 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
Daboo Expires May 7, 2009 [Page 22]
Internet-Draft iTIP November 2008
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 uninvited CU
then replies to the "Organizer". The "Organizer" decides whether or
not the uninvited CU is added to the attendee list. If the
"Organizer" decides not to add the uninvited CU no further action is
required, however the "Organizer" 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 original message.
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 is also used when processing of a "REQUEST" fails.
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
Daboo Expires May 7, 2009 [Page 23]
Internet-Draft iTIP November 2008
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" MAY include a message to the "Organizer" using the
"COMMENT" property. For example, if the user indicates tentative
acceptance and wants to let the "Organizer" know why, the reason can
be expressed in the "COMMENT" property value.
The "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:
+--------------------------------------------+
| Constraints for a METHOD:REPLY of a VEVENT |
+--------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| 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+ | |
Daboo Expires May 7, 2009 [Page 24]
Internet-Draft iTIP November 2008
| CLASS | 0 or 1 | |
| COMMENT | 0+ | |
| 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+ | |
| GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | |
| RDATE | 0+ | |
| RELATED-TO | 0+ | |
| RESOURCES | 0+ | |
| REQUEST-STATUS | 0+ | |
| RRULE | 0 or 1 | |
| STATUS | 0 or 1 | |
| SUMMARY | 0 or 1 | |
| TRANSP | 0 or 1 | |
| URL | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| | | |
| VALARM | 0 | |
| | | |
| VTIMEZONE | 0 or 1 | MUST be present if any date/time |
| | | refers to a timezone |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VFREEBUSY | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VTODO | 0 | |
+--------------------+----------+-----------------------------------+
3.2.4. ADD
The "ADD" method allows the "Organizer" to add one or more new
instances to an existing "VEVENT" using a single ITIP message without
having to send the entire "VEVENT" with all the existing instance
data, as it would have to do if the "REQUEST" method were used.
Daboo Expires May 7, 2009 [Page 25]
Internet-Draft iTIP November 2008
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:
+------------------------------------------+
| Constraints for a METHOD:ADD of a VEVENT |
+------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| 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+ | |
| CLASS | 0 or 1 | |
| COMMENT | 0+ | |
| 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+ | |
| GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | |
| RDATE | 0+ | |
| RELATED-TO | 0+ | |
| RESOURCES | 0+ | |
| RRULE | 0 or 1 | |
Daboo Expires May 7, 2009 [Page 26]
Internet-Draft iTIP November 2008
| STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED |
| TRANSP | 0 or 1 | |
| URL | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| RECURRENCE-ID | 0 | |
| REQUEST-STATUS | 0 | |
| | | |
| VALARM | 0+ | |
| | | |
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VFREEBUSY | 0 | |
| | | |
| VTODO | 0 | |
| | | |
| VJOURNAL | 0 | |
+--------------------+----------+-----------------------------------+
3.2.5. CANCEL
The "CANCEL" method in a "VEVENT" calendar component is used to send
a cancellation notice of an existing event request to the affected
"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
"THISANDFUTURE" to indicate cancellation of the specified
"VEVENT" calendar component and all instances after; or
b. individual recurrence instances may be cancelled by specifying
multiple "VEVENT" components each with a "RECURRENCE-ID" property
corresponding to one of the instances to be cancelled.
When a "VEVENT" is cancelled, the "SEQUENCE" property value MUST be
Daboo Expires May 7, 2009 [Page 27]
Internet-Draft iTIP November 2008
incremented.
This method type is an iCalendar object that conforms to the
following property constraints:
+---------------------------------------------+
| Constraints for a METHOD:CANCEL of a VEVENT |
+---------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "CANCEL" |
| | | |
| VEVENT | 1+ | All must have the same UID |
| ATTENDEE | 0+ | MUST include all "Attendees" |
| | | being removed from 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+ | |
| ATTACH | 0+ | |
| CATEGORIES | 0+ | |
| 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+ | |
| 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+ | |
| RESOURCES | 0+ | |
Daboo Expires May 7, 2009 [Page 28]
Internet-Draft iTIP November 2008
| RRULE | 0 or 1 | |
| STATUS | 0 or 1 | MUST be set to CANCELLED to |
| | | cancel the entire event. If |
| | | uninviting specific "Attendees" |
| | | then MUST NOT be included. |
| SUMMARY | 0 or 1 | |
| TRANSP | 0 or 1 | |
| URL | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| REQUEST-STATUS | 0 | |
| | | |
| VALARM | 0 | |
| | | |
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VTODO | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VFREEBUSY | 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.
This method type is an iCalendar object that conforms to the
following property constraints:
+----------------------------------------------+
| Constraints for a METHOD:REFRESH of a VEVENT |
+----------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "REFRESH" |
Daboo Expires May 7, 2009 [Page 29]
Internet-Draft iTIP November 2008
| | | |
| VEVENT | 1 | |
| ATTENDEE | 1 | MUST be the address of requester |
| DTSTAMP | 1 | |
| ORGANIZER | 1 | |
| UID | 1 | MUST be the UID associated with |
| | | original REQUEST |
| COMMENT | 0+ | |
| RECURRENCE-ID | 0 or 1 | Only if referring to an instance |
| | | of a recurring calendar |
| | | component. Otherwise it MUST NOT |
| | | be present. |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| ATTACH | 0 | |
| CATEGORIES | 0 | |
| CLASS | 0 | |
| CONTACT | 0 | |
| CREATED | 0 | |
| DESCRIPTION | 0 | |
| DTEND | 0 | |
| DTSTART | 0 | |
| DURATION | 0 | |
| EXDATE | 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 | |
| | | |
| VALARM | 0 | |
| | | |
| VTIMEZONE | 0+ | |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VTODO | 0 | |
| | | |
Daboo Expires May 7, 2009 [Page 30]
Internet-Draft iTIP November 2008
| VJOURNAL | 0 | |
| | | |
| VFREEBUSY | 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. 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:
+----------------------------------------------+
| Constraints for a METHOD:COUNTER of a VEVENT |
+----------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "COUNTER" |
| | | |
| VEVENT | 1 | |
| DTSTAMP | 1 | |
| DTSTART | 1 | |
| ORGANIZER | 1 | MUST be the "Organizer" of the |
| | | original event |
| SEQUENCE | 1 | MUST echo the original SEQUENCE |
| | | number. MUST be present if |
| | | non-zero. MAY be present if |
| | | zero. |
| 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" |
Daboo Expires May 7, 2009 [Page 31]
Internet-Draft iTIP November 2008
| CATEGORIES | 0+ | |
| CLASS | 0 or 1 | |
| COMMENT | 0+ | |
| CONTACT | 0+ | |
| CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | |
| DTEND | 0 or 1 | if present DURATION MUST NOT be |
| | | present |
| DURATION | 0 or 1 | if present DTEND MUST NOT be |
| | | present |
| EXDATE | 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+ | |
| RRULE | 0 or 1 | |
| STATUS | 0 or 1 | Value must be one of |
| | | CONFIRMED/TENATIVE/CANCELLED |
| TRANSP | 0 or 1 | |
| URL | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| | | |
| VALARM | 0+ | |
| | | |
| VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VTODO | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VFREEBUSY | 0 | |
+--------------------+----------+-----------------------------------+
Daboo Expires May 7, 2009 [Page 32]
Internet-Draft iTIP November 2008
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:
+-----------------------------------------------------+
| Constraints for a METHOD:DECLINECOUNTER of a VEVENT |
+-----------------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| 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+ | |
| RECURRENCE-ID | 0 or 1 | 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 |
| IANA-PROPERTY | 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 | |
Daboo Expires May 7, 2009 [Page 33]
Internet-Draft iTIP November 2008
| 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 | |
| | | |
| VALARM | 0 | |
| | | |
| VTIMEZONE | 0+ | |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VTODO | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VFREEBUSY | 0 | |
+--------------------+----------+-----------------------------------+
3.3. Methods For VFREEBUSY Components
This section defines the property set for the methods that are
applicable to the "VFREEBUSY" calendar component. Each of the
methods is defined using a restriction table.
This document only addresses the transfer of busy time information.
Applications desiring free time information MUST infer this from
available busy time information.
The "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
Daboo Expires May 7, 2009 [Page 34]
Internet-Draft iTIP November 2008
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. Busy time periods may also span a day
boundary.
The following summarizes the methods that are defined for the
"VFREEBUSY" calendar component.
+---------+-------------------------------------+
| Method | Description |
+---------+-------------------------------------+
| PUBLISH | Publish unsolicited busy time data. |
| | |
| REQUEST | Request busy time data. |
| | |
| REPLY | Reply to a busy time request. |
+---------+-------------------------------------+
3.3.1. PUBLISH
The "PUBLISH" method in a "VFREEBUSY" calendar component is used to
publish busy time data. The method may be sent from one CU to any
other. The purpose of the method is to provide a way to send
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 "ORGANIZER" property MUST be specified in the busy time
information. The value is the CU address of the originator of the
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 "ORGANIZER",
"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.
This method type is an iCalendar object that conforms to the
following property constraints:
+-------------------------------------------------+
| Constraints for a METHOD:PUBLISH of a VFREEBUSY |
+-------------------------------------------------+
Daboo Expires May 7, 2009 [Page 35]
Internet-Draft iTIP November 2008
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| 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 | 0+ | MUST be BUSYTIME. Multiple |
| | | instances are allowed. Multiple |
| | | instances SHOULD be sorted in |
| | | ascending order |
| ORGANIZER | 1 | MUST contain the address of |
| | | originator of busy time data. |
| UID | 1 | |
| COMMENT | 0+ | |
| CONTACT | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| URL | 0 or 1 | Specifies busy time URL |
| ATTENDEE | 0 | |
| DURATION | 0 | |
| REQUEST-STATUS | 0 | |
| | | |
| VALARM | 0 | |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VEVENT | 0 | |
| | | |
| VTODO | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VTIMEZONE | 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
Daboo Expires May 7, 2009 [Page 36]
Internet-Draft iTIP November 2008
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:
+-------------------------------------------------+
| Constraints for a METHOD:REQUEST of a VFREEBUSY |
+-------------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "REQUEST" |
| | | |
| VFREEBUSY | 1 | |
| ATTENDEE | 1+ | contains the calendar user |
| | | addresses of the calendar users |
| | | whose freebusy is being requested |
| 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+ | |
| CONTACT | 0 or 1 | |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| FREEBUSY | 0 | |
| DURATION | 0 | |
| REQUEST-STATUS | 0 | |
| URL | 0 | |
| | | |
| VALARM | 0 | |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VEVENT | 0 | |
| | | |
| VTODO | 0 | |
| | | |
| VJOURNAL | 0 | |
Daboo Expires May 7, 2009 [Page 37]
Internet-Draft iTIP November 2008
| | | |
| 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:
+-----------------------------------------------+
| Constraints for a METHOD:REPLY of a VFREEBUSY |
+-----------------------------------------------+
Daboo Expires May 7, 2009 [Page 38]
Internet-Draft iTIP November 2008
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "REPLY" |
| | | |
| VFREEBUSY | 1 | |
| ATTENDEE | 1 | MUST be the address of the |
| | | Attendee replying. |
| DTSTAMP | 1 | |
| DTEND | 1 | DateTime values must be in UTC |
| DTSTART | 1 | DateTime values must be in UTC |
| FREEBUSY | 0+ | values MUST all be of the same |
| | | data type. Multiple instances |
| | | SHOULD be sorted in ascending |
| | | order. Values MUST NOT overlap |
| ORGANIZER | 1 | MUST be the request originator's |
| | | address |
| UID | 1 | MUST be the UID of the original |
| | | REQUEST |
| COMMENT | 0+ | |
| CONTACT | 0 or 1 | |
| REQUEST-STATUS | 0+ | |
| URL | 0 or 1 | specifies busy time URL |
| IANA-PROPERTY | 0+ | |
| X-PROPERTY | 0+ | |
| DURATION | 0 | |
| SEQUENCE | 0 | |
| | | |
| VALARM | 0 | |
| | | |
| IANA-COMPONENT | 0+ | |
| X-COMPONENT | 0+ | |
| | | |
| VEVENT | 0 | |
| | | |
| VTODO | 0 | |
| | | |
| VJOURNAL | 0 | |
| | | |
| VTIMEZONE | 0 | |
+--------------------+----------+-----------------------------------+
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.
Daboo Expires May 7, 2009 [Page 39]
Internet-Draft iTIP November 2008
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"
method) a previously published "VTODO" calendar component.
This method type is an iCalendar object that conforms to the
following property constraints:
Daboo Expires May 7, 2009 [Page 40]
Internet-Draft iTIP November 2008
+---------------------------------------------+
| Constraints for a METHOD:PUBLISH of a VTODO |
+---------------------------------------------+
+--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "PUBLISH" |
| | | |
| VTODO | 1+ | |
| DTSTAMP | 1 | |
| DTSTART | 1 | |
| OR