draft-ietf-calsify-2446bis-01.txt   draft-ietf-calsify-2446bis-02.txt 
Network Working Group C. Daboo Network Working Group C. Daboo
Internet-Draft Editor Internet-Draft Editor
Expires: September 7, 2006 March 6, 2006 Expires: December 27, 2006 June 25, 2006
iCalendar Transport-Independent Interoperability Protocol (iTIP) iCalendar Transport-Independent Interoperability Protocol (iTIP)
draft-ietf-calsify-2446bis-01 draft-ietf-calsify-2446bis-02
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware 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 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. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 33 skipping to change at page 1, line 33
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 7, 2006. This Internet-Draft will expire on December 27, 2006.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). Copyright (C) The Internet Society (2006).
Abstract Abstract
This document specifies a protocol using the iCalendar object This document specifies a protocol using the iCalendar object
specification to provide scheduling interoperability between specification to provide scheduling interoperability between
different calendar systems. This is done in a general way so as to different calendar systems. This is done without reference to a
allow multiple methods of communication between systems. Subsequent specific transport protocol so as to allow multiple methods of
documents will define profiles of this protocol using specific communication between systems. Subsequent documents will define
interoperable methods of communications between systems. profiles of this protocol using specific interoperable methods of
communications between systems.
iTIP complements the iCalendar object specification by adding iTIP complements the iCalendar object specification by adding
semantics for group scheduling methods commonly available in current semantics for group scheduling methods commonly available in current
calendar systems. These scheduling methods permit two or more calendar systems. These scheduling methods permit two or more
calendar systems to perform transactions such as publish, schedule, calendar systems to perform transactions such as publish, schedule,
reschedule, respond to scheduling requests, negotiation of changes or reschedule, respond to scheduling requests, negotiation of changes or
cancel. cancel.
Change History (to be removed prior to publication as an RFC) Change History (to be removed prior to publication as an RFC)
Changes in -02:
a. Tweaked abstract wording.
b. Fixed some improper references.
c. Removed bogus TZOFFSET entry from VTIMEZONE restriction table.
d. Changed TZNAME entry in VTIMEZONE restriction table to "0+" from
"0 or 1" to fall in line with 2445.
e. Changed COMMENT entry in component restriction tables to "0+"
from "0 or 1" to fall in line with 2445.
f. Added ATTENDEE entry in VALARM restriction table to match email
alarm type in 2445.
g. Changed CATEGORIES entry in component restriction tables to "0+"
from "0 or 1" to fall in line with 2445.
h. Changed RESOURCES entry in component restriction tables to "0+"
from "0 or 1" to fall in line with 2445.
i. Changed CONTACT entry in VFREEBUSY restriction table to "0 or 1"
from "0+" to fall in line with 2445.
j. Made UID required in VFREEBUSY publish.
k. Added COMPLETED entry in VTODO restriction tables to fall in line
with 2445.
l. Added REQUEST-STATUS entry in VJOURNAL restriction tables to fall
in line with 2445.
Changes in -01: Changes in -01:
Updated to 2445bis and 2447bis references. a. Updated to 2445bis and 2447bis references.
Changes in -00 (from RFC2446):
a. Updated to latest i-d boilerplate text.
b. Rewrote abstract and introduction.
c. Reformatted Formatting Conventions section.
d. Split ITIP Roles and Transactions into two sections
e. iTIP roles uses a table to describe different roles
f. Converted tables into xml2rfc format.
Table of Contents Table of Contents
1. Introduction and Overview . . . . . . . . . . . . . . . . . . 5 1. Introduction and Overview . . . . . . . . . . . . . . . . . . 6
1.1. Formatting Conventions . . . . . . . . . . . . . . . . . 5 1.1. Formatting Conventions . . . . . . . . . . . . . . . . . 6
1.2. Related Documents . . . . . . . . . . . . . . . . . . . . 6 1.2. Related Documents . . . . . . . . . . . . . . . . . . . . 7
1.3. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4. Methods . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4. Methods . . . . . . . . . . . . . . . . . . . . . . . . . 8
2. Interoperability Models . . . . . . . . . . . . . . . . . . . 8 2. Interoperability Models . . . . . . . . . . . . . . . . . . . 9
2.1. Application Protocol . . . . . . . . . . . . . . . . . . 9 2.1. Application Protocol . . . . . . . . . . . . . . . . . . 10
2.1.1. Calendar Entry State . . . . . . . . . . . . . . . . 9 2.1.1. Calendar Entry State . . . . . . . . . . . . . . . . 10
2.1.2. Delegation . . . . . . . . . . . . . . . . . . . . . 9 2.1.2. Delegation . . . . . . . . . . . . . . . . . . . . . 10
2.1.3. Acting on Behalf of other Calendar Users . . . . . . 9 2.1.3. Acting on Behalf of other Calendar Users . . . . . . 11
2.1.4. Component Revisions . . . . . . . . . . . . . . . . . 10 2.1.4. Component Revisions . . . . . . . . . . . . . . . . . 11
2.1.5. Message Sequencing . . . . . . . . . . . . . . . . . 10 2.1.5. Message Sequencing . . . . . . . . . . . . . . . . . 12
3. Application Protocol Elements . . . . . . . . . . . . . . . . 11 3. Application Protocol Elements . . . . . . . . . . . . . . . . 13
3.1. Common Component Restriction Tables . . . . . . . . . . . 12 3.1. Common Component Restriction Tables . . . . . . . . . . . 13
3.2. Methods for VEVENT Calendar Components . . . . . . . . . 14 3.2. Methods for VEVENT Calendar Components . . . . . . . . . 16
3.2.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2.4. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.5. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.5. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.6. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.6. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.7. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.7. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.8. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . 30 3.2.8. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . 32
3.3. Methods For VFREEBUSY Components . . . . . . . . . . . . 32 3.3. Methods For VFREEBUSY Components . . . . . . . . . . . . 33
3.3.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 34 3.3.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4. Methods For VTODO Components . . . . . . . . . . . . . . 37 3.4. Methods For VTODO Components . . . . . . . . . . . . . . 38
3.4.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 37 3.4.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 39 3.4.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4.4. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.4.4. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4.5. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 47 3.4.5. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 49
3.4.6. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 50 3.4.6. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.7. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 52 3.4.7. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 53
3.4.8. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . 53 3.4.8. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . 54
3.5. Methods For VJOURNAL Components . . . . . . . . . . . . . 56 3.5. Methods For VJOURNAL Components . . . . . . . . . . . . . 56
3.5.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 56 3.5.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 56
3.5.2. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.5.2. ADD . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.5.3. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 60 3.5.3. CANCEL . . . . . . . . . . . . . . . . . . . . . . . 60
3.6. Status Replies . . . . . . . . . . . . . . . . . . . . . 62 3.6. Status Replies . . . . . . . . . . . . . . . . . . . . . 62
3.7. Implementation Considerations . . . . . . . . . . . . . . 64 3.7. Implementation Considerations . . . . . . . . . . . . . . 64
3.7.1. Working With Recurrence Instances . . . . . . . . . . 64 3.7.1. Working With Recurrence Instances . . . . . . . . . . 64
3.7.2. Attendee Property Considerations . . . . . . . . . . 65 3.7.2. Attendee Property Considerations . . . . . . . . . . 65
3.7.3. X-Tokens . . . . . . . . . . . . . . . . . . . . . . 66 3.7.3. X-Tokens . . . . . . . . . . . . . . . . . . . . . . 66
4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 66
skipping to change at page 4, line 12 skipping to change at page 4, line 49
4.5.4. A Reply: Percent-Complete . . . . . . . . . . . . . . 103 4.5.4. A Reply: Percent-Complete . . . . . . . . . . . . . . 103
4.5.5. A Reply: Completed . . . . . . . . . . . . . . . . . 103 4.5.5. A Reply: Completed . . . . . . . . . . . . . . . . . 103
4.5.6. An Updated VTODO Request . . . . . . . . . . . . . . 104 4.5.6. An Updated VTODO Request . . . . . . . . . . . . . . 104
4.5.7. Recurring VTODOs . . . . . . . . . . . . . . . . . . 104 4.5.7. Recurring VTODOs . . . . . . . . . . . . . . . . . . 104
4.6. Journal Examples . . . . . . . . . . . . . . . . . . . . 106 4.6. Journal Examples . . . . . . . . . . . . . . . . . . . . 106
4.7. Other Examples . . . . . . . . . . . . . . . . . . . . . 106 4.7. Other Examples . . . . . . . . . . . . . . . . . . . . . 106
4.7.1. Event Refresh . . . . . . . . . . . . . . . . . . . . 106 4.7.1. Event Refresh . . . . . . . . . . . . . . . . . . . . 106
4.7.2. Bad RECURRENCE-ID . . . . . . . . . . . . . . . . . . 107 4.7.2. Bad RECURRENCE-ID . . . . . . . . . . . . . . . . . . 107
5. Application Protocol Fallbacks . . . . . . . . . . . . . . . 109 5. Application Protocol Fallbacks . . . . . . . . . . . . . . . 109
5.1. Partial Implementation . . . . . . . . . . . . . . . . . 109 5.1. Partial Implementation . . . . . . . . . . . . . . . . . 109
5.1.1. Event-Related Fallbacks . . . . . . . . . . . . . . . 109 5.1.1. Event-Related Fallbacks . . . . . . . . . . . . . . . 110
5.1.2. Free/Busy-Related Fallbacks . . . . . . . . . . . . . 112 5.1.2. Free/Busy-Related Fallbacks . . . . . . . . . . . . . 112
5.1.3. To-Do-Related Fallbacks . . . . . . . . . . . . . . . 113 5.1.3. To-Do-Related Fallbacks . . . . . . . . . . . . . . . 113
5.1.4. Journal-Related Fallbacks . . . . . . . . . . . . . . 115 5.1.4. Journal-Related Fallbacks . . . . . . . . . . . . . . 115
5.2. Latency Issues . . . . . . . . . . . . . . . . . . . . . 116 5.2. Latency Issues . . . . . . . . . . . . . . . . . . . . . 116
5.2.1. Cancellation of an Unknown Calendar Component. . . . 116 5.2.1. Cancellation of an Unknown Calendar Component. . . . 116
5.2.2. Unexpected Reply from an Unknown Delegate . . . . . . 117 5.2.2. Unexpected Reply from an Unknown Delegate . . . . . . 117
5.3. Sequence Number . . . . . . . . . . . . . . . . . . . . . 117 5.3. Sequence Number . . . . . . . . . . . . . . . . . . . . . 117
6. Security Considerations . . . . . . . . . . . . . . . . . . . 117 6. Security Considerations . . . . . . . . . . . . . . . . . . . 117
6.1. Security Threats . . . . . . . . . . . . . . . . . . . . 117 6.1. Security Threats . . . . . . . . . . . . . . . . . . . . 117
6.1.1. Spoofing the "Organizer" . . . . . . . . . . . . . . 117 6.1.1. Spoofing the "Organizer" . . . . . . . . . . . . . . 117
6.1.2. Spoofing the "Attendee" . . . . . . . . . . . . . . . 118 6.1.2. Spoofing the "Attendee" . . . . . . . . . . . . . . . 118
6.1.3. Unauthorized Replacement of the Organizer . . . . . . 118 6.1.3. Unauthorized Replacement of the Organizer . . . . . . 118
6.1.4. Eavesdropping . . . . . . . . . . . . . . . . . . . . 118 6.1.4. Eavesdropping . . . . . . . . . . . . . . . . . . . . 118
6.1.5. Flooding a Calendar . . . . . . . . . . . . . . . . . 118 6.1.5. Flooding a Calendar . . . . . . . . . . . . . . . . . 118
6.1.6. Procedural Alarms . . . . . . . . . . . . . . . . . . 118 6.1.6. Procedural Alarms . . . . . . . . . . . . . . . . . . 118
6.1.7. Unauthorized REFRESH Requests . . . . . . . . . . . . 118 6.1.7. Unauthorized REFRESH Requests . . . . . . . . . . . . 118
6.2. Recommendations . . . . . . . . . . . . . . . . . . . . . 119 6.2. Recommendations . . . . . . . . . . . . . . . . . . . . . 119
6.2.1. Use of [RFC-1847] to secure iTIP transactions . . . . 119 6.2.1. Use of [RFC1847] to secure iTIP transactions . . . . 119
6.2.2. Implementation Controls . . . . . . . . . . . . . . . 119 6.2.2. Implementation Controls . . . . . . . . . . . . . . . 119
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 120 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 120
7.1. Normative References . . . . . . . . . . . . . . . . . . 120 7.1. Normative References . . . . . . . . . . . . . . . . . . 120
7.2. Informative References . . . . . . . . . . . . . . . . . 120 7.2. Informative References . . . . . . . . . . . . . . . . . 120
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 120 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 120
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 121 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 121
Intellectual Property and Copyright Statements . . . . . . . . . 122 Intellectual Property and Copyright Statements . . . . . . . . . 122
1. Introduction and Overview 1. Introduction and Overview
skipping to change at page 5, line 49 skipping to change at page 6, line 49
to the event calendar component, "VTODO" refers to the to-do calendar to the event calendar component, "VTODO" refers to the to-do calendar
component and "VJOURNAL" refers to the daily journal calendar component and "VJOURNAL" refers to the daily journal calendar
component. component.
Scheduling methods are referred to with capitalized, quoted-strings Scheduling methods are referred to with capitalized, quoted-strings
of text. For example, "REQUEST" refers to the method for requesting of text. For example, "REQUEST" refers to the method for requesting
a scheduling calendar component be created or modified, "REPLY" a scheduling calendar component be created or modified, "REPLY"
refers to the method a recipient of a request uses to update their refers to the method a recipient of a request uses to update their
status with the "Organizer" of the calendar component. status with the "Organizer" of the calendar component.
Properties defined by [iCAL] are referred to with capitalized, Properties defined by [I-D.ietf-calsify-rfc2445bis] are referred to
quoted-strings of text, followed by the word "property". For with capitalized, quoted-strings of text, followed by the word
example, "ATTENDEE" property refers to the iCalendar property used to "property". For example, "ATTENDEE" property refers to the iCalendar
convey the calendar address of a "Calendar User". property used to convey the calendar address of a "Calendar User".
Property parameters defined by this memo are referred to with lower Property parameters defined by this memo are referred to with lower
case, quoted-strings of text, followed by the word "parameter". For case, quoted-strings of text, followed by the word "parameter". For
example, "value" parameter refers to the iCalendar property parameter example, "value" parameter refers to the iCalendar property parameter
used to override the default data type for a property value. used to override the default data type for a property value.
Enumerated values defined by this memo are referred to with Enumerated values defined by this memo are referred to with
capitalized text, either alone or followed by the word "value". capitalized text, either alone or followed by the word "value".
In tables, the quoted-string text is specified without quotes in In tables, the quoted-string text is specified without quotes in
skipping to change at page 6, line 49 skipping to change at page 7, line 51
| Role | Description | | Role | Description |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
| Organizer | The CU who initiates an exchange takes on the role of | | Organizer | The CU who initiates an exchange takes on the role of |
| | "Organizer". For example, the CU who proposes a | | | "Organizer". For example, the CU who proposes a |
| | group meeting is the "Organizer". | | | group meeting is the "Organizer". |
| | | | | |
| Attendee | The CUs asked to participate in the group meeting by | | Attendee | The CUs asked to participate in the group meeting by |
| | the "Organizer" take on the role of "Attendee". | | | the "Organizer" take on the role of "Attendee". |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
Note that "role" is also a descriptive parameter to the iCalendar Note that "ROLE" is also a descriptive parameter to the iCalendar
"ATTENDEE" property. Its use is to convey descriptive context to an "ATTENDEE" property. Its use is to convey descriptive context to an
"Attendee" such as "chair", "req-participant" or "non-participant" "Attendee" such as "chair", "required participant" or "non-required
and has nothing to do with the calendaring workflow. participant" and has nothing to do with the calendaring workflow.
1.4. Methods 1.4. Methods
The ITIP methods are listed below and their usage and semantics are The ITIP methods are listed below and their usage and semantics are
defined in section 3 of this document. defined in section 3 of this document.
+----------------+--------------------------------------------------+ +----------------+--------------------------------------------------+
| Method | Description | | Method | Description |
+----------------+--------------------------------------------------+ +----------------+--------------------------------------------------+
| PUBLISH | Used to publish a calendar entry to one or more | | PUBLISH | Used to publish a calendar entry to one or more |
skipping to change at page 7, line 49 skipping to change at page 9, line 5
| REFRESH | The Refresh method is used by an "Attendee" to | | REFRESH | The Refresh method is used by an "Attendee" to |
| | request the latest version of a calendar entry. | | | request the latest version of a calendar entry. |
| | | | | |
| COUNTER | The Counter method is used by an "Attendee" to | | COUNTER | The Counter method is used by an "Attendee" to |
| | negotiate a change in the calendar entry. | | | negotiate a change in the calendar entry. |
| | Examples include the request to change a | | | Examples include the request to change a |
| | proposed Event time or change the due date for a | | | proposed Event time or change the due date for a |
| | VTODO. | | | VTODO. |
| | | | | |
| DECLINECOUNTER | Used by the "Organizer" to decline the proposed | | DECLINECOUNTER | Used by the "Organizer" to decline the proposed |
| | counter-proprosal. | | | counter-proposal. |
+----------------+--------------------------------------------------+ +----------------+--------------------------------------------------+
Group scheduling in iTIP is accomplished using the set of "request" Group scheduling in iTIP is accomplished using the set of "request"
and "response" methods described above. The following table shows and "response" methods described above. The following table shows
the methods broken down by who can send them. the methods broken down by who can send them.
+------------+------------------------------------------------------+ +------------+------------------------------------------------------+
| Originator | Methods | | Originator | Methods |
+------------+------------------------------------------------------+ +------------+------------------------------------------------------+
| Organizer | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER | | Organizer | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER |
skipping to change at page 9, line 6 skipping to change at page 10, line 9
There are several variations of this diagram in which the Sender and 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 Receiver take on various roles of a "Calendar User Agent" (CUA) or a
"Calendar Service" (CS). "Calendar Service" (CS).
The architecture of iTIP is depicted in the diagram below. An The architecture of iTIP is depicted in the diagram below. An
application written to this specification may work with bindings for application written to this specification may work with bindings for
the store-and-forward transport, the real time transport, or both. the store-and-forward transport, the real time transport, or both.
Also note that iTIP could be bound to other transports. Also note that iTIP could be bound to other transports.
+-------------------+--------------------------+--------------------+ +-------------------+--------------------------+--------------------+
| | iTIP | |
+-------------------+--------------------------+--------------------+
| Real-time | Store-and-Forward | Other | | Real-time | Store-and-Forward | Other |
| Transport | Transport | Transports... | | Transport | Transport | Transports... |
+-------------------+--------------------------+--------------------+ +-------------------+--------------------------+--------------------+
2.1. Application Protocol 2.1. Application Protocol
In the iTIP model, a calendar entry is created and managed by an In the iTIP model, a calendar entry is created and managed by an
"Organizer". The "Organizer" interacts with other CUs by sending one "Organizer". The "Organizer" interacts with other CUs by sending one
or more of the iTIP messages listed above. "Attendees" use the or more of the iTIP messages listed above. "Attendees" use the
"REPLY" method to communicate their status. "Attendees" do not make "REPLY" method to communicate their status. "Attendees" do not make
skipping to change at page 10, line 24 skipping to change at page 11, line 30
Second, a "sent-by" parameter may be specified in either the Second, a "sent-by" parameter may be specified in either the
"Organizer" or "Attendee" properties. When specified, the "sent-by" "Organizer" or "Attendee" properties. When specified, the "sent-by"
parameter indicates that the responding CU acted on behalf of the parameter indicates that the responding CU acted on behalf of the
specified "Attendee" or "Organizer". specified "Attendee" or "Organizer".
2.1.4. Component Revisions 2.1.4. Component Revisions
The "SEQUENCE" property is used by the "Organizer" to indicate The "SEQUENCE" property is used by the "Organizer" to indicate
revisions to the calendar component. The rules for incrementing the revisions to the calendar component. The rules for incrementing the
"SEQUENCE" number are defined in [iCAL]. For clarity, these rules "SEQUENCE" number are defined in [I-D.ietf-calsify-rfc2445bis]. For
are paraphrased here in terms of how they are applied in [iTIP]. For clarity, these rules are paraphrased here in terms of how they are
a given "UID" in a calendar component: applied in iTIP. For a given "UID" in a calendar component:
o For the "PUBLISH" and "REQUEST" methods, the "SEQUENCE" property o For the "PUBLISH" and "REQUEST" methods, the "SEQUENCE" property
value is incremented according to the rules defined in [iCAL]. value is incremented according to the rules defined in [I-D.ietf-
calsify-rfc2445bis].
o The "SEQUENCE" property value MUST be incremented each time the o The "SEQUENCE" property value MUST be incremented each time the
"Organizer" uses the "ADD" or "CANCEL" methods. "Organizer" uses the "ADD" or "CANCEL" methods.
o The "SEQUENCE" property value MUST NOT be incremented when using o The "SEQUENCE" property value MUST NOT be incremented when using
"REPLY", "REFRESH", "COUNTER", "DECLINECOUNTER", or when sending a "REPLY", "REFRESH", "COUNTER", "DECLINECOUNTER", or when sending a
delegation "REQUEST". delegation "REQUEST".
In some circumstances the "Organizer" may not have received responses In some circumstances the "Organizer" may not have received responses
to the final revision sent out. In this situation, the "Organizer" to the final revision sent out. In this situation, the "Organizer"
may wish to send an update "REQUEST", and set "RSVP=TRUE" for all may wish to send an update "REQUEST", and set "RSVP=TRUE" for all
"Attendees", so that current responses can be collected. "Attendees", so that current responses can be collected.
The value of the "SEQUENCE" property contained in a response from an The value of the "SEQUENCE" property contained in a response from an
skipping to change at page 10, line 49 skipping to change at page 12, line 9
"Attendees", so that current responses can be collected. "Attendees", so that current responses can be collected.
The value of the "SEQUENCE" property contained in a response from an The value of the "SEQUENCE" property contained in a response from an
"Attendee" may not always match the "Organizer's" revision. "Attendee" may not always match the "Organizer's" revision.
Implementations may choose to have the CUA indicate to the CU that 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 the response is to an entry that has been revised and allow the CU to
decide whether or not to accept the response. decide whether or not to accept the response.
2.1.5. Message Sequencing 2.1.5. Message Sequencing
CUAs that handle the [iTIP] application protocol must often correlate CUAs that handle the iTIP application protocol must often correlate a
a component in a calendar store with a component received in the component in a calendar store with a component received in the iTIP
[iTIP] message. For example, an event may be updated with a later message. For example, an event may be updated with a later revision
revision of the same event. To accomplish this, a CUA must correlate of the same event. To accomplish this, a CUA must correlate the
the version of the event already in its calendar store with the version of the event already in its calendar store with the version
version sent in the [iTIP] message. In addition to this correlation, sent in the iTIP message. In addition to this correlation, there are
there are several factors that can cause [iTIP] messages to arrive in several factors that can cause iTIP messages to arrive in an
an unexpected order. That is, an "Organizer" could receive a reply unexpected order. That is, an "Organizer" could receive a reply to
to an earlier revision of a component AFTER receiving a reply to a an earlier revision of a component AFTER receiving a reply to a later
later revision. revision.
To maximize interoperability and to handle messages that arrive in an To maximize interoperability and to handle messages that arrive in an
unexpected order, use the following rules: unexpected order, use the following rules:
1. The primary key for referencing a particular iCalendar component 1. The primary key for referencing a particular iCalendar component
is the "UID" property value. To reference an instance of a is the "UID" property value. To reference an instance of a
recurring component, the primary key is composed of the "UID" and recurring component, the primary key is composed of the "UID" and
the "RECURRENCE-ID" properties. the "RECURRENCE-ID" properties.
2. The secondary key for referencing a component is the "SEQUENCE" 2. The secondary key for referencing a component is the "SEQUENCE"
property value. For components where the "UID" is the same, the property value. For components where the "UID" is the same, the
component with the highest numeric value for the "SEQUENCE" component with the highest numeric value for the "SEQUENCE"
property obsoletes all other revisions of the component with property obsoletes all other revisions of the component with
lower values. lower values.
3. "Attendees" send "REPLY" messages to the "Organizer". For 3. "Attendees" send "REPLY" messages to the "Organizer". For
replies where the "UID" property value is the same, the value of replies where the "UID" property value is the same, the value of
the "SEQUENCE" property indicates the revision of the component the "SEQUENCE" property indicates the revision of the component
to which the "Attendee" is replying. The reply with the highest to which the "Attendee" is replying. The reply with the highest
numeric value for the "SEQUENCE" property obsoletes all other numeric value for the "SEQUENCE" property obsoletes all other
replies with lower values. replies with lower values.
4. In situations where the "UID" and "SEQUENCE" properties match, 4. In situations where the "UID" and "SEQUENCE" properties match,
the "DTSTAMP" property is used as the tie-breaker. The component the "DTSTAMP" property is used as the tie-breaker. The component
with the latest "DTSTAMP" overrides all others. Similarly, for with the latest "DTSTAMP" overrides all others. Similarly, for
"Attendee" responses where the "UID" property values match and "Attendee" responses where the "UID" property values match and
the "SEQUENCE" property values match, the response with the the "SEQUENCE" property values match, the response with the
latest "DTSTAMP" overrides all others. latest "DTSTAMP" overrides all others.
Hence, CUAs must persist the following component properties: "UID", Hence, CUAs must persist the following component properties: "UID",
"RECURRENCE-ID", "SEQUENCE", and "DTSTAMP". Furthermore, for each "RECURRENCE-ID", "SEQUENCE", and "DTSTAMP". Furthermore, for each
"ATTENDEE" property of a component CUAs must persist the "SEQUENCE" "ATTENDEE" property of a component CUAs must persist the "SEQUENCE"
skipping to change at page 13, line 25 skipping to change at page 15, line 12
restrictions in the table below apply to any "VTIMEZONE" component in restrictions in the table below apply to any "VTIMEZONE" component in
an ITIP message. an ITIP message.
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment | | Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| VTIMEZONE | 0+ | MUST be present if any date/time | | VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to timezone | | | | refers to timezone |
| DAYLIGHT | 0+ | MUST be one or more of either | | DAYLIGHT | 0+ | MUST be one or more of either |
| | | STANDARD or DAYLIGHT | | | | STANDARD or DAYLIGHT |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| DTSTART | 1 | MUST be local time format | | DTSTART | 1 | MUST be local time format |
| RDATE | 0+ | if present RRULE MUST NOT be | | RDATE | 0+ | if present RRULE MUST NOT be |
| | | present | | | | present |
| RRULE | 0+ | if present RDATE MUST NOT be | | RRULE | 0+ | if present RDATE MUST NOT be |
| | | present | | | | present |
| TZNAME | 0 or 1 | | | TZNAME | 0+ | |
| TZOFFSET | 1 | |
| TZOFFSETFROM | 1 | | | TZOFFSETFROM | 1 | |
| TZOFFSETTO | 1 | | | TZOFFSETTO | 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| STANDARD | 0+ | MUST be one or more of either | | STANDARD | 0+ | MUST be one or more of either |
| | | STANDARD or DAYLIGHT | | | | STANDARD or DAYLIGHT |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| DTSTART | 1 | MUST be local time format | | DTSTART | 1 | MUST be local time format |
| RDATE | 0+ | if present RRULE MUST NOT be | | RDATE | 0+ | if present RRULE MUST NOT be |
| | | present | | | | present |
| RRULE | 0+ | if present RDATE MUST NOT be | | RRULE | 0+ | if present RDATE MUST NOT be |
| | | present | | | | present |
| TZNAME | 0 or 1 | | | TZNAME | 0+ | |
| TZOFFSETFROM | 1 | | | TZOFFSETFROM | 1 | |
| TZOFFSETTO | 1 | | | TZOFFSETTO | 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| TZID | 1 | | | TZID | 1 | |
| TZURL | 0 or 1 | | | TZURL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
The property restrictions in the table below apply to any "VALARM" The property restrictions in the table below apply to any "VALARM"
component in an ITIP message. component in an ITIP message.
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment | | Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| VALARM | 0+ | | | VALARM | 0+ | |
| ACTION | 1 | | | ACTION | 1 | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| ATTENDEE | 0+ | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DURATION | 0 or 1 | if present REPEAT MUST be present | | DURATION | 0 or 1 | if present REPEAT MUST be present |
| REPEAT | 0 or 1 | if present DURATION MUST be | | REPEAT | 0 or 1 | if present DURATION MUST be |
| | | present | | | | present |
| SUMMARY | 0 or 1 | | | SUMMARY | 0 or 1 | |
| TRIGGER | 1 | | | TRIGGER | 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
3.2. Methods for VEVENT Calendar Components 3.2. Methods for VEVENT Calendar Components
skipping to change at page 16, line 4 skipping to change at page 17, line 50
| SUMMARY | 1 | Can be null. | | SUMMARY | 1 | Can be null. |
| UID | 1 | | | UID | 1 | |
| RECURRENCE-ID | 0 or 1 | Only if referring to an instance | | RECURRENCE-ID | 0 or 1 | Only if referring to an instance |
| | | of a recurring calendar | | | | of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| SEQUENCE | 0 or 1 | MUST be present if value is | | SEQUENCE | 0 or 1 | MUST be present if value is |
| | | greater than 0, MAY be present if | | | | greater than 0, MAY be present if |
| | | 0 | | | | 0 |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0 or 1 | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null | | DESCRIPTION | 0 or 1 | Can be null |
| DTEND | 0 or 1 | If present DURATION MUST NOT be | | DTEND | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DTEND MUST NOT be | | DURATION | 0 or 1 | If present DTEND MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property MAY contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of | | STATUS | 0 or 1 | MAY be one of |
| | | TENTATIVE/CONFIRMED/CANCELLED | | | | TENTATIVE/CONFIRMED/CANCELLED |
| TRANSP | 0 or 1 | | | TRANSP | 0 or 1 | |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| ATTENDEE | 0 | | | ATTENDEE | 0 | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
skipping to change at page 18, line 10 skipping to change at page 20, line 7
| ATTENDEE | 1+ | | | ATTENDEE | 1+ | |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | | | DTSTART | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| SEQUENCE | 0 or 1 | MUST be present if value is | | SEQUENCE | 0 or 1 | MUST be present if value is |
| | | greater than 0, MAY be present if | | | | greater than 0, MAY be present if |
| | | 0 | | | | 0 |
| SUMMARY | 1 | Can be null | | SUMMARY | 1 | Can be null |
| UID | 1 | | | UID | 1 | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null | | DESCRIPTION | 0 or 1 | Can be null |
| DTEND | 0 or 1 | if present DURATION MUST NOT be | | DTEND | 0 or 1 | if present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | if present DTEND MUST NOT be | | DURATION | 0 or 1 | if present DTEND MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | only if referring to an instance | | RECURRENCE-ID | 0 or 1 | only if referring to an instance |
| | | of a recurring calendar | | | | of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| REQUEST-STATUS | 0+ | | | REQUEST-STATUS | 0+ | |
| RESOURCES | 0 or 1 | This property MAY contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED | | STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED |
| TRANSP | 0 or 1 | | | TRANSP | 0 or 1 | |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
| | | | | | | |
| VTIMEZONE | 0+ | MUST be present if any date/time | | VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone | | | | refers to a timezone |
skipping to change at page 22, line 39 skipping to change at page 24, line 35
| RECURRENCE-ID | 0 or 1 | only if referring to an instance | | RECURRENCE-ID | 0 or 1 | only if referring to an instance |
| | | of a recurring calendar | | | | of a recurring calendar |
| | | component. Otherwise it must NOT | | | | component. Otherwise it must NOT |
| | | be present. | | | | be present. |
| UID | 1 | MUST be the UID of the original | | UID | 1 | MUST be the UID of the original |
| | | REQUEST | | | | REQUEST |
| SEQUENCE | 0 or 1 | MUST if non-zero, MUST be the | | SEQUENCE | 0 or 1 | MUST if non-zero, MUST be the |
| | | sequence number of the original | | | | sequence number of the original |
| | | REQUEST. MAY be present if 0. | | | | REQUEST. MAY be present if 0. |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DTEND | 0 or 1 | if present DURATION MUST NOT be | | DTEND | 0 or 1 | if present DURATION MUST NOT be |
| | | present | | | | present |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| DURATION | 0 or 1 | if present DTEND MUST NOT be | | DURATION | 0 or 1 | if present DTEND MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property MAY contain a list | | RESOURCES | 0+ | |
| | | of values |
| REQUEST-STATUS | 0+ | | | REQUEST-STATUS | 0+ | |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | | | STATUS | 0 or 1 | |
| SUMMARY | 0 or 1 | | | SUMMARY | 0 or 1 | |
| TRANSP | 0 or 1 | | | TRANSP | 0 or 1 | |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| | | | | | | |
| VTIMEZONE | 0 or 1 | MUST be present if any date/time | | VTIMEZONE | 0 or 1 | MUST be present if any date/time |
| | | refers to a timezone | | | | refers to a timezone |
skipping to change at page 24, line 26 skipping to change at page 26, line 21
| VEVENT | 1 | | | VEVENT | 1 | |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | | | DTSTART | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| SEQUENCE | 1 | MUST be greater than 0 | | SEQUENCE | 1 | MUST be greater than 0 |
| SUMMARY | 1 | Can be null | | SUMMARY | 1 | Can be null |
| UID | 1 | MUST match that of the original | | UID | 1 | MUST match that of the original |
| | | event | | | | event |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| ATTENDEE | 0+ | | | ATTENDEE | 0+ | |
| CATEGORIES | 0 or 1 | This property MAY contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null | | DESCRIPTION | 0 or 1 | Can be null |
| DTEND | 0 or 1 | if present DURATION MUST NOT be | | DTEND | 0 or 1 | if present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | if present DTEND MUST NOT be | | DURATION | 0 or 1 | if present DTEND MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property MAY contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED | | STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED |
| TRANSP | 0 or 1 | | | TRANSP | 0 or 1 | |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| RECURRENCE-ID | 0 | | | RECURRENCE-ID | 0 | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
| | | | | | | |
skipping to change at page 26, line 20 skipping to change at page 28, line 13
| VEVENT | 1+ | All must have the same UID | | VEVENT | 1+ | All must have the same UID |
| ATTENDEE | 0+ | MUST include all "Attendees" | | ATTENDEE | 0+ | MUST include all "Attendees" |
| | | being removed the event. MUST | | | | being removed the event. MUST |
| | | include all "Attendees" if the | | | | include all "Attendees" if the |
| | | entire event is cancelled. | | | | entire event is cancelled. |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| SEQUENCE | 1 | | | SEQUENCE | 1 | |
| UID | 1 | MUST be the UID of the original | | UID | 1 | MUST be the UID of the original |
| | | REQUEST | | | | REQUEST |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DTEND | 0 or 1 | if present DURATION MUST NOT be | | DTEND | 0 or 1 | if present DURATION MUST NOT be |
| | | present | | | | present |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| DURATION | 0 or 1 | if present DTEND MUST NOT be | | DURATION | 0 or 1 | if present DTEND MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
skipping to change at page 26, line 45 skipping to change at page 28, line 37
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST be present if referring to | | RECURRENCE-ID | 0 or 1 | MUST be present if referring to |
| | | one or more or more recurring | | | | one or more or more recurring |
| | | instances. Otherwise it MUST NOT | | | | instances. Otherwise it MUST NOT |
| | | be present | | | | be present |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | | | RESOURCES | 0+ | |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MUST be set to CANCELLED. If | | STATUS | 0 or 1 | MUST be set to CANCELLED. If |
| | | uninviting specific "Attendees" | | | | uninviting specific "Attendees" |
| | | then MUST NOT be included. | | | | then MUST NOT be included. |
| SUMMARY | 0 or 1 | | | SUMMARY | 0 or 1 | |
| TRANSP | 0 or 1 | | | TRANSP | 0 or 1 | |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| | | | | | | |
skipping to change at page 27, line 40 skipping to change at page 29, line 33
This method type is an iCalendar object that conforms to the This method type is an iCalendar object that conforms to the
following property constraints: following property constraints:
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| Component/Property | Presence | Comment | | Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "REFRESH" | | METHOD | 1 | MUST be "REFRESH" |
| | | | | | | |
| VEVENT | 1 | | | VEVENT | 1 | |
| ATTENDEE | 1 | MUST be the address of requestor | | ATTENDEE | 1 | MUST be the address of requester |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| UID | 1 | MUST be the UID associated with | | UID | 1 | MUST be the UID associated with |
| | | original REQUEST | | | | original REQUEST |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it must NOT | | | | component. Otherwise it must NOT |
| | | be present. | | | | be present. |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| ATTACH | 0 | | | ATTACH | 0 | |
| CATEGORIES | 0 | | | CATEGORIES | 0 | |
| CLASS | 0 | | | CLASS | 0 | |
| CONTACT | 0 | | | CONTACT | 0 | |
| CREATED | 0 | | | CREATED | 0 | |
skipping to change at page 29, line 32 skipping to change at page 31, line 25
| | | original event | | | | original event |
| SEQUENCE | 1 | MUST be present if value is | | SEQUENCE | 1 | MUST be present if value is |
| | | greater than 0, MAY be present if | | | | greater than 0, MAY be present if |
| | | 0 | | | | 0 |
| SUMMARY | 1 | Can be null | | SUMMARY | 1 | Can be null |
| UID | 1 | MUST be the UID associated with | | UID | 1 | MUST be the UID associated with |
| | | the REQUEST being countered | | | | the REQUEST being countered |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| ATTENDEE | 0+ | Can also be used to propose other | | ATTENDEE | 0+ | Can also be used to propose other |
| | | "Attendees" | | | | "Attendees" |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DTEND | 0 or 1 | if present DURATION MUST NOT be | | DTEND | 0 or 1 | if present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | if present DTEND MUST NOT be | | DURATION | 0 or 1 | if present DTEND MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| REQUEST-STATUS | 0+ | | | REQUEST-STATUS | 0+ | |
| RESOURCES | 0 or 1 | This property may contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | Value must be one of | | STATUS | 0 or 1 | Value must be one of |
| | | CONFIRMED/TENATIVE/ CANCELLED | | | | CONFIRMED/TENATIVE/ CANCELLED |
| TRANSP | 0 or 1 | | | TRANSP | 0 or 1 | |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
| | | | | | | |
| VTIMEZONE | 0+ | MUST be present if any date/time | | VTIMEZONE | 0+ | MUST be present if any date/time |
skipping to change at page 31, line 7 skipping to change at page 32, line 44
| Component/Property | Presence | Comment | | Component/Property | Presence | Comment |
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "DECLINECOUNTER" | | METHOD | 1 | MUST be "DECLINECOUNTER" |
| | | | | | | |
| VEVENT | 1 | | | VEVENT | 1 | |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| UID | 1 | MUST, same UID specified in | | UID | 1 | MUST, same UID specified in |
| | | original REQUEST and subsequent | | | | original REQUEST and subsequent |
| | | COUNTER | | | | COUNTER |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| REQUEST-STATUS | 0+ | | | REQUEST-STATUS | 0+ | |
| SEQUENCE | 0 OR 1 | MUST be present if value is | | SEQUENCE | 0 or 1 | MUST be present if value is |
| | | greater than 0, MAY be present if | | | | greater than 0, MAY be present if |
| | | 0 | | | | 0 |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| ATTACH | 0 | | | ATTACH | 0 | |
| ATTENDEE | 0 | | | ATTENDEE | 0 | |
| CATEGORIES | 0 | | | CATEGORIES | 0 | |
| CLASS | 0 | | | CLASS | 0 | |
| CONTACT | 0 | | | CONTACT | 0 | |
| CREATED | 0 | | | CREATED | 0 | |
| DESCRIPTION | 0 | | | DESCRIPTION | 0 | |
skipping to change at page 33, line 9 skipping to change at page 34, line 48
transport binding supports exception messages, then individual "D" transport binding supports exception messages, then individual "D"
returns an "unsupported capability" message to individual "A4.34.3". returns an "unsupported capability" message to individual "A4.34.3".
The following summarizes the methods that are defined for the The following summarizes the methods that are defined for the
"VFREEBUSY" calendar component. "VFREEBUSY" calendar component.
+---------+-------------------------------------+ +---------+-------------------------------------+
| Method | Description | | Method | Description |
+---------+-------------------------------------+ +---------+-------------------------------------+
| PUBLISH | Publish unsolicited busy time data. | | PUBLISH | Publish unsolicited busy time data. |
| | |
| REQUEST | Request busy time data. | | REQUEST | Request busy time data. |
| | |
| REPLY | Reply to a busy time request. | | REPLY | Reply to a busy time request. |
+---------+-------------------------------------+ +---------+-------------------------------------+
3.3.1. PUBLISH 3.3.1. PUBLISH
The "PUBLISH" method in a "VFREEBUSY" calendar component is used to 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 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 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 unsolicited busy time data. That is, the busy time data is not being
sent as a "REPLY" to the receipt of a "REQUEST" method. sent as a "REPLY" to the receipt of a "REQUEST" method.
skipping to change at page 34, line 20 skipping to change at page 35, line 35
| VFREEBUSY | 1+ | | | VFREEBUSY | 1+ | |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | DateTime values must be in UTC | | DTSTART | 1 | DateTime values must be in UTC |
| DTEND | 1 | DateTime values must be in UTC | | DTEND | 1 | DateTime values must be in UTC |
| FREEBUSY | 1+ | MUST be BUSYTIME. Multiple | | FREEBUSY | 1+ | MUST be BUSYTIME. Multiple |
| | | instances are allowed. Multiple | | | | instances are allowed. Multiple |
| | | instances must be sorted in | | | | instances must be sorted in |
| | | ascending order | | | | ascending order |
| ORGANIZER | 1 | MUST contain the address of | | ORGANIZER | 1 | MUST contain the address of |
| | | originator of busy time data. | | | | originator of busy time data. |
| COMMENT | 0 or 1 | | | UID | 1 | |
| CONTACT | 0+ | | | COMMENT | 0+ | |
| CONTACT | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| URL | 0 or 1 | Specifies busy time URL | | URL | 0 or 1 | Specifies busy time URL |
| ATTENDEE | 0 | | | ATTENDEE | 0 | |
| DURATION | 0 | | | DURATION | 0 | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| UID | 0 | |
| | | | | | | |
| X-COMPONENT | 0+ | | | X-COMPONENT | 0+ | |
| | | | | | | |
| VEVENT | 0 | | | VEVENT | 0 | |
| | | | | | | |
| VTODO | 0 | | | VTODO | 0 | |
| | | | | | | |
| VJOURNAL | 0 | | | VJOURNAL | 0 | |
| | | | | | | |
| VTIMEZONE | 0 | | | VTIMEZONE | 0 | |
skipping to change at page 35, line 27 skipping to change at page 37, line 19
| | | | | | | |
| VFREEBUSY | 1 | | | VFREEBUSY | 1 | |
| ATTENDEE | 1+ | contain the address of the | | ATTENDEE | 1+ | contain the address of the |
| | | calendar store | | | | calendar store |
| DTEND | 1 | DateTime values must be in UTC | | DTEND | 1 | DateTime values must be in UTC |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | DateTime values must be in UTC | | DTSTART | 1 | DateTime values must be in UTC |
| ORGANIZER | 1 | MUST be the request originator's | | ORGANIZER | 1 | MUST be the request originator's |
| | | address | | | | address |
| UID | 1 | | | UID | 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| FREEBUSY | 0 | | | FREEBUSY | 0 | |
| DURATION | 0 | | | DURATION | 0 | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| URL | 0 | | | URL | 0 | |
| | | | | | | |
| X-COMPONENT | 0+ | | | X-COMPONENT | 0+ | |
| | | | | | | |
| VALARM | 0 | | | VALARM | 0 | |
| | | | | | | |
skipping to change at page 36, line 30 skipping to change at page 38, line 23
| DTEND | 1 | DateTime values must be in UTC | | DTEND | 1 | DateTime values must be in UTC |
| DTSTART | 1 | DateTime values must be in UTC | | DTSTART | 1 | DateTime values must be in UTC |
| FREEBUSY | 1+ | (values MUST all be of the same | | FREEBUSY | 1+ | (values MUST all be of the same |
| | | data type. Multiple instances | | | | data type. Multiple instances |
| | | are allowed. Multiple instances | | | | are allowed. Multiple instances |
| | | MUST be sorted in ascending | | | | MUST be sorted in ascending |
| | | order. Values MAY NOT overlap) | | | | order. Values MAY NOT overlap) |
| ORGANIZER | 1 | MUST be the request originator's | | ORGANIZER | 1 | MUST be the request originator's |
| | | address | | | | address |
| UID | 1 | | | UID | 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0 or 1 | |
| REQUEST-STATUS | 0+ | | | REQUEST-STATUS | 0+ | |
| URL | 0 or 1 | (specifies busy time URL) | | URL | 0 or 1 | (specifies busy time URL) |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| DURATION | 0 | | | DURATION | 0 | |
| SEQUENCE | 0 | | | SEQUENCE | 0 | |
| | | | | | | |
| X-COMPONENT | 0+ | | | X-COMPONENT | 0+ | |
| | | | | | | |
| VALARM | 0 | | | VALARM | 0 | |
| | | | | | | |
skipping to change at page 37, line 21 skipping to change at page 39, line 11
The following summarizes the methods that are defined for the "VTODO" The following summarizes the methods that are defined for the "VTODO"
calendar component. calendar component.
+----------------+--------------------------------------------------+ +----------------+--------------------------------------------------+
| Method | Description | | Method | Description |
+----------------+--------------------------------------------------+ +----------------+--------------------------------------------------+
| PUBLISH | Post notification of a VTODO. Used primarily as | | PUBLISH | Post notification of a VTODO. Used primarily as |
| | a method of advertising the existence of a | | | a method of advertising the existence of a |
| | VTODO. | | | VTODO. |
| | |
| REQUEST | Assign a VTODO. This is an explicit assignment | | REQUEST | Assign a VTODO. This is an explicit assignment |
| | to one or more Calendar Users. The REQUEST | | | to one or more Calendar Users. The REQUEST |
| | method is also used to update or change an | | | method is also used to update or change an |
| | existing VTODO. Clients that cannot handle | | | existing VTODO. Clients that cannot handle |
| | REQUEST MAY degrade the method to treat it as a | | | REQUEST MAY degrade the method to treat it as a |
| | PUBLISH. | | | PUBLISH. |
| | |
| REPLY | Reply to a VTODO request. Attendees MAY set | | REPLY | Reply to a VTODO request. Attendees MAY set |
| | PARTSTAT to ACCEPTED, DECLINED, TENTATIVE, | | | PARTSTAT to ACCEPTED, DECLINED, TENTATIVE, |
| | DELEGATED, PARTIAL, and COMPLETED. | | | DELEGATED, PARTIAL, and COMPLETED. |
| | |
| ADD | Add one or more instances to an existing to-do. | | ADD | Add one or more instances to an existing to-do. |
| | |
| CANCEL | Cancel one or more instances of an existing | | CANCEL | Cancel one or more instances of an existing |
| | to-do. | | | to-do. |
| | |
| REFRESH | A request sent to a VTODO Organizer asking for | | REFRESH | A request sent to a VTODO Organizer asking for |
| | the latest version of a VTODO. | | | the latest version of a VTODO. |
| | |
| COUNTER | Counter a REQUEST with an alternative proposal. | | COUNTER | Counter a REQUEST with an alternative proposal. |
| DECLINECOUNTER | | | | |
| DECLINECOUNTER | Decline a counter proposal by an Attendee. |
+----------------+--------------------------------------------------+ +----------------+--------------------------------------------------+
3.4.1. PUBLISH 3.4.1. PUBLISH
The "PUBLISH" method in a "VTODO" calendar component has no The "PUBLISH" method in a "VTODO" calendar component has no
associated response. It is simply a posting of an iCalendar object associated response. It is simply a posting of an iCalendar object
that maybe added to a calendar. It MUST have an "Organizer". It that maybe added to a calendar. It MUST have an "Organizer". It
MUST NOT have "Attendees". Its expected usage is for encapsulating MUST NOT have "Attendees". Its expected usage is for encapsulating
an arbitrary "VTODO" calendar component as an iCalendar object. The an arbitrary "VTODO" calendar component as an iCalendar object. The
"Organizer" MAY subsequently update (with another "PUBLISH" method), "Organizer" MAY subsequently update (with another "PUBLISH" method),
skipping to change at page 38, line 21 skipping to change at page 40, line 21
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | | | DTSTART | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| PRIORITY | 1 | | | PRIORITY | 1 | |
| SEQUENCE | 0 or 1 | MUST be present if value is | | SEQUENCE | 0 or 1 | MUST be present if value is |
| | | greater than 0, MAY be present if | | | | greater than 0, MAY be present if |
| | | 0 | | | | 0 |
| SUMMARY | 1 | Can be null. | | SUMMARY | 1 | Can be null. |
| UID | 1 | | | UID | 1 | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| COMPLETED | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null | | DESCRIPTION | 0 or 1 | Can be null |
| DUE | 0 or 1 | If present DURATION MUST NOT be | | DUE | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DUE MUST NOT be | | DURATION | 0 or 1 | If present DUE MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PERCENT-COMPLETE | 0 or 1 | | | PERCENT-COMPLETE | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property may contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS | | STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS |
| | | ACTION/IN- PROCESS/CANCELLED | | | | ACTION/IN- PROCESS/CANCELLED |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| ATTENDEE | 0 | | | ATTENDEE | 0 | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| | | | | | | |
| VTIMEZONE | 0+ | MUST be present if any date/time | | VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone | | | | refers to a timezone |
skipping to change at page 40, line 33 skipping to change at page 42, line 32
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | | | DTSTART | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| PRIORITY | 1 | | | PRIORITY | 1 | |
| SEQUENCE | 0 or 1 | MUST be present if value is | | SEQUENCE | 0 or 1 | MUST be present if value is |
| | | greater than 0, MAY be present if | | | | greater than 0, MAY be present if |
| | | 0 | | | | 0 |
| SUMMARY | 1 | Can be null | | SUMMARY | 1 | Can be null |
| UID | 1 | | | UID | 1 | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| COMPLETED | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null | | DESCRIPTION | 0 or 1 | Can be null |
| DUE | 0 or 1 | If present DURATION MUST NOT be | | DUE | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DUE MUST NOT be | | DURATION | 0 or 1 | If present DUE MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PERCENT-COMPLETE | 0 or 1 | | | PERCENT-COMPLETE | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | present if referring to an | | RECURRENCE-ID | 0 or 1 | present if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property may contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS | | STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS |
| | | ACTION/IN- PROCESS | | | | ACTION/IN- PROCESS |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
| | | | | | | |
| VTIMEZONE | 0+ | MUST be present if any date/time | | VTIMEZONE | 0+ | MUST be present if any date/time |
skipping to change at page 44, line 43 skipping to change at page 46, line 42
| | | | | | | |
| VTODO | 1+ | All component MUST have the same | | VTODO | 1+ | All component MUST have the same |
| | | UID | | | | UID |
| ATTENDEE | 1+ | | | ATTENDEE | 1+ | |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| REQUEST-STATUS | 1+ | | | REQUEST-STATUS | 1+ | |
| UID | 1 | MUST must be the address of the | | UID | 1 | MUST must be the address of the |
| | | replying attendee | | | | replying attendee |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| COMPLETED | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| DUE | 0 or 1 | If present DURATION MUST NOT be | | DUE | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DUE MUST NOT be | | DURATION | 0 or 1 | If present DUE MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PERCENT-COMPLETE | 0 or 1 | | | PERCENT-COMPLETE | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property may contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a Recurring calendar | | | | instance of a Recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present | | | | be present |
| SEQUENCE | 0 or 1 | MUST be the sequence number of | | SEQUENCE | 0 or 1 | MUST be the sequence number of |
| | | the original REQUEST if greater | | | | the original REQUEST if greater |
| | | than 0. MAY be present if 0. | | | | than 0. MAY be present if 0. |
| STATUS | 0 or 1 | | | STATUS | 0 or 1 | |
| SUMMARY | 0 or 1 | Can be null | | SUMMARY | 0 or 1 | Can be null |
skipping to change at page 46, line 29 skipping to change at page 48, line 26
| VTODO | 1 | | | VTODO | 1 | |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| PRIORITY | 1 | | | PRIORITY | 1 | |
| SEQUENCE | 1 | MUST be greater than 0 | | SEQUENCE | 1 | MUST be greater than 0 |
| SUMMARY | 1 | Can be null | | SUMMARY | 1 | Can be null |
| UID | 1 | MUST match that of the original | | UID | 1 | MUST match that of the original |
| | | to-do | | | | to-do |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| ATTENDEE | 0+ | | | ATTENDEE | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| COMPLETED | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null | | DESCRIPTION | 0 or 1 | Can be null |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| DUE | 0 or 1 | If present DURATION MUST NOT be | | DUE | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DUE MUST NOT be | | DURATION | 0 or 1 | If present DUE MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PERCENT-COMPLETE | 0 or 1 | | | PERCENT-COMPLETE | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property may contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS | | STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS |
| | | ACTION/IN- PROCESS | | | | ACTION/IN- PROCESS |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| RECURRENCE-ID | 0 | | | RECURRENCE-ID | 0 | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
| | | | | | | |
skipping to change at page 49, line 20 skipping to change at page 50, line 23
| VTODO | 1 | | | VTODO | 1 | |
| ATTENDEE | 0+ | include all "Attendees" being | | ATTENDEE | 0+ | include all "Attendees" being |
| | | removed from the todo. MUST | | | | removed from the todo. MUST |
| | | include all "Attendees" if the | | | | include all "Attendees" if the |
| | | entire todo is cancelled. | | | | entire todo is cancelled. |
| UID | 1 | MUST echo original UID | | UID | 1 | MUST echo original UID |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| SEQUENCE | 1 | | | SEQUENCE | 1 | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property MAY contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| COMPLETED | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| DUE | 0 or 1 | If present DURATION MUST NOT be | | DUE | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DUE MUST NOT be | | DURATION | 0 or 1 | If present DUE MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| GEO | 0 or 1 | | | GEO | 0 or 1 | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PERCENT-COMPLETE | 0 or 1 | | | PERCENT-COMPLETE | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to one or | | RECURRENCE-ID | 0 or 1 | MUST only if referring to one or |
| | | more instances of a recurring | | | | more instances of a recurring |
| | | calendar component. Otherwise it | | | | calendar component. Otherwise it |
| | | MUST NOT be present. | | | | MUST NOT be present. |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RESOURCES | 0 or 1 | This property MAY contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| STATUS | 0 or 1 | If present it MUST be set to | | STATUS | 0 or 1 | If present it MUST be set to |
| | | "CANCELLED". MUST NOT be used if | | | | "CANCELLED". MUST NOT be used if |
| | | purpose is to remove "ATTENDEES" | | | | purpose is to remove "ATTENDEES" |
| | | rather than cancel the entire | | | | rather than cancel the entire |
| | | VTODO. | | | | VTODO. |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| REQUEST-STATUS | 0 | | | REQUEST-STATUS | 0 | |
skipping to change at page 51, line 23 skipping to change at page 52, line 17
| UID | 1 | MUST echo original UID | | UID | 1 | MUST echo original UID |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a Recurring calendar | | | | instance of a Recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present | | | | be present |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| ATTACH | 0 | | | ATTACH | 0 | |
| CATEGORIES | 0 | | | CATEGORIES | 0 | |
| CLASS | 0 | | | CLASS | 0 | |
| COMMENT | 0 | | | COMMENT | 0 | |
| COMPLETED | 0 | |
| CONTACT | 0 | | | CONTACT | 0 | |
| CREATED | 0 | | | CREATED | 0 | |
| DESCRIPTION | 0 | | | DESCRIPTION | 0 | |
| DTSTART | 0 | | | DTSTART | 0 | |
| DUE | 0 | | | DUE | 0 | |
| DURATION | 0 | | | DURATION | 0 | |
| EXDATE | 0 | | | EXDATE | 0 | |
| EXRULE | 0 | | | EXRULE | 0 | |
| GEO | 0 | | | GEO | 0 | |
| LAST-MODIFIED | 0 | | | LAST-MODIFIED | 0 | |
skipping to change at page 52, line 44 skipping to change at page 53, line 41
| METHOD | 1 | MUST be "COUNTER" | | METHOD | 1 | MUST be "COUNTER" |
| | | | | | | |
| VTODO | 1 | | | VTODO | 1 | |
| ATTENDEE | 1+ | | | ATTENDEE | 1+ | |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| PRIORITY | 1 | | | PRIORITY | 1 | |
| SUMMARY | 1 | Can be null | | SUMMARY | 1 | Can be null |
| UID | 1 | | | UID | 1 | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property MAY contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| COMPLETED | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | Can be null | | DESCRIPTION | 0 or 1 | Can be null |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| DUE | 0 or 1 | If present DURATION MUST NOT be | | DUE | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DUE MUST NOT be | | DURATION | 0 or 1 | If present DUE MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
skipping to change at page 53, line 21 skipping to change at page 54, line 17
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PERCENT-COMPLETE | 0 or 1 | | | PERCENT-COMPLETE | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only 3.5if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only 3.5if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| REQUEST-STATUS | 0+ | | | REQUEST-STATUS | 0+ | |
| RESOURCES | 0 or 1 | This property MAY contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0 or 1 | | | RRULE | 0 or 1 | |
| SEQUENCE | 0 or 1 | MUST echo the original SEQUENCE | | SEQUENCE | 0 or 1 | MUST echo the original SEQUENCE |
| | | number. MUST be present if | | | | number. MUST be present if |
| | | non-zero. MAY be present if | | | | non-zero. MAY be present if |
| | | zero. | | | | zero. |
| STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS | | STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS |
| | | ACTION/IN- PROCESS/CANCELLED | | | | ACTION/IN- PROCESS/CANCELLED |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| | | | | | | |
skipping to change at page 55, line 18 skipping to change at page 55, line 18
| METHOD | 1 | MUST be "DECLINECOUNTER" | | METHOD | 1 | MUST be "DECLINECOUNTER" |
| | | | | | | |
| VTODO | 1 | | | VTODO | 1 | |
| ATTENDEE | 1+ | MUST for all attendees | | ATTENDEE | 1+ | MUST for all attendees |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| SEQUENCE | 1 | MUST echo the original SEQUENCE | | SEQUENCE | 1 | MUST echo the original SEQUENCE |
| | | number | | | | number |
| UID | 1 | MUST echo original UID | | UID | 1 | MUST echo original UID |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property may contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| COMPLETED | 0 or 1 | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| DUE | 0 or 1 | If present DURATION MUST NOT be | | DUE | 0 or 1 | If present DURATION MUST NOT be |
| | | present | | | | present |
| DURATION | 0 or 1 | If present DUE MUST NOT be | | DURATION | 0 or 1 | If present DUE MUST NOT be |
| | | present | | | | present |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
skipping to change at page 55, line 44 skipping to change at page 55, line 44
| LOCATION | 0 or 1 | | | LOCATION | 0 or 1 | |
| PERCENT-COMPLETE | 0 or 1 | | | PERCENT-COMPLETE | 0 or 1 | |
| PRIORITY | 0 or 1 | | | PRIORITY | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| REQUEST-STATUS | 0+ | | | REQUEST-STATUS | 0+ | |
| RESOURCES | 0 or 1 | This property MAY contain a list | | RESOURCES | 0+ | |
| | | of values |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS | | STATUS | 0 or 1 | MAY be one of COMPLETED/NEEDS |
| | | ACTION/IN- PROCESS | | | | ACTION/IN- PROCESS |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| | | | | | | |
| VTIMEZONE | 0+ | MUST be present if any date/time | | VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone | | | | refers to a timezone |
| | | | | | | |
| X-COMPONENT | 0+ | | | X-COMPONENT | 0+ | |
skipping to change at page 56, line 29 skipping to change at page 56, line 27
applicable to the "VJOURNAL" calendar component. applicable to the "VJOURNAL" calendar component.
The following summarizes the methods that are defined for the The following summarizes the methods that are defined for the
"VJOURNAL" calendar component. "VJOURNAL" calendar component.
+---------+---------------------------------------------------------+ +---------+---------------------------------------------------------+
| Method | Description | | Method | Description |
+---------+---------------------------------------------------------+ +---------+---------------------------------------------------------+
| PUBLISH | Post a journal entry. Used primarily as a method of | | PUBLISH | Post a journal entry. Used primarily as a method of |
| | advertising the existence of a journal entry. | | | advertising the existence of a journal entry. |
| | |
| ADD | Add one or more instances to an existing journal entry. | | ADD | Add one or more instances to an existing journal entry. |
| | |
| CANCEL | Cancel one or more instances of an existing journal | | CANCEL | Cancel one or more instances of an existing journal |
| | entry. | | | entry. |
+---------+---------------------------------------------------------+ +---------+---------------------------------------------------------+
3.5.1. PUBLISH 3.5.1. PUBLISH
The "PUBLISH" method in a "VJOURNAL" calendar component has no The "PUBLISH" method in a "VJOURNAL" calendar component has no
associated response. It is simply a posting of an iCalendar object associated response. It is simply a posting of an iCalendar object
that may be added to a calendar. It MUST have an "Organizer". It that may be added to a calendar. It MUST have an "Organizer". It
MUST NOT have "Attendees". The expected usage is for encapsulating MUST NOT have "Attendees". The expected usage is for encapsulating
skipping to change at page 57, line 17 skipping to change at page 57, line 17
+--------------------+----------+-----------------------------------+ +--------------------+----------+-----------------------------------+
| METHOD | 1 | MUST be "PUBLISH" | | METHOD | 1 | MUST be "PUBLISH" |
| | | | | | | |
| VJOURNAL | 1+ | | | VJOURNAL | 1+ | |
| DESCRIPTION | 1 | Can be null. | | DESCRIPTION | 1 | Can be null. |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | | | DTSTART | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| UID | 1 | | | UID | 1 | |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property MAY contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | MUST only if referring to an | | RECURRENCE-ID | 0 or 1 | MUST only if referring to an |
| | | instance of a recurring calendar | | | | instance of a recurring calendar |
| | | component. Otherwise it MUST NOT | | | | component. Otherwise it MUST NOT |
| | | be present. | | | | be present. |
skipping to change at page 57, line 43 skipping to change at page 57, line 42
| SEQUENCE | 0 or 1 | MUST echo the original SEQUENCE | | SEQUENCE | 0 or 1 | MUST echo the original SEQUENCE |
| | | number. MUST be present if | | | | number. MUST be present if |
| | | non-zero. MAY be present if | | | | non-zero. MAY be present if |
| | | zero. | | | | zero. |
| STATUS | 0 or 1 | MAY be one of | | STATUS | 0 or 1 | MAY be one of |
| | | DRAFT/FINAL/CANCELLED | | | | DRAFT/FINAL/CANCELLED |
| SUMMARY | 0 or 1 | Can be null | | SUMMARY | 0 or 1 | Can be null |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| ATTENDEE | 0 | | | ATTENDEE | 0 | |
| REQUEST-STATUS | 0 | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
| | | | | | | |
| VTIMEZONE | 0+ | MUST be present if any date/time | | VTIMEZONE | 0+ | MUST be present if any date/time |
| | | refers to a timezone | | | | refers to a timezone |
| | | | | | | |
| X-COMPONENT | 0+ | | | X-COMPONENT | 0+ | |
| | | | | | | |
| VEVENT | 0 | | | VEVENT | 0 | |
| | | | | | | |
skipping to change at page 59, line 19 skipping to change at page 59, line 19
| | | | | | | |
| VJOURNAL | 1 | | | VJOURNAL | 1 | |
| DESCRIPTION | 1 | Can be null | | DESCRIPTION | 1 | Can be null |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| DTSTART | 1 | | | DTSTART | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| SEQUENCE | 1 | MUST be greater than 0 | | SEQUENCE | 1 | MUST be greater than 0 |
| UID | 1 | MUST match that of the original | | UID | 1 | MUST match that of the original |
| | | journal | | | | journal |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| CATEGORIES | 0 or 1 | This property MAY contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RELATED-TO | 0+ | | | RELATED-TO | 0+ | |
| RRULE | 0+ | | | RRULE | 0+ | |
| STATUS | 0 or 1 | MAY be one of | | STATUS | 0 or 1 | MAY be one of |
| | | DRAFT/FINAL/CANCELLED | | | | DRAFT/FINAL/CANCELLED |
| SUMMARY | 0 or 1 | Can be null | | SUMMARY | 0 or 1 | Can be null |
| URL | 0 or 1 | | | URL | 0 or 1 | |
| X-PROPERTY | 0+ | | | X-PROPERTY | 0+ | |
| ATTENDEE | 0 | | | ATTENDEE | 0 | |
| RECURRENCE-ID | 0 | | | RECURRENCE-ID | 0 | |
| REQUEST-STATUS | 0 | |
| | | | | | | |
| VALARM | 0+ | | | VALARM | 0+ | |
| | | | | | | |
| VTIMEZONE | 0 or 1 | MUST be present if any date/time | | VTIMEZONE | 0 or 1 | MUST be present if any date/time |
| | | refers to a timezone | | | | refers to a timezone |
| | | | | | | |
| X-COMPONENT | 0+ | | | X-COMPONENT | 0+ | |
| | | | | | | |
| VEVENT | 0 | | | VEVENT | 0 | |
| | | | | | | |
skipping to change at page 61, line 18 skipping to change at page 61, line 18
| METHOD | 1 | MUST be "CANCEL" | | METHOD | 1 | MUST be "CANCEL" |
| | | | | | | |
| VJOURNAL | 1+ | All MUST have the same UID | | VJOURNAL | 1+ | All MUST have the same UID |
| DTSTAMP | 1 | | | DTSTAMP | 1 | |
| ORGANIZER | 1 | | | ORGANIZER | 1 | |
| SEQUENCE | 1 | | | SEQUENCE | 1 | |
| UID | 1 | MUST be the UID of the original | | UID | 1 | MUST be the UID of the original |
| | | REQUEST | | | | REQUEST |
| ATTACH | 0+ | | | ATTACH | 0+ | |
| ATTENDEE | 0+ | | | ATTENDEE | 0+ | |
| CATEGORIES | 0 or 1 | This property MAY contain a list | | CATEGORIES | 0+ | |
| | | of values |
| CLASS | 0 or 1 | | | CLASS | 0 or 1 | |
| COMMENT | 0 or 1 | | | COMMENT | 0+ | |
| CONTACT | 0+ | | | CONTACT | 0+ | |
| CREATED | 0 or 1 | | | CREATED | 0 or 1 | |
| DESCRIPTION | 0 or 1 | | | DESCRIPTION | 0 or 1 | |
| DTSTART | 0 or 1 | | | DTSTART | 0 or 1 | |
| EXDATE | 0+ | | | EXDATE | 0+ | |
| EXRULE | 0+ | | | EXRULE | 0+ | |
| LAST-MODIFIED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | |
| RDATE | 0+ | | | RDATE | 0+ | |
| RECURRENCE-ID | 0 or 1 | only if referring to an instance | | RECURRENCE-ID | 0 or 1 | only if referring to an instance |
| | | of a recurring calendar | | | | of a recurring calendar |
skipping to change at page 65, line 50 skipping to change at page 65, line 50
The "ORGANIZER" property is required on published events, to-dos, and The "ORGANIZER" property is required on published events, to-dos, and
journal entries for two reasons. First, only the "Organizer" is journal entries for two reasons. First, only the "Organizer" is
allowed to update and redistribute an event or to-do component. It allowed to update and redistribute an event or to-do component. It
follows that the "ORGANIZER" property MUST be present in the event, 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 to-do, or journal entry component so that the CUA has a basis for
authorizing an update. Second, it is prudent to provide a point of authorizing an update. Second, it is prudent to provide a point of
contact for anyone who receives a published component in case of contact for anyone who receives a published component in case of
problems. problems.
There are valid [RFC-822] addresses that represent groups. Sending There are valid [RFC2822] addresses that represent groups. Sending
email to such an address results in mail being sent to multiple email to such an address results in mail being sent to multiple
recipients. Such an address may be used as the value of an recipients. Such an address may be used as the value of an
"ATTENDEE" property. Thus, it is possible that the recipient of a "ATTENDEE" property. Thus, it is possible that the recipient of a
"REQUEST" does not appear explicitly in the list. "REQUEST" does not appear explicitly in the list.
It is recommended that the general approach to finding a "Calendar It is recommended that the general approach to finding a "Calendar
User" in an attendee list be as follows: User" in an attendee list be as follows:
1. Search for the "Calendar User" in the attendee list where 1. Search for the "Calendar User" in the attendee list where
"TYPE=INDIVIDUAL" "TYPE=INDIVIDUAL"
skipping to change at page 101, line 21 skipping to change at page 101, line 21
+-------------+-----------------------+-----------------------------+ +-------------+-----------------------+-----------------------------+
| Action | "Organizer" | Attendee | | Action | "Organizer" | Attendee |
+-------------+-----------------------+-----------------------------+ +-------------+-----------------------+-----------------------------+
| Initiate a | "A" sends a REQUEST | | | Initiate a | "A" sends a REQUEST | |
| to-do | message to "B", "C", | | | to-do | message to "B", "C", | |
| request | and "D" | | | request | and "D" | |
| | | | | | | |
| Accept the | | "B" sends a "REPLY" message | | Accept the | | "B" sends a "REPLY" message |
| to-do | | to "A" with its "partstat" | | to-do | | to "A" with its "partstat" |
| request | | paramater set to | | request | | parameter set to |
| | | "accepted". | | | | "accepted". |
| | | | | | | |
| Decline the | | "C" sends a REPLY message | | Decline the | | "C" sends a REPLY message |
| to-do | | to "A" with its "partstat" | | to-do | | to "A" with its "partstat" |
| request | | parameter set to | | request | | parameter set to |
| | | "declined". | | | | "declined". |
| | | | | | | |
| Tentatively | | "D" sends a REPLY message | | Tentatively | | "D" sends a REPLY message |
| accept the | | to "A" with its "partstat" | | accept the | | to "A" with its "partstat" |
| to-do | | parameter set to | | to-do | | parameter set to |
skipping to change at page 107, line 30 skipping to change at page 107, line 30
4.7.2. Bad RECURRENCE-ID 4.7.2. Bad RECURRENCE-ID
Component instances are identified by the combination of "UID", Component instances are identified by the combination of "UID",
"RECURRENCE-ID", and "SEQUENCE". When an "Organizer" sends a request "RECURRENCE-ID", and "SEQUENCE". When an "Organizer" sends a request
to an "Attendee", there are three cases in which an instance cannot to an "Attendee", there are three cases in which an instance cannot
be found. They are: be found. They are:
1. The component with the referenced "UID" and "RECURRENCE-ID" has 1. The component with the referenced "UID" and "RECURRENCE-ID" has
been found but the "SEQUENCE" number in the calendar store does been found but the "SEQUENCE" number in the calendar store does
not match that of the ITIP message. not match that of the ITIP message.
2. The component with the referenced "UID" has been found, the 2. The component with the referenced "UID" has been found, the
"SEQUENCE" numbers match, but the "RECURRENCE-ID" cannot be "SEQUENCE" numbers match, but the "RECURRENCE-ID" cannot be
found. 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 In case (1), two things can happen. If the "SEQUENCE" number of the
"Attendee's" instance is larger than that in the "Organizer's" "Attendee's" instance is larger than that in the "Organizer's"
message then the "Attendee" is receiving an out-of-sequence message message then the "Attendee" is receiving an out-of-sequence message
and MUST ignore it. If the "SEQUENCE" number of the "Attendee's" and MUST ignore it. If the "SEQUENCE" number of the "Attendee's"
instance is smaller, then the "Organizer" is sending out a newer instance is smaller, then the "Organizer" is sending out a newer
version of the component and the "Attendee's" version needs to be version of the component and the "Attendee's" version needs to be
updated. Since one or more updates have been missed, the "Attendee" updated. Since one or more updates have been missed, the "Attendee"
SHOULD send a "REFRESH" message to the "Organizer" to get an updated SHOULD send a "REFRESH" message to the "Organizer" to get an updated
version of the event. version of the event.
skipping to change at page 119, line 11 skipping to change at page 119, line 11
"Attendee's" of an event or to-do are authorized to receive replies "Attendee's" of an event or to-do are authorized to receive replies
to "REFRESH" requests. Replying to such requests to anyone who is to "REFRESH" requests. Replying to such requests to anyone who is
not an "Attendee" may be a security problem. not an "Attendee" may be a security problem.
6.2. Recommendations 6.2. Recommendations
For an application where the information is sensitive or critical and For an application where the information is sensitive or critical and
the network is subject is subject to a high probability of attack, the network is subject is subject to a high probability of attack,
iTIP transactions SHOULD be encrypted. This may be accomplished iTIP transactions SHOULD be encrypted. This may be accomplished
using public key technology, specifically Security Multiparts for using public key technology, specifically Security Multiparts for
MIME [RFC-1847] in the iTIP transport binding. This helps mitigate MIME [RFC1847] in the iTIP transport binding. This helps mitigate
the threats of spoofing, eavesdropping and malicious changes in the threats of spoofing, eavesdropping and malicious changes in
transit. transit.
6.2.1. Use of [RFC-1847] to secure iTIP transactions 6.2.1. Use of [RFC1847] to secure iTIP transactions
iTIP transport bindings MUST provide a mechanism based on Security iTIP transport bindings MUST provide a mechanism based on Security
Multiparts for MIME [RFC-1847] to enable authentication of the Multiparts for MIME [RFC1847] to enable authentication of the
sender's identity, and privacy and integrity of the data being sender's identity, and privacy and integrity of the data being
transmitted. This allows the receiver of a signed iCalendar object transmitted. This allows the receiver of a signed iCalendar object
to verify the identity of the sender. This sender may then be to verify the identity of the sender. This sender may then be
correlated to an "ATTENDEE" property in the iCalendar object. If the correlated to an "ATTENDEE" property in the iCalendar object. If the
correlation is made and the sender is authorized to make the correlation is made and the sender is authorized to make the
requested change or update then the operation may proceed. It also requested change or update then the operation may proceed. It also
allows the message to be encrypted to prevent unauthorized reading of allows the message to be encrypted to prevent unauthorized reading of
the message contents in transit. iTIP transport binding documents the message contents in transit. iTIP transport binding documents
describe this process in detail. describe this process in detail.
skipping to change at page 120, line 15 skipping to change at page 120, line 15
for audit or historical purposes, "Calendar Users" who were part of for audit or historical purposes, "Calendar Users" who were part of
an attendee list and who were subsequently uninvited. Similar an attendee list and who were subsequently uninvited. Similar
controls or alerts should be provided when a "REFRESH" request is controls or alerts should be provided when a "REFRESH" request is
received from these "Calendar Users" as well. received from these "Calendar Users" as well.
7. References 7. References
7.1. Normative References 7.1. Normative References
[I-D.ietf-calsify-rfc2445bis] [I-D.ietf-calsify-rfc2445bis]
Desruisseaux, B. and C. Stoner, "Internet Calendaring and Desruisseaux, B., "Internet Calendaring and Scheduling
Scheduling Core Object Specification (iCalendar)", Core Object Specification (iCalendar)",
draft-ietf-calsify-rfc2445bis-00 (work in progress), draft-ietf-calsify-rfc2445bis-01 (work in progress),
October 2005. June 2006.
[I-D.ietf-calsify-rfc2447bis] [I-D.ietf-calsify-rfc2447bis]
Melnikov, A., "iCalendar Message-Based Interoperability Melnikov, A., "iCalendar Message-Based Interoperability
Protocol (iMIP)", draft-ietf-calsify-rfc2447bis-01 (work Protocol(iMIP)", draft-ietf-calsify-rfc2447bis-02 (work in
in progress), March 2006. progress), June 2006.
[RFC1847] Galvin, J., Murphy, S., Crocker, S., and N. Freed,
"Security Multiparts for MIME: Multipart/Signed and
Multipart/Encrypted", RFC 1847, October 1995.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2822] Resnick, P., "Internet Message Format", RFC 2822,
April 2001.
7.2. Informative References 7.2. Informative References
Appendix A. Acknowledgments Appendix A. Acknowledgments
This is an update to the original iTIP document authored by This is an update to the original iTIP document authored by
S.Silverberg, S. Mansour, F. Dawson and R. Hopson. S.Silverberg, S. Mansour, F. Dawson and R. Hopson.
Author's Address Author's Address
Cyrus Daboo Cyrus Daboo
 End of changes. 104 change blocks. 
170 lines changed or deleted 214 lines changed or added

This html diff was produced by rfcdiff 1.32. The latest version is available from http://www.levkowetz.com/ietf/tools/rfcdiff/