]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/docs/rfc5545.txt
removed community home addon
[friendica-addons.git] / dav / SabreDAV / docs / rfc5545.txt
1
2
3
4
5
6
7 Network Working Group                               B. Desruisseaux, Ed.
8 Request for Comments: 5545                                        Oracle
9 Obsoletes: 2445                                           September 2009
10 Category: Standards Track
11
12
13      Internet Calendaring and Scheduling Core Object Specification
14                               (iCalendar)
15
16 Abstract
17
18 This document defines the iCalendar data format for representing and
19 exchanging calendaring and scheduling information such as events,
20 to-dos, journal entries, and free/busy information, independent of any
21 particular calendar service or protocol.
22
23 Status of This Memo
24
25    This document specifies an Internet standards track protocol for the
26    Internet community, and requests discussion and suggestions for
27    improvements.  Please refer to the current edition of the "Internet
28    Official Protocol Standards" (STD 1) for the standardization state
29    and status of this protocol.  Distribution of this memo is unlimited.
30
31 Copyright and License Notice
32
33    Copyright (c) 2009 IETF Trust and the persons identified as the
34    document authors.  All rights reserved.
35
36    This document is subject to BCP 78 and the IETF Trust's Legal
37    Provisions Relating to IETF Documents
38    (http://trustee.ietf.org/license-info) in effect on the date of
39    publication of this document.  Please review these documents
40    carefully, as they describe your rights and restrictions with respect
41    to this document.  Code Components extracted from this document must
42    include Simplified BSD License text as described in Section 4.e of
43    the Trust Legal Provisions and are provided without warranty as
44    described in the BSD License.
45
46    This document may contain material from IETF Documents or IETF
47    Contributions published or made publicly available before November
48    10, 2008.  The person(s) controlling the copyright in some of this
49    material may not have granted the IETF Trust the right to allow
50    modifications of such material outside the IETF Standards Process.
51    Without obtaining an adequate license from the person(s) controlling
52    the copyright in such materials, this document may not be modified
53    outside the IETF Standards Process, and derivative works of it may
54    not be created outside the IETF Standards Process, except to format
55
56
57
58 Desruisseaux                Standards Track                     [Page 1]
59 \f
60 RFC 5545                       iCalendar                  September 2009
61
62
63    it for publication as an RFC or to translate it into languages other
64    than English.
65
66 Table of Contents
67
68    1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   5
69    2.  Basic Grammar and Conventions . . . . . . . . . . . . . . . .   6
70      2.1.  Formatting Conventions  . . . . . . . . . . . . . . . . .   6
71      2.2.  Related Memos . . . . . . . . . . . . . . . . . . . . . .   7
72    3.  iCalendar Object Specification  . . . . . . . . . . . . . . .   8
73      3.1.  Content Lines . . . . . . . . . . . . . . . . . . . . . .   8
74        3.1.1.  List and Field Separators . . . . . . . . . . . . . .  11
75        3.1.2.  Multiple Values . . . . . . . . . . . . . . . . . . .  11
76        3.1.3.  Binary Content  . . . . . . . . . . . . . . . . . . .  11
77        3.1.4.  Character Set . . . . . . . . . . . . . . . . . . . .  12
78      3.2.  Property Parameters . . . . . . . . . . . . . . . . . . .  12
79        3.2.1.  Alternate Text Representation . . . . . . . . . . . .  13
80        3.2.2.  Common Name . . . . . . . . . . . . . . . . . . . . .  15
81        3.2.3.  Calendar User Type  . . . . . . . . . . . . . . . . .  15
82        3.2.4.  Delegators  . . . . . . . . . . . . . . . . . . . . .  16
83        3.2.5.  Delegatees  . . . . . . . . . . . . . . . . . . . . .  16
84        3.2.6.  Directory Entry Reference . . . . . . . . . . . . . .  17
85        3.2.7.  Inline Encoding . . . . . . . . . . . . . . . . . . .  17
86        3.2.8.  Format Type . . . . . . . . . . . . . . . . . . . . .  18
87        3.2.9.  Free/Busy Time Type . . . . . . . . . . . . . . . . .  19
88        3.2.10. Language  . . . . . . . . . . . . . . . . . . . . . .  20
89        3.2.11. Group or List Membership  . . . . . . . . . . . . . .  20
90        3.2.12. Participation Status  . . . . . . . . . . . . . . . .  21
91        3.2.13. Recurrence Identifier Range . . . . . . . . . . . . .  22
92        3.2.14. Alarm Trigger Relationship  . . . . . . . . . . . . .  23
93        3.2.15. Relationship Type . . . . . . . . . . . . . . . . . .  24
94        3.2.16. Participation Role  . . . . . . . . . . . . . . . . .  25
95        3.2.17. RSVP Expectation  . . . . . . . . . . . . . . . . . .  25
96        3.2.18. Sent By . . . . . . . . . . . . . . . . . . . . . . .  26
97        3.2.19. Time Zone Identifier  . . . . . . . . . . . . . . . .  26
98        3.2.20. Value Data Types  . . . . . . . . . . . . . . . . . .  28
99      3.3.  Property Value Data Types . . . . . . . . . . . . . . . .  29
100        3.3.1.  Binary  . . . . . . . . . . . . . . . . . . . . . . .  29
101        3.3.2.  Boolean . . . . . . . . . . . . . . . . . . . . . . .  30
102        3.3.3.  Calendar User Address . . . . . . . . . . . . . . . .  30
103        3.3.4.  Date  . . . . . . . . . . . . . . . . . . . . . . . .  31
104        3.3.5.  Date-Time . . . . . . . . . . . . . . . . . . . . . .  31
105        3.3.6.  Duration  . . . . . . . . . . . . . . . . . . . . . .  34
106        3.3.7.  Float . . . . . . . . . . . . . . . . . . . . . . . .  35
107        3.3.8.  Integer . . . . . . . . . . . . . . . . . . . . . . .  35
108        3.3.9.  Period of Time  . . . . . . . . . . . . . . . . . . .  36
109        3.3.10. Recurrence Rule . . . . . . . . . . . . . . . . . . .  37
110        3.3.11. Text  . . . . . . . . . . . . . . . . . . . . . . . .  45
111
112
113
114 Desruisseaux                Standards Track                     [Page 2]
115 \f
116 RFC 5545                       iCalendar                  September 2009
117
118
119        3.3.12. Time  . . . . . . . . . . . . . . . . . . . . . . . .  46
120        3.3.13. URI . . . . . . . . . . . . . . . . . . . . . . . . .  48
121        3.3.14. UTC Offset  . . . . . . . . . . . . . . . . . . . . .  49
122      3.4.  iCalendar Object  . . . . . . . . . . . . . . . . . . . .  49
123      3.5.  Property  . . . . . . . . . . . . . . . . . . . . . . . .  50
124      3.6.  Calendar Components . . . . . . . . . . . . . . . . . . .  50
125        3.6.1.  Event Component . . . . . . . . . . . . . . . . . . .  52
126        3.6.2.  To-Do Component . . . . . . . . . . . . . . . . . . .  56
127        3.6.3.  Journal Component . . . . . . . . . . . . . . . . . .  58
128        3.6.4.  Free/Busy Component . . . . . . . . . . . . . . . . .  60
129        3.6.5.  Time Zone Component . . . . . . . . . . . . . . . . .  63
130        3.6.6.  Alarm Component . . . . . . . . . . . . . . . . . . .  72
131      3.7.  Calendar Properties . . . . . . . . . . . . . . . . . . .  77
132        3.7.1.  Calendar Scale  . . . . . . . . . . . . . . . . . . .  77
133        3.7.2.  Method  . . . . . . . . . . . . . . . . . . . . . . .  78
134        3.7.3.  Product Identifier  . . . . . . . . . . . . . . . . .  79
135        3.7.4.  Version . . . . . . . . . . . . . . . . . . . . . . .  80
136      3.8.  Component Properties  . . . . . . . . . . . . . . . . . .  81
137        3.8.1.  Descriptive Component Properties  . . . . . . . . . .  81
138          3.8.1.1.  Attachment  . . . . . . . . . . . . . . . . . . .  81
139          3.8.1.2.  Categories  . . . . . . . . . . . . . . . . . . .  82
140          3.8.1.3.  Classification  . . . . . . . . . . . . . . . . .  83
141          3.8.1.4.  Comment . . . . . . . . . . . . . . . . . . . . .  84
142          3.8.1.5.  Description . . . . . . . . . . . . . . . . . . .  85
143          3.8.1.6.  Geographic Position . . . . . . . . . . . . . . .  87
144          3.8.1.7.  Location  . . . . . . . . . . . . . . . . . . . .  88
145          3.8.1.8.  Percent Complete  . . . . . . . . . . . . . . . .  89
146          3.8.1.9.  Priority  . . . . . . . . . . . . . . . . . . . .  90
147          3.8.1.10. Resources . . . . . . . . . . . . . . . . . . . .  92
148          3.8.1.11. Status  . . . . . . . . . . . . . . . . . . . . .  93
149          3.8.1.12. Summary . . . . . . . . . . . . . . . . . . . . .  94
150        3.8.2.  Date and Time Component Properties  . . . . . . . . .  95
151          3.8.2.1.  Date-Time Completed . . . . . . . . . . . . . . .  95
152          3.8.2.2.  Date-Time End . . . . . . . . . . . . . . . . . .  96
153          3.8.2.3.  Date-Time Due . . . . . . . . . . . . . . . . . .  97
154          3.8.2.4.  Date-Time Start . . . . . . . . . . . . . . . . .  99
155          3.8.2.5.  Duration  . . . . . . . . . . . . . . . . . . . . 100
156          3.8.2.6.  Free/Busy Time  . . . . . . . . . . . . . . . . . 101
157          3.8.2.7.  Time Transparency . . . . . . . . . . . . . . . . 102
158        3.8.3.  Time Zone Component Properties  . . . . . . . . . . . 103
159          3.8.3.1.  Time Zone Identifier  . . . . . . . . . . . . . . 103
160          3.8.3.2.  Time Zone Name  . . . . . . . . . . . . . . . . . 105
161          3.8.3.3.  Time Zone Offset From . . . . . . . . . . . . . . 106
162          3.8.3.4.  Time Zone Offset To . . . . . . . . . . . . . . . 106
163          3.8.3.5.  Time Zone URL . . . . . . . . . . . . . . . . . . 107
164        3.8.4.  Relationship Component Properties . . . . . . . . . . 108
165          3.8.4.1.  Attendee  . . . . . . . . . . . . . . . . . . . . 108
166          3.8.4.2.  Contact . . . . . . . . . . . . . . . . . . . . . 111
167
168
169
170 Desruisseaux                Standards Track                     [Page 3]
171 \f
172 RFC 5545                       iCalendar                  September 2009
173
174
175          3.8.4.3.  Organizer . . . . . . . . . . . . . . . . . . . . 113
176          3.8.4.4.  Recurrence ID . . . . . . . . . . . . . . . . . . 114
177          3.8.4.5.  Related To  . . . . . . . . . . . . . . . . . . . 117
178          3.8.4.6.  Uniform Resource Locator  . . . . . . . . . . . . 118
179          3.8.4.7.  Unique Identifier . . . . . . . . . . . . . . . . 119
180        3.8.5.  Recurrence Component Properties . . . . . . . . . . . 120
181          3.8.5.1.  Exception Date-Times  . . . . . . . . . . . . . . 120
182          3.8.5.2.  Recurrence Date-Times . . . . . . . . . . . . . . 122
183          3.8.5.3.  Recurrence Rule . . . . . . . . . . . . . . . . . 124
184        3.8.6.  Alarm Component Properties  . . . . . . . . . . . . . 134
185          3.8.6.1.  Action  . . . . . . . . . . . . . . . . . . . . . 134
186          3.8.6.2.  Repeat Count  . . . . . . . . . . . . . . . . . . 135
187          3.8.6.3.  Trigger . . . . . . . . . . . . . . . . . . . . . 135
188        3.8.7.  Change Management Component Properties  . . . . . . . 138
189          3.8.7.1.  Date-Time Created . . . . . . . . . . . . . . . . 138
190          3.8.7.2.  Date-Time Stamp . . . . . . . . . . . . . . . . . 139
191          3.8.7.3.  Last Modified . . . . . . . . . . . . . . . . . . 140
192          3.8.7.4.  Sequence Number . . . . . . . . . . . . . . . . . 141
193        3.8.8.  Miscellaneous Component Properties  . . . . . . . . . 142
194          3.8.8.1.  IANA Properties . . . . . . . . . . . . . . . . . 142
195          3.8.8.2.  Non-Standard Properties . . . . . . . . . . . . . 142
196          3.8.8.3.  Request Status  . . . . . . . . . . . . . . . . . 144
197    4.  iCalendar Object Examples . . . . . . . . . . . . . . . . . . 146
198    5.  Recommended Practices . . . . . . . . . . . . . . . . . . . . 150
199    6.  Internationalization Considerations . . . . . . . . . . . . . 151
200    7.  Security Considerations . . . . . . . . . . . . . . . . . . . 151
201    8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . 151
202      8.1.  iCalendar Media Type Registration . . . . . . . . . . . . 151
203      8.2.  New iCalendar Elements Registration . . . . . . . . . . . 155
204        8.2.1.  iCalendar Elements Registration Procedure . . . . . . 155
205        8.2.2.  Registration Template for Components  . . . . . . . . 155
206        8.2.3.  Registration Template for Properties  . . . . . . . . 156
207        8.2.4.  Registration Template for Parameters  . . . . . . . . 156
208        8.2.5.  Registration Template for Value Data Types  . . . . . 157
209        8.2.6.  Registration Template for Values  . . . . . . . . . . 157
210      8.3.  Initial iCalendar Elements Registries . . . . . . . . . . 158
211        8.3.1.  Components Registry . . . . . . . . . . . . . . . . . 158
212        8.3.2.  Properties Registry . . . . . . . . . . . . . . . . . 158
213        8.3.3.  Parameters Registry . . . . . . . . . . . . . . . . . 161
214        8.3.4.  Value Data Types Registry . . . . . . . . . . . . . . 162
215        8.3.5.  Calendar User Types Registry  . . . . . . . . . . . . 162
216        8.3.6.  Free/Busy Time Types Registry . . . . . . . . . . . . 163
217        8.3.7.  Participation Statuses Registry . . . . . . . . . . . 163
218        8.3.8.  Relationship Types Registry . . . . . . . . . . . . . 164
219        8.3.9.  Participation Roles Registry  . . . . . . . . . . . . 164
220        8.3.10. Actions Registry  . . . . . . . . . . . . . . . . . . 165
221        8.3.11. Classifications Registry  . . . . . . . . . . . . . . 165
222        8.3.12. Methods Registry  . . . . . . . . . . . . . . . . . . 165
223
224
225
226 Desruisseaux                Standards Track                     [Page 4]
227 \f
228 RFC 5545                       iCalendar                  September 2009
229
230
231    9.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 165
232    10. References  . . . . . . . . . . . . . . . . . . . . . . . . . 166
233      10.1. Normative References  . . . . . . . . . . . . . . . . . . 166
234      10.2. Informative References  . . . . . . . . . . . . . . . . . 167
235    Appendix A.  Differences from RFC 2445  . . . . . . . . . . . . . 169
236      A.1.  New Restrictions  . . . . . . . . . . . . . . . . . . . . 169
237      A.2.  Restrictions Removed  . . . . . . . . . . . . . . . . . . 169
238      A.3.  Deprecated Features . . . . . . . . . . . . . . . . . . . 169
239
240 1.  Introduction
241
242    The use of calendaring and scheduling has grown considerably in the
243    last decade.  Enterprise and inter-enterprise business has become
244    dependent on rapid scheduling of events and actions using this
245    information technology.  This memo is intended to progress the level
246    of interoperability possible between dissimilar calendaring and
247    scheduling applications.  This memo defines a MIME content type for
248    exchanging electronic calendaring and scheduling information.  The
249    Internet Calendaring and Scheduling Core Object Specification, or
250    iCalendar, allows for the capture and exchange of information
251    normally stored within a calendaring and scheduling application; such
252    as a Personal Information Manager (PIM) or a Group-Scheduling
253    product.
254
255    The iCalendar format is suitable as an exchange format between
256    applications or systems.  The format is defined in terms of a MIME
257    content type.  This will enable the object to be exchanged using
258    several transports, including but not limited to SMTP, HTTP, a file
259    system, desktop interactive protocols such as the use of a memory-
260    based clipboard or drag/drop interactions, point-to-point
261    asynchronous communication, wired-network transport, or some form of
262    unwired transport such as infrared.
263
264    The memo also provides for the definition of iCalendar object methods
265    that will map this content type to a set of messages for supporting
266    calendaring and scheduling operations such as requesting, replying
267    to, modifying, and canceling meetings or appointments, to-dos, and
268    journal entries.  The iCalendar object methods can be used to define
269    other calendaring and scheduling operations such as requesting for
270    and replying with free/busy time data.  Such a scheduling protocol is
271    defined in the iCalendar Transport-independent Interoperability
272    Protocol (iTIP) defined in [2446bis].
273
274    The memo also includes a formal grammar for the content type based on
275    the Internet ABNF defined in [RFC5234].  This ABNF is required for
276    the implementation of parsers and to serve as the definitive
277    reference when ambiguities or questions arise in interpreting the
278    descriptive prose definition of the memo.  Additional restrictions
279
280
281
282 Desruisseaux                Standards Track                     [Page 5]
283 \f
284 RFC 5545                       iCalendar                  September 2009
285
286
287    that could not easily be expressed with the ABNF syntax are specified
288    as comments in the ABNF.  Comments with normative statements should
289    be treated as such.
290
291 2.  Basic Grammar and Conventions
292
293    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
294    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
295    document are to be interpreted as described in [RFC2119].
296
297    This memo makes use of both a descriptive prose and a more formal
298    notation for defining the calendaring and scheduling format.
299
300    The notation used in this memo is the ABNF notation of [RFC5234].
301    Readers intending on implementing the format defined in this memo
302    should be familiar with this notation in order to properly interpret
303    the specifications of this memo.
304
305    All numeric values used in this memo are given in decimal notation.
306
307    All names of properties, property parameters, enumerated property
308    values, and property parameter values are case-insensitive.  However,
309    all other property values are case-sensitive, unless otherwise
310    stated.
311
312       Note: All indented editorial notes, such as this one, are intended
313       to provide the reader with additional information.  The
314       information is not essential to the building of an implementation
315       conformant with this memo.  The information is provided to
316       highlight a particular feature or characteristic of the memo.
317
318    The format for the iCalendar object is based on the syntax of the
319    text/directory media type [RFC2425].  While the iCalendar object is
320    not a profile of the text/directory media type [RFC2425], it does
321    reuse a number of the elements from the [RFC2425] specification.
322
323 2.1.  Formatting Conventions
324
325    The elements defined in this memo are defined in prose.  Many of the
326    terms used to describe these have common usage that is different than
327    the standards usage of this memo.  In order to reference, within this
328    memo, elements of the calendaring and scheduling model, core object
329    (this memo), or interoperability protocol [2446bis] some formatting
330    conventions have been used.  Calendaring and scheduling roles are
331    referred to in quoted-strings of text with the first character of
332    each word in uppercase.  For example, "Organizer" refers to a role of
333    a "Calendar User" within the scheduling protocol defined by
334    [2446bis].  Calendar components defined by this memo are referred to
335
336
337
338 Desruisseaux                Standards Track                     [Page 6]
339 \f
340 RFC 5545                       iCalendar                  September 2009
341
342
343    with capitalized, quoted-strings of text.  All calendar components
344    start with the letter "V".  For example, "VEVENT" refers to the event
345    calendar component, "VTODO" refers to the to-do calendar component,
346    and "VJOURNAL" refers to the daily journal calendar component.
347    Scheduling methods defined by iTIP [2446bis] are referred to with
348    capitalized, quoted-strings of text.  For example, "REQUEST" refers
349    to the method for requesting a scheduling calendar component be
350    created or modified, and "REPLY" refers to the method a recipient of
351    a request uses to update their status with the "Organizer" of the
352    calendar component.
353
354    The properties defined by this memo are referred to with capitalized,
355    quoted-strings of text, followed by the word "property".  For
356    example, "ATTENDEE" property refers to the iCalendar property used to
357    convey the calendar address of a calendar user.  Property parameters
358    defined by this memo are referred to with lowercase, quoted-strings
359    of text, followed by the word "parameter".  For example, "value"
360    parameter refers to the iCalendar property parameter used to override
361    the default value type for a property value.  Enumerated values
362    defined by this memo are referred to with capitalized text, either
363    alone or followed by the word "value".  For example, the "MINUTELY"
364    value can be used with the "FREQ" component of the "RECUR" value type
365    to specify repeating components based on an interval of one minute or
366    more.
367
368    The following table lists the different characters from the
369    [US-ASCII] character set that is referenced in this document.  For
370    each character, the table specifies the character name used
371    throughout this document, along with its US-ASCII decimal codepoint.
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394 Desruisseaux                Standards Track                     [Page 7]
395 \f
396 RFC 5545                       iCalendar                  September 2009
397
398
399               +------------------------+-------------------+
400               | Character name         | Decimal codepoint |
401               +------------------------+-------------------+
402               | HTAB                   | 9                 |
403               | LF                     | 10                |
404               | CR                     | 13                |
405               | DQUOTE                 | 22                |
406               | SPACE                  | 32                |
407               | PLUS SIGN              | 43                |
408               | COMMA                  | 44                |
409               | HYPHEN-MINUS           | 45                |
410               | PERIOD                 | 46                |
411               | SOLIDUS                | 47                |
412               | COLON                  | 58                |
413               | SEMICOLON              | 59                |
414               | LATIN CAPITAL LETTER N | 78                |
415               | LATIN CAPITAL LETTER T | 84                |
416               | LATIN CAPITAL LETTER X | 88                |
417               | LATIN CAPITAL LETTER Z | 90                |
418               | BACKSLASH              | 92                |
419               | LATIN SMALL LETTER N   | 110               |
420               +------------------------+-------------------+
421
422 2.2.  Related Memos
423
424    Implementers will need to be familiar with several other memos that,
425    along with this memo, form a framework for Internet calendaring and
426    scheduling standards.  This memo specifies a core specification of
427    objects, value types, properties, and property parameters.
428
429    o  iTIP [2446bis] specifies an interoperability protocol for
430       scheduling between different implementations;
431
432    o  iCalendar Message-Based Interoperability Protocol (iMIP) [2447bis]
433       specifies an Internet email binding for [2446bis].
434
435    This memo does not attempt to repeat the specification of concepts or
436    definitions from these other memos.  Where possible, references are
437    made to the memo that provides for the specification of these
438    concepts or definitions.
439
440 3.  iCalendar Object Specification
441
442    The following sections define the details of a Calendaring and
443    Scheduling Core Object Specification.  The Calendaring and Scheduling
444    Core Object is a collection of calendaring and scheduling
445    information.  Typically, this information will consist of an
446    iCalendar stream with one or more iCalendar objects.  The body of the
447
448
449
450 Desruisseaux                Standards Track                     [Page 8]
451 \f
452 RFC 5545                       iCalendar                  September 2009
453
454
455    iCalendar object consists of a sequence of calendar properties and
456    one or more calendar components.
457
458    Section 3.1 defines the content line format; Section 3.2 defines the
459    property parameter format; Section 3.3 defines the data types for
460    property values; Section 3.4 defines the iCalendar object format;
461    Section 3.5 defines the iCalendar property format; Section 3.6
462    defines the calendar component format; Section 3.7 defines calendar
463    properties; and Section 3.8 defines calendar component properties.
464
465    This information is intended to be an integral part of the MIME
466    content type registration.  In addition, this information can be used
467    independent of such content registration.  In particular, this memo
468    has direct applicability for use as a calendaring and scheduling
469    exchange format in file-, memory-, or network-based transport
470    mechanisms.
471
472 3.1.  Content Lines
473
474    The iCalendar object is organized into individual lines of text,
475    called content lines.  Content lines are delimited by a line break,
476    which is a CRLF sequence (CR character followed by LF character).
477
478    Lines of text SHOULD NOT be longer than 75 octets, excluding the line
479    break.  Long content lines SHOULD be split into a multiple line
480    representations using a line "folding" technique.  That is, a long
481    line can be split between any two characters by inserting a CRLF
482    immediately followed by a single linear white-space character (i.e.,
483    SPACE or HTAB).  Any sequence of CRLF followed immediately by a
484    single linear white-space character is ignored (i.e., removed) when
485    processing the content type.
486
487    For example, the line:
488
489      DESCRIPTION:This is a long description that exists on a long line.
490
491    Can be represented as:
492
493      DESCRIPTION:This is a lo
494       ng description
495        that exists on a long line.
496
497    The process of moving from this folded multiple-line representation
498    to its single-line representation is called "unfolding".  Unfolding
499    is accomplished by removing the CRLF and the linear white-space
500    character that immediately follows.
501
502
503
504
505
506 Desruisseaux                Standards Track                     [Page 9]
507 \f
508 RFC 5545                       iCalendar                  September 2009
509
510
511    When parsing a content line, folded lines MUST first be unfolded
512    according to the unfolding procedure described above.
513
514       Note: It is possible for very simple implementations to generate
515       improperly folded lines in the middle of a UTF-8 multi-octet
516       sequence.  For this reason, implementations need to unfold lines
517       in such a way to properly restore the original sequence.
518
519    The content information associated with an iCalendar object is
520    formatted using a syntax similar to that defined by [RFC2425].  That
521    is, the content information consists of CRLF-separated content lines.
522
523    The following notation defines the lines of content in an iCalendar
524    object:
525
526      contentline   = name *(";" param ) ":" value CRLF
527      ; This ABNF is just a general definition for an initial parsing
528      ; of the content line into its property name, parameter list,
529      ; and value string
530
531      ; When parsing a content line, folded lines MUST first
532      ; be unfolded according to the unfolding procedure
533      ; described above.  When generating a content line, lines
534      ; longer than 75 octets SHOULD be folded according to
535      ; the folding procedure described above.
536
537      name          = iana-token / x-name
538
539      iana-token    = 1*(ALPHA / DIGIT / "-")
540      ; iCalendar identifier registered with IANA
541
542      x-name        = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-")
543      ; Reserved for experimental use.
544
545      vendorid      = 3*(ALPHA / DIGIT)
546      ; Vendor identification
547
548      param         = param-name "=" param-value *("," param-value)
549      ; Each property defines the specific ABNF for the parameters
550      ; allowed on the property.  Refer to specific properties for
551      ; precise parameter ABNF.
552
553      param-name    = iana-token / x-name
554
555      param-value   = paramtext / quoted-string
556
557      paramtext     = *SAFE-CHAR
558
559
560
561
562 Desruisseaux                Standards Track                    [Page 10]
563 \f
564 RFC 5545                       iCalendar                  September 2009
565
566
567      value         = *VALUE-CHAR
568
569      quoted-string = DQUOTE *QSAFE-CHAR DQUOTE
570
571      QSAFE-CHAR    = WSP / %x21 / %x23-7E / NON-US-ASCII
572      ; Any character except CONTROL and DQUOTE
573
574      SAFE-CHAR     = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E
575                    / NON-US-ASCII
576      ; Any character except CONTROL, DQUOTE, ";", ":", ","
577
578      VALUE-CHAR    = WSP / %x21-7E / NON-US-ASCII
579      ; Any textual character
580
581      NON-US-ASCII  = UTF8-2 / UTF8-3 / UTF8-4
582      ; UTF8-2, UTF8-3, and UTF8-4 are defined in [RFC3629]
583
584      CONTROL       = %x00-08 / %x0A-1F / %x7F
585      ; All the controls except HTAB
586
587    The property value component of a content line has a format that is
588    property specific.  Refer to the section describing each property for
589    a definition of this format.
590
591    All names of properties, property parameters, enumerated property
592    values and property parameter values are case-insensitive.  However,
593    all other property values are case-sensitive, unless otherwise
594    stated.
595
596 3.1.1.  List and Field Separators
597
598    Some properties and parameters allow a list of values.  Values in a
599    list of values MUST be separated by a COMMA character.  There is no
600    significance to the order of values in a list.  For those parameter
601    values (such as those that specify URI values) that are specified in
602    quoted-strings, the individual quoted-strings are separated by a
603    COMMA character.
604
605    Some property values are defined in terms of multiple parts.  These
606    structured property values MUST have their value parts separated by a
607    SEMICOLON character.
608
609    Some properties allow a list of parameters.  Each property parameter
610    in a list of property parameters MUST be separated by a SEMICOLON
611    character.
612
613
614
615
616
617
618 Desruisseaux                Standards Track                    [Page 11]
619 \f
620 RFC 5545                       iCalendar                  September 2009
621
622
623    Property parameters with values containing a COLON character, a
624    SEMICOLON character or a COMMA character MUST be placed in quoted
625    text.
626
627    For example, in the following properties, a SEMICOLON is used to
628    separate property parameters from each other and a COMMA character is
629    used to separate property values in a value list.
630
631      ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:mailto:
632       jsmith@example.com
633
634      RDATE;VALUE=DATE:19970304,19970504,19970704,19970904
635
636 3.1.2.  Multiple Values
637
638    Some properties defined in the iCalendar object can have multiple
639    values.  The general rule for encoding multi-valued items is to
640    simply create a new content line for each value, including the
641    property name.  However, it should be noted that some properties
642    support encoding multiple values in a single property by separating
643    the values with a COMMA character.  Individual property definitions
644    should be consulted for determining whether a specific property
645    allows multiple values and in which of these two forms.  Multi-valued
646    properties MUST NOT be used to specify multiple language variants of
647    the same value.  Calendar applications SHOULD display all values.
648
649 3.1.3.  Binary Content
650
651    Binary content information in an iCalendar object SHOULD be
652    referenced using a URI within a property value.  That is, the binary
653    content information SHOULD be placed in an external MIME entity that
654    can be referenced by a URI from within the iCalendar object.  In
655    applications where this is not feasible, binary content information
656    can be included within an iCalendar object, but only after first
657    encoding it into text using the "BASE64" encoding method defined in
658    [RFC4648].  Inline binary content SHOULD only be used in applications
659    whose special circumstances demand that an iCalendar object be
660    expressed as a single entity.  A property containing inline binary
661    content information MUST specify the "ENCODING" property parameter.
662    Binary content information placed external to the iCalendar object
663    MUST be referenced by a uniform resource identifier (URI).
664
665    The following example specifies an "ATTACH" property that references
666    an attachment external to the iCalendar object with a URI reference:
667
668      ATTACH:http://example.com/public/quarterly-report.doc
669
670
671
672
673
674 Desruisseaux                Standards Track                    [Page 12]
675 \f
676 RFC 5545                       iCalendar                  September 2009
677
678
679    The following example specifies an "ATTACH" property with inline
680    binary encoded content information:
681
682      ATTACH;FMTTYPE=text/plain;ENCODING=BASE64;VALUE=BINARY:VGhlIH
683       F1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4
684
685 3.1.4.  Character Set
686
687    There is not a property parameter to declare the charset used in a
688    property value.  The default charset for an iCalendar stream is UTF-8
689    as defined in [RFC3629].
690
691    The "charset" Content-Type parameter MUST be used in MIME transports
692    to specify the charset being used.
693
694 3.2.  Property Parameters
695
696    A property can have attributes with which it is associated.  These
697    "property parameters" contain meta-information about the property or
698    the property value.  Property parameters are provided to specify such
699    information as the location of an alternate text representation for a
700    property value, the language of a text property value, the value type
701    of the property value, and other attributes.
702
703    Property parameter values that contain the COLON, SEMICOLON, or COMMA
704    character separators MUST be specified as quoted-string text values.
705    Property parameter values MUST NOT contain the DQUOTE character.  The
706    DQUOTE character is used as a delimiter for parameter values that
707    contain restricted characters or URI text.  For example:
708
709      DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild
710        Wizards Conference - - Las Vegas\, NV\, USA
711
712    Property parameter values that are not in quoted-strings are case-
713    insensitive.
714
715    The general property parameters defined by this memo are defined by
716    the following notation:
717
718
719
720
721
722
723
724
725
726
727
728
729
730 Desruisseaux                Standards Track                    [Page 13]
731 \f
732 RFC 5545                       iCalendar                  September 2009
733
734
735      icalparameter = altrepparam       ; Alternate text representation
736                    / cnparam           ; Common name
737                    / cutypeparam       ; Calendar user type
738                    / delfromparam      ; Delegator
739                    / deltoparam        ; Delegatee
740                    / dirparam          ; Directory entry
741                    / encodingparam     ; Inline encoding
742                    / fmttypeparam      ; Format type
743                    / fbtypeparam       ; Free/busy time type
744                    / languageparam     ; Language for text
745                    / memberparam       ; Group or list membership
746                    / partstatparam     ; Participation status
747                    / rangeparam        ; Recurrence identifier range
748                    / trigrelparam      ; Alarm trigger relationship
749                    / reltypeparam      ; Relationship type
750                    / roleparam         ; Participation role
751                    / rsvpparam         ; RSVP expectation
752                    / sentbyparam       ; Sent by
753                    / tzidparam         ; Reference to time zone object
754                    / valuetypeparam    ; Property value data type
755                    / other-param
756
757      other-param   = (iana-param / x-param)
758
759      iana-param  = iana-token "=" param-value *("," param-value)
760      ; Some other IANA-registered iCalendar parameter.
761
762      x-param     = x-name "=" param-value *("," param-value)
763      ; A non-standard, experimental parameter.
764
765    Applications MUST ignore x-param and iana-param values they don't
766    recognize.
767
768 3.2.1.  Alternate Text Representation
769
770    Parameter Name:  ALTREP
771
772    Purpose:  To specify an alternate text representation for the
773       property value.
774
775    Format Definition:  This property parameter is defined by the
776       following notation:
777
778      altrepparam = "ALTREP" "=" DQUOTE uri DQUOTE
779
780    Description:  This parameter specifies a URI that points to an
781       alternate representation for a textual property value.  A property
782       specifying this parameter MUST also include a value that reflects
783
784
785
786 Desruisseaux                Standards Track                    [Page 14]
787 \f
788 RFC 5545                       iCalendar                  September 2009
789
790
791       the default representation of the text value.  The URI parameter
792       value MUST be specified in a quoted-string.
793
794          Note: While there is no restriction imposed on the URI schemes
795          allowed for this parameter, Content Identifier (CID) [RFC2392],
796          HTTP [RFC2616], and HTTPS [RFC2818] are the URI schemes most
797          commonly used by current implementations.
798
799    Example:
800
801        DESCRIPTION;ALTREP="CID:part3.msg.970415T083000@example.com":
802         Project XYZ Review Meeting will include the following agenda
803          items: (a) Market Overview\, (b) Finances\, (c) Project Man
804         agement
805
806       The "ALTREP" property parameter value might point to a "text/html"
807       content portion.
808
809        Content-Type:text/html
810        Content-Id:<part3.msg.970415T083000@example.com>
811
812        <html>
813          <head>
814           <title></title>
815          </head>
816          <body>
817            <p>
818              <b>Project XYZ Review Meeting</b> will include
819              the following agenda items:
820              <ol>
821                <li>Market Overview</li>
822                <li>Finances</li>
823                <li>Project Management</li>
824              </ol>
825            </p>
826          </body>
827        </html>
828
829 3.2.2.  Common Name
830
831    Parameter Name:  CN
832
833    Purpose:  To specify the common name to be associated with the
834       calendar user specified by the property.
835
836    Format Definition:  This property parameter is defined by the
837       following notation:
838
839
840
841
842 Desruisseaux                Standards Track                    [Page 15]
843 \f
844 RFC 5545                       iCalendar                  September 2009
845
846
847      cnparam    = "CN" "=" param-value
848
849    Description:  This parameter can be specified on properties with a
850       CAL-ADDRESS value type.  The parameter specifies the common name
851       to be associated with the calendar user specified by the property.
852       The parameter value is text.  The parameter value can be used for
853       display text to be associated with the calendar address specified
854       by the property.
855
856    Example:
857
858        ORGANIZER;CN="John Smith":mailto:jsmith@example.com
859
860 3.2.3.  Calendar User Type
861
862    Parameter Name:  CUTYPE
863
864    Purpose:  To identify the type of calendar user specified by the
865       property.
866
867    Format Definition:  This property parameter is defined by the
868       following notation:
869
870        cutypeparam        = "CUTYPE" "="
871                           ("INDIVIDUAL"   ; An individual
872                          / "GROUP"        ; A group of individuals
873                          / "RESOURCE"     ; A physical resource
874                          / "ROOM"         ; A room resource
875                          / "UNKNOWN"      ; Otherwise not known
876                          / x-name         ; Experimental type
877                          / iana-token)    ; Other IANA-registered
878                                           ; type
879        ; Default is INDIVIDUAL
880
881    Description:  This parameter can be specified on properties with a
882       CAL-ADDRESS value type.  The parameter identifies the type of
883       calendar user specified by the property.  If not specified on a
884       property that allows this parameter, the default is INDIVIDUAL.
885       Applications MUST treat x-name and iana-token values they don't
886       recognize the same way as they would the UNKNOWN value.
887
888    Example:
889
890        ATTENDEE;CUTYPE=GROUP:mailto:ietf-calsch@example.org
891
892
893
894
895
896
897
898 Desruisseaux                Standards Track                    [Page 16]
899 \f
900 RFC 5545                       iCalendar                  September 2009
901
902
903 3.2.4.  Delegators
904
905    Parameter Name:  DELEGATED-FROM
906
907    Purpose:  To specify the calendar users that have delegated their
908       participation to the calendar user specified by the property.
909
910    Format Definition:  This property parameter is defined by the
911       following notation:
912
913        delfromparam       = "DELEGATED-FROM" "=" DQUOTE cal-address
914                              DQUOTE *("," DQUOTE cal-address DQUOTE)
915
916    Description:  This parameter can be specified on properties with a
917       CAL-ADDRESS value type.  This parameter specifies those calendar
918       users that have delegated their participation in a group-scheduled
919       event or to-do to the calendar user specified by the property.
920       The individual calendar address parameter values MUST each be
921       specified in a quoted-string.
922
923    Example:
924
925        ATTENDEE;DELEGATED-FROM="mailto:jsmith@example.com":mailto:
926         jdoe@example.com
927
928 3.2.5.  Delegatees
929
930    Parameter Name:  DELEGATED-TO
931
932    Purpose:  To specify the calendar users to whom the calendar user
933       specified by the property has delegated participation.
934
935    Format Definition:  This property parameter is defined by the
936       following notation:
937
938        deltoparam = "DELEGATED-TO" "=" DQUOTE cal-address DQUOTE
939                     *("," DQUOTE cal-address DQUOTE)
940
941    Description:  This parameter can be specified on properties with a
942       CAL-ADDRESS value type.  This parameter specifies those calendar
943       users whom have been delegated participation in a group-scheduled
944       event or to-do by the calendar user specified by the property.
945       The individual calendar address parameter values MUST each be
946       specified in a quoted-string.
947
948
949
950
951
952
953
954 Desruisseaux                Standards Track                    [Page 17]
955 \f
956 RFC 5545                       iCalendar                  September 2009
957
958
959    Example:
960
961        ATTENDEE;DELEGATED-TO="mailto:jdoe@example.com","mailto:jqpublic
962         @example.com":mailto:jsmith@example.com
963
964 3.2.6.  Directory Entry Reference
965
966    Parameter Name:  DIR
967
968    Purpose:  To specify reference to a directory entry associated with
969       the calendar user specified by the property.
970
971    Format Definition:  This property parameter is defined by the
972       following notation:
973
974        dirparam   = "DIR" "=" DQUOTE uri DQUOTE
975
976    Description:  This parameter can be specified on properties with a
977       CAL-ADDRESS value type.  The parameter specifies a reference to
978       the directory entry associated with the calendar user specified by
979       the property.  The parameter value is a URI.  The URI parameter
980       value MUST be specified in a quoted-string.
981
982          Note: While there is no restriction imposed on the URI schemes
983          allowed for this parameter, CID [RFC2392], DATA [RFC2397], FILE
984          [RFC1738], FTP [RFC1738], HTTP [RFC2616], HTTPS [RFC2818], LDAP
985          [RFC4516], and MID [RFC2392] are the URI schemes most commonly
986          used by current implementations.
987
988    Example:
989
990        ORGANIZER;DIR="ldap://example.com:6666/o=ABC%20Industries,
991         c=US???(cn=Jim%20Dolittle)":mailto:jimdo@example.com
992
993 3.2.7.  Inline Encoding
994
995    Parameter Name:  ENCODING
996
997    Purpose:  To specify an alternate inline encoding for the property
998       value.
999
1000    Format Definition:  This property parameter is defined by the
1001       following notation:
1002
1003
1004
1005
1006
1007
1008
1009
1010 Desruisseaux                Standards Track                    [Page 18]
1011 \f
1012 RFC 5545                       iCalendar                  September 2009
1013
1014
1015        encodingparam      = "ENCODING" "="
1016                           ( "8BIT"
1017           ; "8bit" text encoding is defined in [RFC2045]
1018                           / "BASE64"
1019           ; "BASE64" binary encoding format is defined in [RFC4648]
1020                           )
1021
1022    Description:  This property parameter identifies the inline encoding
1023       used in a property value.  The default encoding is "8BIT",
1024       corresponding to a property value consisting of text.  The
1025       "BASE64" encoding type corresponds to a property value encoded
1026       using the "BASE64" encoding defined in [RFC2045].
1027
1028       If the value type parameter is ";VALUE=BINARY", then the inline
1029       encoding parameter MUST be specified with the value
1030       ";ENCODING=BASE64".
1031
1032    Example:
1033
1034      ATTACH;FMTTYPE=text/plain;ENCODING=BASE64;VALUE=BINARY:TG9yZW
1035       0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW
1036       5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IG
1037       xhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbm
1038       ltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIG
1039       xhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdW
1040       F0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbi
1041       B2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdC
1042       BudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaW
1043       RhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYS
1044       BkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4=
1045
1046 3.2.8.  Format Type
1047
1048    Parameter Name:  FMTTYPE
1049
1050    Purpose:  To specify the content type of a referenced object.
1051
1052    Format Definition:  This property parameter is defined by the
1053       following notation:
1054
1055        fmttypeparam = "FMTTYPE" "=" type-name "/" subtype-name
1056                       ; Where "type-name" and "subtype-name" are
1057                       ; defined in Section 4.2 of [RFC4288].
1058
1059    Description:  This parameter can be specified on properties that are
1060       used to reference an object.  The parameter specifies the media
1061       type [RFC4288] of the referenced object.  For example, on the
1062       "ATTACH" property, an FTP type URI value does not, by itself,
1063
1064
1065
1066 Desruisseaux                Standards Track                    [Page 19]
1067 \f
1068 RFC 5545                       iCalendar                  September 2009
1069
1070
1071       necessarily convey the type of content associated with the
1072       resource.  The parameter value MUST be the text for either an
1073       IANA-registered media type or a non-standard media type.
1074
1075    Example:
1076
1077        ATTACH;FMTTYPE=application/msword:ftp://example.com/pub/docs/
1078         agenda.doc
1079
1080 3.2.9.  Free/Busy Time Type
1081
1082    Parameter Name:  FBTYPE
1083
1084    Purpose:  To specify the free or busy time type.
1085
1086    Format Definition:  This property parameter is defined by the
1087       following notation:
1088
1089        fbtypeparam        = "FBTYPE" "=" ("FREE" / "BUSY"
1090                           / "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE"
1091                           / x-name
1092                 ; Some experimental iCalendar free/busy type.
1093                           / iana-token)
1094                 ; Some other IANA-registered iCalendar free/busy type.
1095
1096    Description:  This parameter specifies the free or busy time type.
1097       The value FREE indicates that the time interval is free for
1098       scheduling.  The value BUSY indicates that the time interval is
1099       busy because one or more events have been scheduled for that
1100       interval.  The value BUSY-UNAVAILABLE indicates that the time
1101       interval is busy and that the interval can not be scheduled.  The
1102       value BUSY-TENTATIVE indicates that the time interval is busy
1103       because one or more events have been tentatively scheduled for
1104       that interval.  If not specified on a property that allows this
1105       parameter, the default is BUSY.  Applications MUST treat x-name
1106       and iana-token values they don't recognize the same way as they
1107       would the BUSY value.
1108
1109    Example:  The following is an example of this parameter on a
1110       "FREEBUSY" property.
1111
1112        FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122 Desruisseaux                Standards Track                    [Page 20]
1123 \f
1124 RFC 5545                       iCalendar                  September 2009
1125
1126
1127 3.2.10.  Language
1128
1129    Parameter Name:  LANGUAGE
1130
1131    Purpose:  To specify the language for text values in a property or
1132       property parameter.
1133
1134    Format Definition:  This property parameter is defined by the
1135       following notation:
1136
1137        languageparam = "LANGUAGE" "=" language
1138
1139        language = Language-Tag
1140                   ; As defined in [RFC5646].
1141
1142    Description:  This parameter identifies the language of the text in
1143       the property value and of all property parameter values of the
1144       property.  The value of the "LANGUAGE" property parameter is that
1145       defined in [RFC5646].
1146
1147       For transport in a MIME entity, the Content-Language header field
1148       can be used to set the default language for the entire body part.
1149       Otherwise, no default language is assumed.
1150
1151    Example:  The following are examples of this parameter on the
1152       "SUMMARY" and "LOCATION" properties:
1153
1154        SUMMARY;LANGUAGE=en-US:Company Holiday Party
1155
1156        LOCATION;LANGUAGE=en:Germany
1157
1158        LOCATION;LANGUAGE=no:Tyskland
1159
1160 3.2.11.  Group or List Membership
1161
1162    Parameter Name:  MEMBER
1163
1164    Purpose:  To specify the group or list membership of the calendar
1165       user specified by the property.
1166
1167    Format Definition:  This property parameter is defined by the
1168       following notation:
1169
1170        memberparam        = "MEMBER" "=" DQUOTE cal-address DQUOTE
1171                             *("," DQUOTE cal-address DQUOTE)
1172
1173
1174
1175
1176
1177
1178 Desruisseaux                Standards Track                    [Page 21]
1179 \f
1180 RFC 5545                       iCalendar                  September 2009
1181
1182
1183    Description:  This parameter can be specified on properties with a
1184       CAL-ADDRESS value type.  The parameter identifies the groups or
1185       list membership for the calendar user specified by the property.
1186       The parameter value is either a single calendar address in a
1187       quoted-string or a COMMA-separated list of calendar addresses,
1188       each in a quoted-string.  The individual calendar address
1189       parameter values MUST each be specified in a quoted-string.
1190
1191    Example:
1192
1193        ATTENDEE;MEMBER="mailto:ietf-calsch@example.org":mailto:
1194         jsmith@example.com
1195
1196        ATTENDEE;MEMBER="mailto:projectA@example.com","mailto:pr
1197         ojectB@example.com":mailto:janedoe@example.com
1198
1199 3.2.12.  Participation Status
1200
1201    Parameter Name:  PARTSTAT
1202
1203    Purpose:  To specify the participation status for the calendar user
1204       specified by the property.
1205
1206    Format Definition:  This property parameter is defined by the
1207       following notation:
1208
1209        partstatparam    = "PARTSTAT" "="
1210                          (partstat-event
1211                         / partstat-todo
1212                         / partstat-jour)
1213
1214        partstat-event   = ("NEEDS-ACTION"    ; Event needs action
1215                         / "ACCEPTED"         ; Event accepted
1216                         / "DECLINED"         ; Event declined
1217                         / "TENTATIVE"        ; Event tentatively
1218                                              ; accepted
1219                         / "DELEGATED"        ; Event delegated
1220                         / x-name             ; Experimental status
1221                         / iana-token)        ; Other IANA-registered
1222                                              ; status
1223        ; These are the participation statuses for a "VEVENT".
1224        ; Default is NEEDS-ACTION.
1225
1226        partstat-todo    = ("NEEDS-ACTION"    ; To-do needs action
1227                         / "ACCEPTED"         ; To-do accepted
1228                         / "DECLINED"         ; To-do declined
1229                         / "TENTATIVE"        ; To-do tentatively
1230                                              ; accepted
1231
1232
1233
1234 Desruisseaux                Standards Track                    [Page 22]
1235 \f
1236 RFC 5545                       iCalendar                  September 2009
1237
1238
1239                         / "DELEGATED"        ; To-do delegated
1240                         / "COMPLETED"        ; To-do completed
1241                                              ; COMPLETED property has
1242                                              ; DATE-TIME completed
1243                         / "IN-PROCESS"       ; To-do in process of
1244                                              ; being completed
1245                         / x-name             ; Experimental status
1246                         / iana-token)        ; Other IANA-registered
1247                                              ; status
1248        ; These are the participation statuses for a "VTODO".
1249        ; Default is NEEDS-ACTION.
1250
1251
1252
1253        partstat-jour    = ("NEEDS-ACTION"    ; Journal needs action
1254                         / "ACCEPTED"         ; Journal accepted
1255                         / "DECLINED"         ; Journal declined
1256                         / x-name             ; Experimental status
1257                         / iana-token)        ; Other IANA-registered
1258                                              ; status
1259        ; These are the participation statuses for a "VJOURNAL".
1260        ; Default is NEEDS-ACTION.
1261
1262    Description:  This parameter can be specified on properties with a
1263       CAL-ADDRESS value type.  The parameter identifies the
1264       participation status for the calendar user specified by the
1265       property value.  The parameter values differ depending on whether
1266       they are associated with a group-scheduled "VEVENT", "VTODO", or
1267       "VJOURNAL".  The values MUST match one of the values allowed for
1268       the given calendar component.  If not specified on a property that
1269       allows this parameter, the default value is NEEDS-ACTION.
1270       Applications MUST treat x-name and iana-token values they don't
1271       recognize the same way as they would the NEEDS-ACTION value.
1272
1273    Example:
1274
1275        ATTENDEE;PARTSTAT=DECLINED:mailto:jsmith@example.com
1276
1277 3.2.13.  Recurrence Identifier Range
1278
1279    Parameter Name:  RANGE
1280
1281    Purpose:  To specify the effective range of recurrence instances from
1282       the instance specified by the recurrence identifier specified by
1283       the property.
1284
1285    Format Definition:  This property parameter is defined by the
1286       following notation:
1287
1288
1289
1290 Desruisseaux                Standards Track                    [Page 23]
1291 \f
1292 RFC 5545                       iCalendar                  September 2009
1293
1294
1295        rangeparam = "RANGE" "=" "THISANDFUTURE"
1296        ; To specify the instance specified by the recurrence identifier
1297        ; and all subsequent recurrence instances.
1298
1299    Description:  This parameter can be specified on a property that
1300       specifies a recurrence identifier.  The parameter specifies the
1301       effective range of recurrence instances that is specified by the
1302       property.  The effective range is from the recurrence identifier
1303       specified by the property.  If this parameter is not specified on
1304       an allowed property, then the default range is the single instance
1305       specified by the recurrence identifier value of the property.  The
1306       parameter value can only be "THISANDFUTURE" to indicate a range
1307       defined by the recurrence identifier and all subsequent instances.
1308       The value "THISANDPRIOR" is deprecated by this revision of
1309       iCalendar and MUST NOT be generated by applications.
1310
1311    Example:
1312
1313        RECURRENCE-ID;RANGE=THISANDFUTURE:19980401T133000Z
1314
1315 3.2.14.  Alarm Trigger Relationship
1316
1317    Parameter Name:  RELATED
1318
1319    Purpose:  To specify the relationship of the alarm trigger with
1320       respect to the start or end of the calendar component.
1321
1322    Format Definition:  This property parameter is defined by the
1323       following notation:
1324
1325        trigrelparam       = "RELATED" "="
1326                            ("START"       ; Trigger off of start
1327                           / "END")        ; Trigger off of end
1328
1329    Description:  This parameter can be specified on properties that
1330       specify an alarm trigger with a "DURATION" value type.  The
1331       parameter specifies whether the alarm will trigger relative to the
1332       start or end of the calendar component.  The parameter value START
1333       will set the alarm to trigger off the start of the calendar
1334       component; the parameter value END will set the alarm to trigger
1335       off the end of the calendar component.  If the parameter is not
1336       specified on an allowable property, then the default is START.
1337
1338    Example:
1339
1340        TRIGGER;RELATED=END:PT5M
1341
1342
1343
1344
1345
1346 Desruisseaux                Standards Track                    [Page 24]
1347 \f
1348 RFC 5545                       iCalendar                  September 2009
1349
1350
1351 3.2.15.  Relationship Type
1352
1353    Parameter Name:  RELTYPE
1354
1355    Purpose:  To specify the type of hierarchical relationship associated
1356       with the calendar component specified by the property.
1357
1358    Format Definition:  This property parameter is defined by the
1359       following notation:
1360
1361        reltypeparam       = "RELTYPE" "="
1362                            ("PARENT"    ; Parent relationship - Default
1363                           / "CHILD"     ; Child relationship
1364                           / "SIBLING"   ; Sibling relationship
1365                           / iana-token  ; Some other IANA-registered
1366                                         ; iCalendar relationship type
1367                           / x-name)     ; A non-standard, experimental
1368                                         ; relationship type
1369
1370    Description:  This parameter can be specified on a property that
1371       references another related calendar.  The parameter specifies the
1372       hierarchical relationship type of the calendar component
1373       referenced by the property.  The parameter value can be PARENT, to
1374       indicate that the referenced calendar component is a superior of
1375       calendar component; CHILD to indicate that the referenced calendar
1376       component is a subordinate of the calendar component; or SIBLING
1377       to indicate that the referenced calendar component is a peer of
1378       the calendar component.  If this parameter is not specified on an
1379       allowable property, the default relationship type is PARENT.
1380       Applications MUST treat x-name and iana-token values they don't
1381       recognize the same way as they would the PARENT value.
1382
1383    Example:
1384
1385        RELATED-TO;RELTYPE=SIBLING:19960401-080045-4000F192713@
1386         example.com
1387
1388 3.2.16.  Participation Role
1389
1390    Parameter Name:  ROLE
1391
1392    Purpose:  To specify the participation role for the calendar user
1393       specified by the property.
1394
1395    Format Definition:  This property parameter is defined by the
1396       following notation:
1397
1398
1399
1400
1401
1402 Desruisseaux                Standards Track                    [Page 25]
1403 \f
1404 RFC 5545                       iCalendar                  September 2009
1405
1406
1407        roleparam  = "ROLE" "="
1408                    ("CHAIR"             ; Indicates chair of the
1409                                         ; calendar entity
1410                   / "REQ-PARTICIPANT"   ; Indicates a participant whose
1411                                         ; participation is required
1412                   / "OPT-PARTICIPANT"   ; Indicates a participant whose
1413                                         ; participation is optional
1414                   / "NON-PARTICIPANT"   ; Indicates a participant who
1415                                         ; is copied for information
1416                                         ; purposes only
1417                   / x-name              ; Experimental role
1418                   / iana-token)         ; Other IANA role
1419        ; Default is REQ-PARTICIPANT
1420
1421    Description:  This parameter can be specified on properties with a
1422       CAL-ADDRESS value type.  The parameter specifies the participation
1423       role for the calendar user specified by the property in the group
1424       schedule calendar component.  If not specified on a property that
1425       allows this parameter, the default value is REQ-PARTICIPANT.
1426       Applications MUST treat x-name and iana-token values they don't
1427       recognize the same way as they would the REQ-PARTICIPANT value.
1428
1429    Example:
1430
1431        ATTENDEE;ROLE=CHAIR:mailto:mrbig@example.com
1432
1433 3.2.17.  RSVP Expectation
1434
1435    Parameter Name:  RSVP
1436
1437    Purpose:  To specify whether there is an expectation of a favor of a
1438       reply from the calendar user specified by the property value.
1439
1440    Format Definition:  This property parameter is defined by the
1441       following notation:
1442
1443        rsvpparam = "RSVP" "=" ("TRUE" / "FALSE")
1444        ; Default is FALSE
1445
1446    Description:  This parameter can be specified on properties with a
1447       CAL-ADDRESS value type.  The parameter identifies the expectation
1448       of a reply from the calendar user specified by the property value.
1449       This parameter is used by the "Organizer" to request a
1450       participation status reply from an "Attendee" of a group-scheduled
1451       event or to-do.  If not specified on a property that allows this
1452       parameter, the default value is FALSE.
1453
1454
1455
1456
1457
1458 Desruisseaux                Standards Track                    [Page 26]
1459 \f
1460 RFC 5545                       iCalendar                  September 2009
1461
1462
1463    Example:
1464
1465        ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com
1466
1467 3.2.18.  Sent By
1468
1469    Parameter Name:  SENT-BY
1470
1471    Purpose:  To specify the calendar user that is acting on behalf of
1472       the calendar user specified by the property.
1473
1474    Format Definition:  This property parameter is defined by the
1475       following notation:
1476
1477        sentbyparam        = "SENT-BY" "=" DQUOTE cal-address DQUOTE
1478
1479    Description:  This parameter can be specified on properties with a
1480       CAL-ADDRESS value type.  The parameter specifies the calendar user
1481       that is acting on behalf of the calendar user specified by the
1482       property.  The parameter value MUST be a mailto URI as defined in
1483       [RFC2368].  The individual calendar address parameter values MUST
1484       each be specified in a quoted-string.
1485
1486    Example:
1487
1488        ORGANIZER;SENT-BY="mailto:sray@example.com":mailto:
1489         jsmith@example.com
1490
1491 3.2.19.  Time Zone Identifier
1492
1493    Parameter Name:  TZID
1494
1495    Purpose:  To specify the identifier for the time zone definition for
1496       a time component in the property value.
1497
1498    Format Definition:  This property parameter is defined by the
1499       following notation:
1500
1501        tzidparam  = "TZID" "=" [tzidprefix] paramtext
1502
1503        tzidprefix = "/"
1504
1505    Description:  This parameter MUST be specified on the "DTSTART",
1506       "DTEND", "DUE", "EXDATE", and "RDATE" properties when either a
1507       DATE-TIME or TIME value type is specified and when the value is
1508       neither a UTC or a "floating" time.  Refer to the DATE-TIME or
1509       TIME value type definition for a description of UTC and "floating
1510       time" formats.  This property parameter specifies a text value
1511
1512
1513
1514 Desruisseaux                Standards Track                    [Page 27]
1515 \f
1516 RFC 5545                       iCalendar                  September 2009
1517
1518
1519       that uniquely identifies the "VTIMEZONE" calendar component to be
1520       used when evaluating the time portion of the property.  The value
1521       of the "TZID" property parameter will be equal to the value of the
1522       "TZID" property for the matching time zone definition.  An
1523       individual "VTIMEZONE" calendar component MUST be specified for
1524       each unique "TZID" parameter value specified in the iCalendar
1525       object.
1526
1527       The parameter MUST be specified on properties with a DATE-TIME
1528       value if the DATE-TIME is not either a UTC or a "floating" time.
1529       Failure to include and follow VTIMEZONE definitions in iCalendar
1530       objects may lead to inconsistent understanding of the local time
1531       at any given location.
1532
1533       The presence of the SOLIDUS character as a prefix, indicates that
1534       this "TZID" represents a unique ID in a globally defined time zone
1535       registry (when such registry is defined).
1536
1537          Note: This document does not define a naming convention for
1538          time zone identifiers.  Implementers may want to use the naming
1539          conventions defined in existing time zone specifications such
1540          as the public-domain TZ database [TZDB].  The specification of
1541          globally unique time zone identifiers is not addressed by this
1542          document and is left for future study.
1543
1544       The following are examples of this property parameter:
1545
1546        DTSTART;TZID=America/New_York:19980119T020000
1547
1548        DTEND;TZID=America/New_York:19980119T030000
1549
1550       The "TZID" property parameter MUST NOT be applied to DATE
1551       properties and DATE-TIME or TIME properties whose time values are
1552       specified in UTC.
1553
1554       The use of local time in a DATE-TIME or TIME value without the
1555       "TZID" property parameter is to be interpreted as floating time,
1556       regardless of the existence of "VTIMEZONE" calendar components in
1557       the iCalendar object.
1558
1559       For more information, see the sections on the value types DATE-
1560       TIME and TIME.
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570 Desruisseaux                Standards Track                    [Page 28]
1571 \f
1572 RFC 5545                       iCalendar                  September 2009
1573
1574
1575 3.2.20.  Value Data Types
1576
1577    Parameter Name:  VALUE
1578
1579    Purpose:  To explicitly specify the value type format for a property
1580       value.
1581
1582    Format Definition:  This property parameter is defined by the
1583       following notation:
1584
1585        valuetypeparam = "VALUE" "=" valuetype
1586
1587        valuetype  = ("BINARY"
1588                   / "BOOLEAN"
1589                   / "CAL-ADDRESS"
1590                   / "DATE"
1591                   / "DATE-TIME"
1592                   / "DURATION"
1593                   / "FLOAT"
1594                   / "INTEGER"
1595                   / "PERIOD"
1596                   / "RECUR"
1597                   / "TEXT"
1598                   / "TIME"
1599                   / "URI"
1600                   / "UTC-OFFSET"
1601                   / x-name
1602                   ; Some experimental iCalendar value type.
1603                   / iana-token)
1604                   ; Some other IANA-registered iCalendar value type.
1605
1606    Description:  This parameter specifies the value type and format of
1607       the property value.  The property values MUST be of a single value
1608       type.  For example, a "RDATE" property cannot have a combination
1609       of DATE-TIME and TIME value types.
1610
1611       If the property's value is the default value type, then this
1612       parameter need not be specified.  However, if the property's
1613       default value type is overridden by some other allowable value
1614       type, then this parameter MUST be specified.
1615
1616       Applications MUST preserve the value data for x-name and iana-
1617       token values that they don't recognize without attempting to
1618       interpret or parse the value data.
1619
1620
1621
1622
1623
1624
1625
1626 Desruisseaux                Standards Track                    [Page 29]
1627 \f
1628 RFC 5545                       iCalendar                  September 2009
1629
1630
1631 3.3.  Property Value Data Types
1632
1633    The properties in an iCalendar object are strongly typed.  The
1634    definition of each property restricts the value to be one of the
1635    value data types, or simply value types, defined in this section.
1636    The value type for a property will either be specified implicitly as
1637    the default value type or will be explicitly specified with the
1638    "VALUE" parameter.  If the value type of a property is one of the
1639    alternate valid types, then it MUST be explicitly specified with the
1640    "VALUE" parameter.
1641
1642 3.3.1.  Binary
1643
1644    Value Name:  BINARY
1645
1646    Purpose:  This value type is used to identify properties that contain
1647       a character encoding of inline binary data.  For example, an
1648       inline attachment of a document might be included in an iCalendar
1649       object.
1650
1651    Format Definition:  This value type is defined by the following
1652       notation:
1653
1654        binary     = *(4b-char) [b-end]
1655        ; A "BASE64" encoded character string, as defined by [RFC4648].
1656
1657        b-end      = (2b-char "==") / (3b-char "=")
1658
1659        b-char = ALPHA / DIGIT / "+" / "/"
1660
1661    Description:  Property values with this value type MUST also include
1662       the inline encoding parameter sequence of ";ENCODING=BASE64".
1663       That is, all inline binary data MUST first be character encoded
1664       using the "BASE64" encoding method defined in [RFC2045].  No
1665       additional content value encoding (i.e., BACKSLASH character
1666       encoding, see Section 3.3.11) is defined for this value type.
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682 Desruisseaux                Standards Track                    [Page 30]
1683 \f
1684 RFC 5545                       iCalendar                  September 2009
1685
1686
1687    Example:  The following is an example of a "BASE64" encoded binary
1688       value data:
1689
1690      ATTACH;FMTTYPE=image/vnd.microsoft.icon;ENCODING=BASE64;VALUE
1691       =BINARY:AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAA
1692       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgIAAAICAgADAwMAA////AAAA
1693       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1694       AAAAAAAAAAAAAAAAAAAAAAMwAAAAAAABNEMQAAAAAAAkQgAAAAAAJEREQgAA
1695       ACECQ0QgEgAAQxQzM0E0AABERCRCREQAADRDJEJEQwAAAhA0QwEQAAAAAERE
1696       AAAAAAAAREQAAAAAAAAkQgAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1697       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1698       AAAAAAAAAAAA
1699
1700 3.3.2.  Boolean
1701
1702    Value Name:  BOOLEAN
1703
1704    Purpose:  This value type is used to identify properties that contain
1705       either a "TRUE" or "FALSE" Boolean value.
1706
1707    Format Definition:  This value type is defined by the following
1708       notation:
1709
1710        boolean    = "TRUE" / "FALSE"
1711
1712    Description:  These values are case-insensitive text.  No additional
1713       content value encoding (i.e., BACKSLASH character encoding, see
1714       Section 3.3.11) is defined for this value type.
1715
1716    Example:  The following is an example of a hypothetical property that
1717       has a BOOLEAN value type:
1718
1719        TRUE
1720
1721 3.3.3.  Calendar User Address
1722
1723    Value Name:  CAL-ADDRESS
1724
1725    Purpose:  This value type is used to identify properties that contain
1726       a calendar user address.
1727
1728    Format Definition:  This value type is defined by the following
1729       notation:
1730
1731        cal-address        = uri
1732
1733    Description:  The value is a URI as defined by [RFC3986] or any other
1734       IANA-registered form for a URI.  When used to address an Internet
1735
1736
1737
1738 Desruisseaux                Standards Track                    [Page 31]
1739 \f
1740 RFC 5545                       iCalendar                  September 2009
1741
1742
1743       email transport address for a calendar user, the value MUST be a
1744       mailto URI, as defined by [RFC2368].  No additional content value
1745       encoding (i.e., BACKSLASH character encoding, see Section 3.3.11)
1746       is defined for this value type.
1747
1748    Example:
1749
1750     mailto:jane_doe@example.com
1751
1752 3.3.4.  Date
1753
1754    Value Name:  DATE
1755
1756    Purpose:  This value type is used to identify values that contain a
1757       calendar date.
1758
1759    Format Definition:  This value type is defined by the following
1760       notation:
1761
1762        date               = date-value
1763
1764        date-value         = date-fullyear date-month date-mday
1765        date-fullyear      = 4DIGIT
1766        date-month         = 2DIGIT        ;01-12
1767        date-mday          = 2DIGIT        ;01-28, 01-29, 01-30, 01-31
1768                                           ;based on month/year
1769
1770    Description:  If the property permits, multiple "date" values are
1771       specified as a COMMA-separated list of values.  The format for the
1772       value type is based on the [ISO.8601.2004] complete
1773       representation, basic format for a calendar date.  The textual
1774       format specifies a four-digit year, two-digit month, and two-digit
1775       day of the month.  There are no separator characters between the
1776       year, month, and day component text.
1777
1778       No additional content value encoding (i.e., BACKSLASH character
1779       encoding, see Section 3.3.11) is defined for this value type.
1780
1781    Example:  The following represents July 14, 1997:
1782
1783        19970714
1784
1785 3.3.5.  Date-Time
1786
1787    Value Name:  DATE-TIME
1788
1789    Purpose:  This value type is used to identify values that specify a
1790       precise calendar date and time of day.
1791
1792
1793
1794 Desruisseaux                Standards Track                    [Page 32]
1795 \f
1796 RFC 5545                       iCalendar                  September 2009
1797
1798
1799    Format Definition:  This value type is defined by the following
1800       notation:
1801
1802        date-time  = date "T" time ;As specified in the DATE and TIME
1803                                   ;value definitions
1804
1805    Description:  If the property permits, multiple "DATE-TIME" values
1806       are specified as a COMMA-separated list of values.  No additional
1807       content value encoding (i.e., BACKSLASH character encoding, see
1808       Section 3.3.11) is defined for this value type.
1809
1810       The "DATE-TIME" value type is used to identify values that contain
1811       a precise calendar date and time of day.  The format is based on
1812       the [ISO.8601.2004] complete representation, basic format for a
1813       calendar date and time of day.  The text format is a concatenation
1814       of the "date", followed by the LATIN CAPITAL LETTER T character,
1815       the time designator, followed by the "time" format.
1816
1817       The "DATE-TIME" value type expresses time values in three forms:
1818
1819       The form of date and time with UTC offset MUST NOT be used.  For
1820       example, the following is not valid for a DATE-TIME value:
1821
1822        19980119T230000-0800       ;Invalid time format
1823
1824       FORM #1: DATE WITH LOCAL TIME
1825
1826       The date with local time form is simply a DATE-TIME value that
1827       does not contain the UTC designator nor does it reference a time
1828       zone.  For example, the following represents January 18, 1998, at
1829       11 PM:
1830
1831        19980118T230000
1832
1833       DATE-TIME values of this type are said to be "floating" and are
1834       not bound to any time zone in particular.  They are used to
1835       represent the same hour, minute, and second value regardless of
1836       which time zone is currently being observed.  For example, an
1837       event can be defined that indicates that an individual will be
1838       busy from 11:00 AM to 1:00 PM every day, no matter which time zone
1839       the person is in.  In these cases, a local time can be specified.
1840       The recipient of an iCalendar object with a property value
1841       consisting of a local time, without any relative time zone
1842       information, SHOULD interpret the value as being fixed to whatever
1843       time zone the "ATTENDEE" is in at any given moment.  This means
1844       that two "Attendees", in different time zones, receiving the same
1845       event definition as a floating time, may be participating in the
1846
1847
1848
1849
1850 Desruisseaux                Standards Track                    [Page 33]
1851 \f
1852 RFC 5545                       iCalendar                  September 2009
1853
1854
1855       event at different actual times.  Floating time SHOULD only be
1856       used where that is the reasonable behavior.
1857
1858       In most cases, a fixed time is desired.  To properly communicate a
1859       fixed time in a property value, either UTC time or local time with
1860       time zone reference MUST be specified.
1861
1862       The use of local time in a DATE-TIME value without the "TZID"
1863       property parameter is to be interpreted as floating time,
1864       regardless of the existence of "VTIMEZONE" calendar components in
1865       the iCalendar object.
1866
1867       FORM #2: DATE WITH UTC TIME
1868
1869       The date with UTC time, or absolute time, is identified by a LATIN
1870       CAPITAL LETTER Z suffix character, the UTC designator, appended to
1871       the time value.  For example, the following represents January 19,
1872       1998, at 0700 UTC:
1873
1874        19980119T070000Z
1875
1876       The "TZID" property parameter MUST NOT be applied to DATE-TIME
1877       properties whose time values are specified in UTC.
1878
1879       FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE
1880
1881       The date and local time with reference to time zone information is
1882       identified by the use the "TZID" property parameter to reference
1883       the appropriate time zone definition.  "TZID" is discussed in
1884       detail in Section 3.2.19.  For example, the following represents
1885       2:00 A.M. in New York on January 19, 1998:
1886
1887        TZID=America/New_York:19980119T020000
1888
1889       If, based on the definition of the referenced time zone, the local
1890       time described occurs more than once (when changing from daylight
1891       to standard time), the DATE-TIME value refers to the first
1892       occurrence of the referenced time.  Thus, TZID=America/
1893       New_York:20071104T013000 indicates November 4, 2007 at 1:30 A.M.
1894       EDT (UTC-04:00).  If the local time described does not occur (when
1895       changing from standard to daylight time), the DATE-TIME value is
1896       interpreted using the UTC offset before the gap in local times.
1897       Thus, TZID=America/New_York:20070311T023000 indicates March 11,
1898       2007 at 3:30 A.M. EDT (UTC-04:00), one hour after 1:30 A.M. EST
1899       (UTC-05:00).
1900
1901
1902
1903
1904
1905
1906 Desruisseaux                Standards Track                    [Page 34]
1907 \f
1908 RFC 5545                       iCalendar                  September 2009
1909
1910
1911       A time value MUST only specify the second 60 when specifying a
1912       positive leap second.  For example:
1913
1914        19970630T235960Z
1915
1916       Implementations that do not support leap seconds SHOULD interpret
1917       the second 60 as equivalent to the second 59.
1918
1919    Example:  The following represents July 14, 1997, at 1:30 PM in New
1920       York City in each of the three time formats, using the "DTSTART"
1921       property.
1922
1923        DTSTART:19970714T133000                   ; Local time
1924        DTSTART:19970714T173000Z                  ; UTC time
1925        DTSTART;TZID=America/New_York:19970714T133000
1926                                                  ; Local time and time
1927                                                  ; zone reference
1928
1929 3.3.6.  Duration
1930
1931    Value Name:  DURATION
1932
1933    Purpose:  This value type is used to identify properties that contain
1934       a duration of time.
1935
1936    Format Definition:  This value type is defined by the following
1937       notation:
1938
1939        dur-value  = (["+"] / "-") "P" (dur-date / dur-time / dur-week)
1940
1941        dur-date   = dur-day [dur-time]
1942        dur-time   = "T" (dur-hour / dur-minute / dur-second)
1943        dur-week   = 1*DIGIT "W"
1944        dur-hour   = 1*DIGIT "H" [dur-minute]
1945        dur-minute = 1*DIGIT "M" [dur-second]
1946        dur-second = 1*DIGIT "S"
1947        dur-day    = 1*DIGIT "D"
1948
1949    Description:  If the property permits, multiple "duration" values are
1950       specified by a COMMA-separated list of values.  The format is
1951       based on the [ISO.8601.2004] complete representation basic format
1952       with designators for the duration of time.  The format can
1953       represent nominal durations (weeks and days) and accurate
1954       durations (hours, minutes, and seconds).  Note that unlike
1955       [ISO.8601.2004], this value type doesn't support the "Y" and "M"
1956       designators to specify durations in terms of years and months.
1957
1958
1959
1960
1961
1962 Desruisseaux                Standards Track                    [Page 35]
1963 \f
1964 RFC 5545                       iCalendar                  September 2009
1965
1966
1967       The duration of a week or a day depends on its position in the
1968       calendar.  In the case of discontinuities in the time scale, such
1969       as the change from standard time to daylight time and back, the
1970       computation of the exact duration requires the subtraction or
1971       addition of the change of duration of the discontinuity.  Leap
1972       seconds MUST NOT be considered when computing an exact duration.
1973       When computing an exact duration, the greatest order time
1974       components MUST be added first, that is, the number of days MUST
1975       be added first, followed by the number of hours, number of
1976       minutes, and number of seconds.
1977
1978       Negative durations are typically used to schedule an alarm to
1979       trigger before an associated time (see Section 3.8.6.3).
1980
1981       No additional content value encoding (i.e., BACKSLASH character
1982       encoding, see Section 3.3.11) are defined for this value type.
1983
1984    Example:  A duration of 15 days, 5 hours, and 20 seconds would be:
1985
1986        P15DT5H0M20S
1987
1988       A duration of 7 weeks would be:
1989
1990        P7W
1991
1992 3.3.7.  Float
1993
1994    Value Name:  FLOAT
1995
1996    Purpose:  This value type is used to identify properties that contain
1997       a real-number value.
1998
1999    Format Definition:  This value type is defined by the following
2000       notation:
2001
2002        float      = (["+"] / "-") 1*DIGIT ["." 1*DIGIT]
2003
2004    Description:  If the property permits, multiple "float" values are
2005       specified by a COMMA-separated list of values.
2006
2007       No additional content value encoding (i.e., BACKSLASH character
2008       encoding, see Section 3.3.11) is defined for this value type.
2009
2010    Example:
2011
2012        1000000.0000001
2013        1.333
2014        -3.14
2015
2016
2017
2018 Desruisseaux                Standards Track                    [Page 36]
2019 \f
2020 RFC 5545                       iCalendar                  September 2009
2021
2022
2023 3.3.8.  Integer
2024
2025    Value Name:  INTEGER
2026
2027    Purpose:  This value type is used to identify properties that contain
2028       a signed integer value.
2029
2030    Format Definition:  This value type is defined by the following
2031       notation:
2032
2033        integer    = (["+"] / "-") 1*DIGIT
2034
2035    Description:  If the property permits, multiple "integer" values are
2036       specified by a COMMA-separated list of values.  The valid range
2037       for "integer" is -2147483648 to 2147483647.  If the sign is not
2038       specified, then the value is assumed to be positive.
2039
2040       No additional content value encoding (i.e., BACKSLASH character
2041       encoding, see Section 3.3.11) is defined for this value type.
2042
2043    Example:
2044
2045        1234567890
2046        -1234567890
2047        +1234567890
2048        432109876
2049
2050 3.3.9.  Period of Time
2051
2052    Value Name:  PERIOD
2053
2054    Purpose:  This value type is used to identify values that contain a
2055       precise period of time.
2056
2057    Format Definition:  This value type is defined by the following
2058       notation:
2059
2060        period     = period-explicit / period-start
2061
2062        period-explicit = date-time "/" date-time
2063        ; [ISO.8601.2004] complete representation basic format for a
2064        ; period of time consisting of a start and end.  The start MUST
2065        ; be before the end.
2066
2067        period-start = date-time "/" dur-value
2068        ; [ISO.8601.2004] complete representation basic format for a
2069        ; period of time consisting of a start and positive duration
2070        ; of time.
2071
2072
2073
2074 Desruisseaux                Standards Track                    [Page 37]
2075 \f
2076 RFC 5545                       iCalendar                  September 2009
2077
2078
2079    Description:  If the property permits, multiple "period" values are
2080       specified by a COMMA-separated list of values.  There are two
2081       forms of a period of time.  First, a period of time is identified
2082       by its start and its end.  This format is based on the
2083       [ISO.8601.2004] complete representation, basic format for "DATE-
2084       TIME" start of the period, followed by a SOLIDUS character
2085       followed by the "DATE-TIME" of the end of the period.  The start
2086       of the period MUST be before the end of the period.  Second, a
2087       period of time can also be defined by a start and a positive
2088       duration of time.  The format is based on the [ISO.8601.2004]
2089       complete representation, basic format for the "DATE-TIME" start of
2090       the period, followed by a SOLIDUS character, followed by the
2091       [ISO.8601.2004] basic format for "DURATION" of the period.
2092
2093    Example:  The period starting at 18:00:00 UTC, on January 1, 1997 and
2094       ending at 07:00:00 UTC on January 2, 1997 would be:
2095
2096        19970101T180000Z/19970102T070000Z
2097
2098       The period start at 18:00:00 on January 1, 1997 and lasting 5
2099       hours and 30 minutes would be:
2100
2101        19970101T180000Z/PT5H30M
2102
2103       No additional content value encoding (i.e., BACKSLASH character
2104       encoding, see Section 3.3.11) is defined for this value type.
2105
2106 3.3.10.  Recurrence Rule
2107
2108    Value Name:  RECUR
2109
2110    Purpose:  This value type is used to identify properties that contain
2111       a recurrence rule specification.
2112
2113    Format Definition:  This value type is defined by the following
2114       notation:
2115
2116        recur           = recur-rule-part *( ";" recur-rule-part )
2117                        ;
2118                        ; The rule parts are not ordered in any
2119                        ; particular sequence.
2120                        ;
2121                        ; The FREQ rule part is REQUIRED,
2122                        ; but MUST NOT occur more than once.
2123                        ;
2124                        ; The UNTIL or COUNT rule parts are OPTIONAL,
2125                        ; but they MUST NOT occur in the same 'recur'.
2126                        ;
2127
2128
2129
2130 Desruisseaux                Standards Track                    [Page 38]
2131 \f
2132 RFC 5545                       iCalendar                  September 2009
2133
2134
2135                        ; The other rule parts are OPTIONAL,
2136                        ; but MUST NOT occur more than once.
2137
2138        recur-rule-part = ( "FREQ" "=" freq )
2139                        / ( "UNTIL" "=" enddate )
2140                        / ( "COUNT" "=" 1*DIGIT )
2141                        / ( "INTERVAL" "=" 1*DIGIT )
2142                        / ( "BYSECOND" "=" byseclist )
2143                        / ( "BYMINUTE" "=" byminlist )
2144                        / ( "BYHOUR" "=" byhrlist )
2145                        / ( "BYDAY" "=" bywdaylist )
2146                        / ( "BYMONTHDAY" "=" bymodaylist )
2147                        / ( "BYYEARDAY" "=" byyrdaylist )
2148                        / ( "BYWEEKNO" "=" bywknolist )
2149                        / ( "BYMONTH" "=" bymolist )
2150                        / ( "BYSETPOS" "=" bysplist )
2151                        / ( "WKST" "=" weekday )
2152
2153        freq        = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY"
2154                    / "WEEKLY" / "MONTHLY" / "YEARLY"
2155
2156        enddate     = date / date-time
2157
2158        byseclist   = ( seconds *("," seconds) )
2159
2160        seconds     = 1*2DIGIT       ;0 to 60
2161
2162        byminlist   = ( minutes *("," minutes) )
2163
2164        minutes     = 1*2DIGIT       ;0 to 59
2165
2166        byhrlist    = ( hour *("," hour) )
2167
2168        hour        = 1*2DIGIT       ;0 to 23
2169
2170        bywdaylist  = ( weekdaynum *("," weekdaynum) )
2171
2172        weekdaynum  = [[plus / minus] ordwk] weekday
2173
2174        plus        = "+"
2175
2176        minus       = "-"
2177
2178        ordwk       = 1*2DIGIT       ;1 to 53
2179
2180        weekday     = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA"
2181        ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
2182        ;FRIDAY, and SATURDAY days of the week.
2183
2184
2185
2186 Desruisseaux                Standards Track                    [Page 39]
2187 \f
2188 RFC 5545                       iCalendar                  September 2009
2189
2190
2191        bymodaylist = ( monthdaynum *("," monthdaynum) )
2192
2193        monthdaynum = [plus / minus] ordmoday
2194
2195        ordmoday    = 1*2DIGIT       ;1 to 31
2196
2197        byyrdaylist = ( yeardaynum *("," yeardaynum) )
2198
2199        yeardaynum  = [plus / minus] ordyrday
2200
2201        ordyrday    = 1*3DIGIT      ;1 to 366
2202
2203        bywknolist  = ( weeknum *("," weeknum) )
2204
2205        weeknum     = [plus / minus] ordwk
2206
2207        bymolist    = ( monthnum *("," monthnum) )
2208
2209        monthnum    = 1*2DIGIT       ;1 to 12
2210
2211        bysplist    = ( setposday *("," setposday) )
2212
2213        setposday   = yeardaynum
2214
2215    Description:  This value type is a structured value consisting of a
2216       list of one or more recurrence grammar parts.  Each rule part is
2217       defined by a NAME=VALUE pair.  The rule parts are separated from
2218       each other by the SEMICOLON character.  The rule parts are not
2219       ordered in any particular sequence.  Individual rule parts MUST
2220       only be specified once.  Compliant applications MUST accept rule
2221       parts ordered in any sequence, but to ensure backward
2222       compatibility with applications that pre-date this revision of
2223       iCalendar the FREQ rule part MUST be the first rule part specified
2224       in a RECUR value.
2225
2226       The FREQ rule part identifies the type of recurrence rule.  This
2227       rule part MUST be specified in the recurrence rule.  Valid values
2228       include SECONDLY, to specify repeating events based on an interval
2229       of a second or more; MINUTELY, to specify repeating events based
2230       on an interval of a minute or more; HOURLY, to specify repeating
2231       events based on an interval of an hour or more; DAILY, to specify
2232       repeating events based on an interval of a day or more; WEEKLY, to
2233       specify repeating events based on an interval of a week or more;
2234       MONTHLY, to specify repeating events based on an interval of a
2235       month or more; and YEARLY, to specify repeating events based on an
2236       interval of a year or more.
2237
2238
2239
2240
2241
2242 Desruisseaux                Standards Track                    [Page 40]
2243 \f
2244 RFC 5545                       iCalendar                  September 2009
2245
2246
2247       The INTERVAL rule part contains a positive integer representing at
2248       which intervals the recurrence rule repeats.  The default value is
2249       "1", meaning every second for a SECONDLY rule, every minute for a
2250       MINUTELY rule, every hour for an HOURLY rule, every day for a
2251       DAILY rule, every week for a WEEKLY rule, every month for a
2252       MONTHLY rule, and every year for a YEARLY rule.  For example,
2253       within a DAILY rule, a value of "8" means every eight days.
2254
2255       The UNTIL rule part defines a DATE or DATE-TIME value that bounds
2256       the recurrence rule in an inclusive manner.  If the value
2257       specified by UNTIL is synchronized with the specified recurrence,
2258       this DATE or DATE-TIME becomes the last instance of the
2259       recurrence.  The value of the UNTIL rule part MUST have the same
2260       value type as the "DTSTART" property.  Furthermore, if the
2261       "DTSTART" property is specified as a date with local time, then
2262       the UNTIL rule part MUST also be specified as a date with local
2263       time.  If the "DTSTART" property is specified as a date with UTC
2264       time or a date with local time and time zone reference, then the
2265       UNTIL rule part MUST be specified as a date with UTC time.  In the
2266       case of the "STANDARD" and "DAYLIGHT" sub-components the UNTIL
2267       rule part MUST always be specified as a date with UTC time.  If
2268       specified as a DATE-TIME value, then it MUST be specified in a UTC
2269       time format.  If not present, and the COUNT rule part is also not
2270       present, the "RRULE" is considered to repeat forever.
2271
2272       The COUNT rule part defines the number of occurrences at which to
2273       range-bound the recurrence.  The "DTSTART" property value always
2274       counts as the first occurrence.
2275
2276       The BYSECOND rule part specifies a COMMA-separated list of seconds
2277       within a minute.  Valid values are 0 to 60.  The BYMINUTE rule
2278       part specifies a COMMA-separated list of minutes within an hour.
2279       Valid values are 0 to 59.  The BYHOUR rule part specifies a COMMA-
2280       separated list of hours of the day.  Valid values are 0 to 23.
2281       The BYSECOND, BYMINUTE and BYHOUR rule parts MUST NOT be specified
2282       when the associated "DTSTART" property has a DATE value type.
2283       These rule parts MUST be ignored in RECUR value that violate the
2284       above requirement (e.g., generated by applications that pre-date
2285       this revision of iCalendar).
2286
2287       The BYDAY rule part specifies a COMMA-separated list of days of
2288       the week; SU indicates Sunday; MO indicates Monday; TU indicates
2289       Tuesday; WE indicates Wednesday; TH indicates Thursday; FR
2290       indicates Friday; and SA indicates Saturday.
2291
2292       Each BYDAY value can also be preceded by a positive (+n) or
2293       negative (-n) integer.  If present, this indicates the nth
2294       occurrence of a specific day within the MONTHLY or YEARLY "RRULE".
2295
2296
2297
2298 Desruisseaux                Standards Track                    [Page 41]
2299 \f
2300 RFC 5545                       iCalendar                  September 2009
2301
2302
2303       For example, within a MONTHLY rule, +1MO (or simply 1MO)
2304       represents the first Monday within the month, whereas -1MO
2305       represents the last Monday of the month.  The numeric value in a
2306       BYDAY rule part with the FREQ rule part set to YEARLY corresponds
2307       to an offset within the month when the BYMONTH rule part is
2308       present, and corresponds to an offset within the year when the
2309       BYWEEKNO or BYMONTH rule parts are present.  If an integer
2310       modifier is not present, it means all days of this type within the
2311       specified frequency.  For example, within a MONTHLY rule, MO
2312       represents all Mondays within the month.  The BYDAY rule part MUST
2313       NOT be specified with a numeric value when the FREQ rule part is
2314       not set to MONTHLY or YEARLY.  Furthermore, the BYDAY rule part
2315       MUST NOT be specified with a numeric value with the FREQ rule part
2316       set to YEARLY when the BYWEEKNO rule part is specified.
2317
2318       The BYMONTHDAY rule part specifies a COMMA-separated list of days
2319       of the month.  Valid values are 1 to 31 or -31 to -1.  For
2320       example, -10 represents the tenth to the last day of the month.
2321       The BYMONTHDAY rule part MUST NOT be specified when the FREQ rule
2322       part is set to WEEKLY.
2323
2324       The BYYEARDAY rule part specifies a COMMA-separated list of days
2325       of the year.  Valid values are 1 to 366 or -366 to -1.  For
2326       example, -1 represents the last day of the year (December 31st)
2327       and -306 represents the 306th to the last day of the year (March
2328       1st).  The BYYEARDAY rule part MUST NOT be specified when the FREQ
2329       rule part is set to DAILY, WEEKLY, or MONTHLY.
2330
2331       The BYWEEKNO rule part specifies a COMMA-separated list of
2332       ordinals specifying weeks of the year.  Valid values are 1 to 53
2333       or -53 to -1.  This corresponds to weeks according to week
2334       numbering as defined in [ISO.8601.2004].  A week is defined as a
2335       seven day period, starting on the day of the week defined to be
2336       the week start (see WKST).  Week number one of the calendar year
2337       is the first week that contains at least four (4) days in that
2338       calendar year.  This rule part MUST NOT be used when the FREQ rule
2339       part is set to anything other than YEARLY.  For example, 3
2340       represents the third week of the year.
2341
2342          Note: Assuming a Monday week start, week 53 can only occur when
2343          Thursday is January 1 or if it is a leap year and Wednesday is
2344          January 1.
2345
2346       The BYMONTH rule part specifies a COMMA-separated list of months
2347       of the year.  Valid values are 1 to 12.
2348
2349       The WKST rule part specifies the day on which the workweek starts.
2350       Valid values are MO, TU, WE, TH, FR, SA, and SU.  This is
2351
2352
2353
2354 Desruisseaux                Standards Track                    [Page 42]
2355 \f
2356 RFC 5545                       iCalendar                  September 2009
2357
2358
2359       significant when a WEEKLY "RRULE" has an interval greater than 1,
2360       and a BYDAY rule part is specified.  This is also significant when
2361       in a YEARLY "RRULE" when a BYWEEKNO rule part is specified.  The
2362       default value is MO.
2363
2364       The BYSETPOS rule part specifies a COMMA-separated list of values
2365       that corresponds to the nth occurrence within the set of
2366       recurrence instances specified by the rule.  BYSETPOS operates on
2367       a set of recurrence instances in one interval of the recurrence
2368       rule.  For example, in a WEEKLY rule, the interval would be one
2369       week A set of recurrence instances starts at the beginning of the
2370       interval defined by the FREQ rule part.  Valid values are 1 to 366
2371       or -366 to -1.  It MUST only be used in conjunction with another
2372       BYxxx rule part.  For example "the last work day of the month"
2373       could be represented as:
2374
2375        FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
2376
2377       Each BYSETPOS value can include a positive (+n) or negative (-n)
2378       integer.  If present, this indicates the nth occurrence of the
2379       specific occurrence within the set of occurrences specified by the
2380       rule.
2381
2382       Recurrence rules may generate recurrence instances with an invalid
2383       date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM
2384       on a day where the local time is moved forward by an hour at 1:00
2385       AM).  Such recurrence instances MUST be ignored and MUST NOT be
2386       counted as part of the recurrence set.
2387
2388       Information, not contained in the rule, necessary to determine the
2389       various recurrence instance start time and dates are derived from
2390       the Start Time ("DTSTART") component attribute.  For example,
2391       "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the
2392       month or a time.  This information would be the same as what is
2393       specified for "DTSTART".
2394
2395       BYxxx rule parts modify the recurrence in some manner.  BYxxx rule
2396       parts for a period of time that is the same or greater than the
2397       frequency generally reduce or limit the number of occurrences of
2398       the recurrence generated.  For example, "FREQ=DAILY;BYMONTH=1"
2399       reduces the number of recurrence instances from all days (if
2400       BYMONTH rule part is not present) to all days in January.  BYxxx
2401       rule parts for a period of time less than the frequency generally
2402       increase or expand the number of occurrences of the recurrence.
2403       For example, "FREQ=YEARLY;BYMONTH=1,2" increases the number of
2404       days within the yearly recurrence set from 1 (if BYMONTH rule part
2405       is not present) to 2.
2406
2407
2408
2409
2410 Desruisseaux                Standards Track                    [Page 43]
2411 \f
2412 RFC 5545                       iCalendar                  September 2009
2413
2414
2415       If multiple BYxxx rule parts are specified, then after evaluating
2416       the specified FREQ and INTERVAL rule parts, the BYxxx rule parts
2417       are applied to the current set of evaluated occurrences in the
2418       following order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY,
2419       BYHOUR, BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are
2420       evaluated.
2421
2422       The table below summarizes the dependency of BYxxx rule part
2423       expand or limit behavior on the FREQ rule part value.
2424
2425       The term "N/A" means that the corresponding BYxxx rule part MUST
2426       NOT be used with the corresponding FREQ value.
2427
2428       BYDAY has some special behavior depending on the FREQ value and
2429       this is described in separate notes below the table.
2430
2431    +----------+--------+--------+-------+-------+------+-------+------+
2432    |          |SECONDLY|MINUTELY|HOURLY |DAILY  |WEEKLY|MONTHLY|YEARLY|
2433    +----------+--------+--------+-------+-------+------+-------+------+
2434    |BYMONTH   |Limit   |Limit   |Limit  |Limit  |Limit |Limit  |Expand|
2435    +----------+--------+--------+-------+-------+------+-------+------+
2436    |BYWEEKNO  |N/A     |N/A     |N/A    |N/A    |N/A   |N/A    |Expand|
2437    +----------+--------+--------+-------+-------+------+-------+------+
2438    |BYYEARDAY |Limit   |Limit   |Limit  |N/A    |N/A   |N/A    |Expand|
2439    +----------+--------+--------+-------+-------+------+-------+------+
2440    |BYMONTHDAY|Limit   |Limit   |Limit  |Limit  |N/A   |Expand |Expand|
2441    +----------+--------+--------+-------+-------+------+-------+------+
2442    |BYDAY     |Limit   |Limit   |Limit  |Limit  |Expand|Note 1 |Note 2|
2443    +----------+--------+--------+-------+-------+------+-------+------+
2444    |BYHOUR    |Limit   |Limit   |Limit  |Expand |Expand|Expand |Expand|
2445    +----------+--------+--------+-------+-------+------+-------+------+
2446    |BYMINUTE  |Limit   |Limit   |Expand |Expand |Expand|Expand |Expand|
2447    +----------+--------+--------+-------+-------+------+-------+------+
2448    |BYSECOND  |Limit   |Expand  |Expand |Expand |Expand|Expand |Expand|
2449    +----------+--------+--------+-------+-------+------+-------+------+
2450    |BYSETPOS  |Limit   |Limit   |Limit  |Limit  |Limit |Limit  |Limit |
2451    +----------+--------+--------+-------+-------+------+-------+------+
2452
2453       Note 1:  Limit if BYMONTHDAY is present; otherwise, special expand
2454                for MONTHLY.
2455
2456       Note 2:  Limit if BYYEARDAY or BYMONTHDAY is present; otherwise,
2457                special expand for WEEKLY if BYWEEKNO present; otherwise,
2458                special expand for MONTHLY if BYMONTH present; otherwise,
2459                special expand for YEARLY.
2460
2461
2462
2463
2464
2465
2466 Desruisseaux                Standards Track                    [Page 44]
2467 \f
2468 RFC 5545                       iCalendar                  September 2009
2469
2470
2471       Here is an example of evaluating multiple BYxxx rule parts.
2472
2473        DTSTART;TZID=America/New_York:19970105T083000
2474        RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;
2475         BYMINUTE=30
2476
2477       First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to
2478       arrive at "every other year".  Then, "BYMONTH=1" would be applied
2479       to arrive at "every January, every other year".  Then, "BYDAY=SU"
2480       would be applied to arrive at "every Sunday in January, every
2481       other year".  Then, "BYHOUR=8,9" would be applied to arrive at
2482       "every Sunday in January at 8 AM and 9 AM, every other year".
2483       Then, "BYMINUTE=30" would be applied to arrive at "every Sunday in
2484       January at 8:30 AM and 9:30 AM, every other year".  Then, lacking
2485       information from "RRULE", the second is derived from "DTSTART", to
2486       end up in "every Sunday in January at 8:30:00 AM and 9:30:00 AM,
2487       every other year".  Similarly, if the BYMINUTE, BYHOUR, BYDAY,
2488       BYMONTHDAY, or BYMONTH rule part were missing, the appropriate
2489       minute, hour, day, or month would have been retrieved from the
2490       "DTSTART" property.
2491
2492       If the computed local start time of a recurrence instance does not
2493       exist, or occurs more than once, for the specified time zone, the
2494       time of the recurrence instance is interpreted in the same manner
2495       as an explicit DATE-TIME value describing that date and time, as
2496       specified in Section 3.3.5.
2497
2498       No additional content value encoding (i.e., BACKSLASH character
2499       encoding, see Section 3.3.11) is defined for this value type.
2500
2501    Example:  The following is a rule that specifies 10 occurrences that
2502       occur every other day:
2503
2504        FREQ=DAILY;COUNT=10;INTERVAL=2
2505
2506       There are other examples specified in Section 3.8.5.3.
2507
2508 3.3.11.  Text
2509
2510    Value Name:  TEXT
2511
2512    Purpose:  This value type is used to identify values that contain
2513       human-readable text.
2514
2515    Format Definition:  This value type is defined by the following
2516       notation:
2517
2518
2519
2520
2521
2522 Desruisseaux                Standards Track                    [Page 45]
2523 \f
2524 RFC 5545                       iCalendar                  September 2009
2525
2526
2527        text       = *(TSAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR)
2528           ; Folded according to description above
2529
2530        ESCAPED-CHAR = ("\\" / "\;" / "\," / "\N" / "\n")
2531           ; \\ encodes \, \N or \n encodes newline
2532           ; \; encodes ;, \, encodes ,
2533
2534        TSAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-5B /
2535                     %x5D-7E / NON-US-ASCII
2536           ; Any character except CONTROLs not needed by the current
2537           ; character set, DQUOTE, ";", ":", "\", ","
2538
2539    Description:  If the property permits, multiple TEXT values are
2540       specified by a COMMA-separated list of values.
2541
2542       The language in which the text is represented can be controlled by
2543       the "LANGUAGE" property parameter.
2544
2545       An intentional formatted text line break MUST only be included in
2546       a "TEXT" property value by representing the line break with the
2547       character sequence of BACKSLASH, followed by a LATIN SMALL LETTER
2548       N or a LATIN CAPITAL LETTER N, that is "\n" or "\N".
2549
2550       The "TEXT" property values may also contain special characters
2551       that are used to signify delimiters, such as a COMMA character for
2552       lists of values or a SEMICOLON character for structured values.
2553       In order to support the inclusion of these special characters in
2554       "TEXT" property values, they MUST be escaped with a BACKSLASH
2555       character.  A BACKSLASH character in a "TEXT" property value MUST
2556       be escaped with another BACKSLASH character.  A COMMA character in
2557       a "TEXT" property value MUST be escaped with a BACKSLASH
2558       character.  A SEMICOLON character in a "TEXT" property value MUST
2559       be escaped with a BACKSLASH character.  However, a COLON character
2560       in a "TEXT" property value SHALL NOT be escaped with a BACKSLASH
2561       character.
2562
2563    Example:  A multiple line value of:
2564
2565        Project XYZ Final Review
2566        Conference Room - 3B
2567        Come Prepared.
2568
2569       would be represented as:
2570
2571        Project XYZ Final Review\nConference Room - 3B\nCome Prepared.
2572
2573
2574
2575
2576
2577
2578 Desruisseaux                Standards Track                    [Page 46]
2579 \f
2580 RFC 5545                       iCalendar                  September 2009
2581
2582
2583 3.3.12.  Time
2584
2585    Value Name:  TIME
2586
2587    Purpose:  This value type is used to identify values that contain a
2588       time of day.
2589
2590    Format Definition:  This value type is defined by the following
2591       notation:
2592
2593        time         = time-hour time-minute time-second [time-utc]
2594
2595        time-hour    = 2DIGIT        ;00-23
2596        time-minute  = 2DIGIT        ;00-59
2597        time-second  = 2DIGIT        ;00-60
2598        ;The "60" value is used to account for positive "leap" seconds.
2599
2600        time-utc     = "Z"
2601
2602    Description:  If the property permits, multiple "time" values are
2603       specified by a COMMA-separated list of values.  No additional
2604       content value encoding (i.e., BACKSLASH character encoding, see
2605       Section 3.3.11) is defined for this value type.
2606
2607       The "TIME" value type is used to identify values that contain a
2608       time of day.  The format is based on the [ISO.8601.2004] complete
2609       representation, basic format for a time of day.  The text format
2610       consists of a two-digit, 24-hour of the day (i.e., values 00-23),
2611       two-digit minute in the hour (i.e., values 00-59), and two-digit
2612       seconds in the minute (i.e., values 00-60).  The seconds value of
2613       60 MUST only be used to account for positive "leap" seconds.
2614       Fractions of a second are not supported by this format.
2615
2616       In parallel to the "DATE-TIME" definition above, the "TIME" value
2617       type expresses time values in three forms:
2618
2619       The form of time with UTC offset MUST NOT be used.  For example,
2620       the following is not valid for a time value:
2621
2622        230000-0800        ;Invalid time format
2623
2624       FORM #1 LOCAL TIME
2625
2626       The local time form is simply a time value that does not contain
2627       the UTC designator nor does it reference a time zone.  For
2628       example, 11:00 PM:
2629
2630        230000
2631
2632
2633
2634 Desruisseaux                Standards Track                    [Page 47]
2635 \f
2636 RFC 5545                       iCalendar                  September 2009
2637
2638
2639       Time values of this type are said to be "floating" and are not
2640       bound to any time zone in particular.  They are used to represent
2641       the same hour, minute, and second value regardless of which time
2642       zone is currently being observed.  For example, an event can be
2643       defined that indicates that an individual will be busy from 11:00
2644       AM to 1:00 PM every day, no matter which time zone the person is
2645       in.  In these cases, a local time can be specified.  The recipient
2646       of an iCalendar object with a property value consisting of a local
2647       time, without any relative time zone information, SHOULD interpret
2648       the value as being fixed to whatever time zone the "ATTENDEE" is
2649       in at any given moment.  This means that two "Attendees", may
2650       participate in the same event at different UTC times; floating
2651       time SHOULD only be used where that is reasonable behavior.
2652
2653       In most cases, a fixed time is desired.  To properly communicate a
2654       fixed time in a property value, either UTC time or local time with
2655       time zone reference MUST be specified.
2656
2657       The use of local time in a TIME value without the "TZID" property
2658       parameter is to be interpreted as floating time, regardless of the
2659       existence of "VTIMEZONE" calendar components in the iCalendar
2660       object.
2661
2662       FORM #2: UTC TIME
2663
2664       UTC time, or absolute time, is identified by a LATIN CAPITAL
2665       LETTER Z suffix character, the UTC designator, appended to the
2666       time value.  For example, the following represents 07:00 AM UTC:
2667
2668        070000Z
2669
2670       The "TZID" property parameter MUST NOT be applied to TIME
2671       properties whose time values are specified in UTC.
2672
2673       FORM #3: LOCAL TIME AND TIME ZONE REFERENCE
2674
2675       The local time with reference to time zone information form is
2676       identified by the use the "TZID" property parameter to reference
2677       the appropriate time zone definition.  "TZID" is discussed in
2678       detail in Section 3.2.19.
2679
2680    Example:  The following represents 8:30 AM in New York in winter,
2681       five hours behind UTC, in each of the three formats:
2682
2683        083000
2684        133000Z
2685        TZID=America/New_York:083000
2686
2687
2688
2689
2690 Desruisseaux                Standards Track                    [Page 48]
2691 \f
2692 RFC 5545                       iCalendar                  September 2009
2693
2694
2695 3.3.13.  URI
2696
2697    Value Name:  URI
2698
2699    Purpose:  This value type is used to identify values that contain a
2700       uniform resource identifier (URI) type of reference to the
2701       property value.
2702
2703    Format Definition:  This value type is defined by the following
2704       notation:
2705
2706        uri = <As defined in Section 3 of [RFC3986]>
2707
2708    Description:  This value type might be used to reference binary
2709       information, for values that are large, or otherwise undesirable
2710       to include directly in the iCalendar object.
2711
2712       Property values with this value type MUST follow the generic URI
2713       syntax defined in [RFC3986].
2714
2715       When a property parameter value is a URI value type, the URI MUST
2716       be specified as a quoted-string value.
2717
2718       No additional content value encoding (i.e., BACKSLASH character
2719       encoding, see Section 3.3.11) is defined for this value type.
2720
2721    Example:  The following is a URI for a network file:
2722
2723        http://example.com/my-report.txt
2724
2725 3.3.14.  UTC Offset
2726
2727    Value Name:  UTC-OFFSET
2728
2729    Purpose:  This value type is used to identify properties that contain
2730       an offset from UTC to local time.
2731
2732    Format Definition:  This value type is defined by the following
2733       notation:
2734
2735        utc-offset = time-numzone
2736
2737        time-numzone = ("+" / "-") time-hour time-minute [time-second]
2738
2739    Description:  The PLUS SIGN character MUST be specified for positive
2740       UTC offsets (i.e., ahead of UTC).  The HYPHEN-MINUS character MUST
2741       be specified for negative UTC offsets (i.e., behind of UTC).  The
2742
2743
2744
2745
2746 Desruisseaux                Standards Track                    [Page 49]
2747 \f
2748 RFC 5545                       iCalendar                  September 2009
2749
2750
2751       value of "-0000" and "-000000" are not allowed.  The time-second,
2752       if present, MUST NOT be 60; if absent, it defaults to zero.
2753
2754       No additional content value encoding (i.e., BACKSLASH character
2755       encoding, see Section 3.3.11) is defined for this value type.
2756
2757    Example:  The following UTC offsets are given for standard time for
2758       New York (five hours behind UTC) and Geneva (one hour ahead of
2759       UTC):
2760
2761        -0500
2762
2763        +0100
2764
2765 3.4.  iCalendar Object
2766
2767    The Calendaring and Scheduling Core Object is a collection of
2768    calendaring and scheduling information.  Typically, this information
2769    will consist of an iCalendar stream with a single iCalendar object.
2770    However, multiple iCalendar objects can be sequentially grouped
2771    together in an iCalendar stream.  The first line and last line of the
2772    iCalendar object MUST contain a pair of iCalendar object delimiter
2773    strings.  The syntax for an iCalendar stream is as follows:
2774
2775        icalstream = 1*icalobject
2776
2777        icalobject = "BEGIN" ":" "VCALENDAR" CRLF
2778                     icalbody
2779                     "END" ":" "VCALENDAR" CRLF
2780
2781    The following is a simple example of an iCalendar object:
2782
2783        BEGIN:VCALENDAR
2784        VERSION:2.0
2785        PRODID:-//hacksw/handcal//NONSGML v1.0//EN
2786        BEGIN:VEVENT
2787        UID:19970610T172345Z-AF23B2@example.com
2788        DTSTAMP:19970610T172345Z
2789        DTSTART:19970714T170000Z
2790        DTEND:19970715T040000Z
2791        SUMMARY:Bastille Day Party
2792        END:VEVENT
2793        END:VCALENDAR
2794
2795
2796
2797
2798
2799
2800
2801
2802 Desruisseaux                Standards Track                    [Page 50]
2803 \f
2804 RFC 5545                       iCalendar                  September 2009
2805
2806
2807 3.5.  Property
2808
2809    A property is the definition of an individual attribute describing a
2810    calendar object or a calendar component.  A property takes the form
2811    defined by the "contentline" notation defined in Section 3.1.
2812
2813    The following is an example of a property:
2814
2815        DTSTART:19960415T133000Z
2816
2817    This memo imposes no ordering of properties within an iCalendar
2818    object.
2819
2820    Property names, parameter names, and enumerated parameter values are
2821    case-insensitive.  For example, the property name "DUE" is the same
2822    as "due" and "Due", DTSTART;TZID=America/New_York:19980714T120000 is
2823    the same as DtStart;TzID=America/New_York:19980714T120000.
2824
2825 3.6.  Calendar Components
2826
2827    The body of the iCalendar object consists of a sequence of calendar
2828    properties and one or more calendar components.  The calendar
2829    properties are attributes that apply to the calendar object as a
2830    whole.  The calendar components are collections of properties that
2831    express a particular calendar semantic.  For example, the calendar
2832    component can specify an event, a to-do, a journal entry, time zone
2833    information, free/busy time information, or an alarm.
2834
2835    The body of the iCalendar object is defined by the following
2836    notation:
2837
2838        icalbody   = calprops component
2839
2840        calprops   = *(
2841                   ;
2842                   ; The following are REQUIRED,
2843                   ; but MUST NOT occur more than once.
2844                   ;
2845                   prodid / version /
2846                   ;
2847                   ; The following are OPTIONAL,
2848                   ; but MUST NOT occur more than once.
2849                   ;
2850                   calscale / method /
2851                   ;
2852                   ; The following are OPTIONAL,
2853                   ; and MAY occur more than once.
2854                   ;
2855
2856
2857
2858 Desruisseaux                Standards Track                    [Page 51]
2859 \f
2860 RFC 5545                       iCalendar                  September 2009
2861
2862
2863                   x-prop / iana-prop
2864                   ;
2865                   )
2866
2867        component  = 1*(eventc / todoc / journalc / freebusyc /
2868                     timezonec / iana-comp / x-comp)
2869
2870        iana-comp  = "BEGIN" ":" iana-token CRLF
2871                     1*contentline
2872                     "END" ":" iana-token CRLF
2873
2874        x-comp     = "BEGIN" ":" x-name CRLF
2875                     1*contentline
2876                     "END" ":" x-name CRLF
2877
2878    An iCalendar object MUST include the "PRODID" and "VERSION" calendar
2879    properties.  In addition, it MUST include at least one calendar
2880    component.  Special forms of iCalendar objects are possible to
2881    publish just busy time (i.e., only a "VFREEBUSY" calendar component)
2882    or time zone (i.e., only a "VTIMEZONE" calendar component)
2883    information.  In addition, a complex iCalendar object that is used to
2884    capture a complete snapshot of the contents of a calendar is possible
2885    (e.g., composite of many different calendar components).  More
2886    commonly, an iCalendar object will consist of just a single "VEVENT",
2887    "VTODO", or "VJOURNAL" calendar component.  Applications MUST ignore
2888    x-comp and iana-comp values they don't recognize.  Applications that
2889    support importing iCalendar objects SHOULD support all of the
2890    component types defined in this document, and SHOULD NOT silently
2891    drop any components as that can lead to user data loss.
2892
2893 3.6.1.  Event Component
2894
2895    Component Name:  VEVENT
2896
2897    Purpose:  Provide a grouping of component properties that describe an
2898       event.
2899
2900    Format Definition:  A "VEVENT" calendar component is defined by the
2901       following notation:
2902
2903        eventc     = "BEGIN" ":" "VEVENT" CRLF
2904                     eventprop *alarmc
2905                     "END" ":" "VEVENT" CRLF
2906
2907        eventprop  = *(
2908                   ;
2909                   ; The following are REQUIRED,
2910                   ; but MUST NOT occur more than once.
2911
2912
2913
2914 Desruisseaux                Standards Track                    [Page 52]
2915 \f
2916 RFC 5545                       iCalendar                  September 2009
2917
2918
2919                   ;
2920                   dtstamp / uid /
2921                   ;
2922                   ; The following is REQUIRED if the component
2923                   ; appears in an iCalendar object that doesn't
2924                   ; specify the "METHOD" property; otherwise, it
2925                   ; is OPTIONAL; in any case, it MUST NOT occur
2926                   ; more than once.
2927                   ;
2928                   dtstart /
2929                   ;
2930                   ; The following are OPTIONAL,
2931                   ; but MUST NOT occur more than once.
2932                   ;
2933                   class / created / description / geo /
2934                   last-mod / location / organizer / priority /
2935                   seq / status / summary / transp /
2936                   url / recurid /
2937                   ;
2938                   ; The following is OPTIONAL,
2939                   ; but SHOULD NOT occur more than once.
2940                   ;
2941                   rrule /
2942                   ;
2943                   ; Either 'dtend' or 'duration' MAY appear in
2944                   ; a 'eventprop', but 'dtend' and 'duration'
2945                   ; MUST NOT occur in the same 'eventprop'.
2946                   ;
2947                   dtend / duration /
2948                   ;
2949                   ; The following are OPTIONAL,
2950                   ; and MAY occur more than once.
2951                   ;
2952                   attach / attendee / categories / comment /
2953                   contact / exdate / rstatus / related /
2954                   resources / rdate / x-prop / iana-prop
2955                   ;
2956                   )
2957
2958    Description:  A "VEVENT" calendar component is a grouping of
2959       component properties, possibly including "VALARM" calendar
2960       components, that represents a scheduled amount of time on a
2961       calendar.  For example, it can be an activity; such as a one-hour
2962       long, department meeting from 8:00 AM to 9:00 AM, tomorrow.
2963       Generally, an event will take up time on an individual calendar.
2964       Hence, the event will appear as an opaque interval in a search for
2965       busy time.  Alternately, the event can have its Time Transparency
2966
2967
2968
2969
2970 Desruisseaux                Standards Track                    [Page 53]
2971 \f
2972 RFC 5545                       iCalendar                  September 2009
2973
2974
2975       set to "TRANSPARENT" in order to prevent blocking of the event in
2976       searches for busy time.
2977
2978       The "VEVENT" is also the calendar component used to specify an
2979       anniversary or daily reminder within a calendar.  These events
2980       have a DATE value type for the "DTSTART" property instead of the
2981       default value type of DATE-TIME.  If such a "VEVENT" has a "DTEND"
2982       property, it MUST be specified as a DATE value also.  The
2983       anniversary type of "VEVENT" can span more than one date (i.e.,
2984       "DTEND" property value is set to a calendar date after the
2985       "DTSTART" property value).  If such a "VEVENT" has a "DURATION"
2986       property, it MUST be specified as a "dur-day" or "dur-week" value.
2987
2988       The "DTSTART" property for a "VEVENT" specifies the inclusive
2989       start of the event.  For recurring events, it also specifies the
2990       very first instance in the recurrence set.  The "DTEND" property
2991       for a "VEVENT" calendar component specifies the non-inclusive end
2992       of the event.  For cases where a "VEVENT" calendar component
2993       specifies a "DTSTART" property with a DATE value type but no
2994       "DTEND" nor "DURATION" property, the event's duration is taken to
2995       be one day.  For cases where a "VEVENT" calendar component
2996       specifies a "DTSTART" property with a DATE-TIME value type but no
2997       "DTEND" property, the event ends on the same calendar date and
2998       time of day specified by the "DTSTART" property.
2999
3000       The "VEVENT" calendar component cannot be nested within another
3001       calendar component.  However, "VEVENT" calendar components can be
3002       related to each other or to a "VTODO" or to a "VJOURNAL" calendar
3003       component with the "RELATED-TO" property.
3004
3005    Example:  The following is an example of the "VEVENT" calendar
3006       component used to represent a meeting that will also be opaque to
3007       searches for busy time:
3008
3009        BEGIN:VEVENT
3010        UID:19970901T130000Z-123401@example.com
3011        DTSTAMP:19970901T130000Z
3012        DTSTART:19970903T163000Z
3013        DTEND:19970903T190000Z
3014        SUMMARY:Annual Employee Review
3015        CLASS:PRIVATE
3016        CATEGORIES:BUSINESS,HUMAN RESOURCES
3017        END:VEVENT
3018
3019       The following is an example of the "VEVENT" calendar component
3020       used to represent a reminder that will not be opaque, but rather
3021       transparent, to searches for busy time:
3022
3023
3024
3025
3026 Desruisseaux                Standards Track                    [Page 54]
3027 \f
3028 RFC 5545                       iCalendar                  September 2009
3029
3030
3031        BEGIN:VEVENT
3032        UID:19970901T130000Z-123402@example.com
3033        DTSTAMP:19970901T130000Z
3034        DTSTART:19970401T163000Z
3035        DTEND:19970402T010000Z
3036        SUMMARY:Laurel is in sensitivity awareness class.
3037        CLASS:PUBLIC
3038        CATEGORIES:BUSINESS,HUMAN RESOURCES
3039        TRANSP:TRANSPARENT
3040        END:VEVENT
3041
3042       The following is an example of the "VEVENT" calendar component
3043       used to represent an anniversary that will occur annually:
3044
3045        BEGIN:VEVENT
3046        UID:19970901T130000Z-123403@example.com
3047        DTSTAMP:19970901T130000Z
3048        DTSTART;VALUE=DATE:19971102
3049        SUMMARY:Our Blissful Anniversary
3050        TRANSP:TRANSPARENT
3051        CLASS:CONFIDENTIAL
3052        CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
3053        RRULE:FREQ=YEARLY
3054        END:VEVENT
3055
3056       The following is an example of the "VEVENT" calendar component
3057       used to represent a multi-day event scheduled from June 28th, 2007
3058       to July 8th, 2007 inclusively.  Note that the "DTEND" property is
3059       set to July 9th, 2007, since the "DTEND" property specifies the
3060       non-inclusive end of the event.
3061
3062        BEGIN:VEVENT
3063        UID:20070423T123432Z-541111@example.com
3064        DTSTAMP:20070423T123432Z
3065        DTSTART;VALUE=DATE:20070628
3066        DTEND;VALUE=DATE:20070709
3067        SUMMARY:Festival International de Jazz de Montreal
3068        TRANSP:TRANSPARENT
3069        END:VEVENT
3070
3071 3.6.2.  To-Do Component
3072
3073    Component Name:  VTODO
3074
3075    Purpose:  Provide a grouping of calendar properties that describe a
3076       to-do.
3077
3078
3079
3080
3081
3082 Desruisseaux                Standards Track                    [Page 55]
3083 \f
3084 RFC 5545                       iCalendar                  September 2009
3085
3086
3087    Format Definition:  A "VTODO" calendar component is defined by the
3088       following notation:
3089
3090        todoc      = "BEGIN" ":" "VTODO" CRLF
3091                     todoprop *alarmc
3092                     "END" ":" "VTODO" CRLF
3093
3094        todoprop   = *(
3095                   ;
3096                   ; The following are REQUIRED,
3097                   ; but MUST NOT occur more than once.
3098                   ;
3099                   dtstamp / uid /
3100                   ;
3101                   ; The following are OPTIONAL,
3102                   ; but MUST NOT occur more than once.
3103                   ;
3104                   class / completed / created / description /
3105                   dtstart / geo / last-mod / location / organizer /
3106                   percent / priority / recurid / seq / status /
3107                   summary / url /
3108                   ;
3109                   ; The following is OPTIONAL,
3110                   ; but SHOULD NOT occur more than once.
3111                   ;
3112                   rrule /
3113                   ;
3114                   ; Either 'due' or 'duration' MAY appear in
3115                   ; a 'todoprop', but 'due' and 'duration'
3116                   ; MUST NOT occur in the same 'todoprop'.
3117                   ; If 'duration' appear in a 'todoprop',
3118                   ; then 'dtstart' MUST also appear in
3119                   ; the same 'todoprop'.
3120                   ;
3121                   due / duration /
3122                   ;
3123                   ; The following are OPTIONAL,
3124                   ; and MAY occur more than once.
3125                   ;
3126                   attach / attendee / categories / comment / contact /
3127                   exdate / rstatus / related / resources /
3128                   rdate / x-prop / iana-prop
3129                   ;
3130                   )
3131
3132    Description:  A "VTODO" calendar component is a grouping of component
3133       properties and possibly "VALARM" calendar components that
3134       represent an action-item or assignment.  For example, it can be
3135
3136
3137
3138 Desruisseaux                Standards Track                    [Page 56]
3139 \f
3140 RFC 5545                       iCalendar                  September 2009
3141
3142
3143       used to represent an item of work assigned to an individual; such
3144       as "turn in travel expense today".
3145
3146       The "VTODO" calendar component cannot be nested within another
3147       calendar component.  However, "VTODO" calendar components can be
3148       related to each other or to a "VEVENT" or to a "VJOURNAL" calendar
3149       component with the "RELATED-TO" property.
3150
3151       A "VTODO" calendar component without the "DTSTART" and "DUE" (or
3152       "DURATION") properties specifies a to-do that will be associated
3153       with each successive calendar date, until it is completed.
3154
3155    Examples:  The following is an example of a "VTODO" calendar
3156       component that needs to be completed before May 1st, 2007.  On
3157       midnight May 1st, 2007 this to-do would be considered overdue.
3158
3159        BEGIN:VTODO
3160        UID:20070313T123432Z-456553@example.com
3161        DTSTAMP:20070313T123432Z
3162        DUE;VALUE=DATE:20070501
3163        SUMMARY:Submit Quebec Income Tax Return for 2006
3164        CLASS:CONFIDENTIAL
3165        CATEGORIES:FAMILY,FINANCE
3166        STATUS:NEEDS-ACTION
3167        END:VTODO
3168
3169       The following is an example of a "VTODO" calendar component that
3170       was due before 1:00 P.M. UTC on July 9th, 2007 and was completed
3171       on July 7th, 2007 at 10:00 A.M. UTC.
3172
3173        BEGIN:VTODO
3174        UID:20070514T103211Z-123404@example.com
3175        DTSTAMP:20070514T103211Z
3176        DTSTART:20070514T110000Z
3177        DUE:20070709T130000Z
3178        COMPLETED:20070707T100000Z
3179        SUMMARY:Submit Revised Internet-Draft
3180        PRIORITY:1
3181        STATUS:NEEDS-ACTION
3182        END:VTODO
3183
3184 3.6.3.  Journal Component
3185
3186    Component Name:  VJOURNAL
3187
3188    Purpose:  Provide a grouping of component properties that describe a
3189       journal entry.
3190
3191
3192
3193
3194 Desruisseaux                Standards Track                    [Page 57]
3195 \f
3196 RFC 5545                       iCalendar                  September 2009
3197
3198
3199    Format Definition:  A "VJOURNAL" calendar component is defined by the
3200       following notation:
3201
3202        journalc   = "BEGIN" ":" "VJOURNAL" CRLF
3203                     jourprop
3204                     "END" ":" "VJOURNAL" CRLF
3205
3206        jourprop   = *(
3207                   ;
3208                   ; The following are REQUIRED,
3209                   ; but MUST NOT occur more than once.
3210                   ;
3211                   dtstamp / uid /
3212                   ;
3213                   ; The following are OPTIONAL,
3214                   ; but MUST NOT occur more than once.
3215                   ;
3216                   class / created / dtstart /
3217                   last-mod / organizer / recurid / seq /
3218                   status / summary / url /
3219                   ;
3220                   ; The following is OPTIONAL,
3221                   ; but SHOULD NOT occur more than once.
3222                   ;
3223                   rrule /
3224                   ;
3225                   ; The following are OPTIONAL,
3226                   ; and MAY occur more than once.
3227                   ;
3228                   attach / attendee / categories / comment /
3229                   contact / description / exdate / related / rdate /
3230                   rstatus / x-prop / iana-prop
3231                   ;
3232                   )
3233
3234    Description:  A "VJOURNAL" calendar component is a grouping of
3235       component properties that represent one or more descriptive text
3236       notes associated with a particular calendar date.  The "DTSTART"
3237       property is used to specify the calendar date with which the
3238       journal entry is associated.  Generally, it will have a DATE value
3239       data type, but it can also be used to specify a DATE-TIME value
3240       data type.  Examples of a journal entry include a daily record of
3241       a legislative body or a journal entry of individual telephone
3242       contacts for the day or an ordered list of accomplishments for the
3243       day.  The "VJOURNAL" calendar component can also be used to
3244       associate a document with a calendar date.
3245
3246
3247
3248
3249
3250 Desruisseaux                Standards Track                    [Page 58]
3251 \f
3252 RFC 5545                       iCalendar                  September 2009
3253
3254
3255       The "VJOURNAL" calendar component does not take up time on a
3256       calendar.  Hence, it does not play a role in free or busy time
3257       searches -- it is as though it has a time transparency value of
3258       TRANSPARENT.  It is transparent to any such searches.
3259
3260       The "VJOURNAL" calendar component cannot be nested within another
3261       calendar component.  However, "VJOURNAL" calendar components can
3262       be related to each other or to a "VEVENT" or to a "VTODO" calendar
3263       component, with the "RELATED-TO" property.
3264
3265    Example:  The following is an example of the "VJOURNAL" calendar
3266       component:
3267
3268        BEGIN:VJOURNAL
3269        UID:19970901T130000Z-123405@example.com
3270        DTSTAMP:19970901T130000Z
3271        DTSTART;VALUE=DATE:19970317
3272        SUMMARY:Staff meeting minutes
3273        DESCRIPTION:1. Staff meeting: Participants include Joe\,
3274          Lisa\, and Bob. Aurora project plans were reviewed.
3275          There is currently no budget reserves for this project.
3276          Lisa will escalate to management. Next meeting on Tuesday.\n
3277         2. Telephone Conference: ABC Corp. sales representative
3278          called to discuss new printer. Promised to get us a demo by
3279          Friday.\n3. Henry Miller (Handsoff Insurance): Car was
3280          totaled by tree. Is looking into a loaner car. 555-2323
3281          (tel).
3282        END:VJOURNAL
3283
3284 3.6.4.  Free/Busy Component
3285
3286    Component Name:  VFREEBUSY
3287
3288    Purpose:  Provide a grouping of component properties that describe
3289       either a request for free/busy time, describe a response to a
3290       request for free/busy time, or describe a published set of busy
3291       time.
3292
3293    Format Definition:  A "VFREEBUSY" calendar component is defined by
3294       the following notation:
3295
3296        freebusyc  = "BEGIN" ":" "VFREEBUSY" CRLF
3297                     fbprop
3298                     "END" ":" "VFREEBUSY" CRLF
3299
3300        fbprop     = *(
3301                   ;
3302                   ; The following are REQUIRED,
3303
3304
3305
3306 Desruisseaux                Standards Track                    [Page 59]
3307 \f
3308 RFC 5545                       iCalendar                  September 2009
3309
3310
3311                   ; but MUST NOT occur more than once.
3312                   ;
3313                   dtstamp / uid /
3314                   ;
3315                   ; The following are OPTIONAL,
3316                   ; but MUST NOT occur more than once.
3317                   ;
3318                   contact / dtstart / dtend /
3319                   organizer / url /
3320                   ;
3321                   ; The following are OPTIONAL,
3322                   ; and MAY occur more than once.
3323                   ;
3324                   attendee / comment / freebusy / rstatus / x-prop /
3325                   iana-prop
3326                   ;
3327                   )
3328
3329    Description:  A "VFREEBUSY" calendar component is a grouping of
3330       component properties that represents either a request for free or
3331       busy time information, a reply to a request for free or busy time
3332       information, or a published set of busy time information.
3333
3334       When used to request free/busy time information, the "ATTENDEE"
3335       property specifies the calendar users whose free/busy time is
3336       being requested; the "ORGANIZER" property specifies the calendar
3337       user who is requesting the free/busy time; the "DTSTART" and
3338       "DTEND" properties specify the window of time for which the free/
3339       busy time is being requested; the "UID" and "DTSTAMP" properties
3340       are specified to assist in proper sequencing of multiple free/busy
3341       time requests.
3342
3343       When used to reply to a request for free/busy time, the "ATTENDEE"
3344       property specifies the calendar user responding to the free/busy
3345       time request; the "ORGANIZER" property specifies the calendar user
3346       that originally requested the free/busy time; the "FREEBUSY"
3347       property specifies the free/busy time information (if it exists);
3348       and the "UID" and "DTSTAMP" properties are specified to assist in
3349       proper sequencing of multiple free/busy time replies.
3350
3351       When used to publish busy time, the "ORGANIZER" property specifies
3352       the calendar user associated with the published busy time; the
3353       "DTSTART" and "DTEND" properties specify an inclusive time window
3354       that surrounds the busy time information; the "FREEBUSY" property
3355       specifies the published busy time information; and the "DTSTAMP"
3356       property specifies the DATE-TIME that iCalendar object was
3357       created.
3358
3359
3360
3361
3362 Desruisseaux                Standards Track                    [Page 60]
3363 \f
3364 RFC 5545                       iCalendar                  September 2009
3365
3366
3367       The "VFREEBUSY" calendar component cannot be nested within another
3368       calendar component.  Multiple "VFREEBUSY" calendar components can
3369       be specified within an iCalendar object.  This permits the
3370       grouping of free/busy information into logical collections, such
3371       as monthly groups of busy time information.
3372
3373       The "VFREEBUSY" calendar component is intended for use in
3374       iCalendar object methods involving requests for free time,
3375       requests for busy time, requests for both free and busy, and the
3376       associated replies.
3377
3378       Free/Busy information is represented with the "FREEBUSY" property.
3379       This property provides a terse representation of time periods.
3380       One or more "FREEBUSY" properties can be specified in the
3381       "VFREEBUSY" calendar component.
3382
3383       When present in a "VFREEBUSY" calendar component, the "DTSTART"
3384       and "DTEND" properties SHOULD be specified prior to any "FREEBUSY"
3385       properties.
3386
3387       The recurrence properties ("RRULE", "RDATE", "EXDATE") are not
3388       permitted within a "VFREEBUSY" calendar component.  Any recurring
3389       events are resolved into their individual busy time periods using
3390       the "FREEBUSY" property.
3391
3392    Example:  The following is an example of a "VFREEBUSY" calendar
3393       component used to request free or busy time information:
3394
3395        BEGIN:VFREEBUSY
3396        UID:19970901T082949Z-FA43EF@example.com
3397        ORGANIZER:mailto:jane_doe@example.com
3398        ATTENDEE:mailto:john_public@example.com
3399        DTSTART:19971015T050000Z
3400        DTEND:19971016T050000Z
3401        DTSTAMP:19970901T083000Z
3402        END:VFREEBUSY
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418 Desruisseaux                Standards Track                    [Page 61]
3419 \f
3420 RFC 5545                       iCalendar                  September 2009
3421
3422
3423       The following is an example of a "VFREEBUSY" calendar component
3424       used to reply to the request with busy time information:
3425
3426        BEGIN:VFREEBUSY
3427        UID:19970901T095957Z-76A912@example.com
3428        ORGANIZER:mailto:jane_doe@example.com
3429        ATTENDEE:mailto:john_public@example.com
3430        DTSTAMP:19970901T100000Z
3431        FREEBUSY:19971015T050000Z/PT8H30M,
3432         19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
3433        URL:http://example.com/pub/busy/jpublic-01.ifb
3434        COMMENT:This iCalendar file contains busy time information for
3435          the next three months.
3436        END:VFREEBUSY
3437
3438       The following is an example of a "VFREEBUSY" calendar component
3439       used to publish busy time information:
3440
3441        BEGIN:VFREEBUSY
3442        UID:19970901T115957Z-76A912@example.com
3443        DTSTAMP:19970901T120000Z
3444        ORGANIZER:jsmith@example.com
3445        DTSTART:19980313T141711Z
3446        DTEND:19980410T141711Z
3447        FREEBUSY:19980314T233000Z/19980315T003000Z
3448        FREEBUSY:19980316T153000Z/19980316T163000Z
3449        FREEBUSY:19980318T030000Z/19980318T040000Z
3450        URL:http://www.example.com/calendar/busytime/jsmith.ifb
3451        END:VFREEBUSY
3452
3453 3.6.5.  Time Zone Component
3454
3455    Component Name:  VTIMEZONE
3456
3457    Purpose:  Provide a grouping of component properties that defines a
3458       time zone.
3459
3460    Format Definition:  A "VTIMEZONE" calendar component is defined by
3461       the following notation:
3462
3463        timezonec  = "BEGIN" ":" "VTIMEZONE" CRLF
3464                     *(
3465                     ;
3466                     ; 'tzid' is REQUIRED, but MUST NOT occur more
3467                     ; than once.
3468                     ;
3469                     tzid /
3470                     ;
3471
3472
3473
3474 Desruisseaux                Standards Track                    [Page 62]
3475 \f
3476 RFC 5545                       iCalendar                  September 2009
3477
3478
3479                     ; 'last-mod' and 'tzurl' are OPTIONAL,
3480                     ; but MUST NOT occur more than once.
3481                     ;
3482                     last-mod / tzurl /
3483                     ;
3484                     ; One of 'standardc' or 'daylightc' MUST occur
3485                     ; and each MAY occur more than once.
3486                     ;
3487                     standardc / daylightc /
3488                     ;
3489                     ; The following are OPTIONAL,
3490                     ; and MAY occur more than once.
3491                     ;
3492                     x-prop / iana-prop
3493                     ;
3494                     )
3495                     "END" ":" "VTIMEZONE" CRLF
3496
3497        standardc  = "BEGIN" ":" "STANDARD" CRLF
3498                     tzprop
3499                     "END" ":" "STANDARD" CRLF
3500
3501        daylightc  = "BEGIN" ":" "DAYLIGHT" CRLF
3502                     tzprop
3503                     "END" ":" "DAYLIGHT" CRLF
3504
3505        tzprop     = *(
3506                     ;
3507                     ; The following are REQUIRED,
3508                     ; but MUST NOT occur more than once.
3509                     ;
3510                     dtstart / tzoffsetto / tzoffsetfrom /
3511                     ;
3512                     ; The following is OPTIONAL,
3513                     ; but SHOULD NOT occur more than once.
3514                     ;
3515                     rrule /
3516                     ;
3517                     ; The following are OPTIONAL,
3518                     ; and MAY occur more than once.
3519                     ;
3520                     comment / rdate / tzname / x-prop / iana-prop
3521                     ;
3522                     )
3523
3524    Description:  A time zone is unambiguously defined by the set of time
3525       measurement rules determined by the governing body for a given
3526       geographic area.  These rules describe, at a minimum, the base
3527
3528
3529
3530 Desruisseaux                Standards Track                    [Page 63]
3531 \f
3532 RFC 5545                       iCalendar                  September 2009
3533
3534
3535       offset from UTC for the time zone, often referred to as the
3536       Standard Time offset.  Many locations adjust their Standard Time
3537       forward or backward by one hour, in order to accommodate seasonal
3538       changes in number of daylight hours, often referred to as Daylight
3539       Saving Time.  Some locations adjust their time by a fraction of an
3540       hour.  Standard Time is also known as Winter Time.  Daylight
3541       Saving Time is also known as Advanced Time, Summer Time, or Legal
3542       Time in certain countries.  The following table shows the changes
3543       in time zone rules in effect for New York City starting from 1967.
3544       Each line represents a description or rule for a particular
3545       observance.
3546
3547                          Effective Observance Rule
3548
3549      +-----------+--------------------------+--------+--------------+
3550      | Date      | (Date-Time)              | Offset | Abbreviation |
3551      +-----------+--------------------------+--------+--------------+
3552      | 1967-1973 | last Sun in Apr, 02:00   | -0400  | EDT          |
3553      |           |                          |        |              |
3554      | 1967-2006 | last Sun in Oct, 02:00   | -0500  | EST          |
3555      |           |                          |        |              |
3556      | 1974-1974 | Jan 6, 02:00             | -0400  | EDT          |
3557      |           |                          |        |              |
3558      | 1975-1975 | Feb 23, 02:00            | -0400  | EDT          |
3559      |           |                          |        |              |
3560      | 1976-1986 | last Sun in Apr, 02:00   | -0400  | EDT          |
3561      |           |                          |        |              |
3562      | 1987-2006 | first Sun in Apr, 02:00  | -0400  | EDT          |
3563      |           |                          |        |              |
3564      | 2007-*    | second Sun in Mar, 02:00 | -0400  | EDT          |
3565      |           |                          |        |              |
3566      | 2007-*    | first Sun in Nov, 02:00  | -0500  | EST          |
3567      +-----------+--------------------------+--------+--------------+
3568
3569    Note: The specification of a global time zone registry is not
3570          addressed by this document and is left for future study.
3571          However, implementers may find the TZ database [TZDB] a useful
3572          reference.  It is an informal, public-domain collection of time
3573          zone information, which is currently being maintained by
3574          volunteer Internet participants, and is used in several
3575          operating systems.  This database contains current and
3576          historical time zone information for a wide variety of
3577          locations around the globe; it provides a time zone identifier
3578          for every unique time zone rule set in actual use since 1970,
3579          with historical data going back to the introduction of standard
3580          time.
3581
3582
3583
3584
3585
3586 Desruisseaux                Standards Track                    [Page 64]
3587 \f
3588 RFC 5545                       iCalendar                  September 2009
3589
3590
3591       Interoperability between two calendaring and scheduling
3592       applications, especially for recurring events, to-dos or journal
3593       entries, is dependent on the ability to capture and convey date
3594       and time information in an unambiguous format.  The specification
3595       of current time zone information is integral to this behavior.
3596
3597       If present, the "VTIMEZONE" calendar component defines the set of
3598       Standard Time and Daylight Saving Time observances (or rules) for
3599       a particular time zone for a given interval of time.  The
3600       "VTIMEZONE" calendar component cannot be nested within other
3601       calendar components.  Multiple "VTIMEZONE" calendar components can
3602       exist in an iCalendar object.  In this situation, each "VTIMEZONE"
3603       MUST represent a unique time zone definition.  This is necessary
3604       for some classes of events, such as airline flights, that start in
3605       one time zone and end in another.
3606
3607       The "VTIMEZONE" calendar component MUST include the "TZID"
3608       property and at least one definition of a "STANDARD" or "DAYLIGHT"
3609       sub-component.  The "STANDARD" or "DAYLIGHT" sub-component MUST
3610       include the "DTSTART", "TZOFFSETFROM", and "TZOFFSETTO"
3611       properties.
3612
3613       An individual "VTIMEZONE" calendar component MUST be specified for
3614       each unique "TZID" parameter value specified in the iCalendar
3615       object.  In addition, a "VTIMEZONE" calendar component, referred
3616       to by a recurring calendar component, MUST provide valid time zone
3617       information for all recurrence instances.
3618
3619       Each "VTIMEZONE" calendar component consists of a collection of
3620       one or more sub-components that describe the rule for a particular
3621       observance (either a Standard Time or a Daylight Saving Time
3622       observance).  The "STANDARD" sub-component consists of a
3623       collection of properties that describe Standard Time.  The
3624       "DAYLIGHT" sub-component consists of a collection of properties
3625       that describe Daylight Saving Time.  In general, this collection
3626       of properties consists of:
3627
3628       *  the first onset DATE-TIME for the observance;
3629
3630       *  the last onset DATE-TIME for the observance, if a last onset is
3631          known;
3632
3633       *  the offset to be applied for the observance;
3634
3635       *  a rule that describes the day and time when the observance
3636          takes effect;
3637
3638       *  an optional name for the observance.
3639
3640
3641
3642 Desruisseaux                Standards Track                    [Page 65]
3643 \f
3644 RFC 5545                       iCalendar                  September 2009
3645
3646
3647       For a given time zone, there may be multiple unique definitions of
3648       the observances over a period of time.  Each observance is
3649       described using either a "STANDARD" or "DAYLIGHT" sub-component.
3650       The collection of these sub-components is used to describe the
3651       time zone for a given period of time.  The offset to apply at any
3652       given time is found by locating the observance that has the last
3653       onset date and time before the time in question, and using the
3654       offset value from that observance.
3655
3656       The top-level properties in a "VTIMEZONE" calendar component are:
3657
3658       The mandatory "TZID" property is a text value that uniquely
3659       identifies the "VTIMEZONE" calendar component within the scope of
3660       an iCalendar object.
3661
3662       The optional "LAST-MODIFIED" property is a UTC value that
3663       specifies the date and time that this time zone definition was
3664       last updated.
3665
3666       The optional "TZURL" property is a url value that points to a
3667       published "VTIMEZONE" definition.  "TZURL" SHOULD refer to a
3668       resource that is accessible by anyone who might need to interpret
3669       the object.  This SHOULD NOT normally be a "file" URL or other URL
3670       that is not widely accessible.
3671
3672       The collection of properties that are used to define the
3673       "STANDARD" and "DAYLIGHT" sub-components include:
3674
3675       The mandatory "DTSTART" property gives the effective onset date
3676       and local time for the time zone sub-component definition.
3677       "DTSTART" in this usage MUST be specified as a date with a local
3678       time value.
3679
3680       The mandatory "TZOFFSETFROM" property gives the UTC offset that is
3681       in use when the onset of this time zone observance begins.
3682       "TZOFFSETFROM" is combined with "DTSTART" to define the effective
3683       onset for the time zone sub-component definition.  For example,
3684       the following represents the time at which the observance of
3685       Standard Time took effect in Fall 1967 for New York City:
3686
3687        DTSTART:19671029T020000
3688
3689        TZOFFSETFROM:-0400
3690
3691       The mandatory "TZOFFSETTO" property gives the UTC offset for the
3692       time zone sub-component (Standard Time or Daylight Saving Time)
3693       when this observance is in use.
3694
3695
3696
3697
3698 Desruisseaux                Standards Track                    [Page 66]
3699 \f
3700 RFC 5545                       iCalendar                  September 2009
3701
3702
3703       The optional "TZNAME" property is the customary name for the time
3704       zone.  This could be used for displaying dates.
3705
3706       The onset DATE-TIME values for the observance defined by the time
3707       zone sub-component is defined by the "DTSTART", "RRULE", and
3708       "RDATE" properties.
3709
3710       The "RRULE" property defines the recurrence rule for the onset of
3711       the observance defined by this time zone sub-component.  Some
3712       specific requirements for the usage of "RRULE" for this purpose
3713       include:
3714
3715       *  If observance is known to have an effective end date, the
3716          "UNTIL" recurrence rule parameter MUST be used to specify the
3717          last valid onset of this observance (i.e., the UNTIL DATE-TIME
3718          will be equal to the last instance generated by the recurrence
3719          pattern).  It MUST be specified in UTC time.
3720
3721       *  The "DTSTART" and the "TZOFFSETFROM" properties MUST be used
3722          when generating the onset DATE-TIME values (instances) from the
3723          "RRULE".
3724
3725       The "RDATE" property can also be used to define the onset of the
3726       observance by giving the individual onset date and times.  "RDATE"
3727       in this usage MUST be specified as a date with local time value,
3728       relative to the UTC offset specified in the "TZOFFSETFROM"
3729       property.
3730
3731       The optional "COMMENT" property is also allowed for descriptive
3732       explanatory text.
3733
3734    Example:  The following are examples of the "VTIMEZONE" calendar
3735       component:
3736
3737       This is an example showing all the time zone rules for New York
3738       City since April 30, 1967 at 03:00:00 EDT.
3739
3740        BEGIN:VTIMEZONE
3741        TZID:America/New_York
3742        LAST-MODIFIED:20050809T050000Z
3743        BEGIN:DAYLIGHT
3744        DTSTART:19670430T020000
3745        RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z
3746        TZOFFSETFROM:-0500
3747        TZOFFSETTO:-0400
3748        TZNAME:EDT
3749        END:DAYLIGHT
3750        BEGIN:STANDARD
3751
3752
3753
3754 Desruisseaux                Standards Track                    [Page 67]
3755 \f
3756 RFC 5545                       iCalendar                  September 2009
3757
3758
3759        DTSTART:19671029T020000
3760        RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z
3761        TZOFFSETFROM:-0400
3762        TZOFFSETTO:-0500
3763        TZNAME:EST
3764        END:STANDARD
3765        BEGIN:DAYLIGHT
3766        DTSTART:19740106T020000
3767        RDATE:19750223T020000
3768        TZOFFSETFROM:-0500
3769        TZOFFSETTO:-0400
3770        TZNAME:EDT
3771        END:DAYLIGHT
3772        BEGIN:DAYLIGHT
3773        DTSTART:19760425T020000
3774        RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19860427T070000Z
3775        TZOFFSETFROM:-0500
3776        TZOFFSETTO:-0400
3777        TZNAME:EDT
3778        END:DAYLIGHT
3779        BEGIN:DAYLIGHT
3780        DTSTART:19870405T020000
3781        RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T070000Z
3782        TZOFFSETFROM:-0500
3783        TZOFFSETTO:-0400
3784        TZNAME:EDT
3785        END:DAYLIGHT
3786        BEGIN:DAYLIGHT
3787        DTSTART:20070311T020000
3788        RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
3789        TZOFFSETFROM:-0500
3790        TZOFFSETTO:-0400
3791        TZNAME:EDT
3792        END:DAYLIGHT
3793        BEGIN:STANDARD
3794        DTSTART:20071104T020000
3795        RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
3796        TZOFFSETFROM:-0400
3797        TZOFFSETTO:-0500
3798        TZNAME:EST
3799        END:STANDARD
3800        END:VTIMEZONE
3801
3802       This is an example showing time zone information for New York City
3803       using only the "DTSTART" property.  Note that this is only
3804       suitable for a recurring event that starts on or later than March
3805       11, 2007 at 03:00:00 EDT (i.e., the earliest effective transition
3806       date and time) and ends no later than March 9, 2008 at 01:59:59
3807
3808
3809
3810 Desruisseaux                Standards Track                    [Page 68]
3811 \f
3812 RFC 5545                       iCalendar                  September 2009
3813
3814
3815       EST (i.e., latest valid date and time for EST in this scenario).
3816       For example, this can be used for a recurring event that occurs
3817       every Friday, 8:00 A.M.-9:00 A.M., starting June 1, 2007, ending
3818       December 31, 2007,
3819
3820        BEGIN:VTIMEZONE
3821        TZID:America/New_York
3822        LAST-MODIFIED:20050809T050000Z
3823        BEGIN:STANDARD
3824        DTSTART:20071104T020000
3825        TZOFFSETFROM:-0400
3826        TZOFFSETTO:-0500
3827        TZNAME:EST
3828        END:STANDARD
3829        BEGIN:DAYLIGHT
3830        DTSTART:20070311T020000
3831        TZOFFSETFROM:-0500
3832        TZOFFSETTO:-0400
3833        TZNAME:EDT
3834        END:DAYLIGHT
3835        END:VTIMEZONE
3836
3837       This is a simple example showing the current time zone rules for
3838       New York City using a "RRULE" recurrence pattern.  Note that there
3839       is no effective end date to either of the Standard Time or
3840       Daylight Time rules.  This information would be valid for a
3841       recurring event starting today and continuing indefinitely.
3842
3843        BEGIN:VTIMEZONE
3844        TZID:America/New_York
3845        LAST-MODIFIED:20050809T050000Z
3846        TZURL:http://zones.example.com/tz/America-New_York.ics
3847        BEGIN:STANDARD
3848        DTSTART:20071104T020000
3849        RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
3850        TZOFFSETFROM:-0400
3851        TZOFFSETTO:-0500
3852        TZNAME:EST
3853        END:STANDARD
3854        BEGIN:DAYLIGHT
3855        DTSTART:20070311T020000
3856        RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
3857        TZOFFSETFROM:-0500
3858        TZOFFSETTO:-0400
3859        TZNAME:EDT
3860        END:DAYLIGHT
3861        END:VTIMEZONE
3862
3863
3864
3865
3866 Desruisseaux                Standards Track                    [Page 69]
3867 \f
3868 RFC 5545                       iCalendar                  September 2009
3869
3870
3871       This is an example showing a set of rules for a fictitious time
3872       zone where the Daylight Time rule has an effective end date (i.e.,
3873       after that date, Daylight Time is no longer observed).
3874
3875        BEGIN:VTIMEZONE
3876        TZID:Fictitious
3877        LAST-MODIFIED:19870101T000000Z
3878        BEGIN:STANDARD
3879        DTSTART:19671029T020000
3880        RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3881        TZOFFSETFROM:-0400
3882        TZOFFSETTO:-0500
3883        TZNAME:EST
3884        END:STANDARD
3885        BEGIN:DAYLIGHT
3886        DTSTART:19870405T020000
3887        RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
3888        TZOFFSETFROM:-0500
3889        TZOFFSETTO:-0400
3890        TZNAME:EDT
3891        END:DAYLIGHT
3892        END:VTIMEZONE
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922 Desruisseaux                Standards Track                    [Page 70]
3923 \f
3924 RFC 5545                       iCalendar                  September 2009
3925
3926
3927       This is an example showing a set of rules for a fictitious time
3928       zone where the first Daylight Time rule has an effective end date.
3929       There is a second Daylight Time rule that picks up where the other
3930       left off.
3931
3932        BEGIN:VTIMEZONE
3933        TZID:Fictitious
3934        LAST-MODIFIED:19870101T000000Z
3935        BEGIN:STANDARD
3936        DTSTART:19671029T020000
3937        RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
3938        TZOFFSETFROM:-0400
3939        TZOFFSETTO:-0500
3940        TZNAME:EST
3941        END:STANDARD
3942        BEGIN:DAYLIGHT
3943        DTSTART:19870405T020000
3944        RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
3945        TZOFFSETFROM:-0500
3946        TZOFFSETTO:-0400
3947        TZNAME:EDT
3948        END:DAYLIGHT
3949        BEGIN:DAYLIGHT
3950        DTSTART:19990424T020000
3951        RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4
3952        TZOFFSETFROM:-0500
3953        TZOFFSETTO:-0400
3954        TZNAME:EDT
3955        END:DAYLIGHT
3956        END:VTIMEZONE
3957
3958 3.6.6.  Alarm Component
3959
3960    Component Name:  VALARM
3961
3962    Purpose:  Provide a grouping of component properties that define an
3963       alarm.
3964
3965    Format Definition:  A "VALARM" calendar component is defined by the
3966       following notation:
3967
3968        alarmc     = "BEGIN" ":" "VALARM" CRLF
3969                     (audioprop / dispprop / emailprop)
3970                     "END" ":" "VALARM" CRLF
3971
3972        audioprop  = *(
3973                   ;
3974                   ; 'action' and 'trigger' are both REQUIRED,
3975
3976
3977
3978 Desruisseaux                Standards Track                    [Page 71]
3979 \f
3980 RFC 5545                       iCalendar                  September 2009
3981
3982
3983                   ; but MUST NOT occur more than once.
3984                   ;
3985                   action / trigger /
3986                   ;
3987                   ; 'duration' and 'repeat' are both OPTIONAL,
3988                   ; and MUST NOT occur more than once each;
3989                   ; but if one occurs, so MUST the other.
3990                   ;
3991                   duration / repeat /
3992                   ;
3993                   ; The following is OPTIONAL,
3994                   ; but MUST NOT occur more than once.
3995                   ;
3996                   attach /
3997                   ;
3998                   ; The following is OPTIONAL,
3999                   ; and MAY occur more than once.
4000                   ;
4001                   x-prop / iana-prop
4002                   ;
4003                   )
4004
4005        dispprop   = *(
4006                   ;
4007                   ; The following are REQUIRED,
4008                   ; but MUST NOT occur more than once.
4009                   ;
4010                   action / description / trigger /
4011                   ;
4012                   ; 'duration' and 'repeat' are both OPTIONAL,
4013                   ; and MUST NOT occur more than once each;
4014                   ; but if one occurs, so MUST the other.
4015                   ;
4016                   duration / repeat /
4017                   ;
4018                   ; The following is OPTIONAL,
4019                   ; and MAY occur more than once.
4020                   ;
4021                   x-prop / iana-prop
4022                   ;
4023                   )
4024
4025        emailprop  = *(
4026                   ;
4027                   ; The following are all REQUIRED,
4028                   ; but MUST NOT occur more than once.
4029                   ;
4030                   action / description / trigger / summary /
4031
4032
4033
4034 Desruisseaux                Standards Track                    [Page 72]
4035 \f
4036 RFC 5545                       iCalendar                  September 2009
4037
4038
4039                   ;
4040                   ; The following is REQUIRED,
4041                   ; and MAY occur more than once.
4042                   ;
4043                   attendee /
4044                   ;
4045                   ; 'duration' and 'repeat' are both OPTIONAL,
4046                   ; and MUST NOT occur more than once each;
4047                   ; but if one occurs, so MUST the other.
4048                   ;
4049                   duration / repeat /
4050                   ;
4051                   ; The following are OPTIONAL,
4052                   ; and MAY occur more than once.
4053                   ;
4054                   attach / x-prop / iana-prop
4055                   ;
4056                   )
4057
4058    Description:  A "VALARM" calendar component is a grouping of
4059       component properties that is a reminder or alarm for an event or a
4060       to-do.  For example, it may be used to define a reminder for a
4061       pending event or an overdue to-do.
4062
4063       The "VALARM" calendar component MUST include the "ACTION" and
4064       "TRIGGER" properties.  The "ACTION" property further constrains
4065       the "VALARM" calendar component in the following ways:
4066
4067       When the action is "AUDIO", the alarm can also include one and
4068       only one "ATTACH" property, which MUST point to a sound resource,
4069       which is rendered when the alarm is triggered.
4070
4071       When the action is "DISPLAY", the alarm MUST also include a
4072       "DESCRIPTION" property, which contains the text to be displayed
4073       when the alarm is triggered.
4074
4075       When the action is "EMAIL", the alarm MUST include a "DESCRIPTION"
4076       property, which contains the text to be used as the message body,
4077       a "SUMMARY" property, which contains the text to be used as the
4078       message subject, and one or more "ATTENDEE" properties, which
4079       contain the email address of attendees to receive the message.  It
4080       can also include one or more "ATTACH" properties, which are
4081       intended to be sent as message attachments.  When the alarm is
4082       triggered, the email message is sent.
4083
4084       The "VALARM" calendar component MUST only appear within either a
4085       "VEVENT" or "VTODO" calendar component.  "VALARM" calendar
4086       components cannot be nested.  Multiple mutually independent
4087
4088
4089
4090 Desruisseaux                Standards Track                    [Page 73]
4091 \f
4092 RFC 5545                       iCalendar                  September 2009
4093
4094
4095       "VALARM" calendar components can be specified for a single
4096       "VEVENT" or "VTODO" calendar component.
4097
4098       The "TRIGGER" property specifies when the alarm will be triggered.
4099       The "TRIGGER" property specifies a duration prior to the start of
4100       an event or a to-do.  The "TRIGGER" edge may be explicitly set to
4101       be relative to the "START" or "END" of the event or to-do with the
4102       "RELATED" parameter of the "TRIGGER" property.  The "TRIGGER"
4103       property value type can alternatively be set to an absolute
4104       calendar date with UTC time.
4105
4106       In an alarm set to trigger on the "START" of an event or to-do,
4107       the "DTSTART" property MUST be present in the associated event or
4108       to-do.  In an alarm in a "VEVENT" calendar component set to
4109       trigger on the "END" of the event, either the "DTEND" property
4110       MUST be present, or the "DTSTART" and "DURATION" properties MUST
4111       both be present.  In an alarm in a "VTODO" calendar component set
4112       to trigger on the "END" of the to-do, either the "DUE" property
4113       MUST be present, or the "DTSTART" and "DURATION" properties MUST
4114       both be present.
4115
4116       The alarm can be defined such that it triggers repeatedly.  A
4117       definition of an alarm with a repeating trigger MUST include both
4118       the "DURATION" and "REPEAT" properties.  The "DURATION" property
4119       specifies the delay period, after which the alarm will repeat.
4120       The "REPEAT" property specifies the number of additional
4121       repetitions that the alarm will be triggered.  This repetition
4122       count is in addition to the initial triggering of the alarm.  Both
4123       of these properties MUST be present in order to specify a
4124       repeating alarm.  If one of these two properties is absent, then
4125       the alarm will not repeat beyond the initial trigger.
4126
4127       The "ACTION" property is used within the "VALARM" calendar
4128       component to specify the type of action invoked when the alarm is
4129       triggered.  The "VALARM" properties provide enough information for
4130       a specific action to be invoked.  It is typically the
4131       responsibility of a "Calendar User Agent" (CUA) to deliver the
4132       alarm in the specified fashion.  An "ACTION" property value of
4133       AUDIO specifies an alarm that causes a sound to be played to alert
4134       the user; DISPLAY specifies an alarm that causes a text message to
4135       be displayed to the user; and EMAIL specifies an alarm that causes
4136       an electronic email message to be delivered to one or more email
4137       addresses.
4138
4139       In an AUDIO alarm, if the optional "ATTACH" property is included,
4140       it MUST specify an audio sound resource.  The intention is that
4141       the sound will be played as the alarm effect.  If an "ATTACH"
4142       property is specified that does not refer to a sound resource, or
4143
4144
4145
4146 Desruisseaux                Standards Track                    [Page 74]
4147 \f
4148 RFC 5545                       iCalendar                  September 2009
4149
4150
4151       if the specified sound resource cannot be rendered (because its
4152       format is unsupported, or because it cannot be retrieved), then
4153       the CUA or other entity responsible for playing the sound may
4154       choose a fallback action, such as playing a built-in default
4155       sound, or playing no sound at all.
4156
4157       In a DISPLAY alarm, the intended alarm effect is for the text
4158       value of the "DESCRIPTION" property to be displayed to the user.
4159
4160       In an EMAIL alarm, the intended alarm effect is for an email
4161       message to be composed and delivered to all the addresses
4162       specified by the "ATTENDEE" properties in the "VALARM" calendar
4163       component.  The "DESCRIPTION" property of the "VALARM" calendar
4164       component MUST be used as the body text of the message, and the
4165       "SUMMARY" property MUST be used as the subject text.  Any "ATTACH"
4166       properties in the "VALARM" calendar component SHOULD be sent as
4167       attachments to the message.
4168
4169          Note: Implementations should carefully consider whether they
4170          accept alarm components from untrusted sources, e.g., when
4171          importing calendar objects from external sources.  One
4172          reasonable policy is to always ignore alarm components that the
4173          calendar user has not set herself, or at least ask for
4174          confirmation in such a case.
4175
4176    Example:  The following example is for a "VALARM" calendar component
4177       that specifies an audio alarm that will sound at a precise time
4178       and repeat 4 more times at 15-minute intervals:
4179
4180        BEGIN:VALARM
4181        TRIGGER;VALUE=DATE-TIME:19970317T133000Z
4182        REPEAT:4
4183        DURATION:PT15M
4184        ACTION:AUDIO
4185        ATTACH;FMTTYPE=audio/basic:ftp://example.com/pub/
4186         sounds/bell-01.aud
4187        END:VALARM
4188
4189       The following example is for a "VALARM" calendar component that
4190       specifies a display alarm that will trigger 30 minutes before the
4191       scheduled start of the event or of the to-do it is associated with
4192       and will repeat 2 more times at 15-minute intervals:
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202 Desruisseaux                Standards Track                    [Page 75]
4203 \f
4204 RFC 5545                       iCalendar                  September 2009
4205
4206
4207        BEGIN:VALARM
4208        TRIGGER:-PT30M
4209        REPEAT:2
4210        DURATION:PT15M
4211        ACTION:DISPLAY
4212        DESCRIPTION:Breakfast meeting with executive\n
4213         team at 8:30 AM EST.
4214        END:VALARM
4215
4216       The following example is for a "VALARM" calendar component that
4217       specifies an email alarm that will trigger 2 days before the
4218       scheduled due DATE-TIME of a to-do with which it is associated.
4219       It does not repeat.  The email has a subject, body, and attachment
4220       link.
4221
4222        BEGIN:VALARM
4223        TRIGGER;RELATED=END:-P2D
4224        ACTION:EMAIL
4225        ATTENDEE:mailto:john_doe@example.com
4226        SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING ***
4227        DESCRIPTION:A draft agenda needs to be sent out to the attendees
4228          to the weekly managers meeting (MGR-LIST). Attached is a
4229          pointer the document template for the agenda file.
4230        ATTACH;FMTTYPE=application/msword:http://example.com/
4231         templates/agenda.doc
4232        END:VALARM
4233
4234 3.7.  Calendar Properties
4235
4236    The Calendar Properties are attributes that apply to the iCalendar
4237    object, as a whole.  These properties do not appear within a calendar
4238    component.  They SHOULD be specified after the "BEGIN:VCALENDAR"
4239    delimiter string and prior to any calendar component.
4240
4241 3.7.1.  Calendar Scale
4242
4243    Property Name:  CALSCALE
4244
4245    Purpose:  This property defines the calendar scale used for the
4246       calendar information specified in the iCalendar object.
4247
4248    Value Type:  TEXT
4249
4250    Property Parameters:  IANA and non-standard property parameters can
4251       be specified on this property.
4252
4253    Conformance:  This property can be specified once in an iCalendar
4254       object.  The default value is "GREGORIAN".
4255
4256
4257
4258 Desruisseaux                Standards Track                    [Page 76]
4259 \f
4260 RFC 5545                       iCalendar                  September 2009
4261
4262
4263    Description:  This memo is based on the Gregorian calendar scale.
4264       The Gregorian calendar scale is assumed if this property is not
4265       specified in the iCalendar object.  It is expected that other
4266       calendar scales will be defined in other specifications or by
4267       future versions of this memo.
4268
4269    Format Definition:  This property is defined by the following
4270       notation:
4271
4272        calscale   = "CALSCALE" calparam ":" calvalue CRLF
4273
4274        calparam   = *(";" other-param)
4275
4276        calvalue   = "GREGORIAN"
4277
4278    Example:  The following is an example of this property:
4279
4280        CALSCALE:GREGORIAN
4281
4282 3.7.2.  Method
4283
4284    Property Name:  METHOD
4285
4286    Purpose:  This property defines the iCalendar object method
4287       associated with the calendar object.
4288
4289    Value Type:  TEXT
4290
4291    Property Parameters:  IANA and non-standard property parameters can
4292       be specified on this property.
4293
4294    Conformance:  This property can be specified once in an iCalendar
4295       object.
4296
4297    Description:  When used in a MIME message entity, the value of this
4298       property MUST be the same as the Content-Type "method" parameter
4299       value.  If either the "METHOD" property or the Content-Type
4300       "method" parameter is specified, then the other MUST also be
4301       specified.
4302
4303       No methods are defined by this specification.  This is the subject
4304       of other specifications, such as the iCalendar Transport-
4305       independent Interoperability Protocol (iTIP) defined by [2446bis].
4306
4307       If this property is not present in the iCalendar object, then a
4308       scheduling transaction MUST NOT be assumed.  In such cases, the
4309       iCalendar object is merely being used to transport a snapshot of
4310
4311
4312
4313
4314 Desruisseaux                Standards Track                    [Page 77]
4315 \f
4316 RFC 5545                       iCalendar                  September 2009
4317
4318
4319       some calendar information; without the intention of conveying a
4320       scheduling semantic.
4321
4322    Format Definition:  This property is defined by the following
4323       notation:
4324
4325        method     = "METHOD" metparam ":" metvalue CRLF
4326
4327        metparam   = *(";" other-param)
4328
4329        metvalue   = iana-token
4330
4331    Example:  The following is a hypothetical example of this property to
4332       convey that the iCalendar object is a scheduling request:
4333
4334        METHOD:REQUEST
4335
4336 3.7.3.  Product Identifier
4337
4338    Property Name:  PRODID
4339
4340    Purpose:  This property specifies the identifier for the product that
4341       created the iCalendar object.
4342
4343    Value Type:  TEXT
4344
4345    Property Parameters:  IANA and non-standard property parameters can
4346       be specified on this property.
4347
4348    Conformance:  The property MUST be specified once in an iCalendar
4349       object.
4350
4351    Description:  The vendor of the implementation SHOULD assure that
4352       this is a globally unique identifier; using some technique such as
4353       an FPI value, as defined in [ISO.9070.1991].
4354
4355       This property SHOULD NOT be used to alter the interpretation of an
4356       iCalendar object beyond the semantics specified in this memo.  For
4357       example, it is not to be used to further the understanding of non-
4358       standard properties.
4359
4360    Format Definition:  This property is defined by the following
4361       notation:
4362
4363        prodid     = "PRODID" pidparam ":" pidvalue CRLF
4364
4365        pidparam   = *(";" other-param)
4366
4367
4368
4369
4370 Desruisseaux                Standards Track                    [Page 78]
4371 \f
4372 RFC 5545                       iCalendar                  September 2009
4373
4374
4375        pidvalue   = text
4376        ;Any text that describes the product and version
4377        ;and that is generally assured of being unique.
4378
4379    Example:  The following is an example of this property.  It does not
4380       imply that English is the default language.
4381
4382        PRODID:-//ABC Corporation//NONSGML My Product//EN
4383
4384 3.7.4.  Version
4385
4386    Property Name:  VERSION
4387
4388    Purpose:  This property specifies the identifier corresponding to the
4389       highest version number or the minimum and maximum range of the
4390       iCalendar specification that is required in order to interpret the
4391       iCalendar object.
4392
4393    Value Type:  TEXT
4394
4395    Property Parameters:  IANA and non-standard property parameters can
4396       be specified on this property.
4397
4398    Conformance:  This property MUST be specified once in an iCalendar
4399       object.
4400
4401    Description:  A value of "2.0" corresponds to this memo.
4402
4403    Format Definition:  This property is defined by the following
4404       notation:
4405
4406        version    = "VERSION" verparam ":" vervalue CRLF
4407
4408        verparam   = *(";" other-param)
4409
4410        vervalue   = "2.0"         ;This memo
4411                   / maxver
4412                   / (minver ";" maxver)
4413
4414        minver     = <A IANA-registered iCalendar version identifier>
4415        ;Minimum iCalendar version needed to parse the iCalendar object.
4416
4417        maxver     = <A IANA-registered iCalendar version identifier>
4418        ;Maximum iCalendar version needed to parse the iCalendar object.
4419
4420
4421
4422
4423
4424
4425
4426 Desruisseaux                Standards Track                    [Page 79]
4427 \f
4428 RFC 5545                       iCalendar                  September 2009
4429
4430
4431    Example:  The following is an example of this property:
4432
4433        VERSION:2.0
4434
4435 3.8.  Component Properties
4436
4437    The following properties can appear within calendar components, as
4438    specified by each component property definition.
4439
4440 3.8.1.  Descriptive Component Properties
4441
4442    The following properties specify descriptive information about
4443    calendar components.
4444
4445 3.8.1.1.  Attachment
4446
4447    Property Name:  ATTACH
4448
4449    Purpose:  This property provides the capability to associate a
4450       document object with a calendar component.
4451
4452    Value Type:  The default value type for this property is URI.  The
4453       value type can also be set to BINARY to indicate inline binary
4454       encoded content information.
4455
4456    Property Parameters:  IANA, non-standard, inline encoding, and value
4457       data type property parameters can be specified on this property.
4458       The format type parameter can be specified on this property and is
4459       RECOMMENDED for inline binary encoded content information.
4460
4461    Conformance:  This property can be specified multiple times in a
4462       "VEVENT", "VTODO", "VJOURNAL", or "VALARM" calendar component with
4463       the exception of AUDIO alarm that only allows this property to
4464       occur once.
4465
4466    Description:  This property is used in "VEVENT", "VTODO", and
4467       "VJOURNAL" calendar components to associate a resource (e.g.,
4468       document) with the calendar component.  This property is used in
4469       "VALARM" calendar components to specify an audio sound resource or
4470       an email message attachment.  This property can be specified as a
4471       URI pointing to a resource or as inline binary encoded content.
4472
4473       When this property is specified as inline binary encoded content,
4474       calendar applications MAY attempt to guess the media type of the
4475       resource via inspection of its content if and only if the media
4476       type of the resource is not given by the "FMTTYPE" parameter.  If
4477       the media type remains unknown, calendar applications SHOULD treat
4478       it as type "application/octet-stream".
4479
4480
4481
4482 Desruisseaux                Standards Track                    [Page 80]
4483 \f
4484 RFC 5545                       iCalendar                  September 2009
4485
4486
4487    Format Definition:  This property is defined by the following
4488       notation:
4489
4490        attach     = "ATTACH" attachparam ( ":" uri ) /
4491                     (
4492                       ";" "ENCODING" "=" "BASE64"
4493                       ";" "VALUE" "=" "BINARY"
4494                       ":" binary
4495                     )
4496                     CRLF
4497
4498        attachparam = *(
4499                    ;
4500                    ; The following is OPTIONAL for a URI value,
4501                    ; RECOMMENDED for a BINARY value,
4502                    ; and MUST NOT occur more than once.
4503                    ;
4504                    (";" fmttypeparam) /
4505                    ;
4506                    ; The following is OPTIONAL,
4507                    ; and MAY occur more than once.
4508                    ;
4509                    (";" other-param)
4510                    ;
4511                    )
4512
4513    Example:  The following are examples of this property:
4514
4515        ATTACH:CID:jsmith.part3.960817T083000.xyzMail@example.com
4516
4517        ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/
4518         reports/r-960812.ps
4519
4520 3.8.1.2.  Categories
4521
4522    Property Name:  CATEGORIES
4523
4524    Purpose:  This property defines the categories for a calendar
4525       component.
4526
4527    Value Type:  TEXT
4528
4529    Property Parameters:  IANA, non-standard, and language property
4530       parameters can be specified on this property.
4531
4532    Conformance:  The property can be specified within "VEVENT", "VTODO",
4533       or "VJOURNAL" calendar components.
4534
4535
4536
4537
4538 Desruisseaux                Standards Track                    [Page 81]
4539 \f
4540 RFC 5545                       iCalendar                  September 2009
4541
4542
4543    Description:  This property is used to specify categories or subtypes
4544       of the calendar component.  The categories are useful in searching
4545       for a calendar component of a particular type and category.
4546       Within the "VEVENT", "VTODO", or "VJOURNAL" calendar components,
4547       more than one category can be specified as a COMMA-separated list
4548       of categories.
4549
4550    Format Definition:  This property is defined by the following
4551       notation:
4552
4553        categories = "CATEGORIES" catparam ":" text *("," text)
4554                     CRLF
4555
4556        catparam   = *(
4557                   ;
4558                   ; The following is OPTIONAL,
4559                   ; but MUST NOT occur more than once.
4560                   ;
4561                   (";" languageparam ) /
4562                   ;
4563                   ; The following is OPTIONAL,
4564                   ; and MAY occur more than once.
4565                   ;
4566                   (";" other-param)
4567                   ;
4568                   )
4569
4570    Example:  The following are examples of this property:
4571
4572        CATEGORIES:APPOINTMENT,EDUCATION
4573
4574        CATEGORIES:MEETING
4575
4576 3.8.1.3.  Classification
4577
4578    Property Name:  CLASS
4579
4580    Purpose:  This property defines the access classification for a
4581       calendar component.
4582
4583    Value Type:  TEXT
4584
4585    Property Parameters:  IANA and non-standard property parameters can
4586       be specified on this property.
4587
4588    Conformance:  The property can be specified once in a "VEVENT",
4589       "VTODO", or "VJOURNAL" calendar components.
4590
4591
4592
4593
4594 Desruisseaux                Standards Track                    [Page 82]
4595 \f
4596 RFC 5545                       iCalendar                  September 2009
4597
4598
4599    Description:  An access classification is only one component of the
4600       general security system within a calendar application.  It
4601       provides a method of capturing the scope of the access the
4602       calendar owner intends for information within an individual
4603       calendar entry.  The access classification of an individual
4604       iCalendar component is useful when measured along with the other
4605       security components of a calendar system (e.g., calendar user
4606       authentication, authorization, access rights, access role, etc.).
4607       Hence, the semantics of the individual access classifications
4608       cannot be completely defined by this memo alone.  Additionally,
4609       due to the "blind" nature of most exchange processes using this
4610       memo, these access classifications cannot serve as an enforcement
4611       statement for a system receiving an iCalendar object.  Rather,
4612       they provide a method for capturing the intention of the calendar
4613       owner for the access to the calendar component.  If not specified
4614       in a component that allows this property, the default value is
4615       PUBLIC.  Applications MUST treat x-name and iana-token values they
4616       don't recognize the same way as they would the PRIVATE value.
4617
4618    Format Definition:  This property is defined by the following
4619       notation:
4620
4621        class      = "CLASS" classparam ":" classvalue CRLF
4622
4623        classparam = *(";" other-param)
4624
4625        classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token
4626                   / x-name
4627        ;Default is PUBLIC
4628
4629    Example:  The following is an example of this property:
4630
4631        CLASS:PUBLIC
4632
4633 3.8.1.4.  Comment
4634
4635    Property Name:  COMMENT
4636
4637    Purpose:  This property specifies non-processing information intended
4638       to provide a comment to the calendar user.
4639
4640    Value Type:  TEXT
4641
4642    Property Parameters:  IANA, non-standard, alternate text
4643       representation, and language property parameters can be specified
4644       on this property.
4645
4646
4647
4648
4649
4650 Desruisseaux                Standards Track                    [Page 83]
4651 \f
4652 RFC 5545                       iCalendar                  September 2009
4653
4654
4655    Conformance:  This property can be specified multiple times in
4656       "VEVENT", "VTODO", "VJOURNAL", and "VFREEBUSY" calendar components
4657       as well as in the "STANDARD" and "DAYLIGHT" sub-components.
4658
4659    Description:  This property is used to specify a comment to the
4660       calendar user.
4661
4662    Format Definition:  This property is defined by the following
4663       notation:
4664
4665        comment    = "COMMENT" commparam ":" text CRLF
4666
4667        commparam  = *(
4668                   ;
4669                   ; The following are OPTIONAL,
4670                   ; but MUST NOT occur more than once.
4671                   ;
4672                   (";" altrepparam) / (";" languageparam) /
4673                   ;
4674                   ; The following is OPTIONAL,
4675                   ; and MAY occur more than once.
4676                   ;
4677                   (";" other-param)
4678                   ;
4679                   )
4680
4681    Example:  The following is an example of this property:
4682
4683        COMMENT:The meeting really needs to include both ourselves
4684          and the customer. We can't hold this meeting without them.
4685          As a matter of fact\, the venue for the meeting ought to be at
4686          their site. - - John
4687
4688 3.8.1.5.  Description
4689
4690    Property Name:  DESCRIPTION
4691
4692    Purpose:  This property provides a more complete description of the
4693       calendar component than that provided by the "SUMMARY" property.
4694
4695    Value Type:  TEXT
4696
4697    Property Parameters:  IANA, non-standard, alternate text
4698       representation, and language property parameters can be specified
4699       on this property.
4700
4701
4702
4703
4704
4705
4706 Desruisseaux                Standards Track                    [Page 84]
4707 \f
4708 RFC 5545                       iCalendar                  September 2009
4709
4710
4711    Conformance:  The property can be specified in the "VEVENT", "VTODO",
4712       "VJOURNAL", or "VALARM" calendar components.  The property can be
4713       specified multiple times only within a "VJOURNAL" calendar
4714       component.
4715
4716    Description:  This property is used in the "VEVENT" and "VTODO" to
4717       capture lengthy textual descriptions associated with the activity.
4718
4719       This property is used in the "VJOURNAL" calendar component to
4720       capture one or more textual journal entries.
4721
4722       This property is used in the "VALARM" calendar component to
4723       capture the display text for a DISPLAY category of alarm, and to
4724       capture the body text for an EMAIL category of alarm.
4725
4726    Format Definition:  This property is defined by the following
4727       notation:
4728
4729        description = "DESCRIPTION" descparam ":" text CRLF
4730
4731        descparam   = *(
4732                    ;
4733                    ; The following are OPTIONAL,
4734                    ; but MUST NOT occur more than once.
4735                    ;
4736                    (";" altrepparam) / (";" languageparam) /
4737                    ;
4738                    ; The following is OPTIONAL,
4739                    ; and MAY occur more than once.
4740                    ;
4741                    (";" other-param)
4742                    ;
4743                    )
4744
4745    Example:  The following is an example of this property with formatted
4746       line breaks in the property value:
4747
4748        DESCRIPTION:Meeting to provide technical review for "Phoenix"
4749          design.\nHappy Face Conference Room. Phoenix design team
4750          MUST attend this meeting.\nRSVP to team leader.
4751
4752 3.8.1.6.  Geographic Position
4753
4754    Property Name:  GEO
4755
4756    Purpose:  This property specifies information related to the global
4757       position for the activity specified by a calendar component.
4758
4759
4760
4761
4762 Desruisseaux                Standards Track                    [Page 85]
4763 \f
4764 RFC 5545                       iCalendar                  September 2009
4765
4766
4767    Value Type:  FLOAT.  The value MUST be two SEMICOLON-separated FLOAT
4768       values.
4769
4770    Property Parameters:  IANA and non-standard property parameters can
4771       be specified on this property.
4772
4773    Conformance:  This property can be specified in "VEVENT" or "VTODO"
4774       calendar components.
4775
4776    Description:  This property value specifies latitude and longitude,
4777       in that order (i.e., "LAT LON" ordering).  The longitude
4778       represents the location east or west of the prime meridian as a
4779       positive or negative real number, respectively.  The longitude and
4780       latitude values MAY be specified up to six decimal places, which
4781       will allow for accuracy to within one meter of geographical
4782       position.  Receiving applications MUST accept values of this
4783       precision and MAY truncate values of greater precision.
4784
4785       Values for latitude and longitude shall be expressed as decimal
4786       fractions of degrees.  Whole degrees of latitude shall be
4787       represented by a two-digit decimal number ranging from 0 through
4788       90.  Whole degrees of longitude shall be represented by a decimal
4789       number ranging from 0 through 180.  When a decimal fraction of a
4790       degree is specified, it shall be separated from the whole number
4791       of degrees by a decimal point.
4792
4793       Latitudes north of the equator shall be specified by a plus sign
4794       (+), or by the absence of a minus sign (-), preceding the digits
4795       designating degrees.  Latitudes south of the Equator shall be
4796       designated by a minus sign (-) preceding the digits designating
4797       degrees.  A point on the Equator shall be assigned to the Northern
4798       Hemisphere.
4799
4800       Longitudes east of the prime meridian shall be specified by a plus
4801       sign (+), or by the absence of a minus sign (-), preceding the
4802       digits designating degrees.  Longitudes west of the meridian shall
4803       be designated by minus sign (-) preceding the digits designating
4804       degrees.  A point on the prime meridian shall be assigned to the
4805       Eastern Hemisphere.  A point on the 180th meridian shall be
4806       assigned to the Western Hemisphere.  One exception to this last
4807       convention is permitted.  For the special condition of describing
4808       a band of latitude around the earth, the East Bounding Coordinate
4809       data element shall be assigned the value +180 (180) degrees.
4810
4811       Any spatial address with a latitude of +90 (90) or -90 degrees
4812       will specify the position at the North or South Pole,
4813       respectively.  The component for longitude may have any legal
4814       value.
4815
4816
4817
4818 Desruisseaux                Standards Track                    [Page 86]
4819 \f
4820 RFC 5545                       iCalendar                  September 2009
4821
4822
4823       With the exception of the special condition described above, this
4824       form is specified in [ANSI INCITS 61-1986].
4825
4826       The simple formula for converting degrees-minutes-seconds into
4827       decimal degrees is:
4828
4829       decimal = degrees + minutes/60 + seconds/3600.
4830
4831    Format Definition:  This property is defined by the following
4832       notation:
4833
4834        geo        = "GEO" geoparam ":" geovalue CRLF
4835
4836        geoparam   = *(";" other-param)
4837
4838        geovalue   = float ";" float
4839        ;Latitude and Longitude components
4840
4841    Example:  The following is an example of this property:
4842
4843        GEO:37.386013;-122.082932
4844
4845 3.8.1.7.  Location
4846
4847    Property Name:  LOCATION
4848
4849    Purpose:  This property defines the intended venue for the activity
4850       defined by a calendar component.
4851
4852    Value Type:  TEXT
4853
4854    Property Parameters:  IANA, non-standard, alternate text
4855       representation, and language property parameters can be specified
4856       on this property.
4857
4858    Conformance:  This property can be specified in "VEVENT" or "VTODO"
4859       calendar component.
4860
4861    Description:  Specific venues such as conference or meeting rooms may
4862       be explicitly specified using this property.  An alternate
4863       representation may be specified that is a URI that points to
4864       directory information with more structured specification of the
4865       location.  For example, the alternate representation may specify
4866       either an LDAP URL [RFC4516] pointing to an LDAP server entry or a
4867       CID URL [RFC2392] pointing to a MIME body part containing a
4868       Virtual-Information Card (vCard) [RFC2426] for the location.
4869
4870
4871
4872
4873
4874 Desruisseaux                Standards Track                    [Page 87]
4875 \f
4876 RFC 5545                       iCalendar                  September 2009
4877
4878
4879    Format Definition:  This property is defined by the following
4880       notation:
4881
4882        location   = "LOCATION"  locparam ":" text CRLF
4883
4884        locparam   = *(
4885                   ;
4886                   ; The following are OPTIONAL,
4887                   ; but MUST NOT occur more than once.
4888                   ;
4889                   (";" altrepparam) / (";" languageparam) /
4890                   ;
4891                   ; The following is OPTIONAL,
4892                   ; and MAY occur more than once.
4893                   ;
4894                   (";" other-param)
4895                   ;
4896                   )
4897
4898    Example:  The following are some examples of this property:
4899
4900        LOCATION:Conference Room - F123\, Bldg. 002
4901
4902        LOCATION;ALTREP="http://xyzcorp.com/conf-rooms/f123.vcf":
4903         Conference Room - F123\, Bldg. 002
4904
4905 3.8.1.8.  Percent Complete
4906
4907    Property Name:  PERCENT-COMPLETE
4908
4909    Purpose:  This property is used by an assignee or delegatee of a
4910       to-do to convey the percent completion of a to-do to the
4911       "Organizer".
4912
4913    Value Type:  INTEGER
4914
4915    Property Parameters:  IANA and non-standard property parameters can
4916       be specified on this property.
4917
4918    Conformance:  This property can be specified once in a "VTODO"
4919       calendar component.
4920
4921    Description:  The property value is a positive integer between 0 and
4922       100.  A value of "0" indicates the to-do has not yet been started.
4923       A value of "100" indicates that the to-do has been completed.
4924       Integer values in between indicate the percent partially complete.
4925
4926
4927
4928
4929
4930 Desruisseaux                Standards Track                    [Page 88]
4931 \f
4932 RFC 5545                       iCalendar                  September 2009
4933
4934
4935       When a to-do is assigned to multiple individuals, the property
4936       value indicates the percent complete for that portion of the to-do
4937       assigned to the assignee or delegatee.  For example, if a to-do is
4938       assigned to both individuals "A" and "B".  A reply from "A" with a
4939       percent complete of "70" indicates that "A" has completed 70% of
4940       the to-do assigned to them.  A reply from "B" with a percent
4941       complete of "50" indicates "B" has completed 50% of the to-do
4942       assigned to them.
4943
4944    Format Definition:  This property is defined by the following
4945       notation:
4946
4947        percent = "PERCENT-COMPLETE" pctparam ":" integer CRLF
4948
4949        pctparam   = *(";" other-param)
4950
4951    Example:  The following is an example of this property to show 39%
4952       completion:
4953
4954        PERCENT-COMPLETE:39
4955
4956 3.8.1.9.  Priority
4957
4958    Property Name:  PRIORITY
4959
4960    Purpose:  This property defines the relative priority for a calendar
4961       component.
4962
4963    Value Type:  INTEGER
4964
4965    Property Parameters:  IANA and non-standard property parameters can
4966       be specified on this property.
4967
4968    Conformance:  This property can be specified in "VEVENT" and "VTODO"
4969       calendar components.
4970
4971    Description:  This priority is specified as an integer in the range 0
4972       to 9.  A value of 0 specifies an undefined priority.  A value of 1
4973       is the highest priority.  A value of 2 is the second highest
4974       priority.  Subsequent numbers specify a decreasing ordinal
4975       priority.  A value of 9 is the lowest priority.
4976
4977       A CUA with a three-level priority scheme of "HIGH", "MEDIUM", and
4978       "LOW" is mapped into this property such that a property value in
4979       the range of 1 to 4 specifies "HIGH" priority.  A value of 5 is
4980       the normal or "MEDIUM" priority.  A value in the range of 6 to 9
4981       is "LOW" priority.
4982
4983
4984
4985
4986 Desruisseaux                Standards Track                    [Page 89]
4987 \f
4988 RFC 5545                       iCalendar                  September 2009
4989
4990
4991       A CUA with a priority schema of "A1", "A2", "A3", "B1", "B2", ...,
4992       "C3" is mapped into this property such that a property value of 1
4993       specifies "A1", a property value of 2 specifies "A2", a property
4994       value of 3 specifies "A3", and so forth up to a property value of
4995       9 specifies "C3".
4996
4997       Other integer values are reserved for future use.
4998
4999       Within a "VEVENT" calendar component, this property specifies a
5000       priority for the event.  This property may be useful when more
5001       than one event is scheduled for a given time period.
5002
5003       Within a "VTODO" calendar component, this property specified a
5004       priority for the to-do.  This property is useful in prioritizing
5005       multiple action items for a given time period.
5006
5007    Format Definition:  This property is defined by the following
5008       notation:
5009
5010        priority   = "PRIORITY" prioparam ":" priovalue CRLF
5011        ;Default is zero (i.e., undefined).
5012
5013        prioparam  = *(";" other-param)
5014
5015        priovalue   = integer       ;Must be in the range [0..9]
5016           ; All other values are reserved for future use.
5017
5018    Example:  The following is an example of a property with the highest
5019       priority:
5020
5021        PRIORITY:1
5022
5023       The following is an example of a property with a next highest
5024       priority:
5025
5026        PRIORITY:2
5027
5028       The following is an example of a property with no priority.  This
5029       is equivalent to not specifying the "PRIORITY" property:
5030
5031        PRIORITY:0
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042 Desruisseaux                Standards Track                    [Page 90]
5043 \f
5044 RFC 5545                       iCalendar                  September 2009
5045
5046
5047 3.8.1.10.  Resources
5048
5049    Property Name:  RESOURCES
5050
5051    Purpose:  This property defines the equipment or resources
5052       anticipated for an activity specified by a calendar component.
5053
5054    Value Type:  TEXT
5055
5056    Property Parameters:  IANA, non-standard, alternate text
5057       representation, and language property parameters can be specified
5058       on this property.
5059
5060    Conformance:  This property can be specified once in "VEVENT" or
5061       "VTODO" calendar component.
5062
5063    Description:  The property value is an arbitrary text.  More than one
5064       resource can be specified as a COMMA-separated list of resources.
5065
5066    Format Definition:  This property is defined by the following
5067       notation:
5068
5069        resources  = "RESOURCES" resrcparam ":" text *("," text) CRLF
5070
5071        resrcparam = *(
5072                   ;
5073                   ; The following are OPTIONAL,
5074                   ; but MUST NOT occur more than once.
5075                   ;
5076                   (";" altrepparam) / (";" languageparam) /
5077                   ;
5078                   ; The following is OPTIONAL,
5079                   ; and MAY occur more than once.
5080                   ;
5081                   (";" other-param)
5082                   ;
5083                   )
5084
5085    Example:  The following is an example of this property:
5086
5087        RESOURCES:EASEL,PROJECTOR,VCR
5088
5089        RESOURCES;LANGUAGE=fr:Nettoyeur haute pression
5090
5091
5092
5093
5094
5095
5096
5097
5098 Desruisseaux                Standards Track                    [Page 91]
5099 \f
5100 RFC 5545                       iCalendar                  September 2009
5101
5102
5103 3.8.1.11.  Status
5104
5105    Property Name:  STATUS
5106
5107    Purpose:  This property defines the overall status or confirmation
5108       for the calendar component.
5109
5110    Value Type:  TEXT
5111
5112    Property Parameters:  IANA and non-standard property parameters can
5113       be specified on this property.
5114
5115    Conformance:  This property can be specified once in "VEVENT",
5116       "VTODO", or "VJOURNAL" calendar components.
5117
5118    Description:  In a group-scheduled calendar component, the property
5119       is used by the "Organizer" to provide a confirmation of the event
5120       to the "Attendees".  For example in a "VEVENT" calendar component,
5121       the "Organizer" can indicate that a meeting is tentative,
5122       confirmed, or cancelled.  In a "VTODO" calendar component, the
5123       "Organizer" can indicate that an action item needs action, is
5124       completed, is in process or being worked on, or has been
5125       cancelled.  In a "VJOURNAL" calendar component, the "Organizer"
5126       can indicate that a journal entry is draft, final, or has been
5127       cancelled or removed.
5128
5129    Format Definition:  This property is defined by the following
5130       notation:
5131
5132        status          = "STATUS" statparam ":" statvalue CRLF
5133
5134        statparam       = *(";" other-param)
5135
5136        statvalue       = (statvalue-event
5137                        /  statvalue-todo
5138                        /  statvalue-jour)
5139
5140        statvalue-event = "TENTATIVE"    ;Indicates event is tentative.
5141                        / "CONFIRMED"    ;Indicates event is definite.
5142                        / "CANCELLED"    ;Indicates event was cancelled.
5143        ;Status values for a "VEVENT"
5144
5145        statvalue-todo  = "NEEDS-ACTION" ;Indicates to-do needs action.
5146                        / "COMPLETED"    ;Indicates to-do completed.
5147                        / "IN-PROCESS"   ;Indicates to-do in process of.
5148                        / "CANCELLED"    ;Indicates to-do was cancelled.
5149        ;Status values for "VTODO".
5150
5151
5152
5153
5154 Desruisseaux                Standards Track                    [Page 92]
5155 \f
5156 RFC 5545                       iCalendar                  September 2009
5157
5158
5159        statvalue-jour  = "DRAFT"        ;Indicates journal is draft.
5160                        / "FINAL"        ;Indicates journal is final.
5161                        / "CANCELLED"    ;Indicates journal is removed.
5162       ;Status values for "VJOURNAL".
5163
5164    Example:  The following is an example of this property for a "VEVENT"
5165       calendar component:
5166
5167        STATUS:TENTATIVE
5168
5169       The following is an example of this property for a "VTODO"
5170       calendar component:
5171
5172        STATUS:NEEDS-ACTION
5173
5174       The following is an example of this property for a "VJOURNAL"
5175       calendar component:
5176
5177        STATUS:DRAFT
5178
5179 3.8.1.12.  Summary
5180
5181    Property Name:  SUMMARY
5182
5183    Purpose:  This property defines a short summary or subject for the
5184       calendar component.
5185
5186    Value Type:  TEXT
5187
5188    Property Parameters:  IANA, non-standard, alternate text
5189       representation, and language property parameters can be specified
5190       on this property.
5191
5192    Conformance:  The property can be specified in "VEVENT", "VTODO",
5193       "VJOURNAL", or "VALARM" calendar components.
5194
5195    Description:  This property is used in the "VEVENT", "VTODO", and
5196       "VJOURNAL" calendar components to capture a short, one-line
5197       summary about the activity or journal entry.
5198
5199       This property is used in the "VALARM" calendar component to
5200       capture the subject of an EMAIL category of alarm.
5201
5202    Format Definition:  This property is defined by the following
5203       notation:
5204
5205
5206
5207
5208
5209
5210 Desruisseaux                Standards Track                    [Page 93]
5211 \f
5212 RFC 5545                       iCalendar                  September 2009
5213
5214
5215        summary    = "SUMMARY" summparam ":" text CRLF
5216
5217        summparam  = *(
5218                   ;
5219                   ; The following are OPTIONAL,
5220                   ; but MUST NOT occur more than once.
5221                   ;
5222                   (";" altrepparam) / (";" languageparam) /
5223                   ;
5224                   ; The following is OPTIONAL,
5225                   ; and MAY occur more than once.
5226                   ;
5227                   (";" other-param)
5228                   ;
5229                   )
5230
5231    Example:  The following is an example of this property:
5232
5233        SUMMARY:Department Party
5234
5235 3.8.2.  Date and Time Component Properties
5236
5237    The following properties specify date and time related information in
5238    calendar components.
5239
5240 3.8.2.1.  Date-Time Completed
5241
5242    Property Name:  COMPLETED
5243
5244    Purpose:  This property defines the date and time that a to-do was
5245       actually completed.
5246
5247    Value Type:  DATE-TIME
5248
5249    Property Parameters:  IANA and non-standard property parameters can
5250       be specified on this property.
5251
5252    Conformance:  The property can be specified in a "VTODO" calendar
5253       component.  The value MUST be specified as a date with UTC time.
5254
5255    Description:  This property defines the date and time that a to-do
5256       was actually completed.
5257
5258    Format Definition:  This property is defined by the following
5259       notation:
5260
5261
5262
5263
5264
5265
5266 Desruisseaux                Standards Track                    [Page 94]
5267 \f
5268 RFC 5545                       iCalendar                  September 2009
5269
5270
5271        completed  = "COMPLETED" compparam ":" date-time CRLF
5272
5273        compparam  = *(";" other-param)
5274
5275    Example:  The following is an example of this property:
5276
5277     COMPLETED:19960401T150000Z
5278
5279 3.8.2.2.  Date-Time End
5280
5281    Property Name:  DTEND
5282
5283    Purpose:  This property specifies the date and time that a calendar
5284       component ends.
5285
5286    Value Type:  The default value type is DATE-TIME.  The value type can
5287       be set to a DATE value type.
5288
5289    Property Parameters:  IANA, non-standard, value data type, and time
5290       zone identifier property parameters can be specified on this
5291       property.
5292
5293    Conformance:  This property can be specified in "VEVENT" or
5294       "VFREEBUSY" calendar components.
5295
5296    Description:  Within the "VEVENT" calendar component, this property
5297       defines the date and time by which the event ends.  The value type
5298       of this property MUST be the same as the "DTSTART" property, and
5299       its value MUST be later in time than the value of the "DTSTART"
5300       property.  Furthermore, this property MUST be specified as a date
5301       with local time if and only if the "DTSTART" property is also
5302       specified as a date with local time.
5303
5304       Within the "VFREEBUSY" calendar component, this property defines
5305       the end date and time for the free or busy time information.  The
5306       time MUST be specified in the UTC time format.  The value MUST be
5307       later in time than the value of the "DTSTART" property.
5308
5309    Format Definition:  This property is defined by the following
5310       notation:
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322 Desruisseaux                Standards Track                    [Page 95]
5323 \f
5324 RFC 5545                       iCalendar                  September 2009
5325
5326
5327        dtend      = "DTEND" dtendparam ":" dtendval CRLF
5328
5329        dtendparam = *(
5330                   ;
5331                   ; The following are OPTIONAL,
5332                   ; but MUST NOT occur more than once.
5333                   ;
5334                   (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
5335                   (";" tzidparam) /
5336                   ;
5337                   ; The following is OPTIONAL,
5338                   ; and MAY occur more than once.
5339                   ;
5340                   (";" other-param)
5341                   ;
5342                   )
5343
5344        dtendval   = date-time / date
5345        ;Value MUST match value type
5346
5347    Example:  The following is an example of this property:
5348
5349        DTEND:19960401T150000Z
5350
5351        DTEND;VALUE=DATE:19980704
5352
5353 3.8.2.3.  Date-Time Due
5354
5355    Property Name:  DUE
5356
5357    Purpose:  This property defines the date and time that a to-do is
5358       expected to be completed.
5359
5360    Value Type:  The default value type is DATE-TIME.  The value type can
5361       be set to a DATE value type.
5362
5363    Property Parameters:  IANA, non-standard, value data type, and time
5364       zone identifier property parameters can be specified on this
5365       property.
5366
5367    Conformance:  The property can be specified once in a "VTODO"
5368       calendar component.
5369
5370    Description:  This property defines the date and time before which a
5371       to-do is expected to be completed.  For cases where this property
5372       is specified in a "VTODO" calendar component that also specifies a
5373       "DTSTART" property, the value type of this property MUST be the
5374       same as the "DTSTART" property, and the value of this property
5375
5376
5377
5378 Desruisseaux                Standards Track                    [Page 96]
5379 \f
5380 RFC 5545                       iCalendar                  September 2009
5381
5382
5383       MUST be later in time than the value of the "DTSTART" property.
5384       Furthermore, this property MUST be specified as a date with local
5385       time if and only if the "DTSTART" property is also specified as a
5386       date with local time.
5387
5388    Format Definition:  This property is defined by the following
5389       notation:
5390
5391        due        = "DUE" dueparam ":" dueval CRLF
5392
5393        dueparam   = *(
5394                   ;
5395                   ; The following are OPTIONAL,
5396                   ; but MUST NOT occur more than once.
5397                   ;
5398                   (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
5399                   (";" tzidparam) /
5400                   ;
5401                   ; The following is OPTIONAL,
5402                   ; and MAY occur more than once.
5403                   ;
5404                   (";" other-param)
5405                   ;
5406                   )
5407
5408        dueval     = date-time / date
5409        ;Value MUST match value type
5410
5411    Example:  The following is an example of this property:
5412
5413        DUE:19980430T000000Z
5414
5415 3.8.2.4.  Date-Time Start
5416
5417    Property Name:  DTSTART
5418
5419    Purpose:  This property specifies when the calendar component begins.
5420
5421    Value Type:  The default value type is DATE-TIME.  The time value
5422       MUST be one of the forms defined for the DATE-TIME value type.
5423       The value type can be set to a DATE value type.
5424
5425    Property Parameters:  IANA, non-standard, value data type, and time
5426       zone identifier property parameters can be specified on this
5427       property.
5428
5429    Conformance:  This property can be specified once in the "VEVENT",
5430       "VTODO", or "VFREEBUSY" calendar components as well as in the
5431
5432
5433
5434 Desruisseaux                Standards Track                    [Page 97]
5435 \f
5436 RFC 5545                       iCalendar                  September 2009
5437
5438
5439       "STANDARD" and "DAYLIGHT" sub-components.  This property is
5440       REQUIRED in all types of recurring calendar components that
5441       specify the "RRULE" property.  This property is also REQUIRED in
5442       "VEVENT" calendar components contained in iCalendar objects that
5443       don't specify the "METHOD" property.
5444
5445    Description:  Within the "VEVENT" calendar component, this property
5446       defines the start date and time for the event.
5447
5448       Within the "VFREEBUSY" calendar component, this property defines
5449       the start date and time for the free or busy time information.
5450       The time MUST be specified in UTC time.
5451
5452       Within the "STANDARD" and "DAYLIGHT" sub-components, this property
5453       defines the effective start date and time for a time zone
5454       specification.  This property is REQUIRED within each "STANDARD"
5455       and "DAYLIGHT" sub-components included in "VTIMEZONE" calendar
5456       components and MUST be specified as a date with local time without
5457       the "TZID" property parameter.
5458
5459    Format Definition:  This property is defined by the following
5460       notation:
5461
5462        dtstart    = "DTSTART" dtstparam ":" dtstval CRLF
5463
5464        dtstparam  = *(
5465                   ;
5466                   ; The following are OPTIONAL,
5467                   ; but MUST NOT occur more than once.
5468                   ;
5469                   (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
5470                   (";" tzidparam) /
5471                   ;
5472                   ; The following is OPTIONAL,
5473                   ; and MAY occur more than once.
5474                   ;
5475                   (";" other-param)
5476                   ;
5477                   )
5478
5479        dtstval    = date-time / date
5480        ;Value MUST match value type
5481
5482    Example:  The following is an example of this property:
5483
5484        DTSTART:19980118T073000Z
5485
5486
5487
5488
5489
5490 Desruisseaux                Standards Track                    [Page 98]
5491 \f
5492 RFC 5545                       iCalendar                  September 2009
5493
5494
5495 3.8.2.5.  Duration
5496
5497    Property Name:  DURATION
5498
5499    Purpose:  This property specifies a positive duration of time.
5500
5501    Value Type:  DURATION
5502
5503    Property Parameters:  IANA and non-standard property parameters can
5504       be specified on this property.
5505
5506    Conformance:  This property can be specified in "VEVENT", "VTODO", or
5507       "VALARM" calendar components.
5508
5509    Description:  In a "VEVENT" calendar component the property may be
5510       used to specify a duration of the event, instead of an explicit
5511       end DATE-TIME.  In a "VTODO" calendar component the property may
5512       be used to specify a duration for the to-do, instead of an
5513       explicit due DATE-TIME.  In a "VALARM" calendar component the
5514       property may be used to specify the delay period prior to
5515       repeating an alarm.  When the "DURATION" property relates to a
5516       "DTSTART" property that is specified as a DATE value, then the
5517       "DURATION" property MUST be specified as a "dur-day" or "dur-week"
5518       value.
5519
5520    Format Definition:  This property is defined by the following
5521       notation:
5522
5523        duration   = "DURATION" durparam ":" dur-value CRLF
5524                     ;consisting of a positive duration of time.
5525
5526        durparam   = *(";" other-param)
5527
5528    Example:  The following is an example of this property that specifies
5529       an interval of time of one hour and zero minutes and zero seconds:
5530
5531        DURATION:PT1H0M0S
5532
5533       The following is an example of this property that specifies an
5534       interval of time of 15 minutes.
5535
5536        DURATION:PT15M
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546 Desruisseaux                Standards Track                    [Page 99]
5547 \f
5548 RFC 5545                       iCalendar                  September 2009
5549
5550
5551 3.8.2.6.  Free/Busy Time
5552
5553    Property Name:  FREEBUSY
5554
5555    Purpose:  This property defines one or more free or busy time
5556       intervals.
5557
5558    Value Type:  PERIOD
5559
5560    Property Parameters:  IANA, non-standard, and free/busy time type
5561       property parameters can be specified on this property.
5562
5563    Conformance:  The property can be specified in a "VFREEBUSY" calendar
5564       component.
5565
5566    Description:  These time periods can be specified as either a start
5567       and end DATE-TIME or a start DATE-TIME and DURATION.  The date and
5568       time MUST be a UTC time format.
5569
5570       "FREEBUSY" properties within the "VFREEBUSY" calendar component
5571       SHOULD be sorted in ascending order, based on start time and then
5572       end time, with the earliest periods first.
5573
5574       The "FREEBUSY" property can specify more than one value, separated
5575       by the COMMA character.  In such cases, the "FREEBUSY" property
5576       values MUST all be of the same "FBTYPE" property parameter type
5577       (e.g., all values of a particular "FBTYPE" listed together in a
5578       single property).
5579
5580    Format Definition:  This property is defined by the following
5581       notation:
5582
5583        freebusy   = "FREEBUSY" fbparam ":" fbvalue CRLF
5584
5585        fbparam    = *(
5586                   ;
5587                   ; The following is OPTIONAL,
5588                   ; but MUST NOT occur more than once.
5589                   ;
5590                   (";" fbtypeparam) /
5591                   ;
5592                   ; The following is OPTIONAL,
5593                   ; and MAY occur more than once.
5594                   ;
5595                   (";" other-param)
5596                   ;
5597                   )
5598
5599
5600
5601
5602 Desruisseaux                Standards Track                   [Page 100]
5603 \f
5604 RFC 5545                       iCalendar                  September 2009
5605
5606
5607        fbvalue    = period *("," period)
5608        ;Time value MUST be in the UTC time format.
5609
5610    Example:  The following are some examples of this property:
5611
5612        FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:19970308T160000Z/PT8H30M
5613
5614        FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
5615
5616        FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
5617         ,19970308T230000Z/19970309T000000Z
5618
5619 3.8.2.7.  Time Transparency
5620
5621    Property Name:  TRANSP
5622
5623    Purpose:  This property defines whether or not an event is
5624       transparent to busy time searches.
5625
5626    Value Type:  TEXT
5627
5628    Property Parameters:  IANA and non-standard property parameters can
5629       be specified on this property.
5630
5631    Conformance:  This property can be specified once in a "VEVENT"
5632       calendar component.
5633
5634    Description:  Time Transparency is the characteristic of an event
5635       that determines whether it appears to consume time on a calendar.
5636       Events that consume actual time for the individual or resource
5637       associated with the calendar SHOULD be recorded as OPAQUE,
5638       allowing them to be detected by free/busy time searches.  Other
5639       events, which do not take up the individual's (or resource's) time
5640       SHOULD be recorded as TRANSPARENT, making them invisible to free/
5641       busy time searches.
5642
5643    Format Definition:  This property is defined by the following
5644       notation:
5645
5646        transp     = "TRANSP" transparam ":" transvalue CRLF
5647
5648        transparam = *(";" other-param)
5649
5650        transvalue = "OPAQUE"
5651                    ;Blocks or opaque on busy time searches.
5652                    / "TRANSPARENT"
5653                    ;Transparent on busy time searches.
5654        ;Default value is OPAQUE
5655
5656
5657
5658 Desruisseaux                Standards Track                   [Page 101]
5659 \f
5660 RFC 5545                       iCalendar                  September 2009
5661
5662
5663    Example:  The following is an example of this property for an event
5664       that is transparent or does not block on free/busy time searches:
5665
5666        TRANSP:TRANSPARENT
5667
5668       The following is an example of this property for an event that is
5669       opaque or blocks on free/busy time searches:
5670
5671        TRANSP:OPAQUE
5672
5673 3.8.3.  Time Zone Component Properties
5674
5675    The following properties specify time zone information in calendar
5676    components.
5677
5678 3.8.3.1.  Time Zone Identifier
5679
5680    Property Name:  TZID
5681
5682    Purpose:  This property specifies the text value that uniquely
5683       identifies the "VTIMEZONE" calendar component in the scope of an
5684       iCalendar object.
5685
5686    Value Type:  TEXT
5687
5688    Property Parameters:  IANA and non-standard property parameters can
5689       be specified on this property.
5690
5691    Conformance:  This property MUST be specified in a "VTIMEZONE"
5692       calendar component.
5693
5694    Description:  This is the label by which a time zone calendar
5695       component is referenced by any iCalendar properties whose value
5696       type is either DATE-TIME or TIME and not intended to specify a UTC
5697       or a "floating" time.  The presence of the SOLIDUS character as a
5698       prefix, indicates that this "TZID" represents an unique ID in a
5699       globally defined time zone registry (when such registry is
5700       defined).
5701
5702          Note: This document does not define a naming convention for
5703          time zone identifiers.  Implementers may want to use the naming
5704          conventions defined in existing time zone specifications such
5705          as the public-domain TZ database [TZDB].  The specification of
5706          globally unique time zone identifiers is not addressed by this
5707          document and is left for future study.
5708
5709
5710
5711
5712
5713
5714 Desruisseaux                Standards Track                   [Page 102]
5715 \f
5716 RFC 5545                       iCalendar                  September 2009
5717
5718
5719    Format Definition:  This property is defined by the following
5720       notation:
5721
5722        tzid       = "TZID" tzidpropparam ":" [tzidprefix] text CRLF
5723
5724        tzidpropparam      = *(";" other-param)
5725
5726        ;tzidprefix        = "/"
5727        ; Defined previously. Just listed here for reader convenience.
5728
5729    Example:  The following are examples of non-globally unique time zone
5730       identifiers:
5731
5732        TZID:America/New_York
5733
5734        TZID:America/Los_Angeles
5735
5736       The following is an example of a fictitious globally unique time
5737       zone identifier:
5738
5739        TZID:/example.org/America/New_York
5740
5741 3.8.3.2.  Time Zone Name
5742
5743    Property Name:  TZNAME
5744
5745    Purpose:  This property specifies the customary designation for a
5746       time zone description.
5747
5748    Value Type:  TEXT
5749
5750    Property Parameters:  IANA, non-standard, and language property
5751       parameters can be specified on this property.
5752
5753    Conformance:  This property can be specified in "STANDARD" and
5754       "DAYLIGHT" sub-components.
5755
5756    Description:  This property specifies a customary name that can be
5757       used when displaying dates that occur during the observance
5758       defined by the time zone sub-component.
5759
5760    Format Definition:  This property is defined by the following
5761       notation:
5762
5763
5764
5765
5766
5767
5768
5769
5770 Desruisseaux                Standards Track                   [Page 103]
5771 \f
5772 RFC 5545                       iCalendar                  September 2009
5773
5774
5775        tzname     = "TZNAME" tznparam ":" text CRLF
5776
5777        tznparam   = *(
5778                   ;
5779                   ; The following is OPTIONAL,
5780                   ; but MUST NOT occur more than once.
5781                   ;
5782                   (";" languageparam) /
5783                   ;
5784                   ; The following is OPTIONAL,
5785                   ; and MAY occur more than once.
5786                   ;
5787                   (";" other-param)
5788                   ;
5789                   )
5790
5791    Example:  The following are examples of this property:
5792
5793        TZNAME:EST
5794
5795        TZNAME;LANGUAGE=fr-CA:HNE
5796
5797 3.8.3.3.  Time Zone Offset From
5798
5799    Property Name:  TZOFFSETFROM
5800
5801    Purpose:  This property specifies the offset that is in use prior to
5802       this time zone observance.
5803
5804    Value Type:  UTC-OFFSET
5805
5806    Property Parameters:  IANA and non-standard property parameters can
5807       be specified on this property.
5808
5809    Conformance:  This property MUST be specified in "STANDARD" and
5810       "DAYLIGHT" sub-components.
5811
5812    Description:  This property specifies the offset that is in use prior
5813       to this time observance.  It is used to calculate the absolute
5814       time at which the transition to a given observance takes place.
5815       This property MUST only be specified in a "VTIMEZONE" calendar
5816       component.  A "VTIMEZONE" calendar component MUST include this
5817       property.  The property value is a signed numeric indicating the
5818       number of hours and possibly minutes from UTC.  Positive numbers
5819       represent time zones east of the prime meridian, or ahead of UTC.
5820       Negative numbers represent time zones west of the prime meridian,
5821       or behind UTC.
5822
5823
5824
5825
5826 Desruisseaux                Standards Track                   [Page 104]
5827 \f
5828 RFC 5545                       iCalendar                  September 2009
5829
5830
5831    Format Definition:  This property is defined by the following
5832       notation:
5833
5834        tzoffsetfrom       = "TZOFFSETFROM" frmparam ":" utc-offset
5835                             CRLF
5836
5837        frmparam   = *(";" other-param)
5838
5839    Example:  The following are examples of this property:
5840
5841        TZOFFSETFROM:-0500
5842
5843        TZOFFSETFROM:+1345
5844
5845 3.8.3.4.  Time Zone Offset To
5846
5847    Property Name:  TZOFFSETTO
5848
5849    Purpose:  This property specifies the offset that is in use in this
5850       time zone observance.
5851
5852    Value Type:  UTC-OFFSET
5853
5854    Property Parameters:  IANA and non-standard property parameters can
5855       be specified on this property.
5856
5857    Conformance:  This property MUST be specified in "STANDARD" and
5858       "DAYLIGHT" sub-components.
5859
5860    Description:  This property specifies the offset that is in use in
5861       this time zone observance.  It is used to calculate the absolute
5862       time for the new observance.  The property value is a signed
5863       numeric indicating the number of hours and possibly minutes from
5864       UTC.  Positive numbers represent time zones east of the prime
5865       meridian, or ahead of UTC.  Negative numbers represent time zones
5866       west of the prime meridian, or behind UTC.
5867
5868    Format Definition:  This property is defined by the following
5869       notation:
5870
5871        tzoffsetto = "TZOFFSETTO" toparam ":" utc-offset CRLF
5872
5873        toparam    = *(";" other-param)
5874
5875
5876
5877
5878
5879
5880
5881
5882 Desruisseaux                Standards Track                   [Page 105]
5883 \f
5884 RFC 5545                       iCalendar                  September 2009
5885
5886
5887    Example:  The following are examples of this property:
5888
5889        TZOFFSETTO:-0400
5890
5891        TZOFFSETTO:+1245
5892
5893 3.8.3.5.  Time Zone URL
5894
5895    Property Name:  TZURL
5896
5897    Purpose:  This property provides a means for a "VTIMEZONE" component
5898       to point to a network location that can be used to retrieve an up-
5899       to-date version of itself.
5900
5901    Value Type:  URI
5902
5903    Property Parameters:  IANA and non-standard property parameters can
5904       be specified on this property.
5905
5906    Conformance:  This property can be specified in a "VTIMEZONE"
5907       calendar component.
5908
5909    Description:  This property provides a means for a "VTIMEZONE"
5910       component to point to a network location that can be used to
5911       retrieve an up-to-date version of itself.  This provides a hook to
5912       handle changes government bodies impose upon time zone
5913       definitions.  Retrieval of this resource results in an iCalendar
5914       object containing a single "VTIMEZONE" component and a "METHOD"
5915       property set to PUBLISH.
5916
5917    Format Definition:  This property is defined by the following
5918       notation:
5919
5920        tzurl      = "TZURL" tzurlparam ":" uri CRLF
5921
5922        tzurlparam = *(";" other-param)
5923
5924    Example:  The following is an example of this property:
5925
5926     TZURL:http://timezones.example.org/tz/America-Los_Angeles.ics
5927
5928 3.8.4.  Relationship Component Properties
5929
5930    The following properties specify relationship information in calendar
5931    components.
5932
5933
5934
5935
5936
5937
5938 Desruisseaux                Standards Track                   [Page 106]
5939 \f
5940 RFC 5545                       iCalendar                  September 2009
5941
5942
5943 3.8.4.1.  Attendee
5944
5945    Property Name:  ATTENDEE
5946
5947    Purpose:  This property defines an "Attendee" within a calendar
5948       component.
5949
5950    Value Type:  CAL-ADDRESS
5951
5952    Property Parameters:  IANA, non-standard, language, calendar user
5953       type, group or list membership, participation role, participation
5954       status, RSVP expectation, delegatee, delegator, sent by, common
5955       name, or directory entry reference property parameters can be
5956       specified on this property.
5957
5958    Conformance:  This property MUST be specified in an iCalendar object
5959       that specifies a group-scheduled calendar entity.  This property
5960       MUST NOT be specified in an iCalendar object when publishing the
5961       calendar information (e.g., NOT in an iCalendar object that
5962       specifies the publication of a calendar user's busy time, event,
5963       to-do, or journal).  This property is not specified in an
5964       iCalendar object that specifies only a time zone definition or
5965       that defines calendar components that are not group-scheduled
5966       components, but are components only on a single user's calendar.
5967
5968    Description:  This property MUST only be specified within calendar
5969       components to specify participants, non-participants, and the
5970       chair of a group-scheduled calendar entity.  The property is
5971       specified within an "EMAIL" category of the "VALARM" calendar
5972       component to specify an email address that is to receive the email
5973       type of iCalendar alarm.
5974
5975       The property parameter "CN" is for the common or displayable name
5976       associated with the calendar address; "ROLE", for the intended
5977       role that the attendee will have in the calendar component;
5978       "PARTSTAT", for the status of the attendee's participation;
5979       "RSVP", for indicating whether the favor of a reply is requested;
5980       "CUTYPE", to indicate the type of calendar user; "MEMBER", to
5981       indicate the groups that the attendee belongs to; "DELEGATED-TO",
5982       to indicate the calendar users that the original request was
5983       delegated to; and "DELEGATED-FROM", to indicate whom the request
5984       was delegated from; "SENT-BY", to indicate whom is acting on
5985       behalf of the "ATTENDEE"; and "DIR", to indicate the URI that
5986       points to the directory information corresponding to the attendee.
5987       These property parameters can be specified on an "ATTENDEE"
5988       property in either a "VEVENT", "VTODO", or "VJOURNAL" calendar
5989       component.  They MUST NOT be specified in an "ATTENDEE" property
5990       in a "VFREEBUSY" or "VALARM" calendar component.  If the
5991
5992
5993
5994 Desruisseaux                Standards Track                   [Page 107]
5995 \f
5996 RFC 5545                       iCalendar                  September 2009
5997
5998
5999       "LANGUAGE" property parameter is specified, the identified
6000       language applies to the "CN" parameter.
6001
6002       A recipient delegated a request MUST inherit the "RSVP" and "ROLE"
6003       values from the attendee that delegated the request to them.
6004
6005       Multiple attendees can be specified by including multiple
6006       "ATTENDEE" properties within the calendar component.
6007
6008    Format Definition:  This property is defined by the following
6009       notation:
6010
6011        attendee   = "ATTENDEE" attparam ":" cal-address CRLF
6012
6013        attparam   = *(
6014                   ;
6015                   ; The following are OPTIONAL,
6016                   ; but MUST NOT occur more than once.
6017                   ;
6018                   (";" cutypeparam) / (";" memberparam) /
6019                   (";" roleparam) / (";" partstatparam) /
6020                   (";" rsvpparam) / (";" deltoparam) /
6021                   (";" delfromparam) / (";" sentbyparam) /
6022                   (";" cnparam) / (";" dirparam) /
6023                   (";" languageparam) /
6024                   ;
6025                   ; The following is OPTIONAL,
6026                   ; and MAY occur more than once.
6027                   ;
6028                   (";" other-param)
6029                   ;
6030                   )
6031
6032    Example:  The following are examples of this property's use for a
6033       to-do:
6034
6035        ATTENDEE;MEMBER="mailto:DEV-GROUP@example.com":
6036         mailto:joecool@example.com
6037        ATTENDEE;DELEGATED-FROM="mailto:immud@example.com":
6038         mailto:ildoit@example.com
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050 Desruisseaux                Standards Track                   [Page 108]
6051 \f
6052 RFC 5545                       iCalendar                  September 2009
6053
6054
6055       The following is an example of this property used for specifying
6056       multiple attendees to an event:
6057
6058        ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CN=Henry
6059         Cabot:mailto:hcabot@example.com
6060        ATTENDEE;ROLE=REQ-PARTICIPANT;DELEGATED-FROM="mailto:bob@
6061         example.com";PARTSTAT=ACCEPTED;CN=Jane Doe:mailto:jdoe@
6062         example.com
6063
6064       The following is an example of this property with a URI to the
6065       directory information associated with the attendee:
6066
6067        ATTENDEE;CN=John Smith;DIR="ldap://example.com:6666/o=ABC%
6068         20Industries,c=US???(cn=Jim%20Dolittle)":mailto:jimdo@
6069         example.com
6070
6071       The following is an example of this property with "delegatee" and
6072       "delegator" information for an event:
6073
6074        ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;DELEGATED-FROM=
6075         "mailto:iamboss@example.com";CN=Henry Cabot:mailto:hcabot@
6076         example.com
6077        ATTENDEE;ROLE=NON-PARTICIPANT;PARTSTAT=DELEGATED;DELEGATED-TO=
6078         "mailto:hcabot@example.com";CN=The Big Cheese:mailto:iamboss
6079         @example.com
6080        ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Jane Doe
6081         :mailto:jdoe@example.com
6082
6083    Example:  The following is an example of this property's use when
6084       another calendar user is acting on behalf of the "Attendee":
6085
6086        ATTENDEE;SENT-BY=mailto:jan_doe@example.com;CN=John Smith:
6087         mailto:jsmith@example.com
6088
6089 3.8.4.2.  Contact
6090
6091    Property Name:  CONTACT
6092
6093    Purpose:  This property is used to represent contact information or
6094       alternately a reference to contact information associated with the
6095       calendar component.
6096
6097    Value Type:  TEXT
6098
6099    Property Parameters:  IANA, non-standard, alternate text
6100       representation, and language property parameters can be specified
6101       on this property.
6102
6103
6104
6105
6106 Desruisseaux                Standards Track                   [Page 109]
6107 \f
6108 RFC 5545                       iCalendar                  September 2009
6109
6110
6111    Conformance:  This property can be specified in a "VEVENT", "VTODO",
6112       "VJOURNAL", or "VFREEBUSY" calendar component.
6113
6114    Description:  The property value consists of textual contact
6115       information.  An alternative representation for the property value
6116       can also be specified that refers to a URI pointing to an
6117       alternate form, such as a vCard [RFC2426], for the contact
6118       information.
6119
6120    Format Definition:  This property is defined by the following
6121       notation:
6122
6123        contact    = "CONTACT" contparam ":" text CRLF
6124
6125        contparam  = *(
6126                   ;
6127                   ; The following are OPTIONAL,
6128                   ; but MUST NOT occur more than once.
6129                   ;
6130                   (";" altrepparam) / (";" languageparam) /
6131                   ;
6132                   ; The following is OPTIONAL,
6133                   ; and MAY occur more than once.
6134                   ;
6135                   (";" other-param)
6136                   ;
6137                   )
6138
6139    Example:  The following is an example of this property referencing
6140       textual contact information:
6141
6142        CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234
6143
6144       The following is an example of this property with an alternate
6145       representation of an LDAP URI to a directory entry containing the
6146       contact information:
6147
6148        CONTACT;ALTREP="ldap://example.com:6666/o=ABC%20Industries\,
6149         c=US???(cn=Jim%20Dolittle)":Jim Dolittle\, ABC Industries\,
6150         +1-919-555-1234
6151
6152       The following is an example of this property with an alternate
6153       representation of a MIME body part containing the contact
6154       information, such as a vCard [RFC2426] embedded in a text/
6155       directory media type [RFC2425]:
6156
6157        CONTACT;ALTREP="CID:part3.msg970930T083000SILVER@example.com":
6158         Jim Dolittle\, ABC Industries\, +1-919-555-1234
6159
6160
6161
6162 Desruisseaux                Standards Track                   [Page 110]
6163 \f
6164 RFC 5545                       iCalendar                  September 2009
6165
6166
6167       The following is an example of this property referencing a network
6168       resource, such as a vCard [RFC2426] object containing the contact
6169       information:
6170
6171        CONTACT;ALTREP="http://example.com/pdi/jdoe.vcf":Jim
6172          Dolittle\, ABC Industries\, +1-919-555-1234
6173
6174 3.8.4.3.  Organizer
6175
6176    Property Name:  ORGANIZER
6177
6178    Purpose:  This property defines the organizer for a calendar
6179       component.
6180
6181    Value Type:  CAL-ADDRESS
6182
6183    Property Parameters:  IANA, non-standard, language, common name,
6184       directory entry reference, and sent-by property parameters can be
6185       specified on this property.
6186
6187    Conformance:  This property MUST be specified in an iCalendar object
6188       that specifies a group-scheduled calendar entity.  This property
6189       MUST be specified in an iCalendar object that specifies the
6190       publication of a calendar user's busy time.  This property MUST
6191       NOT be specified in an iCalendar object that specifies only a time
6192       zone definition or that defines calendar components that are not
6193       group-scheduled components, but are components only on a single
6194       user's calendar.
6195
6196    Description:  This property is specified within the "VEVENT",
6197       "VTODO", and "VJOURNAL" calendar components to specify the
6198       organizer of a group-scheduled calendar entity.  The property is
6199       specified within the "VFREEBUSY" calendar component to specify the
6200       calendar user requesting the free or busy time.  When publishing a
6201       "VFREEBUSY" calendar component, the property is used to specify
6202       the calendar that the published busy time came from.
6203
6204       The property has the property parameters "CN", for specifying the
6205       common or display name associated with the "Organizer", "DIR", for
6206       specifying a pointer to the directory information associated with
6207       the "Organizer", "SENT-BY", for specifying another calendar user
6208       that is acting on behalf of the "Organizer".  The non-standard
6209       parameters may also be specified on this property.  If the
6210       "LANGUAGE" property parameter is specified, the identified
6211       language applies to the "CN" parameter value.
6212
6213
6214
6215
6216
6217
6218 Desruisseaux                Standards Track                   [Page 111]
6219 \f
6220 RFC 5545                       iCalendar                  September 2009
6221
6222
6223    Format Definition:  This property is defined by the following
6224       notation:
6225
6226        organizer  = "ORGANIZER" orgparam ":"
6227                     cal-address CRLF
6228
6229        orgparam   = *(
6230                   ;
6231                   ; The following are OPTIONAL,
6232                   ; but MUST NOT occur more than once.
6233                   ;
6234                   (";" cnparam) / (";" dirparam) / (";" sentbyparam) /
6235                   (";" languageparam) /
6236                   ;
6237                   ; The following is OPTIONAL,
6238                   ; and MAY occur more than once.
6239                   ;
6240                   (";" other-param)
6241                   ;
6242                   )
6243
6244    Example:  The following is an example of this property:
6245
6246        ORGANIZER;CN=John Smith:mailto:jsmith@example.com
6247
6248       The following is an example of this property with a pointer to the
6249       directory information associated with the organizer:
6250
6251        ORGANIZER;CN=JohnSmith;DIR="ldap://example.com:6666/o=DC%20Ass
6252         ociates,c=US???(cn=John%20Smith)":mailto:jsmith@example.com
6253
6254       The following is an example of this property used by another
6255       calendar user who is acting on behalf of the organizer, with
6256       responses intended to be sent back to the organizer, not the other
6257       calendar user:
6258
6259        ORGANIZER;SENT-BY="mailto:jane_doe@example.com":
6260         mailto:jsmith@example.com
6261
6262 3.8.4.4.  Recurrence ID
6263
6264    Property Name:  RECURRENCE-ID
6265
6266    Purpose:  This property is used in conjunction with the "UID" and
6267       "SEQUENCE" properties to identify a specific instance of a
6268       recurring "VEVENT", "VTODO", or "VJOURNAL" calendar component.
6269       The property value is the original value of the "DTSTART" property
6270       of the recurrence instance.
6271
6272
6273
6274 Desruisseaux                Standards Track                   [Page 112]
6275 \f
6276 RFC 5545                       iCalendar                  September 2009
6277
6278
6279    Value Type:  The default value type is DATE-TIME.  The value type can
6280       be set to a DATE value type.  This property MUST have the same
6281       value type as the "DTSTART" property contained within the
6282       recurring component.  Furthermore, this property MUST be specified
6283       as a date with local time if and only if the "DTSTART" property
6284       contained within the recurring component is specified as a date
6285       with local time.
6286
6287    Property Parameters:  IANA, non-standard, value data type, time zone
6288       identifier, and recurrence identifier range parameters can be
6289       specified on this property.
6290
6291    Conformance:  This property can be specified in an iCalendar object
6292       containing a recurring calendar component.
6293
6294    Description:  The full range of calendar components specified by a
6295       recurrence set is referenced by referring to just the "UID"
6296       property value corresponding to the calendar component.  The
6297       "RECURRENCE-ID" property allows the reference to an individual
6298       instance within the recurrence set.
6299
6300       If the value of the "DTSTART" property is a DATE type value, then
6301       the value MUST be the calendar date for the recurrence instance.
6302
6303       The DATE-TIME value is set to the time when the original
6304       recurrence instance would occur; meaning that if the intent is to
6305       change a Friday meeting to Thursday, the DATE-TIME is still set to
6306       the original Friday meeting.
6307
6308       The "RECURRENCE-ID" property is used in conjunction with the "UID"
6309       and "SEQUENCE" properties to identify a particular instance of a
6310       recurring event, to-do, or journal.  For a given pair of "UID" and
6311       "SEQUENCE" property values, the "RECURRENCE-ID" value for a
6312       recurrence instance is fixed.
6313
6314       The "RANGE" parameter is used to specify the effective range of
6315       recurrence instances from the instance specified by the
6316       "RECURRENCE-ID" property value.  The value for the range parameter
6317       can only be "THISANDFUTURE" to indicate a range defined by the
6318       given recurrence instance and all subsequent instances.
6319       Subsequent instances are determined by their "RECURRENCE-ID" value
6320       and not their current scheduled start time.  Subsequent instances
6321       defined in separate components are not impacted by the given
6322       recurrence instance.  When the given recurrence instance is
6323       rescheduled, all subsequent instances are also rescheduled by the
6324       same time difference.  For instance, if the given recurrence
6325       instance is rescheduled to start 2 hours later, then all
6326       subsequent instances are also rescheduled 2 hours later.
6327
6328
6329
6330 Desruisseaux                Standards Track                   [Page 113]
6331 \f
6332 RFC 5545                       iCalendar                  September 2009
6333
6334
6335       Similarly, if the duration of the given recurrence instance is
6336       modified, then all subsequence instances are also modified to have
6337       this same duration.
6338
6339          Note: The "RANGE" parameter may not be appropriate to
6340          reschedule specific subsequent instances of complex recurring
6341          calendar component.  Assuming an unbounded recurring calendar
6342          component scheduled to occur on Mondays and Wednesdays, the
6343          "RANGE" parameter could not be used to reschedule only the
6344          future Monday instances to occur on Tuesday instead.  In such
6345          cases, the calendar application could simply truncate the
6346          unbounded recurring calendar component (i.e., with the "COUNT"
6347          or "UNTIL" rule parts), and create two new unbounded recurring
6348          calendar components for the future instances.
6349
6350    Format Definition:  This property is defined by the following
6351       notation:
6352
6353        recurid    = "RECURRENCE-ID" ridparam ":" ridval CRLF
6354
6355        ridparam   = *(
6356                   ;
6357                   ; The following are OPTIONAL,
6358                   ; but MUST NOT occur more than once.
6359                   ;
6360                   (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
6361                   (";" tzidparam) / (";" rangeparam) /
6362                   ;
6363                   ; The following is OPTIONAL,
6364                   ; and MAY occur more than once.
6365                   ;
6366                   (";" other-param)
6367                   ;
6368                   )
6369
6370        ridval     = date-time / date
6371        ;Value MUST match value type
6372
6373    Example:  The following are examples of this property:
6374
6375        RECURRENCE-ID;VALUE=DATE:19960401
6376
6377        RECURRENCE-ID;RANGE=THISANDFUTURE:19960120T120000Z
6378
6379
6380
6381
6382
6383
6384
6385
6386 Desruisseaux                Standards Track                   [Page 114]
6387 \f
6388 RFC 5545                       iCalendar                  September 2009
6389
6390
6391 3.8.4.5.  Related To
6392
6393    Property Name:  RELATED-TO
6394
6395    Purpose:  This property is used to represent a relationship or
6396       reference between one calendar component and another.
6397
6398    Value Type:  TEXT
6399
6400    Property Parameters:  IANA, non-standard, and relationship type
6401       property parameters can be specified on this property.
6402
6403    Conformance:  This property can be specified in the "VEVENT",
6404       "VTODO", and "VJOURNAL" calendar components.
6405
6406    Description:  The property value consists of the persistent, globally
6407       unique identifier of another calendar component.  This value would
6408       be represented in a calendar component by the "UID" property.
6409
6410       By default, the property value points to another calendar
6411       component that has a PARENT relationship to the referencing
6412       object.  The "RELTYPE" property parameter is used to either
6413       explicitly state the default PARENT relationship type to the
6414       referenced calendar component or to override the default PARENT
6415       relationship type and specify either a CHILD or SIBLING
6416       relationship.  The PARENT relationship indicates that the calendar
6417       component is a subordinate of the referenced calendar component.
6418       The CHILD relationship indicates that the calendar component is a
6419       superior of the referenced calendar component.  The SIBLING
6420       relationship indicates that the calendar component is a peer of
6421       the referenced calendar component.
6422
6423       Changes to a calendar component referenced by this property can
6424       have an implicit impact on the related calendar component.  For
6425       example, if a group event changes its start or end date or time,
6426       then the related, dependent events will need to have their start
6427       and end dates changed in a corresponding way.  Similarly, if a
6428       PARENT calendar component is cancelled or deleted, then there is
6429       an implied impact to the related CHILD calendar components.  This
6430       property is intended only to provide information on the
6431       relationship of calendar components.  It is up to the target
6432       calendar system to maintain any property implications of this
6433       relationship.
6434
6435
6436
6437
6438
6439
6440
6441
6442 Desruisseaux                Standards Track                   [Page 115]
6443 \f
6444 RFC 5545                       iCalendar                  September 2009
6445
6446
6447    Format Definition:  This property is defined by the following
6448       notation:
6449
6450        related    = "RELATED-TO" relparam ":" text CRLF
6451
6452        relparam   = *(
6453                   ;
6454                   ; The following is OPTIONAL,
6455                   ; but MUST NOT occur more than once.
6456                   ;
6457                   (";" reltypeparam) /
6458                   ;
6459                   ; The following is OPTIONAL,
6460                   ; and MAY occur more than once.
6461                   ;
6462                   (";" other-param)
6463                   ;
6464                   )
6465
6466       The following is an example of this property:
6467
6468        RELATED-TO:jsmith.part7.19960817T083000.xyzMail@example.com
6469
6470        RELATED-TO:19960401-080045-4000F192713-0052@example.com
6471
6472 3.8.4.6.  Uniform Resource Locator
6473
6474    Property Name:  URL
6475
6476    Purpose:  This property defines a Uniform Resource Locator (URL)
6477       associated with the iCalendar object.
6478
6479    Value Type:  URI
6480
6481    Property Parameters:  IANA and non-standard property parameters can
6482       be specified on this property.
6483
6484    Conformance:  This property can be specified once in the "VEVENT",
6485       "VTODO", "VJOURNAL", or "VFREEBUSY" calendar components.
6486
6487    Description:  This property may be used in a calendar component to
6488       convey a location where a more dynamic rendition of the calendar
6489       information associated with the calendar component can be found.
6490       This memo does not attempt to standardize the form of the URI, nor
6491       the format of the resource pointed to by the property value.  If
6492       the URL property and Content-Location MIME header are both
6493       specified, they MUST point to the same resource.
6494
6495
6496
6497
6498 Desruisseaux                Standards Track                   [Page 116]
6499 \f
6500 RFC 5545                       iCalendar                  September 2009
6501
6502
6503    Format Definition:  This property is defined by the following
6504       notation:
6505
6506        url        = "URL" urlparam ":" uri CRLF
6507
6508        urlparam   = *(";" other-param)
6509
6510    Example:  The following is an example of this property:
6511
6512        URL:http://example.com/pub/calendars/jsmith/mytime.ics
6513
6514 3.8.4.7.  Unique Identifier
6515
6516    Property Name:  UID
6517
6518    Purpose:  This property defines the persistent, globally unique
6519       identifier for the calendar component.
6520
6521    Value Type:  TEXT
6522
6523    Property Parameters:  IANA and non-standard property parameters can
6524       be specified on this property.
6525
6526    Conformance:  The property MUST be specified in the "VEVENT",
6527       "VTODO", "VJOURNAL", or "VFREEBUSY" calendar components.
6528
6529    Description:  The "UID" itself MUST be a globally unique identifier.
6530       The generator of the identifier MUST guarantee that the identifier
6531       is unique.  There are several algorithms that can be used to
6532       accomplish this.  A good method to assure uniqueness is to put the
6533       domain name or a domain literal IP address of the host on which
6534       the identifier was created on the right-hand side of an "@", and
6535       on the left-hand side, put a combination of the current calendar
6536       date and time of day (i.e., formatted in as a DATE-TIME value)
6537       along with some other currently unique (perhaps sequential)
6538       identifier available on the system (for example, a process id
6539       number).  Using a DATE-TIME value on the left-hand side and a
6540       domain name or domain literal on the right-hand side makes it
6541       possible to guarantee uniqueness since no two hosts should be
6542       using the same domain name or IP address at the same time.  Though
6543       other algorithms will work, it is RECOMMENDED that the right-hand
6544       side contain some domain identifier (either of the host itself or
6545       otherwise) such that the generator of the message identifier can
6546       guarantee the uniqueness of the left-hand side within the scope of
6547       that domain.
6548
6549       This is the method for correlating scheduling messages with the
6550       referenced "VEVENT", "VTODO", or "VJOURNAL" calendar component.
6551
6552
6553
6554 Desruisseaux                Standards Track                   [Page 117]
6555 \f
6556 RFC 5545                       iCalendar                  September 2009
6557
6558
6559       The full range of calendar components specified by a recurrence
6560       set is referenced by referring to just the "UID" property value
6561       corresponding to the calendar component.  The "RECURRENCE-ID"
6562       property allows the reference to an individual instance within the
6563       recurrence set.
6564
6565       This property is an important method for group-scheduling
6566       applications to match requests with later replies, modifications,
6567       or deletion requests.  Calendaring and scheduling applications
6568       MUST generate this property in "VEVENT", "VTODO", and "VJOURNAL"
6569       calendar components to assure interoperability with other group-
6570       scheduling applications.  This identifier is created by the
6571       calendar system that generates an iCalendar object.
6572
6573       Implementations MUST be able to receive and persist values of at
6574       least 255 octets for this property, but they MUST NOT truncate
6575       values in the middle of a UTF-8 multi-octet sequence.
6576
6577    Format Definition:  This property is defined by the following
6578       notation:
6579
6580        uid        = "UID" uidparam ":" text CRLF
6581
6582        uidparam   = *(";" other-param)
6583
6584    Example:  The following is an example of this property:
6585
6586        UID:19960401T080045Z-4000F192713-0052@example.com
6587
6588 3.8.5.  Recurrence Component Properties
6589
6590    The following properties specify recurrence information in calendar
6591    components.
6592
6593 3.8.5.1.  Exception Date-Times
6594
6595    Property Name:  EXDATE
6596
6597    Purpose:  This property defines the list of DATE-TIME exceptions for
6598       recurring events, to-dos, journal entries, or time zone
6599       definitions.
6600
6601    Value Type:  The default value type for this property is DATE-TIME.
6602       The value type can be set to DATE.
6603
6604    Property Parameters:  IANA, non-standard, value data type, and time
6605       zone identifier property parameters can be specified on this
6606       property.
6607
6608
6609
6610 Desruisseaux                Standards Track                   [Page 118]
6611 \f
6612 RFC 5545                       iCalendar                  September 2009
6613
6614
6615    Conformance:  This property can be specified in recurring "VEVENT",
6616       "VTODO", and "VJOURNAL" calendar components as well as in the
6617       "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
6618       calendar component.
6619
6620    Description:  The exception dates, if specified, are used in
6621       computing the recurrence set.  The recurrence set is the complete
6622       set of recurrence instances for a calendar component.  The
6623       recurrence set is generated by considering the initial "DTSTART"
6624       property along with the "RRULE", "RDATE", and "EXDATE" properties
6625       contained within the recurring component.  The "DTSTART" property
6626       defines the first instance in the recurrence set.  The "DTSTART"
6627       property value SHOULD match the pattern of the recurrence rule, if
6628       specified.  The recurrence set generated with a "DTSTART" property
6629       value that doesn't match the pattern of the rule is undefined.
6630       The final recurrence set is generated by gathering all of the
6631       start DATE-TIME values generated by any of the specified "RRULE"
6632       and "RDATE" properties, and then excluding any start DATE-TIME
6633       values specified by "EXDATE" properties.  This implies that start
6634       DATE-TIME values specified by "EXDATE" properties take precedence
6635       over those specified by inclusion properties (i.e., "RDATE" and
6636       "RRULE").  When duplicate instances are generated by the "RRULE"
6637       and "RDATE" properties, only one recurrence is considered.
6638       Duplicate instances are ignored.
6639
6640       The "EXDATE" property can be used to exclude the value specified
6641       in "DTSTART".  However, in such cases, the original "DTSTART" date
6642       MUST still be maintained by the calendaring and scheduling system
6643       because the original "DTSTART" value has inherent usage
6644       dependencies by other properties such as the "RECURRENCE-ID".
6645
6646    Format Definition:  This property is defined by the following
6647       notation:
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666 Desruisseaux                Standards Track                   [Page 119]
6667 \f
6668 RFC 5545                       iCalendar                  September 2009
6669
6670
6671        exdate     = "EXDATE" exdtparam ":" exdtval *("," exdtval) CRLF
6672
6673        exdtparam  = *(
6674                   ;
6675                   ; The following are OPTIONAL,
6676                   ; but MUST NOT occur more than once.
6677                   ;
6678                   (";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
6679                   ;
6680                   (";" tzidparam) /
6681                   ;
6682                   ; The following is OPTIONAL,
6683                   ; and MAY occur more than once.
6684                   ;
6685                   (";" other-param)
6686                   ;
6687                   )
6688
6689        exdtval    = date-time / date
6690        ;Value MUST match value type
6691
6692    Example:  The following is an example of this property:
6693
6694        EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z
6695
6696 3.8.5.2.  Recurrence Date-Times
6697
6698    Property Name:  RDATE
6699
6700    Purpose:  This property defines the list of DATE-TIME values for
6701       recurring events, to-dos, journal entries, or time zone
6702       definitions.
6703
6704    Value Type:  The default value type for this property is DATE-TIME.
6705       The value type can be set to DATE or PERIOD.
6706
6707    Property Parameters:  IANA, non-standard, value data type, and time
6708       zone identifier property parameters can be specified on this
6709       property.
6710
6711    Conformance:  This property can be specified in recurring "VEVENT",
6712       "VTODO", and "VJOURNAL" calendar components as well as in the
6713       "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
6714       calendar component.
6715
6716    Description:  This property can appear along with the "RRULE"
6717       property to define an aggregate set of repeating occurrences.
6718       When they both appear in a recurring component, the recurrence
6719
6720
6721
6722 Desruisseaux                Standards Track                   [Page 120]
6723 \f
6724 RFC 5545                       iCalendar                  September 2009
6725
6726
6727       instances are defined by the union of occurrences defined by both
6728       the "RDATE" and "RRULE".
6729
6730       The recurrence dates, if specified, are used in computing the
6731       recurrence set.  The recurrence set is the complete set of
6732       recurrence instances for a calendar component.  The recurrence set
6733       is generated by considering the initial "DTSTART" property along
6734       with the "RRULE", "RDATE", and "EXDATE" properties contained
6735       within the recurring component.  The "DTSTART" property defines
6736       the first instance in the recurrence set.  The "DTSTART" property
6737       value SHOULD match the pattern of the recurrence rule, if
6738       specified.  The recurrence set generated with a "DTSTART" property
6739       value that doesn't match the pattern of the rule is undefined.
6740       The final recurrence set is generated by gathering all of the
6741       start DATE-TIME values generated by any of the specified "RRULE"
6742       and "RDATE" properties, and then excluding any start DATE-TIME
6743       values specified by "EXDATE" properties.  This implies that start
6744       DATE-TIME values specified by "EXDATE" properties take precedence
6745       over those specified by inclusion properties (i.e., "RDATE" and
6746       "RRULE").  Where duplicate instances are generated by the "RRULE"
6747       and "RDATE" properties, only one recurrence is considered.
6748       Duplicate instances are ignored.
6749
6750    Format Definition:  This property is defined by the following
6751       notation:
6752
6753        rdate      = "RDATE" rdtparam ":" rdtval *("," rdtval) CRLF
6754
6755        rdtparam   = *(
6756                   ;
6757                   ; The following are OPTIONAL,
6758                   ; but MUST NOT occur more than once.
6759                   ;
6760                   (";" "VALUE" "=" ("DATE-TIME" / "DATE" / "PERIOD")) /
6761                   (";" tzidparam) /
6762                   ;
6763                   ; The following is OPTIONAL,
6764                   ; and MAY occur more than once.
6765                   ;
6766                   (";" other-param)
6767                   ;
6768                   )
6769
6770        rdtval     = date-time / date / period
6771        ;Value MUST match value type
6772
6773
6774
6775
6776
6777
6778 Desruisseaux                Standards Track                   [Page 121]
6779 \f
6780 RFC 5545                       iCalendar                  September 2009
6781
6782
6783    Example:  The following are examples of this property:
6784
6785        RDATE:19970714T123000Z
6786        RDATE;TZID=America/New_York:19970714T083000
6787
6788        RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,
6789         19960404T010000Z/PT3H
6790
6791        RDATE;VALUE=DATE:19970101,19970120,19970217,19970421
6792         19970526,19970704,19970901,19971014,19971128,19971129,19971225
6793
6794 3.8.5.3.  Recurrence Rule
6795
6796    Property Name:  RRULE
6797
6798    Purpose:  This property defines a rule or repeating pattern for
6799       recurring events, to-dos, journal entries, or time zone
6800       definitions.
6801
6802    Value Type:  RECUR
6803
6804    Property Parameters:  IANA and non-standard property parameters can
6805       be specified on this property.
6806
6807    Conformance:  This property can be specified in recurring "VEVENT",
6808       "VTODO", and "VJOURNAL" calendar components as well as in the
6809       "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
6810       calendar component, but it SHOULD NOT be specified more than once.
6811       The recurrence set generated with multiple "RRULE" properties is
6812       undefined.
6813
6814    Description:  The recurrence rule, if specified, is used in computing
6815       the recurrence set.  The recurrence set is the complete set of
6816       recurrence instances for a calendar component.  The recurrence set
6817       is generated by considering the initial "DTSTART" property along
6818       with the "RRULE", "RDATE", and "EXDATE" properties contained
6819       within the recurring component.  The "DTSTART" property defines
6820       the first instance in the recurrence set.  The "DTSTART" property
6821       value SHOULD be synchronized with the recurrence rule, if
6822       specified.  The recurrence set generated with a "DTSTART" property
6823       value not synchronized with the recurrence rule is undefined.  The
6824       final recurrence set is generated by gathering all of the start
6825       DATE-TIME values generated by any of the specified "RRULE" and
6826       "RDATE" properties, and then excluding any start DATE-TIME values
6827       specified by "EXDATE" properties.  This implies that start DATE-
6828       TIME values specified by "EXDATE" properties take precedence over
6829       those specified by inclusion properties (i.e., "RDATE" and
6830       "RRULE").  Where duplicate instances are generated by the "RRULE"
6831
6832
6833
6834 Desruisseaux                Standards Track                   [Page 122]
6835 \f
6836 RFC 5545                       iCalendar                  September 2009
6837
6838
6839       and "RDATE" properties, only one recurrence is considered.
6840       Duplicate instances are ignored.
6841
6842       The "DTSTART" property specified within the iCalendar object
6843       defines the first instance of the recurrence.  In most cases, a
6844       "DTSTART" property of DATE-TIME value type used with a recurrence
6845       rule, should be specified as a date with local time and time zone
6846       reference to make sure all the recurrence instances start at the
6847       same local time regardless of time zone changes.
6848
6849       If the duration of the recurring component is specified with the
6850       "DTEND" or "DUE" property, then the same exact duration will apply
6851       to all the members of the generated recurrence set.  Else, if the
6852       duration of the recurring component is specified with the
6853       "DURATION" property, then the same nominal duration will apply to
6854       all the members of the generated recurrence set and the exact
6855       duration of each recurrence instance will depend on its specific
6856       start time.  For example, recurrence instances of a nominal
6857       duration of one day will have an exact duration of more or less
6858       than 24 hours on a day where a time zone shift occurs.  The
6859       duration of a specific recurrence may be modified in an exception
6860       component or simply by using an "RDATE" property of PERIOD value
6861       type.
6862
6863    Format Definition:  This property is defined by the following
6864       notation:
6865
6866        rrule      = "RRULE" rrulparam ":" recur CRLF
6867
6868        rrulparam  = *(";" other-param)
6869
6870    Example:  All examples assume the Eastern United States time zone.
6871
6872       Daily for 10 occurrences:
6873
6874        DTSTART;TZID=America/New_York:19970902T090000
6875        RRULE:FREQ=DAILY;COUNT=10
6876
6877        ==> (1997 9:00 AM EDT) September 2-11
6878
6879       Daily until December 24, 1997:
6880
6881        DTSTART;TZID=America/New_York:19970902T090000
6882        RRULE:FREQ=DAILY;UNTIL=19971224T000000Z
6883
6884        ==> (1997 9:00 AM EDT) September 2-30;October 1-25
6885            (1997 9:00 AM EST) October 26-31;November 1-30;December 1-23
6886
6887
6888
6889
6890 Desruisseaux                Standards Track                   [Page 123]
6891 \f
6892 RFC 5545                       iCalendar                  September 2009
6893
6894
6895       Every other day - forever:
6896
6897        DTSTART;TZID=America/New_York:19970902T090000
6898        RRULE:FREQ=DAILY;INTERVAL=2
6899
6900        ==> (1997 9:00 AM EDT) September 2,4,6,8...24,26,28,30;
6901                               October 2,4,6...20,22,24
6902            (1997 9:00 AM EST) October 26,28,30;
6903                               November 1,3,5,7...25,27,29;
6904                               December 1,3,...
6905
6906       Every 10 days, 5 occurrences:
6907
6908        DTSTART;TZID=America/New_York:19970902T090000
6909        RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5
6910
6911        ==> (1997 9:00 AM EDT) September 2,12,22;
6912                               October 2,12
6913
6914       Every day in January, for 3 years:
6915
6916        DTSTART;TZID=America/New_York:19980101T090000
6917
6918        RRULE:FREQ=YEARLY;UNTIL=20000131T140000Z;
6919         BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA
6920        or
6921        RRULE:FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1
6922
6923        ==> (1998 9:00 AM EST)January 1-31
6924            (1999 9:00 AM EST)January 1-31
6925            (2000 9:00 AM EST)January 1-31
6926
6927       Weekly for 10 occurrences:
6928
6929        DTSTART;TZID=America/New_York:19970902T090000
6930        RRULE:FREQ=WEEKLY;COUNT=10
6931
6932        ==> (1997 9:00 AM EDT) September 2,9,16,23,30;October 7,14,21
6933            (1997 9:00 AM EST) October 28;November 4
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946 Desruisseaux                Standards Track                   [Page 124]
6947 \f
6948 RFC 5545                       iCalendar                  September 2009
6949
6950
6951       Weekly until December 24, 1997:
6952
6953        DTSTART;TZID=America/New_York:19970902T090000
6954        RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z
6955
6956        ==> (1997 9:00 AM EDT) September 2,9,16,23,30;
6957                               October 7,14,21
6958            (1997 9:00 AM EST) October 28;
6959                               November 4,11,18,25;
6960                               December 2,9,16,23
6961
6962       Every other week - forever:
6963
6964        DTSTART;TZID=America/New_York:19970902T090000
6965        RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU
6966
6967        ==> (1997 9:00 AM EDT) September 2,16,30;
6968                               October 14
6969            (1997 9:00 AM EST) October 28;
6970                               November 11,25;
6971                               December 9,23
6972            (1998 9:00 AM EST) January 6,20;
6973                               February 3, 17
6974            ...
6975
6976       Weekly on Tuesday and Thursday for five weeks:
6977
6978        DTSTART;TZID=America/New_York:19970902T090000
6979        RRULE:FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH
6980
6981        or
6982
6983        RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH
6984
6985        ==> (1997 9:00 AM EDT) September 2,4,9,11,16,18,23,25,30;
6986                               October 2
6987
6988       Every other week on Monday, Wednesday, and Friday until December
6989       24, 1997, starting on Monday, September 1, 1997:
6990
6991        DTSTART;TZID=America/New_York:19970901T090000
6992        RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;
6993         BYDAY=MO,WE,FR
6994
6995        ==> (1997 9:00 AM EDT) September 1,3,5,15,17,19,29;
6996                               October 1,3,13,15,17
6997            (1997 9:00 AM EST) October 27,29,31;
6998                               November 10,12,14,24,26,28;
6999
7000
7001
7002 Desruisseaux                Standards Track                   [Page 125]
7003 \f
7004 RFC 5545                       iCalendar                  September 2009
7005
7006
7007                               December 8,10,12,22
7008
7009       Every other week on Tuesday and Thursday, for 8 occurrences:
7010
7011        DTSTART;TZID=America/New_York:19970902T090000
7012        RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH
7013
7014        ==> (1997 9:00 AM EDT) September 2,4,16,18,30;
7015                               October 2,14,16
7016
7017       Monthly on the first Friday for 10 occurrences:
7018
7019        DTSTART;TZID=America/New_York:19970905T090000
7020        RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
7021
7022        ==> (1997 9:00 AM EDT) September 5;October 3
7023            (1997 9:00 AM EST) November 7;December 5
7024            (1998 9:00 AM EST) January 2;February 6;March 6;April 3
7025            (1998 9:00 AM EDT) May 1;June 5
7026
7027       Monthly on the first Friday until December 24, 1997:
7028
7029        DTSTART;TZID=America/New_York:19970905T090000
7030        RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR
7031
7032        ==> (1997 9:00 AM EDT) September 5; October 3
7033            (1997 9:00 AM EST) November 7; December 5
7034
7035       Every other month on the first and last Sunday of the month for 10
7036       occurrences:
7037
7038        DTSTART;TZID=America/New_York:19970907T090000
7039        RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU
7040
7041        ==> (1997 9:00 AM EDT) September 7,28
7042            (1997 9:00 AM EST) November 2,30
7043            (1998 9:00 AM EST) January 4,25;March 1,29
7044            (1998 9:00 AM EDT) May 3,31
7045
7046       Monthly on the second-to-last Monday of the month for 6 months:
7047
7048        DTSTART;TZID=America/New_York:19970922T090000
7049        RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO
7050
7051        ==> (1997 9:00 AM EDT) September 22;October 20
7052            (1997 9:00 AM EST) November 17;December 22
7053            (1998 9:00 AM EST) January 19;February 16
7054
7055
7056
7057
7058 Desruisseaux                Standards Track                   [Page 126]
7059 \f
7060 RFC 5545                       iCalendar                  September 2009
7061
7062
7063       Monthly on the third-to-the-last day of the month, forever:
7064
7065        DTSTART;TZID=America/New_York:19970928T090000
7066        RRULE:FREQ=MONTHLY;BYMONTHDAY=-3
7067
7068        ==> (1997 9:00 AM EDT) September 28
7069            (1997 9:00 AM EST) October 29;November 28;December 29
7070            (1998 9:00 AM EST) January 29;February 26
7071            ...
7072
7073       Monthly on the 2nd and 15th of the month for 10 occurrences:
7074
7075        DTSTART;TZID=America/New_York:19970902T090000
7076        RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15
7077
7078        ==> (1997 9:00 AM EDT) September 2,15;October 2,15
7079            (1997 9:00 AM EST) November 2,15;December 2,15
7080            (1998 9:00 AM EST) January 2,15
7081
7082       Monthly on the first and last day of the month for 10 occurrences:
7083
7084        DTSTART;TZID=America/New_York:19970930T090000
7085        RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1
7086
7087        ==> (1997 9:00 AM EDT) September 30;October 1
7088            (1997 9:00 AM EST) October 31;November 1,30;December 1,31
7089            (1998 9:00 AM EST) January 1,31;February 1
7090
7091       Every 18 months on the 10th thru 15th of the month for 10
7092       occurrences:
7093
7094        DTSTART;TZID=America/New_York:19970910T090000
7095        RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,
7096         13,14,15
7097
7098        ==> (1997 9:00 AM EDT) September 10,11,12,13,14,15
7099            (1999 9:00 AM EST) March 10,11,12,13
7100
7101       Every Tuesday, every other month:
7102
7103        DTSTART;TZID=America/New_York:19970902T090000
7104        RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU
7105
7106        ==> (1997 9:00 AM EDT) September 2,9,16,23,30
7107            (1997 9:00 AM EST) November 4,11,18,25
7108            (1998 9:00 AM EST) January 6,13,20,27;March 3,10,17,24,31
7109            ...
7110
7111
7112
7113
7114 Desruisseaux                Standards Track                   [Page 127]
7115 \f
7116 RFC 5545                       iCalendar                  September 2009
7117
7118
7119       Yearly in June and July for 10 occurrences:
7120
7121        DTSTART;TZID=America/New_York:19970610T090000
7122        RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7
7123
7124        ==> (1997 9:00 AM EDT) June 10;July 10
7125            (1998 9:00 AM EDT) June 10;July 10
7126            (1999 9:00 AM EDT) June 10;July 10
7127            (2000 9:00 AM EDT) June 10;July 10
7128            (2001 9:00 AM EDT) June 10;July 10
7129
7130          Note: Since none of the BYDAY, BYMONTHDAY, or BYYEARDAY
7131          components are specified, the day is gotten from "DTSTART".
7132
7133       Every other year on January, February, and March for 10
7134       occurrences:
7135
7136        DTSTART;TZID=America/New_York:19970310T090000
7137        RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3
7138
7139        ==> (1997 9:00 AM EST) March 10
7140            (1999 9:00 AM EST) January 10;February 10;March 10
7141            (2001 9:00 AM EST) January 10;February 10;March 10
7142            (2003 9:00 AM EST) January 10;February 10;March 10
7143
7144       Every third year on the 1st, 100th, and 200th day for 10
7145       occurrences:
7146
7147        DTSTART;TZID=America/New_York:19970101T090000
7148        RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200
7149
7150        ==> (1997 9:00 AM EST) January 1
7151            (1997 9:00 AM EDT) April 10;July 19
7152            (2000 9:00 AM EST) January 1
7153            (2000 9:00 AM EDT) April 9;July 18
7154            (2003 9:00 AM EST) January 1
7155            (2003 9:00 AM EDT) April 10;July 19
7156            (2006 9:00 AM EST) January 1
7157
7158       Every 20th Monday of the year, forever:
7159
7160        DTSTART;TZID=America/New_York:19970519T090000
7161        RRULE:FREQ=YEARLY;BYDAY=20MO
7162
7163        ==> (1997 9:00 AM EDT) May 19
7164            (1998 9:00 AM EDT) May 18
7165            (1999 9:00 AM EDT) May 17
7166            ...
7167
7168
7169
7170 Desruisseaux                Standards Track                   [Page 128]
7171 \f
7172 RFC 5545                       iCalendar                  September 2009
7173
7174
7175       Monday of week number 20 (where the default start of the week is
7176       Monday), forever:
7177
7178        DTSTART;TZID=America/New_York:19970512T090000
7179        RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO
7180
7181        ==> (1997 9:00 AM EDT) May 12
7182            (1998 9:00 AM EDT) May 11
7183            (1999 9:00 AM EDT) May 17
7184            ...
7185
7186       Every Thursday in March, forever:
7187
7188        DTSTART;TZID=America/New_York:19970313T090000
7189        RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH
7190
7191        ==> (1997 9:00 AM EST) March 13,20,27
7192            (1998 9:00 AM EST) March 5,12,19,26
7193            (1999 9:00 AM EST) March 4,11,18,25
7194            ...
7195
7196       Every Thursday, but only during June, July, and August, forever:
7197
7198        DTSTART;TZID=America/New_York:19970605T090000
7199        RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8
7200
7201        ==> (1997 9:00 AM EDT) June 5,12,19,26;July 3,10,17,24,31;
7202                               August 7,14,21,28
7203            (1998 9:00 AM EDT) June 4,11,18,25;July 2,9,16,23,30;
7204                               August 6,13,20,27
7205            (1999 9:00 AM EDT) June 3,10,17,24;July 1,8,15,22,29;
7206                               August 5,12,19,26
7207            ...
7208
7209       Every Friday the 13th, forever:
7210
7211        DTSTART;TZID=America/New_York:19970902T090000
7212        EXDATE;TZID=America/New_York:19970902T090000
7213        RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13
7214
7215        ==> (1998 9:00 AM EST) February 13;March 13;November 13
7216            (1999 9:00 AM EDT) August 13
7217            (2000 9:00 AM EDT) October 13
7218            ...
7219
7220
7221
7222
7223
7224
7225
7226 Desruisseaux                Standards Track                   [Page 129]
7227 \f
7228 RFC 5545                       iCalendar                  September 2009
7229
7230
7231       The first Saturday that follows the first Sunday of the month,
7232       forever:
7233
7234        DTSTART;TZID=America/New_York:19970913T090000
7235        RRULE:FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13
7236
7237        ==> (1997 9:00 AM EDT) September 13;October 11
7238            (1997 9:00 AM EST) November 8;December 13
7239            (1998 9:00 AM EST) January 10;February 7;March 7
7240            (1998 9:00 AM EDT) April 11;May 9;June 13...
7241            ...
7242
7243       Every 4 years, the first Tuesday after a Monday in November,
7244       forever (U.S. Presidential Election day):
7245
7246        DTSTART;TZID=America/New_York:19961105T090000
7247        RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;
7248         BYMONTHDAY=2,3,4,5,6,7,8
7249
7250         ==> (1996 9:00 AM EST) November 5
7251             (2000 9:00 AM EST) November 7
7252             (2004 9:00 AM EST) November 2
7253             ...
7254
7255       The third instance into the month of one of Tuesday, Wednesday, or
7256       Thursday, for the next 3 months:
7257
7258        DTSTART;TZID=America/New_York:19970904T090000
7259        RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3
7260
7261        ==> (1997 9:00 AM EDT) September 4;October 7
7262            (1997 9:00 AM EST) November 6
7263
7264       The second-to-last weekday of the month:
7265
7266        DTSTART;TZID=America/New_York:19970929T090000
7267        RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2
7268
7269        ==> (1997 9:00 AM EDT) September 29
7270            (1997 9:00 AM EST) October 30;November 27;December 30
7271            (1998 9:00 AM EST) January 29;February 26;March 30
7272            ...
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282 Desruisseaux                Standards Track                   [Page 130]
7283 \f
7284 RFC 5545                       iCalendar                  September 2009
7285
7286
7287       Every 3 hours from 9:00 AM to 5:00 PM on a specific day:
7288
7289        DTSTART;TZID=America/New_York:19970902T090000
7290        RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z
7291
7292        ==> (September 2, 1997 EDT) 09:00,12:00,15:00
7293
7294       Every 15 minutes for 6 occurrences:
7295
7296        DTSTART;TZID=America/New_York:19970902T090000
7297        RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6
7298
7299        ==> (September 2, 1997 EDT) 09:00,09:15,09:30,09:45,10:00,10:15
7300
7301       Every hour and a half for 4 occurrences:
7302
7303        DTSTART;TZID=America/New_York:19970902T090000
7304        RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4
7305
7306        ==> (September 2, 1997 EDT) 09:00,10:30;12:00;13:30
7307
7308       Every 20 minutes from 9:00 AM to 4:40 PM every day:
7309
7310        DTSTART;TZID=America/New_York:19970902T090000
7311        RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40
7312        or
7313        RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16
7314
7315        ==> (September 2, 1997 EDT) 9:00,9:20,9:40,10:00,10:20,
7316                                    ... 16:00,16:20,16:40
7317            (September 3, 1997 EDT) 9:00,9:20,9:40,10:00,10:20,
7318                                    ...16:00,16:20,16:40
7319            ...
7320
7321       An example where the days generated makes a difference because of
7322       WKST:
7323
7324        DTSTART;TZID=America/New_York:19970805T090000
7325        RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO
7326
7327        ==> (1997 EDT) August 5,10,19,24
7328
7329       changing only WKST from MO to SU, yields different results...
7330
7331        DTSTART;TZID=America/New_York:19970805T090000
7332        RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU
7333
7334        ==> (1997 EDT) August 5,17,19,31
7335
7336
7337
7338 Desruisseaux                Standards Track                   [Page 131]
7339 \f
7340 RFC 5545                       iCalendar                  September 2009
7341
7342
7343       An example where an invalid date (i.e., February 30) is ignored.
7344
7345        DTSTART;TZID=America/New_York:20070115T090000
7346        RRULE:FREQ=MONTHLY;BYMONTHDAY=15,30;COUNT=5
7347
7348        ==> (2007 EST) January 15,30
7349            (2007 EST) February 15
7350            (2007 EDT) March 15,30
7351
7352 3.8.6.  Alarm Component Properties
7353
7354    The following properties specify alarm information in calendar
7355    components.
7356
7357 3.8.6.1.  Action
7358
7359    Property Name:  ACTION
7360
7361    Purpose:  This property defines the action to be invoked when an
7362       alarm is triggered.
7363
7364    Value Type:  TEXT
7365
7366    Property Parameters:  IANA and non-standard property parameters can
7367       be specified on this property.
7368
7369    Conformance:  This property MUST be specified once in a "VALARM"
7370       calendar component.
7371
7372    Description:  Each "VALARM" calendar component has a particular type
7373       of action with which it is associated.  This property specifies
7374       the type of action.  Applications MUST ignore alarms with x-name
7375       and iana-token values they don't recognize.
7376
7377    Format Definition:  This property is defined by the following
7378       notation:
7379
7380        action      = "ACTION" actionparam ":" actionvalue CRLF
7381
7382        actionparam = *(";" other-param)
7383
7384
7385        actionvalue = "AUDIO" / "DISPLAY" / "EMAIL"
7386                    / iana-token / x-name
7387
7388    Example:  The following are examples of this property in a "VALARM"
7389       calendar component:
7390
7391
7392
7393
7394 Desruisseaux                Standards Track                   [Page 132]
7395 \f
7396 RFC 5545                       iCalendar                  September 2009
7397
7398
7399        ACTION:AUDIO
7400
7401        ACTION:DISPLAY
7402
7403 3.8.6.2.  Repeat Count
7404
7405    Property Name:  REPEAT
7406
7407    Purpose:  This property defines the number of times the alarm should
7408       be repeated, after the initial trigger.
7409
7410    Value Type:  INTEGER
7411
7412    Property Parameters:  IANA and non-standard property parameters can
7413       be specified on this property.
7414
7415    Conformance:  This property can be specified in a "VALARM" calendar
7416       component.
7417
7418    Description:  This property defines the number of times an alarm
7419       should be repeated after its initial trigger.  If the alarm
7420       triggers more than once, then this property MUST be specified
7421       along with the "DURATION" property.
7422
7423    Format Definition:  This property is defined by the following
7424       notation:
7425
7426        repeat  = "REPEAT" repparam ":" integer CRLF
7427        ;Default is "0", zero.
7428
7429        repparam   = *(";" other-param)
7430
7431    Example:  The following is an example of this property for an alarm
7432       that repeats 4 additional times with a 5-minute delay after the
7433       initial triggering of the alarm:
7434
7435        REPEAT:4
7436        DURATION:PT5M
7437
7438 3.8.6.3.  Trigger
7439
7440    Property Name:  TRIGGER
7441
7442    Purpose:  This property specifies when an alarm will trigger.
7443
7444    Value Type:  The default value type is DURATION.  The value type can
7445       be set to a DATE-TIME value type, in which case the value MUST
7446       specify a UTC-formatted DATE-TIME value.
7447
7448
7449
7450 Desruisseaux                Standards Track                   [Page 133]
7451 \f
7452 RFC 5545                       iCalendar                  September 2009
7453
7454
7455    Property Parameters:  IANA, non-standard, value data type, time zone
7456       identifier, or trigger relationship property parameters can be
7457       specified on this property.  The trigger relationship property
7458       parameter MUST only be specified when the value type is
7459       "DURATION".
7460
7461    Conformance:  This property MUST be specified in the "VALARM"
7462       calendar component.
7463
7464    Description:  This property defines when an alarm will trigger.  The
7465       default value type is DURATION, specifying a relative time for the
7466       trigger of the alarm.  The default duration is relative to the
7467       start of an event or to-do with which the alarm is associated.
7468       The duration can be explicitly set to trigger from either the end
7469       or the start of the associated event or to-do with the "RELATED"
7470       parameter.  A value of START will set the alarm to trigger off the
7471       start of the associated event or to-do.  A value of END will set
7472       the alarm to trigger off the end of the associated event or to-do.
7473
7474       Either a positive or negative duration may be specified for the
7475       "TRIGGER" property.  An alarm with a positive duration is
7476       triggered after the associated start or end of the event or to-do.
7477       An alarm with a negative duration is triggered before the
7478       associated start or end of the event or to-do.
7479
7480       The "RELATED" property parameter is not valid if the value type of
7481       the property is set to DATE-TIME (i.e., for an absolute date and
7482       time alarm trigger).  If a value type of DATE-TIME is specified,
7483       then the property value MUST be specified in the UTC time format.
7484       If an absolute trigger is specified on an alarm for a recurring
7485       event or to-do, then the alarm will only trigger for the specified
7486       absolute DATE-TIME, along with any specified repeating instances.
7487
7488       If the trigger is set relative to START, then the "DTSTART"
7489       property MUST be present in the associated "VEVENT" or "VTODO"
7490       calendar component.  If an alarm is specified for an event with
7491       the trigger set relative to the END, then the "DTEND" property or
7492       the "DTSTART" and "DURATION " properties MUST be present in the
7493       associated "VEVENT" calendar component.  If the alarm is specified
7494       for a to-do with a trigger set relative to the END, then either
7495       the "DUE" property or the "DTSTART" and "DURATION " properties
7496       MUST be present in the associated "VTODO" calendar component.
7497
7498       Alarms specified in an event or to-do that is defined in terms of
7499       a DATE value type will be triggered relative to 00:00:00 of the
7500       user's configured time zone on the specified date, or relative to
7501       00:00:00 UTC on the specified date if no configured time zone can
7502       be found for the user.  For example, if "DTSTART" is a DATE value
7503
7504
7505
7506 Desruisseaux                Standards Track                   [Page 134]
7507 \f
7508 RFC 5545                       iCalendar                  September 2009
7509
7510
7511       set to 19980205 then the duration trigger will be relative to
7512       19980205T000000 America/New_York for a user configured with the
7513       America/New_York time zone.
7514
7515    Format Definition:  This property is defined by the following
7516       notation:
7517
7518        trigger    = "TRIGGER" (trigrel / trigabs) CRLF
7519
7520        trigrel    = *(
7521                   ;
7522                   ; The following are OPTIONAL,
7523                   ; but MUST NOT occur more than once.
7524                   ;
7525                   (";" "VALUE" "=" "DURATION") /
7526                   (";" trigrelparam) /
7527                   ;
7528                   ; The following is OPTIONAL,
7529                   ; and MAY occur more than once.
7530                   ;
7531                   (";" other-param)
7532                   ;
7533                   ) ":"  dur-value
7534
7535        trigabs    = *(
7536                   ;
7537                   ; The following is REQUIRED,
7538                   ; but MUST NOT occur more than once.
7539                   ;
7540                   (";" "VALUE" "=" "DATE-TIME") /
7541                   ;
7542                   ; The following is OPTIONAL,
7543                   ; and MAY occur more than once.
7544                   ;
7545                   (";" other-param)
7546                   ;
7547                   ) ":" date-time
7548
7549    Example:  A trigger set 15 minutes prior to the start of the event or
7550       to-do.
7551
7552        TRIGGER:-PT15M
7553
7554       A trigger set five minutes after the end of an event or the due
7555       date of a to-do.
7556
7557        TRIGGER;RELATED=END:PT5M
7558
7559
7560
7561
7562 Desruisseaux                Standards Track                   [Page 135]
7563 \f
7564 RFC 5545                       iCalendar                  September 2009
7565
7566
7567       A trigger set to an absolute DATE-TIME.
7568
7569        TRIGGER;VALUE=DATE-TIME:19980101T050000Z
7570
7571 3.8.7.  Change Management Component Properties
7572
7573    The following properties specify change management information in
7574    calendar components.
7575
7576 3.8.7.1.  Date-Time Created
7577
7578    Property Name:  CREATED
7579
7580    Purpose:  This property specifies the date and time that the calendar
7581       information was created by the calendar user agent in the calendar
7582       store.
7583
7584          Note: This is analogous to the creation date and time for a
7585          file in the file system.
7586
7587    Value Type:  DATE-TIME
7588
7589    Property Parameters:  IANA and non-standard property parameters can
7590       be specified on this property.
7591
7592    Conformance:  The property can be specified once in "VEVENT",
7593       "VTODO", or "VJOURNAL" calendar components.  The value MUST be
7594       specified as a date with UTC time.
7595
7596    Description:  This property specifies the date and time that the
7597       calendar information was created by the calendar user agent in the
7598       calendar store.
7599
7600    Format Definition:  This property is defined by the following
7601       notation:
7602
7603        created    = "CREATED" creaparam ":" date-time CRLF
7604
7605        creaparam  = *(";" other-param)
7606
7607    Example:  The following is an example of this property:
7608
7609        CREATED:19960329T133000Z
7610
7611
7612
7613
7614
7615
7616
7617
7618 Desruisseaux                Standards Track                   [Page 136]
7619 \f
7620 RFC 5545                       iCalendar                  September 2009
7621
7622
7623 3.8.7.2.  Date-Time Stamp
7624
7625    Property Name:  DTSTAMP
7626
7627    Purpose:  In the case of an iCalendar object that specifies a
7628       "METHOD" property, this property specifies the date and time that
7629       the instance of the iCalendar object was created.  In the case of
7630       an iCalendar object that doesn't specify a "METHOD" property, this
7631       property specifies the date and time that the information
7632       associated with the calendar component was last revised in the
7633       calendar store.
7634
7635    Value Type:  DATE-TIME
7636
7637    Property Parameters:  IANA and non-standard property parameters can
7638       be specified on this property.
7639
7640    Conformance:  This property MUST be included in the "VEVENT",
7641       "VTODO", "VJOURNAL", or "VFREEBUSY" calendar components.
7642
7643    Description:  The value MUST be specified in the UTC time format.
7644
7645       This property is also useful to protocols such as [2447bis] that
7646       have inherent latency issues with the delivery of content.  This
7647       property will assist in the proper sequencing of messages
7648       containing iCalendar objects.
7649
7650       In the case of an iCalendar object that specifies a "METHOD"
7651       property, this property differs from the "CREATED" and "LAST-
7652       MODIFIED" properties.  These two properties are used to specify
7653       when the particular calendar data in the calendar store was
7654       created and last modified.  This is different than when the
7655       iCalendar object representation of the calendar service
7656       information was created or last modified.
7657
7658       In the case of an iCalendar object that doesn't specify a "METHOD"
7659       property, this property is equivalent to the "LAST-MODIFIED"
7660       property.
7661
7662    Format Definition:  This property is defined by the following
7663       notation:
7664
7665        dtstamp    = "DTSTAMP" stmparam ":" date-time CRLF
7666
7667        stmparam   = *(";" other-param)
7668
7669
7670
7671
7672
7673
7674 Desruisseaux                Standards Track                   [Page 137]
7675 \f
7676 RFC 5545                       iCalendar                  September 2009
7677
7678
7679    Example:
7680
7681        DTSTAMP:19971210T080000Z
7682
7683 3.8.7.3.  Last Modified
7684
7685    Property Name:  LAST-MODIFIED
7686
7687    Purpose:  This property specifies the date and time that the
7688       information associated with the calendar component was last
7689       revised in the calendar store.
7690
7691          Note: This is analogous to the modification date and time for a
7692          file in the file system.
7693
7694    Value Type:  DATE-TIME
7695
7696    Property Parameters:  IANA and non-standard property parameters can
7697       be specified on this property.
7698
7699    Conformance:  This property can be specified in the "VEVENT",
7700       "VTODO", "VJOURNAL", or "VTIMEZONE" calendar components.
7701
7702    Description:  The property value MUST be specified in the UTC time
7703       format.
7704
7705    Format Definition:  This property is defined by the following
7706       notation:
7707
7708        last-mod   = "LAST-MODIFIED" lstparam ":" date-time CRLF
7709
7710        lstparam   = *(";" other-param)
7711
7712    Example:  The following is an example of this property:
7713
7714        LAST-MODIFIED:19960817T133000Z
7715
7716 3.8.7.4.  Sequence Number
7717
7718    Property Name:  SEQUENCE
7719
7720    Purpose:  This property defines the revision sequence number of the
7721       calendar component within a sequence of revisions.
7722
7723    Value Type:  INTEGER
7724
7725    Property Parameters:  IANA and non-standard property parameters can
7726       be specified on this property.
7727
7728
7729
7730 Desruisseaux                Standards Track                   [Page 138]
7731 \f
7732 RFC 5545                       iCalendar                  September 2009
7733
7734
7735    Conformance:  The property can be specified in "VEVENT", "VTODO", or
7736       "VJOURNAL" calendar component.
7737
7738    Description:  When a calendar component is created, its sequence
7739       number is 0.  It is monotonically incremented by the "Organizer's"
7740       CUA each time the "Organizer" makes a significant revision to the
7741       calendar component.
7742
7743       The "Organizer" includes this property in an iCalendar object that
7744       it sends to an "Attendee" to specify the current version of the
7745       calendar component.
7746
7747       The "Attendee" includes this property in an iCalendar object that
7748       it sends to the "Organizer" to specify the version of the calendar
7749       component to which the "Attendee" is referring.
7750
7751       A change to the sequence number is not the mechanism that an
7752       "Organizer" uses to request a response from the "Attendees".  The
7753       "RSVP" parameter on the "ATTENDEE" property is used by the
7754       "Organizer" to indicate that a response from the "Attendees" is
7755       requested.
7756
7757       Recurrence instances of a recurring component MAY have different
7758       sequence numbers.
7759
7760    Format Definition:  This property is defined by the following
7761       notation:
7762
7763        seq = "SEQUENCE" seqparam ":" integer CRLF
7764        ; Default is "0"
7765
7766        seqparam   = *(";" other-param)
7767
7768    Example:  The following is an example of this property for a calendar
7769       component that was just created by the "Organizer":
7770
7771        SEQUENCE:0
7772
7773       The following is an example of this property for a calendar
7774       component that has been revised two different times by the
7775       "Organizer":
7776
7777        SEQUENCE:2
7778
7779 3.8.8.  Miscellaneous Component Properties
7780
7781    The following properties specify information about a number of
7782    miscellaneous features of calendar components.
7783
7784
7785
7786 Desruisseaux                Standards Track                   [Page 139]
7787 \f
7788 RFC 5545                       iCalendar                  September 2009
7789
7790
7791 3.8.8.1.  IANA Properties
7792
7793    Property Name:  An IANA-registered property name
7794
7795    Value Type:  The default value type is TEXT.  The value type can be
7796       set to any value type.
7797
7798    Property Parameters:  Any parameter can be specified on this
7799       property.
7800
7801    Description:  This specification allows other properties registered
7802       with IANA to be specified in any calendar components.  Compliant
7803       applications are expected to be able to parse these other IANA-
7804       registered properties but can ignore them.
7805
7806    Format Definition:  This property is defined by the following
7807       notation:
7808
7809        iana-prop = iana-token *(";" icalparameter) ":" value CRLF
7810
7811    Example:  The following are examples of properties that might be
7812       registered to IANA:
7813
7814        DRESSCODE:CASUAL
7815
7816        NON-SMOKING;VALUE=BOOLEAN:TRUE
7817
7818 3.8.8.2.  Non-Standard Properties
7819
7820    Property Name:  Any property name with a "X-" prefix
7821
7822    Purpose:  This class of property provides a framework for defining
7823       non-standard properties.
7824
7825    Value Type:  The default value type is TEXT.  The value type can be
7826       set to any value type.
7827
7828    Property Parameters:  IANA, non-standard, and language property
7829       parameters can be specified on this property.
7830
7831    Conformance:  This property can be specified in any calendar
7832       component.
7833
7834    Description:  The MIME Calendaring and Scheduling Content Type
7835       provides a "standard mechanism for doing non-standard things".
7836       This extension support is provided for implementers to "push the
7837       envelope" on the existing version of the memo.  Extension
7838       properties are specified by property and/or property parameter
7839
7840
7841
7842 Desruisseaux                Standards Track                   [Page 140]
7843 \f
7844 RFC 5545                       iCalendar                  September 2009
7845
7846
7847       names that have the prefix text of "X-" (the two-character
7848       sequence: LATIN CAPITAL LETTER X character followed by the HYPHEN-
7849       MINUS character).  It is recommended that vendors concatenate onto
7850       this sentinel another short prefix text to identify the vendor.
7851       This will facilitate readability of the extensions and minimize
7852       possible collision of names between different vendors.  User
7853       agents that support this content type are expected to be able to
7854       parse the extension properties and property parameters but can
7855       ignore them.
7856
7857       At present, there is no registration authority for names of
7858       extension properties and property parameters.  The value type for
7859       this property is TEXT.  Optionally, the value type can be any of
7860       the other valid value types.
7861
7862    Format Definition:  This property is defined by the following
7863       notation:
7864
7865        x-prop = x-name *(";" icalparameter) ":" value CRLF
7866
7867    Example:  The following might be the ABC vendor's extension for an
7868       audio-clip form of subject property:
7869
7870        X-ABC-MMSUBJ;VALUE=URI;FMTTYPE=audio/basic:http://www.example.
7871         org/mysubj.au
7872
7873 3.8.8.3.  Request Status
7874
7875    Property Name:  REQUEST-STATUS
7876
7877    Purpose:  This property defines the status code returned for a
7878       scheduling request.
7879
7880    Value Type:  TEXT
7881
7882    Property Parameters:  IANA, non-standard, and language property
7883       parameters can be specified on this property.
7884
7885    Conformance:  The property can be specified in the "VEVENT", "VTODO",
7886       "VJOURNAL", or "VFREEBUSY" calendar component.
7887
7888    Description:  This property is used to return status code information
7889       related to the processing of an associated iCalendar object.  The
7890       value type for this property is TEXT.
7891
7892
7893
7894
7895
7896
7897
7898 Desruisseaux                Standards Track                   [Page 141]
7899 \f
7900 RFC 5545                       iCalendar                  September 2009
7901
7902
7903       The value consists of a short return status component, a longer
7904       return status description component, and optionally a status-
7905       specific data component.  The components of the value are
7906       separated by the SEMICOLON character.
7907
7908       The short return status is a PERIOD character separated pair or
7909       3-tuple of integers.  For example, "3.1" or "3.1.1".  The
7910       successive levels of integers provide for a successive level of
7911       status code granularity.
7912
7913       The following are initial classes for the return status code.
7914       Individual iCalendar object methods will define specific return
7915       status codes for these classes.  In addition, other classes for
7916       the return status code may be defined using the registration
7917       process defined later in this memo.
7918
7919    +--------+----------------------------------------------------------+
7920    | Short  | Longer Return Status Description                         |
7921    | Return |                                                          |
7922    | Status |                                                          |
7923    | Code   |                                                          |
7924    +--------+----------------------------------------------------------+
7925    | 1.xx   | Preliminary success.  This class of status code          |
7926    |        | indicates that the request has been initially processed  |
7927    |        | but that completion is pending.                          |
7928    |        |                                                          |
7929    | 2.xx   | Successful.  This class of status code indicates that    |
7930    |        | the request was completed successfully.  However, the    |
7931    |        | exact status code can indicate that a fallback has been  |
7932    |        | taken.                                                   |
7933    |        |                                                          |
7934    | 3.xx   | Client Error.  This class of status code indicates that  |
7935    |        | the request was not successful.  The error is the result |
7936    |        | of either a syntax or a semantic error in the client-    |
7937    |        | formatted request.  Request should not be retried until  |
7938    |        | the condition in the request is corrected.               |
7939    |        |                                                          |
7940    | 4.xx   | Scheduling Error.  This class of status code indicates   |
7941    |        | that the request was not successful.  Some sort of error |
7942    |        | occurred within the calendaring and scheduling service,  |
7943    |        | not directly related to the request itself.              |
7944    +--------+----------------------------------------------------------+
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954 Desruisseaux                Standards Track                   [Page 142]
7955 \f
7956 RFC 5545                       iCalendar                  September 2009
7957
7958
7959    Format Definition:  This property is defined by the following
7960       notation:
7961
7962        rstatus    = "REQUEST-STATUS" rstatparam ":"
7963                     statcode ";" statdesc [";" extdata]
7964
7965        rstatparam = *(
7966                   ;
7967                   ; The following is OPTIONAL,
7968                   ; but MUST NOT occur more than once.
7969                   ;
7970                   (";" languageparam) /
7971                   ;
7972                   ; The following is OPTIONAL,
7973                   ; and MAY occur more than once.
7974                   ;
7975                   (";" other-param)
7976                   ;
7977                   )
7978
7979        statcode   = 1*DIGIT 1*2("." 1*DIGIT)
7980        ;Hierarchical, numeric return status code
7981
7982        statdesc   = text
7983        ;Textual status description
7984
7985        extdata    = text
7986        ;Textual exception data.  For example, the offending property
7987        ;name and value or complete property line.
7988
7989    Example:  The following are some possible examples of this property.
7990
7991       The COMMA and SEMICOLON separator characters in the property value
7992       are BACKSLASH character escaped because they appear in a text
7993       value.
7994
7995        REQUEST-STATUS:2.0;Success
7996
7997        REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01
7998
7999        REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled
8000         as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2
8001
8002        REQUEST-STATUS:4.1;Event conflict.  Date-time is busy.
8003
8004        REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE:
8005         mailto:jsmith@example.com
8006
8007
8008
8009
8010 Desruisseaux                Standards Track                   [Page 143]
8011 \f
8012 RFC 5545                       iCalendar                  September 2009
8013
8014
8015 4.  iCalendar Object Examples
8016
8017    The following examples are provided as an informational source of
8018    illustrative iCalendar objects consistent with this content type.
8019
8020    The following example specifies a three-day conference that begins at
8021    2:30 P.M. UTC, September 18, 1996 and ends at 10:00 P.M. UTC,
8022    September 20, 1996.
8023
8024        BEGIN:VCALENDAR
8025        PRODID:-//xyz Corp//NONSGML PDA Calendar Version 1.0//EN
8026        VERSION:2.0
8027        BEGIN:VEVENT
8028        DTSTAMP:19960704T120000Z
8029        UID:uid1@example.com
8030        ORGANIZER:mailto:jsmith@example.com
8031        DTSTART:19960918T143000Z
8032        DTEND:19960920T220000Z
8033        STATUS:CONFIRMED
8034        CATEGORIES:CONFERENCE
8035        SUMMARY:Networld+Interop Conference
8036        DESCRIPTION:Networld+Interop Conference
8037          and Exhibit\nAtlanta World Congress Center\n
8038         Atlanta\, Georgia
8039        END:VEVENT
8040        END:VCALENDAR
8041
8042    The following example specifies a group-scheduled meeting that begins
8043    at 8:30 AM EST on March 12, 1998 and ends at 9:30 AM EST on March 12,
8044    1998.  The "Organizer" has scheduled the meeting with one or more
8045    calendar users in a group.  A time zone specification for Eastern
8046    United States has been specified.
8047
8048        BEGIN:VCALENDAR
8049        PRODID:-//RDU Software//NONSGML HandCal//EN
8050        VERSION:2.0
8051        BEGIN:VTIMEZONE
8052        TZID:America/New_York
8053        BEGIN:STANDARD
8054        DTSTART:19981025T020000
8055        TZOFFSETFROM:-0400
8056        TZOFFSETTO:-0500
8057        TZNAME:EST
8058        END:STANDARD
8059        BEGIN:DAYLIGHT
8060        DTSTART:19990404T020000
8061        TZOFFSETFROM:-0500
8062        TZOFFSETTO:-0400
8063
8064
8065
8066 Desruisseaux                Standards Track                   [Page 144]
8067 \f
8068 RFC 5545                       iCalendar                  September 2009
8069
8070
8071        TZNAME:EDT
8072        END:DAYLIGHT
8073        END:VTIMEZONE
8074        BEGIN:VEVENT
8075        DTSTAMP:19980309T231000Z
8076        UID:guid-1.example.com
8077        ORGANIZER:mailto:mrbig@example.com
8078        ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:
8079         mailto:employee-A@example.com
8080        DESCRIPTION:Project XYZ Review Meeting
8081        CATEGORIES:MEETING
8082        CLASS:PUBLIC
8083        CREATED:19980309T130000Z
8084        SUMMARY:XYZ Project Review
8085        DTSTART;TZID=America/New_York:19980312T083000
8086        DTEND;TZID=America/New_York:19980312T093000
8087        LOCATION:1CP Conference Room 4350
8088        END:VEVENT
8089        END:VCALENDAR
8090
8091    The following is an example of an iCalendar object passed in a MIME
8092    message with a single body part consisting of a "text/calendar"
8093    Content Type.
8094
8095        TO:jsmith@example.com
8096        FROM:jdoe@example.com
8097        MIME-VERSION:1.0
8098        MESSAGE-ID:<id3@example.com>
8099        CONTENT-TYPE:text/calendar; method="xyz"; component="VEVENT"
8100
8101        BEGIN:VCALENDAR
8102        METHOD:xyz
8103        VERSION:2.0
8104        PRODID:-//ABC Corporation//NONSGML My Product//EN
8105        BEGIN:VEVENT
8106        DTSTAMP:19970324T120000Z
8107        SEQUENCE:0
8108        UID:uid3@example.com
8109        ORGANIZER:mailto:jdoe@example.com
8110        ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com
8111        DTSTART:19970324T123000Z
8112        DTEND:19970324T210000Z
8113        CATEGORIES:MEETING,PROJECT
8114        CLASS:PUBLIC
8115        SUMMARY:Calendaring Interoperability Planning Meeting
8116        DESCRIPTION:Discuss how we can test c&s interoperability\n
8117         using iCalendar and other IETF standards.
8118        LOCATION:LDB Lobby
8119
8120
8121
8122 Desruisseaux                Standards Track                   [Page 145]
8123 \f
8124 RFC 5545                       iCalendar                  September 2009
8125
8126
8127        ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/
8128         conf/bkgrnd.ps
8129        END:VEVENT
8130        END:VCALENDAR
8131
8132    The following is an example of a to-do due on April 15, 1998.  An
8133    audio alarm has been specified to remind the calendar user at noon,
8134    the day before the to-do is expected to be completed and repeat
8135    hourly, four additional times.  The to-do definition has been
8136    modified twice since it was initially created.
8137
8138        BEGIN:VCALENDAR
8139        VERSION:2.0
8140        PRODID:-//ABC Corporation//NONSGML My Product//EN
8141        BEGIN:VTODO
8142        DTSTAMP:19980130T134500Z
8143        SEQUENCE:2
8144        UID:uid4@example.com
8145        ORGANIZER:mailto:unclesam@example.com
8146        ATTENDEE;PARTSTAT=ACCEPTED:mailto:jqpublic@example.com
8147        DUE:19980415T000000
8148        STATUS:NEEDS-ACTION
8149        SUMMARY:Submit Income Taxes
8150        BEGIN:VALARM
8151        ACTION:AUDIO
8152        TRIGGER:19980403T120000Z
8153        ATTACH;FMTTYPE=audio/basic:http://example.com/pub/audio-
8154         files/ssbanner.aud
8155        REPEAT:4
8156        DURATION:PT1H
8157        END:VALARM
8158        END:VTODO
8159        END:VCALENDAR
8160
8161    The following is an example of a journal entry:
8162
8163        BEGIN:VCALENDAR
8164        VERSION:2.0
8165        PRODID:-//ABC Corporation//NONSGML My Product//EN
8166        BEGIN:VJOURNAL
8167        DTSTAMP:19970324T120000Z
8168        UID:uid5@example.com
8169        ORGANIZER:mailto:jsmith@example.com
8170        STATUS:DRAFT
8171        CLASS:PUBLIC
8172        CATEGORIES:Project Report,XYZ,Weekly Meeting
8173        DESCRIPTION:Project xyz Review Meeting Minutes\n
8174         Agenda\n1. Review of project version 1.0 requirements.\n2.
8175
8176
8177
8178 Desruisseaux                Standards Track                   [Page 146]
8179 \f
8180 RFC 5545                       iCalendar                  September 2009
8181
8182
8183          Definition
8184         of project processes.\n3. Review of project schedule.\n
8185         Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was
8186          decided that the requirements need to be signed off by
8187          product marketing.\n-Project processes were accepted.\n
8188         -Project schedule needs to account for scheduled holidays
8189          and employee vacation time. Check with HR for specific
8190          dates.\n-New schedule will be distributed by Friday.\n-
8191         Next weeks meeting is cancelled. No meeting until 3/23.
8192        END:VJOURNAL
8193        END:VCALENDAR
8194
8195    The following is an example of published busy time information.  The
8196    iCalendar object might be placed in the network resource
8197    http://www.example.com/calendar/busytime/jsmith.ifb.
8198
8199        BEGIN:VCALENDAR
8200        VERSION:2.0
8201        PRODID:-//RDU Software//NONSGML HandCal//EN
8202        BEGIN:VFREEBUSY
8203        ORGANIZER:mailto:jsmith@example.com
8204        DTSTART:19980313T141711Z
8205        DTEND:19980410T141711Z
8206        FREEBUSY:19980314T233000Z/19980315T003000Z
8207        FREEBUSY:19980316T153000Z/19980316T163000Z
8208        FREEBUSY:19980318T030000Z/19980318T040000Z
8209        URL:http://www.example.com/calendar/busytime/jsmith.ifb
8210        END:VFREEBUSY
8211        END:VCALENDAR
8212
8213 5.  Recommended Practices
8214
8215    These recommended practices should be followed in order to assure
8216    consistent handling of the following cases for an iCalendar object.
8217
8218    1.  Content lines longer than 75 octets SHOULD be folded.
8219
8220    2.  When the combination of the "RRULE" and "RDATE" properties in a
8221        recurring component produces multiple instances having the same
8222        start DATE-TIME value, they should be collapsed to, and
8223        considered as, a single instance.  If the "RDATE" property is
8224        specified as a PERIOD value the duration of the recurrence
8225        instance will be the one specified by the "RDATE" property, and
8226        not the duration of the recurrence instance defined by the
8227        "DTSTART" property.
8228
8229    3.  When a calendar user receives multiple requests for the same
8230        calendar component (e.g., REQUEST for a "VEVENT" calendar
8231
8232
8233
8234 Desruisseaux                Standards Track                   [Page 147]
8235 \f
8236 RFC 5545                       iCalendar                  September 2009
8237
8238
8239        component) as a result of being on multiple mailing lists
8240        specified by "ATTENDEE" properties in the request, they SHOULD
8241        respond to only one of the requests.  The calendar user SHOULD
8242        also specify (using the "MEMBER" parameter of the "ATTENDEE"
8243        property) of which mailing list they are a member.
8244
8245    4.  An implementation can truncate a "SUMMARY" property value to 255
8246        octets, but it MUST NOT truncate the value in the middle of a
8247        UTF-8 multi-octet sequence.
8248
8249    5.  If seconds of the minute are not supported by an implementation,
8250        then a value of "00" SHOULD be specified for the seconds
8251        component in a time value.
8252
8253    6.  "TZURL" values SHOULD NOT be specified as a file URI type.  This
8254        URI form can be useful within an organization, but is problematic
8255        in the Internet.
8256
8257    7.  Some possible English values for "CATEGORIES" property include:
8258        "ANNIVERSARY", "APPOINTMENT", "BUSINESS", "EDUCATION", "HOLIDAY",
8259        "MEETING", "MISCELLANEOUS", "NON-WORKING HOURS", "NOT IN OFFICE",
8260        "PERSONAL", "PHONE CALL", "SICK DAY", "SPECIAL OCCASION",
8261        "TRAVEL", "VACATION".  Categories can be specified in any
8262        registered language.
8263
8264    8.  Some possible English values for the "RESOURCES" property
8265        include: "CATERING", "CHAIRS", "COMPUTER PROJECTOR", "EASEL",
8266        "OVERHEAD PROJECTOR", "SPEAKER PHONE", "TABLE", "TV", "VCR",
8267        "VIDEO PHONE", "VEHICLE".  Resources can be specified in any
8268        registered language.
8269
8270 6.  Internationalization Considerations
8271
8272    Applications MUST generate iCalendar streams in the UTF-8 charset and
8273    MUST accept an iCalendar stream in the UTF-8 or US-ASCII charset.
8274
8275 7.  Security Considerations
8276
8277    Because calendaring and scheduling information is very privacy-
8278    sensitive, the protocol used for the transmission of calendaring and
8279    scheduling information should have capabilities to protect the
8280    information from possible threats, such as eavesdropping, replay,
8281    message insertion, deletion, modification, and man-in-the-middle
8282    attacks.
8283
8284    As this document only defines the data format and media type of text/
8285    calendar that is independent of any calendar service or protocol, it
8286    is up to the actual protocol specifications such as iTIP [2446bis],
8287
8288
8289
8290 Desruisseaux                Standards Track                   [Page 148]
8291 \f
8292 RFC 5545                       iCalendar                  September 2009
8293
8294
8295    iMIP [2447bis], and "Calendaring Extensions to WebDAV (CalDAV)"
8296    [RFC4791] to describe the threats that the above attacks present, as
8297    well as ways in which to mitigate them.
8298
8299 8.  IANA Considerations
8300
8301 8.1.  iCalendar Media Type Registration
8302
8303    The Calendaring and Scheduling Core Object Specification is intended
8304    for use as a MIME content type.
8305
8306    To: ietf-types@iana.org
8307
8308    Subject: Registration of media type text/calendar
8309
8310    Type name:  text
8311
8312    Subtype name:  calendar
8313
8314    Required parameters:  none
8315
8316    Optional parameters:  charset, method, component, and optinfo
8317
8318       The "charset" parameter is defined in [RFC2046] for subtypes of
8319       the "text" media type.  It is used to indicate the charset used in
8320       the body part.  The charset supported by this revision of
8321       iCalendar is UTF-8.  The use of any other charset is deprecated by
8322       this revision of iCalendar; however, note that this revision
8323       requires that compliant applications MUST accept iCalendar streams
8324       using either the UTF-8 or US-ASCII charset.
8325
8326       The "method" parameter is used to convey the iCalendar object
8327       method or transaction semantics for the calendaring and scheduling
8328       information.  It also is an identifier for the restricted set of
8329       properties and values of which the iCalendar object consists.  The
8330       parameter is to be used as a guide for applications interpreting
8331       the information contained within the body part.  It SHOULD NOT be
8332       used to exclude or require particular pieces of information unless
8333       the identified method definition specifically calls for this
8334       behavior.  Unless specifically forbidden by a particular method
8335       definition, a text/calendar content type can contain any set of
8336       properties permitted by the Calendaring and Scheduling Core Object
8337       Specification.  The "method" parameter MUST be specified and MUST
8338       be set to the same value as the "METHOD" component property of the
8339       iCalendar objects of the iCalendar stream if and only if the
8340       iCalendar objects in the iCalendar stream all have a "METHOD"
8341       component property set to the same value.
8342
8343
8344
8345
8346 Desruisseaux                Standards Track                   [Page 149]
8347 \f
8348 RFC 5545                       iCalendar                  September 2009
8349
8350
8351       The value for the "method" parameter is defined as follows:
8352
8353        method  = 1*(ALPHA / DIGIT / "-")
8354        ; IANA-registered iCalendar object method
8355
8356       The "component" parameter conveys the type of iCalendar calendar
8357       component within the body part.  If the iCalendar object contains
8358       more than one calendar component type, then multiple component
8359       parameters MUST be specified.
8360
8361       The value for the "component" parameter is defined as follows:
8362
8363        component = "VEVENT"
8364                  / "VTODO"
8365                  / "VJOURNAL"
8366                  / "VFREEBUSY"
8367                  / "VTIMEZONE"
8368                  / iana-token
8369                  / x-name
8370
8371       The "optinfo" parameter conveys optional information about the
8372       iCalendar object within the body part.  This parameter can only
8373       specify semantics already specified by the iCalendar object and
8374       that can be otherwise determined by parsing the body part.  In
8375       addition, the optional information specified by this parameter
8376       MUST be consistent with that information specified by the
8377       iCalendar object.  For example, it can be used to convey the
8378       "Attendee" response status to a meeting request.  The parameter
8379       value consists of a string value.
8380
8381       The parameter can be specified multiple times.
8382
8383       The value for the "optinfo" parameter is defined as follows:
8384
8385        optinfo    = infovalue / qinfovalue
8386
8387        infovalue  = iana-token / x-name
8388
8389        qinfovalue = DQUOTE (infovalue) DQUOTE
8390
8391    Encoding considerations:  This media type can contain 8bit
8392       characters, so the use of quoted-printable or base64 MIME Content-
8393       Transfer-Encodings might be necessary when iCalendar objects are
8394       transferred across protocols restricted to the 7bit repertoire.
8395       Note that a text valued property in the content entity can also
8396       have content encoding of special characters using a BACKSLASH
8397       character escapement technique.  This means that content values
8398       can end up being encoded twice.
8399
8400
8401
8402 Desruisseaux                Standards Track                   [Page 150]
8403 \f
8404 RFC 5545                       iCalendar                  September 2009
8405
8406
8407    Security considerations:  See Section 7.
8408
8409    Interoperability considerations:  This media type is intended to
8410       define a common format for conveying calendaring and scheduling
8411       information between different systems.  It is heavily based on the
8412       earlier [VCAL] industry specification.
8413
8414    Published specification:  This specification.
8415
8416    Applications that use this media type:  This media type is designed
8417       for widespread use by Internet calendaring and scheduling
8418       applications.  In addition, applications in the workflow and
8419       document management area might find this content-type applicable.
8420       The iTIP [2446bis], iMIP [2447bis], and CalDAV [RFC4791] Internet
8421       protocols directly use this media type also.
8422
8423    Additional information:
8424
8425       Magic number(s):  None.
8426
8427       File extension(s):  The file extension of "ics" is to be used to
8428          designate a file containing (an arbitrary set of) calendaring
8429          and scheduling information consistent with this MIME content
8430          type.
8431
8432          The file extension of "ifb" is to be used to designate a file
8433          containing free or busy time information consistent with this
8434          MIME content type.
8435
8436       Macintosh file type code(s):  The file type code of "iCal" is to
8437          be used in Apple MacIntosh operating system environments to
8438          designate a file containing calendaring and scheduling
8439          information consistent with this MIME media type.
8440
8441          The file type code of "iFBf" is to be used in Apple MacIntosh
8442          operating system environments to designate a file containing
8443          free or busy time information consistent with this MIME media
8444          type.
8445
8446    Person & email address to contact for further information:  See the
8447       "Author's Address" section of this document.
8448
8449    Intended usage:  COMMON
8450
8451    Restrictions on usage:  There are no restrictions on where this media
8452       type can be used.
8453
8454    Author:  See the "Author's Address" section of this document.
8455
8456
8457
8458 Desruisseaux                Standards Track                   [Page 151]
8459 \f
8460 RFC 5545                       iCalendar                  September 2009
8461
8462
8463    Change controller:  IETF
8464
8465 8.2.  New iCalendar Elements Registration
8466
8467    This section defines the process to register new or modified
8468    iCalendar elements, that is, components, properties, parameters,
8469    value data types, and values, with IANA.
8470
8471 8.2.1.  iCalendar Elements Registration Procedure
8472
8473    The IETF will create a mailing list, icalendar@ietf.org, which can be
8474    used for public discussion of iCalendar elements proposals prior to
8475    registration.  Use of the mailing list is strongly encouraged.  The
8476    IESG will appoint a designated expert who will monitor the
8477    icalendar@ietf.org mailing list and review registrations.
8478
8479    Registration of new iCalendar elements MUST be reviewed by the
8480    designated expert and published in an RFC.  A Standards Track RFC is
8481    REQUIRED for the registration of new value data types that modify
8482    existing properties, as well as for the registration of participation
8483    status values to be used in "VEVENT" calendar components.  A
8484    Standards Track RFC is also REQUIRED for registration of iCalendar
8485    elements that modify iCalendar elements previously documented in a
8486    Standards Track RFC.
8487
8488    The registration procedure begins when a completed registration
8489    template, defined in the sections below, is sent to
8490    icalendar@ietf.org and iana@iana.org.  The designated expert is
8491    expected to tell IANA and the submitter of the registration within
8492    two weeks whether the registration is approved, approved with minor
8493    changes, or rejected with cause.  When a registration is rejected
8494    with cause, it can be re-submitted if the concerns listed in the
8495    cause are addressed.  Decisions made by the designated expert can be
8496    appealed to the IESG Applications Area Director, then to the IESG.
8497    They follow the normal appeals procedure for IESG decisions.
8498
8499 8.2.2.  Registration Template for Components
8500
8501    A component is defined by completing the following template.
8502
8503    Component name:  The name of the component.
8504
8505    Purpose:  The purpose of the component.  Give a short but clear
8506       description.
8507
8508    Format definition:  The ABNF for the component definition needs to be
8509       specified.
8510
8511
8512
8513
8514 Desruisseaux                Standards Track                   [Page 152]
8515 \f
8516 RFC 5545                       iCalendar                  September 2009
8517
8518
8519    Description:  Any special notes about the component, how it is to be
8520       used, etc.
8521
8522    Example(s):  One or more examples of instances of the component need
8523       to be specified.
8524
8525 8.2.3.  Registration Template for Properties
8526
8527    A property is defined by completing the following template.
8528
8529    Property name:  The name of the property.
8530
8531    Purpose:  The purpose of the property.  Give a short but clear
8532       description.
8533
8534    Value type:  Any of the valid value types for the property value need
8535       to be specified.  The default value type also needs to be
8536       specified.
8537
8538    Property parameters:  Any of the valid property parameters for the
8539       property MUST be specified.
8540
8541    Conformance:  The calendar components in which the property can
8542       appear MUST be specified.
8543
8544    Description:  Any special notes about the property, how it is to be
8545       used, etc.
8546
8547    Format definition:  The ABNF for the property definition needs to be
8548       specified.
8549
8550    Example(s):  One or more examples of instances of the property need
8551       to be specified.
8552
8553 8.2.4.  Registration Template for Parameters
8554
8555    A parameter is defined by completing the following template.
8556
8557    Parameter name:  The name of the parameter.
8558
8559    Purpose:  The purpose of the parameter.  Give a short but clear
8560       description.
8561
8562    Format definition:  The ABNF for the parameter definition needs to be
8563       specified.
8564
8565    Description:  Any special notes about the parameter, how it is to be
8566       used, etc.
8567
8568
8569
8570 Desruisseaux                Standards Track                   [Page 153]
8571 \f
8572 RFC 5545                       iCalendar                  September 2009
8573
8574
8575    Example(s):  One or more examples of instances of the parameter need
8576       to be specified.
8577
8578 8.2.5.  Registration Template for Value Data Types
8579
8580    A value data type is defined by completing the following template.
8581
8582    Value name:  The name of the value type.
8583
8584    Purpose:  The purpose of the value type.  Give a short but clear
8585       description.
8586
8587    Format definition:  The ABNF for the value type definition needs to
8588       be specified.
8589
8590    Description:  Any special notes about the value type, how it is to be
8591       used, etc.
8592
8593    Example(s):  One or more examples of instances of the value type need
8594       to be specified.
8595
8596 8.2.6.  Registration Template for Values
8597
8598    A value is defined by completing the following template.
8599
8600    Value:  The value literal.
8601
8602    Purpose:  The purpose of the value.  Give a short but clear
8603       description.
8604
8605    Conformance:  The calendar properties and/or parameters that can take
8606       this value need to be specified.
8607
8608    Example(s):  One or more examples of instances of the value need to
8609       be specified.
8610
8611    The following is a fictitious example of a registration of an
8612    iCalendar value:
8613
8614    Value:  TOP-SECRET
8615
8616    Purpose:  This value is used to specify the access classification of
8617       top-secret calendar components.
8618
8619    Conformance:  This value can be used with the "CLASS" property.
8620
8621
8622
8623
8624
8625
8626 Desruisseaux                Standards Track                   [Page 154]
8627 \f
8628 RFC 5545                       iCalendar                  September 2009
8629
8630
8631    Example(s):  The following is an example of this value used with the
8632       "CLASS" property:
8633
8634      CLASS:TOP-SECRET
8635
8636 8.3.  Initial iCalendar Elements Registries
8637
8638    The IANA created and maintains the following registries for iCalendar
8639    elements with pointers to appropriate reference documents.
8640
8641 8.3.1.  Components Registry
8642
8643    The following table has been used to initialize the components
8644    registry.
8645
8646              +-----------+---------+-------------------------+
8647              | Component | Status  | Reference               |
8648              +-----------+---------+-------------------------+
8649              | VCALENDAR | Current | RFC 5545, Section 3.4   |
8650              |           |         |                         |
8651              | VEVENT    | Current | RFC 5545, Section 3.6.1 |
8652              |           |         |                         |
8653              | VTODO     | Current | RFC 5545, Section 3.6.2 |
8654              |           |         |                         |
8655              | VJOURNAL  | Current | RFC 5545, Section 3.6.3 |
8656              |           |         |                         |
8657              | VFREEBUSY | Current | RFC 5545, Section 3.6.4 |
8658              |           |         |                         |
8659              | VTIMEZONE | Current | RFC 5545, Section 3.6.5 |
8660              |           |         |                         |
8661              | VALARM    | Current | RFC 5545, Section 3.6.6 |
8662              |           |         |                         |
8663              | STANDARD  | Current | RFC 5545, Section 3.6.5 |
8664              |           |         |                         |
8665              | DAYLIGHT  | Current | RFC 5545, Section 3.6.5 |
8666              +-----------+---------+-------------------------+
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682 Desruisseaux                Standards Track                   [Page 155]
8683 \f
8684 RFC 5545                       iCalendar                  September 2009
8685
8686
8687 8.3.2.  Properties Registry
8688
8689    The following table is has been used to initialize the properties
8690    registry.
8691
8692       +------------------+------------+----------------------------+
8693       | Property         | Status     | Reference                  |
8694       +------------------+------------+----------------------------+
8695       | CALSCALE         | Current    | RFC 5545, Section 3.7.1    |
8696       | METHOD           | Current    | RFC 5545, Section 3.7.2    |
8697       |                  |            |                            |
8698       | PRODID           | Current    | RFC 5545, Section 3.7.3    |
8699       |                  |            |                            |
8700       | VERSION          | Current    | RFC 5545, Section 3.7.4    |
8701       |                  |            |                            |
8702       | ATTACH           | Current    | RFC 5545, Section 3.8.1.1  |
8703       |                  |            |                            |
8704       | CATEGORIES       | Current    | RFC 5545, Section 3.8.1.2  |
8705       |                  |            |                            |
8706       | CLASS            | Current    | RFC 5545, Section 3.8.1.3  |
8707       |                  |            |                            |
8708       | COMMENT          | Current    | RFC 5545, Section 3.8.1.4  |
8709       |                  |            |                            |
8710       | DESCRIPTION      | Current    | RFC 5545, Section 3.8.1.5  |
8711       |                  |            |                            |
8712       | GEO              | Current    | RFC 5545, Section 3.8.1.6  |
8713       |                  |            |                            |
8714       | LOCATION         | Current    | RFC 5545, Section 3.8.1.7  |
8715       |                  |            |                            |
8716       | PERCENT-COMPLETE | Current    | RFC 5545, Section 3.8.1.8  |
8717       |                  |            |                            |
8718       | PRIORITY         | Current    | RFC 5545, Section 3.8.1.9  |
8719       |                  |            |                            |
8720       | RESOURCES        | Current    | RFC 5545, Section 3.8.1.10 |
8721       |                  |            |                            |
8722       | STATUS           | Current    | RFC 5545, Section 3.8.1.11 |
8723       |                  |            |                            |
8724       | SUMMARY          | Current    | RFC 5545, Section 3.8.1.12 |
8725       |                  |            |                            |
8726       | COMPLETED        | Current    | RFC 5545, Section 3.8.2.1  |
8727       |                  |            |                            |
8728       | DTEND            | Current    | RFC 5545, Section 3.8.2.2  |
8729       |                  |            |                            |
8730       | DUE              | Current    | RFC 5545, Section 3.8.2.3  |
8731       |                  |            |                            |
8732       | DTSTART          | Current    | RFC 5545, Section 3.8.2.4  |
8733       |                  |            |                            |
8734       | DURATION         | Current    | RFC 5545, Section 3.8.2.5  |
8735
8736
8737
8738 Desruisseaux                Standards Track                   [Page 156]
8739 \f
8740 RFC 5545                       iCalendar                  September 2009
8741
8742
8743       |                  |            |                            |
8744       | FREEBUSY         | Current    | RFC 5545, Section 3.8.2.6  |
8745       |                  |            |                            |
8746       | TRANSP           | Current    | RFC 5545, Section 3.8.2.7  |
8747       |                  |            |                            |
8748       | TZID             | Current    | RFC 5545, Section 3.8.3.1  |
8749       |                  |            |                            |
8750       | TZNAME           | Current    | RFC 5545, Section 3.8.3.2  |
8751       |                  |            |                            |
8752       | TZOFFSETFROM     | Current    | RFC 5545, Section 3.8.3.3  |
8753       |                  |            |                            |
8754       | TZOFFSETTO       | Current    | RFC 5545, Section 3.8.3.4  |
8755       |                  |            |                            |
8756       | TZURL            | Current    | RFC 5545, Section 3.8.3.5  |
8757       |                  |            |                            |
8758       | ATTENDEE         | Current    | RFC 5545, Section 3.8.4.1  |
8759       |                  |            |                            |
8760       | CONTACT          | Current    | RFC 5545, Section 3.8.4.2  |
8761       |                  |            |                            |
8762       | ORGANIZER        | Current    | RFC 5545, Section 3.8.4.3  |
8763       |                  |            |                            |
8764       | RECURRENCE-ID    | Current    | RFC 5545, Section 3.8.4.4  |
8765       |                  |            |                            |
8766       | RELATED-TO       | Current    | RFC 5545, Section 3.8.4.5  |
8767       |                  |            |                            |
8768       | URL              | Current    | RFC 5545, Section 3.8.4.6  |
8769       |                  |            |                            |
8770       | UID              | Current    | RFC 5545, Section 3.8.4.7  |
8771       |                  |            |                            |
8772       | EXDATE           | Current    | RFC 5545, Section 3.8.5.1  |
8773       |                  |            |                            |
8774       | EXRULE           | Deprecated | [RFC2445], Section 4.8.5.2 |
8775       |                  |            |                            |
8776       | RDATE            | Current    | RFC 5545, Section 3.8.5.2  |
8777       |                  |            |                            |
8778       | RRULE            | Current    | RFC 5545, Section 3.8.5.3  |
8779       |                  |            |                            |
8780       | ACTION           | Current    | RFC 5545, Section 3.8.6.1  |
8781       |                  |            |                            |
8782       | REPEAT           | Current    | RFC 5545, Section 3.8.6.2  |
8783       |                  |            |                            |
8784       | TRIGGER          | Current    | RFC 5545, Section 3.8.6.3  |
8785       |                  |            |                            |
8786       | CREATED          | Current    | RFC 5545, Section 3.8.7.1  |
8787       |                  |            |                            |
8788       | DTSTAMP          | Current    | RFC 5545, Section 3.8.7.2  |
8789       |                  |            |                            |
8790       | LAST-MODIFIED    | Current    | RFC 5545, Section 3.8.7.3  |
8791
8792
8793
8794 Desruisseaux                Standards Track                   [Page 157]
8795 \f
8796 RFC 5545                       iCalendar                  September 2009
8797
8798
8799       |                  |            |                            |
8800       | SEQUENCE         | Current    | RFC 5545, Section 3.8.7.4  |
8801       |                  |            |                            |
8802       | REQUEST-STATUS   | Current    | RFC 5545, Section 3.8.8.3  |
8803       +------------------+------------+----------------------------+
8804
8805 8.3.3.  Parameters Registry
8806
8807    The following table has been used to initialize the parameters
8808    registry.
8809
8810           +----------------+---------+--------------------------+
8811           | Parameter      | Status  | Reference                |
8812           +----------------+---------+--------------------------+
8813           | ALTREP         | Current | RFC 5545, Section 3.2.1  |
8814           |                |         |                          |
8815           | CN             | Current | RFC 5545, Section 3.2.2  |
8816           |                |         |                          |
8817           | CUTYPE         | Current | RFC 5545, Section 3.2.3  |
8818           |                |         |                          |
8819           | DELEGATED-FROM | Current | RFC 5545, Section 3.2.4  |
8820           |                |         |                          |
8821           | DELEGATED-TO   | Current | RFC 5545, Section 3.2.5  |
8822           |                |         |                          |
8823           | DIR            | Current | RFC 5545, Section 3.2.6  |
8824           |                |         |                          |
8825           | ENCODING       | Current | RFC 5545, Section 3.2.7  |
8826           |                |         |                          |
8827           | FMTTYPE        | Current | RFC 5545, Section 3.2.8  |
8828           |                |         |                          |
8829           | FBTYPE         | Current | RFC 5545, Section 3.2.9  |
8830           |                |         |                          |
8831           | LANGUAGE       | Current | RFC 5545, Section 3.2.10 |
8832           |                |         |                          |
8833           | MEMBER         | Current | RFC 5545, Section 3.2.11 |
8834           |                |         |                          |
8835           | PARTSTAT       | Current | RFC 5545, Section 3.2.12 |
8836           |                |         |                          |
8837           | RANGE          | Current | RFC 5545, Section 3.2.13 |
8838           |                |         |                          |
8839           | RELATED        | Current | RFC 5545, Section 3.2.14 |
8840           |                |         |                          |
8841           | RELTYPE        | Current | RFC 5545, Section 3.2.15 |
8842           |                |         |                          |
8843           | ROLE           | Current | RFC 5545, Section 3.2.16 |
8844           |                |         |                          |
8845           | RSVP           | Current | RFC 5545, Section 3.2.17 |
8846           |                |         |                          |
8847
8848
8849
8850 Desruisseaux                Standards Track                   [Page 158]
8851 \f
8852 RFC 5545                       iCalendar                  September 2009
8853
8854
8855           | SENT-BY        | Current | RFC 5545, Section 3.2.18 |
8856           |                |         |                          |
8857           | TZID           | Current | RFC 5545, Section 3.2.19 |
8858           |                |         |                          |
8859           | VALUE          | Current | RFC 5545, Section 3.2.20 |
8860           +----------------+---------+--------------------------+
8861
8862 8.3.4.  Value Data Types Registry
8863
8864    The following table has been used to initialize the value data types
8865    registry.
8866
8867          +-----------------+---------+--------------------------+
8868          | Value Data Type | Status  | Reference                |
8869          +-----------------+---------+--------------------------+
8870          | BINARY          | Current | RFC 5545, Section 3.3.1  |
8871          |                 |         |                          |
8872          | BOOLEAN         | Current | RFC 5545, Section 3.3.2  |
8873          |                 |         |                          |
8874          | CAL-ADDRESS     | Current | RFC 5545, Section 3.3.3  |
8875          |                 |         |                          |
8876          | DATE            | Current | RFC 5545, Section 3.3.4  |
8877          |                 |         |                          |
8878          | DATE-TIME       | Current | RFC 5545, Section 3.3.5  |
8879          |                 |         |                          |
8880          | DURATION        | Current | RFC 5545, Section 3.3.6  |
8881          |                 |         |                          |
8882          | FLOAT           | Current | RFC 5545, Section 3.3.7  |
8883          |                 |         |                          |
8884          | INTEGER         | Current | RFC 5545, Section 3.3.8  |
8885          |                 |         |                          |
8886          | PERIOD          | Current | RFC 5545, Section 3.3.9  |
8887          |                 |         |                          |
8888          | RECUR           | Current | RFC 5545, Section 3.3.10 |
8889          |                 |         |                          |
8890          | TEXT            | Current | RFC 5545, Section 3.3.11 |
8891          |                 |         |                          |
8892          | TIME            | Current | RFC 5545, Section 3.3.12 |
8893          |                 |         |                          |
8894          | URI             | Current | RFC 5545, Section 3.3.13 |
8895          |                 |         |                          |
8896          | UTC-OFFSET      | Current | RFC 5545, Section 3.3.14 |
8897          +-----------------+---------+--------------------------+
8898
8899
8900
8901
8902
8903
8904
8905
8906 Desruisseaux                Standards Track                   [Page 159]
8907 \f
8908 RFC 5545                       iCalendar                  September 2009
8909
8910
8911 8.3.5.  Calendar User Types Registry
8912
8913    The following table has been used to initialize the calendar user
8914    types registry.
8915
8916         +--------------------+---------+-------------------------+
8917         | Calendar User Type | Status  | Reference               |
8918         +--------------------+---------+-------------------------+
8919         | INDIVIDUAL         | Current | RFC 5545, Section 3.2.3 |
8920         |                    |         |                         |
8921         | GROUP              | Current | RFC 5545, Section 3.2.3 |
8922         |                    |         |                         |
8923         | RESOURCE           | Current | RFC 5545, Section 3.2.3 |
8924         |                    |         |                         |
8925         | ROOM               | Current | RFC 5545, Section 3.2.3 |
8926         |                    |         |                         |
8927         | UNKNOWN            | Current | RFC 5545, Section 3.2.3 |
8928         +--------------------+---------+-------------------------+
8929
8930 8.3.6.  Free/Busy Time Types Registry
8931
8932    The following table has been used to initialize the free/busy time
8933    types registry.
8934
8935         +---------------------+---------+-------------------------+
8936         | Free/Busy Time Type | Status  | Reference               |
8937         +---------------------+---------+-------------------------+
8938         | FREE                | Current | RFC 5545, Section 3.2.9 |
8939         |                     |         |                         |
8940         | BUSY                | Current | RFC 5545, Section 3.2.9 |
8941         |                     |         |                         |
8942         | BUSY-UNAVAILABLE    | Current | RFC 5545, Section 3.2.9 |
8943         |                     |         |                         |
8944         | BUSY-TENTATIVE      | Current | RFC 5545, Section 3.2.9 |
8945         +---------------------+---------+-------------------------+
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962 Desruisseaux                Standards Track                   [Page 160]
8963 \f
8964 RFC 5545                       iCalendar                  September 2009
8965
8966
8967 8.3.7.  Participation Statuses Registry
8968
8969    The following table has been used to initialize the participation
8970    statuses registry.
8971
8972         +--------------------+---------+--------------------------+
8973         | Participant Status | Status  | Reference                |
8974         +--------------------+---------+--------------------------+
8975         | NEEDS-ACTION       | Current | RFC 5545, Section 3.2.12 |
8976         |                    |         |                          |
8977         | ACCEPTED           | Current | RFC 5545, Section 3.2.12 |
8978         |                    |         |                          |
8979         | DECLINED           | Current | RFC 5545, Section 3.2.12 |
8980         |                    |         |                          |
8981         | TENTATIVE          | Current | RFC 5545, Section 3.2.12 |
8982         |                    |         |                          |
8983         | DELEGATED          | Current | RFC 5545, Section 3.2.12 |
8984         |                    |         |                          |
8985         | COMPLETED          | Current | RFC 5545, Section 3.2.12 |
8986         |                    |         |                          |
8987         | IN-PROCESS         | Current | RFC 5545, Section 3.2.12 |
8988         +--------------------+---------+--------------------------+
8989
8990 8.3.8.  Relationship Types Registry
8991
8992    The following table has been used to initialize the relationship
8993    types registry.
8994
8995         +-------------------+---------+--------------------------+
8996         | Relationship Type | Status  | Reference                |
8997         +-------------------+---------+--------------------------+
8998         | CHILD             | Current | RFC 5545, Section 3.2.15 |
8999         |                   |         |                          |
9000         | PARENT            | Current | RFC 5545, Section 3.2.15 |
9001         |                   |         |                          |
9002         | SIBLING           | Current | RFC 5545, Section 3.2.15 |
9003         +-------------------+---------+--------------------------+
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018 Desruisseaux                Standards Track                   [Page 161]
9019 \f
9020 RFC 5545                       iCalendar                  September 2009
9021
9022
9023 8.3.9.  Participation Roles Registry
9024
9025    The following table has been used to initialize the participation
9026    roles registry.
9027
9028          +-----------------+---------+--------------------------+
9029          | Role Type       | Status  | Reference                |
9030          +-----------------+---------+--------------------------+
9031          | CHAIR           | Current | RFC 5545, Section 3.2.16 |
9032          |                 |         |                          |
9033          | REQ-PARTICIPANT | Current | RFC 5545, Section 3.2.16 |
9034          |                 |         |                          |
9035          | OPT-PARTICIPANT | Current | RFC 5545, Section 3.2.16 |
9036          |                 |         |                          |
9037          | NON-PARTICIPANT | Current | RFC 5545, Section 3.2.16 |
9038          +-----------------+---------+--------------------------+
9039
9040 8.3.10.  Actions Registry
9041
9042    The following table has been used to initialize the actions registry.
9043
9044           +-----------+------------+----------------------------+
9045           | Action    | Status     | Reference                  |
9046           +-----------+------------+----------------------------+
9047           | AUDIO     | Current    | RFC 5545, Section 3.8.6.1  |
9048           |           |            |                            |
9049           | DISPLAY   | Current    | RFC 5545, Section 3.8.6.1  |
9050           |           |            |                            |
9051           | EMAIL     | Current    | RFC 5545, Section 3.8.6.1  |
9052           |           |            |                            |
9053           | PROCEDURE | Deprecated | [RFC2445], Section 4.8.6.1 |
9054           +-----------+------------+----------------------------+
9055
9056 8.3.11.  Classifications Registry
9057
9058    The following table has been used to initialize the classifications
9059    registry.
9060
9061          +----------------+---------+---------------------------+
9062          | Classification | Status  | Reference                 |
9063          +----------------+---------+---------------------------+
9064          | PUBLIC         | Current | RFC 5545, Section 3.8.1.3 |
9065          |                |         |                           |
9066          | PRIVATE        | Current | RFC 5545, Section 3.8.1.3 |
9067          |                |         |                           |
9068          | CONFIDENTIAL   | Current | RFC 5545, Section 3.8.1.3 |
9069          +----------------+---------+---------------------------+
9070
9071
9072
9073
9074 Desruisseaux                Standards Track                   [Page 162]
9075 \f
9076 RFC 5545                       iCalendar                  September 2009
9077
9078
9079 8.3.12.  Methods Registry
9080
9081    No values are defined in this document for the "METHOD" property.
9082
9083 9.  Acknowledgments
9084
9085    The editor of this document wishes to thank Frank Dawson and Derik
9086    Stenerson, the original authors of RFC 2445, as well as the following
9087    individuals who have participated in the drafting, review, and
9088    discussion of this memo:
9089
9090    Joe Abley, Hervey Allen, Steve Allen, Jay Batson, Oliver Block,
9091    Stephane Bortzmeyer, Chris Bryant, Tantek Celik, Mark Crispin, Cyrus
9092    Daboo, Mike Douglass, Andrew N. Dowden, Lisa Dusseault, Lars Eggert,
9093    Gren Eliot, Pasi Eronen, Ben Fortuna, Ned Freed, Neal Gafter, Ted
9094    Hardie, Tim Hare, Jeffrey Harris, Helge Hess, Paul B. Hill, Thomas
9095    Hnetila, Russ Housley, Leif Johansson, Ciny Joy, Bruce Kahn, Reinhold
9096    Kainhofer, Martin Kiff, Patrice Lapierre, Michiel van Leeuwen,
9097    Jonathan Lennox, Jeff McCullough, Bill McQuillan, Alexey Melnikov,
9098    John W. Noerenberg II, Chuck Norris, Mark Paterson, Simon Pilette,
9099    Arnaud Quillaud, Robert Ransdell, Julian F. Reschke, Caleb
9100    Richardson, Sam Roberts, Dan Romascanu, Mike Samuel, George Sexton,
9101    Nigel Swinson, Clint Talbert, Simon Vaillancourt, Magnus Westerlund,
9102    and Sandy Wills.
9103
9104    A special thanks to the working group chairs Aki Niemi and Eliot Lear
9105    for their support and guidance.
9106
9107    The editor would also like to thank the Calendaring and Scheduling
9108    Consortium for advice with this specification, and for organizing
9109    interoperability testing events to help refine it.
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130 Desruisseaux                Standards Track                   [Page 163]
9131 \f
9132 RFC 5545                       iCalendar                  September 2009
9133
9134
9135 10.  References
9136
9137 10.1.  Normative References
9138
9139    [ISO.8601.2004]        International Organization for
9140                           Standardization, "Data elements and
9141                           interchange formats -- Information interchange
9142                           -- Representation of dates and times", 2004.
9143
9144    [ISO.9070.1991]        International Organization for
9145                           Standardization, "Information Technology_SGML
9146                           Support Facilities -- Registration Procedures
9147                           for Public Text Owner Identifiers, Second
9148                           Edition", April 1991.
9149
9150    [RFC2045]              Freed, N. and N. Borenstein, "Multipurpose
9151                           Internet Mail Extensions (MIME) Part One:
9152                           Format of Internet Message Bodies", RFC 2045,
9153                           November 1996.
9154
9155    [RFC2046]              Freed, N. and N. Borenstein, "Multipurpose
9156                           Internet Mail Extensions (MIME) Part Two:
9157                           Media Types", RFC 2046, November 1996.
9158
9159    [RFC2119]              Bradner, S., "Key words for use in RFCs to
9160                           Indicate Requirement Levels", BCP 14,
9161                           RFC 2119, March 1997.
9162
9163    [RFC2368]              Hoffman, P., Masinter, L., and J. Zawinski,
9164                           "The mailto URL scheme", RFC 2368, July 1998.
9165
9166    [RFC3629]              Yergeau, F., "UTF-8, a transformation format
9167                           of ISO 10646", STD 63, RFC 3629,
9168                           November 2003.
9169
9170    [RFC3986]              Berners-Lee, T., Fielding, R., and L.
9171                           Masinter, "Uniform Resource Identifier (URI):
9172                           Generic Syntax", STD 66, RFC 3986,
9173                           January 2005.
9174
9175    [RFC4288]              Freed, N. and J. Klensin, "Media Type
9176                           Specifications and Registration Procedures",
9177                           BCP 13, RFC 4288, December 2005.
9178
9179    [RFC4648]              Josefsson, S., "The Base16, Base32, and Base64
9180                           Data Encodings", RFC 4648, October 2006.
9181
9182
9183
9184
9185
9186 Desruisseaux                Standards Track                   [Page 164]
9187 \f
9188 RFC 5545                       iCalendar                  September 2009
9189
9190
9191    [RFC5234]              Crocker, D. and P. Overell, "Augmented BNF for
9192                           Syntax Specifications: ABNF", STD 68,
9193                           RFC 5234, January 2008.
9194
9195    [RFC5646]              Phillips, A., Ed., and M. Davis, Ed., "Tags
9196                           for Identifying Languages", BCP 47, RFC 5646,
9197                           September 2009.
9198
9199    [US-ASCII]             American National Standards Institute, "Coded
9200                           Character Set - 7-bit American Standard Code
9201                           for Information Interchange", ANSI X3.4, 1986.
9202
9203 10.2.  Informative References
9204
9205    [2446bis]              Daboo, C., "iCalendar Transport-Independent
9206                           Interoperability Protocol (iTIP)", Work
9207                           in Progress, April 2009.
9208
9209    [2447bis]              Melnikov, A., "iCalendar Message-Based
9210                           Interoperability Protocol (iMIP)", Work
9211                           in Progress, June 2008.
9212
9213    [ANSI INCITS 61-1986]  International Committee for Information
9214                           Technology, "Representation of Geographic
9215                           Point Locations for Information Interchange
9216                           (formerly ANSI X3.61-1986 (R1997))", ANSI
9217                           INCITS 61-1986 (R2007), 2007.
9218
9219    [RFC1738]              Berners-Lee, T., Masinter, L., and M.
9220                           McCahill, "Uniform Resource Locators (URL)",
9221                           RFC 1738, December 1994.
9222
9223    [RFC2392]              Levinson, E., "Content-ID and Message-ID
9224                           Uniform Resource Locators", RFC 2392,
9225                           August 1998.
9226
9227    [RFC2397]              Masinter, L., "The "data" URL scheme",
9228                           RFC 2397, August 1998.
9229
9230    [RFC2425]              Howes, T., Smith, M., and F. Dawson, "A MIME
9231                           Content-Type for Directory Information",
9232                           RFC 2425, September 1998.
9233
9234    [RFC2426]              Dawson, F. and T. Howes, "vCard MIME Directory
9235                           Profile", RFC 2426, September 1998.
9236
9237
9238
9239
9240
9241
9242 Desruisseaux                Standards Track                   [Page 165]
9243 \f
9244 RFC 5545                       iCalendar                  September 2009
9245
9246
9247    [RFC2445]              Dawson, F. and Stenerson, D., "Internet
9248                           Calendaring and Scheduling Core Object
9249                           Specification (iCalendar)", RFC 2445,
9250                           November 1998.
9251
9252    [RFC2616]              Fielding, R., Gettys, J., Mogul, J., Frystyk,
9253                           H., Masinter, L., Leach, P., and T. Berners-
9254                           Lee, "Hypertext Transfer Protocol --
9255                           HTTP/1.1", RFC 2616, June 1999.
9256
9257    [RFC2818]              Rescorla, E., "HTTP Over TLS", RFC 2818,
9258                           May 2000.
9259
9260    [RFC4516]              Smith, M. and T. Howes, "Lightweight Directory
9261                           Access Protocol (LDAP): Uniform Resource
9262                           Locator", RFC 4516, June 2006.
9263
9264    [RFC4791]              Daboo, C., Desruisseaux, B., and L. Dusseault,
9265                           "Calendaring Extensions to WebDAV (CalDAV)",
9266                           RFC 4791, March 2007.
9267
9268    [TZDB]                 Eggert, P. and A.D. Olson, "Sources for Time
9269                           Zone and Daylight Saving Time Data",
9270                           July 2009,
9271                           <http://www.twinsun.com/tz/tz-link.htm>.
9272
9273    [VCAL]                 Internet Mail Consortium, "vCalendar: The
9274                           Electronic Calendaring and Scheduling Exchange
9275                           Format", September 1996,
9276                           <http://www.imc.org/pdi/vcal-10.txt>.
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298 Desruisseaux                Standards Track                   [Page 166]
9299 \f
9300 RFC 5545                       iCalendar                  September 2009
9301
9302
9303 Appendix A.  Differences from RFC 2445
9304
9305    This appendix contains a list of changes that have been made in the
9306    Internet Calendaring and Scheduling Core Object Specification from
9307    RFC 2445.
9308
9309 A.1.  New Restrictions
9310
9311    1.  The "DTSTART" property SHOULD be synchronized with the recurrence
9312        rule, if specified.
9313
9314    2.  The "RRULE" property SHOULD NOT occur more than once in a
9315        component.
9316
9317    3.  The BYHOUR, BYMINUTE, and BYSECOND rule parts MUST NOT be
9318        specified in the "RRULE" property when the "DTSTART" property is
9319        specified as a DATE value.
9320
9321    4.  The value type of the "DTEND" or "DUE" properties MUST match the
9322        value type of "DTSTART" property.
9323
9324    5.  The "DURATION" property can no longer appear in "VFREEBUSY"
9325        components.
9326
9327 A.2.  Restrictions Removed
9328
9329    1.  The "DTSTART" and "DTEND" properties are no longer required to be
9330        specified as date with local time and time zone reference when
9331        used with a recurrence rule.
9332
9333 A.3.  Deprecated Features
9334
9335    1.  The "EXRULE" property can no longer be specified in a component.
9336
9337    2.  The "THISANDPRIOR" value can no longer be used with the "RANGE"
9338        parameter.
9339
9340    3.  The "PROCEDURE" value can no longer be used with the "ACTION"
9341        property.
9342
9343    4.  The value type RECUR no longer allows multiple values to be
9344        specified by a COMMA-separated list of values.
9345
9346    5.  x-name rule parts can no longer be specified in properties of
9347        RECUR value type (e.g., "RRULE"). x-param can be used on RECUR
9348        value type properties instead.
9349
9350
9351
9352
9353
9354 Desruisseaux                Standards Track                   [Page 167]
9355 \f
9356 RFC 5545                       iCalendar                  September 2009
9357
9358
9359 Author's Address
9360
9361    Bernard Desruisseaux (editor)
9362    Oracle Corporation
9363    600 blvd. de Maisonneuve West
9364    Suite 1900
9365    Montreal, QC  H3A 3J2
9366    CANADA
9367
9368    EMail: bernard.desruisseaux@oracle.com
9369    URI:   http://www.oracle.com/
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410 Desruisseaux                Standards Track                   [Page 168]
9411 \f