Home
trfc5545.txt - ics2txt - convert icalendar .ics file to plain text HTML git clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt DIR Log DIR Files DIR Refs DIR Tags DIR README --- trfc5545.txt (345537B) --- 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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