idnits 2.17.1 draft-ietf-calsch-ical-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Cannot find the required boilerplate sections (Copyright, IPR, etc.) in this document. Expected boilerplate is as follows today (2024-04-19) according to https://trustee.ietf.org/license-info : IETF Trust Legal Provisions of 28-dec-2009, Section 6.a: This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 2: Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 3: This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. ** Expected the document's filename to be given on the first page, but didn't find any == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 73 longer pages, the longest (page 2) being 62 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([RFC2048]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 1 instance of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == Couldn't figure out when the document was first submitted -- there may comments or warnings related to the use of a disclaimer for pre-RFC5378 work that could not be issued because of this. Please check the Legal Provisions document at https://trustee.ietf.org/license-info to determine if you need the pre-RFC5378 disclaimer. -- The document date (September 1997) is 9713 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'ISO 9070' is defined on line 3673, but no explicit reference was found in the text == Unused Reference: 'RFC 1738' is defined on line 3685, but no explicit reference was found in the text == Unused Reference: 'RFC 1872' is defined on line 3691, but no explicit reference was found in the text == Unused Reference: 'US-ASCII' is defined on line 3709, but no explicit reference was found in the text == Unused Reference: 'VCARD' is defined on line 3712, but no explicit reference was found in the text == Unused Reference: 'XAPIA' is defined on line 3720, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO 8601' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO 9070' -- Possible downref: Non-RFC (?) normative reference: ref. 'MIME DIR' ** Obsolete normative reference: RFC 822 (Obsoleted by RFC 2822) ** Obsolete normative reference: RFC 1738 (Obsoleted by RFC 4248, RFC 4266) ** Obsolete normative reference: RFC 1766 (Obsoleted by RFC 3066, RFC 3282) ** Obsolete normative reference: RFC 1872 (Obsoleted by RFC 2112) ** Obsolete normative reference: RFC 2048 (Obsoleted by RFC 4288, RFC 4289) -- Possible downref: Non-RFC (?) normative reference: ref. 'US-ASCII' -- Possible downref: Non-RFC (?) normative reference: ref. 'VCARD' -- Possible downref: Non-RFC (?) normative reference: ref. 'VCAL' -- Possible downref: Non-RFC (?) normative reference: ref. 'XAPIA' Summary: 15 errors (**), 0 flaws (~~), 10 warnings (==), 8 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Frank Dawson, Lotus 3 Internet Draft Derik Stenerson, Microsoft 4 March 26, 1997 5 Expires September 1997 7 Internet Calendaring and Scheduling Core Object Specification 8 (iCalendar) 10 Status of this Memo 12 This document is an Internet-Draft. Internet-Drafts are working 13 documents of the Internet Engineering Task Force (IETF), its areas, 14 and its working groups. Note that other groups may also distribute 15 working documents as Internet-Drafts. 17 Internet-Drafts are draft documents valid for a maximum of six 18 months. Internet-Drafts may be updated, replaced, or made obsolete by 19 other documents at any time. It is not appropriate to use Internet- 20 Drafts as reference material or to cite them other than as a "working 21 draft" or "work in progress". 23 To learn the current status of any Internet-Draft, please check the 24 1id-abstracts.txt listing contained in the Internet-Drafts Shadow 25 Directories on ds.internic.net (US East Coast), nic.nordu.net 26 (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific 27 Rim). 29 Distribution of this document is unlimited. 31 Abstract 33 There is a clear need to provide and deploy interoperable calendaring 34 and scheduling services for the Internet. Current group scheduling 35 and Personal Information Management (PIM) products are being extended 36 for use across the Internet, today, in proprietary ways. This 37 document has been defined to provide the a definition of a common 38 format for openly exchanging calendaring and scheduling information 39 across the Internet. 41 This memo is formatted as a registration for a MIME media type per 42 [RFC 2048]. However, the format in this memo is equally applicable 43 for use outside of a MIME message content type. 45 The proposed media type value is "TEXT/CALENDAR". This string would 46 label a media type containing calendaring and scheduling information 47 encoded as text characters formatted in a manner outlined below. 49 This MIME media type provides a standard content type for capturing 50 calendar event and to-do information. It also can be used to convey 51 free/busy time information. The content type is suitable as a MIME 52 message entity that can be transferred over MIME based email systems 53 or using HTTP. In addition, the content type is useful as an object 54 for interactions between desktop applications using the operating 55 system clipboard, drag/drop or file systems capabilities. 57 This document is based on the earlier work of the vCalendar 58 specification for the exchange of personal calendaring and scheduling 59 information. In order to avoid confusion with this referenced work, 60 this document is to be known as the iCalendar specification. 62 This document also includes the format for defining content type 63 profiles. A content type profile is a document that defines a set of 64 usage constraints for the iCalendar Object. For example, a profile 65 might be defined to specify how the iCalendar Object can be used to 66 provide for a set of interpersonal scheduling messages. Such a 67 profile might define scheduling messages that request an event be 68 scheduled, reply to an event request, send a cancellation notice for 69 an event, modify or replace the definition of an event, provide a 70 counter proposal for an original event request, delegate an event 71 request to another individual, request free or busy time, reply to a 72 free or busy time request, or provide similar scheduling messages for 73 a to-do calendar component. 75 Table of Contents 77 1. Introduction........................................................4 78 2. Basic Grammar and Conventions.......................................5 79 3. Definitions.........................................................5 80 3.1 Alarm ............................................................6 81 3.2 Busy Time ........................................................6 82 3.3 Calendar Component ...............................................6 83 3.4 Calendar Date ....................................................6 84 3.5 Calendar Object ..................................................6 85 3.6 Calendar Properties ..............................................6 86 3.7 Calendar Scale ...................................................6 87 3.8 Component Properties .............................................6 88 3.9 Coordinate Universal Time (UTC) ..................................7 89 3.10 Daylight Saving Time (DST) ......................................7 90 3.11 Event ...........................................................7 91 3.12 Free Time .......................................................7 92 3.13 Gregorian Calendar ..............................................7 93 3.14 Journal .........................................................7 94 3.15 Local Time ......................................................7 95 3.16 Period ..........................................................8 96 3.17 Recurrence Rule .................................................8 97 3.18 Reminder ........................................................8 98 3.19 Repeating Event or To-do ........................................8 99 3.20 Standard Time ...................................................8 100 3.21 Time Zone .......................................................8 101 3.22 To-do ...........................................................9 102 4. TEXT/CALENDAR Registration Information..............................9 103 5. iCalendar Object Specification.....................................11 104 5.1 Syntax Considerations ...........................................11 105 5.1.1 Content Lines ................................................12 106 5.1.2 List and Field Separators ....................................13 107 5.1.3 Grouping .....................................................14 108 5.1.4 Multiple Values ..............................................14 109 5.1.5 Character Set ................................................15 110 5.1.6 Language .....................................................15 111 5.1.7 Content Encoding .............................................15 112 5.1.8 Binary Content ...............................................15 113 5.1.9 Recurrence Set ...............................................15 114 5.1.10 Data Types ..................................................16 115 5.1.10.1 URL .....................................................16 116 5.1.10.2 Text ....................................................16 117 5.1.10.3 Date ....................................................16 118 5.1.10.4 Time ....................................................17 119 5.1.10.5 Date-Time ...............................................18 120 5.1.10.6 Duration ................................................18 121 5.1.10.7 Period of Time ..........................................19 122 5.1.10.8 Boolean .................................................19 123 5.1.10.9 Integer .................................................20 124 5.1.10.10 Float ..................................................20 125 5.1.10.11 RFC 822 Address ........................................20 126 5.1.10.12 UTC Offset .............................................21 127 5.2 iCalendar Object ................................................21 128 5.3 Property ........................................................22 129 5.4 Calendar Components .............................................22 130 5.4.1 Event Component ..............................................22 131 5.4.2 To-do Component ..............................................23 132 5.4.3 Journal Component ............................................24 133 5.4.4 Free/Busy Component ..........................................24 134 5.4.5 Alarm Component ..............................................25 135 5.4.6 Timezone Component ...........................................26 136 5.4.7 Calendar Properties ..........................................28 137 5.4.7.1 Calendar Scale ...........................................28 138 5.4.7.2 Geographic Position ......................................29 139 5.4.7.3 Product Identifier .......................................29 140 5.4.7.4 Profile ..................................................30 141 5.4.7.5 Profile Version ..........................................30 142 5.4.7.6 Source ...................................................31 143 5.4.7.7 Source Name ..............................................31 144 5.4.7.8 Version ..................................................31 145 5.5 Component Properties ............................................32 146 5.5.1.1 Attachment ...............................................32 147 5.5.1.2 Attendee .................................................32 148 5.5.1.3 Categories ...............................................34 149 5.5.1.4 Classification ...........................................35 150 5.5.1.5 Date/Time Created ........................................35 151 5.5.1.6 Date/Time Completed ......................................36 152 5.5.1.7 Daylight .................................................36 153 5.5.1.8 Description ..............................................36 154 5.5.1.9 Due Date/Time ............................................37 155 5.5.1.10 Duration ................................................37 156 5.5.1.11 Start Date/Time .........................................38 157 5.5.1.12 End Date/Time ...........................................38 158 5.5.1.13 Exception Date/Times ....................................39 159 5.5.1.14 Exception Rule ..........................................39 160 5.5.1.15 Free/Busy Time ..........................................40 161 5.5.1.16 Last Modified ...........................................41 162 5.5.1.17 Location ................................................41 163 5.5.1.18 Priority ................................................42 164 5.5.1.19 Related To ..............................................42 165 5.5.1.20 Recurrence Date/Times ...................................43 166 5.5.1.21 Recurrence Rule .........................................44 167 5.5.1.22 Resources ...............................................49 168 5.5.1.23 Response Sequence Number ................................50 169 5.5.1.24 Sequence Number .........................................50 170 5.5.1.25 Status ..................................................51 171 5.5.1.26 Summary .................................................51 172 5.5.1.27 Time Transparency .......................................52 173 5.5.1.28 Time Zone Name ..........................................52 174 5.5.1.29 Time Zone Offset ........................................53 175 5.5.1.30 Time Zone Transition Time ...............................53 176 5.5.1.31 Uniform Resource Locator ................................53 177 5.5.1.32 Unique Identifier .......................................54 178 5.5.1.33 Non-standard Properties .................................54 179 5.6 Complete Format Definition ......................................55 180 6. Registration of Content Type Profiles..............................65 181 6.1 Define the profile ..............................................65 182 6.2 Post the profile definition .....................................66 183 6.3 Allow a comment period ..........................................66 184 6.4 Submit the profile for approval .................................66 185 6.5 Profile Change Control ..........................................66 186 6.6 Registration of New Properties ..................................67 187 6.6.1 Define the property ..........................................67 188 6.6.2 Post the Property definition .................................68 189 6.6.3 Allow a comment period .......................................68 190 6.6.4 Submit the property for approval .............................68 191 6.7 Property Change Control .........................................68 192 7. File extension.....................................................69 193 8. Macintosh File Type Code...........................................69 194 9. References.........................................................69 195 10. Acknowledgments...................................................70 196 11. Author's Address..................................................70 197 12. iCalendar Object Examples.........................................71 199 1. Introduction 201 The use of calendaring and scheduling has grown considerably in the 202 last decade. Enterprise and inter-enterprise business has become 203 dependent on rapid scheduling of events and actions using this 204 information technology. However, the longer term growth of 205 calendaring and scheduling, is currently limited by the lack of 206 Internet standards for the message content types that are central to 207 these groupware applications. This specification is intended to 208 progress the level of interoperability possible between dissimilar 209 calendaring and scheduling applications. This specification defines a 210 MIME content type for exchanging electronic calendaring and 211 scheduling information. The Internet Calendaring and Scheduling Core 212 Object Specification, or iCalendar, allows for the capture and 213 exchange of information normally stored within a calendaring and 214 scheduling application; such as a Personal Information Manager or a 215 Group Scheduling product. 217 The format is suitable as an exchange format between applications or 218 systems. The format is defined in terms of a MIME content type. This 219 will enable the object to be exchanged using several transports, 220 including but not limited to SMTP, HTTP, a file system, desktop 221 interactive protocols such as the use of a memory-based clipboard or 222 drag/drop interactions, point-to-point asynchronous communication, 223 wired-network transport, or some form of unwired transport such as 224 infrared might also be used. 226 The specification also provides for the definition of usage profiles 227 that will map this content type to a set of messages for supporting 228 calendaring and scheduling operations such as requesting, replying 229 to, modifying, and canceling meetings or appointments, to-dos and 230 journal entries. The usage profiles can be used to define other 231 calendaring and scheduling operations such a requesting for and 232 replying with free/busy time data. 234 The specification also includes a formal grammar for the content type 235 to aid in the implementation of parsers and to serve as the 236 definitive reference when ambiguities or questions arise in 237 interpreting the descriptive prose definition of the specification. 239 2. Basic Grammar and Conventions 241 This document makes use of both a descriptive prose and a more formal 242 notation for defining the calendaring and scheduling format. 244 The notation used in this document is the augmented BNF notation of 245 [RFC 822]. Readers intending on implementing this format defined in 246 this document should be familiar with this notation in order to 247 properly interpret the specifications of this document. 249 All numeric and hexadecimal values used in this document are given in 250 decimal notation. All names of properties, property parameters, 251 enumerated property values and property parameter values are case- 252 insensitive. However, all other property values are case-sensitive, 253 unless otherwise stated. 255 Note: All indented editorial notes, such as this one, are 256 intended to provide the reader with additional information that 257 is not essential to the building of a conformant implementation 258 of the specifications of this document. The information is 259 provided to highlight a particular feature or characteristic of 260 the specifications. 262 The format for the iCalendar Object is based on the syntax of the 263 [MIME DIR] content type. While the iCalendar Object is not a profile 264 of the [MIME DIR] content type, it does reuse a number of the 265 elements from the [MIME DIR] specification. 267 3. Definitions 269 Date and time, as well as, calendaring and scheduling terminology are 270 used in every day conversations. However, there are precise 271 definitions of many of these terms that are used by this memo. 273 3.1 Alarm 275 Also called a reminder. An activity that is an asynchronous mechanism 276 for providing feedback for a pending or past event or to-do. 278 3.2 Busy Time 280 A period of time of time on a calendar where there is already 281 scheduled one or more events or that is otherwise not available for 282 scheduling. 284 3.3 Calendar Component 286 One of a number of entities that may be found within a calendar 287 object. In particular, a calendar may be composed of calendar 288 properties and event, to-do, journal, free/busy, time zone or alarm 289 calendar components. Calendar components are identified by unique 290 delimiters within a calendar object. Calendar components provide an 291 organized collection of component properties. 293 3.4 Calendar Date 295 A particular day of a calendar year identified by its position within 296 the year. 298 3.5 Calendar Object 300 An entity consisting of an organized collection of calendar 301 properties and calendar components. The calendar object is identified 302 by unique delimiters. 304 3.6 Calendar Properties 306 Attributes that apply to the calendar object as a whole. For example, 307 the iCalendar version used to format the calendar object, an 308 identifier of the product that created the calendar object, the 309 calendar scale used to represent the calendar information and time 310 zone information. 312 3.7 Calendar Scale 314 The particular type of calendar in general use. For example, 315 Gregorian, Buddhist Era, Japanese Emperor Era, Chinese Lunar, 316 Islamic, and Jewish Calendars. 318 3.8 Component Properties 320 Attributes that can only appear within one or more calendar 321 components. For example, the due date can only appear within a to-do 322 calendar component. The start date and time applies to both the event 323 and the to-do component. 325 3.9 Coordinate Universal Time (UTC) 327 The time scale maintained by the Bureau International de l'Heure 328 (International Time Bureau) that forms the basis of a coordinated 329 dissemination of standard frequencies and time signals. UTC is often 330 incorrectly referred to as GMT. 332 3.10 Daylight Saving Time (DST) 334 An adjustment to local to accommodate annual changes in the number of 335 daylight hours. DST is also known as Advanced Time, Summer Time, or 336 Legal Time. Daylight saving time adjustments in the southern 337 hemisphere are opposite to those in the northern hemisphere. 339 3.11 Event 341 A calendar component that defines a scheduled activity, minimally 342 specified by a start and end calendar date and time of day and a 343 description. 345 3.12 Free Time 347 A period of time available on a calendar. 349 3.13 Gregorian Calendar 351 A calendar scale in general use beginning in 1582. It was introduced 352 to correct an error in the Julian Calendar scale. The Gregorian 353 Calendar scale is based on a solar calendar consisting of common 354 years made up of 365 days and leap years made up of 366 days; both 355 divided into 12 sequential months. 357 Note: Initially, this memo addresses specification of calendar 358 information in terms of the Gregorian calendar scale. 360 3.14 Journal 362 A calendar component that defines a collection of information 363 intended for human presentation and is minimally specified by a 364 calendar date and one or more descriptions. 366 3.15 Local Time 368 The clock time in public use in a locale. Local time is often 369 referenced by the customary name for the time zone in which it is 370 located. The relationship between local time and UTC is based on the 371 offset(s) that are in use for a particular time zone. In general, the 372 formula is as follows: 374 local time = UTC + (offset) 375 3.16 Period 377 A duration of time, specified as either a defined length of time or 378 by its beginning and end points. 380 3.17 Recurrence Rule 382 A notation used to represent repeating occurrences, or the exceptions 383 to such a repetition of an event or a to-do. The recurrence rule can 384 also be used in the specification of a time zone description. This 385 document defines a particular notation used in recurrence rules 386 within this specification. 388 3.18 Reminder 390 See Alarm. 392 3.19 Repeating Event or To-do 394 An event or to-do that repeats for one or more additional 395 occurrences. The recurrence may be defined with discrete dates and 396 times and/or with a recurrence rule. 398 3.20 Standard Time 400 Introduced by Sir Sanford Fleming and others around 1870, standard 401 time is a scheme for dividing the world into zones where the same 402 time would be kept. The original proposal was to divide the world 403 into 24 zones, each zone having a width of 15 degrees of longitude. 404 The center zone was originally the meridian passing through 405 Greenwich, England, called Greenwich Mean Time (GMT). The time in the 406 zones was decremented by one hour per zone going westwards and was 407 incremented by one hour per zone going eastwards from GMT. Changes 408 have been made to the original proposal to accommodate political 409 boundaries. In addition, some countries and regions specify 30 or 45 410 minute offsets, rather than the full 60 minute offset. Standard time 411 is also known as Winter Time in some regions. 413 GMT and UTC are generally equivalent. However, by international 414 agreement, the GMT term is discouraged in favor of the term UTC for 415 all general time keeping. 417 3.21 Time Zone 419 The particular time zone that time in a particular location is 420 expressed in. A time zone is unambiguously defined by the set of time 421 measurement rules determined by the governing body for the given 422 location. These rules describe at a minimum the base offset from UTC, 423 often referred to as the Standard Time offset. Optionally, if 424 Daylight Savings Time is observed, the rules will specify the 425 Daylight Savings Time offset and either a set of rules describing the 426 transition to and from Daylight Savings Time or absolute dates 427 describing the movement in and out of Daylight Savings Time. It is 428 important to note that these rules are not static. Time zones may 429 also have a local customary name. However, not all time zones have a 430 special name for their time. The customary names for time zones are 431 often abbreviated. However, not all time zone abbreviations are 432 unique. For example, AST may mean Atlantic Standard Time, Alaska 433 Standard Time, and even Aleutian Standard Time. Each of these are 434 different offsets from UTC. Nevertheless, customary names for time 435 zones are in use in various parts of the world. 437 3.22 To-do 439 A calendar component that defines an action item and is minimally 440 specified by an effective calendar date and time of day, a due 441 calendar date and time of day, a priority and a description. 443 4. TEXT/CALENDAR Registration Information 445 The Calendaring and Scheduling Core Object Specification is intended 446 for use as a MIME content type. However, the implementation of the 447 specification is in no way limited solely as a MIME content type. 449 The following text is intended to register this specification as the 450 MIME content type "text/calendar". 452 To: ietf-types@uninett.no 454 Subject: Registration of MIME content type text/calendar. 456 MIME media type name: text 458 MIME subtype name: calendar 460 Required parameters: profile 462 The "profile" parameter is used to convey the scheduling usage to 463 which the calendaring and scheduling information pertains. It also 464 is an identifier for the set of properties that the iCalendar 465 Object will consist of. The parameter is intended to be used as a 466 guide to applications interpreting the information contained within 467 the body part. It should NOT be used to exclude or require 468 particular pieces of information unless the identified profile 469 definition specifically calls for this behavior. Unless 470 specifically forbidden by a particular profile definition, a 471 text/calendar content type may contain any set of properties 472 permitted by the Calendaring and Scheduling Core Object 473 Specification. 475 The value for the "profile" parameter is defined as follows: 477 profile = component "-" usage 479 component = "EVENT" / "event" / "TODO" / "todo" 480 / "JOURNAL" / "journal" / "FREEBUSY" 481 / "freebusy" / x-token / iana-comp 482 usage = "REQUEST" / "request" / "REPLY" / "reply" 483 / "CANCEL" / "cancel" / "x-token / iana-usage 485 x-token = 489 iana-comp = 493 iana-usage = 497 Optional parameters: charset 499 The "charset" parameter is defined in [RFC 2046] for other body 500 parts. It is used to identify the default character set used within 501 the body part. Note that alternate character sets can be specified 502 on a per-value basis using the "charset" property parameter defined 503 in [MIME DIR]. 505 Optional content header fields: Any header fields defined by [RFC 506 2045]. 508 Encoding considerations: This MIME content type does not introduce 509 any new encoding types beyond those defined in [RFC 2045]. Note 510 that each property in the content entity may also have an inline 511 encoding for the body part as a whole (i.e., inline encoding are 512 performed first, then Content-Transfer-Encoding is applied to the 513 entire body part). This means that content values may end up 514 encoded twice. 516 Security considerations: The calendaring and scheduling information 517 based on this MIME content type may include references to Uniform 518 Resource Locators that may be programmed resources. In addition, 519 this information may contain direct references to executable 520 programs intended to be used as procedure-based alarms for an event 521 or to-do. Implementers and users of this specification should be 522 aware of the network security implications of accepting and parsing 523 such information. 525 Interoperability considerations: This MIME content type is intended 526 to provide interoperability between calendaring and scheduling 527 products. It is heavily based on the earlier [VCAL] industry 528 specification. 530 Intended Usage: COMMON 532 Published specification: This remainder of this document. 534 Author/Change controllers: 536 Frank Dawson 537 6544 Battleford Drive 538 Raleigh, NC 27613-3502 539 919-676-9515 (Telephone) 540 919-676-9564 (Facsimile) 541 fdawson@earthlink.net (Internet Mail) 543 Derik Stenerson 544 One Microsoft Way 545 Redmond, WA 98052-6399 546 206-936-5522 (Telephone) 547 206-936-7329 (Facsimile) 548 deriks@microsoft.com (Internet Mail) 550 5. iCalendar Object Specification 552 The following sections define the details of a Calendaring and 553 Scheduling Core Object Specification. This information is intended to 554 be an integral part of the MIME content type registration. In 555 addition, this information may be used independent of such content 556 registration. In particular, this specification has direct 557 applicability for use as a calendaring and scheduling exchange format 558 in file-, memory- or network-based transport mechanisms. 560 5.1 Syntax Considerations 562 The content information associated with an iCalendar Object is 563 formatted using a syntax similar to that defined by [MIME DIR]. That 564 is, the content information consists of one or more CRLF-separated 565 lines in the following format: 567 contentline = [group "."] name [";" paramlist] ":" value CRLF 568 ;Folding permitted on content lines. 570 group = atom ;As defined in [RFC 822] 572 name = x-name / iana-name ;An iCalendar attribute/property 574 x-name = 577 iana-name = 579 paramlist = parameter / paramlist ";" parameter 581 parameter = encodingparm 582 / valuetypeparm ;If not present => inline value 583 / charsetparm 584 / languageparm 585 / [parmtype "="] parmvalues 587 encodingparm = "encoding" "=" encodetype 588 encodetype = "8bit" ;From [RFC 2045] 589 / "7bit" ;From [RFC 2045] 590 / "base64" ;From [RFC 2045] 591 / "quoted-printable" ;From [RFC 2045] 593 valuetypeparm = "value" "=" valuetype 595 valuetype = "url" 596 / "text" 597 / "date" 598 / "time" 599 / "date-time" 600 / "period" 601 / "duration" 602 / "boolean" 603 / "integer" 604 / "float" 605 / "rfc822-address" 606 / "utc-offset" 607 / x-token 608 / iana-value 610 iana-value = 613 charsetparm = "charset" "=" charset ;As defined in [RFC 2047] 615 languageparm = "language" "=" language ;As defined in [RFC 1766] 617 parmtype = x-token / iana-ptype 619 iana-ptype = 622 parmvalues = parmvalue / parmvalues "," parmvalue 624 parmvalue = x-name / iana-pvalue 626 iana-pvalue = 629 value = url / text / date / time/ date-time / period / 630 / duration / boolean / integer / float / rfc822-address 631 / utc-offset / x-token / iana-value 633 iana-value = 636 5.1.1 Content Lines 638 Individual lines within the iCalendar Object are delimited by the 639 [RFC 822] line break, which is a CRLF sequence (ASCII decimal 13, 640 followed by ASCII decimal 10). Line should not be longer than 76 641 characters, excluding the line break. 643 Long lines of text can be split into a multiple-line representation 644 using a line "folding" technique. That is, wherever a line split is 645 desired a CRLF immediately followed by one LWSP-char must instead be 646 inserted. 648 For example the line: 650 DESCRIPTION:This is a long description that exists on a long line. 652 Can be represented as: 654 DESCRIPTION:This is a long description 655 that exists on a long line. 657 The process of moving from this folded multiple-line representation 658 to its single line representation is called "unfolding". Unfolding is 659 accomplished by removing the CRLF immediately followed by a LWSP- 660 char. 662 An intentional formatted text line break in a property value must 663 also be specified by a (RFC 822) line break, which is a CRLF 664 sequence. However, since the CRLF sequence is used to delimit a line, 665 property values with imbedded formatted line breaks (i.e., hard line 666 breaks) must be encoded using an alternate encoding of either quoted- 667 printable or base64, as defined in [RFC 2045]. 669 The quoted-printable encoding of the multiple lines of formatted text 670 are separated with a quoted-printable CRLF sequence of "=0D" followed 671 by "=0A" followed by a Quoted-Printable soft line break sequence of 672 "=". Quoted-printable lines of text must also be limited to less than 673 76 characters. The 76 characters does not include the CRLF [RFC 822] 674 line break sequence. For example a multiple line DESCRIPTION value 675 of: 677 Project XYZ Final Review 678 Conference Room - 3B 679 Come Prepared. 681 Would be represented in a Quoted-Printable encoding as: 683 DESCRIPTION; QUOTED-PRINTABLE:Project XYZ Final Review=0D=0A= 684 Conference Room - 3B=0D=0A= 685 Come Prepared. 687 White space characters (i.e., HTAB and SPACE characters, ASCII 688 decimal 9 and 32) to the left of a "value" may freely surround any 689 symbol. This means that if a "value" begins with a white space 690 character, it must be encoded using either the base64 or quoted- 691 printable encoding methods. 693 5.1.2 List and Field Separators 695 Where a property parameter value consists of a list of values, each 696 value must be separated by a COMMA character (ASCII decimal 44). A 697 COMMA character in a property parameter value must be escaped with a 698 BACKSLASH character (ASCII decimal 92). 700 Structured property values must have their components separated by a 701 SEMICOLON character (ASCII decimal 59). In addition, lists of 702 property parameters must be separated by a SEMICOLON character (ASCII 703 decimal 59). A SEMICOLON character in a property value or property 704 parameter value must be escaped with a BACKSLASH character (ASCII 705 decimal 92). 707 For example, in the following properties a SEMICOLON is used to 708 separate property parameters and property value fields. A COMMA is 709 used to separate values. 711 ATTENDEE;RSVP=YES;ROLE=ATTENDEE:"J.Smith" 774 character (ASCII decimal 10) or character (ASCII decimal 13), it 775 must be encoded using either base64 or quoted-printable, since 776 is used to separate lines in the iCalendar Object itself. 778 5.1.8 Binary Content 780 There is no support for inline encoding of binary information in an 781 iCalendar Object. Binary information is associated with the iCalendar 782 Object through the use of a uniform resource locator (URL) reference 783 to the binary information. 785 5.1.9 Recurrence Set 787 Recurring events and to-dos are supported by this specification. The 788 recurrence within the iCalendar Object may be specified as either a 789 list of discrete date and time values or as a recurrence rule. The 790 full recurrence set is generated by considering the initial DTSTART 791 along with the RRULE, RDATE, EXDATE and EXRULE properties contained 792 within the iCalendar object. Multiple instances of the RRULE and 793 EXRULE properties may also be specified to define more sophisticated 794 recurrence sets. The final recurrence set is generated by gathering 795 all of the start date-times generated by any of the specified RRULE 796 and RDATE properties, and excluding any start date and times which 797 fall within the union of start date and times generated by any 798 specified EXRULE and EXDATE properties. This implies that start date 799 and times within exclusion related properties (i.e., EXDATE and 800 EXRULE) take precedence over those specified by inclusion properties 801 (i.e., RDATE and RRULE). 803 The recurrence rule used in the iCalendar Object is defined in the 804 RRULE component property. 806 5.1.10 Data Types 808 The "value" property parameter is an optional property parameter. It 809 is used to identify the data type and format of the property value. 810 The following data types are used by the iCalendar Object. 812 5.1.10.1 URL 814 The "url" data type is used to identify values that contain a uniform 815 resource locator (URL) type of reference to the property value. This 816 data type might be used to reference binary information, for values 817 that are large, or otherwise undesirable to include directly in the 818 iCalendar Object. The data type is defined by the following notation: 820 url = 822 Any IANA registered URL type may be used. These include, but are not 823 limited to, those for FTP and HTTP protocols, file access, content 824 identifier and message identifier. 826 For example, the following is an URL for a local file: 828 file:///my-report.txt 830 5.1.10.2 Text 832 The "text" data type is used to identify values that contain human 833 readable text. The character set and language in which the text is 834 represented is controlled by the charset and language property 835 parameters. The data type is defined by the following notation: 837 CHAR = 839 text = 842 5.1.10.3 Date 844 The "date" data type is used to identify values that contain a 845 calendar date. The format is expressed as the [ISO 8601] complete 846 representation, basic format for a calendar date. The text format 847 specifies a four-digit year, two-digit month, and two-digit day of 848 the month. There are no separator characters between the year, month 849 and day component text. The data type is defined by the following 850 notation: 852 DIGIT = ;0-9 854 date-fullyear = 4DIGIT 855 date-month = 2DIGIT ;01-12 856 date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31 857 ;based on month/year 858 full-date = date-fullyear date-month date-mday 860 date = fulldate *["," fulldate] 862 For example, the following represents July 14, 1997: 864 19970714 866 5.1.10.4 Time 868 The "time" data type is used to identify values that contain a time 869 of day. The format is expressed as the [ISO 8601] complete 870 representation, basic format for a time of day. The text format 871 consists of a two-digit 24-hour of the day, two-digit minute in the 872 hour, and two-digit seconds in the minute. If seconds of the minute 873 are not supported by an implementation, then a value of "00" should 874 be specified for the seconds component. Fractions of an hour, minute 875 or second are not supported by this format. This format is used to 876 represent local time, local time with UTC offset and UTC time. UTC 877 time is identified by a LATIN CAPITAL LETTER Z suffix character 878 (ASCII decimal 90), the UTC designator, appended to the time. The 879 local time with UTC offset is expressed as a local time, suffixed 880 with the signed offset from UTC. The UTC offset is express as the 2- 881 digit hours and 2-digit minutes difference from UTC. It is expressed 882 as positive, with an optional leading PLUS SIGN character (ASCII 883 decimal 43), if the local time is ahead of UTC. It is expressed as a 884 negative, with a leading HYPEN-MINUS character (ASCII decimal 45), if 885 the local time is behind UTC. Local time has neither the UTC 886 designator nor the UTC offset suffix text. The data type is defined 887 by the following notation: 889 DIGIT = ;0-9 891 time-hour = 2DIGIT ;00-24 892 time-minute = 2DIGIT ;00-60 893 time-second = 2DIGIT ;00-59 894 time-numzone = ("+" / "-") time-hour time-minute 895 time-zone = "Z" / time-numzone 896 full-time = time-hour time-minute time-second [time-zone] 898 time = fulltime *["," fulltime] 900 For example, the following represents 8:30 AM in New York, five hours 901 behind UTC, in local time and local time with UTC offset. In 902 addition, 1:30 PM in UTC is illustrated: 904 083000 905 083000-0500 906 133000Z 908 There are cases when a floating time is intended within a property 909 value. For example, an event may be defined that indicates that an 910 individual will be busy from 11:00 AM to 1:00 PM every day. In these 911 cases, a local time may be specified. The recipient of an iCalendar 912 Object with a property value consisting of a local time, without any 913 relative time zone information, should interpret the value as being 914 fixed to the recipient's locale and time zone. In most cases, a fixed 915 time is desired. To properly communicate a fixed time in a property 916 value, either UTC, local time with UTC offset, or local time with a 917 time zone calendar component must be specified. 919 5.1.10.5 Date-Time 921 The "date-time" data type is used to identify values that contain a 922 precise calendar date and time of day. The format is expressed as the 923 [ISO 8601] complete representation, basic format for a calendar date 924 and time of day. The text format is a concatenation of the "date", 925 followed by the LATIN CAPITAL LETTER T character (ASCII decimal 84) 926 time designator, followed by the "time" format defined above. The 927 data type is defined by the following notation: 929 date-time = date "T" time ;As specified above in date and time 931 The following represents July 14, 1997, at 1:30 PM in UTC and the 932 equivalent time in New York (five hours behind UTC), expressed as a 933 local time and local time with UTC offset: 935 19970714T133000Z 936 19970714T083000 937 19970714T083000-0500 939 5.1.10.6 Duration 941 The "duration" data type is used to identify properties that contain 942 a duration of time. The format is expressed as the [ISO 8601] basic 943 format for the duration of time. The format can represent durations 944 in terms of years, months, days, hours, minutes, and seconds. The 945 data type is defined by the following notation: 947 DIGIT = ;0-9 949 dur-second = 1*DIGIT "S" 950 dur-minute = 1*DIGIT "M" [dur-second] 951 dur-hour = 1*DIGIT "H" [dur-minute] 952 dur-time = "T" (dur-hour / dur-minute / dur-second) 954 dur-week = 1*DIGIT "W" 955 dur-day = 1*DIGIT "D" 956 dur-month = 1*DIGIT "M" [dur-day] 957 dur-year = 1*DIGIT "Y" [dur-month] 958 dur-date = (dur-day / dur-month / dur-year) [dur-time] 960 duration = "P" (dur-date / dur-time / dur-week) 962 For example, a duration of 10 years, 3 months, 15 days, 5 hours, 30 963 minutes and 20 seconds would be: 965 P10Y3M15DT5H30M20S 967 5.1.10.7 Period of Time 969 The "period" data type is used to identify values that contain a 970 precise period of time. There are two forms of a period of time. 972 A period of time may be identified by it start and its end. This 973 format is expressed as the [ISO 8601] complete representation, basic 974 format for "date-time" start of the period, followed by a SOLIDUS 975 character (ASCII decimal 47), followed by the "date-time" of the end 976 of the period. For example, the period starting at 10 AM in Seattle 977 (eight hours behind UTC) on January 1, 1997 and ending at 11 PM in 978 Seattle on January 1, 1997 would be: 980 19970101T100000-0800/19970101T230000-0800 982 A period of time may also be defined by a start and a duration of 983 time. The format is expressed as the [ISO 8601] complete 984 representation, basic format for the "date-time" start of the period, 985 followed by a SOLIDUS character (ASCII decimal 47), followed by the 986 [ISO 8601] basic format for "duration" of the period. For example, 987 the period start at 10 AM in Seattle (eight hours behind UTC) on 988 January 1, 1997 and lasting 5 hours and 30 minutes would be: 990 19970101T100000-0800/P5H30M 992 The data type is defined by the following notation: 994 period-explicit = date-time "/" date-time 995 ;ISO 8601 complete representation basic format for a period of time 996 ;consisting of a start and end. The start must be before the end. 998 period-start = date-time "/" duration 999 ;ISO 8601 complete representation basic format for a period of time 1000 ;consisting of a start and duration of time. 1002 period = period-explicit / period-start 1004 5.1.10.8 Boolean 1006 The "boolean" data type is used to identify properties that contain 1007 either a "true" or a "false" boolean value. These values are case 1008 insensitive. The data type is defined by the following notation: 1010 boolean = "TRUE" / "FALSE" 1012 For example, any of the following are equivalent: 1014 TRUE 1015 true 1016 TrUe 1017 5.1.10.9 Integer 1019 The "integer" data type is used to identify properties that contain a 1020 signed integer value. The valid range for "integer" is -2147483648 to 1021 2147483647. If the sign is not specified, then the value is assumed 1022 to be positive. If the property permits, multiple "integer" values 1023 may be specified using a COMMA character (ASCII decimal 44) separator 1024 character. The data type is defined by the following notation: 1026 DIGIT = ;0-9 1028 integer = ["+" / "-"] *DIGIT 1030 For example: 1032 1234567890 1033 -1234567890 1034 +1234567890 1035 432109876 1037 5.1.10.10 Float 1039 The "float" data type is used to identify properties that contain a 1040 real value number value. If the property permits, multiple "float" 1041 values may be specified using a COMMA character (ASCII decimal 44) 1042 separator character. The data type is defined by the following 1043 notation: 1045 DIGIT = ;0-9 1047 float = ["+" / "-"] *DIGIT ["." *DIGIT] 1049 For example: 1051 1000000.0000001 1052 1.333 1053 -3.14 1055 5.1.10.11 RFC 822 Address 1057 The "rfc822-address" data type is used to identify properties that 1058 contain a calendar address. The phrase component of the address may 1059 be used to match an unknown address with an otherwise known 1060 individual, group, or resource. The data type is as defined by the 1061 following notation: 1063 rfc822-address = addr-spec / [phrase] "<" addr-spec ">" 1065 addr-spec = local-part "@" domain ;RFC 822 address 1066 local-part = WORD *("." WORD) 1067 domain = domain-ref *("." domain-ref) 1068 domain-ref = ATOM 1069 phrase = 1*WORD 1070 WORD = ATOM / quoted-string 1071 quoted-string = <"> *(qtext/quoted-pair) <"> ; Regular qtext or 1072 ; quoted chars. 1073 qtext = , ; => may be folded 1074 "\" & CR, and including linear-white-space> 1075 quoted-pair ="\" CHAR ; may quote any char 1076 CHAR = 1077 ATOM = 1* 1079 5.1.10.12 UTC Offset 1081 The "utc -offset" data type is used to identify properties that 1082 contain an offset from UTC to local time. The data type is defined by 1083 the following notation: 1085 utc-offset = time-numzone ;As defined above in time data type 1087 For example, the following are UTC offsets for New York (five hours 1088 behind UTC) and Geneva (one hour ahead of UTC): 1090 -0500 ;New York 1091 +0100 ;Geneva 1093 5.2 iCalendar Object 1095 The Calendaring and Scheduling Core Object is a collection of 1096 calendaring and scheduling information. Typically, this information 1097 will consist of a single iCalendar Object. However, multiple 1098 iCalendar Objects may be sequentially, grouped together. The first 1099 line and last line of the iCalendar Object must contain a pair of 1100 iCalendar Object delimiter strings. The syntax for a vCalendar Object 1101 is as follows: 1103 icalobject = "BEGIN" ":" "VCALENDAR" CRLF 1104 icalbody 1105 "END" ":" "VCALENDAR" CRLF [icalobject] 1107 The following is a simple example of an iCalendar Object: 1109 BEGIN:VCALENDAR 1110 VERSION:2.0 1111 PRODID:-//hacksw/handcal//NONSGML v1.0//EN 1112 BEGIN:VEVENT 1113 DTSTART:19970714T120000-0500 1114 DTEND:19970714T235959-0500 1115 DESCRIPTION:Bastile Day Party 1116 END:VEVENT 1117 END:VCALENDAR 1118 5.3 Property 1120 A property is the definition of an individual attribute describing a 1121 calendar property or a calendar component. A property takes the 1122 following form: 1124 property = [group "."] propname [";" parmlist] ":" value CRLF 1126 propname = 1127 / iana-prop / x-token 1129 x-token = 1132 iana-prop = 1135 The following is an example of a property: 1137 DTSTART:19960415T083000-05:00 1139 This document places no imposed ordering of properties within an 1140 iCalendar Object. 1142 Property names, parameter names and parameter values (i.e., 1143 everything to the left of the ":" on a line) are case insensitive. 1144 For example, the property name "DUE" is the same as "due" and "Due". 1146 5.4 Calendar Components 1148 The body of the iCalendar Object consists of a sequence of calendar 1149 properties and one or more calendar components. The calendar 1150 properties are attributes that apply to the calendar as a whole. The 1151 calendar components are collections of properties that with a 1152 particular calendar semantic. For example, the calendar component may 1153 specify a an event, a to-do, journal entry, time zone information, or 1154 free/busy time information, or alarm. 1156 The body of the iCalenar Object is defined by the following notation: 1158 icalbody = calprops 1*component 1160 calprops = [calscale] [geo] prodid [profile] [profile-version] 1161 [source] [name] version 1163 component = 1*(eventc / todoc / journalc / freebusyc / 1164 / timezonec) 1166 5.4.1 Event Component 1168 An Event Calendar Component is a grouping of component properties and 1169 an optional alarm calendar component that represent a scheduled 1170 amount of time on a calendar. For example, it may be an activity; 1171 such as a one-hour, department meeting from 8:00 AM to 9:00 AM, 1172 tomorrow. 1174 An Event Component is defined by the following notation: 1176 eventc = "BEGIN" ":" "VEVENT" CRLF 1177 *eventprop *alarmc 1178 "END" ":" "VEVENT" CRLF 1180 eventprop = *attach *attendee *categories [class] 1181 / [created] description dtend dtstart *exdate 1182 / *exrule *last-mod [location] [priority] 1183 / *related *resources *rdate *rrule 1184 / [resp-seq] / [seq] [status] [summary] [transp] 1185 / [uid] *url 1187 The Event Component can not be nested within another Calendar 1188 Component. Event components may be related to each other or to a To- 1189 do or Journal Calendar Component with the RELATED-TO property. 1191 The following is an example of the Event Calendar Component: 1193 BEGIN:VEVENT 1194 DTSTART:19970903T083000-0800 1195 DTEND:19970903T110000-0500 1196 DESCRIPTION:Annual Employee Review 1197 CLASS:PRIVATE 1198 CATEGORIES:BUSINESS,HUMAN RESOURCES 1199 END:VEVENT 1201 5.4.2 To-do Component 1203 A To-do Calendar Component is a grouping of component properties and 1204 an optional alarm calendar component that represent an action-item or 1205 assignment. For example, it may be an item of work assigned to an 1206 individual; such as "turn in travel expense today". 1208 A To-do Component is defined by the following notation: 1210 todoc = "BEGIN" ":" "VTODO" CRLF 1211 *todoprop *alarmc 1212 "END" ":" "VTODO" CRLF 1214 todoprop = *attach *attendee *categories [class] [completed] 1215 / [created] description dtstart due *exdate 1216 / *exrule *last-mod [location] priority 1217 / *related *resources *rdate *rrule [resp-seq] 1218 / [seq] [status] [summary] [transp] [uid] *url 1220 The To-do Component can not be nested within another Calendar 1221 Component. If To-do components need to be related to each other or to 1222 an Event or Journal Calendar Component, they can specify a 1223 relationship with the RELATED-TO property. 1225 The following is an example of a To-do Calendar Component: 1227 BEGIN:VTODO 1228 DTSTART:19970415T083000-0500 1229 DUE:19970415T235959-0500 1230 DESCRIPTION:1996 Income Tax Preparation 1231 CLASS:CONFIDENTIAL 1232 CATEGORIES:FAMILY,FINANCE 1233 PRIORITY:1 1234 STATUS:NEEDS ACTION 1235 END:VEVENT 1237 5.4.3 Journal Component 1239 A Journal Calendar Component is a grouping of component properties 1240 that represent one or more descriptive text on a particular calendar 1241 date. For example, it may be a journal entry of individual telephone 1242 contacts for the day or an ordered list of accomplishments for the 1243 day. 1245 A Journal Component is defined by the following notation: 1247 journalc = "BEGIN" ":" "VJOURNAL" CRLF 1248 *jourprop 1249 "END" ":" "VJOURNAL" CRLF 1251 jourprop = *attach *categories [class] [created] description 1252 / dtstart *last-mod *related [resp-seq] [seq] [uid] *url 1254 The Journal Component can not be nested within another Calendar 1255 Component. If Journal Components need to be related to each other or 1256 to an Event or To-Do Calendar Component, they can specify a 1257 relationship with the RELATED-TO property. 1259 The following is an example of the Journal Calendar Component: 1261 BEGIN:VJOURNAL 1262 DTSTART:19970317T083000 1263 DESCRIPTION:1. Staff meeting: Participants include Joe, Lisa 1264 and Bob. Aurora project plans were reviewed. There is currently 1265 no budget reserves for this project. Lisa will escalate to 1266 management. Next meeting on Tuesday. 1267 2. Telephone Conference: ABC Corp. sales representative called 1268 to discuss new printer. Promised to get us a demo by Friday. 1269 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. 1270 Is looking into a loaner car. 654-2323 (tel). 1271 END:VJOURNAL 1273 5.4.4 Free/Busy Component 1275 A Free/Busy Calendar Component is a grouping of component properties 1276 that represent free or busy time information. Typically, this 1277 component exists in an iCalendar Object that is being used to either 1278 request or return free or busy time information. 1280 A Free/Busy Component is defined by the following notation: 1282 freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF 1283 *fbprop 1284 "END" ":" "VFREEBUSY" CRLF 1286 fbprop = *attendee [created] [duration] [dtend] [dtstart] 1287 / *freebusy *last-mod *related [resp-seq] [seq] [uid] 1288 / *url 1290 The Free/Busy Component can not be nested within another Calendar 1291 Component. Free/Busy components may be related to each other with the 1292 RELATED-TO property. Multiple Free/Busy Calendar Components may be 1293 specified within a iCalendar Object. This permits the grouping of 1294 Free/Busy information into logical collections, such as monthly 1295 groups of busy time information. 1297 The Free/Busy Calendar Component is intended for use in profiles 1298 involving requests for free time, requests for busy time, requests 1299 for both free and busy, and the associated replies. 1301 Free/Busy information can be expressed using the FREEBBUSY property. 1302 This property provides a terse representation of time periods. One or 1303 more FREEBUSY properties may be specified in the FREE/BUSY Calendar 1304 Component to describe the Free/Busy information. 1306 Optionally, the DTSTART and DTEND properties may be specified to 1307 express the start and end date and time for Free/Busy information in 1308 the Free/Busy Calendar Component. When present in a Free/Busy 1309 Calendar Component, they should be specified prior to any FREEBUSY 1310 properties. In a free time request, these properties may be used in 1311 combination with the DURATION property to express a request for a 1312 duration of free time within a given window of time. 1314 The recurrence properties (RRULE, EXRULE, RDATE, EXDATE) are not 1315 permitted within a Free/Busy Calendar Component. Any recurring events 1316 are resolved into their individual busy time periods using the 1317 FREEBUSY property. 1319 The following is an example of a Free/Busy Calendar Component: 1321 BEGIN:VFREEBUSY 1322 DTSTART:19971015T050000Z 1323 DTEND:19971016T050000Z 1324 FREEBUSY;VALUE=PERIOD-START:19971015T050000Z/PT8H30M, 1325 19971015T160000Z/PT5H30M, 19971015T223000Z/PT6H30M 1326 END:VFREEBUSY 1328 5.4.5 Alarm Component 1330 An Alarm Calendar Component is a grouping of component properties 1331 that is a reminder or alarm for an event or a to-do. The Alarm 1332 Calendar Component may only be specified in an event or to-do 1333 calendar component. For example, it may define a reminder for a 1334 pending event or an overdue to-do. 1336 An Alarm Component is defined by the following notation: 1338 alarmc = "BEGIN" ":" "VALARM" CRLF 1339 *alarmprop 1340 "END" ":" "VALARM" CRLF 1342 alarmprop = *attach [created] [description] dtstart duration 1343 / *last-mod *related repeat [summary] *url 1345 The Alarm Component can only appear within either an Event or To-Do 1346 Calendar Component. Alarm Components can not be nested. 1348 The following is an example of the Alarm Calendar Component: 1350 BEGIN:VALARM 1351 DTSTART:19970317T133000Z 1352 REPEAT:4 1353 DURATION:PT15M 1354 CATEGORIES:DISPLAY,AUDIO 1355 ATTACH:file:///mmedia/sounds/bell1.wav 1356 DESCRIPTION:Breakfast meeting with executive team at 8:30 AM 1357 END:VALARM 1359 5.4.6 Timezone Component 1361 A time zone is unambiguously defined by the set of time measurement 1362 rules determined by the governing body for a given geographic area. 1363 These rules describe at a minimum the base offset from UTC for the 1364 time zone, often referred to as the Standard Time offset. Many 1365 locations adjust their Standard Time forward or backward by one hour, 1366 in order to accommodate seasonal changes in number of daylight hours, 1367 often referred to as Daylight Saving Time. Some locations adjust 1368 their time by a fraction of an hour. Standard Time is also known as 1369 Winter Time. Daylight Saving Time is also known as Advanced Time, 1370 Summer Time, or Legal Time in certain countries. The following table 1371 shows the changes in time zone rules for the eastern United States. 1373 Effective Transition Rule 1374 Date (Date/Time) Offset Abbreviation 1376 1967-* last Sun in October, 02:00 -0500 EDT 1378 1967-1973 last Sun in April, 02:00 -0400 EST 1380 1974-1974 Jan 6, 02:00 -0400 EST 1382 1975-1975 Feb 23, 02:00 -0400 EST 1384 1976-1986 last Sun in April, 02:00 -0400 EST 1386 1987-* first Sun in April, 02:00 -0400 EST 1387 Interoperability between two calendaring and scheduling applications, 1388 especially for recurring events and to-dos, is dependent on the 1389 ability to capture and convey date and time information in an 1390 unambiguous format. The specification of current time zone 1391 information is integral to this behavior. 1393 The Time Zone Calendar Component is a grouping of component 1394 properties that define a time zone description. The time zone 1395 description specifies the effective Standard Time or Daylight Savings 1396 Time rules for a particular time zone. The Timezone Component can not 1397 be nested within other Calendar Components. The Time Zone Component 1398 may be specified multiple times. If the Time Zone Component is 1399 missing, the recipient should assume all local times are relative to 1400 the recipient's time zone. The Time Zone Component should be 1401 specified in the iCalendar Object before any other Calendar 1402 Components. 1404 A Time Zone Component is defined by the following notation: 1406 timezonec = "BEGIN" ":" "VTIMEZONE" CRLF 1407 *tzprop 1408 "END" ":" "VTIMEZONE" CRLF 1410 tzprop = [created] [daylight] [dtend] dtstart [rdate / rrule] 1411 [tzname] tzoffset [tztrans] [uid] 1413 The Time Zone component is especially important for correct 1414 interpretation of recurring events and to-dos. If the iCalendar 1415 Object contains an event or to-do component that has a recurring date 1416 pattern (i.e., includes the RRULE property) or a list of date and 1417 local time values (i.e., includes the RDATE property), one or more 1418 Time Zone components must be specified, such that for the given range 1419 of the recurrence (i.e., the earliest instance to latest instance), 1420 there is valid time zone information for all instances. In other 1421 words, if all of the instances of the pattern is entirely within one 1422 offset observance, (e.g., all are in Standard Time), only one Time 1423 Zone Calendar Component need be present. If a time zone transition is 1424 crossed, then other Time Zone Components are needed. Further, if 1425 there are known changes to the rules for the time zone, even more 1426 Time Zone Components are needed. 1428 Each Time Zone Component consists of several properties. The CREATED 1429 property is a DATE-TIME value that indicates when the time zone 1430 description was created; the DAYLIGHT property is a BOOLEAN value 1431 indicating Standard Time (FALSE) or Daylight Savings Time (TRUE); the 1432 DSTART property is a DATE-TIME value indicating the effective start 1433 for the time zone information; the DTEND property is a DATE-TIME 1434 value indicating the effective end date for the time zone 1435 information; the TZOFFSET property is a UTC-OFFSET value indicating 1436 the UTC offset for the time zone (Standard Time or Daylight Savings 1437 Time); the TZTRANS property is a TIME value indicating the time of 1438 day after which the transition to the time zone occurs; the TZNAME 1439 property is the customary name for the time zone; the RRULE property 1440 is a TEXT property indicating the recurrence rule for the transition 1441 to this time zone or alternatively, the RDATE property is a DATE-TIME 1442 property indicating the individual dates and times that the 1443 transition takes effect; and the UID is a TEXT value indicating a 1444 globally unique identifier for the time zone. 1446 The default for DAYLIGHT is FALSE or Standard Time. 1448 The following are examples of the Time Zone Calendar Component: 1450 BEGIN:VTIMEZONE 1451 DAYLIGHT:FALSE 1452 DTSTART:19670101T000000 1453 RRULE;BYDAY=-1SU;BYMONTH=10:YEARLY 1454 TZTRANS:020000 1455 TZOFFSET:-0500 1456 TZNAME:EST 1457 END:VTIMEZONE 1459 BEGIN:VTIMEZONE 1460 DAYLIGHT:TRUE 1461 DTSTART:19870101T000000 1462 RRULE;BYDAY=1SU;BYMONTH=4:YEARLY 1463 TZTRANS:020000 1464 TZOFFSET:-0400 1465 TZNAME:EDT 1466 END:VTIMEZONE 1468 5.4.7 Calendar Properties 1470 The Calendar Properties are attributes that apply to the iCalendar 1471 Object, as a whole. These properties do not appear within a Calendar 1472 Component. They should be specified after the BEGIN:VCALENDAR 1473 properties and prior to any Calendar Component. 1475 5.4.7.1 Calendar Scale 1477 This property is identified by the property name CALSCALE. This 1478 property defines the calendar scale used for the calendar information 1479 specified in the iCalendar Object. This specification is based on the 1480 Gregorian calendar scale. The Gregorian calendar scale is assumed if 1481 this property is not specified in the iCalendar Object. It is 1482 expected that other calendar scales will be defined in other 1483 specifications or by future versions of this specification. 1485 The property is defined by the following notation: 1487 calscale = "CALSCALE" ":" calvalue CRLF 1489 calvalue = "GREGORIAN" / iana-scale 1491 iana-scale = 1494 The following is an example of this property: 1496 CALSCALE:GREGORIAN 1498 The data type for this property is TEXT. 1500 5.4.7.2 Geographic Position 1502 This property is identified by the property name GEO. This property 1503 specifies information related to the global position of the entity 1504 represented by the iCalendar Object. The property value specifies 1505 longitude and latitude. The longitude represents the location east 1506 and west of the prime meridian as a positive or negative real number, 1507 respectively. The latitude represents the location north and south of 1508 the equator as a positive or negative real number, respectively. 1510 The property is defined by the following notation: 1512 geo = "GEO" ":" geovalue CRLF 1514 geovalue = (float ";" float )/ url 1516 The following is an example of this property: 1518 GEO:37.24,-17.87 1520 The default data type for this property is FLOAT. Optionally, the 1521 data type for this property may be URL. The URL is the resource 1522 location for the geographical position value. 1524 5.4.7.3 Product Identifier 1526 This property is identified by the property name PRODID. This 1527 property specifies the identifier for the product that created the 1528 iCalendar Object. The vendor of the implementation should assure that 1529 this is a globally unique identifier; using some technique such as an 1530 ISO 9070 FPI value. This calendar property must be specified in the 1531 iCalendar Object but can only appear once. 1533 The property is defined by the following notation: 1535 prodid = "prodid" ":" pidvalue CRLF 1537 pidvalue = (text / url) 1538 ;Any text that describes the product and version 1539 ;and that is generally assured of being unique.> 1541 The following is an example of this property: 1543 PRODID:-//ABC Corporation//NONSGML My Product//EN 1545 The default data type for this property is TEXT. Optionally, the data 1546 type may be URL. The URL is the resource location for the product 1547 identifier value. 1549 5.4.7.4 Profile 1551 This property is identified by the property name PROFILE. This 1552 property defines the usage profile associated with the calendar 1553 object. When used in a MIME message entity, the value of this 1554 property must be the same as the Content-Type profile parameter 1555 value. This property can only appear once within the iCalendar 1556 Object. 1558 The property is defined by the following notation: 1560 profile = "PROFILE" ": profvalue CRLF 1562 profvalue = " component "-" action 1564 component = "EVENT" / "TODO" / "JOURNAL" / "FREEBUSY" 1565 / iana-component / x-token 1567 action = 1569 iana-component = 1571 The following is an example of this property when the iCalendar 1572 Object is used to request a meeting: 1574 PROFILE:EVENT-REQUEST 1576 In the event that this property is not specified, the usage profile 1577 is undefined. The data type for this property is TEXT. 1579 5.4.7.5 Profile Version 1581 This property is identified by the property name PROFILE-VERSION. 1582 This property specifies the identifier corresponding to the highest 1583 version number of the usage profile that was used in constructing the 1584 iCalendar Object. Values for this property are to be defined by 1585 registering an iCalendar usage profiles. 1587 The property is defined by the following notation: 1589 prof-version = "PROFILE-VERSION" ":" profvalue CRLF 1591 profvalue = iana-prfver / x-token 1593 iana-prfver = 1595 The following is an example of this property: 1597 PROFILE-VERSION:IPCS-1.0 1599 The data type for this property is TEXT. 1601 5.4.7.6 Source 1603 This property is identified by the property name SOURCE. This 1604 property is defined by the [MIME DIR] specification. The property 1605 identifies the URL for the source of the iCalendar Object. The source 1606 will usually be a resource on a calendaring and scheduling service. 1608 The property is defined by the following notation: 1610 source = "SOURCE" ":" url CRLF 1612 The following is an example of this property: 1614 SOURCE:http://xyz.corp.com/corp-cals/1997-events.or4 1616 The data type for this property is URL. 1618 5.4.7.7 Source Name 1620 This property is identified by the property name NAME. This property 1621 is defined by the [MIME DIR] specification. The property identifies 1622 the displayable, presentation name for the source of the iCalendar 1623 Object. The source name is a useful text to associate in the user- 1624 interface of an application with the value in the SOURCE property. 1626 The property is defined by the following notation: 1628 name = "NAME" ":" text CRLF 1630 The following is an example of this property: 1632 NAME:1997 Events Calendar for XYZ Corporation 1634 The data type for this property is TEXT. 1636 5.4.7.8 Version 1638 This property is identified by the property name VERSION. This 1639 property specifies the identifier corresponding to the highest 1640 version number of the MIME Calendaring and Scheduling Content Type 1641 specification supported by the implementation that created the 1642 iCalendar Object. The value of this property must be "2.0" to 1643 correspond to this specification. This calendar property must appear 1644 within the iCalendar Object but can only appear once. 1646 The property is defined by the following notation: 1648 version = "VERSION" ":" vervalue CRLF 1650 vervalue = "2.0" / x-token 1652 The following is an example of this property: 1654 VERSION:2.0 1655 The data type for this property is TEXT. 1657 5.5 Component Properties 1659 The following properties apply to either an event or to-do calendar 1660 object component. 1662 5.5.1.1 Attachment 1664 This property is identified by the property name ATTACH. The property 1665 provides the capability to associate an external object with a 1666 calendar component. For example, a document to be reviewed at a 1667 scheduled event or the description of the process steps for a to-do. 1668 The property may only be specified within event, to-do, or journal 1669 calendar components. This property may be specified multiple times 1670 within an iCalendar Object. 1672 The property is defined by the following notation: 1674 attach = [group "."] "ATTACH" ":" url CRLF 1676 The following are examples of this property: 1678 ATTACH: 1680 ATTACH://xyzCorp.com/pub/reports/r-960812.ps 1682 The data type for this property is URL. 1684 5.5.1.2 Attendee 1686 This property is identified by the property name ATTENDEE. The 1687 property defines an attendee within a calendar component. The 1688 property may only be specified within the event, to-do and free/busy 1689 calendar components. 1691 The property has the property parameters TYPE, for the type of 1692 attendee, ROLE, for the intended role of the attendee; STATUS, for 1693 the status of the attendee's participation; RSVP, for indicating 1694 whether the favor of a reply is requested; EXPECT, to indicate the 1695 expectation of the attendee's participation by the originator; and 1696 MEMBER, to indicate the group that the attendee belongs to. 1698 Multiple attendees may be specified by including multiple ATTENDEE 1699 properties within the MIME calendaring entity. 1701 The property data type default is RFC822-ADDRESS. The property data 1702 type may also be set to URL. This provides a useful mechanism to 1703 allow more than just the address of the attendee to be referenced. 1704 For example, the property value may refer to a URL. 1706 The property is defined by the following notation: 1708 attendee = [group "."] "ATTENDEE" [";" attparamlist] ":" 1709 (rfc822-address / URL) CRLF 1710 ;Value must match default or explicit data type 1712 attparamlist = attparam / attparamlist ";" attparam 1713 / paramlist / paramlist ";" attparam 1714 / paramlist ";" attparamlist ";" attparam 1716 attparam = typeparm / roleparm / statusparm / rsvpparm 1717 / expectparm / memberparm 1719 typeparm = "TYPE" "=" 1720 ("INDIVIDUAL" ; An individual 1721 / "GROUP" ; A group of individuals 1722 / "RESOURCE" ; A physical resource 1723 / "ROOM" ; A room resource 1724 / "UNKNOWN") ; Otherwise not known 1725 ;Default value is UNKNOWN 1727 roleparm = "ROLE" "=" 1728 ("ATTENDEE" ; Indicates a regular attendee 1729 / "OWNER" ; Indicates owner of event or to-do 1730 / "ORGANIZER" ; Indicates organizer of event or to-do 1731 / "DELEGATE") ; Indicates delegate to event or to-do 1732 ;Default is ATTENDEE 1734 statusparm = "STATUS" "=" 1735 ("NEEDS-ACTION" ; Indicates event or to-do needs action 1736 / "ACCEPTED" ; Indicates event or to-do accepted 1737 / "DECLINED" ; Indicates event or to-do not accepted 1738 / "TENTATIVE" ; Indicates event or to-do tentatively 1739 ; accepted. Status may change in the future. 1740 / "COMPLETED" ; Indicates to-do was completed. 1741 ; COMPLETED property has date/time completed. 1742 / "DELEGATED" ; Indicateds event or to-do delegated 1743 ; to another ATTENDEE 1744 / "CANCELED") ; Indicates event or to-do canceled for 1745 ; ATTENDEE 1746 ;Default is NEEDS-ACTION 1748 rsvpparm = "RSVP" "=" ("YES" / "NO") 1749 ;Default is NO 1751 expectparm = "EXPECT" "=" 1752 ("FYI" ; Indicates request is for your info 1753 / "REQUIRE" ; Indicates presence is required 1754 / "REQUEST" ; Indicates presence is requested 1755 / "IMMEDIATE") ; Indicates an immediate response needed 1756 ;Default is FYI 1758 memberparm = rfc822-address ; Indicates a group or mailing list 1760 The following is an example of this property's use for a to-do: 1762 ATTENDEE;ROLE=OWNER;STATUS=COMPLETED:jsmith@host1.com 1764 The following is an example of this property used for specifying 1765 multiple attendees to an event: 1767 ATTENDEE;ROLE=OWNER;STATUS=CONFIRMED:John Smith 1768 ATTENDEE;ROLE=ATTENDEE;STATUS=TENTATIVE:Henry Cabot 1769 1770 ATTENDEE;ROLE=DELEGATE;STATUS=CONFIRMED:Jane Doe 1772 The following is an example of this property with the value specified 1773 as an URL reference to a vCard that contains the information about 1774 the attendee: 1776 ATTENDEE;ROLE=ATTENDEE;STATUS=CONFIRMED;VALUE=URL: 1777 http://www.xyz.com/~myvcard.vcf 1779 The default data type for this property is RFC822-ADDRESS. The data 1780 type may be reset to URL; in which case the value is a location or 1781 message that contains the information that is to be used to specify 1782 the attendee address. 1784 5.5.1.3 Categories 1786 This property is identified by the property name CATEGORIES. This 1787 property defines the categories for a calendar component. The 1788 property may be specified within the event, to-do or journal calendar 1789 component with an arbitrary text value. The property may also be 1790 specified within the alarm property with a value of the alarm 1791 category. More than one category may be specified as a list of 1792 categories separated by the COMMA character (ASCII decimal 44). 1794 The properties is defined by the following notation: 1796 categories = "CATEGORIES" [";" paramlist] ":" catvalue CRLF 1798 catvalue = cat1value [,cat1value] / cat2value [, cat2value] 1800 cat1value = "APPOINTMENT" / "BUSINESS" / "EDUCATION" / "HOLIDAY" 1801 / "MEETING" / "MISCELLANEOUS" / "NON-WORKING HOURS" 1802 / "NOT IN OFFICE" / "PERSONAL" / "PHONE CALL" 1803 / "SICK DAY" / "SPECIAL OCCASION" / "TRAVEL" 1804 / "VACATION" / word 1805 ;Used in event and to-do components only 1807 cat2value = "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE" 1808 / x-token / iana-word 1809 ;Used in alarm component only 1811 The following are examples of this property in an event, to-do or 1812 journal calendar component: 1814 CATEGORIES:APPOINTMENT,EDUCATION 1815 CATEGORIES:MEETING 1817 The following are examples of this property in an alarm calendar 1818 component: 1820 CATEGORIES:AUDIO,DISPLAY 1822 CATEGORIES:PROCEDURE 1824 The data type for this property is TEXT. 1826 5.5.1.4 Classification 1828 This property is identified by the property name CLASS. This property 1829 defines the access classification for a calendar component. The 1830 property may only be specified in an event, to-do or journal calendar 1831 component. The property may only be specified once. 1833 An access classification is only one component of the general 1834 security system within a calendar application. It provides a method 1835 of capturing the scope of the access the calendar owner intends for 1836 information within an individual calendar entry. The access 1837 classification of an individual iCalendar component is useful when 1838 measured along with the other security components of a calendar 1839 system (e.g., user authorization, access rights, access role, etc.). 1840 Hence, the semantics of the individual access classifications can not 1841 be completely defined by this specification alone. Additionally, due 1842 to the "blind" nature of most exchange processes using this 1843 specification, these access classifications can not serve as an 1844 enforcement statement for a system receiving an iCalendar Object . 1845 Rather, they provide a method for capturing the intention of the 1846 calendar owner for the access to the calendar component. 1848 The property is defined by the following notation: 1850 class = "CLASS" [";" paramlist] ":" classvalue CRLF 1852 classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / x-token 1853 ;Default is PUBLIC 1855 The following is an example of this property: 1857 CLASS:PUBLIC 1859 The data type for this property is TEXT. 1861 5.5.1.5 Date/Time Created 1863 This property is identified by the property name CREATED. This 1864 property specifies the date and time that the calendar information 1865 was created. The property may be specified in any of the calendar 1866 components. The property may only be specified once. The date and 1867 time is an UTC value. 1869 The property is defined by the following notation: 1871 created = "CREATED" ":" date-time CRLF 1873 The following is an example of this property: 1875 CREATED:19960329T133000Z 1877 The data type for this property is DATE-TIME. 1879 5.5.1.6 Date/Time Completed 1881 This property is identified by the property name COMPLETED. This 1882 property defines the date and time that a to-do was actually 1883 completed. The property may be specified once in a to-do component. 1884 The date and time is a UTC value. 1886 The property is defined by the following notation: 1888 completed = "COMPLETED" ":" date-time CRLF 1890 The following is an example of this property: 1892 COMPLETED:19960401T235959Z 1894 This property is optional for MIME entities conforming to this 1895 content type. The data type for this property is DATE-TIME. 1897 5.5.1.7 Daylight 1899 This property is identified by the property name DAYLIGHT. This 1900 property may only be specified in a Time Zone Calendar Component. 1901 This property specifies whether Daylight Saving Time (i.e., value is 1902 TRUE) or Standard Time (i.e., value is FALSE) is in effect for the 1903 time zone. The default value is FALSE or Standard Time. 1905 The property is defined by the following notation: 1907 daylight = "DAYLIGHT" ":" boolean CRLF 1908 ;Default value is FALSE 1910 The following is an example of this property: 1912 DAYLIGHT:TRUE ;Specifies DST in effect in time zone 1914 The data type for this property is BOOLEAN. 1916 5.5.1.8 Description 1918 This property is identified by the property name DESCRIPTION. This 1919 property provides a more complete description of the calendar 1920 component, than that provided by the SUMMARY property. The property 1921 must be specified in the event, to-do and journal calendar 1922 components. The property may be specified multiple times only within 1923 a journal calendar component. 1925 The property is defined by the following notation: 1927 description = "DESCRIPTION" [";" paramlist] text CRLF 1929 The following is an examples of the property with formatted line 1930 breaks in the property value: 1932 DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Meeting to provide technical= 1933 review for "Phoenix" design.=0D=0A= 1934 Happy Face Conference Room. Phoenix design team= 1935 must attend this meeting. RSVP to team leader. 1937 The following is an examples of the property with folding of long 1938 lines: 1940 DESCRIPTION:Last draft of the new novel is to be completed 1941 for the editor's proof today. 1943 The data type for this property is TEXT. 1945 5.5.1.9 Due Date/Time 1947 This property is identified by the property name DUE. This property 1948 defines the date and time that a to-do is expected to be completed. 1949 The time can either be in local time, local time with UTC offset or 1950 UTC time. The property must be specified in a to-do calendar 1951 component, but may only be specified once. 1953 The property is defined by the following notation: 1955 due = "DUE" ":" date-time CRLF 1957 The following is an example of this property: 1959 DUE:19960401T235959Z 1961 The default data type for this property is DATE-TIME. The data type 1962 may be reset to DURATION. 1964 5.5.1.10 Duration 1966 This property is identified by the property name DURATION. The 1967 property specifies a duration of time. The property may be specified 1968 in an event calendar component in order to specify a duration of the 1969 event, instead of an explicit end date/time. The property may be 1970 specified in a free/busy calendar component in order to specify the 1971 amount of free time being requested. The property may be specified in 1972 an alarm calendar component in order to specify the period between 1973 repeating alarms. 1975 The property is defined by the following notation: 1977 duration = "DURATION" ":" duration CRLF 1979 The following is an example of this property that specifies an 1980 interval of time of 1 hour and zero minutes and zero seconds: 1982 DURATION:PT1H0M0S 1984 The following is an example of this property that specifies an 1985 interval of time of 15 minutes. 1987 DURATION:PT15M 1989 The data type for this property is DURATION. 1991 5.5.1.11 Start Date/Time 1993 This property is identified by the property name DTSTART. This 1994 property may be specified within the event, free/busy, and time zone 1995 calendar components. 1997 Within the event calendar component, this property defines the start 1998 date and time for the event. The property is required in event 1999 calendar components. The time can either be in local time, local time 2000 with UTC offset or UTC time. The local time is only to be used to 2001 specify date and time values that do not need to be fixed. A 2002 recipient must assume their own time zone for data and time values 2003 that do not include time zone information. Events may have a start 2004 date/time but no end date/time. In that case, the event does not take 2005 up any time. 2007 Within the free/busy calendar component, this property defines the 2008 start date and time for the free or busy time information. The time 2009 must be specified in local time with UTC offset or UTC time. 2011 Within the time zone calendar component, this property defines the 2012 effective start date and time for a time zone specification. This 2013 property is required within time zone calendar components. The time 2014 must be specified as a UTC time. 2016 The property is defined by the following notation: 2018 dtstart = "DTSTART" ":" date-time CRLF 2020 The following is an example of this property: 2022 DTSTART:19960401T235959-0600 2024 The data type for this property is DATE-TIME. 2026 5.5.1.12 End Date/Time 2028 This property is identified by the property name DTEND. This property 2029 may be specified within the event, free/busy, and time zone calendar 2030 components. 2032 Within the event calendar component, this property defines the end 2033 date and time for the event. The property is required in event 2034 calendar components. The time can either be in local time, local time 2035 with UTC offset or UTC time. The local time is only to be used to 2036 specify date and time values that do not need to be fixed. A 2037 recipient must assume their own time zone for data and time values 2038 that do not include time zone information. Events may have an end 2039 date/time but no start date/time. In that case, the event does not 2040 take up any time. 2042 Within the free/busy calendar component, this property defines the 2043 end date and time for the free or busy time information. The time 2044 must be specified in local time with UTC offset or UTC time. 2046 Within the time zone calendar component, this property defines the 2047 effective end date and time for a time zone specification. This 2048 property is required within time zone calendar components. The time 2049 must be specified as a UTC time. 2051 The property is defined by the following notation: 2053 dtend = "DTEND" ":" date-time CRLF 2055 The following is an example of this property: 2057 DTEND:19960401T235959Z 2059 The data type for this property is DATE-TIME. 2061 5.5.1.13 Exception Date/Times 2063 This property is identified by the property name EXDATE. This 2064 property defines the list of date/time exceptions for a recurring 2065 event or to-do component. The times can either be in local time, 2066 local time with UTC offset or UTC time. 2068 The property is defined by the following notation: 2070 exdate = "EXDATE" ":" date-time *["," date-time] CRLF 2072 The following is an example of this property: 2074 EXDATE:19960402T010000Z;19960403T010000Z;19960404T010000Z 2076 The data type for this property is DATE-TIME. 2078 5.5.1.14 Exception Rule 2080 This property is identified by the property name EXRULE. This 2081 property defines a rule or repeating pattern for an exception to a 2082 recurring event or to-do. This property may only be specified in the 2083 event and to-do calendar components. 2085 This property is defined by the same property values and parameters 2086 as specified for the RRULE property. The property is defined by the 2087 following notation: 2089 exrule = "EXRULE" [";" rparamlist] ":" rvalue CRLF 2091 The following are examples of this property. Except every other week, 2092 on Tuesday and Thursday for 4 occurrences: 2094 EXRULE;COUNT=4;INTERVAL=2;BYDAY=TU,TH:WEEKLY 2096 Except daily for 10 occurrences: 2098 EXRULE;COUNT=10:DAILY 2100 Except yearly in June and July for 8 occurrences: 2102 EXRULE;COUNT=8;BYMONTH=6,7:YEARLY 2104 The data type for this property is TEXT. 2106 5.5.1.15 Free/Busy Time 2108 This property is identified by the property name FREEBUSY. The 2109 property defines one or more free or busy time intervals. These time 2110 periods may be specified as either a start and end date-time or a 2111 start date-time and duration. 2113 The date and time is either local time with UTC offset or a UTC 2114 value. 2116 The FREEBUSY property may include the TYPE property parameter to 2117 specify the information defines a free or busy time interval. The 2118 property may also include the STATUS property parameter to specify 2119 the type of busy time. The STATUS parameter may be utilized by the 2120 application reading the busy time information in order to provide a 2121 richer view of the information. 2123 The property is defined by the following notation: 2125 freebusy = "FREEBUSY" [";" fbparmlist] ":" fbvalue CRLF 2127 fbparmlist = fbparam / paramlist ";" fbparam 2128 / fbparam ";" fbparmlist 2130 fbparam = fbtype / fbstatus 2132 fbtype = "TYPE" "=" ("FREE" or "BUSY") 2133 ;Default is BUSY 2135 fbstatus = "STATUS" "=" 2136 "BUSY" ;Represents busy time interval 2137 / "OUT" ;Represents out-of-office, non-working 2138 ;hours, or other unavailable interval 2139 / "PRIVATE" ;Represents private unavailable time 2140 / "CONFIDENTIAL" ;Represents confidential unavailable 2141 ;time 2142 ;Default is BUSY 2144 fbvalue = period *["," period] 2145 ;Value must match default or explicit data type 2147 The following are some examples of this property: 2149 FREEBUSY;STATUS=OUT:19970308T160000Z/PT8H30M 2151 FREEBUSY;TYPE=FREE:19970308T160000Z/PT3H, 19970308T200000Z/PT1H 2153 FREEBUSY properties within the Free/Busy Calendar Component should be 2154 sorted in ascending order, based on start time and then end time, 2155 with the earliest periods first. 2157 The FREEBUSY property may specify more than one value, separated by 2158 the COMMA character (ASCII decimal 44). In such cases, the FREEBUSY 2159 property values should all be of the same STATUS (e.g., all values of 2160 a particular STATUS listed together in a single property). 2162 The data type for this property is PERIOD. 2164 5.5.1.16 Last Modified 2166 This property is identified by the property name LAST-MODIFIED. The 2167 property specifies the date and time that the calendar information 2168 was last revised. The property value may include multiple "date-time" 2169 values in order to capture the sequence of modifications made to the 2170 calendar information. This property may be specified in the event, 2171 to-do, journal or free/busy calendar components. The data and time 2172 must be a UTC value. 2174 The property is defined by the following notation: 2176 last-mod = "LAST-MODIFIED" ":" date-time ["," date-time] CRLF 2178 The following is an example of this property: 2180 LAST-MODIFIED:19960817T133000Z 2182 The data type for this property is DATE-TIME. 2184 5.5.1.17 Location 2186 This property is identified by the property name LOCATION. The 2187 property defines the intended location for the event or to-do 2188 calendar component. The property may only be specified within an 2189 event or to-do calendar component. 2191 The property is defined by the following notation: 2193 location = "LOCATION [";" paramlist] ":" locavalue CRLF 2195 locavalue = text / url ;The value must be the same type as the 2196 ;default or explicit data type. 2198 The following are some examples of this property: 2200 LOCATION:Conference Room - F123, Bldg. 002 2202 LOCATION;VALUE=URL:http://www.xyzcorp.com/~jsmith.vcf 2204 The default data type for this property is TEXT. The data type may be 2205 reset to URL. In the case of the data type being URL, the property 2206 value may reference a vCard object. This provides a useful mechanism 2207 to specify a location in terms of its electronic business card. 2209 5.5.1.18 Priority 2211 This property is identified by the property name PRIORITY. The 2212 property defines the priority for event or to-do. The property may 2213 only be specified within an event or to-do calendar component. The 2214 value is an integer. A value of zero (ASCII decimal 48) specifies an 2215 undefined priority. A value of one (ASCII decimal 49) is the highest 2216 priority. A value of two (ASCII decimal 50) is the second highest 2217 priority. Subsequent numbers specify a decreasing ordinal priority. 2219 The property is specified by the following notation: 2221 priority = "PRIORITY" ":" integer CRLF 2222 ;Default is zero 2224 The following is an example of this property: 2226 PRIORITY:2 2228 The data type for this property is INTEGER. 2230 5.5.1.19 Related To 2232 This property is identified by the property name RELATED-TO. The 2233 property is used to represent relationships or references between one 2234 calendar component and another. The property may only be specified in 2235 the event, to-do and journal calendar components. The property value 2236 consists of the persistent, globally unique identifier of another 2237 MIME calendar component. This value would be represented in a MIME 2238 calendar component by the UID property. 2240 A linked relationship can be specified by a series of components that 2241 each, in turn, refer to their parent component. A group relationship 2242 can be specified by a number of components that all refer to one 2243 common parent component. 2245 Changes to a calendar component referenced by this property may 2246 impact the related calendar component. For example, if a group event 2247 changes its start or end date or time, then the related, dependent 2248 events will need to have their start and end dates changed in a 2249 corresponding way. This property is intended only to provide 2250 information on the relationship of calendar components. It is up to 2251 the target calendar system to maintain any property implications of 2252 this relationship. 2254 The property is defined by the following notation: 2256 related = "RELATED-TO" [";" paramlist] ":" relvalue CRLF 2258 relvalue = text / url ;Value must be the same type as 2259 ;default or explicit data type 2261 The following is an example of this property: 2263 RELATED-TO: 2265 RELATED-TO:19960401-080045-4000F192713-0052 2267 The default data type for this property is TEXT. The data type may be 2268 reset to URL. 2270 5.5.1.20 Recurrence Date/Times 2272 This property is identified by the property name RDATE. This property 2273 defines the list of date/times for a recurring event, to-do or time 2274 zone calendar component. This property may appear along with the 2275 RRULE property to define an aggregate set of repeating occurrences. 2276 When they both appear in an iCalendar Object, the recurring events 2277 are defined by the union of occurrences defined by both the RDATE and 2278 RRULE. The times can either be in local time, local time with UTC 2279 offset or UTC based time. If local time is used, the TIMEZONE 2280 component must be included in the iCalendar Object, otherwise the 2281 local time value will be interpreted relative to the time zone of the 2282 recipient. The period values for RDATE are specified using a specific 2283 start and a specific end basic format (period-explicit) or the period 2284 with a specific start and a specific duration basic format (period- 2285 start). 2287 The property is define by the following notation: 2289 rdate = "RDATE" ":" rdvalue *["," rdvalue] CRLF 2291 rdvalue = date-time / period 2292 ;Value must match the default or explicit data type 2294 The following is an example of this property: 2296 RDATE:19960403T020000Z/19960403T040000Z, 19960404T010000Z/PT3H 2298 The default data type for this property is DATE-TIME. The value may 2299 be reset to PERIOD. 2301 5.5.1.21 Recurrence Rule 2303 This property is identified by the property name RRULE. This property 2304 defines a rule or repeating pattern for a recurring events, to-dos, 2305 or time zone definitions. The property may be specified in the event, 2306 to-do, or time zone calendar components. 2308 The property value identifies the type of recursion rule. Valid 2309 property values include HOURLY, to specify repeating events based on 2310 an interval of an hour or more; DAILY, to specify repeating events 2311 based on an interval of a day or more; WEEKLY, to specify repeating 2312 events based on an interval of a week or more; MONTHLY, to specify 2313 repeating events based on an interval of a month or more; and YEARLY, 2314 to specify repeating events based on an interval of a year or more. 2316 The property includes property parameters that further qualify the 2317 recurrence rule. 2319 The INTERVAL property parameter contains a positive integer 2320 representing how often the RRULE repeats. The default value is "1" or 2321 every hour for a HOURLY rule, every day for a DAILY rule, every week 2322 for a WEEKLY rule, every month for a MONTHLY rule and every year for 2323 a YEARLY rule. For a HOURLY rule, the value may also be expressed as 2324 a duration value, specifying hours and minutes for the repeat 2325 interval. For example, PT1H30M, would represent a 1 hour and 30 2326 minute repeat interval. 2328 The UNTIL property parameter defines a date-time value which bounds 2329 the RRULE. If not present, and the COUNT property parameter is also 2330 not present, the RRULE is considered to repeat forever. 2332 The COUNT property parameter defines the number of occurrences at 2333 which to bound the RRULE. This property parameter is ignored if the 2334 UNTIL property parameter is also present. 2336 The BYDAY property parameter specifies a COMMA character (ASCII 2337 decimal 44) separated list of days of the week; MO, indicates Monday; 2338 TU, indicates Tuesday; WE, indicates Wednesday; TH, indicates 2339 Thursday; FR, indicates Friday; SA, indicates Saturday; SU, indicates 2340 Sunday. 2342 Each of these parameter values may also be preceded by a positive 2343 (+n) or negative (-n) integer. If present, this indicates the nth 2344 occurrence of the specific day within the MONTHLY or YEARLY RRULE. 2345 For example, within a MONTHLY rule, +1MO (or simply 1MO) represents 2346 the first Monday within the month, whereas -1MO represents the last 2347 Monday of the month. 2349 The BYMONTHDAY property parameter specifies a COMMA character (ASCII 2350 decimal 44) separated list of days of the month. Valid values are 1 2351 to 31 or -31 to -1. 2353 The BYYEARDAY property parameter specifies a COMMA character (ASCII 2354 decimal 44) separated list of days of the year. Valid values are 1 to 2355 366 or -366 to -1. For example, -1 represents the last day of the 2356 year (December 31st). 2358 The BYSETPOS property parameter specifies a COMMA character (ASCII 2359 decimal 44) separated list of values which corresponds to the nth 2360 occurrence within the set of events specified by the rule. Valid 2361 values are 1 to 366 or -366 to -1. It must only be used in 2362 conjunction with another Byxxx property parameter. For example "the 2363 last work day of the month" could be represented as: 2365 RRULE;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1:MONTHLY 2367 The BYWEEKNO property parameter specifies a comma separated list of 2368 weeks of the year. Valid values are 1 to 52. This corresponds to 2369 weeks according to week numbering as defined in [ISO 8601]. That is, 2370 a week as "A seven day period within a calendar year, starting on a 2371 Monday and identified by its ordinal number within the year; the 2372 first calendar week of the year is the one that includes the first 2373 Thursday of that year." This property parameter is only valid for 2374 YEARLY rules. 2376 The BYMONTH property parameter specifies a comma separated list of 2377 months of the year. Valid values are 1 to 12. 2379 The WKST property parameter specifies the day on which the workweek 2380 starts. Valid values are MO, TU, WE, TH, FR, SA and SU. This is 2381 significant when a WEEKLY RRULE has an interval greater than 1. The 2382 default value is MO. 2384 If two different Byxxx property parameters are specified within the 2385 RRULE, the recurrence occurrence must meet both criteria. 2387 If Byxxx property parameter values are found which are beyond the 2388 available scope (ie, BYMONTHDAY=-30 in February), they are simply 2389 ignored. If a positive range limit is beyond the available scope, it 2390 will be interpreted as -1. Likewise, if a negative range limits 2391 beyond the available scope, it will be interpreted as +1. 2393 The RRULE property requires referencing the DTSTART, DTEND or 2394 DURATION properties in the iCalendar object to calculate the Event or 2395 To-do instances. 2397 The DTSTART and DTEND pair or DTSTART and DURATION pair, specified 2398 within the iCalendar object defines the first instance of the 2399 recursion. When used with a recurrence rule, the DTSTART and DTEND 2400 properties must be specified in local time and the appropriate set of 2401 TIMEZONE components must be included. For detail on the usage of the 2402 TIMEZONE component, see the Time Zone Calendar Component definition. 2404 Any duration associated with the iCalendar Object applies to all 2405 members of the generated recursion. Any modified duration for 2406 specific recurrences would have to be explicitly specified using the 2407 RDATE property. 2409 This property is defined by the following notation: 2411 rrule = "RRULE" [rparamlist] ":" rvalue CRLF 2413 rparamlist = rparam / rparamlist ";" rparam / paramlist 2414 / paramlist ";" rparam 2415 / paramlist ";" rparamlist ";" rparam 2417 rparam = "UNTIL" "=" enddate 2418 / "COUNT" "=" interval 2419 / "INTERVAL" "=" rinterval 2420 / "BYDAY" "=" bdweekdaylist 2421 / "BYMONTHDAY" "=" bmdaylist 2422 / "BYYEARDAY" "=" bydaylist 2423 / "BYSETPOS" "=" bsplist 2424 / "BYWEEKNO" "=" bwdaylist 2425 / "BYMONTH" "=" bmlist 2426 / "WKST" "=" weekday 2427 / "X-" word "=" word 2429 rvalue = "HOURLY" / "DAILY" / "WEEKLY" / "YEARLY" 2431 rinterval = interval ; For any rvalue 2432 / duration ; Only for rvalue = HOURLY 2434 DIGIT = ;0-9 2436 digits = 1*DIGIT 2438 interval = digits 2440 enddate = date ;A UTC value 2442 plus = "+" 2444 minus = "-" 2446 ordmoday = 1*2digits ;1 to 31 2448 ordwk = 1*2digits ;1 to 52 2450 ordyrday = 1*3digits ;1 to 366 2452 daynumber = (plus / minus) ordmoday 2454 weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" > 2456 bdweekdaynum = [daynumber] weekday 2458 bdweekdaylist = bdweekdaynum / bdweekdaynum "," *(bdweekdaynum) 2460 bmposday = [plus] ordmoday 2462 bmnegday = minus ordmoday 2463 bmdaylist = bmposday *("," bmposday / bmnegday) 2464 / bmnegday *("," bmnegday / bmposday) 2466 byposday = [plus] ordyrday 2468 bynegday = minus ordyrday 2470 bydaylist = byposday *("," byposday / bynegday) 2471 / bynegday *("," bynegday / byposday) 2473 bsplist = byposday *("," byposday / bynegday) 2474 / bynegday *("," bynegday / byposday) 2476 bwposday = [plus] ordwk 2478 bwnegday = minus ordwk 2480 bwdaylist = bwposday *("," bwposday / bwnegday) 2481 / bwnegday *("," bwnegday / bwposday) 2483 bmposmon = 1*2digits ;1 to 12 2485 bmlist = bmposmon *("," bmposmon) 2487 Examples of this property include the following. Daily for 10 2488 occurrences: 2490 RRULE;COUNT=10:DAILY 2492 Daily until 12/24/94: 2494 RRULE;UNTIL=19941224T000000Z:DAILY 2496 Every other day - forever: 2498 RRULE;INTERVAL=2:DAILY 2500 Every 10 days, 5 occurrences: 2502 RRULE;COUNT=5;INTERVAL=10:DAILY 2504 Weekly for 10 occurrences 2506 RRULE;COUNT=10:WEEKLY 2508 Weekly until 12/24/94 2510 RRULE;UNTIL=19941224T000000Z:WEEKLY 2512 Every other week - forever: 2514 RRULE;INTERVAL=2;WKST=SU:WEEKLY 2516 Weekly on Tuesday and Thursday for 5 weeks: 2518 RRULE;INTERVAL=5;WKST=SU;BYDAY=TU,TH:WEEKLY 2520 Every other week on Monday, Wednesday and Friday until 12/24/94: 2522 RRULE;INTERVAL=2;WKST=SU;BYDAY=MO,WE,FR;=UNTIL=19941224T000000Z: 2523 WEEKLY 2525 Every other week on Tuesday and Thursday, for 8 occurrences: 2527 RRULE;INTERVAL=2;WKST=SU;COUNT=8;BYDAY=TU,TH:WEEKLY 2529 Monthly on the 1st Friday for ten occurrences: 2531 RRULE;COUNT=10;BYDAY=1FR:MONTHLY 2533 Monthly on the 1st Friday until 12/24/94: 2535 RRULE;UNTIL=19941224T000000Z;BYDAY=1FR:MONTHLY 2537 Every other month on the 1st and last Sunday of the month for 2538 10occurrences: 2540 RRULE;COUNT=10;BYDAY=1SU,-1SU:MONTHLY 2542 Monthly on the second to last Monday of the month for 6 months: 2544 RRULE;COUNT=6;BYDAY=-2MO:MONTHLY 2546 Monthly on the third to the last day of the month, forever: 2548 RRULE;BYMONTHDAY=-3:MONTHLY 2550 Monthly on the 2nd and 15th of the month for 10 occurrences: 2552 RRULE;COUNT=10;BYMONTHDAY=2,15:MONTHLY 2554 Monthly on the first and last day of the month for 10 occurrences: 2556 RRULE;COUNT=10;BYMONTHDAY=1,-1:MONTHLY 2558 Every 18 months on the 10th thru 15th of the month for 10 2559 occurrences: 2561 RRULE;COUNT=10;INTERVAL=18;BYMONTHDAY=10,11,12,13,14,15:MONTHLY 2563 Monthly on the second to the last day for 5 months. So, if the start 2564 date is August 1996, the event would repeat on 8/30/96, 9/29/96, 2565 10/30/96, 11/29/96, and 12/30/96: 2567 RRULE;COUNT=5;BYMONTHDAY=-2:MONTHLY 2569 Yearly in June and July for 10 occurrences: 2571 RRULE;COUNT=10;BYMONTH=6,7:YEARLY 2572 Every other year on January, February, and March for 10 occurrences: 2574 RRULE;COUNT=10;INTERVAL=2;BYMONTH=1,2,3:YEARLY 2576 Every 3rd year on the 1st, 100th and 200th day for 10 occurrences: 2578 RRULE;COUNT=10;INTERVAL=3;BYYEARDAY=1,100,200:YEARLY 2580 Every 20th Monday of the year, forever: 2582 RRULE;BYDAY=20MO:YEARLY 2584 Monday of Week No. 20, forever: 2586 RRULE;BYWEEKNO=20;BYDAY=MO:YEARLY 2588 Every Thursday in March, forever: 2590 RRULE;BYDAY=TH;BYMONTH=3:YEARLY 2592 Every Thursday, but only in the summer, forever: 2594 RRULE;BYDAY=TH;BYMONTH=6,7,8:YEARLY 2596 Every Friday the 13th, forever: 2598 RRULE;BYDAY=FR;BYMONTHDAY=13:MONTHLY 2600 The first Saturday that follows the first Sunday of the month, 2601 forever: 2603 RRULE;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13:MONTHLY 2605 Every four years, the first Tuesday after a Monday in November, 2606 forever (U.S. Election day): 2608 RRULE;INTERVAL=4;BYDAY=TU;BYMONTHDAY=7,8,9,10,11,12,13:YEARLY 2610 The 3rd instance into the month of any of Tuesday, Wednesday or 2611 Thursday, for the next 3 months: 2613 RRULE;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3:MONTHLY 2615 The 2nd to last weekday of the month" 2617 RRULE;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2:MONTHLY 2619 The data type for this property is TEXT. 2621 5.5.1.22 Resources 2623 This property is identified by the property name RESOURCES. This 2624 property defines the equipment or resources needed for the event or 2625 to-do. The property value is an arbitrary text. The property may only 2626 be specified in the event or to-do calendar component. More than one 2627 resource may be specified as a list of resources separated by the 2628 COMMA character (ASCII decimal 44). 2630 The property is defined by the following notation: 2632 resource = "RESOURCES" [";" paramlist] ":" resvalist CRLF 2634 resvalist = resvalue / resvalue "," resvalist 2636 resvalue = "CATERING" / "CHAIRS" / "COMPUTER PROJECTOR" 2637 / "EASEL" / "OVERHEAD PROJECTOR" / "SPEAKER PHONE" 2638 / "TABLE" / "TV" / "VCR" / "VIDEO PHONE" / "VEHICLE" 2639 / word 2641 The following is an example of this property: 2643 RESOURCES:EASEL,PROJECTOR,VCR 2645 The data type for this property is TEXT. 2647 5.5.1.23 Response Sequence Number 2649 This property is identified by the property name RESPONSE-SEQUENCE. 2650 This property defines the revision sequence of the calendar 2651 component. The property may only be specified in an event, to-do, 2652 journal or free/busy calendar component. This property is needed to 2653 properly handle the receipt and processing of a sequence of MIME 2654 calendar components that have been delivered out of order. Such is 2655 the case for store-and-forward based transports. The first response 2656 to an a request is created with response sequence number of "0" 2657 (ASCII decimal 48). If the value is non-zero, it must be specified. 2658 It is incremented each time another reply is sent. 2660 The property is defined by the following notation: 2662 respseq = "RESPONSE-SEQUENCE" ":" integer CRLF 2663 ;Default is "0". 2665 The following is an example of this property: 2667 RESPONSE-SEQUENCE:1 2669 The data type for this property is INTEGER. 2671 5.5.1.24 Sequence Number 2673 This property is identified by the property name SEQUENCE. This 2674 property defines the revision sequence of the calendar component used 2675 in a request. The property may only be specified in an event, to-do, 2676 journal or free/busy calendar component. This property is needed to 2677 properly handle the receipt and processing of a sequence of MIME 2678 calendar components that have been delivered out of order. Such is 2679 the case for store-and-forward based transports. The first request is 2680 created with a sequence number of "0" (ASCII decimal 48). It is 2681 incremented each time the ORGANIZER or OWNER issues a revision to the 2682 request. 2684 The property is defined by the following notation: 2686 sequence = "SEQUENCE" ":" integer CRLF 2687 ;Default is "0". 2689 The following is an example of this property: 2691 SEQUENCE:1 2693 The data type for this property is INTEGER. 2695 5.5.1.25 Status 2697 This property is identified by the property name STATUS. This 2698 property defines the overall status for the calendar component. This 2699 property may only be specified in the event and to-do calendar 2700 components. When specified in an event calendar component, the 2701 property is used to specify the general consensus for the meeting. 2702 The property may only be specified in the to-do calendar component 2703 when the ATTENDEE property is not specified. For group scheduled 2704 events and to-dos, the status is specified on an individual basis in 2705 the ATTENDEE property. 2707 The property is defined by the following notation: 2709 status = "STATUS" [";" paramlist] ":" statvalue CRLF 2711 statvalue = "NEEDS ACTION" ;Indicates to-do needs action. 2712 / "COMPLETED" ;Indicates to-do completed 2713 / "TENTATIVE" ;Indicates event is being 2714 ;tentatively scheduled 2715 / "CONFIRMED" ;Indicates event is definite 2716 / "CANCELLED" ;Indicates event was canceled 2718 The following is an example of this property: 2720 STATUS:TENTATIVE 2722 The data type for this property is TEXT. 2724 5.5.1.26 Summary 2726 This property is identified by the property name SUMMARY. This 2727 property defines a short summary or subject for the calendar 2728 component. The property may only be specified in the event, to-do and 2729 alarm calendar component. 2731 The property is defined by the following notation: 2733 summary = "SUMMARY" [";" paramlist] ":" text CRLF 2734 The following is an example of this property: 2736 SUMMARY:Department Party 2738 The data type for this property is TEXT. 2740 5.5.1.27 Time Transparency 2742 This property is identified by the property name TRANSP. This 2743 property defines whether an event is transparent or not to free/busy 2744 time searches. This property may only be specified in an event 2745 calendar component. 2747 The property is specified by the following notation: 2749 transp = "TRANSP" [";" paramlist] ":" transvalue CRLF 2751 transvalue = "BUSY" ;Opaque/blocks on free/busy searches 2752 ;Default value is BUSY 2753 / "OUT" ;Opaque/blocks on free/busy searches 2754 / "PRIVATE" ;Opaque/blocks on free/busy searches 2755 / "CONFIDENTIAL" ;Opaque/blocks on free/busy searches 2756 / "TRANSPARENT" ;Transparent on free/time searches 2758 The following is an example of this property for an event that is 2759 transparent or does not block on free/busy time searches: 2761 TRANSP:TRANSPARENT 2763 The following is an example of this property for an event that is 2764 opaque or blocks on free/busy time searches: 2766 TRANSP:BUSY 2768 The data type for this property is TEXT. 2770 5.5.1.28 Time Zone Name 2772 This property is identified by the property name TZNAME. This 2773 property specifies the customary designation for a time zone 2774 descripiton. This property may only be specified in the Time Zone 2775 Calendar Component. 2777 This property is defined by the following notation: 2779 tzname = "TZNAME" [";" paramlist] ":" text CRLF 2781 The following are examples of this property: 2783 TZNAME: EST 2785 TZNAME: PDT 2787 The data type for this property is TEXT. 2789 5.5.1.29 Time Zone Offset 2791 This property is identified by the property name TZOFFSET. This 2792 property specifies the offset from UTC for a time zone. This property 2793 may only be specified in a Time Zone Calendar Component. A Time Zone 2794 Calendar Component must include this property. The property value is 2795 a signed numeric indicating the number of hours and possibly minutes 2796 from UTC. Positive numbers represents time zones east, or ahead of 2797 UTC. Negative numbers represents time zones west of, or behind UTC. 2799 The property is defined by the following notation: 2801 tzoffset = "TZOFFSET" ":" utc-offset CRLF 2803 The following are examples of this property: 2805 TZOFFSET:-0500 2807 TZOFFSET:+0530 2809 The data type for this property is UTC-OFFSET. 2811 5.5.1.30 Time Zone Transition Time 2813 This property is identified by the property name TZTRANS. This 2814 property specifies the time of day when a time zone transitions to 2815 the specified time observance (e.g., into daylight savings time). 2817 The property is defined by the following notation: 2819 tztrans = "TZTRANS" ":" time CRLF 2821 The following are examples of this property: 2823 TZTRANS:020000 2825 The data type for this property is TIME. 2827 5.5.1.31 Uniform Resource Locator 2829 This property is identified by the property name URL. This property 2830 defines a Uniform Resource Locator (URL) associated with the 2831 iCalendar Object. This property may be specified in the event, to-do, 2832 journal, free/busy, and alarm calendar components. 2834 The property is defined by the following notation: 2836 url = "URL" ":" url CRLF 2838 The following is an example of this property: 2840 URL:http://abc.com/pub/calendars/jsmith/mytime.or3 2842 The data type for this property is URL. 2844 5.5.1.32 Unique Identifier 2846 This property is identified by the property name UID. This property 2847 defines the persistent, globally unique identifier for the calendar 2848 component. The property may be specified in the event and to-do 2849 calendar components. 2851 The property is defined by the following notation: 2853 uid = "UID" [";" paramlist] ":" text CRLF 2855 The following is an example of this property: 2857 UID:19960401-080045-4000F192713-0052 2859 This property is an important method for group scheduling 2860 applications to match requests with later replies, modifications or 2861 deletion requests. Calendaring and scheduling applications that do 2862 not generate this property in event and to-do calendar components may 2863 be limiting their interoperability with other group scheduling 2864 applications. 2866 The data type for this property is TEXT. 2868 5.5.1.33 Non-standard Properties 2870 The MIME Calendaring and Scheduling Content Type provides a "standard 2871 mechanism for doing non-standard things". This extension support is 2872 provided for implementers to "push the envelope" on the existing 2873 version of the specification. Extension properties are specified by 2874 property and/or property parameter names that have the prefix text of 2875 "X-" (the two character sequence: LATIN CAPITAL LETTER X character 2876 followed by the HYPEN-MINUS character). It is recommended that 2877 vendors concatenate onto this sentinel another short prefix text to 2878 identify the vendor. This will facilitate readability of the 2879 extensions and minimize possible collision of names between different 2880 vendors. User agents that support this content type are expected to 2881 be able to parse the extension properties and property parameters but 2882 may ignore them. 2884 The property is defined by the following notation: 2886 extension = "X-" [vendorid] word [";" paramlist] ":" value 2888 vendorid = 1*char "-" ;Vendor identification prefix text 2890 The following might be the ABC vendor's extension for an audio-clip 2891 form of subject property: 2893 X-ABC-MMSUBJ;TYPE=WAVE; VALUE=URL: http://load.noise.org/mysubj.wav 2895 At present, there is no registration authority for names of extension 2896 properties and property parameters. The data type for this property 2897 is TEXT. Optionally, the data type may be any of the other valid data 2898 types. 2900 5.6 Complete Format Definition 2902 The following modified Backus-Naur Notation (BNF) is provided to 2903 assist developers in building parsers for the properties of this 2904 content type. 2906 CHAR = 2907 DIGIT = ;0-9 2908 CTL = 2909 CR = 2910 LF = 2911 SPACE = 2912 HTAB = 2913 CLRF = CR LF 2914 LWSP-char = SPACE / HTAB ;Semantics equals SPACE 2915 linear-white-space = 1*(CRLF LWSP-char) 2916 ;Semantics is SPACE CRLF, which indicates folding 2917 WORD = ATOM / quoted-string 2918 quoted-string = <"> *(qtext/quoted-pair) <"> ; Regular qtext or 2919 ; quoted chars. 2920 qtext = , ; => may be folded 2921 "\" & CR, and including linear-white-space> 2922 quoted-pair ="\" CHAR ; may quote any char 2923 ATOM = 1* 2925 ; 2926 ;Definition of a line of content information 2927 ; 2928 contentline = [group "."] name [";" paramlist] ":" value CRLF 2929 ;Folding permitted on content lines. 2931 group = atom ;As defined in [RFC 822] 2933 name = x-name / iana-name ;An iCalendar attribute/property 2935 x-name = 2938 iana-name = 2940 paramlist = parameter / paramlist ";" parameter 2942 parameter = encodingparm 2943 / valuetypeparm ;If not present => inline value 2944 / charsetparm 2945 / languageparm 2946 / [parmtype "="] parmvalues 2948 encodingparm = "encoding" "=" encodetype 2949 encodetype = "8bit" ;From [RFC 2045] 2950 / "7bit" ;From [RFC 2045] 2951 / "base64" ;From [RFC 2045] 2952 / "quoted-printable" ;From [RFC 2045] 2954 valuetypeparm = "value" "=" valuetype 2956 valuetype = "url" 2957 / "text" 2958 / "date" 2959 / "time" 2960 / "date-time" 2961 / "period" 2962 / "duration" 2963 / "boolean" 2964 / "integer" 2965 / "float" 2966 / "rfc822-address" 2967 / "utc-offset" 2968 / x-token 2969 / iana-value 2971 iana-value = 2974 charsetparm = "charset" "=" charset ;As defined in [RFC 2047] 2976 languageparm = "language" "=" language ;As defined in [RFC 1766] 2978 parmtype = x-token / iana-ptype 2980 iana-ptype = 2983 parmvalues = parmvalue / parmvalues "," parmvalue 2985 parmvalue = x-name / iana-pvalue 2987 iana-pvalue = 2990 value = url / text / date / time/ date-time / period / 2991 / duration / boolean / integer / float / rfc822-address 2992 / utc-offset / iana-value 2994 iana-value = 2997 ; 2998 ;Data Types 2999 ; 3000 url = 3001 text = 3004 date-fullyear = 4DIGIT 3005 date-month = 2DIGIT ;01-12 3006 date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31 3007 ;based on month/year 3008 full-date = date-fullyear date-month date-mday 3009 date = fulldate *["," fulldate] 3011 time-hour = 2DIGIT ;00-24 3012 time-minute = 2DIGIT ;00-60 3013 time-second = 2DIGIT ;00-59 3014 time-numzone = ("+" / "-") time-hour time-minute 3015 time-zone = "Z" / time-numzone 3016 full-time = time-hour time-minute time-second [time-zone] 3017 time = fulltime *["," fulltime] 3019 date-time = date "T" time ;As specified above in date and time 3021 dur-second = 1*DIGIT "S" 3022 dur-minute = 1*DIGIT "M" [dur-second] 3023 dur-hour = 1*DIGIT "H" [dur-minute] 3024 dur-time = "T" (dur-hour / dur-minute / dur-second) 3026 dur-week = 1*DIGIT "W" 3027 dur-day = 1*DIGIT "D" 3028 dur-month = 1*DIGIT "M" [dur-day] 3029 dur-year = 1*DIGIT "Y" [dur-month] 3030 dur-date = (dur-day / dur-month / dur-year) [dur-time] 3032 duration = "P" (dur-date / dur-time / dur-week) 3034 period-explicit = date-time "/" date-time 3035 ;ISO 8601 complete representation basic format for a period of time 3036 ;consisting of a start and end. The start must be before the end. 3038 period-start = date-time "/" duration 3039 ;ISO 8601 complete representation basic format for a period of time 3040 ;consisting of a start and duration of time. 3041 period = period-explicit / period-start 3043 boolean = "TRUE" / "FALSE" 3045 integer = ["+" / "-"] *DIGIT 3047 float = ["+" / "-"] *DIGIT ["." *DIGIT] 3049 rfc822-address = addr-spec / [phrase] "<" addr-spec ">" 3051 addr-spec = local-part "@" domain ;RFC 822 address 3052 local-part = WORD *("." WORD) 3053 domain = domain-ref *("." domain-ref) 3054 domain-ref = ATOM 3055 phrase = 1*WORD 3057 utc-offset = time-numzone ;As defined above in time 3059 ; 3060 ;Definition of an iCalendar Object 3061 ; 3062 icalobject = "BEGIN" ":" "VCALENDAR" CRLF 3063 icalbody 3064 "END" ":" "VCALENDAR" CRLF [icalobject] 3066 ; 3067 ;Definition of an iCalendar Property 3068 ; 3069 property = [group "."] propname [";" parmlist] ":" value CRLF 3071 propname = 3072 / iana-prop / x-token 3074 x-token = 3077 iana-prop = 3080 ; 3081 ;Definition of the Calendar Components and Calendar Properties 3082 ; 3083 icalbody = calprops 1*component 3085 calprops = [calscale] [geo] prodid [profile] [prof-version] 3086 [source] [name] version 3088 component = 1*(eventc / todoc / journalc / freebusyc / 3089 / timezonec) 3091 ;Event Component 3092 eventc = "BEGIN" ":" "VEVENT" CRLF 3093 *eventprop *alarmc 3094 "END" ":" "VEVENT" CRLF 3096 eventprop = *attach *attendee *categories [class] 3097 / [created] description dtend dtstart *exdate 3098 / *exrule *last-mod [location] [priority] 3099 / *related *resources *rdate *rrule 3100 / [resp-seq] / [seq] [status] [summary] [transp] 3101 / [uid] *url 3103 ;To-do Component 3104 todoc = "BEGIN" ":" "VTODO" CRLF 3105 *todoprop *alarmc 3106 "END" ":" "VTODO" CRLF 3107 todoprop = *attach *attendee *categories [class] [completed] 3108 / [created] description dtstart due *exdate 3109 / *exrule *last-mod [location] priority 3110 / *related *resources *rdate *rrule [resp-seq] 3111 / [seq] [status] [summary] [transp] [uid] *url 3113 ;Journal Component 3114 journalc = "BEGIN" ":" "VJOURNAL" CRLF 3115 *jourprop 3116 "END" ":" "VJOURNAL" CRLF 3118 jourprop = *attach *categories [class] [created] description 3119 / dtstart *last-mod *related [resp-seq] [seq] [uid] *url 3121 ;Free/Busy Component 3122 freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF 3123 *fbprop 3124 "END" ":" "VFREEBUSY" CRLF 3126 fbprop = *attendee [created] [duration] [dtend] [dtstart] 3127 / *freebusy *last-mod *related [resp-seq] [seq] [uid] 3128 / *url 3130 ;Alarm Component 3131 alarmc = "BEGIN" ":" "VALARM" CRLF 3132 *alarmprop 3133 "END" ":" "VALARM" CRLF 3135 alarmprop = *attach [created] [description] dtstart duration 3136 / *last-mod *related repeat [summary] *url 3138 ;Time Zone Component 3139 timezonec = "BEGIN" ":" "VTIMEZONE" CRLF 3140 *tzprop 3141 "END" ":" "VTIMEZONE" CRLF 3143 tzprop = [created] [daylight] [dtend] dtstart [rdate / rrule] 3144 [tzname] tzoffset [tztrans] [uid] 3146 ; 3147 ;Definition of the Calendar Properties 3148 ; 3149 calscale = "CALSCALE" ":" calvalue CRLF 3150 calvalue = "GREGORIAN" / iana-scale 3151 iana-scale = 3154 geo = "GEO" ":" geovalue CRLF 3155 geovalue = (float ";" float )/ url 3157 prodid = "prodid" ":" pidvalue CRLF 3158 pidvalue = (guid-text / url) 3159 ;Any text that describes the product and version 3160 ;and that is generally assured of being unique.> 3161 profile = "PROFILE" ": profvalue CRLF 3162 profvalue = " component "-" action 3163 component = "EVENT" / "TODO" / "JOURNAL" / "FREEBUSY" 3164 / iana-component / x-token 3165 action = 3166 iana-component = 3168 prof-version = "PROFILE-VERSION" ":" profvalue CRLF 3169 profvalue = iana-prfver / x-token 3170 iana-prfver = 3172 source = "SOURCE" ":" url CRLF 3174 name = "NAME" ":" text CRLF 3176 version = "VERSION" ":" vervalue CRLF 3177 vervalue = "2.0" / x-token 3179 ;Component Properties 3180 attach = [group "."] "ATTACH" ":" url CRLF 3182 attendee = [group "."] "ATTENDEE" [";" attparamlist] ":" 3183 (rfc822-address / url) CRLF 3185 attparamlist = attparam / attparamlist ";" attparam 3186 / paramlist / paramlist ";" attparam 3187 / paramlist ";" attparamlist ";" attparam 3189 attparam = typeparm / roleparm / statusparm / rsvpparm 3190 / expectparm / memberparm 3192 typeparm = "TYPE" "=" 3193 ("INDIVIDUAL" ; An individual 3194 / "GROUP" ; A group of individuals 3195 / "RESOURCE" ; A physical resource 3196 / "ROOM" ; A room resource 3197 / "UNKNOWN") ; Otherwise not known 3198 ;Default value is UNKNOWN 3200 roleparm = "ROLE" "=" 3201 ("ATTENDEE" ; Indicates a regular attendee 3202 / "OWNER" ; Indicates owner of event or to-do 3203 / "ORGANIZER" ; Indicates organizer of event or to-do 3204 / "DELEGATE") ; Indicates delegate to event or to-do 3205 ;Default is ATTENDEE 3207 statusparm = "STATUS" "=" 3208 ("NEEDS-ACTION" ; Indicates event or to-do needs action 3209 / "ACCEPTED" ; Indicates event or to-do accepted 3210 / "DECLINED" ; Indicates event or to-do not accepted 3211 / "TENTATIVE" ; Indicates event or to-do tentatively 3212 ; accepted. Status may change in the future. 3213 / "COMPLETED" ; Indicates to-do was completed. 3214 ; COMPLETED property has date/time completed. 3216 / "DELEGATED" ; Indicateds event or to-do delegated 3217 ; to another ATTENDEE 3218 / "CANCELED") ; Indicates event or to-do canceled for 3219 ; ATTENDEE 3220 ;Default is NEEDS-ACTION 3222 rsvpparm = "RSVP" "=" ("YES" / "NO") 3223 ;Default is NO 3225 expectparm = "EXPECT" "=" 3226 ("FYI" ; Indicates request is for your info 3227 / "REQUIRE" ; Indicates presence is required 3228 / "REQUEST" ; Indicates presence is requested 3229 / "IMMEDIATE") ; Indicates an immediate response needed 3230 ;Default is FYI 3232 memberparm = rfc822-address ; Indicates a group or mailing list 3234 categories = "CATEGORIES" [";" paramlist] ":" catvalue CRLF 3236 catvalue = cat1value [,cat1value] / cat2value [, cat2value] 3238 cat1value = "APPOINTMENT" / "BUSINESS" / "EDUCATION" / "HOLIDAY" 3239 / "MEETING" / "MISCELLANEOUS" / "NON-WORKING HOURS" 3240 / "NOT IN OFFICE" / "PERSONAL" / "PHONE CALL" 3241 / "SICK DAY" / "SPECIAL OCCASION" / "TRAVEL" 3242 / "VACATION" / word 3243 ;Used in event and to-do components 3244 cat2value = "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE" 3245 / x-token / iana-word 3246 ;Used in alarm component 3248 class = "CLASS" [";" paramlist] ":" classvalue CRLF 3249 classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / x-token 3250 ;Default is PUBLIC 3252 created = "CREATED" ":" date-time CRLF 3254 completed = "COMPLETED" ":" date-time CRLF 3256 daylight = "DAYLIGHT" ":" boolean CRLF 3257 ;Default value is FALSE 3259 description = "DESCRIPTION" [";" paramlist] text CRLF 3261 due = "DUE" ":" date-time CRLF 3263 duration = "DURATION" ":" duration CRLF 3265 dtstart = "DTSTART" ":" date-time CRLF 3267 dtend = "DTEND" ":" date-time CRLF 3269 exdate = "EXDATE" ":" date-time *["," date-time] CRLF 3270 exrule = "EXRULE" [";" rparamlist] ":" rvalue CRLF 3272 freebusy = "FREEBUSY" [";" fbparmlist] ":" fbvalue CRLF 3274 fbparmlist = fbparam / paramlist ";" fbparam 3275 / fbparam ";" fbparmlist 3276 fbparam = fbtype / fbstatus 3278 fbtype = "TYPE" "=" ("FREE" or "BUSY") 3279 ;Default is BUSY 3281 fbstatus = "STATUS" "=" 3282 "BUSY" ;Represents busy time interval 3283 / "OUT" ;Represents out-of-office, non-working 3284 ;hours, or other unavailable interval 3285 / "PRIVATE" ;Represents private unavailable time 3286 / "CONFIDENTIAL" ;Represents confidential unavailable 3287 ;time 3288 ;Default is BUSY 3290 fbvalue = period ["," period] 3291 ;Value must match default or explicit data type 3293 last-mod = "LAST-MODIFIED" ":" date-time ["," date-time] CRLF 3295 location = "LOCATION [";" paramlist] ":" locavalue CRLF 3296 locavalue = text / url ;The value must be the same type as the 3297 ;default or explicit data type. 3299 priority = "PRIORITY" ":" integer CRLF 3300 ;Default is zero 3302 related-to = "RELATED-TO" [";" paramlist] ":" relvalue CRLF 3303 relvalue = text / url ;Value must be the same type as 3304 ;default or explicit data type 3306 rdate = "RDATE" ":" rdvalue *["," rdvalue] CRLF 3307 rdvalue = date-time / period 3308 ;Value must match default or explicit data type 3310 ; 3311 ;Definition of recurrence rule 3312 ;rrule = "RRULE" [rparamlist] ":" rvalue CRLF 3314 rparamlist = rparam / rparamlist ";" rparam / paramlist 3315 / paramlist ";" rparam 3316 / paramlist ";" rparamlist ";" rparam 3318 rparam = "UNTIL" "=" enddate 3319 / "COUNT" "=" interval 3320 / "INTERVAL" "=" rinterval 3321 / "BYDAY" "=" bdweekdaylist 3322 / "BYMONTHDAY" "=" bmdaylist 3323 / "BYYEARDAY" "=" bydaylist 3324 / "BYSETPOS" "=" bsplist 3325 / "BYWEEKNO" "=" bwdaylist 3326 / "BYMONTH" "=" bmlist 3327 / "WKST" "=" weekday 3328 / "X-" word "=" word 3330 rvalue = "HOURLY" / "DAILY" / "WEEKLY" / "YEARLY" 3332 rinterval = interval ; For any rvalue 3333 / duration ; Only for rvalue = HOURLY 3335 digits = 1*digit 3337 interval = digits 3339 enddate = date ;A UTC value 3341 plus = "+" 3343 minus = "-" 3345 ordmoday = 1*2digits ;1 to 31 3347 ordwk = 1*2digits ;1 to 52 3349 ordyrday = 1*3digits ;1 to 366 3351 daynumber = (plus / minus) ordmoday 3353 weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" > 3355 bdweekdaynum = [daynumber] weekday 3357 bdweekdaylist = bdweekdaynum / bdweekdaynum "," *(bdweekdaynum) 3359 bmposday = [plus] ordmoday 3361 bmnegday = minus ordmoday 3363 bmdaylist = bmposday *("," bmposday / bmnegday) 3364 / bmnegday *("," bmnegday / bmposday) 3366 byposday = [plus] ordyrday 3368 bynegday = minus ordyrday 3370 bydaylist = byposday *("," byposday / bynegday) 3371 / bynegday *("," bynegday / byposday) 3373 bsplist = byposday *("," byposday / bynegday) 3374 / bynegday *("," bynegday / byposday) 3376 bwposday = [plus] ordwk 3377 bwnegday = minus ordwk 3379 bwdaylist = bwposday *("," bwposday / bwnegday) 3380 / bwnegday *("," bwnegday / bwposday) 3382 bmposmon = 1*2digits ;1 to 12 3384 bmlist = bmposmon *("," bmposmon) 3386 resource = "RESOURCES" [";" paramlist] ":" resvalist CRLF 3387 resvalist = resvalue / resvalue "," resvalist 3388 resvalue = "CATERING" / "CHAIRS" / "COMPUTER PROJECTOR" 3389 / "EASEL" / "OVERHEAD PROJECTOR" / "SPEAKER PHONE" 3390 / "TABLE" / "TV" / "VCR" / "VIDEO PHONE" / "VEHICLE" 3391 / word 3393 respseq = "RESPONSE-SEQUENCE" ":" integer CRLF 3394 ;Default is "0". 3396 sequence = "SEQUENCE" ":" integer CRLF 3397 ;Default is "0". 3399 status = "STATUS" [";" paramlist] ":" statvalue CRLF 3401 statvalue = "NEEDS ACTION" ;Indicates to-do needs action. 3402 / "COMPLETED" ;Indicates to-do completed 3403 / "TENTATIVE" ;Indicates event is being 3404 ;tentatively scheduled 3405 / "CONFIRMED" ;Indicates event is definite 3406 / "CANCELLED" ;Indicates event was canceled 3408 summary = "SUMMARY" [";" paramlist] ":" text CRLF 3410 transp = "TRANSP" [";" paramlist] ":" transvalue CRLF 3411 transvalue = "BUSY" ;Opaque/blocks on free/busy searches 3412 ;Default value is BUSY 3413 / "OUT" ;Opaque/blocks on free/busy searches 3414 / "PRIVATE" ;Opaque/blocks on free/busy searches 3415 / "CONFIDENTIAL" ;Opaque/blocks on free/busy searches 3416 / "TRANSPARENT" ;Transparent on free/time searches 3418 tzname = "TZNAME" [";" paramlist] ":" text CRLF 3420 tzoffset = "TZOFFSET" ":" utc-offset CRLF 3422 tztrans = "TZTRANS" ":" time CRLF 3424 url = "URL" ":" url CRLF 3426 uid = "UID" [";" paramlist] ":" text CRLF 3428 extension = "X-" [vendorid] word [";" paramlist] ":" value 3429 vendorid = 1*char "-" ;Vendor identification prefix text 3430 ;End of grammar 3432 6. Registration of Content Type Profiles 3434 This section defines procedures by which usage profiles for the MIME 3435 Calendaring and Scheduling Content Type are registered with the IANA 3436 and made available to the Internet community. Note that non-IANA 3437 profiles may be used by bilateral agreement, provided the associated 3438 profile names follow the "X-" convention defined above in section 3439 3.1.6.33. 3441 The procedures defined here are designed to allow public comment and 3442 review of new profiles, while posing only a small impediment to the 3443 definition of new profiles. 3445 Registration of a new profile is accomplished by the following steps. 3447 6.1 Define the profile 3449 A profile is defined by completing the following template. 3451 To: ietf-calendar@imc.org 3453 Subject: Registration of text/calendar MIME profile XXX 3455 Profile name: 3457 Profile purpose: 3459 Profile type-subtype: 3461 Profile special notes (optional): 3463 Intended usage: (one of COMMON, LIMITED USE or OBSOLETE) 3465 The explanation of what goes in each field in the template follows. 3467 Profile name: The name of the profile as it will be generally 3468 referred to in public. This name is required in the profile. 3470 Profile purpose: The purpose of the profile (e.g., to schedule 3471 document management updates, etc.). Give a short but clear 3472 description. This description is required in the profile. 3474 Profile type-subtype: The type-subtypes of the profile as they will 3475 appear in the text/calendar MIME Content-Type Profile parameter. This 3476 list of type-subtype values is required in the profile. 3478 Profile properties: The list of MIME Calendaring and Scheduling 3479 Content Type properties associated with the profile. This list of 3480 properties that are included in the profile. If a property is 3481 required by the profile, it should noted in this section. Other types 3482 not mentioned in the profile definition may also be present. Note 3483 that any new properties referenced by the profile must be defined 3484 separately as described in section . 3486 Profile special notes: Any special notes about the profile, how it is 3487 to be used, etc. This section is not required in the profile. 3489 6.2 Post the profile definition 3491 The profile description must be posted to the IETF Calendaring and 3492 Scheduling Working Group discussion list, ietf-calendar@imc.org. 3494 6.3 Allow a comment period 3496 Discussion on the new profile must be allowed to take place on the 3497 list for a minimum of two weeks. Consensus must be reached on the 3498 profile before submitting the profile for approval. 3500 6.4 Submit the profile for approval 3502 Once the two-week comment period has elapsed, and the proposer is 3503 convinced consensus has been reached on the profile, the registration 3504 application should be submitted to the Profile Reviewer for approval. 3506 The Profile Reviewer is appointed to the Application Area Directors 3507 and may either accept or reject the profile registration. An accepted 3508 registration should be passed on by the Profile Reviewer to the IANA 3509 for inclusion in the official IANA profile registry. The registration 3510 may be rejected for any of the following reasons. 1) Insufficient 3511 comment period; 2) Consensus not reached; 3) Technical deficiencies 3512 raised on the list or elsewhere have not been addressed. The Profile 3513 Reviewer's decision to reject a profile may be appealed by the 3514 proposer to the IESG, or the objections raised can be addressed by 3515 the proposer and the profile resubmitted. 3517 6.5 Profile Change Control 3519 Existing profiles may be changed using the same process by which they 3520 were registered. 3522 1. Define the change 3524 2. Post the change 3526 3. Allow a comment period 3528 4. Submit the profile for approval 3530 Note that the original author or any other interested party may 3531 propose a change to an existing profile, but that such changes should 3532 only be proposed when there are serious omissions or errors in the 3533 published specification. The Profile Reviewer may object to a change 3534 if it is not backwards compatible, but is not required to do so. 3536 Profile definitions can never be deleted from the IANA registry, but 3537 profiles which are no longer believed to be useful can be declared 3538 OBSOLETE by a change to their "intended use" field. 3540 6.6 Registration of New Properties 3542 This section defines procedures by which new properties for the MIME 3543 Calendaring and Scheduling Content Type are registered with the IANA. 3544 Note that non-IANA properties may be used by bilateral agreement, 3545 provided the associated properties names follow the "X-" convention 3546 defined above in section 3.1.6.33. 3548 The procedures defined here are designed to allow public comment and 3549 review of new properties, while posing only a small impediment to the 3550 definition of new properties. 3552 Registration of a new property is accomplished by the following 3553 steps. 3555 6.6.1 Define the property 3557 A property is defined by completing the following template. 3559 To: ietf-calendar@imc.org 3561 Subject: Registration of text/calendar MIME property XXX 3563 Property name: 3565 Property purpose: 3567 Property data type(s): 3569 Property encoding: 3571 Property special notes (optional): 3573 Intended usage: (one of COMMON, LIMITED USE or OBSOLETE) 3575 The meaning of each field in the template is as follows. 3577 Property name: The name of the property, as it will appear in the 3578 body of an text/calendar MIME Content-Type "property: value" line to 3579 the left of the colon ":". 3581 Property purpose: The purpose of the property (e.g., to indicate a 3582 delegate for the event or to-do, etc.). Give a short but clear 3583 description. 3585 Property data type(s): Any of the valid data types for the property 3586 value needs to be specified. The default data type also needs to be 3587 specified. If a new data type is specified, it needs to be declared 3588 in this section. 3590 Property encoding: The encodings permitted for the property value. 3591 This description must be precise and must not violate the general 3592 encoding rules defined in this document. 3594 Property special notes: Any special notes about the property, how it 3595 is to be used, etc. 3597 6.6.2 Post the Property definition 3599 The property description must be posted to the new property 3600 discussion list, ietf-calendar@imc.org. 3602 6.6.3 Allow a comment period 3604 Discussion on the new property must be allowed to take place on the 3605 list for a minimum of two weeks. Consensus must be reached on the 3606 property before proceeding to the next step. 3608 6.6.4 Submit the property for approval 3610 Once the two-week comment period has elapsed, and the proposer is 3611 convinced consensus has been reached on the property, the 3612 registration application should be submitted to the Profile Reviewer 3613 for approval. The Profile Reviewer is appointed to the Application 3614 Area Directors and may either accept or reject the property 3615 registration. An accepted registration should be passed on by the 3616 Profile Reviewer to the IANA for inclusion in the official IANA 3617 profile registry. The registration may be rejected for any of the 3618 following reasons. 1) Insufficient comment period; 2) Consensus not 3619 reached; 3) Technical deficiencies raised on the list or elsewhere 3620 have not been addressed. The Profile Reviewer's decision to 3622 reject a property may be appealed by the proposer to the IESG, or the 3623 objections raised can be addressed by the proposer and the property 3624 resubmitted. 3626 6.7 Property Change Control 3628 Existing properties may be changed using the same process by which 3629 they were registered. 3631 1. Define the change 3633 2. Post the change 3635 3. Allow a comment period 3637 4. Submit the property for approval 3639 Note that the original author or any other interested party may 3640 propose a change to an existing property, but that such changes 3641 should only be proposed when there are serious omissions or errors in 3642 the published specification. The Profile Reviewer may object to a 3643 change if it is not backwards compatible, but is not required to do 3644 so. 3646 Property definitions can never be deleted from the IANA registry, but 3647 properties which are no longer believed to be useful can be declared 3648 OBSOLETE by a change to their "intended use" field. 3650 7. File extension 3652 The file extension of "vcs" is to be used to designate a file 3653 containing calendaring and scheduling information consistent with 3654 this MIME content type. 3656 8. Macintosh File Type Code 3658 The file type code of "vcal" is to be used in Apple MacIntosh 3659 operating system environments to designate a file containing 3660 calendaring and scheduling information consistent with this MIME 3661 media type. 3663 9. References 3665 The following document are referred to within this document. 3667 [ISO 8601] ISO 8601, "Data elements and interchange formats_ 3668 Information interchange_Representation of dates and times", 3669 International Organization for Standardization, June, 1988. This 3670 standard is also addressed by the Internet Draft document 3671 ftp://ds.internic.net/internet-drafts/draft-newman-datetime-00.txt. 3673 [ISO 9070] ISO/IEC 9070, "Information Technology_SGML Support 3674 Facilities_Registration Procedures for Public Text Owner 3675 Identifiers", Second Edition, International Organization for 3676 Standardization, April, 1991. 3678 [MIME DIR] Howes, T., Smith, M., "A MIME Content-Type for Directory 3679 Information", Internet-draft-ietf-asid-mime-direct-05.txt, March, 3680 1997. 3682 [RFC 822] Crocker, D., "Standard for the Format of ARPA Internet Text 3683 Messages", STD 11, RFC 822, August 1982. 3685 [RFC 1738] Berners-Lee, T., Masinter, L., McCahill, M., "Uniform 3686 Resource Locators (URL)", RFC 1738, December 1994. 3688 [RFC 1766] Alvestrand, H., "Tags for the Identification of 3689 Languages", March 1995. 3691 [RFC 1872] Levinson, E., "The MIME Multipart/Related Content-type," 3692 RFC 1872, December 1995. 3694 [RFC 2045] Freed, N., Borenstein, N., " Multipurpose Internet Mail 3695 Extensions (MIME) - Part One: Format of Internet Message Bodies", RFC 3696 2045, November 1996. 3698 [RFC 2046] Freed, N., Borenstein, N., " Multipurpose Internet Mail 3699 Extensions (MIME) - Part Two: Media Types", RFC 2046, November 1996. 3701 [RFC 2047] Moore, K., "Multipurpose Internet Mail Extensions (MIME) - 3702 Part Three: Message Header Extensions for Non-ASCII Text", RFC 2047, 3703 November 1996. 3705 [RFC 2048] Freed, N., J. Klensin, J. Postel, "Multipurpose Internet 3706 Mail Extensions (MIME) - Part Four: Registration Procedures", RFC 3707 2048, January 1997. 3709 [US-ASCII] "Coded Character Set--7-bit American Standard Code for 3710 Information Interchange", ANSI X3.4-1986. 3712 [VCARD] Internet Mail Consortium, "vCard - The Electronic Business 3713 Card Version 2.1", http://www.versit.com/pdi/vcard-21.txt, September 3714 18, 1996. 3716 [VCAL] Internet Mail Consortium, "vCalendar - The Electronic 3717 Calendaring and Scheduling Exchange Format", 3718 http://www.imc.org/pdi/vcal-10.txt, September 18, 1996. 3720 [XAPIA] "XAPIA CSA, Calendaring and Scheduling Application 3721 Programming Interface (CSA) Version 1.0", X.400 API Association, 3722 November 15, 1994. 3724 10. Acknowledgments 3726 A hearty thanks to the IETF Calendaring and Scheduling Working Group 3727 and also the following individuals who have participated in the 3728 drafting, review and discussion of this memo: 3730 Roland Alden, Harald T. Alvestrand, Denis Bigorgne, John Binici, Bill 3731 Bliss, Andre Courtemanche, Dave Crocker, Alec Dun, Ross Finlayson, 3732 Randell Flink, Ned Freed, Patrik Falstrom, Chuck Grandgent, Mark 3733 Handley, Steve Hanna, Paul B. Hill, Mark Horton, Bruce Kahn, C. 3734 Harald Koch, Theodore Lorek, Keith Moore, Cecil Murray, Chris Newman, 3735 Ralph Patterson, Pete Resnick, Keith Rhodes, Robert Ripberger, Andras 3736 Salamar, Vinod Seraphin, Ken Shan, Andrew Shuman, William P. Spencer, 3737 Mark Towfiq, Robert Visnov, James L. Weiner, Mike Weston, William 3738 Wyatt, Steve Silverberg. 3740 11. Author's Address 3742 The following address information is provided in a MIME-VCARD, 3743 Electronic Business Card, format. 3745 The authors of this draft are: 3747 BEGIN:VCARD 3748 FN:Frank Dawson 3749 ORG:Lotus Development Corporation 3750 ADR;WORK;POSTAL;PARCEL:;;6544 Battleford Drive; 3751 Raleigh;NC;27613-3502;USA 3752 TEL;WORK;MSG:+1-919-676-9515 3753 TEL;WORK;FAX:+1-919-676-9564 3754 EMAIL;INTERNET:fdawson@earthlink.net 3755 URL:http://home.earthlink.net/~fdawson 3756 END:VCARD 3758 BEGIN:VCARD 3759 FN:Derik Stenerson 3760 ORG:Microsoft Corporation 3761 ADR;WORK;POSTAL;PARCEL:;;One Microsoft Way; 3762 Redmond;WA;98052-6399;USA 3763 TEL;WORK;MSG:+1-206-936-5522 3764 TEL;WORK;FAX:+1-206-936-7329 3765 EMAIL;INTERNET:deriks@Exchange.Microsoft.com 3766 END:VCARD 3768 The iCalendar Object is a result of the work of the Internet 3769 Engineering Task Force Calendaring and Scheduling Working Group. The 3770 chairman of that working group is: 3772 BEGIN:VCARD 3773 FN:Anik Ganguly 3774 ORG:OnTime, Inc. 3775 ADR;WORK;POSTAL;PARCEL:10 Floor;;21700 Northwestern Highway; 3776 Southfield;MI;48075;USA 3777 TEL;WORK;MSG:+1-810-559-5955 3778 TEL;WORK;FAX:+1-810-559-5034 3779 EMAIL;INTERNET:anik@ontime.com 3780 END:VCARD 3782 12. iCalendar Object Examples 3784 The following examples are provided as an informational source of 3785 illustrative iCalendar Objects consistent with this content type. 3787 The following is an example of a MIME message with a single body part 3788 consisting of a text/calendar content type. The message specifies a 3789 meeting request between the originator and recipient of the message. 3791 TO:jsmith@host1.com 3792 FROM:jdoe@host1.com 3793 MIME-VERSION:2.0 3794 MESSAGE-ID:<19960704 08:30:00 EDT xyz@host1.com> 3795 CONTENT-TYPE:text/calendar;PROFILE=request,event 3797 BEGIN:VCALENDAR 3798 PROFILE:event-request 3799 VERSION:2.0 3800 BEGIN:VEVENT 3801 DTSTART:19960918T143000Z 3802 DTEND:19960920T220000Z 3803 CATEGORIES:CONFERENCE;PROJECT 3804 SUMMARY:Networld+Interop Conference 3805 DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Networld+Interop Conference= 3806 and Exhibit=0D=0A= 3807 Atlanta World Congress Center=0D=0A= 3808 Atlanta, Georgia 3809 END:VEVENT 3810 END:VCALENDAR 3812 The following example message issues a meeting request that does not 3813 require any reply. The message is sent as a singular "text/calendar" 3814 content type, body part. 3816 From: jsmith@host1.com 3817 To: ietf-calendar@imc.org 3818 Subject: First IETF-Calendar Working Group Meeting 3819 MIME-Version: 2.0 3820 Message-ID: 3821 Content-Type: text/calendar;Profile=event,request 3823 BEGIN:VCALENDAR 3824 PROFILE:event-request 3825 PRODID:-//RDU Software//NONSGML HandCal//EN 3826 VERSION:2.0 3827 BEGIN:VEVENT 3828 ATTENDEE;EXPECT=REQUEST:ietf-calendar@imc.org 3829 DESCRIPTION:First IETF-Calendaring and Scheduling Working Group 3830 Meeting 3831 CATEGORIES:MEETING 3832 CLASS:PUBLIC 3833 CREATED:19961022T083000 3834 SUMMARY:IETF Calendaring Working Group Meeting 3835 DTSTART:19961210T210000Z 3836 DTEND:19961210T220000Z 3837 LOCATION:San Jose, CA - Fairmont Hotel 3838 UID:guid-1.host1.com 3839 END:VEVENT 3840 END:VCALENDAR 3842 The following is an example of a MIME message with a single body part 3843 consisting of a text/calendar content type. The message specifies a 3844 meeting request between the originator and recipient of the message. 3846 TO:jsmith@host1.com 3847 FROM:jdoe@host1.com 3848 MIME-VERSION:1.0 3849 MESSAGE-ID:<19970322 08:30:00 EDT xyz@host1.com> 3850 CONTENT-TYPE:text/calendar;PROFILE=event-request 3852 BEGIN:VCALENDAR 3853 PROFILE:event-request 3854 VERSION:2.0 3855 PRODID:-//ABC Corporation//NONSGML My Product//EN 3856 BEGIN:VEVENT 3857 SEQUENCE:0 3858 UID:19970324-080045-4000F192713-0052 3859 ATTENDEE;EXPECT=REQUEST:jsmith@host1.com 3860 DTSTART:19970324T123000Z 3861 DTEND:19970324T210000Z 3862 CATEGORIES:CONFERENCE;PROJECT 3863 CLASS:PUBLIC 3864 SUMMARY:Calendaring Interop Conference 3865 DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Calendaring Interop= 3866 Conference and Exhibit=0D=0A= 3867 Atlanta, Georgia 3868 LOCATION:Atlanta World Congress Center 3869 ATTACH;VALUE=URL:file://xyzCorp.com/conf/bkgrnd.ps 3870 END:VEVENT 3871 END:VCALENDAR 3873 Example of a reply to the above request, accepting the meeting. 3875 TO:jdoe@host1.com 3876 FROM:jsmith@host1.com 3877 MIME-VERSION:1.0 3878 MESSAGE-ID:<19970322 08:30:00 EDT xyz@host1.com> 3879 CONTENT-TYPE:text/calendar;PROFILE=event-reply 3881 BEGIN:VCALENDAR 3882 PROFILE:event-reply 3883 VERSION:2.0 3884 PRODID:-//ABC Corporation//NONSGML My Product//EN 3885 BEGIN:VEVENT 3886 SEQUENCE:0 3887 RESPONSE-SEQUENCE:0 3888 UID:19970324-080045-4000F192713-0052 3889 ATTENDEE;STATUS=CONFIRMED;EXPECT=REQUEST:jsmith@host1.com 3890 END:VEVENT 3891 END:VCALENDAR 3893 An example of a meeting cancelation: 3895 TO:jsmith@host1.com 3896 FROM:jdoe@host1.com 3897 MIME-VERSION:1.0 3898 MESSAGE-ID:<19970322 08:30:00 EDT xyz@host1.com> 3899 CONTENT-TYPE:text/calendar;PROFILE=event-cancel 3901 BEGIN:VCALENDAR 3902 PROFILE:event-cancel 3903 VERSION:2.0 3904 PRODID:-//ABC Corporation//NONSGML My Product//EN 3905 BEGIN:VEVENT 3906 UID:19970324-080045-4000F192713-0052 3907 END:VEVENT 3908 END:VCALENDAR