idnits 2.17.1 draft-ietf-calsify-rfc2445bis-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 17. -- Found old boilerplate from RFC 3978, Section 5.5 on line 6974. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 6951. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 6958. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 6964. ** This document has an original RFC 3978 Section 5.4 Copyright Line, instead of the newer IETF Trust Copyright according to RFC 4748. ** This document has an original RFC 3978 Section 5.5 Disclaimer, instead of the newer disclaimer which includes the IETF Trust according to RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard 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.) == There are 1 instance of lines with non-RFC2606-compliant FQDNs in the document. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 2080 has weird spacing: '...ld this meeti...' == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: This property SHOULD not be used to alter the interpretation of an iCalendar object beyond the semantics specified in this memo. For example, it is not to be used to further the understanding of non-standard properties. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: property in either a "VEVENT", "VTODO" or "VJOURNAL" calendar component. They MUST not be specified in an "ATTENDEE" property in a "VFREEBUSY" or "VALARM" calendar component. If the LANGUAGE property parameter is specified, the identified language applies to the CN parameter. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 11, 2005) is 6769 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) -- Looks like a reference, but probably isn't: 'ICAL' on line 214 -- Looks like a reference, but probably isn't: 'ITIP' on line 6830 -- Looks like a reference, but probably isn't: 'IMIP' on line 6830 -- Looks like a reference, but probably isn't: 'RFC 2045' on line 5809 -- Looks like a reference, but probably isn't: 'TZ' on line 6119 -- Looks like a reference, but probably isn't: 'ISO 9070' on line 1833 -- Looks like a reference, but probably isn't: 'RFC 2426' on line 3368 -- Looks like a reference, but probably isn't: 'MIME-DIR' on line 3361 -- Looks like a reference, but probably isn't: 'RFC 1738' on line 5854 -- Looks like a reference, but probably isn't: 'RFC 822' on line 3847 -- Looks like a reference, but probably isn't: 'RFC 1766' on line 5061 -- Looks like a reference, but probably isn't: 'ISO 8601' on line 6541 == Unused Reference: '1' is defined on line 6865, but no explicit reference was found in the text == Unused Reference: '2' is defined on line 6868, but no explicit reference was found in the text == Unused Reference: '3' is defined on line 6871, but no explicit reference was found in the text == Unused Reference: '6' is defined on line 6882, but no explicit reference was found in the text == Unused Reference: '10' is defined on line 6895, but no explicit reference was found in the text == Unused Reference: '11' is defined on line 6898, but no explicit reference was found in the text == Unused Reference: '12' is defined on line 6902, but no explicit reference was found in the text == Unused Reference: '13' is defined on line 6907, but no explicit reference was found in the text == Unused Reference: '14' is defined on line 6912, but no explicit reference was found in the text == Unused Reference: '15' is defined on line 6918, but no explicit reference was found in the text ** Obsolete normative reference: RFC 822 (ref. '1') (Obsoleted by RFC 2822) ** Obsolete normative reference: RFC 1738 (ref. '2') (Obsoleted by RFC 4248, RFC 4266) ** Obsolete normative reference: RFC 1766 (ref. '3') (Obsoleted by RFC 3066, RFC 3282) ** Obsolete normative reference: RFC 2048 (ref. '6') (Obsoleted by RFC 4288, RFC 4289) ** Obsolete normative reference: RFC 2234 (ref. '8') (Obsoleted by RFC 4234) ** Obsolete normative reference: RFC 2279 (ref. '9') (Obsoleted by RFC 3629) ** Obsolete normative reference: RFC 2426 (ref. '10') (Obsoleted by RFC 6350) ** Obsolete normative reference: RFC 2445 (ref. '11') (Obsoleted by RFC 5545) ** Obsolete normative reference: RFC 2446 (ref. '12') (Obsoleted by RFC 5546) -- Possible downref: Non-RFC (?) normative reference: ref. '13' == Outdated reference: A later version (-01) exists of draft-ietf-calsch-icalfpi-00 -- Possible downref: Normative reference to a draft: ref. '14' -- Possible downref: Non-RFC (?) normative reference: ref. '15' Summary: 13 errors (**), 0 flaws (~~), 18 warnings (==), 22 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group B. Desruisseaux, Ed. 3 Internet-Draft Oracle 4 Expires: April 14, 2006 C. Stoner, Ed. 5 IBM 6 October 11, 2005 8 Internet Calendaring and Scheduling Core Object Specification 9 (iCalendar) 10 draft-ietf-calsify-rfc2445bis-00 12 Status of this Memo 14 By submitting this Internet-Draft, each author represents that any 15 applicable patent or other IPR claims of which he or she is aware 16 have been or will be disclosed, and any of which he or she becomes 17 aware will be disclosed, in accordance with Section 6 of BCP 79. 19 Internet-Drafts are working documents of the Internet Engineering 20 Task Force (IETF), its areas, and its working groups. Note that 21 other groups may also distribute working documents as Internet- 22 Drafts. 24 Internet-Drafts are draft documents valid for a maximum of six months 25 and may be updated, replaced, or obsoleted by other documents at any 26 time. It is inappropriate to use Internet-Drafts as reference 27 material or to cite them other than as "work in progress." 29 The list of current Internet-Drafts can be accessed at 30 http://www.ietf.org/ietf/1id-abstracts.txt. 32 The list of Internet-Draft Shadow Directories can be accessed at 33 http://www.ietf.org/shadow.html. 35 This Internet-Draft will expire on April 14, 2006. 37 Copyright Notice 39 Copyright (C) The Internet Society (2005). 41 Abstract 43 Calendar systems export, transport and sometimes even store calendar 44 information in a standard, interoperable format. This memo defines 45 the common format for openly exchanging calendaring and scheduling 46 information across the Internet, known as the iCalendar object 47 format. An iCalendar object may represent an event, to-do or task, 48 or journal entry (note). 50 Comments are solicited and should be addressed to the working group's 51 mailing list at ietf-calsify@osafoundation.org and/or the editor. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 56 1.1. Related Memos . . . . . . . . . . . . . . . . . . . . . 5 57 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 7 58 3. Document Conventions . . . . . . . . . . . . . . . . . . . . 8 59 3.1. Formatting Conventions . . . . . . . . . . . . . . . . . 8 60 4. International Considerations . . . . . . . . . . . . . . . . 10 61 5. General Syntax . . . . . . . . . . . . . . . . . . . . . . . 11 62 5.1. Character Set . . . . . . . . . . . . . . . . . . . . . 11 63 5.2. Case Sensitivity . . . . . . . . . . . . . . . . . . . . 11 64 5.3. Content Lines . . . . . . . . . . . . . . . . . . . . . 11 65 5.4. List and Field Separators . . . . . . . . . . . . . . . 14 66 5.5. Multiple Property Values . . . . . . . . . . . . . . . . 14 67 5.6. Binary Content . . . . . . . . . . . . . . . . . . . . . 15 68 5.7. Property Parameter Syntax . . . . . . . . . . . . . . . 15 69 6. iCalendar Objects . . . . . . . . . . . . . . . . . . . . . . 17 70 7. Calendar Components . . . . . . . . . . . . . . . . . . . . . 18 71 7.1. Event Component . . . . . . . . . . . . . . . . . . . . 19 72 7.2. To-do Component . . . . . . . . . . . . . . . . . . . . 22 73 7.3. Journal Component . . . . . . . . . . . . . . . . . . . 24 74 7.4. Free/Busy Component . . . . . . . . . . . . . . . . . . 26 75 7.5. Time Zone Component . . . . . . . . . . . . . . . . . . 29 76 7.6. Alarm Component . . . . . . . . . . . . . . . . . . . . 38 77 8. Properties . . . . . . . . . . . . . . . . . . . . . . . . . 45 78 8.1. Calendar Properties . . . . . . . . . . . . . . . . . . 45 79 8.1.1. Calendar Scale . . . . . . . . . . . . . . . . . . . 45 80 8.1.2. Method . . . . . . . . . . . . . . . . . . . . . . . 46 81 8.1.3. Product Identifier . . . . . . . . . . . . . . . . . 47 82 8.1.4. Version . . . . . . . . . . . . . . . . . . . . . . . 48 83 8.2. Descriptive Component Properties . . . . . . . . . . . . 49 84 8.2.1. Attachment . . . . . . . . . . . . . . . . . . . . . 49 85 8.2.2. Categories . . . . . . . . . . . . . . . . . . . . . 50 86 8.2.3. Classification . . . . . . . . . . . . . . . . . . . 51 87 8.2.4. Comment . . . . . . . . . . . . . . . . . . . . . . . 52 88 8.2.5. Description . . . . . . . . . . . . . . . . . . . . . 53 89 8.2.6. Geographic Position . . . . . . . . . . . . . . . . . 54 90 8.2.7. Location . . . . . . . . . . . . . . . . . . . . . . 56 91 8.2.8. Percent Complete . . . . . . . . . . . . . . . . . . 57 92 8.2.9. Priority . . . . . . . . . . . . . . . . . . . . . . 58 93 8.2.10. Resources . . . . . . . . . . . . . . . . . . . . . . 59 94 8.2.11. Free/Busy Time Type . . . . . . . . . . . . . . . . . 60 95 8.2.12. Participation Status . . . . . . . . . . . . . . . . 61 96 8.2.13. Status . . . . . . . . . . . . . . . . . . . . . . . 63 97 8.2.14. Summary . . . . . . . . . . . . . . . . . . . . . . . 64 98 8.2.15. Date and Time Component Properties . . . . . . . . . 65 99 8.2.16. Time Zone Component Properties . . . . . . . . . . . 73 100 8.2.17. Relationship Component Properties . . . . . . . . . . 77 101 8.2.18. Calendar User Type . . . . . . . . . . . . . . . . . 86 102 8.2.19. Directory Entry Reference . . . . . . . . . . . . . . 87 103 8.2.20. Recurrence ID . . . . . . . . . . . . . . . . . . . . 87 104 8.2.21. Related To . . . . . . . . . . . . . . . . . . . . . 89 105 8.2.22. Uniform Resource Locator . . . . . . . . . . . . . . 91 106 8.2.23. Unique Identifier . . . . . . . . . . . . . . . . . . 91 107 8.2.24. Relationship Type . . . . . . . . . . . . . . . . . . 93 108 8.3. Recurrence Component Properties . . . . . . . . . . . . 94 109 8.3.1. Exception Date/Times . . . . . . . . . . . . . . . . 94 110 8.3.2. Exception Rule . . . . . . . . . . . . . . . . . . . 95 111 8.3.3. Recurrence Date/Times . . . . . . . . . . . . . . . . 97 112 8.3.4. Recurrence Identifier Range . . . . . . . . . . . . . 98 113 8.3.5. Recurrence Rule . . . . . . . . . . . . . . . . . . . 99 114 8.4. Alarm Component Properties . . . . . . . . . . . . . . . 110 115 8.4.1. Action . . . . . . . . . . . . . . . . . . . . . . . 110 116 8.4.2. Alarm Repeat Count . . . . . . . . . . . . . . . . . 111 117 8.4.3. Alarm Trigger . . . . . . . . . . . . . . . . . . . . 111 118 8.5. Alarm Trigger Relationship . . . . . . . . . . . . . . . 114 119 8.6. Change Management Component Properties . . . . . . . . . 114 120 8.6.1. Date/Time Created . . . . . . . . . . . . . . . . . . 114 121 8.6.2. Date/Time Stamp . . . . . . . . . . . . . . . . . . . 115 122 8.6.3. Last Modified . . . . . . . . . . . . . . . . . . . . 116 123 8.6.4. Sequence Number . . . . . . . . . . . . . . . . . . . 117 124 8.7. Miscellaneous Component Properties . . . . . . . . . . . 118 125 8.7.1. RSVP Expectation . . . . . . . . . . . . . . . . . . 118 126 8.7.2. Language . . . . . . . . . . . . . . . . . . . . . . 119 127 8.7.3. Group or List Membership . . . . . . . . . . . . . . 120 128 8.7.4. Alternate Text Representation . . . . . . . . . . . . 121 129 8.7.5. Inline Encoding . . . . . . . . . . . . . . . . . . . 121 130 8.7.6. Format Type . . . . . . . . . . . . . . . . . . . . . 122 131 8.7.7. Non-standard Properties . . . . . . . . . . . . . . . 123 132 8.7.8. Request Status . . . . . . . . . . . . . . . . . . . 124 133 9. iCalendar Object Examples . . . . . . . . . . . . . . . . . . 127 134 10. Recommended Practices . . . . . . . . . . . . . . . . . . . . 132 135 11. Registration of Content Type Elements . . . . . . . . . . . . 134 136 11.1. Registration of New and Modified iCalendar Object 137 Methods . . . . . . . . . . . . . . . . . . . . . . . . 134 138 11.2. Registration of New Properties . . . . . . . . . . . . . 134 139 11.3. Define the property . . . . . . . . . . . . . . . . . . 134 140 11.4. Post the Property definition . . . . . . . . . . . . . . 136 141 11.5. Allow a comment period . . . . . . . . . . . . . . . . . 136 142 11.6. Submit the property for approval . . . . . . . . . . . . 136 143 11.7. Property Change Control . . . . . . . . . . . . . . . . 136 144 12. Property Parameters . . . . . . . . . . . . . . . . . . . . . 138 145 13. Value Data Types . . . . . . . . . . . . . . . . . . . . . . 139 146 13.1. Binary . . . . . . . . . . . . . . . . . . . . . . . . . 139 147 13.2. Boolean . . . . . . . . . . . . . . . . . . . . . . . . 140 148 13.3. Calendar User Address . . . . . . . . . . . . . . . . . 140 149 13.4. Date . . . . . . . . . . . . . . . . . . . . . . . . . . 141 150 13.5. Date-Time . . . . . . . . . . . . . . . . . . . . . . . 141 151 13.6. Duration . . . . . . . . . . . . . . . . . . . . . . . . 143 152 13.7. Period of Time . . . . . . . . . . . . . . . . . . . . . 144 153 13.8. Time Zone Identifier . . . . . . . . . . . . . . . . . . 145 154 13.9. Recurrence Rule . . . . . . . . . . . . . . . . . . . . 146 155 13.10. Float . . . . . . . . . . . . . . . . . . . . . . . . . 152 156 13.11. Integer . . . . . . . . . . . . . . . . . . . . . . . . 152 157 13.12. Text . . . . . . . . . . . . . . . . . . . . . . . . . . 153 158 13.13. Time . . . . . . . . . . . . . . . . . . . . . . . . . . 154 159 13.14. URI . . . . . . . . . . . . . . . . . . . . . . . . . . 156 160 13.15. UTC Offset . . . . . . . . . . . . . . . . . . . . . . . 157 161 14. Security Considerations . . . . . . . . . . . . . . . . . . . 159 162 15. IANA MIME Media Type Registration . . . . . . . . . . . . . . 160 163 16. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 163 164 17. Normative References . . . . . . . . . . . . . . . . . . . . 163 165 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 165 166 Intellectual Property and Copyright Statements . . . . . . . . . 166 168 1. Introduction 170 The use of calendaring and scheduling has grown considerably in the 171 last decade. Enterprise and inter-enterprise business has become 172 dependent on rapid scheduling of events and actions using this 173 information technology. However, the longer term growth of 174 calendaring and scheduling, is currently limited by the lack of 175 Internet standards for the message content types that are central to 176 these knowledgeware applications. This memo is intended to progress 177 the level of interoperability possible between dissimilar calendaring 178 and scheduling applications. This memo defines a MIME [5] content 179 type for exchanging electronic calendaring and scheduling 180 information. The Internet Calendaring and Scheduling Core Object 181 Specification, or iCalendar, allows for the capture and exchange of 182 information normally stored within a calendaring and scheduling 183 application; such as a Personal Information Manager or a Group 184 Scheduling product. 186 The iCalendar format is suitable as an exchange format between 187 applications or systems. The format is defined in terms of a MIME 188 content type. This will enable the object to be exchanged using 189 several transports, including but not limited to SMTP, HTTP, a file 190 system, desktop interactive protocols such as the use of a memory- 191 based clipboard or drag/drop interactions, point-to-point 192 asynchronous communication, wired-network transport, or some form of 193 unwired transport such as infrared might also be used. 195 The memo also provides for the definition of iCalendar object methods 196 that will map this content type to a set of messages for supporting 197 calendaring and scheduling operations such as requesting, replying 198 to, modifying, and canceling meetings or appointments, to-dos and 199 journal entries. The iCalendar object methods can be used to define 200 other calendaring and scheduling operations such a requesting for and 201 replying with free/busy time data. [[Comment.1: Removed forward 202 reference to ITIP (unnecessary) --Lisa D]] 204 The memo also includes a formal grammar for the content type based on 205 the Internet ABNF defined in RFC 2234 [8]. This ABNF is required for 206 the implementation of parsers and to serve as the definitive 207 reference when ambiguities or questions arise in interpreting the 208 descriptive prose definition of the memo. 210 1.1. Related Memos 212 Implementers will need to be familiar with several other memos that, 213 along with this memo, form a framework for Internet calendaring and 214 scheduling standards. This memo, [ICAL], specifies a core 215 specification of objects, data types, properties and property 216 parameters. 218 [ITIP] - specifies an interoperability protocol for scheduling 219 between different implementations; 221 [IMIP] specifies an Internet email binding for [ITIP]. 223 This memo does not attempt to repeat the specification of concepts or 224 definitions from these other memos. Where possible, references are 225 made to the memo that provides for the specification of these 226 concepts or definitions. [[Comment.2: If we keep this section on 227 related memos, we have to think about whether ITIP and IMIP are 228 progressing to Draft at the same time, whether to update those 229 references and whether to add CalDAV or other references. --Lisa D]] 231 2. Overview 233 This draft section provides a high-level overview of the concepts of 234 iCalendar and the organization of this document. 236 An iCalendar object contains a set of calendar properties and a set 237 of components. Components consist of a set of component properties. 238 Properties consist of a property name, a set of parameters, and a 239 property value. 241 The preliminary material of this document includes the introduction, 242 this overview, some document conventions and the considerations for 243 internationalization. 245 Section 5 provides the general syntax rules used by all of iCalendar, 246 such as character set, line length and line break rules, and which 247 characters are separators. 249 Section 6 defines the iCalendar object itself, and Section 7 covers 250 the components that appear in iCalendar objects. 252 3. Document Conventions 254 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 255 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" and 256 "OPTIONAL" in this document are to be interoperated as described in 257 RFC 2119 [7]. 259 This memo makes use of both a descriptive prose and a more formal 260 notation for defining the calendaring and scheduling format. 262 The notation used in this memo is the ABNF notation of RFC 2234 [8]. 263 Readers intending on implementing this format defined in this memo 264 should be familiar with this notation in order to properly interpret 265 the specifications of this memo. 267 Note: All indented editorial notes, such as this one, are intended to 268 provide the reader with additional information. The information is 269 not essential to the building of an implementation conformant with 270 this memo. The information is provided to highlight a particular 271 feature or characteristic of the memo. [[Comment.3: This section can 272 be deleted because it provides practically no information and is not 273 a normative reference: The format for the iCalendar object is based 274 on the syntax of the RFC 2425 content type. While the iCalendar 275 object is not a profile of the RFC 2425 content type, it does reuse a 276 number of the elements from the RFC 2425 specification. --Lisa D]] 278 3.1. Formatting Conventions 280 The mechanisms defined in this memo are defined in prose. Many of 281 the terms used to describe these have common usage that is different 282 than the standards usage of this memo. In order to reference within 283 this memo elements of the calendaring and scheduling model, core 284 object (this memo) or interoperability protocol [ITIP] some 285 formatting conventions have been used. Calendaring and scheduling 286 roles are referred to in quoted-strings of text with the first 287 character of each word in upper case. For example, "Organizer" 288 refers to a role of a "Calendar User" within the scheduling protocol 289 defined by [ITIP]. Calendar components defined by this memo are 290 referred to with capitalized, quoted-strings of text. All calendar 291 components start with the letter "V". For example, "VEVENT" refers 292 to the event calendar component, "VTODO" refers to the to-do calendar 293 component and "VJOURNAL" refers to the daily journal calendar 294 component. Scheduling methods defined by [ITIP] are referred to with 295 capitalized, quoted-strings of text. For example, "REQUEST" refers 296 to the method for requesting a scheduling calendar component be 297 created or modified, "REPLY" refers to the method a recipient of a 298 request uses to update their status with the "Organizer" of the 299 calendar component. 301 The properties defined by this memo are referred to with capitalized, 302 quoted-strings of text, followed by the word "property". For 303 example, "ATTENDEE" property refers to the iCalendar property used to 304 convey the calendar address of a calendar user. Property parameters 305 defined by this memo are referred to with lowercase, quoted-strings 306 of text, followed by the word "parameter". For example, "value" 307 parameter refers to the iCalendar property parameter used to override 308 the default data type for a property value. Enumerated values 309 defined by this memo are referred to with capitalized text, either 310 alone or followed by the word "value". For example, the "MINUTELY" 311 value can be used with the "FREQ" component of the "RECUR" data type 312 to specify repeating components based on an interval of one minute or 313 more. 315 4. International Considerations 317 In the rest of this document, descriptions of characters are of the 318 form "character name (codepoint)", where "codepoint" is from the US- 319 ASCII character set. The "character name" is the authoritative 320 description; (codepoint) is a reference to that character in US-ASCII 321 or US-ASCII compatible sets (for example the ISO-8859-x family, UTF- 322 8, ISO-2022-xx, KOI8-R). If a non-US-ASCII compatible character set 323 is used, appropriate code-point from that character set MUST be 324 chosen instead. Use of non-US-ASCII-compatible character sets is NOT 325 recommended. 327 5. General Syntax 329 5.1. Character Set 331 The default character set for an iCalendar object is UTF-8 as defined 332 in RFC 2279 [9]. The "charset" Content-Type parameter can be used in 333 MIME transports to specify any other IANA registered character set. 334 [[Comment.4: I think we need to say something about interoperability 335 problems which result from using any other charset. --Lisa D]] 337 5.2. Case Sensitivity 339 All names of properties, property parameters, enumerated property 340 values and property parameter values are case-insensitive. However, 341 all other property values are case-sensitive, unless otherwise 342 stated. 344 5.3. Content Lines 346 The iCalendar object is organized into individual lines of text, 347 called content lines. Content lines are delimited by a line break, 348 which is a CRLF sequence (US-ASCII decimal 13, followed by US-ASCII 349 decimal 10). 351 Lines of text SHOULD NOT be longer than 75 octets, excluding the line 352 break. Long content lines SHOULD be split into a multiple line 353 representations using the line "folding" technique. That is, a long 354 line can be split between any two characters by inserting a CRLF 355 immediately followed by a single linear white space character (i.e., 356 SPACE, US-ASCII decimal 32 or HTAB, US-ASCII decimal 9). Any 357 sequence of CRLF followed immediately by a single linear white space 358 character is ignored (i.e., removed) when processing the content 359 type. 361 For example the line: 363 DESCRIPTION:This is a long description that exists on a long line. 365 Figure 1 367 Can be represented as: 369 DESCRIPTION:This is a lo 370 ng description 371 that exists on a long line. 373 Figure 2 374 The process of moving from this folded multiple line representation 375 to its single line representation is called "unfolding". Unfolding 376 is accomplished by removing the CRLF character and the linear white 377 space character that immediately follows. 379 When parsing a content line, folded lines MUST first be unfolded 380 according to the unfolding procedure described above. When 381 generating a content line, lines longer than 75 octets SHOULD be 382 folded according to the folding procedure described above. Content 383 lines are CRLF-separated. [[Comment.5: Removed reference to 2425 384 again and simply stated that lines are CRLF-separated --Lisa]] 386 The following ABNF defines the lines of content in an iCalendar 387 object: 389 contentline = name *(";" param ) ":" value CRLF 390 ; This ABNF is just a general definition for an initial parsing 391 ; of the content line into its property name, parameter list, 392 ; and value string 394 ; When parsing a content line, folded lines MUST first 395 ; be unfolded according to the unfolding procedure 396 ; described above. When generating a content line, lines 397 ; longer than 75 octets SHOULD be folded according to 398 ; the folding procedure described above. 400 name = x-name / iana-token 402 iana-token = 1*(ALPHA / DIGIT / "-") 403 ; iCalendar identifier registered with IANA 405 x-name = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-") 406 ; Reservered for experimental use. Not intended for use in 407 ; released products. 409 vendorid = 3*(ALPHA / DIGIT) ;Vendor identification 411 param = param-name "=" param-value 412 *("," param-value) 413 ; Each property defines the specific ABNF for the parameters 414 ; allowed on the property. Refer to specific properties for 415 ; precise parameter ABNF. 417 param-name = iana-token / x-token 419 param-value = paramtext / quoted-string 421 paramtext = *SAFE-CHAR 422 value = *VALUE-CHAR 424 quoted-string = DQUOTE *QSAFE-CHAR DQUOTE 426 NON-US-ASCII = %x80-F8 427 ; Use restricted by charset parameter 428 ; on outer MIME object (UTF-8 preferred) 430 QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-US-ASCII 431 ; Any character except CTLs and DQUOTE 433 SAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E 434 / NON-US-ASCII 435 ; Any character except CTLs, DQUOTE, ";", ":", "," 437 VALUE-CHAR = WSP / %x21-7E / NON-US-ASCII 438 ; Any textual character 440 CR = %x0D 441 ; carriage return 443 LF = %x0A 444 ; line feed 446 CRLF = CR LF 447 ; Internet standard newline 449 CTL = %x00-08 / %x0A-1F / %x7F 450 ; Controls 452 ALPHA = %x41-5A / %x61-7A ; A-Z / a-z 454 DIGIT = %x30-39 455 ; 0-9 457 DQUOTE = %x22 458 ; Quotation Mark 460 WSP = SPACE / HTAB 462 SPACE = %x20 464 HTAB = %x09 466 Figure 3 468 The property value component of a content line has a format that is 469 property specific. Refer to the section describing each property for 470 a definition of this format. 472 All names of properties, property parameters, enumerated property 473 values and property parameter values are case-insensitive. However, 474 all other property values are case-sensitive, unless otherwise 475 stated. 477 5.4. List and Field Separators 479 Some properties and parameters allow a list of values. Values in a 480 list of values MUST be separated by a COMMA character (US-ASCII 481 decimal 44). There is no significance to the order of values in a 482 list. For those parameter values (such as those that specify URI 483 values) that are specified in quoted-strings, the individual quoted- 484 strings are separated by a COMMA character (US-ASCII decimal 44). 486 Some property values are defined in terms of multiple parts. These 487 structured property values MUST have their value parts separated by a 488 SEMICOLON character (US-ASCII decimal 59). 490 Some properties allow a list of parameters. Each property parameter 491 in a list of property parameters MUST be separated by a SEMICOLON 492 character (US-ASCII decimal 59). 494 Property parameters with values containing a COLON, a SEMICOLON or a 495 COMMA character MUST be placed in quoted text. 497 For example, in the following properties a SEMICOLON is used to 498 separate property parameters from each other, and a COMMA is used to 499 separate property values in a value list. 501 ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:MAILTO: 502 jsmith@host.com 504 RDATE;VALUE=DATE:19970304,19970504,19970704,19970904 506 5.5. Multiple Property Values 508 Some properties defined in the iCalendar object can have multiple 509 values. The general rule for encoding multi-valued items is to 510 simply create a new content line for each value, including the 511 property name. However, it should be noted that some properties 512 support encoding multiple values in a single property by separating 513 the values with a COMMA character (US-ASCII decimal 44). Individual 514 property definitions should be consulted for determining whether a 515 specific property allows multiple values and in which of these two 516 forms. 518 5.6. Binary Content 520 Binary content information in an iCalendar object SHOULD be 521 referenced using a URI within a property value. That is the binary 522 content information SHOULD be placed in an external MIME entity that 523 can be referenced by a URI from within the iCalendar object. In 524 applications where this is not feasible, binary content information 525 can be included within an iCalendar object, but only after first 526 encoding it into text using the "BASE64" encoding method defined in 527 [RFC 2045]. Inline binary contact SHOULD only be used in 528 applications whose special circumstances demand that an iCalendar 529 object be expressed as a single entity. A property containing inline 530 binary content information MUST specify the "ENCODING" property 531 parameter. Binary content information placed external to the 532 iCalendar object MUST be referenced by a uniform resource identifier 533 (URI). 535 The following example specifies an "ATTACH" property that references 536 an attachment external to the iCalendar object with a URI reference: 538 ATTACH:http://xyz.com/public/quarterly-report.doc 540 The following example specifies an "ATTACH" property with inline 541 binary encoded content information: 543 ATTACH;FMTTYPE=image/basic;ENCODING=BASE64;VALUE=BINARY: 544 MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1U 545 EBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIE 546 [...remainder of "BASE64" encoded binary data...] 548 5.7. Property Parameter Syntax 550 A property can have attributes associated with it. These "property 551 parameters" contain meta-information about the property or the 552 property value. Property parameters are provided to specify such 553 information as the location of an alternate text representation for a 554 property value, the language of a text property value, the data type 555 of the property value and other attributes. 557 Property parameter values that contain the COLON (US-ASCII decimal 558 58), SEMICOLON (US-ASCII decimal 59) or COMMA (US-ASCII decimal 44) 559 character separators MUST be specified as quoted-string text values. 560 Property parameter values MUST NOT contain the DOUBLE-QUOTE (US-ASCII 561 decimal 22) character. The DOUBLE-QUOTE (US-ASCII decimal 22) 562 character is used as a delimiter for parameter values that contain 563 restricted characters or URI text. For example: 565 DESCRIPTION;ALTREP="http://www.wiz.org":The Fall'98 Wild Wizards 566 Conference - - Las Vegas, NV, USA 568 Property parameter values that are not in quoted strings are case 569 insensitive. 571 6. iCalendar Objects 573 The Calendaring and Scheduling Core Object is a collection of 574 calendaring and scheduling information. Typically, this information 575 will consist of a single iCalendar object. However, multiple 576 iCalendar objects can be sequentially grouped together. The first 577 line and last line of the iCalendar object MUST contain a pair of 578 iCalendar object delimiter strings. 580 The syntax for an iCalendar object is as follows: 582 icalobject = 1*("BEGIN" ":" "VCALENDAR" CRLF 583 icalbody 584 "END" ":" "VCALENDAR" CRLF) 586 Figure 8 588 The following is a simple example of an iCalendar object: 590 BEGIN:VCALENDAR 591 VERSION:2.0 592 PRODID:-//hacksw/handcal//NONSGML v1.0//EN 593 BEGIN:VEVENT 594 DTSTART:19970714T170000Z 595 DTEND:19970715T035959Z 596 SUMMARY:Bastille Day Party 597 END:VEVENT 598 END:VCALENDAR 600 Figure 9 602 7. Calendar Components 604 The body of an iCalendar object consists of a sequence of calendar 605 properties and one or more calendar components. The calendar 606 properties are attributes that apply to the calendar as a whole. The 607 calendar components are collections of properties that express a 608 particular calendar semantic. For example, the calendar component 609 can specify an event, a to-do, a journal entry, time zone 610 information, or free/busy time information, or an alarm. 612 The body of the iCalendar object is defined by the following 613 notation: 615 icalbody = calprops component 617 calprops = 2*( 619 ; 'prodid' and 'version' are both REQUIRED, 620 ; but MUST NOT occur more than once 622 prodid /version / 624 ; 'calscale' and 'method' are optional, 625 ; but MUST NOT occur more than once 627 calscale / 628 method / 630 x-prop 632 ) 634 component = 1*(eventc / todoc / journalc / freebusyc / 635 / timezonec / iana-comp / x-comp) 637 iana-comp = "BEGIN" ":" iana-token CRLF 639 1*contentline 641 "END" ":" iana-token CRLF 643 x-comp = "BEGIN" ":" x-name CRLF 645 1*contentline 647 "END" ":" x-name CRLF 649 Figure 10 651 An iCalendar object MUST include the "PRODID" and "VERSION" calendar 652 properties. In addition, it MUST include at least one calendar 653 component. Special forms of iCalendar objects are possible to 654 publish just busy time (i.e., only a "VFREEBUSY" calendar component) 655 or time zone (i.e., only a "VTIMEZONE" calendar component) 656 information. In addition, a complex iCalendar object is possible 657 that is used to capture a complete snapshot of the contents of a 658 calendar (e.g., composite of many different calendar components). 659 More commonly, an iCalendar object will consist of just a single 660 "VEVENT", "VTODO" or "VJOURNAL" calendar component. 662 7.1. Event Component 664 Component Name: VEVENT 666 Purpose: Provide a grouping of component properties that describe an 667 event. 669 Formal Definition: A "VEVENT" calendar component is defined by the 670 following notation: 672 eventc = "BEGIN" ":" "VEVENT" CRLF 673 eventprop *alarmc 674 "END" ":" "VEVENT" CRLF 676 eventprop = *( 678 ; the following are optional, 679 ; but MUST NOT occur more than once 681 class / created / description / dtstart / geo / 683 last-mod / location / organizer / priority / 684 dtstamp / seq / status / summary / transp / 685 uid / url / recurid / 687 ; either 'dtend' or 'duration' may appear in 688 ; a 'eventprop', but 'dtend' and 'duration' 689 ; MUST NOT occur in the same 'eventprop' 691 dtend / duration / 693 ; the following are optional, 694 ; and MAY occur more than once 696 attach / attendee / categories / comment / 697 contact / exdate / exrule / rstatus / related / 698 resources / rdate / rrule / x-prop 700 ) 702 Figure 11 704 Description: A "VEVENT" calendar component is a grouping of component 705 properties, and possibly including "VALARM" calendar components, that 706 represents a scheduled amount of time on a calendar. For example, it 707 can be an activity; such as a one-hour long, department meeting from 708 8:00 AM to 9:00 AM, tomorrow. Generally, an event will take up time 709 on an individual calendar. Hence, the event will appear as an opaque 710 interval in a search for busy time. Alternately, the event can have 711 its Time Transparency set to "TRANSPARENT" in order to prevent 712 blocking of the event in searches for busy time. 714 The "VEVENT" is also the calendar component used to specify an 715 anniversary or daily reminder within a calendar. These events have a 716 DATE value type for the "DTSTART" property instead of the default 717 data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, 718 it MUST be specified as a DATE value also. The anniversary type of 719 "VEVENT" can span more than one date (i.e, "DTEND" property value is 720 set to a calendar date after the "DTSTART" property value). 722 The "DTSTART" property for a "VEVENT" specifies the inclusive start 723 of the event. For recurring events, it also specifies the very first 724 instance in the recurrence set. The "DTEND" property for a "VEVENT" 725 calendar component specifies the non-inclusive end of the event. For 726 cases where a "VEVENT" calendar component specifies a "DTSTART" 727 property with a DATE data type but no "DTEND" property, the events 728 non-inclusive end is the end of the calendar date specified by the 729 "DTSTART" property. For cases where a "VEVENT" calendar component 730 specifies a "DTSTART" property with a DATE-TIME data type but no 731 "DTEND" property, the event ends on the same calendar date and time 732 of day specified by the "DTSTART" property. 734 The "VEVENT" calendar component cannot be nested within another 735 calendar component. However, "VEVENT" calendar components can be 736 related to each other or to a "VTODO" or to a "VJOURNAL" calendar 737 component with the "RELATED-TO" property. 739 Example 1: The following is an example of the "VEVENT" calendar 740 component used to represent a meeting that will also be opaque to 741 searches for busy time: 743 BEGIN:VEVENT 744 UID:19970901T130000Z-123401@host.com 745 DTSTAMP:19970901T1300Z 746 DTSTART:19970903T163000Z 747 DTEND:19970903T190000Z 748 SUMMARY:Annual Employee Review 749 CLASS:PRIVATE 750 CATEGORIES:BUSINESS,HUMAN RESOURCES 751 END:VEVENT 753 Figure 12 754 Example 2: The following is an example of the "VEVENT" calendar 755 component used to represent a reminder that will not be opaque, but 756 rather transparent, to searches for busy time: 758 BEGIN:VEVENT 759 UID:19970901T130000Z-123402@host.com 760 DTSTAMP:19970901T1300Z 761 DTSTART:19970401T163000Z 762 DTEND:19970402T010000Z 763 SUMMARY:Laurel is in sensitivity awareness class. 764 CLASS:PUBLIC 765 CATEGORIES:BUSINESS,HUMAN RESOURCES 766 TRANSP:TRANSPARENT 767 END:VEVENT 769 Figure 13 771 Example 3: The following is an example of the "VEVENT" calendar 772 component used to represent an anniversary that will occur annually. 773 Since it takes up no time, it will not appear as opaque in a search 774 for busy time; no matter what the value of the "TRANSP" property 775 indicates: 777 BEGIN:VEVENT 778 UID:19970901T130000Z-123403@host.com 779 DTSTAMP:19970901T1300Z 780 DTSTART:19971102 781 SUMMARY:Our Blissful Anniversary 782 CLASS:CONFIDENTIAL 783 CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION 784 RRULE:FREQ=YEARLY 785 END:VEVENT 787 Figure 14 789 7.2. To-do Component 791 Component Name: VTODO 793 Purpose: Provide a grouping of calendar properties that describe a 794 to-do. 796 Formal Definition: A "VTODO" calendar component is defined by the 797 following notation: 799 todoc = "BEGIN" ":" "VTODO" CRLF 800 todoprop *alarmc 801 "END" ":" "VTODO" CRLF 803 todoprop = *( 805 ; the following are optional, 806 ; but MUST NOT occur more than once 808 class / completed / created / description / dtstamp / 809 dtstart / geo / last-mod / location / organizer / 810 percent / priority / recurid / seq / status / 811 summary / uid / url / 813 ; either 'due' or 'duration' may appear in 814 ; a 'todoprop', but 'due' and 'duration' 815 ; MUST NOT occur in the same 'todoprop' 817 due / duration / 819 ; the following are optional, 820 ; and MAY occur more than once 821 attach / attendee / categories / comment / contact / 822 exdate / exrule / rstatus / related / resources / 823 rdate / rrule / x-prop 825 ) 827 Figure 15 829 Description: A "VTODO" calendar component is a grouping of component 830 properties and possibly "VALARM" calendar components that represent 831 an action-item or assignment. For example, it can be used to 832 represent an item of work assigned to an individual; such as "turn in 833 travel expense today". 835 The "VTODO" calendar component cannot be nested within another 836 calendar component. However, "VTODO" calendar components can be 837 related to each other or to a "VTODO" or to a "VJOURNAL" calendar 838 component with the "RELATED-TO" property. 840 A "VTODO" calendar component without the "DTSTART" and "DUE" (or 841 "DURATION") properties specifies a to-do that will be associated with 842 each successive calendar date, until it is completed. 844 Example: The following is an example of a "VTODO" calendar component: 846 BEGIN:VTODO 847 UID:19970901T130000Z-123404@host.com 848 DTSTAMP:19970901T1300Z 849 DTSTART:19970415T133000Z 850 DUE:19970416T045959Z 851 SUMMARY:1996 Income Tax Preparation 852 CLASS:CONFIDENTIAL 853 CATEGORIES:FAMILY,FINANCE 854 PRIORITY:1 855 STATUS:NEEDS-ACTION 856 END:VTODO 858 Figure 16 860 7.3. Journal Component 862 Component Name: VJOURNAL 864 Purpose: Provide a grouping of component properties that describe a 865 journal entry. 867 Formal Definition: A "VJOURNAL" calendar component is defined by the 868 following notation: 870 journalc = "BEGIN" ":" "VJOURNAL" CRLF 871 jourprop 872 "END" ":" "VJOURNAL" CRLF 874 jourprop = *( 876 ; the following are optional, 877 ; but MUST NOT occur more than once 879 class / created / description / dtstart / dtstamp / 880 last-mod / organizer / recurid / seq / status / 881 summary / uid / url / 883 ; the following are optional, 884 ; and MAY occur more than once 886 attach / attendee / categories / comment / 887 contact / exdate / exrule / related / rdate / 888 rrule / rstatus / x-prop 890 ) 892 Figure 17 894 Description: A "VJOURNAL" calendar component is a grouping of 895 component properties that represent one or more descriptive text 896 notes associated with a particular calendar date. The "DTSTART" 897 property is used to specify the calendar date that the journal entry 898 is associated with. Generally, it will have a DATE value data type, 899 but it can also be used to specify a DATE-TIME value data type. 900 Examples of a journal entry include a daily record of a legislative 901 body or a journal entry of individual telephone contacts for the day 902 or an ordered list of accomplishments for the day. The "VJOURNAL" 903 calendar component can also be used to associate a document with a 904 calendar date. 906 The "VJOURNAL" calendar component does not take up time on a 907 calendar. Hence, it does not play a role in free or busy time 908 searches - - it is as though it has a time transparency value of 909 TRANSPARENT. It is transparent to any such searches. 911 The "VJOURNAL" calendar component cannot be nested within another 912 calendar component. However, "VJOURNAL" calendar components can be 913 related to each other or to a "VEVENT" or to a "VTODO" calendar 914 component, with the "RELATED-TO" property. 916 Example: The following is an example of the "VJOURNAL" calendar 917 component: 919 BEGIN:VJOURNAL 920 UID:19970901T130000Z-123405@host.com 921 DTSTAMP:19970901T1300Z 922 DTSTART;VALUE=DATE:19970317 923 SUMMARY:Staff meeting minutes 924 DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa 925 and Bob. Aurora project plans were reviewed. There is currently 926 no budget reserves for this project. Lisa will escalate to 927 management. Next meeting on Tuesday.\n 928 2. Telephone Conference: ABC Corp. sales representative called 929 to discuss new printer. Promised to get us a demo by Friday.\n 930 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. 931 Is looking into a loaner car. 654-2323 (tel). 932 END:VJOURNAL 934 Figure 18 936 7.4. Free/Busy Component 938 Component Name: VFREEBUSY 940 Purpose: Provide a grouping of component properties that describe 941 either a request for free/busy time, describe a response to a request 942 for free/busy time or describe a published set of busy time. 944 Formal Definition: A "VFREEBUSY" calendar component is defined by the 945 following notation: 947 freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF 948 fbprop 949 "END" ":" "VFREEBUSY" CRLF 951 fbprop = *( 953 ; the following are optional, 954 ; but MUST NOT occur more than once 956 contact / dtstart / dtend / duration / dtstamp / 957 organizer / uid / url / 959 ; the following are optional, 960 ; and MAY occur more than once 962 attendee / comment / freebusy / rstatus / x-prop 964 ) 966 Figure 19 968 Description: A "VFREEBUSY" calendar component is a grouping of 969 component properties that represents either a request for, a reply to 970 a request for free or busy time information or a published set of 971 busy time information. 973 When used to request free/busy time information, the "ATTENDEE" 974 property specifies the calendar users whose free/busy time is being 975 requested; the "ORGANIZER" property specifies the calendar user who 976 is requesting the free/busy time; the "DTSTART" and "DTEND" 977 properties specify the window of time for which the free/busy time is 978 being requested; the "UID" and "DTSTAMP" properties are specified to 979 assist in proper sequencing of multiple free/busy time requests. 981 When used to reply to a request for free/busy time, the "ATTENDEE" 982 property specifies the calendar user responding to the free/busy time 983 request; the "ORGANIZER" property specifies the calendar user that 984 originally requested the free/busy time; the "FREEBUSY" property 985 specifies the free/busy time information (if it exists); and the 987 "UID" and "DTSTAMP" properties are specified to assist in proper 988 sequencing of multiple free/busy time replies. 990 When used to publish busy time, the "ORGANIZER" property specifies 991 the calendar user associated with the published busy time; the 992 "DTSTART" and "DTEND" properties specify an inclusive time window 993 that surrounds the busy time information; the "FREEBUSY" property 994 specifies the published busy time information; and the "DTSTAMP" 995 property specifies the date/time that iCalendar object was created. 997 The "VFREEBUSY" calendar component cannot be nested within another 998 calendar component. Multiple "VFREEBUSY" calendar components can be 999 specified within an iCalendar object. This permits the grouping of 1000 Free/Busy information into logical collections, such as monthly 1001 groups of busy time information. 1003 The "VFREEBUSY" calendar component is intended for use in iCalendar 1004 object methods involving requests for free time, requests for busy 1005 time, requests for both free and busy, and the associated replies. 1007 Free/Busy information is represented with the "FREEBUSY" property. 1008 This property provides a terse representation of time periods. One 1009 or more "FREEBUSY" properties can be specified in the "VFREEBUSY" 1010 calendar component. 1012 When present in a "VFREEBUSY" calendar component, the "DTSTART" and 1013 "DTEND" properties SHOULD be specified prior to any "FREEBUSY" 1014 properties. In a free time request, these properties can be used in 1015 combination with the "DURATION" property to represent a request for a 1016 duration of free time within a specified window of time. 1018 The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are 1019 not permitted within a "VFREEBUSY" calendar component. Any recurring 1020 events are resolved into their individual busy time periods using the 1021 "FREEBUSY" property. 1023 Example 1: The following is an example of a "VFREEBUSY" calendar 1024 component used to request free or busy time information: 1026 BEGIN:VFREEBUSY 1027 ORGANIZER:MAILTO:jane_doe@host1.com 1028 ATTENDEE:MAILTO:john_public@host2.com 1029 DTSTART:19971015T050000Z 1030 DTEND:19971016T050000Z 1031 DTSTAMP:19970901T083000Z 1032 END:VFREEBUSY 1034 Figure 20 1035 Example 2: A "VFREEBUSY" calendar component used to reply to the 1036 request with busy time information. 1038 BEGIN:VFREEBUSY 1039 ORGANIZER:MAILTO:jane_doe@host1.com 1040 ATTENDEE:MAILTO:john_public@host2.com 1041 DTSTAMP:19970901T100000Z 1042 FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, 1043 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M 1044 URL:http://host2.com/pub/busy/jpublic-01.ifb 1045 COMMENT:This iCalendar file contains busy time information for 1046 the next three months. 1047 END:VFREEBUSY 1049 Figure 21 1051 Example 3: a "VFREEBUSY" calendar component used to publish busy time 1052 information. 1054 BEGIN:VFREEBUSY 1055 ORGANIZER:jsmith@host.com 1056 DTSTART:19980313T141711Z 1057 DTEND:19980410T141711Z 1058 FREEBUSY:19980314T233000Z/19980315T003000Z 1059 FREEBUSY:19980316T153000Z/19980316T163000Z 1060 FREEBUSY:19980318T030000Z/19980318T040000Z 1061 URL:http://www.host.com/calendar/busytime/jsmith.ifb 1062 END:VFREEBUSY 1064 Figure 22 1066 7.5. Time Zone Component 1068 Component Name: VTIMEZONE 1070 Purpose: Provide a grouping of component properties that defines a 1071 time zone. 1073 Formal Definition: A "VTIMEZONE" calendar component is defined by the 1074 following notation: 1076 timezonec = "BEGIN" ":" "VTIMEZONE" CRLF 1078 2*( 1080 ; 'tzid' is required, but MUST NOT occur more 1081 ; than once 1083 tzid / 1085 ; 'last-mod' and 'tzurl' are optional, 1086 but MUST NOT occur more than once 1088 last-mod / tzurl / 1090 ; one of 'standardc' or 'daylightc' MUST occur 1091 ..; and each MAY occur more than once. 1093 standardc / daylightc / 1095 ; the following is optional, 1096 ; and MAY occur more than once 1098 x-prop 1100 ) 1102 "END" ":" "VTIMEZONE" CRLF 1104 standardc = "BEGIN" ":" "STANDARD" CRLF 1106 tzprop 1108 "END" ":" "STANDARD" CRLF 1110 daylightc = "BEGIN" ":" "DAYLIGHT" CRLF 1112 tzprop 1114 "END" ":" "DAYLIGHT" CRLF 1116 tzprop = 3*( 1118 ; the following are each REQUIRED, 1119 ; but MUST NOT occur more than once 1121 dtstart / tzoffsetto / tzoffsetfrom / 1123 ; the following are optional, 1124 ; and MAY occur more than once 1126 comment / rdate / rrule / tzname / x-prop 1128 ) 1130 Figure 23 1132 Description: A time zone is unambiguously defined by the set of time 1133 measurement rules determined by the governing body for a given 1134 geographic area. These rules describe at a minimum the base offset 1135 from UTC for the time zone, often referred to as the Standard Time 1136 offset. Many locations adjust their Standard Time forward or 1137 backward by one hour, in order to accommodate seasonal changes in 1138 number of daylight hours, often referred to as Daylight Saving Time. 1139 Some locations adjust their time by a fraction of an hour. Standard 1140 Time is also known as Winter Time. Daylight Saving Time is also 1141 known as Advanced Time, Summer Time, or Legal Time in certain 1142 countries. The following table shows the changes in time zone rules 1143 in effect for New York City starting from 1967. Each line represents 1144 a description or rule for a particular observance. 1146 Effective Observance Rule 1148 +-----------+-------------------------+--------+--------------+ 1149 | Date | (Date/Time) | Offset | Abbreviation | 1150 +-----------+-------------------------+--------+--------------+ 1151 | 1967-* | last Sun in Oct, 02:00 | -0500 | EST | 1152 | | | | | 1153 | 1967-1973 | last Sun in Apr, 02:00 | -0400 | EDT | 1154 | | | | | 1155 | 1974-1974 | Jan 6, 02:00 | -0400 | EDT | 1156 | | | | | 1157 | 1975-1975 | Feb 23, 02:00 | -0400 | EDT | 1158 | | | | | 1159 | 1976-1986 | last Sun in Apr, 02:00 | -0400 | EDT | 1160 | | | | | 1161 | 1987-* | first Sun in Apr, 02:00 | -0400 | EDT | 1162 +-----------+-------------------------+--------+--------------+ 1164 Note: The specification of a global time zone registry is not 1165 addressed by this document and is left for future study. However, 1166 implementers may find the Olson time zone database [TZ] a useful 1167 reference. It is an informal, public-domain collection of time zone 1168 information, which is currently being maintained by volunteer 1169 Internet participants, and is used in several operating systems. 1170 This database contains current and historical time zone information 1171 for a wide variety of locations around the globe; it provides a time 1172 zone identifier for every unique time zone rule set in actual use 1173 since 1970, with historical data going back to the introduction of 1174 standard time. 1176 Interoperability between two calendaring and scheduling applications, 1177 especially for recurring events, to-dos or journal entries, is 1178 dependent on the ability to capture and convey date and time 1179 information in an unambiguous format. The specification of current 1180 time zone information is integral to this behavior. 1182 If present, the "VTIMEZONE" calendar component defines the set of 1183 Standard Time and Daylight Saving Time observances (or rules) for a 1184 particular time zone for a given interval of time. The "VTIMEZONE" 1185 calendar component cannot be nested within other calendar components. 1186 Multiple "VTIMEZONE" calendar components can exist in an iCalendar 1187 object. In this situation, each "VTIMEZONE" MUST represent a unique 1188 time zone definition. This is necessary for some classes of events, 1189 such as airline flights, that start in one time zone and end in 1190 another. 1192 The "VTIMEZONE" calendar component MUST be present if the iCalendar 1193 object contains an RRULE that generates dates on both sides of a time 1194 zone shift (e.g. both in Standard Time and Daylight Saving Time) 1195 unless the iCalendar object intends to convey a floating time (See 1196 Section 13.13 for proper interpretation of floating time). It can be 1197 present if the iCalendar object does not contain such a RRULE. In 1198 addition, if a RRULE is present, there MUST be valid time zone 1199 information for all recurrence instances. 1201 The "VTIMEZONE" calendar component MUST include the "TZID" property 1202 and at least one definition of a standard or daylight component. The 1203 standard or daylight component MUST include the "DTSTART", 1204 "TZOFFSETFROM" and "TZOFFSETTO" properties. 1206 An individual "VTIMEZONE" calendar component MUST be specified for 1207 each unique "TZID" parameter value specified in the iCalendar object. 1209 Each "VTIMEZONE" calendar component consists of a collection of one 1210 or more sub-components that describe the rule for a particular 1211 observance (either a Standard Time or a Daylight Saving Time 1212 observance). The "STANDARD" sub-component consists of a collection 1213 of properties that describe Standard Time. The "DAYLIGHT" sub- 1214 component consists of a collection of properties that describe 1215 Daylight Saving Time. In general this collection of properties 1216 consists of: 1218 the first onset date-time for the observance 1220 the last onset date-time for the observance, if a last onset is 1221 known. 1223 the offset to be applied for the observance 1224 a rule that describes the day and time when the observance takes 1225 effect 1227 an optional name for the observance 1229 For a given time zone, there may be multiple unique definitions of 1230 the observances over a period of time. Each observance is described 1231 using either a "STANDARD" or "DAYLIGHT" sub-component. The 1232 collection of these sub-components is used to describe the time zone 1233 for a given period of time. The offset to apply at any given time is 1234 found by locating the observance that has the last onset date and 1235 time before the time in question, and using the offset value from 1236 that observance. 1238 The top-level properties in a "VTIMEZONE" calendar component are: 1240 The mandatory "TZID" property is a text value that uniquely 1241 identifies the VTIMZONE calendar component within the scope of an 1242 iCalendar object. 1244 The optional "LAST-MODIFIED" property is a UTC value that specifies 1245 the date and time that this time zone definition was last updated. 1247 The optional "TZURL" property is url value that points to a published 1248 VTIMEZONE definition. TZURL SHOULD refer to a resource that is 1249 accessible by anyone who might need to interpret the object. This 1250 SHOULD NOT normally be a file: URL or other URL that is not widely- 1251 accessible. 1253 The collection of properties that are used to define the STANDARD and 1254 DAYLIGHT sub-components include: 1256 The mandatory "DTSTART" property gives the effective onset date and 1257 local time for the time zone sub-component definition. "DTSTART" in 1258 this usage MUST be specified as a local DATE-TIME value. 1260 The mandatory "TZOFFSETFROM" property gives the UTC offset which is 1261 in use when the onset of this time zone observance begins. 1262 "TZOFFSETFROM" is combined with "DTSTART" to define the effective 1263 onset for the time zone sub-component definition. For example, the 1264 following represents the time at which the observance of Standard 1265 Time took effect in Fall 1967 for New York City: 1267 DTSTART:19671029T020000 1269 TZOFFSETFROM:-0400 1271 Figure 24 1272 The mandatory "TZOFFSETTO " property gives the UTC offset for the 1273 time zone sub-component (Standard Time or Daylight Saving Time) when 1274 this observance is in use. 1276 The optional "TZNAME" property is the customary name for the time 1277 zone. It may be specified multiple times, to allow for specifying 1278 multiple language variants of the time zone names. This could be 1279 used for displaying dates. 1281 If specified, the onset for the observance defined by the time zone 1282 sub-component is defined by either the "RRULE" or "RDATE" property. 1283 If neither is specified, only one sub-component can be specified in 1284 the "VTIMEZONE" calendar component and it is assumed that the single 1285 observance specified is always in effect. 1287 The "RRULE" property defines the recurrence rule for the onset of the 1288 observance defined by this time zone sub-component. Some specific 1289 requirements for the usage of RRULE for this purpose include: 1291 If observance is known to have an effective end date, the "UNTIL" 1292 recurrence rule parameter MUST be used to specify the last valid 1293 onset of this observance (i.e., the UNTIL date-time will be equal 1294 to the last instance generated by the recurrence pattern). It 1295 MUST be specified in UTC time. 1297 The "DTSTART" and the "TZOFFSETTO" properties MUST be used when 1298 generating the onset date-time values (instances) from the RRULE. 1300 Alternatively, the "RDATE" property can be used to define the onset 1301 of the observance by giving the individual onset date and times. 1302 "RDATE" in this usage MUST be specified as a local DATE-TIME value in 1303 UTC time. 1305 The optional "COMMENT" property is also allowed for descriptive 1306 explanatory text. 1308 Example: The following are examples of the "VTIMEZONE" calendar 1309 component: 1311 Example 1: Time zone information for the Eastern United States using 1312 "RDATE" property. Note that this is only suitable for a recurring 1313 event that starts on or later than April 6, 1997 at 03:00:00 EDT 1314 (i.e., the earliest effective transition date and time) and ends no 1315 later than April 7, 1998 02:00:00 EST (i.e., latest valid date and 1316 time for EST in this scenario). For example, this can be used for a 1317 recurring event that occurs every Friday, 8am-9:00 AM, starting June 1318 1, 1997, ending December 31, 1997. 1320 BEGIN:VTIMEZONE 1321 TZID:US-Eastern 1322 LAST-MODIFIED:19870101T000000Z 1323 BEGIN:STANDARD 1324 DTSTART:19971026T020000 1325 RDATE:19971026T020000 1326 TZOFFSETFROM:-0400 1327 TZOFFSETTO:-0500 1328 TZNAME:EST 1329 END:STANDARD 1330 BEGIN:DAYLIGHT 1331 DTSTART:19970406T020000 1332 RDATE:19970406T020000 1333 TZOFFSETFROM:-0500 1334 TZOFFSETTO:-0400 1335 TZNAME:EDT 1336 END:DAYLIGHT 1337 END:VTIMEZONE 1339 Figure 25 1340 Example 2: Current time zone rules for the Eastern United States 1341 using a RRULE recurrence pattern. Note that there is no effective 1342 end date to either of the Standard Time or Daylight Time rules. This 1343 information would be valid for a recurring event starting today and 1344 continuing indefinitely. 1346 BEGIN:VTIMEZONE 1347 TZID:US-Eastern 1348 LAST-MODIFIED:19870101T000000Z 1349 TZURL:http://zones.stds_r_us.net/tz/US-Eastern 1350 BEGIN:STANDARD 1351 DTSTART:19671029T020000 1352 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 1353 TZOFFSETFROM:-0400 1354 TZOFFSETTO:-0500 1355 TZNAME:EST 1356 END:STANDARD 1357 BEGIN:DAYLIGHT 1358 DTSTART:19870405T020000 1359 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 1360 TZOFFSETFROM:-0500 1361 TZOFFSETTO:-0400 1362 TZNAME:EDT 1363 END:DAYLIGHT 1364 END:VTIMEZONE 1366 Figure 26 1367 Example 3: A fictitious set of rules for the Eastern United States, 1368 where the Daylight Time rule has an effective end date (i.e., after 1369 that date, Daylight Time is no longer observed). 1371 BEGIN:VTIMEZONE 1372 TZID:US- -Fictitious-Eastern 1373 LAST-MODIFIED:19870101T000000Z 1374 BEGIN:STANDARD 1375 DTSTART:19671029T020000 1376 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 1377 TZOFFSETFROM:-0400 1378 TZOFFSETTO:-0500 1379 TZNAME:EST 1380 END:STANDARD 1381 BEGIN:DAYLIGHT 1382 DTSTART:19870405T020000 1383 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z 1384 TZOFFSETFROM:-0500 1385 TZOFFSETTO:-0400 1386 TZNAME:EDT 1387 END:DAYLIGHT 1388 END:VTIMEZONE 1390 Figure 27 1391 Example 4: A fictitious set of rules for the Eastern United States, 1392 where the first Daylight Time rule has an effective end date. There 1393 is a second Daylight Time rule that picks up where the other left 1394 off. 1396 BEGIN:VTIMEZONE 1397 TZID:US- -Fictitious-Eastern 1398 LAST-MODIFIED:19870101T000000Z 1399 BEGIN:STANDARD 1400 DTSTART:19671029T020000 1401 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 1402 TZOFFSETFROM:-0400 1403 TZOFFSETTO:-0500 1404 TZNAME:EST 1405 END:STANDARD 1406 BEGIN:DAYLIGHT 1407 DTSTART:19870405T020000 1408 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z 1409 TZOFFSETFROM:-0500 1410 TZOFFSETTO:-0400 1411 TZNAME:EDT 1412 END:DAYLIGHT 1413 BEGIN:DAYLIGHT 1414 DTSTART:19990424T020000 1415 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 1416 TZOFFSETFROM:-0500 1417 TZOFFSETTO:-0400 1418 TZNAME:EDT 1419 END:DAYLIGHT 1420 END:VTIMEZONE 1422 Figure 28 1424 7.6. Alarm Component 1426 Component Name: VALARM 1428 Purpose: Provide a grouping of component properties that define an 1429 alarm. 1431 Formal Definition: A "VALARM" calendar component is defined by the 1432 following notation: 1434 alarmc = "BEGIN" ":" "VALARM" CRLF 1435 (audioprop / dispprop / emailprop / procprop) 1436 "END" ":" "VALARM" CRLF 1438 audioprop = 2*( 1439 ; 'action' and 'trigger' are both REQUIRED, 1440 ; but MUST NOT occur more than once 1442 action / trigger / 1444 ; 'duration' and 'repeat' are both optional, 1445 ; and MUST NOT occur more than once each, 1446 ; but if one occurs, so MUST the other 1448 duration / repeat / 1450 ; the following is optional, 1451 ; but MUST NOT occur more than once 1453 attach / 1455 ; the following is optional, 1456 ; and MAY occur more than once 1458 x-prop 1460 ) 1462 dispprop = 3*( 1464 ; the following are all REQUIRED, 1465 ; but MUST NOT occur more than once 1467 action / description / trigger / 1469 ; 'duration' and 'repeat' are both optional, 1470 ; and MUST NOT occur more than once each, 1471 ; but if one occurs, so MUST the other 1473 duration / repeat / 1475 ; the following is optional, 1477 ; and MAY occur more than once 1479 *x-prop 1481 ) 1483 emailprop = 5*( 1485 ; the following are all REQUIRED, 1486 ; but MUST NOT occur more than once 1488 action / description / trigger / summary 1490 ; the following is REQUIRED, 1491 ; and MAY occur more than once 1493 attendee / 1495 ; 'duration' and 'repeat' are both optional, 1496 ; and MUST NOT occur more than once each, 1497 ; but if one occurs, so MUST the other 1499 duration / repeat / 1501 ; the following are optional, 1502 ; and MAY occur more than once 1504 attach / x-prop 1506 ) 1508 procprop = 3*( 1510 ; the following are all REQUIRED, 1511 ; but MUST NOT occur more than once 1513 action / attach / trigger / 1515 ; 'duration' and 'repeat' are both optional, 1516 ; and MUST NOT occur more than once each, 1517 ; but if one occurs, so MUST the other 1519 duration / repeat / 1521 ; 'description' is optional, 1522 ; and MUST NOT occur more than once 1524 description / 1526 ; the following is optional, 1527 ; and MAY occur more than once 1528 x-prop 1530 ) 1532 Figure 29 1534 Description: A "VALARM" calendar component is a grouping of component 1535 properties that is a reminder or alarm for an event or a to-do. For 1536 example, it may be used to define a reminder for a pending event or 1537 an overdue to-do. 1539 The "VALARM" calendar component MUST include the "ACTION" and 1540 "TRIGGER" properties. The "ACTION" property further constrains the 1541 "VALARM" calendar component in the following ways: 1543 When the action is "AUDIO", the alarm can also include one and only 1544 one "ATTACH" property, which MUST point to a sound resource, which is 1545 rendered when the alarm is triggered. 1547 When the action is "DISPLAY", the alarm MUST also include a 1548 "DESCRIPTION" property, which contains the text to be displayed when 1549 the alarm is triggered. 1551 When the action is "EMAIL", the alarm MUST include a "DESCRIPTION" 1552 property, which contains the text to be used as the message body, a 1553 "SUMMARY" property, which contains the text to be used as the message 1554 subject, and one or more "ATTENDEE" properties, which contain the 1555 email address of attendees to receive the message. It can also 1556 include one or more "ATTACH" properties, which are intended to be 1557 sent as message attachments. When the alarm is triggered, the email 1558 message is sent. 1560 When the action is "PROCEDURE", the alarm MUST include one and only 1561 one "ATTACH" property, which MUST point to a procedure resource, 1562 which is invoked when the alarm is triggered. 1564 The "VALARM" calendar component MUST only appear within either a 1565 "VEVENT" or "VTODO" calendar component. "VALARM" calendar components 1566 cannot be nested. Multiple mutually independent "VALARM" calendar 1567 components can be specified for a single "VEVENT" or "VTODO" calendar 1568 component. 1570 The "TRIGGER" property specifies when the alarm will be triggered. 1571 The "TRIGGER" property specifies a duration prior to the start of an 1572 event or a to-do. The "TRIGGER" edge may be explicitly set to be 1573 relative to the "START" or "END" of the event or to-do with the 1574 "RELATED" parameter of the "TRIGGER" property. The "TRIGGER" 1575 property value type can alternatively be set to an absolute calendar 1576 date and time of day value. 1578 In an alarm set to trigger on the "START" of an event or to-do, the 1579 "DTSTART" property MUST be present in the associated event or to-do. 1580 In an alarm in a "VEVENT" calendar component set to trigger on the 1581 "END" of the event, either the "DTEND" property MUST be present, or 1582 the "DTSTART" and "DURATION" properties MUST both be present. In an 1583 alarm in a "VTODO" calendar component set to trigger on the "END" of 1584 the to-do, either the "DUE" property MUST be present, or the 1585 "DTSTART" and "DURATION" properties MUST both be present. 1587 The alarm can be defined such that it triggers repeatedly. A 1588 definition of an alarm with a repeating trigger MUST include both the 1589 "DURATION" and "REPEAT" properties. The "DURATION" property 1590 specifies the delay period, after which the alarm will repeat. The 1591 "REPEAT" property specifies the number of additional repetitions that 1592 the alarm will triggered. This repitition count is in addition to 1593 the initial triggering of the alarm. Both of these properties MUST 1594 be present in order to specify a repeating alarm. If one of these 1595 two properties is absent, then the alarm will not repeat beyond the 1596 initial trigger. 1598 The "ACTION" property is used within the "VALARM" calendar component 1599 to specify the type of action invoked when the alarm is triggered. 1600 The "VALARM" properties provide enough information for a specific 1601 action to be invoked. It is typically the responsibility of a 1602 "Calendar User Agent" (CUA) to deliver the alarm in the specified 1603 fashion. An "ACTION" property value of AUDIO specifies an alarm that 1604 causes a sound to be played to alert the user; DISPLAY specifies an 1605 alarm that causes a text message to be displayed to the user; EMAIL 1606 specifies an alarm that causes an electronic email message to be 1607 delivered to one or more email addresses; and PROCEDURE specifies an 1608 alarm that causes a procedure to be executed. The "ACTION" property 1609 MUST specify one and only one of these values. 1611 In an AUDIO alarm, if the optional "ATTACH" property is included, it 1612 MUST specify an audio sound resource. The intention is that the 1613 sound will be played as the alarm effect. If an "ATTACH" property is 1614 specified that does not refer to a sound resource, or if the 1615 specified sound resource cannot be rendered (because its format is 1616 unsupported, or because it cannot be retrieved), then the CUA or 1617 other entity responsible for playing the sound may choose a fallback 1618 action, such as playing a built-in default sound, or playing no sound 1619 at all. 1621 In a DISPLAY alarm, the intended alarm effect is for the text value 1622 of the "DESCRIPTION" property to be displayed to the user. 1624 In an EMAIL alarm, the intended alarm effect is for an email message 1625 to be composed and delivered to all the addresses specified by the 1626 "ATTENDEE" properties in the "VALARM" calendar component. The 1627 "DESCRIPTION" property of the "VALARM" calendar component MUST be 1628 used as the body text of the message, and the "SUMMARY" property MUST 1629 be used as the subject text. Any "ATTACH" properties in the "VALARM" 1630 calendar component SHOULD be sent as attachments to the message. 1632 In a PROCEDURE alarm, the "ATTACH" property in the "VALARM" calendar 1633 component MUST specify a procedure or program that is intended to be 1634 invoked as the alarm effect. If the procedure or program is in a 1635 format that cannot be rendered, then no procedure alarm will be 1636 invoked. If the "DESCRIPTION" property is present, its value 1637 specifies the argument string to be passed to the procedure or 1638 program. "Calendar User Agents" that receive an iCalendar object 1639 with this category of alarm, can disable or allow the "Calendar User" 1640 to disable, or otherwise ignore this type of alarm. While a very 1641 useful alarm capability, the PROCEDURE type of alarm SHOULD be 1642 treated by the "Calendar User Agent" as a potential security risk. 1644 Example 1: A "VALARM" calendar component that specifies an audio 1645 alarm that will sound at a precise time and repeat 4 more times at 15 1646 minute intervals. 1648 BEGIN:VALARM 1649 TRIGGER;VALUE=DATE-TIME:19970317T133000Z 1650 REPEAT:4 1651 DURATION:PT15M 1652 ACTION:AUDIO 1653 ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud 1654 END:VALARM 1656 Figure 30 1658 Example 2: A "VALARM" calendar component that specifies a display 1659 alarm that will trigger 30 minutes before the scheduled start of the 1660 event or the due date/time of the to-do it is associated with and 1661 will repeat 2 more times at 15 minute intervals: 1663 BEGIN:VALARM 1664 TRIGGER:-PT30M 1665 REPEAT:2 1666 DURATION:PT15M 1667 ACTION:DISPLAY 1668 DESCRIPTION:Breakfast meeting with executive\n 1669 team at 8:30 AM EST. 1670 END:VALARM 1672 Figure 31 1674 Example 3: A "VALARM" calendar component that specifies an email 1675 alarm that will trigger 2 days before the scheduled due date/time of 1676 a to-do it is associated with. It does not repeat. The email has a 1677 subject, body and attachment link. 1679 BEGIN:VALARM 1680 TRIGGER:-P2D 1681 ACTION:EMAIL 1682 ATTENDEE:MAILTO:john_doe@host.com 1683 SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** 1684 DESCRIPTION:A draft agenda needs to be sent out to the attendees 1685 to the weekly managers meeting (MGR-LIST). Attached is a 1686 pointer the document template for the agenda file. 1687 ATTACH;FMTTYPE=application/msword:http://host.com/templates/agen 1688 da.doc 1689 END:VALARM 1691 Figure 32 1693 Example 4: A "VALARM" calendar component that specifies a procedural 1694 alarm that will trigger at a precise date/time and will repeat 23 1695 more times at one hour intervals. The alarm will invoke a procedure 1696 file. 1698 BEGIN:VALARM 1699 TRIGGER;VALUE=DATE-TIME:19980101T050000Z 1700 REPEAT:23 1701 DURATION:PT1H 1702 ACTION:PROCEDURE 1703 ATTACH;FMTTYPE=application/octet-stream:ftp://host.com/novo- 1704 procs/felizano.exe 1705 END:VALARM 1707 Figure 33 1709 8. Properties 1711 A property is the definition of an individual attribute describing a 1712 calendar or a calendar component. A property takes the form defined 1713 by the "contentline" notation defined in section 4.1.1. 1715 The following is an example of a property: 1717 DTSTART:19960415T133000Z 1719 This memo imposes no ordering of properties within an iCalendar 1720 object. 1722 Property names, parameter names and enumerated parameter values are 1723 case insensitive. For example, the property name "DUE" is the same 1724 as "due" and "Due", DTSTART;TZID=US-Eastern:19980714T120000 is the 1725 same as DtStart;TzID=US-Eastern:19980714T120000. 1727 8.1. Calendar Properties 1729 The Calendar Properties are attributes that apply to the iCalendar 1730 object, as a whole. These properties do not appear within a calendar 1731 component. They SHOULD be specified after the "BEGIN:VCALENDAR" 1732 property and prior to any calendar component. 1734 8.1.1. Calendar Scale 1736 Property Name: CALSCALE 1738 Purpose: This property defines the calendar scale used for the 1739 calendar information specified in the iCalendar object. 1741 Value Type: TEXT 1743 do Property Parameters: Non-standard property parameters can be 1744 specified on this property. 1746 Conformance: Property can be specified in an iCalendar object. The 1747 default value is "GREGORIAN". 1749 Description: This memo is based on the Gregorian calendar scale. The 1750 Gregorian calendar scale is assumed if this property is not specified 1751 in the iCalendar object. It is expected that other calendar scales 1752 will be defined in other specifications or by future versions of this 1753 memo. 1755 Formal Definition: The property is defined by the following notation: 1757 calscale = "CALSCALE" calparam ":" calvalue CRLF 1759 calparam = *(";" xparam) 1761 calvalue = "GREGORIAN" / iana-token 1763 Figure 35 1765 Example: The following is an example of this property: 1767 CALSCALE:GREGORIAN 1769 Figure 36 1771 8.1.2. Method 1773 Property Name: METHOD 1775 Purpose: This property defines the iCalendar object method associated 1776 with the calendar object. 1778 Value Type: TEXT 1780 Property Parameters: Non-standard property parameters can be 1781 specified on this property. 1783 Conformance: The property can be specified in an iCalendar object. 1785 Description: When used in a MIME message entity, the value of this 1786 property MUST be the same as the Content-Type "method" parameter 1787 value. This property can only appear once within the iCalendar 1788 object. If either the "METHOD" property or the Content-Type "method" 1789 parameter is specified, then the other MUST also be specified. 1791 No methods are defined by this specification. This is the subject of 1792 other specifications, such as the iCalendar Transport-independent 1793 Interoperability Protocol (iTIP) defined by [ITIP]. 1795 If this property is not present in the iCalendar object, then a 1796 scheduling transaction MUST NOT be assumed. In such cases, the 1797 iCalendar object is merely being used to transport a snapshot of some 1798 calendar information; without the intention of conveying a scheduling 1799 semantic. 1801 Formal Definition: The property is defined by the following notation: 1803 method = "METHOD" metparam ":" metvalue CRLF 1805 metparam = *(";" xparam) 1807 metvalue = iana-token 1809 Example: The following is a hypothetical example of this property to 1810 convey that the iCalendar object is a request for a meeting: 1812 METHOD:REQUEST 1814 Figure 38 1816 8.1.3. Product Identifier 1818 Property Name: PRODID 1820 Purpose: This property specifies the identifier for the product that 1821 created the iCalendar object. 1823 Value Type: TEXT 1825 Property Parameters: Non-standard property parameters can be 1826 specified on this property. 1828 Conformance: The property MUST be specified once in an iCalendar 1829 object. 1831 Description: The vendor of the implementation SHOULD assure that this 1832 is a globally unique identifier; using some technique such as an FPI 1833 value, as defined in [ISO 9070]. 1835 This property SHOULD not be used to alter the interpretation of an 1836 iCalendar object beyond the semantics specified in this memo. For 1837 example, it is not to be used to further the understanding of non- 1838 standard properties. 1840 Formal Definition: The property is defined by the following notation: 1842 prodid = "PRODID" pidparam ":" pidvalue CRLF 1843 pidparam = *(";" xparam) 1845 pidvalue = text 1846 ;Any text that describes the product and version 1847 ;and that is generally assured of being unique. 1849 Figure 39 1851 Example: The following is an example of this property. It does not 1852 imply that English is the default language. 1854 PRODID:-//ABC Corporation//NONSGML My Product//EN 1856 Figure 40 1858 8.1.4. Version 1860 Property Name: VERSION 1862 Purpose: This property specifies the identifier corresponding to the 1863 highest version number or the minimum and maximum range of the 1864 iCalendar specification that is required in order to interpret the 1865 iCalendar object. 1867 Value Type: TEXT 1869 Property Parameters: Non-standard property parameters can be 1870 specified on this property. 1872 Conformance: This property MUST be specified by an iCalendar object, 1873 but MUST only be specified once. 1875 Description: A value of "2.0" corresponds to this memo. 1877 Formal Definition: The property is defined by the following notation: 1879 version = "VERSION" verparam ":" vervalue CRLF 1881 verparam = *(";" xparam) 1883 vervalue = "2.0" ;This memo 1884 / maxver 1885 / (minver ";" maxver) 1887 minver = [A IANA registered iCalendar version identifier] 1888 ;Minimum iCalendar version needed to parse the iCalendar object 1890 maxver = [A IANA registered iCalendar version identifier] 1891 ;Maximum iCalendar version needed to parse the iCalendar object 1893 Example: The following is an example of this property: 1895 VERSION:2.0 1897 8.2. Descriptive Component Properties 1899 The following properties can appear within calendar components, as 1900 specified by each component property definition. These specify 1901 descriptive information about calendar components. 1903 8.2.1. Attachment 1905 Property Name: ATTACH 1907 Purpose: The property provides the capability to associate a document 1908 object with a calendar component. 1910 Value Type: The default value type for this property is URI. The 1911 value type can also be set to BINARY to indicate inline binary 1912 encoded content information. 1914 Property Parameters: Non-standard, inline encoding, format type and 1915 value data type property parameters can be specified on this 1916 property. 1918 Conformance: The property can be specified in a "VEVENT", "VTODO", 1919 "VJOURNAL" or "VALARM" calendar components. 1921 Description: The property can be specified within "VEVENT", "VTODO", 1922 "VJOURNAL", or "VALARM" calendar components. This property can be 1923 specified multiple times within an iCalendar object. 1925 Format Definition: The property is defined by the following notation: 1927 attach = "ATTACH" attparam ":" uri CRLF 1929 attach =/ "ATTACH" attparam ";" "ENCODING" "=" "BASE64" 1930 ";" "VALUE" "=" "BINARY" ":" binary 1932 attparam = *( 1934 ; the following is optional, 1935 ; but MUST NOT occur more than once 1937 (";" fmttypeparam) / 1939 ; the following is optional, 1940 ; and MAY occur more than once 1942 (";" xparam) 1944 ) 1946 Example: The following are examples of this property: 1948 ATTACH:CID:jsmith.part3.960817T083000.xyzMail@host1.com 1950 ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ 1951 reports/r-960812.ps 1953 8.2.2. Categories 1955 Property Name: CATEGORIES 1957 Purpose: This property defines the categories for a calendar 1958 component. 1960 Value Type: TEXT 1962 Property Parameters: Non-standard and language property parameters 1963 can be specified on this property. 1965 Conformance: The property can be specified within "VEVENT", "VTODO" 1966 or "VJOURNAL" calendar components. 1968 Description: This property is used to specify categories or subtypes 1969 of the calendar component. The categories are useful in searching 1970 for a calendar component of a particular type and category. Within 1971 the "VEVENT", "VTODO" or "VJOURNAL" calendar components, more than 1972 one category can be specified as a list of categories separated by 1973 the COMMA character (US-ASCII decimal 44). 1975 categories = "CATEGORIES" catparam ":" text *("," text) 1976 CRLF 1978 catparam = *( 1980 ; the following is optional, 1981 ; but MUST NOT occur more than once 1983 (";" languageparam ) / 1985 ; the following is optional, 1986 ; and MAY occur more than once 1988 (";" xparam) 1990 ) 1992 The following are examples of categories. 1994 CATEGORIES:APPOINTMENT,EDUCATION 1996 CATEGORIES:MEETING 1998 8.2.3. Classification 2000 Property Name: CLASS 2002 Purpose: This property defines the access classification for a 2003 calendar component. 2005 Value Type: TEXT 2007 Property Parameters: Non-standard property parameters can be 2008 specified on this property. 2010 Conformance: The property can be specified once in a "VEVENT", 2011 "VTODO" or "VJOURNAL" calendar components. 2013 Description: An access classification is only one component of the 2014 general security system within a calendar application. It provides a 2015 method of capturing the scope of the access the calendar owner 2016 intends for information within an individual calendar entry. The 2017 access classification of an individual iCalendar component is useful 2018 when measured along with the other security components of a calendar 2019 system (e.g., calendar user authentication, authorization, access 2020 rights, access role, etc.). Hence, the semantics of the individual 2021 access classifications cannot be completely defined by this memo 2022 alone. Additionally, due to the "blind" nature of most exchange 2023 processes using this memo, these access classifications cannot serve 2024 as an enforcement statement for a system receiving an iCalendar 2025 object. Rather, they provide a method for capturing the intention of 2026 the calendar owner for the access to the calendar component. 2028 Formal Definition: The property is defined by the following notation: 2030 class = "CLASS" classparam ":" classvalue CRLF 2032 classparam = *(";" xparam) 2034 classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token 2035 / x-name 2036 ;Default is PUBLIC 2038 Example: The following is an example of this property: 2040 CLASS:PUBLIC 2042 8.2.4. Comment 2044 Property Name: COMMENT 2046 Purpose: This property specifies non-processing information intended 2047 to provide a comment to the calendar user. 2049 Value Type: TEXT 2051 Property Parameters: Non-standard, alternate text representation and 2052 language property parameters can be specified on this property. 2054 Conformance: This property can be specified in "VEVENT", "VTODO", 2055 "VJOURNAL", "VTIMEZONE" or "VFREEBUSY" calendar components. 2057 Description: The property can be specified multiple times. 2059 Formal Definition: The property is defined by the following notation: 2061 comment = "COMMENT" commparam ":" text CRLF 2063 commparam = *( 2065 ; the following are optional, 2066 ; but MUST NOT occur more than once 2068 (";" altrepparam) / (";" languageparam) / 2070 ; the following is optional, 2071 ; and MAY occur more than once 2073 (";" xparam) 2075 ) 2077 Example: The following is an example of this property: 2079 COMMENT:The meeting really needs to include both ourselves 2080 and the customer. We can't hold this meeting without them. 2081 As a matter of fact\, the venue for the meeting ought to be at 2082 their site. - - John 2084 8.2.5. Description 2086 Property Name: DESCRIPTION 2088 Purpose: This property provides a more complete description of the 2089 calendar component, than that provided by the "SUMMARY" property. 2091 Value Type: TEXT 2093 Property Parameters: Non-standard, alternate text representation and 2094 language property parameters can be specified on this property. 2096 Conformance: The property can be specified in the "VEVENT", "VTODO", 2097 "VJOURNAL" or "VALARM" calendar components. The property can be 2098 specified multiple times only within a "VJOURNAL" calendar component. 2100 Description: This property is used in the "VEVENT" and "VTODO" to 2101 capture lengthy textual decriptions associated with the activity. 2103 This property is used in the "VJOURNAL" calendar component to capture 2104 one more textual journal entries. 2106 This property is used in the "VALARM" calendar component to capture 2107 the display text for a DISPLAY category of alarm, to capture the body 2108 text for an EMAIL category of alarm and to capture the argument 2109 string for a PROCEDURE category of alarm. 2111 Formal Definition: The property is defined by the following notation: 2113 description = "DESCRIPTION" descparam ":" text CRLF 2115 descparam = *( 2117 ; the following are optional, 2118 ; but MUST NOT occur more than once 2120 (";" altrepparam) / (";" languageparam) / 2122 ; the following is optional, 2123 ; and MAY occur more than once 2125 (";" xparam) 2127 ) 2129 Example: The following is an example of the property with formatted 2130 line breaks in the property value: 2132 DESCRIPTION:Meeting to provide technical review for "Phoenix" 2133 design.\n Happy Face Conference Room. Phoenix design team 2134 MUST attend this meeting.\n RSVP to team leader. 2136 The following is an example of the property with folding of long 2137 lines: 2139 DESCRIPTION:Last draft of the new novel is to be completed 2140 for the editor's proof today. 2142 8.2.6. Geographic Position 2144 Property Name: GEO 2146 Purpose: This property specifies information related to the global 2147 position for the activity specified by a calendar component. 2149 Value Type: FLOAT. The value MUST be two SEMICOLON separated FLOAT 2150 values. 2152 Property Parameters: Non-standard property parameters can be 2153 specified on this property. 2155 Conformance: This property can be specified in "VEVENT" or "VTODO" 2156 calendar components. 2158 Description: The property value specifies latitude and longitude, in 2159 that order (i.e., "LAT LON" ordering). The longitude represents the 2160 location east or west of the prime meridian as a positive or negative 2161 real number, respectively. The longitude and latitude values MAY be 2162 specified up to six decimal places, which will allow for accuracy to 2163 within one meter of geographical position. Receiving applications 2164 MUST accept values of this precision and MAY truncate values of 2165 greater precision. 2167 Values for latitude and longitude shall be expressed as decimal 2168 fractions of degrees. Whole degrees of latitude shall be represented 2169 by a two-digit decimal number ranging from 0 through 90. Whole 2170 degrees of longitude shall be represented by a decimal number ranging 2171 from 0 through 180. When a decimal fraction of a degree is 2172 specified, it shall be separated from the whole number of degrees by 2173 a decimal point. 2175 Latitudes north of the equator shall be specified by a plus sign (+), 2176 or by the absence of a minus sign (-), preceding the digits 2177 designating degrees. Latitudes south of the Equator shall be 2178 designated by a minus sign (-) preceding the digits designating 2179 degrees. A point on the Equator shall be assigned to the Northern 2180 Hemisphere. 2182 Longitudes east of the prime meridian shall be specified by a plus 2183 sign (+), or by the absence of a minus sign (-), preceding the digits 2184 designating degrees. Longitudes west of the meridian shall be 2185 designated by minus sign (-) preceding the digits designating 2186 degrees. A point on the prime meridian shall be assigned to the 2187 Eastern Hemisphere. A point on the 180th meridian shall be assigned 2188 to the Western Hemisphere. One exception to this last convention is 2189 permitted. For the special condition of describing a band of 2190 latitude around the earth, the East Bounding Coordinate data element 2191 shall be assigned the value +180 (180) degrees. 2193 Any spatial address with a latitude of +90 (90) or -90 degrees will 2194 specify the position at the North or South Pole, respectively. The 2195 component for longitude may have any legal value. 2197 With the exception of the special condition described above, this 2198 form is specified in Department of Commerce, 1986, Representation of 2199 geographic point locations for information interchange (Federal 2200 Information Processing Standard 70-1): Washington, Department of 2201 Commerce, National Institute of Standards and Technology. 2203 The simple formula for converting degrees-minutes-seconds into 2204 decimal degrees is: 2206 decimal = degrees + minutes/60 + seconds/3600. 2208 Formal Definition: The property is defined by the following notation: 2210 geo = "GEO" geoparam ":" geovalue CRLF 2212 geoparam = *(";" xparam) 2214 geovalue = float ";" float 2215 ;Latitude and Longitude components 2217 Example: The following is an example of this property: 2219 GEO:37.386013;-122.082932 2221 8.2.7. Location 2223 Property Name: LOCATION 2225 Purpose: The property defines the intended venue for the activity 2226 defined by a calendar component. 2228 Value Type: TEXT 2230 Property Parameters: Non-standard, alternate text representation and 2231 language property parameters can be specified on this property. 2233 Conformance: This property can be specified in "VEVENT" or "VTODO" 2234 calendar component. 2236 Description: Specific venues such as conference or meeting rooms may 2237 be explicitly specified using this property. An alternate 2238 representation may be specified that is a URI that points to 2239 directory information with more structured specification of the 2240 location. For example, the alternate representation may specify 2241 either an LDAP URI pointing to an LDAP server entry or a CID URI 2242 pointing to a MIME body part containing a vCard [RFC 2426] for the 2243 location. 2245 Format Definition: The property is defined by the following notation: 2247 location = "LOCATION locparam ":" text CRLF 2249 locparam = *( 2251 ; the following are optional, 2252 ; but MUST NOT occur more than once 2254 (";" altrepparam) / (";" languageparam) / 2256 ; the following is optional, 2257 ; and MAY occur more than once 2259 (";" xparam) 2261 ) 2263 Example: The following are some examples of this property: 2265 LOCATION:Conference Room - F123, Bldg. 002 2267 LOCATION;ALTREP="http://xyzcorp.com/conf-rooms/f123.vcf": 2268 Conference Room - F123, Bldg. 002 2270 8.2.8. Percent Complete 2272 Property Name: PERCENT-COMPLETE 2274 Purpose: This property is used by an assignee or delegatee of a to-do 2275 to convey the percent completion of a to-do to the Organizer. 2277 Value Type: INTEGER 2279 Property Parameters: Non-standard property parameters can be 2280 specified on this property. 2282 Conformance: This property can be specified in a "VTODO" calendar 2283 component. 2285 Description: The property value is a positive integer between zero 2286 and one hundred. A value of "0" indicates the to-do has not yet been 2287 started. A value of "100" indicates that the to-do has been 2288 completed. Integer values in between indicate the percent partially 2289 complete. 2291 When a to-do is assigned to multiple individuals, the property value 2292 indicates the percent complete for that portion of the to-do assigned 2293 to the assignee or delegatee. For example, if a to-do is assigned to 2294 both individuals "A" and "B". A reply from "A" with a percent 2295 complete of "70" indicates that "A" has completed 70% of the to-do 2296 assigned to them. A reply from "B" with a percent complete of "50" 2297 indicates "B" has completed 50% of the to-do assigned to them. 2299 Format Definition: The property is defined by the following notation: 2301 percent = "PERCENT-COMPLETE" pctparam ":" integer CRLF 2303 pctparam = *(";" xparam) 2305 Example: The following is an example of this property to show 39% 2306 completion: 2308 PERCENT-COMPLETE:39 2310 8.2.9. Priority 2312 Property Name: PRIORITY 2314 Purpose: The property defines the relative priority for a calendar 2315 component. 2317 Value Type: INTEGER 2319 Property Parameters: Non-standard property parameters can be 2320 specified on this property. 2322 Conformance: The property can be specified in a "VEVENT" or "VTODO" 2323 calendar component. 2325 Description: The priority is specified as an integer in the range 2326 zero to nine. A value of zero (US-ASCII decimal 48) specifies an 2327 undefined priority. A value of one (US-ASCII decimal 49) is the 2328 highest priority. A value of two (US-ASCII decimal 50) is the second 2329 highest priority. Subsequent numbers specify a decreasing ordinal 2330 priority. A value of nine (US-ASCII decimal 58) is the lowest 2331 priority. 2333 A CUA with a three-level priority scheme of "HIGH", "MEDIUM" and 2334 "LOW" is mapped into this property such that a property value in the 2335 range of one (US-ASCII decimal 49) to four (US-ASCII decimal 52) 2336 specifies "HIGH" priority. A value of five (US-ASCII decimal 53) is 2337 the normal or "MEDIUM" priority. A value in the range of six (US- 2338 ASCII decimal 54) to nine (US-ASCII decimal 58) is "LOW" priority. 2340 A CUA with a priority schema of "A1", "A2", "A3", "B1", "B2", ..., 2341 "C3" is mapped into this property such that a property value of one 2342 (US-ASCII decimal 49) specifies "A1", a property value of two (US- 2343 ASCII decimal 50) specifies "A2", a property value of three (US-ASCII 2344 decimal 51) specifies "A3", and so forth up to a property value of 9 2345 (US-ASCII decimal 58) specifies "C3". 2347 Other integer values are reserved for future use. 2349 Within a "VEVENT" calendar component, this property specifies a 2350 priority for the event. This property may be useful when more than 2351 one event is scheduled for a given time period. 2353 Within a "VTODO" calendar component, this property specified a 2354 priority for the to-do. This property is useful in prioritizing 2355 multiple action items for a given time period. 2357 Format Definition: The property is specified by the following 2358 notation: 2360 priority = "PRIORITY" prioparam ":" privalue CRLF 2361 ;Default is zero 2363 prioparam = *(";" xparam) 2365 privalue = integer ;Must be in the range [0..9] 2366 ; All other values are reserved for future use 2368 The following is an example of a property with the highest priority: 2370 PRIORITY:1 2372 The following is an example of a property with a next highest 2373 priority: 2375 PRIORITY:2 2377 Example: The following is an example of a property with no priority. 2378 This is equivalent to not specifying the "PRIORITY" property: 2380 PRIORITY:0 2382 8.2.10. Resources 2384 Property Name: RESOURCES 2386 Purpose: This property defines the equipment or resources anticipated 2387 for an activity specified by a calendar entity.. 2389 Value Type: TEXT 2391 Property Parameters: Non-standard, alternate text representation and 2392 language property parameters can be specified on this property. 2394 Conformance: This property can be specified in "VEVENT" or "VTODO" 2395 calendar component. 2397 Description: The property value is an arbitrary text. More than one 2398 resource can be specified as a list of resources separated by the 2399 COMMA character (US-ASCII decimal 44). 2401 Format Definition: The property is defined by the following notation: 2403 resources = "RESOURCES" resrcparam ":" text *("," text) CRLF 2405 resrcparam = *( 2407 ; the following are optional, 2408 ; but MUST NOT occur more than once 2410 (";" altrepparam) / (";" languageparam) / 2412 ; the following is optional, 2413 ; and MAY occur more than once 2415 (";" xparam) 2417 ) 2419 Example: The following is an example of this property: 2421 RESOURCES:EASEL,PROJECTOR,VCR 2423 RESOURCES;LANGUAGE=fr:1 raton-laveur 2425 8.2.11. Free/Busy Time Type 2427 Parameter Name: FBTYPE 2429 Purpose: To specify the free or busy time type. 2431 Description: The parameter specifies the free or busy time type. The 2432 value FREE indicates that the time interval is free for scheduling. 2433 The value BUSY indicates that the time interval is busy because one 2434 or more events have been scheduled for that interval. The value 2435 BUSY-UNAVAILABLE indicates that the time interval is busy and that 2436 the interval can not be scheduled. The value BUSY-TENTATIVE 2437 indicates that the time interval is busy because one or more events 2438 have been tentatively scheduled for that interval. If not specified 2439 on a property that allows this parameter, the default is BUSY. 2441 Format Definition: The property parameter is defined by the following 2442 notation: 2444 fbtypeparam = "FBTYPE" "=" ("FREE" / "BUSY" 2445 / "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE" 2446 / x-name 2447 ; Some experimental iCalendar data type. 2448 / iana-token) 2450 ; Some other IANA registered iCalendar data type. 2452 Example: The following is an example of this parameter on a FREEBUSY 2453 property. 2455 FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z 2457 8.2.12. Participation Status 2459 Parameter Name: PARTSTAT 2461 Purpose: To specify the participation status for the calendar user 2462 specified by the property. 2464 Description: This parameter can be specified on properties with a 2465 CAL-ADDRESS value type. The parameter identifies the participation 2466 status for the calendar user specified by the property value. The 2467 parameter values differ depending on whether they are associated with 2468 a group scheduled "VEVENT", "VTODO" or "VJOURNAL". The values MUST 2469 match one of the values allowed for the given calendar component. If 2470 not specified on a property that allows this parameter, the default 2471 value is NEEDS-ACTION. 2473 Format Definition: The property parameter is defined by the following 2474 notation: 2476 partstatparam = "PARTSTAT" "=" 2477 ("NEEDS-ACTION" ; Event needs action 2478 / "ACCEPTED" ; Event accepted 2479 / "DECLINED" ; Event declined 2481 / "TENTATIVE" ; Event tentatively 2482 ; accepted 2483 / "DELEGATED" ; Event delegated 2484 / x-name ; Experimental status 2485 / iana-token) ; Other IANA registered 2486 ; status 2487 ; These are the participation statuses for a "VEVENT". 2488 ; Default is NEEDS-ACTION 2489 partstatparam /= "PARTSTAT" "=" 2490 ("NEEDS-ACTION" ; To-do needs action 2491 / "ACCEPTED" ; To-do accepted 2492 / "DECLINED" ; To-do declined 2493 / "TENTATIVE" ; To-do tentatively 2494 ; accepted 2495 / "DELEGATED" ; To-do delegated 2496 / "COMPLETED" ; To-do completed. 2497 ; COMPLETED property has 2498 ;date/time completed. 2499 / "IN-PROCESS" ; To-do in process of 2500 ; being completed 2501 / x-name ; Experimental status 2502 / iana-token) ; Other IANA registered 2503 ; status 2504 ; These are the participation statuses for a "VTODO". Default is 2505 ; NEEDS-ACTION 2507 partstatparam /= "PARTSTAT" "=" 2508 ("NEEDS-ACTION" ; Journal needs action 2509 / "ACCEPTED" ; Journal accepted 2510 / "DECLINED" ; Journal declined 2511 / x-name ; Experimental status 2512 / iana-token) ; Other IANA registered 2513 ; status 2514 ; These are the participation statuses for a "VJOURNAL". 2515 ; Default is NEEDS-ACTION 2517 Example: 2519 ATTENDEE;PARTSTAT=DECLINED:MAILTO:jsmith@host.com 2521 8.2.13. Status 2523 Property Name: STATUS 2525 Purpose: This property defines the overall status or confirmation for 2526 the calendar component. 2528 Value Type: TEXT 2530 Property Parameters: Non-standard property parameters can be 2531 specified on this property. 2533 Conformance: This property can be specified in "VEVENT", "VTODO" or 2534 "VJOURNAL" calendar components. 2536 Description: In a group scheduled calendar component, the property is 2537 used by the "Organizer" to provide a confirmation of the event to the 2538 "Attendees". For example in a "VEVENT" calendar component, the 2539 "Organizer" can indicate that a meeting is tentative, confirmed or 2540 cancelled. In a "VTODO" calendar component, the "Organizer" can 2541 indicate that an action item needs action, is completed, is in 2542 process or being worked on, or has been cancelled. In a "VJOURNAL" 2543 calendar component, the "Organizer" can indicate that a journal entry 2544 is draft, final or has been cancelled or removed. 2546 Format Definition: The property is defined by the following notation: 2548 status = "STATUS" statparam] ":" statvalue CRLF 2550 statparam = *(";" xparam) 2552 statvalue = "TENTATIVE" ;Indicates event is 2553 ;tentative. 2554 / "CONFIRMED" ;Indicates event is 2555 ;definite. 2556 / "CANCELLED" ;Indicates event was 2557 ;cancelled. 2558 ;Status values for a "VEVENT" 2560 statvalue =/ "NEEDS-ACTION" ;Indicates to-do needs action. 2561 / "COMPLETED" ;Indicates to-do completed. 2562 / "IN-PROCESS" ;Indicates to-do in process of 2563 / "CANCELLED" ;Indicates to-do was cancelled. 2564 ;Status values for "VTODO". 2566 statvalue =/ "DRAFT" ;Indicates journal is draft. 2567 / "FINAL" ;Indicates journal is final. 2568 / "CANCELLED" ;Indicates journal is removed. 2569 ;Status values for "VJOURNAL". 2571 Example: The following is an example of this property for a "VEVENT" 2572 calendar component: 2574 STATUS:TENTATIVE 2576 The following is an example of this property for a "VTODO" calendar 2577 component: 2579 STATUS:NEEDS-ACTION 2581 The following is an example of this property for a "VJOURNAL" 2582 calendar component: 2584 STATUS:DRAFT 2586 8.2.14. Summary 2588 Property Name: SUMMARY 2590 Purpose: This property defines a short summary or subject for the 2591 calendar component. 2593 Value Type: TEXT 2594 Property Parameters: Non-standard, alternate text representation and 2595 language property parameters can be specified on this property. 2597 Conformance: The property can be specified in "VEVENT", "VTODO", 2598 "VJOURNAL" or "VALARM" calendar components. 2600 Description: This property is used in the "VEVENT", "VTODO" and 2601 "VJOURNAL" calendar components to capture a short, one line summary 2602 about the activity or journal entry. 2604 This property is used in the "VALARM" calendar component to capture 2605 the subject of an EMAIL category of alarm. 2607 Format Definition: The property is defined by the following notation: 2609 summary = "SUMMARY" summparam ":" text CRLF 2611 summparam = *( 2613 ; the following are optional, 2614 ; but MUST NOT occur more than once 2616 (";" altrepparam) / (";" languageparam) / 2618 ; the following is optional, 2619 ; and MAY occur more than once 2621 (";" xparam) 2623 ) 2625 Example: The following is an example of this property: 2627 SUMMARY:Department Party 2629 8.2.15. Date and Time Component Properties 2631 The following properties specify date and time related information in 2632 calendar components. 2634 8.2.15.1. Date/Time Completed 2636 Property Name: COMPLETED 2638 Purpose: This property defines the date and time that a to-do was 2639 actually completed. 2641 Value Type: DATE-TIME 2642 Property Parameters: Non-standard property parameters can be 2643 specified on this property. 2645 Conformance: The property can be specified in a "VTODO" calendar 2646 component. 2648 Description: The date and time MUST be in a UTC format. 2650 Format Definition: The property is defined by the following notation: 2652 completed = "COMPLETED" compparam ":" date-time CRLF 2654 compparam = *(";" xparam) 2656 Example: The following is an example of this property: 2658 COMPLETED:19960401T235959Z 2660 8.2.15.2. Date/Time End 2662 Property Name: DTEND 2664 Purpose: This property specifies the date and time that a calendar 2665 component ends. 2667 Value Type: The default value type is DATE-TIME. The value type can 2668 be set to a DATE value type. 2670 Property Parameters: Non-standard, value data type, time zone 2671 identifier property parameters can be specified on this property. 2673 Conformance: This property can be specified in "VEVENT" or 2674 "VFREEBUSY" calendar components. 2676 Description: Within the "VEVENT" calendar component, this property 2677 defines the date and time by which the event ends. The value MUST be 2678 later in time than the value of the "DTSTART" property. 2680 Within the "VFREEBUSY" calendar component, this property defines the 2681 end date and time for the free or busy time information. The time 2682 MUST be specified in the UTC time format. The value MUST be later in 2683 time than the value of the "DTSTART" property. 2685 Format Definition: The property is defined by the following notation: 2687 dtend = "DTEND" dtendparam":" dtendval CRLF 2689 dtendparam = *( 2691 ; the following are optional, 2692 ; but MUST NOT occur more than once 2694 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 2695 (";" tzidparam) / 2697 ; the following is optional, 2698 ; and MAY occur more than once 2700 (";" xparam) 2702 ) 2704 dtendval = date-time / date 2705 ;Value MUST match value type 2707 Example: The following is an example of this property: 2709 DTEND:19960401T235959Z 2711 DTEND;VALUE=DATE:19980704 2713 8.2.15.3. Date/Time Due 2715 Property Name: DUE 2717 Purpose: This property defines the date and time that a to-do is 2718 expected to be completed. 2720 Value Type: The default value type is DATE-TIME. The value type can 2721 be set to a DATE value type. 2723 Property Parameters: Non-standard, value data type, time zone 2724 identifier property parameters can be specified on this property. 2726 Conformance: The property can be specified once in a "VTODO" calendar 2727 component. 2729 Description: The value MUST be a date/time equal to or after the 2730 DTSTART value, if specified. 2732 Format Definition: The property is defined by the following notation: 2734 due = "DUE" dueparam":" dueval CRLF 2736 dueparam = *( 2737 ; the following are optional, 2738 ; but MUST NOT occur more than once 2740 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 2741 (";" tzidparam) / 2743 ; the following is optional, 2744 ; and MAY occur more than once 2746 *(";" xparam) 2748 ) 2750 dueval = date-time / date 2751 ;Value MUST match value type 2753 Example: The following is an example of this property: 2755 DUE:19980430T235959Z 2757 8.2.15.4. Date/Time Start 2759 Property Name: DTSTART 2761 Purpose: This property specifies when the calendar component begins. 2763 Value Type: The default value type is DATE-TIME. The time value MUST 2764 be one of the forms defined for the DATE-TIME value type. The value 2765 type can be set to a DATE value type. 2767 Property Parameters: Non-standard, value data type, time zone 2768 identifier property parameters can be specified on this property. 2770 Conformance: This property can be specified in the "VEVENT", "VTODO", 2771 "VFREEBUSY", or "VTIMEZONE" calendar components. 2773 Description: Within the "VEVENT" calendar component, this property 2774 defines the start date and time for the event. The property is 2775 REQUIRED in "VEVENT" calendar components. Events can have a start 2776 date/time but no end date/time. In that case, the event does not 2777 take up any time. 2779 Within the "VFREEBUSY" calendar component, this property defines the 2780 start date and time for the free or busy time information. The time 2781 MUST be specified in UTC time. 2783 Within the "VTIMEZONE" calendar component, this property defines the 2784 effective start date and time for a time zone specification. This 2785 property is REQUIRED within each STANDARD and DAYLIGHT part included 2786 in "VTIMEZONE" calendar components and MUST be specified as a local 2787 DATE-TIME without the "TZID" property parameter. 2789 Format Definition: The property is defined by the following notation: 2791 dtstart = "DTSTART" dtstparam ":" dtstval CRLF 2793 dtstparam = *( 2795 ; the following are optional, 2796 ; but MUST NOT occur more than once 2798 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 2799 (";" tzidparam) / 2801 ; the following is optional, 2802 ; and MAY occur more than once 2804 *(";" xparam) 2806 ) 2808 dtstval = date-time / date 2809 ;Value MUST match value type 2811 Example: The following is an example of this property: 2813 DTSTART:19980118T073000Z 2815 8.2.15.5. Duration 2817 Property Name: DURATION 2819 Purpose: The property specifies a positive duration of time. 2821 Value Type: DURATION 2822 Property Parameters: Non-standard property parameters can be 2823 specified on this property. 2825 Conformance: The property can be specified in "VEVENT", "VTODO", 2826 "VFREEBUSY" or "VALARM" calendar components. 2828 Description: In a "VEVENT" calendar component the property may be 2829 used to specify a duration of the event, instead of an explicit end 2830 date/time. In a "VTODO" calendar component the property may be used 2831 to specify a duration for the to-do, instead of an explicit due date/ 2832 time. In a "VFREEBUSY" calendar component the property may be used 2833 to specify the interval of free time being requested. In a "VALARM" 2834 calendar component the property may be used to specify the delay 2835 period prior to repeating an alarm. 2837 Format Definition: The property is defined by the following notation: 2839 duration = "DURATION" durparam ":" dur-value CRLF 2840 ;consisting of a positive duration of time. 2842 durparam = *(";" xparam) 2844 Example: The following is an example of this property that specifies 2845 an interval of time of 1 hour and zero minutes and zero seconds: 2847 DURATION:PT1H0M0S 2849 The following is an example of this property that specifies an 2850 interval of time of 15 minutes. 2852 DURATION:PT15M 2854 8.2.15.6. Free/Busy Time 2856 Property Name: FREEBUSY 2858 Purpose: The property defines one or more free or busy time 2859 intervals. 2861 Value Type: PERIOD. The date and time values MUST be in an UTC time 2862 format. 2864 Property Parameters: Non-standard or free/busy time type property 2865 parameters can be specified on this property. 2867 Conformance: The property can be specified in a "VFREEBUSY" calendar 2868 component. 2870 Property Parameter: "FBTYPE" and non-standard parameters can be 2871 specified on this property. 2873 Description: These time periods can be specified as either a start 2874 and end date-time or a start date-time and duration. The date and 2875 time MUST be a UTC time format. 2877 "FREEBUSY" properties within the "VFREEBUSY" calendar component 2878 SHOULD be sorted in ascending order, based on start time and then end 2879 time, with the earliest periods first. 2881 The "FREEBUSY" property can specify more than one value, separated by 2882 the COMMA character (US-ASCII decimal 44). In such cases, the 2883 "FREEBUSY" property values SHOULD all be of the same "FBTYPE" 2884 property parameter type (e.g., all values of a particular "FBTYPE" 2885 listed together in a single property). 2887 Format Definition: The property is defined by the following notation: 2889 freebusy = "FREEBUSY" fbparam ":" fbvalue 2890 CRLF 2892 fbparam = *( 2893 ; the following is optional, 2894 ; but MUST NOT occur more than once 2896 (";" fbtypeparam) / 2898 ; the following is optional, 2899 ; and MAY occur more than once 2901 (";" xparam) 2903 ) 2905 fbvalue = period *["," period] 2906 ;Time value MUST be in the UTC time format. 2908 Example: The following are some examples of this property: 2910 FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:19970308T160000Z/PT8H30M 2912 FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H 2914 FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H, 2915 19970308T230000Z/19970309T000000Z 2917 8.2.15.7. Time Transparency 2919 Property Name: TRANSP 2921 Purpose: This property defines whether an event is transparent or not 2922 to busy time searches. 2924 Value Type: TEXT 2926 Property Parameters: Non-standard property parameters can be 2927 specified on this property. 2929 Conformance: This property can be specified once in a "VEVENT" 2930 calendar component. 2932 Description: Time Transparency is the characteristic of an event that 2933 determines whether it appears to consume time on a calendar. Events 2934 that consume actual time for the individual or resource associated 2936 with the calendar SHOULD be recorded as OPAQUE, allowing them to be 2937 detected by free-busy time searches. Other events, which do not take 2938 up the individual's (or resource's) time SHOULD be recorded as 2939 TRANSPARENT, making them invisible to free-busy time searches. 2941 Format Definition: The property is specified by the following 2942 notation: 2944 transp = "TRANSP" tranparam ":" transvalue CRLF 2946 tranparam = *(";" xparam) 2948 transvalue = "OPAQUE" ;Blocks or opaque on busy time searches. 2949 / "TRANSPARENT" ;Transparent on busy time searches. 2950 ;Default value is OPAQUE 2952 Example: The following is an example of this property for an event 2953 that is transparent or does not block on free/busy time searches: 2955 TRANSP:TRANSPARENT 2957 The following is an example of this property for an event that is 2958 opaque or blocks on free/busy time searches: 2960 TRANSP:OPAQUE 2962 8.2.16. Time Zone Component Properties 2964 The following properties specify time zone information in calendar 2965 components. 2967 8.2.16.1. Time Zone Identifier 2969 Property Name: TZID 2971 Purpose: This property specifies the text value that uniquely 2972 identifies the "VTIMEZONE" calendar component. 2974 Value Type: TEXT 2976 Property Parameters: Non-standard property parameters can be 2977 specified on this property. 2979 Conformance: This property MUST be specified in a "VTIMEZONE" 2980 calendar component. 2982 Description: This is the label by which a time zone calendar 2983 component is referenced by any iCalendar properties whose data type 2984 is either DATE-TIME or TIME and not intended to specify a UTC or a 2985 "floating" time. The presence of the SOLIDUS character (US-ASCII 2986 decimal 47) as a prefix, indicates that this TZID represents an 2987 unique ID in a globally defined time zone registry (when such 2988 registry is defined). 2990 Note: This document does not define a naming convention for time zone 2991 identifiers. Implementers may want to use the naming conventions 2992 defined in existing time zone specifications such as the public- 2993 domain Olson database [TZ]. The specification of globally unique 2994 time zone identifiers is not addressed by this document and is left 2995 for future study. 2997 Format Definition: This property is defined by the following 2998 notation: 3000 tzid = "TZID" tzidpropparam ":" [tzidprefix] text CRLF 3002 tzidpropparam = *(";" xparam) 3004 ;tzidprefix = "/" 3005 ; Defined previously. Just listed here for reader convenience. 3007 Example: The following are examples of non-globally unique time zone 3008 identifiers: 3010 TZID:US-Eastern 3012 TZID:California-Los_Angeles 3014 The following is an example of a fictitious globally unique time zone 3015 identifier: 3017 TZID:/US-New_York-New_York 3019 8.2.16.2. Time Zone Name 3021 Property Name: TZNAME 3023 Purpose: This property specifies the customary designation for a time 3024 zone description. 3026 Value Type: TEXT 3028 Property Parameters: Non-standard and language property parameters 3029 can be specified on this property. 3031 Conformance: This property can be specified in a "VTIMEZONE" calendar 3032 component. 3034 Description: This property may be specified in multiple languages; in 3035 order to provide for different language requirements. 3037 Format Definition: This property is defined by the following 3038 notation: 3040 tzname = "TZNAME" tznparam ":" text CRLF 3042 tznparam = *( 3044 ; the following is optional, 3045 ; but MUST NOT occur more than once 3047 (";" languageparam) / 3049 ; the following is optional, 3050 ; and MAY occur more than once 3052 (";" xparam) 3054 ) 3056 Example: The following are example of this property: 3058 TZNAME:EST 3060 Figure 97 3062 The following is an example of this property when two different 3063 languages for the time zone name are specified: 3065 TZNAME;LANGUAGE=en:EST 3066 TZNAME;LANGUAGE=fr-CA:HNE 3068 8.2.16.3. Time Zone Offset From 3070 Property Name: TZOFFSETFROM 3072 Purpose: This property specifies the offset which is in use prior to 3073 this time zone observance. 3075 Value Type: UTC-OFFSET 3077 Property Parameters: Non-standard property parameters can be 3078 specified on this property. 3080 Conformance: This property MUST be specified in a "VTIMEZONE" 3081 calendar component. 3083 Description: This property specifies the offset which is in use prior 3084 to this time observance. It is used to calculate the absolute time 3085 at which the transition to a given observance takes place. This 3086 property MUST only be specified in a "VTIMEZONE" calendar component. 3087 A "VTIMEZONE" calendar component MUST include this property. The 3088 property value is a signed numeric indicating the number of hours and 3089 possibly minutes from UTC. Positive numbers represent time zones 3090 east of the prime meridian, or ahead of UTC. Negative numbers 3091 represent time zones west of the prime meridian, or behind UTC. 3093 Format Definition: The property is defined by the following notation: 3095 tzoffsetfrom = "TZOFFSETFROM" frmparam ":" utc-offset 3096 CRLF 3098 frmparam = *(";" xparam) 3100 Example: The following are examples of this property: 3102 TZOFFSETFROM:-0500 3104 TZOFFSETFROM:+1345 3106 Figure 100 3108 8.2.16.4. Time Zone Offset To 3110 Property Name: TZOFFSETTO 3112 Purpose: This property specifies the offset which is in use in this 3113 time zone observance. 3115 Value Type: UTC-OFFSET 3117 Property Parameters: Non-standard property parameters can be 3118 specified on this property. 3120 Conformance: This property MUST be specified in a "VTIMEZONE" 3121 calendar component. 3123 Description: This property specifies the offset which is in use in 3124 this time zone observance. It is used to calculate the absolute time 3125 for the new observance. The property value is a signed numeric 3126 indicating the number of hours and possibly minutes from UTC. 3127 Positive numbers represent time zones east of the prime meridian, or 3128 ahead of UTC. Negative numbers represent time zones west of the 3129 prime meridian, or behind UTC. 3131 Format Definition: The property is defined by the following notation: 3133 tzoffsetto = "TZOFFSETTO" toparam ":" utc-offset CRLF 3135 toparam = *(";" xparam) 3137 Example: The following are examples of this property: 3139 TZOFFSETTO:-0400 3141 TZOFFSETTO:+1245 3143 Figure 102 3145 8.2.16.5. Time Zone URL 3147 Property Name: TZURL 3149 Purpose: The TZURL provides a means for a VTIMEZONE component to 3150 point to a network location that can be used to retrieve an up-to- 3151 date version of itself. 3153 Value Type: URI 3155 Property Parameters: Non-standard property parameters can be 3156 specified on this property. 3158 Conformance: This property can be specified in a "VTIMEZONE" calendar 3159 component. 3161 Description: The TZURL provides a means for a VTIMEZONE component to 3162 point to a network location that can be used to retrieve an up-to- 3163 date version of itself. This provides a hook to handle changes 3164 government bodies impose upon time zone definitions. Retrieval of 3165 this resource results in an iCalendar object containing a single 3166 VTIMEZONE component and a METHOD property set to PUBLISH. 3168 Format Definition: The property is defined by the following notation: 3170 tzurl = "TZURL" tzurlparam ":" uri CRLF 3172 tzurlparam = *(";" xparam) 3174 Example: The following is an example of this property: 3176 TZURL:http://timezones.r.us.net/tz/US-California-Los_Angeles.ics 3178 8.2.17. Relationship Component Properties 3180 The following properties specify relationship information in calendar 3181 components. 3183 8.2.17.1. Attendee 3185 Property Name: ATTENDEE 3187 Purpose: The property defines an "Attendee" within a calendar 3188 component. 3190 Value Type: CAL-ADDRESS 3192 Property Parameters: Non-standard, language, calendar user type, 3193 group or list membership, participation role, participation status, 3194 RSVP expectation, delegatee, delegator, sent by, common name or 3195 directory entry reference property parameters can be specified on 3196 this property. 3198 Conformance: This property MUST be specified in an iCalendar object 3199 that specifies a group scheduled calendar entity. This property MUST 3200 NOT be specified in an iCalendar object when publishing the calendar 3201 information (e.g., NOT in an iCalendar object that specifies the 3202 publication of a calendar user's busy time, event, to-do or journal). 3203 This property is not specified in an iCalendar object that specifies 3204 only a time zone definition or that defines calendar entities that 3205 are not group scheduled entities, but are entities only on a single 3206 user's calendar. 3208 Description: The property MUST only be specified within calendar 3209 components to specify participants, non-participants and the chair of 3210 a group scheduled calendar entity. The property is specified within 3211 an "EMAIL" category of the "VALARM" calendar component to specify an 3212 email address that is to receive the email type of iCalendar alarm. 3214 The property parameter CN is for the common or displayable name 3215 associated with the calendar address; ROLE, for the intended role 3216 that the attendee will have in the calendar component; PARTSTAT, for 3217 the status of the attendee's participation; RSVP, for indicating 3218 whether the favor of a reply is requested; CUTYPE, to indicate the 3219 type of calendar user; MEMBER, to indicate the groups that the 3220 attendee belongs to; DELEGATED-TO, to indicate the calendar users 3221 that the original request was delegated to; and DELEGATED-FROM, to 3222 indicate whom the request was delegated from; SENT-BY, to indicate 3223 whom is acting on behalf of the ATTENDEE; and DIR, to indicate the 3224 URI that points to the directory information corresponding to the 3225 attendee. These property parameters can be specified on an 3226 "ATTENDEE" 3228 property in either a "VEVENT", "VTODO" or "VJOURNAL" calendar 3229 component. They MUST not be specified in an "ATTENDEE" property in a 3230 "VFREEBUSY" or "VALARM" calendar component. If the LANGUAGE property 3231 parameter is specified, the identified language applies to the CN 3232 parameter. 3234 A recipient delegated a request MUST inherit the RSVP and ROLE values 3235 from the attendee that delegated the request to them. 3237 Multiple attendees can be specified by including multiple "ATTENDEE" 3238 properties within the calendar component. 3240 Format Definition: The property is defined by the following notation: 3242 attendee = "ATTENDEE" attparam ":" cal-address CRLF 3244 attparam = *( 3246 ; the following are optional, 3247 ; but MUST NOT occur more than once 3249 (";" cutypeparam) / (";"memberparam) / 3250 (";" roleparam) / (";" partstatparam) / 3251 (";" rsvpparam) / (";" deltoparam) / 3252 (";" delfromparam) / (";" sentbyparam) / 3253 (";"cnparam) / (";" dirparam) / 3254 (";" languageparam) / 3256 ; the following is optional, 3257 ; and MAY occur more than once 3259 (";" xparam) 3261 ) 3263 Example: The following are examples of this property's use for a to- 3264 do: 3266 ORGANIZER:MAILTO:jsmith@host1.com 3267 ATTENDEE;MEMBER="MAILTO:DEV-GROUP@host2.com": 3268 MAILTO:joecool@host2.com 3269 ATTENDEE;DELEGATED-FROM="MAILTO:immud@host3.com": 3270 MAILTO:janedoe@host1.com 3272 The following is an example of this property used for specifying 3273 multiple attendees to an event: 3275 ORGANIZER:MAILTO:jsmith@host1.com 3276 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CN=Henry Cabot 3277 :MAILTO:hcabot@host2.com 3278 ATTENDEE;ROLE=REQ-PARTICIPANT;DELEGATED-FROM= 3279 "MAILTO:bob@host.com" 3280 ;PARTSTAT=ACCEPTED;CN=Jane Doe:MAILTO:jdoe@host1.com 3282 The following is an example of this property with a URI to the 3283 directory information associated with the attendee: 3285 ATTENDEE;CN=John Smith;DIR="ldap://host.com:6666/o=eDABC% 3286 20Industries,c=3DUS??(cn=3DBJim%20Dolittle)":MAILTO:jimdo@ 3287 host1.com 3289 The following is an example of this property with "delegatee" and 3290 "delegator" information for an event: 3292 ORGANIZER;CN=John Smith:MAILTO:jsmith@host.com 3293 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;DELEGATED-FROM= 3294 "MAILTO:iamboss@host2.com";CN=Henry Cabot:MAILTO:hcabot@ 3295 host2.com 3296 ATTENDEE;ROLE=NON-PARTICIPANT;PARTSTAT=DELEGATED;DELEGATED-TO= 3297 "MAILTO:hcabot@host2.com";CN=The Big Cheese:MAILTO:iamboss 3298 @host2.com 3299 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Jane Doe 3300 :MAILTO:jdoe@host1.com 3302 Example: The following is an example of this property's use when 3303 another calendar user is acting on behalf of the "Attendee": 3305 ATTENDEE;SENT-BY=MAILTO:jan_doe@host1.com;CN=John Smith:MAILTO: 3306 jsmith@host1.com 3308 8.2.17.2. Contact 3310 Property Name: CONTACT 3312 Purpose: The property is used to represent contact information or 3313 alternately a reference to contact information associated with the 3314 calendar component. 3316 Value Type: TEXT 3318 Property Parameters: Non-standard, alternate text representation and 3319 language property parameters can be specified on this property. 3321 Conformance: The property can be specified in a "VEVENT", "VTODO", 3322 "VJOURNAL" or "VFREEBUSY" calendar component. 3324 Description: The property value consists of textual contact 3325 information. An alternative representation for the property value 3326 can also be specified that refers to a URI pointing to an alternate 3327 form, such as a vCard [RFC 2426], for the contact information. 3329 Format Definition: The property is defined by the following notation: 3331 contact = "CONTACT" contparam ":" text CRLF 3333 contparam = *( 3334 ; the following are optional, 3335 ; but MUST NOT occur more than once 3337 (";" altrepparam) / (";" languageparam) / 3339 ; the following is optional, 3340 ; and MAY occur more than once 3342 (";" xparam) 3344 ) 3346 Example: The following is an example of this property referencing 3347 textual contact information: 3349 CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234 3351 The following is an example of this property with an alternate 3352 representation of a LDAP URI to a directory entry containing the 3353 contact information: 3355 CONTACT;ALTREP="ldap://host.com:6666/o=3DABC%20Industries\, 3356 c=3DUS??(cn=3DBJim%20Dolittle)":Jim Dolittle\, ABC Industries\, 3357 +1-919-555-1234 3359 The following is an example of this property with an alternate 3360 representation of a MIME body part containing the contact 3361 information, such as a vCard [RFC 2426] embedded in a [MIME-DIR] 3362 content-type: 3364 CONTACT;ALTREP="CID:part3.msg970930T083000SILVER@host.com":Jim 3365 Dolittle\, ABC Industries\, +1-919-555-1234 3367 The following is an example of this property referencing a network 3368 resource, such as a vCard [RFC 2426] object containing the contact 3369 information: 3371 CONTACT;ALTREP="http://host.com/pdi/jdoe.vcf":Jim 3372 Dolittle\, ABC Industries\, +1-919-555-1234 3374 8.2.17.3. Organizer 3376 Property Name: ORGANIZER 3378 Purpose: The property defines the organizer for a calendar component. 3380 Value Type: CAL-ADDRESS 3382 Property Parameters: Non-standard, language, common name, directory 3383 entry reference, sent by property parameters can be specified on this 3384 property. 3386 Conformance: This property MUST be specified in an iCalendar object 3387 that specifies a group scheduled calendar entity. This property MUST 3388 be specified in an iCalendar object that specifies the publication of 3389 a calendar user's busy time. This property MUST NOT be specified in 3390 an iCalendar object that specifies only a time zone definition or 3391 that defines calendar entities that are not group scheduled entities, 3392 but are entities only on a single user's calendar. 3394 Description: The property is specified within the "VEVENT", "VTODO", 3395 "VJOURNAL calendar components to specify the organizer of a group 3396 scheduled calendar entity. The property is specified within the 3397 "VFREEBUSY" calendar component to specify the calendar user 3398 requesting the free or busy time. When publishing a "VFREEBUSY" 3399 calendar component, the property is used to specify the calendar that 3400 the published busy time came from. 3402 The property has the property parameters CN, for specifying the 3403 common or display name associated with the "Organizer", DIR, for 3404 specifying a pointer to the directory information associated with the 3405 "Organizer", SENT-BY, for specifying another calendar user that is 3406 acting on behalf of the "Organizer". The non-standard parameters may 3407 also be specified on this property. If the LANGUAGE property 3408 parameter is specified, the identified language applies to the CN 3409 parameter value. 3411 Format Definition: The property is defined by the following notation: 3413 organizer = "ORGANIZER" orgparam ":" 3414 cal-address CRLF 3416 orgparam = *( 3418 ; the following are optional, 3420 ; but MUST NOT occur more than once 3422 (";" cnparam) / (";" dirparam) / (";" sentbyparam) / 3423 (";" languageparam) / 3425 ; the following is optional, 3426 ; and MAY occur more than once 3428 (";" xparam) 3430 ) 3432 Example: The following is an example of this property: 3434 ORGANIZER;CN=John Smith:MAILTO:jsmith@host1.com 3436 The following is an example of this property with a pointer to the 3437 directory information associated with the organizer: 3439 ORGANIZER;CN=JohnSmith;DIR="ldap://host.com:6666/o=3DDC%20Associ 3440 ates,c=3DUS??(cn=3DJohn%20Smith)":MAILTO:jsmith@host1.com 3442 The following is an example of this property used by another calendar 3443 user who is acting on behalf of the organizer, with responses 3444 intended to be sent back to the organizer, not the other calendar 3445 user: 3447 ORGANIZER;SENT-BY="MAILTO:jane_doe@host.com": 3448 MAILTO:jsmith@host1.com 3450 8.2.17.4. Participation Role 3452 Parameter Name: ROLE 3454 Purpose: To specify the participation role for the calendar user 3455 specified by the property. 3457 Description: This parameter can be specified on properties with a 3458 CAL-ADDRESS value type. The parameter specifies the participation 3459 role for the calendar user specified by the property in the group 3460 schedule calendar component. If not specified on a property that 3461 allows this parameter, the default value is REQ-PARTICIPANT. 3463 Format Definition: The property parameter is defined by the following 3464 notation: 3466 roleparam = "ROLE" "=" 3467 ("CHAIR" ; Indicates chair of the 3468 ; calendar entity 3469 / "REQ-PARTICIPANT" ; Indicates a participant whose 3470 ; participation is required 3471 / "OPT-PARTICIPANT" ; Indicates a participant whose 3472 ; participation is optional 3473 / "NON-PARTICIPANT" ; Indicates a participant who is 3474 ; copied for information 3475 ; purposes only 3476 / x-name ; Experimental role 3477 / iana-token) ; Other IANA role 3478 ; Default is REQ-PARTICIPANT 3480 Example: 3482 ATTENDEE;ROLE=CHAIR:MAILTO:mrbig@host.com 3484 Figure 121 3486 8.2.17.5. Sent By 3488 Parameter Name: SENT-BY 3490 Purpose: To specify the calendar user that is acting on behalf of the 3491 calendar user specified by the property. 3493 Description: This parameter can be specified on properties with a 3494 CAL-ADDRESS value type. The parameter specifies the calendar user 3495 that is acting on behalf of the calendar user specified by the 3496 property. The parameter value MUST be a MAILTO URI as defined in 3497 [RFC 1738]. The individual calendar address parameter values MUST 3498 each be specified in a quoted-string. 3500 Format Definition: The property parameter is defined by the following 3501 notation: 3503 sentbyparam = "SENT-BY" "=" DQUOTE cal-address DQUOTE 3505 Example: 3507 ORGANIZER;SENT-BY:"MAILTO:sray@host.com":MAILTO:jsmith@host.com 3509 Figure 123 3511 8.2.17.6. Delegators 3513 Parameter Name: DELEGATED-FROM 3515 Purpose: To specify the calendar users that have delegated their 3516 participation to the calendar user specified by the property. 3518 Description: This parameter can be specified on properties with a 3519 CAL-ADDRESS value type. This parameter can be specified on a 3520 property that has a value type of calendar address. This parameter 3521 specifies those calendar uses that have delegated their participation 3522 in a group scheduled event or to-do to the calendar user specified by 3523 the property. The value MUST be a MAILTO URI as defined in [RFC 3524 1738]. The individual calendar address parameter values MUST each be 3525 specified in a quoted-string. 3527 Format Definition: The property parameter is defined by the following 3528 notation: 3530 delfromparam = "DELEGATED-FROM" "=" 3531 DQUOTE cal-address DQUOTE 3532 *("," DQUOTE cal-address DQUOTE) 3534 Example: 3536 ATTENDEE;DELEGATED-FROM="MAILTO:jsmith@host.com":MAILTO: 3537 jdoe@host.com 3539 Figure 125 3541 8.2.17.7. Delegatees 3543 Parameter Name: DELEGATED-TO 3545 Purpose: To specify the calendar users to whom the calendar user 3546 specified by the property has delegated participation. 3548 Description: This parameter can be specified on properties with a 3549 CAL-ADDRESS value type. This parameter specifies those calendar 3550 users whom have been delegated participation in a group scheduled 3551 event or to-do by the calendar user specified by the property. The 3552 value MUST be a MAILTO URI as defined in [RFC 1738]. The individual 3553 calendar address parameter values MUST each be specified in a quoted- 3554 string. 3556 Format Definition: The property parameter is defined by the following 3557 notation: 3559 deltoparam = "DELEGATED-TO" "=" DQUOTE cal-address DQUOTE 3560 *("," DQUOTE cal-address DQUOTE) 3562 Example: 3564 ATTENDEE;DELEGATED-TO="MAILTO:jdoe@host.com","MAILTO:jqpublic@ 3565 host.com":MAILTO:jsmith@host.com 3567 8.2.17.8. Common Name 3569 Parameter Name: CN 3571 Purpose: To specify the common name to be associated with the 3572 calendar user specified by the property. 3574 Description: This parameter can be specified on properties with a 3575 CAL-ADDRESS value type. The parameter specifies the common name to 3576 be associated with the calendar user specified by the property. The 3577 parameter value is text. The parameter value can be used for display 3578 text to be associated with the calendar address specified by the 3579 property. 3581 Format Definition: The property parameter is defined by the following 3582 notation: 3584 cnparam = "CN" "=" param-value 3586 Example: 3588 ORGANIZER;CN="John Smith":MAILTO:jsmith@host.com 3590 8.2.18. Calendar User Type 3592 Parameter Name: CUTYPE 3594 Purpose: To specify the type of calendar user specified by the 3595 property. 3597 Description: This parameter can be specified on properties with a 3598 CAL-ADDRESS value type. The parameter identifies the type of 3599 calendar user specified by the property. If not specified on a 3600 property that allows this parameter, the default is INDIVIDUAL. 3602 Format Definition: The property parameter is defined by the following 3603 notation: 3605 cutypeparam = "CUTYPE" "=" 3606 ("INDIVIDUAL" ; An individual 3607 / "GROUP" ; A group of individuals 3608 / "RESOURCE" ; A physical resource 3609 / "ROOM" ; A room resource 3610 / "UNKNOWN" ; Otherwise not known 3611 / x-name ; Experimental type 3612 / iana-token) ; Other IANA registered 3613 ; type 3614 ; Default is INDIVIDUAL 3616 Example: 3618 ATTENDEE;CUTYPE=GROUP:MAILTO:ietf-calsch@imc.org 3620 8.2.19. Directory Entry Reference 3622 Parameter Name: DIR 3624 Purpose: To specify reference to a directory entry associated with 3625 the calendar user specified by the property. 3627 Description: This parameter can be specified on properties with a 3628 CAL-ADDRESS value type. The parameter specifies a reference to the 3629 directory entry associated with the calendar user specified by the 3630 property. The parameter value is a URI. The individual URI 3631 parameter values MUST each be specified in a quoted-string. 3633 Format Definition: The property parameter is defined by the following 3634 notation: 3636 dirparam = "DIR" "=" DQUOTE uri DQUOTE 3638 Example: 3640 ORGANIZER;DIR="ldap://host.com:6666/o=eDABC%20Industries, 3641 c=3DUS??(cn=3DBJim%20Dolittle)":MAILTO:jimdo@host1.com 3643 8.2.20. Recurrence ID 3645 Property Name: RECURRENCE-ID 3647 Purpose: This property is used in conjunction with the "UID" and 3648 "SEQUENCE" property to identify a specific instance of a recurring 3649 "VEVENT", "VTODO" or "VJOURNAL" calendar component. The property 3650 value is the effective value of the "DTSTART" property of the 3651 recurrence instance. 3653 Value Type: The default value type for this property is DATE-TIME. 3654 The time format can be any of the valid forms defined for a DATE-TIME 3655 value type. See DATE-TIME value type definition for specific 3656 interpretations of the various forms. The value type can be set to 3657 DATE. 3659 Property Parameters: Non-standard property, value data type, time 3660 zone identifier and recurrence identifier range parameters can be 3661 specified on this property. 3663 Conformance: This property can be specified in an iCalendar object 3664 containing a recurring calendar component. 3666 Description: The full range of calendar components specified by a 3667 recurrence set is referenced by referring to just the "UID" property 3668 value corresponding to the calendar component. The "RECURRENCE-ID" 3669 property allows the reference to an individual instance within the 3670 recurrence set. 3672 If the value of the "DTSTART" property is a DATE type value, then the 3673 value MUST be the calendar date for the recurrence instance. 3675 The date/time value is set to the time when the original recurrence 3676 instance would occur; meaning that if the intent is to change a 3677 Friday meeting to Thursday, the date/time is still set to the 3678 original Friday meeting. 3680 The "RECURRENCE-ID" property is used in conjunction with the "UID" 3681 and "SEQUENCE" property to identify a particular instance of a 3682 recurring event, to-do or journal. For a given pair of "UID" and 3683 "SEQUENCE" property values, the "RECURRENCE-ID" value for a 3684 recurrence instance is fixed. When the definition of the recurrence 3685 set for a calendar component changes, and hence the "SEQUENCE" 3686 property value changes, the "RECURRENCE-ID" for a given recurrence 3687 instance might also change.The "RANGE" parameter is used to specify 3688 the effective range of recurrence instances from the instance 3689 specified by the "RECURRENCE-ID" property value. The default value 3690 for the range parameter is the single recurrence instance only. The 3691 value can also be "THISANDPRIOR" to indicate a range defined by the 3692 given recurrence instance and all prior instances or the value can be 3693 "THISANDFUTURE" to indicate a range defined by the given recurrence 3694 instance and all subsequent instances. 3696 Format Definition: The property is defined by the following notation: 3698 recurid = "RECURRENCE-ID" ridparam ":" ridval CRLF 3700 ridparam = *( 3702 ; the following are optional, 3703 ; but MUST NOT occur more than once 3705 (";" "VALUE" "=" ("DATE-TIME" / "DATE)) / 3706 (";" tzidparam) / (";" rangeparam) / 3707 ; the following is optional, 3708 ; and MAY occur more than once 3710 (";" xparam) 3712 ) 3714 ridval = date-time / date 3715 ;Value MUST match value type 3717 Example: The following are examples of this property: 3719 RECURRENCE-ID;VALUE=DATE:19960401 3721 RECURRENCE-ID;RANGE=THISANDFUTURE:19960120T120000Z 3723 Figure 135 3725 8.2.21. Related To 3727 Property Name: RELATED-TO 3729 Purpose: The property is used to represent a relationship or 3730 reference between one calendar component and another. 3732 Value Type: TEXT 3734 Property Parameters: Non-standard and relationship type property 3735 parameters can be specified on this property. 3737 Conformance: The property can be specified one or more times in the 3738 "VEVENT", "VTODO" or "VJOURNAL" calendar components. 3740 Description: The property value consists of the persistent, globally 3741 unique identifier of another calendar component. This value would be 3742 represented in a calendar component by the "UID" property. 3744 By default, the property value points to another calendar component 3745 that has a PARENT relationship to the referencing object. The 3746 "RELTYPE" property parameter is used to either explicitly state the 3747 default PARENT relationship type to the referenced calendar component 3748 or to override the default PARENT relationship type and specify 3749 either a CHILD or SIBLING relationship. The PARENT relationship 3750 indicates that the calendar component is a subordinate of the 3751 referenced calendar component. The CHILD relationship indicates that 3752 the calendar component is a superior of the referenced calendar 3753 component. The SIBLING relationship indicates that the calendar 3754 component is a peer of the referenced calendar component. 3756 Changes to a calendar component referenced by this property can have 3757 an implicit impact on the related calendar component. For example, 3758 if a group event changes its start or end date or time, then the 3759 related, dependent events will need to have their start and end dates 3760 changed in a corresponding way. Similarly, if a PARENT calendar 3761 component is canceled or deleted, then there is an implied impact to 3762 the related CHILD calendar components. This property is intended 3763 only to provide information on the relationship of calendar 3764 components. It is up to the target calendar system to maintain any 3765 property implications of this relationship. 3767 Format Definition: The property is defined by the following notation: 3769 related = "RELATED-TO" [relparam] ":" text CRLF 3771 relparam = *( 3773 ; the following is optional, 3774 ; but MUST NOT occur more than once 3776 (";" reltypeparam) / 3778 ; the following is optional, 3779 ; and MAY occur more than once 3781 (";" xparm) 3783 ) 3785 The following is an example of this property: 3787 RELATED-TO:jsmith.part7.19960817T083000.xyzMail@host3.com 3789 RELATED-TO:19960401-080045-4000F192713-0052@host1.com 3791 Figure 137 3793 8.2.22. Uniform Resource Locator 3795 Property Name: URL 3797 Purpose: This property defines a Uniform Resource Locator (URL) 3798 associated with the iCalendar object. 3800 Value Type: URI 3802 Property Parameters: Non-standard property parameters can be 3803 specified on this property. 3805 Conformance: This property can be specified once in the "VEVENT", 3806 "VTODO", "VJOURNAL" or "VFREEBUSY" calendar components. 3808 Description: This property may be used in a calendar component to 3809 convey a location where a more dynamic rendition of the calendar 3810 information associated with the calendar component can be found. 3811 This memo does not attempt to standardize the form of the URI, nor 3812 the format of the resource pointed to by the property value. If the 3813 URL property and Content-Location MIME header are both specified, 3814 they MUST point to the same resource. 3816 Format Definition: The property is defined by the following notation: 3818 url = "URL" urlparam ":" uri CRLF 3820 urlparam = *(";" xparam) 3822 Example: The following is an example of this property: 3824 URL:http://abc.com/pub/calendars/jsmith/mytime.ics 3826 Figure 139 3828 8.2.23. Unique Identifier 3830 Property Name: UID 3832 Purpose: This property defines the persistent, globally unique 3833 identifier for the calendar component. 3835 Value Type: TEXT 3837 Property Parameters: Non-standard property parameters can be 3838 specified on this property. 3840 Conformance: The property MUST be specified in the "VEVENT", "VTODO", 3841 "VJOURNAL" or "VFREEBUSY" calendar components. 3843 Description: The UID itself MUST be a globally unique identifier. 3844 The generator of the identifier MUST guarantee that the identifier is 3845 unique. There are several algorithms that can be used to accomplish 3846 this. The identifier is RECOMMENDED to be the identical syntax to 3847 the [RFC 822] addr-spec. A good method to assure uniqueness is to 3848 put the domain name or a domain literal IP address of the host on 3849 which the identifier was created on the right hand side of the "@", 3850 and on the left hand side, put a combination of the current calendar 3851 date and time of day (i.e., formatted in as a DATE-TIME value) along 3852 with some other currently unique (perhaps sequential) identifier 3853 available on the system (for example, a process id number). Using a 3854 date/time value on the left hand side and a domain name or domain 3855 literal on the right hand side makes it possible to guarantee 3856 uniqueness since no two hosts should be using the same domain name or 3857 IP address at the same time. Though other algorithms will work, it 3858 is RECOMMENDED that the right hand side contain some domain 3859 identifier (either of the host itself or otherwise) such that the 3860 generator of the message identifier can guarantee the uniqueness of 3861 the left hand side within the scope of that domain. 3863 This is the method for correlating scheduling messages with the 3864 referenced "VEVENT", "VTODO", or "VJOURNAL" calendar component. 3866 The full range of calendar components specified by a recurrence set 3867 is referenced by referring to just the "UID" property value 3868 corresponding to the calendar component. The "RECURRENCE-ID" 3869 property allows the reference to an individual instance within the 3870 recurrence set. 3872 This property is an important method for group scheduling 3873 applications to match requests with later replies, modifications or 3874 deletion requests. Calendaring and scheduling applications MUST 3875 generate this property in "VEVENT", "VTODO" and "VJOURNAL" calendar 3876 components to assure interoperability with other group scheduling 3877 applications. This identifier is created by the calendar system that 3878 generates an iCalendar object. 3880 Implementations MUST be able to receive and persist values of at 3881 least 255 characters for this property. 3883 Format Definition: The property is defined by the following notation: 3885 uid = "UID" uidparam ":" text CRLF 3887 uidparam = *(";" xparam) 3889 Example: The following is an example of this property: 3891 UID:19960401T080045Z-4000F192713-0052@host1.com 3893 Figure 141 3895 8.2.24. Relationship Type 3897 Parameter Name: RELTYPE 3899 Purpose: To specify the type of hierarchical relationship associated 3900 with the calendar component specified by the property. 3902 Description: This parameter can be specified on a property that 3903 references another related calendar. The parameter specifies the 3904 hierarchical relationship type of the calendar component referenced 3905 by the property. The parameter value can be PARENT, to indicate that 3906 the referenced calendar component is a superior of calendar 3907 component; CHILD to indicate that the referenced calendar component 3908 is a subordinate of the calendar component; SIBLING to indicate that 3909 the referenced calendar component is a peer of the calendar 3910 component. If this parameter is not specified on an allowable 3911 property, the default relationship type is PARENT. 3913 Format Definition: The property parameter is defined by the following 3914 notation: 3916 reltypeparam = "RELTYPE" "=" 3917 ("PARENT" ; Parent relationship. Default. 3918 / "CHILD" ; Child relationship 3919 / "SIBLING ; Sibling relationship 3920 / iana-token ; Some other IANA registered 3921 ; iCalendar relationship type 3922 / x-name) ; A non-standard, experimental 3923 ; relationship type 3925 Example: 3927 RELATED-TO;RELTYPE=SIBLING:<19960401-080045-4000F192713 3928 @host.com> 3930 Figure 143 3932 8.3. Recurrence Component Properties 3934 The following properties specify recurrence information in calendar 3935 components. 3937 8.3.1. Exception Date/Times 3939 Property Name: EXDATE 3941 Purpose: This property defines the list of date/time exceptions for a 3942 recurring calendar component. 3944 Value Type: The default value type for this property is DATE-TIME. 3945 The value type can be set to DATE. 3947 Property Parameters: Non-standard, value data type and time zone 3948 identifier property parameters can be specified on this property. 3950 Conformance: This property can be specified in an iCalendar object 3951 that includes a recurring calendar component. 3953 Description: The exception dates, if specified, are used in computing 3954 the recurrence set. The recurrence set is the complete set of 3955 recurrence instances for a calendar component. The recurrence set is 3956 generated by considering the initial "DTSTART" property along with 3957 the "RRULE", "RDATE", "EXDATE" and "EXRULE" properties contained 3958 within the iCalendar object. The "DTSTART" property defines the 3959 first instance in the recurrence set. Multiple instances of the 3960 "RRULE" and "EXRULE" properties can also be specified to define more 3961 sophisticated recurrence sets. The final recurrence set is generated 3962 by gathering all of the start date-times generated by any of the 3963 specified "RRULE" and "RDATE" properties, and then excluding any 3964 start date and times which fall within the union of start date and 3965 times generated by any specified "EXRULE" and "EXDATE" properties. 3966 This implies that start date and times within exclusion related 3967 properties (i.e., "EXDATE" and "EXRULE") take precedence over those 3968 specified by inclusion properties (i.e., "RDATE" and "RRULE"). Where 3969 duplicate instances are generated by the "RRULE" and "RDATE" 3970 properties, only one recurrence is considered. Duplicate instances 3971 are ignored. 3973 The "EXDATE" property can be used to exclude the value specified in 3974 "DTSTART". However, in such cases the original "DTSTART" date MUST 3975 still be maintained by the calendaring and scheduling system because 3976 the original "DTSTART" value has inherent usage dependencies by other 3977 properties such as the "RECURRENCE-ID". 3979 Format Definition: The property is defined by the following notation: 3981 exdate = "EXDATE" exdtparam ":" exdtval *("," exdtval) CRLF 3983 exdtparam = *( 3985 ; the following are optional, 3986 ; but MUST NOT occur more than once 3988 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 3990 (";" tzidparam) / 3992 ; the following is optional, 3993 ; and MAY occur more than once 3995 (";" xparam) 3997 ) 3999 exdtval = date-time / date 4000 ;Value MUST match value type 4002 Example: The following is an example of this property: 4004 EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z 4006 Figure 145 4008 8.3.2. Exception Rule 4010 Property Name: EXRULE 4012 Purpose: This property defines a rule or repeating pattern for an 4013 exception to a recurrence set. 4015 Value Type: RECUR 4017 Property Parameters: Non-standard property parameters can be 4018 specified on this property. 4020 Conformance: This property can be specified in "VEVENT", "VTODO" or 4021 "VJOURNAL" calendar components. 4023 Description: The exception rule, if specified, is used in computing 4024 the recurrence set. The recurrence set is the complete set of 4025 recurrence instances for a calendar component. The recurrence set is 4026 generated by considering the initial "DTSTART" property along with 4027 the "RRULE", "RDATE", "EXDATE" and "EXRULE" properties contained 4028 within the iCalendar object. The "DTSTART" defines the first 4029 instance in the recurrence set. Multiple instances of the "RRULE" 4030 and "EXRULE" properties can also be specified to define more 4031 sophisticated recurrence sets. The final recurrence set is generated 4032 by gathering all of the start date-times generated by any of the 4033 specified "RRULE" and "RDATE" properties, and excluding any start 4034 date and times which fall within the union of start date and times 4035 generated by any specified "EXRULE" and "EXDATE" properties. This 4036 implies that start date and times within exclusion related properties 4037 (i.e., "EXDATE" and "EXRULE") take precedence over those specified by 4038 inclusion 4040 properties (i.e., "RDATE" and "RRULE"). Where duplicate instances 4041 are generated by the "RRULE" and "RDATE" properties, only one 4042 recurrence is considered. Duplicate instances are ignored. 4044 The "EXRULE" property can be used to exclude the value specified in 4045 "DTSTART". However, in such cases the original "DTSTART" date MUST 4046 still be maintained by the calendaring and scheduling system because 4047 the original "DTSTART" value has inherent usage dependencies by other 4048 properties such as the "RECURRENCE-ID". 4050 Format Definition: The property is defined by the following notation: 4052 exrule = "EXRULE" exrparam ":" recur CRLF 4054 exrparam = *(";" xparam) 4056 Example: The following are examples of this property. Except every 4057 other week, on Tuesday and Thursday for 4 occurrences: 4059 EXRULE:FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,TH 4061 Figure 147 4062 Except daily for 10 occurrences: 4064 EXRULE:FREQ=DAILY;COUNT=10 4066 Except yearly in June and July for 8 occurrences: 4068 EXRULE:FREQ=YEARLY;COUNT=8;BYMONTH=6,7 4070 8.3.3. Recurrence Date/Times 4072 Property Name: RDATE 4074 Purpose: This property defines the list of date/times for a 4075 recurrence set. 4077 Value Type: The default value type for this property is DATE-TIME. 4078 The value type can be set to DATE or PERIOD. 4080 Property Parameters: Non-standard, value data type and time zone 4081 identifier property parameters can be specified on this property. 4083 Conformance: The property can be specified in "VEVENT", "VTODO", 4084 "VJOURNAL" or "VTIMEZONE" calendar components. 4086 Description: This property can appear along with the "RRULE" property 4087 to define an aggregate set of repeating occurrences. When they both 4088 appear in an iCalendar object, the recurring events are defined by 4089 the union of occurrences defined by both the "RDATE" and "RRULE". 4091 The recurrence dates, if specified, are used in computing the 4092 recurrence set. The recurrence set is the complete set of recurrence 4093 instances for a calendar component. The recurrence set is generated 4094 by considering the initial "DTSTART" property along with the "RRULE", 4095 "RDATE", "EXDATE" and "EXRULE" properties contained within the 4096 iCalendar object. The "DTSTART" property defines the first instance 4097 in the recurrence set. Multiple instances of the "RRULE" and 4098 "EXRULE" properties can also be specified to define more 4099 sophisticated recurrence sets. The final recurrence set is generated 4100 by gathering all of the start date/times generated by any of the 4101 specified "RRULE" and "RDATE" properties, and excluding any start 4102 date/times which fall within the union of start date/times generated 4103 by any specified "EXRULE" and "EXDATE" properties. This implies that 4104 start date/times within exclusion related properties (i.e., "EXDATE" 4105 and "EXRULE") take precedence over those specified by inclusion 4106 properties (i.e., "RDATE" and "RRULE"). Where duplicate instances 4107 are generated by the "RRULE" and "RDATE" properties, only one 4108 recurrence is considered. Duplicate instances are ignored. 4110 Format Definition: The property is defined by the following notation: 4112 rdate = "RDATE" rdtparam ":" rdtval *("," rdtval) CRLF 4114 rdtparam = *( 4116 ; the following are optional, 4117 ; but MUST NOT occur more than once 4119 (";" "VALUE" "=" ("DATE-TIME" / "DATE" / "PERIOD")) / 4120 (";" tzidparam) / 4122 ; the following is optional, 4123 ; and MAY occur more than once 4125 (";" xparam) 4127 ) 4129 rdtval = date-time / date / period 4130 ;Value MUST match value type 4132 Example: The following are examples of this property: 4134 RDATE:19970714T123000Z 4136 RDATE;TZID=US-EASTERN:19970714T083000 4138 RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z, 4139 19960404T010000Z/PT3H 4141 RDATE;VALUE=DATE:19970101,19970120,19970217,19970421 4142 19970526,19970704,19970901,19971014,19971128,19971129,19971225 4144 Figure 151 4146 8.3.4. Recurrence Identifier Range 4148 Parameter Name: RANGE 4150 Purpose: To specify the effective range of recurrence instances from 4151 the instance specified by the recurrence identifier specified by the 4152 property. 4154 Description: The parameter can be specified on a property that 4155 specifies a recurrence identifier. The parameter specifies the 4156 effective range of recurrence instances that is specified by the 4157 property. The effective range is from the recurrence identified 4158 specified by the property. If this parameter is not specified an 4159 allowed property, then the default range is the single instance 4160 specified by the recurrence identifier value of the property. The 4161 parameter value can be "THISANDPRIOR" to indicate a range defined by 4162 the recurrence identified value of the property and all prior 4163 instances. The parameter value can also be "THISANDFUTURE" to 4164 indicate a range defined by the recurrence identifier and all 4165 subsequent instances. 4167 Format Definition: The property parameter is defined by the following 4169 rangeparam = "RANGE" "=" ("THISANDPRIOR" 4170 ; To specify all instances prior to the recurrence identifier 4171 / "THISANDFUTURE") 4172 ; To specify the instance specified by the recurrence identifier 4173 ; and all subsequent recurrence instances 4175 Example: 4177 RECURRENCE-ID;RANGE=THISANDPRIOR:19980401T133000Z 4179 Figure 153 4181 8.3.5. Recurrence Rule 4183 Property Name: RRULE 4185 Purpose: This property defines a rule or repeating pattern for 4186 recurring events, to-dos, or time zone definitions. 4188 Value Type: RECUR 4190 Property Parameters: Non-standard property parameters can be 4191 specified on this property. 4193 Conformance: This property can be specified one or more times in 4194 recurring "VEVENT", "VTODO" and "VJOURNAL" calendar components. It 4195 can also be specified once in each STANDARD or DAYLIGHT sub-component 4196 of the "VTIMEZONE" calendar component. 4198 Description: The recurrence rule, if specified, is used in computing 4199 the recurrence set. The recurrence set is the complete set of 4200 recurrence instances for a calendar component. The recurrence set is 4201 generated by considering the initial "DTSTART" property along with 4202 the "RRULE", "RDATE", "EXDATE" and "EXRULE" properties contained 4203 within the iCalendar object. The "DTSTART" property defines the 4204 first instance in the recurrence set. Multiple instances of the 4205 "RRULE" and "EXRULE" properties can also be specified to define more 4206 sophisticated recurrence sets. The final recurrence set is generated 4207 by gathering all of the start date/times generated by any of the 4208 specified "RRULE" and "RDATE" properties, and excluding any start 4209 date/times which fall within the union of start date/times generated 4210 by any specified "EXRULE" and "EXDATE" properties. This implies that 4211 start date/times within exclusion related properties (i.e., "EXDATE" 4212 and "EXRULE") take precedence over those specified by inclusion 4213 properties (i.e., "RDATE" and "RRULE"). Where duplicate instances 4214 are generated by the "RRULE" and "RDATE" properties, only one 4215 recurrence is considered. Duplicate instances are ignored. 4217 The "DTSTART" and "DTEND" property pair or "DTSTART" and "DURATION" 4218 property pair, specified within the iCalendar object defines the 4219 first instance of the recurrence. When used with a recurrence rule, 4220 the "DTSTART" and "DTEND" properties MUST be specified in local time 4221 and the appropriate set of "VTIMEZONE" calendar components MUST be 4222 included. For detail on the usage of the "VTIMEZONE" calendar 4223 component, see the "VTIMEZONE" calendar component definition. 4225 Any duration associated with the iCalendar object applies to all 4226 members of the generated recurrence set. Any modified duration for 4227 specific recurrences MUST be explicitly specified using the "RDATE" 4228 property. 4230 Format Definition: This property is defined by the following 4231 notation: 4233 rrule = "RRULE" rrulparam ":" recur CRLF 4235 rrulparam = *(";" xparam) 4237 Example: All examples assume the Eastern United States time zone. 4239 Daily for 10 occurrences: 4241 DTSTART;TZID=US-Eastern:19970902T090000 4242 RRULE:FREQ=DAILY;COUNT=10 4244 ==> (1997 9:00 AM EDT)September 2-11 4246 Daily until December 24, 1997: 4248 DTSTART;TZID=US-Eastern:19970902T090000 4249 RRULE:FREQ=DAILY;UNTIL=19971224T000000Z 4251 ==> (1997 9:00 AM EDT)September 2-30;October 1-25 4252 (1997 9:00 AM EST)October 26-31;November 1-30;December 1-23 4254 Every other day - forever: 4256 DTSTART;TZID=US-Eastern:19970902T090000 4257 RRULE:FREQ=DAILY;INTERVAL=2 4258 ==> (1997 9:00 AM EDT)September2,4,6,8...24,26,28,30; 4259 October 2,4,6...20,22,24 4260 (1997 9:00 AM EST)October 26,28,30;November 4261 1,3,5,7...25,27,29; Dec 1,3,... 4263 Every 10 days, 5 occurrences: 4265 DTSTART;TZID=US-Eastern:19970902T090000 4266 RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5 4268 ==> (1997 9:00 AM EDT)September 2,12,22; 4269 October 2,12 4271 Everyday in January, for 3 years: 4273 DTSTART;TZID=US-Eastern:19980101T090000 4274 RRULE:FREQ=YEARLY;UNTIL=20000131T090000Z; 4275 BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA 4276 or 4277 RRULE:FREQ=DAILY;UNTIL=20000131T090000Z; 4278 BYMONTH=1 4280 ==> (1998 9:00 AM EDT)January 1-31 4281 (1999 9:00 AM EDT)January 1-31 4282 (2000 9:00 AM EDT)January 1-31 4284 Weekly for 10 occurrences 4286 DTSTART;TZID=US-Eastern:19970902T090000 4287 RRULE:FREQ=WEEKLY;COUNT=10 4289 ==> (1997 9:00 AM EDT)September 2,9,16,23,30; 4290 October 7,14,21 4291 (1997 9:00 AM EST)October 28;November 4 4293 Weekly until December 24, 1997 4295 DTSTART;TZID=US-Eastern:19970902T090000 4296 RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z 4298 ==> (1997 9:00 AM EDT)September 2,9,16,23,30; 4299 October 7,14,21(1997 9:00 AM EST)October 28; 4300 November 4,11,18,25; 4301 December 2,9,16,23 4303 Every other week - forever: 4305 DTSTART;TZID=US-Eastern:19970902T090000 4306 RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU 4308 ==> (1997 9:00 AM EDT)September 2,16,30;October 14 4309 (1997 9:00 AM EST)October 28;November 11,25; 4310 December 9,23(1998 9:00 AM EST)January 6,20;February 4311 ... 4313 Weekly on Tuesday and Thursday for 5 weeks: 4315 DTSTART;TZID=US-Eastern:19970902T090000 4316 RRULE:FREQ=WEEKLY;UNTIL=19971007T000000Z; 4317 WKST=SU;BYDAY=TU,TH 4319 or 4321 RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH 4323 ==> (1997 9:00 AM EDT)September 2,4,9,11,16,18,23,25,30; 4324 October 2 4326 Every other week on Monday, Wednesday and Friday until 4327 December 24, 1997, but starting on Tuesday, 4328 September 2, 1997: 4330 DTSTART;TZID=US-Eastern:19970902T090000 4331 RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z; 4332 WKST=SU;BYDAY=MO,WE,FR 4333 ==> (1997 9:00 AM EDT)September 2,3,5,15,17,19,29;October 4334 1,3,13,15,17 4335 (1997 9:00 AM EST)October 27,29,31; 4336 November 10,12,14,24,26,28; 4337 December 8,10,12,22 4339 Every other week on Tuesday and Thursday, for 8 occurrences: 4341 DTSTART;TZID=US-Eastern:19970902T090000 4342 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU; 4343 BYDAY=TU,TH 4345 ==> (1997 9:00 AM EDT)September 2,4,16,18,30; 4346 October 2,14,16 4348 Monthly on the 1st Friday for ten occurrences: 4350 DTSTART;TZID=US-Eastern:19970905T090000 4351 RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR 4353 ==> (1997 9:00 AM EDT)September 5;October 3 4354 (1997 9:00 AM EST)November 7;Dec 5 4355 (1998 9:00 AM EST)January 2;February 6; 4356 March 6;April 3 4357 (1998 9:00 AM EDT)May 1;June 5 4359 Monthly on the 1st Friday until December 24, 1997: 4361 DTSTART;TZID=US-Eastern:19970905T090000 4362 RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z; 4363 BYDAY=1FR 4365 ==> (1997 9:00 AM EDT)September 5;October 3 4366 (1997 9:00 AM EST)November 7;December 5 4368 Every other month on the 1st and last Sunday of the month for 10 4369 occurrences: 4371 DTSTART;TZID=US-Eastern:19970907T090000 4372 RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10; 4373 BYDAY=1SU,-1SU 4375 ==> (1997 9:00 AM EDT)September 7,28 4376 (1997 9:00 AM EST)November 2,30 4378 (1998 9:00 AM EST)January 4,25;March 1,29 4379 (1998 9:00 AM EDT)May 3,31 4381 Monthly on the second to last Monday of the month for 6 months: 4383 DTSTART;TZID=US-Eastern:19970922T090000 4384 RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO 4386 ==> (1997 9:00 AM EDT)September 22;October 20 4387 (1997 9:00 AM EST)November 17;December 22 4388 (1998 9:00 AM EST)January 19;February 16 4390 Monthly on the third to the last day of the month, forever: 4392 DTSTART;TZID=US-Eastern:19970928T090000 4393 RRULE:FREQ=MONTHLY;BYMONTHDAY=-3 4395 ==> (1997 9:00 AM EDT)September 28 4396 (1997 9:00 AM EST)October 29;November 28; 4397 December 29(1998 9:00 AM EST)January 29; 4398 February 26 4399 ... 4401 Monthly on the 2nd and 15th of the month for 10 occurrences: 4403 DTSTART;TZID=US-Eastern:19970902T090000 4404 RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15 4406 ==> (1997 9:00 AM EDT)September 2,15;October 2,15 4407 (1997 9:00 AM EST)November 2,15;December 2,15 4408 (1998 9:00 AM EST)January 2,15 4410 Monthly on the first and last day of the month for 10 occurrences: 4412 DTSTART;TZID=US-Eastern:19970930T090000 4413 RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1 4415 ==> (1997 9:00 AM EDT)September 30;October 1 4416 (1997 9:00 AM EST)October 31;November 1,30; 4417 December 1,31(1998 9:00 AM EST)January 1,31; 4418 February 1 4420 Every 18 months on the 10th thru 15th of the month for 10 4421 occurrences: 4423 DTSTART;TZID=US-Eastern:19970910T090000 4424 RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10; 4425 BYMONTHDAY=10,11,12,13,14, 4426 15 4428 ==> (1997 9:00 AM EDT)September 10,11,12,13,14,15 4430 (1999 9:00 AM EST)March 10,11,12,13 4432 Every Tuesday, every other month: 4434 DTSTART;TZID=US-Eastern:19970902T090000 4435 RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU 4437 ==> (1997 9:00 AM EDT)September 2,9,16,23,30 4438 (1997 9:00 AM EST)November 4,11,18,25 4439 (1998 9:00 AM EST)January 6,13,20,27; 4440 March 3,10,17,24,31 4441 ... 4443 Yearly in June and July for 10 occurrences: 4445 DTSTART;TZID=US-Eastern:19970610T090000 4447 RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7 4448 ==> (1997 9:00 AM EDT)June 10;July 10 4449 (1998 9:00 AM EDT)June 10;July 10 4450 (1999 9:00 AM EDT)June 10;July 10 4451 (2000 9:00 AM EDT)June 10;July 10 4452 (2001 9:00 AM EDT)June 10;July 10 4453 Note: Since none of the BYDAY, BYMONTHDAY or 4454 BYYEARDAY components are specified, the day is 4455 gotten from DTSTART 4457 Every other year on January, February, and March 4458 for 10 occurrences: 4460 DTSTART;TZID=US-Eastern:19970310T090000 4461 RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10; 4462 BYMONTH=1,2,3 4464 ==> (1997 9:00 AM EST)March 10 4465 (1999 9:00 AM EST)January 10;February 10;March 10 4466 (2001 9:00 AM EST)January 10;February 10;March 10 4467 (2003 9:00 AM EST)January 10;February 10;March 10 4469 Every 3rd year on the 1st, 100th and 200th day 4470 for 10 occurrences: 4472 DTSTART;TZID=US-Eastern:19970101T090000 4473 RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10; 4474 BYYEARDAY=1,100,200 4476 ==> (1997 9:00 AM EST)January 1 4477 (1997 9:00 AM EDT)April 10;July 19 4478 (2000 9:00 AM EST)January 1 4479 (2000 9:00 AM EDT)April 9;July 18 4480 (2003 9:00 AM EST)January 1 4481 (2003 9:00 AM EDT)April 10;July 19 4482 (2006 9:00 AM EST)January 1 4484 Every 20th Monday of the year, forever: 4486 DTSTART;TZID=US-Eastern:19970519T090000 4487 RRULE:FREQ=YEARLY;BYDAY=20MO 4489 ==> (1997 9:00 AM EDT)May 19 4490 (1998 9:00 AM EDT)May 18 4491 (1999 9:00 AM EDT)May 17 4492 ... 4494 Monday of week number 20 (where the default start 4495 of the week is Monday), forever: 4497 DTSTART;TZID=US-Eastern:19970512T090000 4498 RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO 4500 ==> (1997 9:00 AM EDT)May 12 4501 (1998 9:00 AM EDT)May 11 4502 (1999 9:00 AM EDT)May 17 4503 ... 4505 Every Thursday in March, forever: 4507 DTSTART;TZID=US-Eastern:19970313T090000 4508 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH 4510 ==> (1997 9:00 AM EST)March 13,20,27 4511 (1998 9:00 AM EST)March 5,12,19,26 4512 (1999 9:00 AM EST)March 4,11,18,25 4513 ... 4515 Every Thursday, but only during June, July, and August, 4516 forever: 4518 DTSTART;TZID=US-Eastern:19970605T090000 4519 RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8 4521 ==> (1997 9:00 AM EDT)June 5,12,19,26;July 3,10,17,24,31; 4522 August 7,14,21,28 4523 (1998 9:00 AM EDT)June 4,11,18,25;July 2,9,16,23,30; 4524 August 6,13,20,27 4525 (1999 9:00 AM EDT)June 3,10,17,24;July 1,8,15,22,29; 4526 August 5,12,19,26 4527 ... 4529 Every Friday the 13th, forever: 4531 DTSTART;TZID=US-Eastern:19970902T090000 4532 EXDATE;TZID=US-Eastern:19970902T090000 4533 RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13 4535 ==> (1998 9:00 AM EST)February 13;March 13; 4536 November 13(1999 9:00 AM EDT)August 13 4537 (2000 9:00 AM EDT)October 13 4538 ... 4540 The first Saturday that follows the first Sunday of the month, 4541 forever: 4543 DTSTART;TZID=US-Eastern:19970913T090000 4544 RRULE:FREQ=MONTHLY;BYDAY=SA; 4545 BYMONTHDAY=7,8,9,10,11,12,13 4547 ==> (1997 9:00 AM EDT)September 13;October 11 4548 (1997 9:00 AM EST)November 8;December 13 4549 (1998 9:00 AM EST)January 10;February 7;March 7 4550 (1998 9:00 AM EDT)April 11;May 9;June 13... 4551 ... 4553 Every four years, the first Tuesday after a Monday in November, 4554 forever (U.S. Presidential Election day): 4556 DTSTART;TZID=US-Eastern:19961105T090000 4557 RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11; 4558 BYDAY=TU;BYMONTHDAY=2,3,4, 4559 5,6,7,8 4561 ==> (1996 9:00 AM EST)November 5 4562 (2000 9:00 AM EST)November 7 4563 (2004 9:00 AM EST)November 2 4564 ... 4566 The 3rd instance into the month of one of Tuesday, Wednesday or 4567 Thursday, for the next 3 months: 4569 DTSTART;TZID=US-Eastern:19970904T090000 4570 RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH; 4571 BYSETPOS=3 4573 ==> (1997 9:00 AM EDT)September 4;October 7 4574 (1997 9:00 AM EST)November 6 4576 The 2nd to last weekday of the month: 4578 DTSTART;TZID=US-Eastern:19970929T090000 4579 RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR; 4580 BYSETPOS=-2 4582 ==> (1997 9:00 AM EDT)September 29 4583 (1997 9:00 AM EST)October 30;November 27;December 30 4584 (1998 9:00 AM EST)January 29;February 26;March 30 4586 ... 4588 Every 3 hours from 9:00 AM to 5:00 PM on a specific day: 4590 DTSTART;TZID=US-Eastern:19970902T090000 4591 RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z 4593 ==> (September 2, 1997 EDT)09:00,12:00,15:00 4595 Every 15 minutes for 6 occurrences: 4597 DTSTART;TZID=US-Eastern:19970902T090000 4598 RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6 4600 ==> (September 2, 1997 EDT)09:00,09:15,09:30,09:45,10:00,10:15 4602 Every hour and a half for 4 occurrences: 4604 DTSTART;TZID=US-Eastern:19970902T090000 4605 RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4 4607 ==> (September 2, 1997 EDT)09:00,10:30;12:00;13:30 4609 Every 20 minutes from 9:00 AM to 4:40 PM every day: 4611 DTSTART;TZID=US-Eastern:19970902T090000 4612 RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40 4613 or 4614 RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16 4616 ==> (September 2, 1997 EDT)9:00,9:20,9:40,10:00,10:20, 4617 ... 16:00,16:20,16:40 4618 (September 3, 1997 EDT)9:00,9:20,9:40,10:00,10:20, 4619 ...16:00,16:20,16:40 4620 ... 4622 An example where the days generated makes a difference because of 4623 WKST: 4625 DTSTART;TZID=US-Eastern:19970805T090000 4626 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO 4627 ==> (1997 EDT)Aug 5,10,19,24 4629 changing only WKST from MO to SU, yields different results... 4631 DTSTART;TZID=US-Eastern:19970805T090000 4632 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU 4633 ==> (1997 EDT)August 5,17,19,31 4635 8.4. Alarm Component Properties 4637 The following properties specify alarm information in calendar 4638 components. 4640 8.4.1. Action 4642 Property Name: ACTION 4644 Purpose: This property defines the action to be invoked when an alarm 4645 is triggered. 4647 Value Type: TEXT 4649 Property Parameters: Non-standard property parameters can be 4650 specified on this property. 4652 Conformance: This property MUST be specified once in a "VALARM" 4653 calendar component. 4655 Description: Each "VALARM" calendar component has a particular type 4656 of action associated with it. This property specifies the type of 4657 action 4659 Format Definition: The property is defined by the following notation: 4661 action = "ACTION" actionparam ":" actionvalue CRLF 4663 actionparam = *(";" xparam) 4665 actionvalue = "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE" 4666 / iana-token / x-name 4668 Example: The following are examples of this property in a "VALARM" 4669 calendar component: 4671 ACTION:AUDIO 4673 ACTION:DISPLAY 4675 ACTION:PROCEDURE 4677 8.4.2. Alarm Repeat Count 4679 Property Name: REPEAT 4681 Purpose: This property defines the number of time the alarm should be 4682 repeated, after the initial trigger. 4684 Value Type: INTEGER 4686 Property Parameters: Non-standard property parameters can be 4687 specified on this property. 4689 Conformance: This property can be specified in a "VALARM" calendar 4690 component. 4692 Description: If the alarm triggers more than once, then this property 4693 MUST be specified along with the "DURATION" property. 4695 Format Definition: The property is defined by the following notation: 4697 repeatcnt = "REPEAT" repparam ":" integer CRLF 4698 ;Default is "0", zero. 4700 repparam = *(";" xparam) 4702 Example: The following is an example of this property for an alarm 4703 that repeats 4 additional times with a 5 minute delay after the 4704 initial triggering of the alarm: 4706 REPEAT:4 4707 DURATION:PT5M 4709 8.4.3. Alarm Trigger 4711 Property Name: TRIGGER 4713 Purpose: This property specifies when an alarm will trigger. 4715 Value Type: The default value type is DURATION. The value type can 4716 be set to a DATE-TIME value type, in which case the value MUST 4717 specify a UTC formatted DATE-TIME value. 4719 Property Parameters: Non-standard, value data type, time zone 4720 identifier or trigger relationship property parameters can be 4721 specified on this property. The trigger relationship property 4722 parameter MUST only be specified when the value type is DURATION. 4724 Conformance: This property MUST be specified in the "VALARM" calendar 4725 component. 4727 Description: Within the "VALARM" calendar component, this property 4728 defines when the alarm will trigger. The default value type is 4729 DURATION, specifying a relative time for the trigger of the alarm. 4730 The default duration is relative to the start of an event or to-do 4731 that the alarm is associated with. The duration can be explicitly 4732 set to trigger from either the end or the start of the associated 4733 event or to-do with the "RELATED" parameter. A value of START will 4734 set the alarm to trigger off the start of the associated event or 4735 to-do. A value of END will set the alarm to trigger off the end of 4736 the associated event or to-do. 4738 Either a positive or negative duration may be specified for the 4739 "TRIGGER" property. An alarm with a positive duration is triggered 4740 after the associated start or end of the event or to-do. An alarm 4741 with a negative duration is triggered before the associated start or 4742 end of the event or to-do. 4744 The "RELATED" property parameter is not valid if the value type of 4745 the property is set to DATE-TIME (i.e., for an absolute date and time 4746 alarm trigger). If a value type of DATE-TIME is specified, then the 4747 property value MUST be specified in the UTC time format. If an 4748 absolute trigger is specified on an alarm for a recurring event or 4749 to-do, then the alarm will only trigger for the specified absolute 4750 date/time, along with any specified repeating instances. 4752 If the trigger is set relative to START, then the "DTSTART" property 4753 MUST be present in the associated "VEVENT" or "VTODO" calendar 4754 component. If an alarm is specified for an event with the trigger 4755 set relative to the END, then the "DTEND" property or the "DSTART" 4756 and "DURATION' properties MUST be present in the associated "VEVENT" 4757 calendar component. If the alarm is specified for a to-do with a 4758 trigger set relative to the END, then either the "DUE" property or 4759 the "DSTART" and "DURATION' properties MUST be present in the 4760 associated "VTODO" calendar component. 4762 Alarms specified in an event or to-do which is defined in terms of a 4763 DATE value type will be triggered relative to 00:00:00 UTC on the 4764 specified date. For example, if "DTSTART:19980205, then the duration 4765 trigger will be relative to19980205T000000Z. 4767 Format Definition: The property is defined by the following notation: 4769 trigger = "TRIGGER" (trigrel / trigabs) 4771 trigrel = *( 4773 ; the following are optional, 4774 ; but MUST NOT occur more than once 4776 (";" "VALUE" "=" "DURATION") / 4777 (";" trigrelparam) / 4779 ; the following is optional, 4781 ; and MAY occur more than once 4783 (";" xparam) 4784 ) ":" dur-value 4786 trigabs = 1*( 4788 ; the following is REQUIRED, 4789 ; but MUST NOT occur more than once 4791 (";" "VALUE" "=" "DATE-TIME") / 4793 ; the following is optional, 4794 ; and MAY occur more than once 4796 (";" xparam) 4798 ) ":" date-time 4800 Example: A trigger set 15 minutes prior to the start of the event or 4801 to-do. 4803 TRIGGER:-P15M 4805 A trigger set 5 minutes after the end of the event or to-do. 4807 TRIGGER;RELATED=END:P5M 4809 A trigger set to an absolute date/time. 4811 TRIGGER;VALUE=DATE-TIME:19980101T050000Z 4813 8.5. Alarm Trigger Relationship 4815 Parameter Name: RELATED 4817 Purpose: To specify the relationship of the alarm trigger with 4818 respect to the start or end of the calendar component. 4820 Description: The parameter can be specified on properties that 4821 specify an alarm trigger with a DURATION value type. The parameter 4822 specifies whether the alarm will trigger relative to the start or end 4823 of the calendar component. The parameter value START will set the 4824 alarm to trigger off the start of the calendar component; the 4825 parameter value END will set the alarm to trigger off the end of the 4826 calendar component. If the parameter is not specified on an 4827 allowable property, then the default is START. 4829 Format Definition: The property parameter is defined by the following 4830 notation: 4832 trigrelparam = "RELATED" "=" 4833 ("START" ; Trigger off of start 4834 / "END") ; Trigger off of end 4836 Example: 4838 TRIGGER;RELATED=END:PT5M 4840 Figure 202 4842 8.6. Change Management Component Properties 4844 The following properties specify change management information in 4845 calendar components. 4847 8.6.1. Date/Time Created 4849 Property Name: CREATED 4851 Purpose: This property specifies the date and time that the calendar 4852 information was created by the calendar user agent in the calendar 4853 store. 4855 Note: This is analogous to the creation date and time for a file in 4856 the file system. 4858 Value Type: DATE-TIME 4860 Property Parameters: Non-standard property parameters can be 4861 specified on this property. 4863 Conformance: The property can be specified once in "VEVENT", "VTODO" 4864 or "VJOURNAL" calendar components. 4866 Description: The date and time is a UTC value. 4868 Format Definition: The property is defined by the following notation: 4870 created = "CREATED" creaparam ":" date-time CRLF 4872 creaparam = *(";" xparam) 4874 Example: The following is an example of this property: 4876 CREATED:19960329T133000Z 4878 Figure 204 4880 8.6.2. Date/Time Stamp 4882 Property Name: DTSTAMP 4884 Purpose: The property indicates the date/time that the instance of 4885 the iCalendar object was created. 4887 Value Type: DATE-TIME 4889 Property Parameters: Non-standard property parameters can be 4890 specified on this property. 4892 Conformance: This property MUST be included in the "VEVENT", "VTODO", 4893 "VJOURNAL" or "VFREEBUSY" calendar components. 4895 Description: The value MUST be specified in the UTC time format. 4897 This property is also useful to protocols such as [IMIP] that have 4898 inherent latency issues with the delivery of content. This property 4899 will assist in the proper sequencing of messages containing iCalendar 4900 objects. 4902 This property is different than the "CREATED" and "LAST-MODIFIED" 4903 properties. These two properties are used to specify when the 4904 particular calendar data in the calendar store was created and last 4905 modified. This is different than when the iCalendar object 4906 representation of the calendar service information was created or 4907 last modified. 4909 Format Definition: The property is defined by the following notation: 4911 dtstamp = "DTSTAMP" stmparam ":" date-time CRLF 4913 stmparam = *(";" xparam) 4915 Example: 4917 DTSTAMP:19971210T080000Z 4919 Figure 206 4921 8.6.3. Last Modified 4923 Property Name: LAST-MODIFIED 4925 Purpose: The property specifies the date and time that the 4926 information associated with the calendar component was last revised 4927 in the calendar store. 4929 Note: This is analogous to the modification date and time for a file 4930 in the file system. 4932 Value Type: DATE-TIME 4934 Property Parameters: Non-standard property parameters can be 4935 specified on this property. 4937 Conformance: This property can be specified in the "EVENT", "VTODO", 4938 "VJOURNAL" or "VTIMEZONE" calendar components. 4940 Description: The property value MUST be specified in the UTC time 4941 format. 4943 Format Definition: The property is defined by the following notation: 4945 last-mod = "LAST-MODIFIED" lstparam ":" date-time CRLF 4947 lstparam = *(";" xparam) 4949 Example: The following is are examples of this property: 4951 LAST-MODIFIED:19960817T133000Z 4953 Figure 208 4955 8.6.4. Sequence Number 4957 Property Name: SEQUENCE 4959 Purpose: This property defines the revision sequence number of the 4960 calendar component within a sequence of revisions. 4962 Value Type: integer 4964 Property Parameters: Non-standard property parameters can be 4965 specified on this property. 4967 Conformance: The property can be specified in "VEVENT", "VTODO" or 4968 "VJOURNAL" calendar component. 4970 Description: When a calendar component is created, its sequence 4971 number is zero (US-ASCII decimal 48). It is monotonically 4972 incremented by the "Organizer's" CUA each time the "Organizer" makes 4973 a significant revision to the calendar component. When the 4974 "Organizer" makes changes to one of the following properties, the 4975 sequence number MUST be incremented: . "DTSTART" . "DTEND" . "DUE" 4976 . "RDATE" . "RRULE" . "EXDATE" . "EXRULE" . "STATUS" 4978 In addition, changes made by the "Organizer" to other properties can 4979 also force the sequence number to be incremented. The "Organizer" 4980 CUA MUST increment the sequence number when ever it makes changes to 4981 properties in the calendar component that the "Organizer" deems will 4982 jeopardize the validity of the participation status of the 4983 "Attendees". For example, changing the location of a meeting from 4984 one locale to another distant locale could effectively impact the 4985 participation status of the "Attendees". 4987 The "Organizer" includes this property in an iCalendar object that it 4988 sends to an "Attendee" to specify the current version of the calendar 4989 component. 4991 The "Attendee" includes this property in an iCalendar object that it 4992 sends to the "Organizer" to specify the version of the calendar 4993 component that the "Attendee" is referring to. 4995 A change to the sequence number is not the mechanism that an 4996 "Organizer" uses to request a response from the "Attendees". The 4997 "RSVP" parameter on the "ATTENDEE" property is used by the 4998 "Organizer" to indicate that a response from the "Attendees" is 4999 requested. 5001 Format Definition: This property is defined by the following 5002 notation: 5004 seq = "SEQUENCE" seqparam ":" integer CRLF 5005 ; Default is "0" 5007 seqparam = *(";" xparam) 5009 Example: The following is an example of this property for a calendar 5010 component that was just created by the "Organizer". 5012 SEQUENCE:0 5014 The following is an example of this property for a calendar component 5015 that has been revised two different times by the "Organizer". 5017 SEQUENCE:2 5019 8.7. Miscellaneous Component Properties 5021 The following properties specify information about a number of 5022 miscellaneous features of calendar components. 5024 8.7.1. RSVP Expectation 5026 Parameter Name: RSVP 5028 Purpose: To specify whether there is an expectation of a favor of a 5029 reply from the calendar user specified by the property value. 5031 Description: This parameter can be specified on properties with a 5032 CAL-ADDRESS value type. The parameter identifies the expectation of 5033 a reply from the calendar user specified by the property value. This 5034 parameter is used by the "Organizer" to request a participation 5035 status reply from an "Attendee" of a group scheduled event or to-do. 5036 If not specified on a property that allows this parameter, the 5037 default value is FALSE. 5039 Format Definition: The property parameter is defined by the following 5040 notation: 5042 rsvpparam = "RSVP" "=" ("TRUE" / "FALSE") 5043 ; Default is FALSE 5045 Example: 5047 ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host.com 5049 Figure 213 5051 8.7.2. Language 5053 Parameter Name: LANGUAGE 5055 Purpose: To specify the language for text values in a property or 5056 property parameter. 5058 Description: This parameter can be specified on properties with a 5059 text value type. The parameter identifies the language of the text 5060 in the property or property parameter value. The value of the 5061 "language" property parameter is that defined in [RFC 1766]. 5063 For transport in a MIME entity, the Content-Language header field can 5064 be used to set the default language for the entire body part. 5065 Otherwise, no default language is assumed. 5067 Format Definition: The property parameter is defined by the following 5068 notation: 5070 languageparam = "LANGUAGE" "=" language 5072 language = 5075 Example: 5077 SUMMARY;LANGUAGE=us-EN:Company Holiday Party 5079 LOCATION;LANGUAGE=en:Germany 5080 LOCATION;LANGUAGE=no:Tyskland 5082 The following example makes use of the Quoted-Printable 5083 encoding in order to represent non-ASCII characters. 5085 LOCATION;LANGUAGE=da:K=C3=B8benhavn 5086 LOCATION;LANGUAGE=en:Copenhagen 5088 Figure 215 5090 8.7.3. Group or List Membership 5092 Parameter Name: MEMBER 5094 Purpose: To specify the group or list membership of the calendar user 5095 specified by the property. 5097 Description: This parameter can be specified on properties with a 5098 CAL-ADDRESS value type. The parameter identifies the groups or list 5099 membership for the calendar user specified by the property. The 5100 parameter value either a single calendar address in a quoted-string 5101 or a COMMA character (US-ASCII decimal 44) list of calendar 5102 addresses, each in a quoted-string. The individual calendar address 5103 parameter values MUST each be specified in a quoted-string. 5105 Format Definition: The property parameter is defined by the following 5106 notation: 5108 memberparam = "MEMBER" "=" DQUOTE cal-address DQUOTE 5109 *("," DQUOTE cal-address DQUOTE) 5111 Example: 5113 ATTENDEE;MEMBER="MAILTO:ietf-calsch@imc.org": 5114 MAILTO:jsmith@host.com 5116 ATTENDEE;MEMBER="MAILTO:projectA@host.com", 5117 "MAILTO:projectB@host.com": 5118 MAILTO:janedoe@host.com 5120 Figure 217 5122 8.7.4. Alternate Text Representation 5124 Parameter Name: ALTREP 5126 Purpose: To specify an alternate text representation for the property 5127 value. 5129 Format Definition: The property parameter is defined by the following 5130 notation: 5132 altrepparam = "ALTREP" "=" DQUOTE uri DQUOTE 5134 Description: The parameter specifies a URI that points to an 5135 alternate representation for a textual property value. A property 5136 specifying this parameter MUST also include a value that reflects the 5137 default representation of the text value. The individual URI 5138 parameter values MUST each be specified in a quoted-string. 5140 Example: 5142 DESCRIPTION;ALTREP="CID:" 5143 :Project XYZ Review Meeting will include the following agenda 5144 items: (a) Market Overview, (b) Finances, (c) Project 5145 Management 5147 The "ALTREP" property parameter value might point to a "text/html" 5148 content portion. 5150 Content-Type:text/html 5151 Content-Id: 5153 5154

Project XYZ Review Meeting will include the following 5155 agenda items:

  1. Market 5156 Overview
  2. Finances
  3. Project Management
  4. 5157

5159 8.7.5. Inline Encoding 5161 Parameter Name: ENCODING 5163 Purpose: To specify an alternate inline encoding for the property 5164 value. 5166 Description: The property parameter identifies the inline encoding 5167 used in a property value. The default encoding is "8BIT", 5168 corresponding to a property value consisting of text. The "BASE64" 5169 encoding type corresponds to a property value encoded using the 5170 "BASE64" encoding defined in [RFC 2045]. 5172 If the value type parameter is ";VALUE=BINARY", then the inline 5173 encoding parameter MUST be specified with the value 5174 ";ENCODING=BASE64". 5176 Format Definition: The property parameter is defined by the following 5177 notation: 5179 encodingparam = "ENCODING" "=" 5180 ("8BIT" 5181 ; "8bit" text encoding is defined in [RFC 2045] 5182 / "BASE64" 5183 ; "BASE64" binary encoding format is defined in [RFC 2045] 5184 / iana-token 5185 ; Some other IANA registered iCalendar encoding type 5186 / x-name) 5187 ; A non-standard, experimental encoding type 5189 Example: 5191 ATTACH;FMTYPE=IMAGE/JPEG;ENCODING=BASE64;VALUE=BINARY:MIICajC 5192 CAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDA 5193 qBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRw 5194 <...remainder of "BASE64" encoded binary data...> 5196 Figure 222 5198 8.7.6. Format Type 5200 Parameter Name: FMTTYPE 5202 Purpose: To specify the content type of a referenced object. 5204 Description: This parameter can be specified on properties that are 5205 used to reference an object. The parameter specifies the content 5206 type of the referenced object. For example, on the "ATTACH" 5207 property, a FTP type URI value does not, by itself, necessarily 5208 convey the type of content associated with the resource. The 5209 parameter value MUST be the TEXT for either an IANA registered 5210 content type or a non-standard content type. 5212 Format Definition: The property parameter is defined by the following 5213 notation: 5215 fmttypeparam = "FMTTYPE" "=" iana-token 5216 ; A IANA registered content type 5217 / x-name 5218 ; A non-standard content type 5220 Example: 5222 ATTACH;FMTTYPE=application/binary:ftp://domain.com/pub/docs/ 5223 agenda.doc 5225 Figure 224 5227 8.7.7. Non-standard Properties 5229 Property Name: Any property name with a "X-" prefix 5231 Purpose: This class of property provides a framework for defining 5232 non-standard properties. 5234 Value Type: TEXT 5236 Property Parameters: Non-standard and language property parameters 5237 can be specified on this property. 5239 Conformance: This property can be specified in any calendar 5240 component. 5242 Description: The MIME Calendaring and Scheduling Content Type 5243 provides a "standard mechanism for doing non-standard things". This 5244 extension support is provided for implementers to "push the envelope" 5245 on the existing version of the memo. Extension properties are 5246 specified by property and/or property parameter names that have the 5247 prefix text of "X-" (the two character sequence: LATIN CAPITAL LETTER 5248 X character followed by the HYPEN-MINUS character). It is 5249 recommended that vendors concatenate onto this sentinel another short 5250 prefix text to identify the vendor. This will facilitate readability 5251 of the extensions and minimize possible collision of names between 5252 different vendors. User agents that support this content type are 5253 expected to be able to parse the extension properties and property 5254 parameters but can ignore them. 5256 At present, there is no registration authority for names of extension 5257 properties and property parameters. The data type for this property 5258 is TEXT. Optionally, the data type can be any of the other valid 5259 data types. 5261 Format Definition: The property is defined by the following notation: 5263 x-prop = x-name *(";" xparam) 5264 [";" languageparam] ":" text CRLF 5265 ; Lines longer than 75 octets should be folded 5267 Example: The following might be the ABC vendor's extension for an 5268 audio-clip form of subject property: 5270 X-ABC-MMSUBJ;X-ABC-MMSUBJTYPE=wave: 5271 http://load.noise.org/mysubj.wav 5273 Figure 226 5275 8.7.8. Request Status 5277 Property Name: REQUEST-STATUS 5279 Purpose: This property defines the status code returned for a 5280 scheduling request. 5282 Value Type: TEXT 5284 Property Parameters: Non-standard and language property parameters 5285 can be specified on this property. 5287 Conformance: The property can be specified in "VEVENT", "VTODO", 5288 "VJOURNAL" or "VFREEBUSY" calendar component. 5290 Description: This property is used to return status code information 5291 related to the processing of an associated iCalendar object. The 5292 data type for this property is TEXT. 5294 The value consists of a short return status component, a longer 5295 return status description component, and optionally a status-specific 5296 data component. The components of the value are separated by the 5297 SEMICOLON character (US-ASCII decimal 59). 5299 The short return status is a PERIOD character (US-ASCII decimal 46) 5300 separated 3-tuple of integers. For example, "3.1.1". The successive 5301 levels of integers provide for a successive level of status code 5302 granularity. 5304 The following are initial classes for the return status code. 5306 Individual iCalendar object methods will define specific return 5307 status codes for these classes. In addition, other classes for the 5308 return status code may be defined using the registration process 5309 defined later in this memo. 5311 Request Status Return Codes and Description 5313 +-----------------+-------------------------------------------------+ 5314 | Short Return | Longer Return Status Description | 5315 | Status Code | | 5316 +-----------------+-------------------------------------------------+ 5317 | 1.xx | Preliminary success. This class of status code | 5318 | | indicates that the request has been initially | 5319 | | processed but that completion is pending. | 5320 | | | 5321 | 2.xx | Successful. This class of status code | 5322 | | indicates that the request was completed | 5323 | | successfuly. However, the exact status code | 5324 | | can indicate that a fallback has been taken. | 5325 | | | 5326 | 3.xx | Client Error. This class of status code | 5327 | | indicates that the request was not successful. | 5328 | | The error is the result of either a syntax or a | 5329 | | semantic error in the client formatted request. | 5330 | | Request should not be retried until the | 5331 | | condition in the request is corrected. | 5332 | | | 5333 | 4.xx | Scheduling Error. This class of status code | 5334 | | indicates that the request was not successful. | 5335 | | Some sort of error occurred within the | 5336 | | calendaring and scheduling service, not | 5337 | | directly related to the request itself. | 5338 +-----------------+-------------------------------------------------+ 5339 Format Definition: The property is defined by the following notation: 5341 rstatus = "REQUEST-STATUS" rstatparam ":" 5342 statcode ";" statdesc [";" extdata] 5344 rstatparam = *( 5346 ; the following is optional, 5347 ; but MUST NOT occur more than once 5349 (";" languageparm) / 5351 ; the following is optional, 5352 ; and MAY occur more than once 5354 (";" xparam) 5356 ) 5358 statcode = 1*DIGIT *("." 1*DIGIT) 5359 ;Hierarchical, numeric return status code 5361 statdesc = text 5362 ;Textual status description 5364 extdata = text 5365 ;Textual exception data. For example, the offending property 5366 ;name and value or complete property line. 5368 Example: The following are some possible examples of this property. 5369 The COMMA and SEMICOLON separator characters in the property value 5370 are BACKSLASH character escaped because they appear in a text value. 5372 REQUEST-STATUS:2.0;Success 5374 REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01 5376 REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled 5377 as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2 5379 REQUEST-STATUS:4.1;Event conflict. Date/time is busy. 5381 REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE: 5382 MAILTO:jsmith@host.com 5384 Figure 228 5386 9. iCalendar Object Examples 5388 The following examples are provided as an informational source of 5389 illustrative iCalendar objects consistent with this content type. 5391 The following example specifies a three-day conference that begins at 5392 8:00 AM EDT, September 18, 1996 and end at 6:00 PM EDT, September 20, 5393 1996. 5395 BEGIN:VCALENDAR PRODID:-//xyz Corp//NONSGML PDA Calendar Verson 5396 1.0//EN VERSION:2.0 BEGIN:VEVENT DTSTAMP:19960704T120000Z 5397 UID:uid1@host.com ORGANIZER:MAILTO:jsmith@host.com 5398 DTSTART:19960918T143000Z DTEND:19960920T220000Z STATUS:CONFIRMED 5400 CATEGORIES:CONFERENCE SUMMARY:Networld+Interop Conference 5401 DESCRIPTION:Networld+Interop Conference 5402 and Exhibit\nAtlanta World Congress Center\n 5403 Atlanta, Georgia END:VEVENT END:VCALENDAR 5405 The following example specifies a group scheduled meeting that begin 5406 at 8:30 AM EST on March 12, 1998 and end at 9:30 AM EST on March 12, 5407 1998. The "Organizer" has scheduled the meeting with one or more 5408 calendar users in a group. A time zone specification for Eastern 5409 United States has been specified. 5411 BEGIN:VCALENDAR 5412 PRODID:-//RDU Software//NONSGML HandCal//EN 5413 VERSION:2.0 5414 BEGIN:VTIMEZONE 5415 TZID:US-Eastern 5416 BEGIN:STANDARD 5417 DTSTART:19981025T020000 5418 RDATE:19981025T020000 5419 TZOFFSETFROM:-0400 5420 TZOFFSETTO:-0500 5421 TZNAME:EST 5422 END:STANDARD 5423 BEGIN:DAYLIGHT 5424 DTSTART:19990404T020000 5425 RDATE:19990404T020000 5426 TZOFFSETFROM:-0500 5427 TZOFFSETTO:-0400 5428 TZNAME:EDT 5429 END:DAYLIGHT 5430 END:VTIMEZONE 5431 BEGIN:VEVENT 5432 DTSTAMP:19980309T231000Z 5433 UID:guid-1.host1.com 5434 ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com 5435 ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: 5436 MAILTO:employee-A@host.com 5437 DESCRIPTION:Project XYZ Review Meeting 5438 CATEGORIES:MEETING 5439 CLASS:PUBLIC 5440 CREATED:19980309T130000Z 5441 SUMMARY:XYZ Project Review 5442 DTSTART;TZID=US-Eastern:19980312T083000 5443 DTEND;TZID=US-Eastern:19980312T093000 5444 LOCATION:1CP Conference Room 4350 5445 END:VEVENT 5446 END:VCALENDAR 5448 The following is an example of an iCalendar object passed in a MIME 5449 message with a single body part consisting of a "text/calendar" 5450 Content Type. 5452 TO:jsmith@host1.com 5453 FROM:jdoe@host1.com 5454 MIME-VERSION:1.0 5455 MESSAGE-ID 5456 CONTENT-TYPE:text/calendar 5458 BEGIN:VCALENDAR 5459 METHOD:xyz 5460 VERSION:2.0 5461 PRODID:-//ABC Corporation//NONSGML My Product//EN 5462 BEGIN:VEVENT 5463 DTSTAMP:19970324T1200Z 5464 SEQUENCE:0 5465 UID:uid3@host1.com 5466 ORGANIZER:MAILTO:jdoe@host1.com 5467 ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host1.com 5468 DTSTART:19970324T123000Z 5469 DTEND:19970324T210000Z 5470 CATEGORIES:MEETING,PROJECT 5471 CLASS:PUBLIC 5472 SUMMARY:Calendaring Interoperability Planning Meeting 5473 DESCRIPTION:Discuss how we can test interoperability\n 5474 using iCalendar and other IETF standards. 5475 LOCATION:LDB Lobby 5476 ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ 5477 conf/bkgrnd.ps 5478 END:VEVENT 5479 END:VCALENDAR 5481 The following is an example of a to-do due on April 15, 1998. An 5482 audio alarm has been specified to remind the calendar user at noon, 5483 the day before the to-do is expected to be completed and repeat 5484 hourly, four additional times. The to-do definition has been 5485 modified twice since it was initially created. 5487 BEGIN:VCALENDAR 5488 VERSION:2.0 5489 PRODID:-//ABC Corporation//NONSGML My Product//EN 5490 BEGIN:VTODO 5491 DTSTAMP:19980130T134500Z 5492 SEQUENCE:2 5493 UID:uid4@host1.com 5494 ORGANIZER:MAILTO:unclesam@us.gov 5495 ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com 5496 DUE:19980415T235959 5497 STATUS:NEEDS-ACTION 5498 SUMMARY:Submit Income Taxes 5499 BEGIN:VALARM 5500 ACTION:AUDIO 5501 TRIGGER:19980403T120000 5502 ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- 5503 files/ssbanner.aud 5504 REPEAT:4 5505 DURATION:PT1H 5506 END:VALARM 5507 END:VTODO 5508 END:VCALENDAR 5510 The following is an example of a journal entry. 5512 BEGIN:VCALENDAR 5513 VERSION:2.0 5514 PRODID:-//ABC Corporation//NONSGML My Product//EN 5515 BEGIN:VJOURNAL 5516 DTSTAMP:19970324T120000Z 5517 UID:uid5@host1.com 5518 ORGANIZER:MAILTO:jsmith@host.com 5519 STATUS:DRAFT 5520 CLASS:PUBLIC 5521 CATEGORY:Project Report, XYZ, Weekly Meeting 5522 DESCRIPTION:Project xyz Review Meeting Minutes\n 5523 Agenda\n1. Review of project version 1.0 requirements.\n2. 5524 Definition 5525 of project processes.\n3. Review of project schedule.\n 5526 Participants: John Smith, Jane Doe, Jim Dandy\n-It was 5527 decided that the requirements need to be signed off by 5528 product marketing.\n-Project processes were accepted.\n 5529 -Project schedule needs to account for scheduled holidays 5530 and employee vacation time. Check with HR for specific 5531 dates.\n-New schedule will be distributed by Friday.\n- 5532 Next weeks meeting is cancelled. No meeting until 3/23. 5533 END:VJOURNAL 5534 END:VCALENDAR 5536 The following is an example of published busy time information. The 5537 iCalendar object might be placed in the network resource 5538 www.host.com/calendar/busytime/jsmith.ifb. 5540 BEGIN:VCALENDAR 5541 VERSION:2.0 5542 PRODID:-//RDU Software//NONSGML HandCal//EN 5543 BEGIN:VFREEBUSY 5544 ORGANIZER:MAILTO:jsmith@host.com 5545 DTSTART:19980313T141711Z 5546 DTEND:19980410T141711Z 5547 FREEBUSY:19980314T233000Z/19980315T003000Z 5548 FREEBUSY:19980316T153000Z/19980316T163000Z 5549 FREEBUSY:19980318T030000Z/19980318T040000Z 5550 URL:http://www.host.com/calendar/busytime/jsmith.ifb 5551 END:VFREEBUSY 5552 END:VCALENDAR 5554 10. Recommended Practices 5556 These recommended practices should be followed in order to assure 5557 consistent handling of the following cases for an iCalendar object. 5559 1. Content lines longer than 75 octets SHOULD be folded. 5561 2. A calendar entry with a "DTSTART" property but no "DTEND" 5562 property does not take up any time. It is intended to represent an 5563 event that is associated with a given calendar date and time of day, 5564 such as an anniversary. Since the event does not take up any time, 5565 it MUST NOT be used to record busy time no matter what the value for 5566 the "TRANSP" property. 5568 3. When the "DTSTART" and "DTEND", for "VEVENT", "VJOURNAL" and 5569 "VFREEBUSY" calendar components, and "DTSTART" and "DUE", for "VTODO" 5570 calendar components, have the same value data type (e.g., DATE-TIME), 5571 they SHOULD specify values in the same time format (e.g., UTC time 5572 format). 5574 4. When the combination of the "RRULE" and "RDATE" properties on an 5575 iCalendar object produces multiple instances having the same start 5576 date/time, they should be collapsed to, and considered as, a single 5577 instance. 5579 5. When a calendar user receives multiple requests for the same 5580 calendar component (e.g., REQUEST for a "VEVENT" calendar component) 5581 as a result of being on multiple mailing lists specified by 5582 "ATTENDEE" properties in the request, they SHOULD respond to only one 5583 of the requests. The calendar user SHOULD also specify (using the 5584 "MEMBER" parameter of the "ATTENDEE" property) which mailing list 5585 they are a member of. 5587 6. An implementation can truncate a "SUMMARY" property value to 255 5588 characters. 5590 7. If seconds of the minute are not supported by an implementation, 5591 then a value of "00" SHOULD be specified for the seconds component in 5592 a time value. 5594 8. If the value type parameter (VALUE=) contains an unknown value 5595 type, it SHOULD be treated as TEXT. 5597 9. TZURL values SHOULD NOT be specified as a FILE URI type. This 5598 URI form can be useful within an organization, but is problematic in 5599 the Internet. 5601 10. Some possible English values for CATEGORIES property include 5602 "ANNIVERSARY", "APPOINTMENT", "BUSINESS", "EDUCATION", "HOLIDAY", 5603 "MEETING", "MISCELLANEOUS", "NON-WORKING HOURS", "NOT IN OFFICE", 5604 "PERSONAL", "PHONE CALL", "SICK DAY", "SPECIAL OCCASION", "TRAVEL", 5605 "VACATION". Categories can be specified in any registered language. 5607 11. Some possible English values for RESOURCES property include 5608 "CATERING", "CHAIRS", "COMPUTER PROJECTOR", "EASEL", "OVERHEAD 5609 PROJECTOR", "SPEAKER PHONE", "TABLE", "TV", "VCR", "VIDEO PHONE", 5610 "VEHICLE". Resources can be specified in any registered language. 5612 11. Registration of Content Type Elements 5614 This section provides the process for registration of MIME 5615 Calendaring and Scheduling Content Type iCalendar object methods and 5616 new or modified properties. 5618 11.1. Registration of New and Modified iCalendar Object Methods 5620 New MIME Calendaring and Scheduling Content Type iCalendar object 5621 methods are registered by the publication of an IETF Request for 5622 Comments (RFC). Changes to an iCalendar object method are registered 5623 by the publication of a revision of the RFC defining the method. 5625 11.2. Registration of New Properties 5627 This section defines procedures by which new properties or enumerated 5628 property values for the MIME Calendaring and Scheduling Content Type 5629 can be registered with the IANA. Non-IANA properties can be used by 5630 bilateral agreement, provided the associated properties names follow 5631 the "X-" convention. 5633 The procedures defined here are designed to allow public comment and 5634 review of new properties, while posing only a small impediment to the 5635 definition of new properties. 5637 Registration of a new property is accomplished by the following 5638 steps. 5640 11.3. Define the property 5642 A property is defined by completing the following template. 5644 To: ietf-calendar@imc.org 5646 Subject: Registration of text/calendar MIME property XXX 5648 Property name: 5650 Property purpose: 5652 Property value type(s): 5654 Property parameter (s): 5656 Conformance: 5658 Description: 5660 Format definition: 5662 Examples: 5664 The meaning of each field in the template is as follows. 5666 Property name: The name of the property, as it will appear in the 5667 body of an text/calendar MIME Content-Type "property: value" line to 5668 the left of the colon ":". 5670 Property purpose: The purpose of the property (e.g., to indicate a 5671 delegate for the event or to-do, etc.). Give a short but clear 5672 description. 5674 Property value type (s): Any of the valid value types for the 5675 property value needs to be specified. The default value type also 5676 needs to be specified. If a new value type is specified, it needs to 5677 be declared in this section. 5679 Property parameter (s): Any of the valid property parameters for the 5680 property needs to be specified. 5682 Conformance: The calendar components that the property can appear in 5683 needs to be specified. 5685 Description: Any special notes about the property, how it is to be 5686 used, etc. 5688 Format definition: The ABNF for the property definition needs to be 5689 specified. 5691 Examples: One or more examples of instances of the property needs to 5692 be specified. 5694 11.4. Post the Property definition 5696 The property description MUST be posted to the new property 5697 discussion list, ietf-calendar@imc.org. 5699 11.5. Allow a comment period 5701 Discussion on the new property MUST be allowed to take place on the 5702 list for a minimum of two weeks. Consensus MUST be reached on the 5703 property before proceeding to the next step. 5705 11.6. Submit the property for approval 5707 Once the two-week comment period has elapsed, and the proposer is 5708 convinced consensus has been reached on the property, the 5709 registration application should be submitted to the Method Reviewer 5710 for approval. The Method Reviewer is appointed to the Application 5711 Area Directors and can either accept or reject the property 5712 registration. An accepted registration should be passed on by the 5713 Method Reviewer to the IANA for inclusion in the official IANA method 5714 registry. The registration can be rejected for any of the following 5715 reasons. 1) Insufficient comment period; 2) Consensus not reached; 3) 5716 Technical deficiencies raised on the list or elsewhere have not been 5717 addressed. The Method Reviewer's decision to reject a property can 5718 be appealed by the proposer to the IESG, or the objections raised can 5719 be addressed by the proposer and the property resubmitted. 5721 11.7. Property Change Control 5723 Existing properties can be changed using the same process by which 5724 they were registered. 5726 1. Define the change 5728 2. Post the change 5730 3. Allow a comment period 5732 4. Submit the property for approval 5734 Note that the original author or any other interested party can 5735 propose a change to an existing property, but that such changes 5736 should only be proposed when there are serious omissions or errors in 5737 the published memo. The Method Reviewer can object to a change if it 5738 is not backward compatible, but is not required to do so. 5740 Property definitions can never be deleted from the IANA registry, but 5741 properties which are no longer believed to be useful can be declared 5742 OBSOLETE by a change to their "intended use" field. 5744 12. Property Parameters 5746 The general property parameters defined by this memo are defined by 5747 the following notation: 5749 parameter = altrepparam ; Alternate text representation 5750 / cnparam ; Common name 5751 / cutypeparam ; Calendar user type 5752 / delfromparam ; Delegator 5753 / deltoparam ; Delegatee 5754 / dirparam ; Directory entry 5755 / encodingparam ; Inline encoding 5756 / fmttypeparam ; Format type 5757 / fbtypeparam ; Free/busy time type 5758 / languageparam ; Language for text 5759 / memberparam ; Group or list membership 5760 / partstatparam ; Participation status 5761 / rangeparam ; Recurrence identifier range 5762 / trigrelparam ; Alarm trigger relationship 5763 / reltypeparam ; Relationship type 5764 / roleparam ; Participation role 5765 / rsvpparam ; RSVP expectation 5766 / sentbyparam ; Sent by 5767 / tzidparam ; Reference to time zone object 5768 / valuetypeparam ; Property value data type 5769 / ianaparam 5770 ; Some other IANA registered iCalendar parameter. 5771 / xparam 5772 ; A non-standard, experimental parameter. 5774 ianaparam = iana-token "=" param-value *("," param-value) 5776 xparam =x-name "=" param-value *("," param-value) 5778 13. Value Data Types 5780 The properties and parameters in an iCalendar object are strongly 5781 typed. The definition of each property or parameter restricts the 5782 value to be one of the value data types, or simply value types, 5783 defined in this section. The value type will either be specified 5784 implicitly as the default value type or will be explicitly specified 5785 with the "VALUE" parameter. If the value type is one of the 5786 alternate valid types, then it MUST be explicitly specified with the 5787 "VALUE" parameter. 5789 13.1. Binary 5791 Value Name: BINARY 5793 Purpose: This value type is used to identify properties that contain 5794 a character encoding of inline binary data. For example, an 5795 inline attachment of an object code might be included in an 5796 iCalendar object. 5798 Description: Property values with this value type MUST also include 5799 the inline encoding parameter sequence of ";ENCODING=BASE64". 5800 That is, all inline binary data MUST first be character encoded 5801 using the "BASE64" encoding method defined in RFC 2045 [4]. No 5802 additional content value encoding (i.e., BACKSLASH character 5803 encoding) is defined for this value type. 5805 Formal Definition: The value type is defined by the following 5806 notation: 5808 binary = *(4b-char) [b-end] 5809 ; A "BASE64" encoded character string, as defined by [RFC 2045]. 5811 b-end = (2b-char "==") / (3b-char "=") 5813 b-char = ALPHA / DIGIT / "+" / "/" 5815 Example: The following is an abridged example of a "BASE64" encoded 5816 binary value data. 5818 ATTACH;VALUE=BINARY;ENCODING=BASE64:MIICajCCAdOgAwIBAgICBEUwDQY 5819 JKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlI 5820 ENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZv 5821 [...remainder of "BASE64" encoded binary data...] 5823 13.2. Boolean 5825 Value Name: BOOLEAN 5827 Purpose: This value type is used to identify properties that contain 5828 either a "TRUE" or "FALSE" Boolean value. 5830 Description: These values are case insensitive text. No additional 5831 content value encoding (i.e., BACKSLASH character encoding) is 5832 defined for this value type. 5834 Formal Definition: The value type is defined by the following 5835 notation: 5837 boolean = "TRUE" / "FALSE" 5839 Example: The following is an example of a hypothetical property that 5840 has a BOOLEAN value type: 5842 GIBBERISH:TRUE 5844 13.3. Calendar User Address 5846 Value Name: CAL-ADDRESS 5848 Purpose: This value type is used to identify properties that contain 5849 a calendar user address. 5851 Description: The value is a URI as defined by [RFC 1738] or any other 5852 IANA registered form for a URI. When used to address an Internet 5853 email transport address for a calendar user, the value MUST be a 5854 MAILTO URI, as defined by [RFC 1738]. No additional content value 5855 encoding (i.e., BACKSLASH character encoding) is defined for this 5856 value type. 5858 Formal Definition: The value type is as defined by the following 5859 notation: 5861 cal-address = uri 5863 Example: 5865 ATTENDEE:MAILTO:jane_doe@host.com 5867 Figure 242 5869 13.4. Date 5871 Value Name: DATE 5873 Purpose: This value type is used to identify values that contain a 5874 calendar date. 5876 Description: If the property permits, multiple "date" values are 5877 specified as a COMMA character (US-ASCII decimal 44) separated list 5878 of values. The format for the value type is expressed as the [ISO 5879 8601] complete representation, basic format for a calendar date. The 5880 textual format specifies a four-digit year, two-digit month, and two- 5881 digit day of the month. There are no separator characters between 5882 the year, month and day component text. 5884 No additional content value encoding (i.e., BACKSLASH character 5885 encoding) is defined for this value type. 5887 Formal Definition: The value type is defined by the following 5888 notation: 5890 date = date-value 5892 date-value = date-fullyear date-month date-mday 5893 date-fullyear = 4DIGIT 5895 date-month = 2DIGIT ;01-12 5896 date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31 5897 ;based on month/year 5899 Example: The following represents July 14, 1997: 5901 19970714 5903 Figure 244 5905 13.5. Date-Time 5907 Value Name: DATE-TIME 5909 Purpose: This value type is used to identify values that specify a 5910 precise calendar date and time of day. 5912 Description: If the property permits, multiple "date-time" values are 5913 specified as a COMMA character (US-ASCII decimal 44) separated list 5914 of values. No additional content value encoding (i.e., BACKSLASH 5915 character encoding) is defined for this value type. 5917 The "DATE-TIME" data type is used to identify values that contain a 5918 precise calendar date and time of day. The format is based on the 5919 [ISO 8601] complete representation, basic format for a calendar date 5920 and time of day. The text format is a concatenation of the "date", 5921 followed by the LATIN CAPITAL LETTER T character (US-ASCII decimal 5922 84) time designator, followed by the "time" format. 5924 The "DATE-TIME" data type expresses time values in three forms: 5926 The form of date and time with UTC offset MUST NOT be used. For 5927 example, the following is not valid for a date-time value: 5929 DTSTART:19980119T230000-0800 ;Invalid time format 5931 FORM #1: DATE WITH LOCAL TIME 5933 The date with local time form is simply a date-time value that does 5934 not contain the UTC designator nor does it reference a time zone. 5935 For example, the following represents Janurary 18, 1998, at 11 PM: 5937 DTSTART:19980118T230000 5939 Date-time values of this type are said to be "floating" and are not 5940 bound to any time zone in particular. They are used to represent the 5941 same hour, minute, and second value regardless of which time zone is 5942 currently being observed. For example, an event can be defined that 5943 indicates that an individual will be busy from 11:00 AM to 1:00 PM 5944 every day, no matter which time zone the person is in. In these 5945 cases, a local time can be specified. The recipient of an iCalendar 5946 object with a property value consisting of a local time, without any 5947 relative time zone information, SHOULD interpret the value as being 5948 fixed to whatever time zone the ATTENDEE is in at any given moment. 5949 This means that two ATTENDEEs, in different time zones, receiving the 5950 same event definition as a floating time, may be participating in the 5951 event at different actual times. Floating time SHOULD only be used 5952 where that is the reasonable behavior. 5954 In most cases, a fixed time is desired. To properly communicate a 5955 fixed time in a property value, either UTC time or local time with 5956 time zone reference MUST be specified. 5958 The use of local time in a DATE-TIME value without the TZID property 5959 parameter is to be interpreted as floating time, regardless of the 5960 existence of "VTIMEZONE" calendar components in the iCalendar object. 5962 FORM #2: DATE WITH UTC TIME 5964 The date with UTC time, or absolute time, is identified by a LATIN 5965 CAPITAL LETTER Z suffix character (US-ASCII decimal 90), the UTC 5966 designator, appended to the time value. For example, the following 5967 represents January 19, 1998, at 0700 UTC: 5969 DTSTART:19980119T070000Z 5971 The TZID property parameter MUST NOT be applied to DATE-TIME 5972 properties whose time values are specified in UTC. 5974 FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE 5976 The date and local time with reference to time zone information is 5977 identified by the use the TZID property parameter to reference the 5978 appropriate time zone definition. TZID is discussed in detail in the 5979 section on Time Zone. For example, the following represents 2 AM in 5980 New York on Janurary 19, 1998: 5982 DTSTART;TZID=US-Eastern:19980119T020000 5984 Example: The following represents July 14, 1997, at 1:30 PM in New 5985 York City in each of the three time formats, using the "DTSTART" 5986 property. 5988 DTSTART:19970714T133000 ;Local time 5989 DTSTART:19970714T173000Z ;UTC time 5990 DTSTART;TZID=US-Eastern:19970714T133000 ;Local time and time 5991 ; zone reference 5993 Figure 245 5995 A time value MUST ONLY specify 60 seconds when specifying the 5996 periodic "leap second" in the time value. For example: 5998 COMPLETED:19970630T235960Z 6000 13.6. Duration 6002 Value Name: DURATION 6004 Purpose: This value type is used to identify properties that contain 6005 a duration of time. 6007 Description: If the property permits, multiple "duration" values are 6008 specified by a COMMA character (US-ASCII decimal 44) separated list 6009 of values. The format is expressed as the [ISO 8601] basic format 6010 for the duration of time. The format can represent durations in 6011 terms of weeks, days, hours, minutes, and seconds. 6013 No additional content value encoding (i.e., BACKSLASH character 6014 encoding) are defined for this value type. 6016 Formal Definition: The value type is defined by the following 6017 notation: 6019 dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week) 6021 dur-date = dur-day [dur-time] 6022 dur-time = "T" (dur-hour / dur-minute / dur-second) 6023 dur-week = 1*DIGIT "W" 6024 dur-hour = 1*DIGIT "H" [dur-minute] 6025 dur-minute = 1*DIGIT "M" [dur-second] 6026 dur-second = 1*DIGIT "S" 6027 dur-day = 1*DIGIT "D" 6029 Example: A duration of 15 days, 5 hours and 20 seconds would be: 6031 P15DT5H0M20S 6033 Figure 248 6035 A duration of 7 weeks would be: 6037 P7W 6039 13.7. Period of Time 6041 Value Name: PERIOD 6043 Purpose: This value type is used to identify values that contain a 6044 precise period of time. 6046 Description: If the property permits, multiple "period" values are 6047 specified by a COMMA character (US-ASCII decimal 44) separated list 6048 of values. There are two forms of a period of time. First, a period 6049 of time is identified by its start and its end. This format is 6050 expressed as the [ISO 8601] complete representation, basic format for 6051 "DATE-TIME" start of the period, followed by a SOLIDUS character (US- 6052 ASCII decimal 47), followed by the "DATE-TIME" of the end of the 6053 period. The start of the period MUST be before the end of the 6054 period. Second, a period of time can also be defined by a start and 6055 a positive duration of time. The format is expressed as the [ISO 6056 8601] complete representation, basic format for the "DATE-TIME" start 6057 of the period, followed by a SOLIDUS character (US-ASCII decimal 47), 6058 followed by the [ISO 8601] basic format for "DURATION" of the period. 6060 Formal Definition: The data type is defined by the following 6061 notation: 6063 period = period-explicit / period-start 6065 period-explicit = date-time "/" date-time 6066 ; [ISO 8601] complete representation basic format for a period 6067 ; of time consisting of a start and end. The start MUST be 6068 ; before the end. 6070 period-start = date-time "/" dur-value 6071 ; [ISO 8601] complete representation basic format for a period 6072 ; of time consisting of a start and positive duration of time. 6074 Example: The period starting at 18:00:00 UTC, on January 1, 1997 and 6075 ending at 07:00:00 UTC on January 2, 1997 would be: 6077 19970101T180000Z/19970102T070000Z 6079 Figure 251 6081 The period start at 18:00:00 on January 1, 1997 and lasting 5 hours 6082 and 30 minutes would be: 6084 19970101T180000Z/PT5H30M 6086 No additional content value encoding (i.e., BACKSLASH character 6087 encoding) is defined for this value type. 6089 13.8. Time Zone Identifier 6091 Parameter Name: TZID 6093 Purpose: To specify the identifier for the time zone definition for a 6094 time component in the property value. 6096 Description: The parameter MUST be specified on the "DTSTART", 6097 "DTEND", "DUE", "EXDATE" and "RDATE" properties when either a DATE- 6098 TIME or TIME value type is specified and when the value is not either 6099 a UTC or a "floating" time. Refer to the DATE-TIME or TIME value 6100 type definition for a description of UTC and "floating time" formats. 6101 This property parameter specifies a text value which uniquely 6102 identifies the "VTIMEZONE" calendar component to be used when 6103 evaluating the time portion of the property. The value of the TZID 6104 property parameter will be equal to the value of the TZID property 6105 for the matching time zone definition. An individual "VTIMEZONE" 6106 calendar component MUST be specified for each unique "TZID" parameter 6107 value specified in the iCalendar object. 6109 The parameter MUST be specified on properties with a DATE-TIME value 6110 if the DATE-TIME is not either a UTC or a "floating" time. 6112 The presence of the SOLIDUS character (US-ASCII decimal 47) as a 6113 prefix, indicates that this TZID represents a unique ID in a globally 6114 defined time zone registry (when such registry is defined). 6116 Note: This document does not define a naming convention for time zone 6117 identifiers. Implementers may want to use the naming conventions 6118 defined in existing time zone specifications such as the public- 6119 domain Olson database [TZ]. The specification of globally unique 6120 time zone identifiers is not addressed by this document and is left 6121 for future study. 6123 The TZID property parameter MUST NOT be applied to DATE-TIME or TIME 6124 properties whose time values are specified in UTC. 6126 The use of local time in a DATE-TIME or TIME value without the TZID 6127 property parameter is to be interpreted as a local time value, 6128 regardless of the existence of "VTIMEZONE" calendar components in the 6129 iCalendar object. 6131 For more information see the sections on the data types DATE-TIME and 6132 TIME. 6134 Format Definition: This property parameter is defined by the 6135 following notation: 6137 tzidparam = "TZID" "=" [tzidprefix] paramtext CRLF 6139 tzidprefix = "/" 6141 The following are examples of this property parameter: 6143 DTSTART;TZID=US-Eastern:19980119T020000 6145 DTEND;TZID=US-Eastern:19980119T030000 6147 Figure 254 6149 13.9. Recurrence Rule 6151 Value Name: RECUR 6153 Purpose: This value type is used to identify properties that contain 6154 a recurrence rule specification. 6156 Description: If the property permits, multiple "recur" values are 6157 specified by a COMMA character (US-ASCII decimal 44) separated list 6158 of values. The value type is a structured value consisting of a list 6159 of one or more recurrence grammar parts. Each rule part is defined 6160 by a NAME=VALUE pair. The rule parts are separated from each other 6161 by the SEMICOLON character (US-ASCII decimal 59). The rule parts are 6162 not ordered in any particular sequence. Individual rule parts MUST 6163 only be specified once. 6165 The FREQ rule part identifies the type of recurrence rule. This rule 6166 part MUST be specified in the recurrence rule. Valid values include 6167 SECONDLY, to specify repeating events based on an interval of a 6168 second or more; MINUTELY, to specify repeating events based on an 6169 interval of a minute or more; HOURLY, to specify repeating events 6170 based on an interval of an hour or more; DAILY, to specify repeating 6171 events based on an interval of a day or more; WEEKLY, to specify 6172 repeating events based on an interval of a week or more; MONTHLY, to 6173 specify repeating events based on an interval of a month or more; and 6174 YEARLY, to specify repeating events based on an interval of a year or 6175 more. 6177 The INTERVAL rule part contains a positive integer representing how 6178 often the recurrence rule repeats. The default value is "1", meaning 6179 every second for a SECONDLY rule, or every minute for a MINUTELY 6180 rule, every hour for an HOURLY rule, every day for a DAILY rule, 6181 every week for a WEEKLY rule, every month for a MONTHLY rule and 6182 every year for a YEARLY rule. 6184 The UNTIL rule part defines a date-time value which bounds the 6185 recurrence rule in an inclusive manner. If the value specified by 6186 UNTIL is synchronized with the specified recurrence, this date or 6187 date-time becomes the last instance of the recurrence. If specified 6188 as a date-time value, then it MUST be specified in an UTC time 6189 format. If not present, and the COUNT rule part is also not present, 6190 the RRULE is considered to repeat forever. 6192 The COUNT rule part defines the number of occurrences at which to 6193 range-bound the recurrence. The "DTSTART" property value, if 6194 specified, counts as the first occurrence. 6196 The BYSECOND rule part specifies a COMMA character (US-ASCII decimal 6197 44) separated list of seconds within a minute. Valid values are 0 to 6198 59. The BYMINUTE rule part specifies a COMMA character (US-ASCII 6199 decimal 44) separated list of minutes within an hour. Valid values 6200 are 0 to 59. The BYHOUR rule part specifies a COMMA character (US- 6201 ASCII decimal 44) separated list of hours of the day. Valid values 6202 are 0 to 23. 6204 The BYDAY rule part specifies a COMMA character (US-ASCII decimal 44) 6205 separated list of days of the week; MO indicates Monday; TU indicates 6206 Tuesday; WE indicates Wednesday; TH indicates Thursday; FR indicates 6207 Friday; SA indicates Saturday; SU indicates Sunday. 6209 Each BYDAY value can also be preceded by a positive (+n) or negative 6210 (-n) integer. If present, this indicates the nth occurrence of the 6211 specific day within the MONTHLY or YEARLY RRULE. For example, within 6212 a MONTHLY rule, +1MO (or simply 1MO) represents the first Monday 6213 within the month, whereas -1MO represents the last Monday of the 6214 month. If an integer modifier is not present, it means all days of 6215 this type within the specified frequency. For example, within a 6216 MONTHLY rule, MO represents all Mondays within the month. 6218 The BYMONTHDAY rule part specifies a COMMA character (ASCII decimal 6219 44) separated list of days of the month. Valid values are 1 to 31 or 6220 -31 to -1. For example, -10 represents the tenth to the last day of 6221 the month. 6223 The BYYEARDAY rule part specifies a COMMA character (US-ASCII decimal 6224 44) separated list of days of the year. Valid values are 1 to 366 or 6225 -366 to -1. For example, -1 represents the last day of the year 6226 (December 31st) and -306 represents the 306th to the last day of the 6227 year (March 1st). 6229 The BYWEEKNO rule part specifies a COMMA character (US-ASCII decimal 6230 44) separated list of ordinals specifying weeks of the year. Valid 6231 values are 1 to 53 or -53 to -1. This corresponds to weeks according 6232 to week numbering as defined in [ISO 8601]. A week is defined as a 6233 seven day period, starting on the day of the week defined to be the 6234 week start (see WKST). Week number one of the calendar year is the 6235 first week which contains at least four (4) days in that calendar 6236 year. This rule part is only valid for YEARLY rules. For example, 3 6237 represents the third week of the year. 6239 Note: Assuming a Monday week start, week 53 can only occur when 6240 Thursday is January 1 or if it is a leap year and Wednesday is 6241 January 1. 6243 The BYMONTH rule part specifies a COMMA character (US-ASCII decimal 6244 44) separated list of months of the year. Valid values are 1 to 12. 6246 The WKST rule part specifies the day on which the workweek starts. 6247 Valid values are MO, TU, WE, TH, FR, SA and SU. This is significant 6248 when a WEEKLY RRULE has an interval greater than 1, and a BYDAY rule 6249 part is specified. This is also significant when in a YEARLY RRULE 6250 when a BYWEEKNO rule part is specified. The default value is MO. 6252 The BYSETPOS rule part specifies a COMMA character (US-ASCII decimal 6253 44) separated list of values which corresponds to the nth occurrence 6254 within the set of events specified by the rule. Valid values are 1 6255 to 366 or -366 to -1. It MUST only be used in conjunction with 6256 another BYxxx rule part. For example "the last work day of the 6257 month" could be represented as: 6259 RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 6261 Each BYSETPOS value can include a positive (+n) or negative (-n) 6262 integer. If present, this indicates the nth occurrence of the 6263 specific occurrence within the set of events specified by the rule. 6265 If BYxxx rule part values are found which are beyond the available 6266 scope (ie, BYMONTHDAY=30 in February), they are simply ignored. 6268 Information, not contained in the rule, necessary to determine the 6269 various recurrence instance start time and dates are derived from the 6270 Start Time (DTSTART) entry attribute. For example, 6271 "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the 6272 month or a time. This information would be the same as what is 6273 specified for DTSTART. 6275 BYxxx rule parts modify the recurrence in some manner. BYxxx rule 6276 parts for a period of time which is the same or greater than the 6277 frequency generally reduce or limit the number of occurrences of the 6278 recurrence generated. For example, "FREQ=DAILY;BYMONTH=1" reduces 6279 the number of recurrence instances from all days (if BYMONTH tag is 6280 not present) to all days in January. BYxxx rule parts for a period 6281 of time less than the frequency generally increase or expand the 6282 number of occurrences of the recurrence. For example, 6283 "FREQ=YEARLY;BYMONTH=1,2" increases the number of days within the 6284 yearly recurrence set from 1 (if BYMONTH tag is not present) to 2. 6286 If multiple BYxxx rule parts are specified, then after evaluating the 6287 specified FREQ and INTERVAL rule parts, the BYxxx rule parts are 6288 applied to the current set of evaluated occurrences in the following 6289 order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR, 6290 BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are evaluated. 6292 Here is an example of evaluating multiple BYxxx rule parts. 6294 DTSTART;TZID=US-Eastern:19970105T083000 6295 RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9; 6296 BYMINUTE=30 6298 First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to arrive 6299 at "every other year". Then, "BYMONTH=1" would be applied to arrive 6300 at "every January, every other year". Then, "BYDAY=SU" would be 6301 applied to arrive at "every Sunday in January, every other year". 6302 Then, "BYHOUR=8,9" would be applied to arrive at "every Sunday in 6303 January at 8 AM and 9 AM, every other year". Then, "BYMINUTE=30" 6304 would be applied to arrive at "every Sunday in January at 8:30 AM and 6305 9:30 AM, every other year". Then, lacking information from RRULE, 6306 the second is derived from DTSTART, to end up in "every Sunday in 6307 January at 8:30:00 AM and 9:30:00 AM, every other year". Similarly, 6308 if the BYMINUTE, BYHOUR, BYDAY, BYMONTHDAY or BYMONTH rule part were 6309 missing, the appropriate minute, hour, day or month would have been 6310 retrieved from the "DTSTART" property. 6312 No additional content value encoding (i.e., BACKSLASH character 6313 encoding) is defined for this value type. 6315 Formal Definition: The value type is defined by the following 6316 notation: 6318 recur = "FREQ"=freq *( 6320 ; either UNTIL or COUNT may appear in a 'recur', 6321 ; but UNTIL and COUNT MUST NOT occur in the same 'recur' 6323 ( ";" "UNTIL" "=" enddate ) / 6324 ( ";" "COUNT" "=" 1*DIGIT ) / 6326 ; the rest of these keywords are optional, 6327 ; but MUST NOT occur more than once 6329 ( ";" "INTERVAL" "=" 1*DIGIT ) / 6330 ( ";" "BYSECOND" "=" byseclist ) / 6331 ( ";" "BYMINUTE" "=" byminlist ) / 6332 ( ";" "BYHOUR" "=" byhrlist ) / 6333 ( ";" "BYDAY" "=" bywdaylist ) / 6334 ( ";" "BYMONTHDAY" "=" bymodaylist ) / 6335 ( ";" "BYYEARDAY" "=" byyrdaylist ) / 6336 ( ";" "BYWEEKNO" "=" bywknolist ) / 6337 ( ";" "BYMONTH" "=" bymolist ) / 6338 ( ";" "BYSETPOS" "=" bysplist ) / 6339 ( ";" "WKST" "=" weekday ) / 6340 ( ";" x-name "=" text ) 6341 ) 6343 freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY" 6344 / "WEEKLY" / "MONTHLY" / "YEARLY" 6346 enddate = date 6347 enddate =/ date-time ;An UTC value 6348 byseclist = seconds / ( seconds *("," seconds) ) 6350 seconds = 1DIGIT / 2DIGIT ;0 to 59 6352 byminlist = minutes / ( minutes *("," minutes) ) 6354 minutes = 1DIGIT / 2DIGIT ;0 to 59 6356 byhrlist = hour / ( hour *("," hour) ) 6358 hour = 1DIGIT / 2DIGIT ;0 to 23 6360 bywdaylist = weekdaynum / ( weekdaynum *("," weekdaynum) ) 6362 weekdaynum = [([plus] ordwk / minus ordwk)] weekday 6364 plus = "+" 6366 minus = "-" 6368 ordwk = 1DIGIT / 2DIGIT ;1 to 53 6370 weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" 6371 ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, 6372 ;FRIDAY, SATURDAY and SUNDAY days of the week. 6374 bymodaylist = monthdaynum / ( monthdaynum *("," monthdaynum) ) 6376 monthdaynum = ([plus] ordmoday) / (minus ordmoday) 6378 ordmoday = 1DIGIT / 2DIGIT ;1 to 31 6380 byyrdaylist = yeardaynum / ( yeardaynum *("," yeardaynum) ) 6382 yeardaynum = ([plus] ordyrday) / (minus ordyrday) 6384 ordyrday = 1DIGIT / 2DIGIT / 3DIGIT ;1 to 366 6386 bywknolist = weeknum / ( weeknum *("," weeknum) ) 6388 weeknum = ([plus] ordwk) / (minus ordwk) 6390 bymolist = monthnum / ( monthnum *("," monthnum) ) 6392 monthnum = 1DIGIT / 2DIGIT ;1 to 12 6394 bysplist = setposday / ( setposday *("," setposday) ) 6395 setposday = yeardaynum 6397 Example: The following is a rule which specifies 10 meetings which 6398 occur every other day: 6400 FREQ=DAILY;COUNT=10;INTERVAL=2 6402 Figure 258 6404 There are other examples specified in the "RRULE" specification. 6406 13.10. Float 6408 Value Name: FLOAT 6410 Purpose: This value type is used to identify properties that contain 6411 a real number value. 6413 Description: If the property permits, multiple "float" values are 6414 specified by a COMMA character (US-ASCII decimal 44) separated list 6415 of values. 6417 No additional content value encoding (i.e., BACKSLASH character 6418 encoding) is defined for this value type. 6420 Formal Definition: The value type is defined by the following 6421 notation: 6423 float = (["+"] / "-") 1*DIGIT ["." 1*DIGIT] 6425 Example: 6427 1000000.0000001 6428 1.333 6429 -3.14 6431 Figure 260 6433 13.11. Integer 6435 Value Name:INTEGER 6437 Purpose: This value type is used to identify properties that contain 6438 a signed integer value. 6440 Description: If the property permits, multiple "integer" values are 6441 specified by a COMMA character (US-ASCII decimal 44) separated list 6442 of values. The valid range for "integer" is -2147483648 to 6443 2147483647. If the sign is not specified, then the value is assumed 6444 to be positive. 6446 No additional content value encoding (i.e., BACKSLASH character 6447 encoding) is defined for this value type. 6449 Formal Definition: The value type is defined by the following 6450 notation: 6452 integer = (["+"] / "-") 1*DIGIT 6454 Example: 6456 1234567890 6457 -1234567890 6458 +1234567890 6459 432109876 6461 Figure 262 6463 13.12. Text 6465 Value Name: TEXT 6467 Purpose This value type is used to identify values that contain human 6468 readable text. 6470 Description: If the property permits, multiple "text" values are 6471 specified by a COMMA character (US-ASCII decimal 44) separated list 6472 of values. 6474 The language in which the text is represented can be controlled by 6475 the "LANGUAGE" property parameter. 6477 An intentional formatted text line break MUST only be included in a 6478 "TEXT" property value by representing the line break with the 6479 character sequence of BACKSLASH (US-ASCII decimal 92), followed by a 6480 LATIN SMALL LETTER N (US-ASCII decimal 110) or a LATIN CAPITAL LETTER 6481 N (US-ASCII decimal 78), that is "\n" or "\N". 6483 The "TEXT" property values may also contain special characters that 6484 are used to signify delimiters, such as a COMMA character for lists 6485 of values or a SEMICOLON character for structured values. In order 6486 to support the inclusion of these special characters in "TEXT" 6487 property values, they MUST be escaped with a BACKSLASH character. A 6488 BACKSLASH character (US-ASCII decimal 92) in a "TEXT" property value 6489 MUST be escaped with another BACKSLASH character. A COMMA character 6490 in a "TEXT" property value MUST be escaped with a BACKSLASH character 6491 (US-ASCII decimal 92). A SEMICOLON character in a "TEXT" property 6492 value MUST be escaped with a BACKSLASH character (US-ASCII decimal 6493 92). However, a COLON character in a "TEXT" property value SHALL NOT 6494 be escaped with a BACKSLASH character. 6496 Formal Definition: The character sets supported by this revision of 6497 iCalendar are UTF-8 and US ASCII thereof. The applicability to other 6498 character sets is for future work. The value type is defined by the 6499 following notation. 6501 text = *(TSAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR) 6502 ; Folded according to description above 6504 ESCAPED-CHAR = "\\" / "\;" / "\," / "\N" / "\n") 6505 ; \\ encodes \, \N or \n encodes newline 6506 ; \; encodes ;, \, encodes , 6508 TSAFE-CHAR = %x20-21 / %x23-2B / %x2D-39 / %x3C-5B 6509 %x5D-7E / NON-US-ASCII 6510 ; Any character except CTLs not needed by the current 6511 ; character set, DQUOTE, ";", ":", "\", "," 6513 Note: Certain other character sets may require modification of the 6514 above definitions, but this is beyond the scope of this document. 6516 Example: A multiple line value of: 6518 Project XYZ Final Review 6519 Conference Room - 3B 6520 Come Prepared. 6522 would be represented as: 6524 Project XYZ Final Review\nConference Room - 3B\nCome Prepared. 6526 Figure 264 6528 13.13. Time 6530 Value Name: TIME 6532 Purpose: This value type is used to identify values that contain a 6533 time of day. 6535 Description: If the property permits, multiple "time" values are 6536 specified by a COMMA character (US-ASCII decimal 44) separated list 6537 of values. No additional content value encoding (i.e., BACKSLASH 6538 character encoding) is defined for this value type. 6540 The "TIME" data type is used to identify values that contain a time 6541 of day. The format is based on the [ISO 8601] complete 6542 representation, basic format for a time of day. The text format 6543 consists of a two-digit 24-hour of the day (i.e., values 0-23), two- 6544 digit minute in the hour (i.e., values 0-59), and two-digit seconds 6545 in the minute (i.e., values 0-60). The seconds value of 60 MUST only 6546 to be used to account for "leap" seconds. Fractions of a second are 6547 not supported by this format. 6549 In parallel to the "DATE-TIME" definition above, the "TIME" data type 6550 expresses time values in three forms: 6552 The form of time with UTC offset MUST NOT be used. For example, the 6553 following is NOT VALID for a time value: 6555 230000-0800 ;Invalid time format 6557 FORM #1 LOCAL TIME 6559 The local time form is simply a time value that does not contain the 6560 UTC designator nor does it reference a time zone. For example, 11:00 6561 PM: 6563 230000 6565 Time values of this type are said to be "floating" and are not bound 6566 to any time zone in particular. They are used to represent the same 6567 hour, minute, and second value regardless of which time zone is 6568 currently being observed. For example, an event can be defined that 6569 indicates that an individual will be busy from 11:00 AM to 1:00 PM 6570 every day, no matter which time zone the person is in. In these 6571 cases, a local time can be specified. The recipient of an iCalendar 6572 object with a property value consisting of a local time, without any 6573 relative time zone information, SHOULD interpret the value as being 6574 fixed to whatever time zone the ATTENDEE is in at any given moment. 6575 This means that two ATTENDEEs may participate in the same event at 6576 different UTC times; floating time SHOULD only be used where that is 6577 reasonable behavior. 6579 In most cases, a fixed time is desired. To properly communicate a 6580 fixed time in a property value, either UTC time or local time with 6581 time zone reference MUST be specified. 6583 The use of local time in a TIME value without the TZID property 6584 parameter is to be interpreted as a local time value, regardless of 6585 the existence of "VTIMEZONE" calendar components in the iCalendar 6586 object. 6588 FORM #2: UTC TIME 6590 UTC time, or absolute time, is identified by a LATIN CAPITAL LETTER Z 6591 suffix character (US-ASCII decimal 90), the UTC designator, appended 6592 to the time value. For example, the following represents 07:00 AM 6593 UTC: 6595 070000Z 6597 The TZID property parameter MUST NOT be applied to TIME properties 6598 whose time values are specified in UTC. 6600 FORM #3: LOCAL TIME AND TIME ZONE REFERENCE 6602 The local time with reference to time zone information form is 6603 identified by the use the TZID property parameter to reference the 6604 appropriate time zone definition. TZID is discussed in detail in the 6605 section on Time Zone. 6607 Formal Definition: The data type is defined by the following 6608 notation: 6610 time = time-hour time-minute time-second [time-utc] 6612 time-hour = 2DIGIT ;00-23 6613 time-minute = 2DIGIT ;00-59 6614 time-second = 2DIGIT ;00-60 6615 ;The "60" value is used to account for "leap" seconds. 6617 time-utc = "Z" 6619 Example: The following represents 8:30 AM in New York in Winter, five 6620 hours behind UTC, in each of the three formats using the "X- 6621 TIMEOFDAY" non-standard property: 6623 X-TIMEOFDAY:083000 6625 X-TIMEOFDAY:133000Z 6627 X-TIMEOFDAY;TZID=US-Eastern:083000 6629 Figure 272 6631 13.14. URI 6633 Value Name: URI 6635 Purpose: This value type is used to identify values that contain a 6636 uniform resource identifier (URI) type of reference to the property 6637 value. 6639 Description: This data type might be used to reference binary 6640 information, for values that are large, or otherwise undesirable to 6641 include directly in the iCalendar object. 6643 The URI value formats in RFC 1738, RFC 2111 and any other IETF 6644 registered value format can be specified. 6646 Any IANA registered URI format can be used. These include, but are 6647 not limited to, those defined in RFC 1738 and RFC 2111. 6649 When a property parameter value is a URI value type, the URI MUST be 6650 specified as a quoted-string value. 6652 No additional content value encoding (i.e., BACKSLASH character 6653 encoding) is defined for this value type. 6655 Formal Definition: The data type is defined by the following 6656 notation: 6658 uri = 6660 Example: The following is a URI for a network file: 6662 http://host1.com/my-report.txt 6664 Figure 274 6666 13.15. UTC Offset 6668 Value Name: UTC-OFFSET 6670 Purpose: This value type is used to identify properties that contain 6671 an offset from UTC to local time. 6673 Description: The PLUS SIGN character MUST be specified for positive 6674 UTC offsets (i.e., ahead of UTC). The MINUS SIGN character MUST be 6675 specified for negative UTC offsets (i.e., behind of UTC). The value 6676 of "-0000" and "-000000" are not allowed. The time-second, if 6677 present, may not be 60; if absent, it defaults to zero. 6679 No additional content value encoding (i.e., BACKSLASH character 6680 encoding) is defined for this value type. 6682 Formal Definition: The data type is defined by the following 6683 notation: 6685 utc-offset = time-numzone ;As defined above in time data type 6687 time-numzone = ("+" / "-") time-hour time-minute [time- 6688 second] 6690 Example: The following UTC offsets are given for standard time for 6691 New York (five hours behind UTC) and Geneva (one hour ahead of UTC): 6693 -0500 6695 +0100 6697 Figure 276 6699 14. Security Considerations 6701 SPOOFING - - In this memo, the "Organizer" is the only person 6702 authorized to make changes to an existing "VEVENT", "VTODO", 6703 "VJOURNAL" calendar component and redistribute the updates to the 6704 "Attendees". An iCalendar object that maliciously changes or cancels 6705 an existing "VEVENT", "VTODO" or "VJOURNAL" or "VFREEBUSY" calendar 6706 component might be constructed by someone other than the "Organizer" 6707 and sent to the "Attendees". In addition in this memo, other than 6708 the "Organizer", an "Attendee" of a "VEVENT", "VTODO", "VJOURNAL" 6709 calendar component is the only other person authorized to update any 6710 parameter associated with their "ATTENDEE" property and send it to 6711 the "Organizer". An iCalendar object that maliciously changes the 6712 "ATTENDEE" parameters can be constructed by someone other than the 6713 real "Attendee" and sent to the "Organizer". 6715 PROCEDURAL ALARMS - - An iCalendar object can be created that 6716 contains a "VEVENT" and "VTODO" calendar component with "VALARM" 6717 calendar components. The "VALARM" calendar component can be of type 6718 PROCEDURE and can have an attachment containing some sort of 6719 executable program. Implementations that incorporate these types of 6720 alarms are subject to any virus or malicious attack that might occur 6721 as a result of executing the attachment. 6723 ATTACHMENTS - - An iCalendar object can include references to Uniform 6724 Resource Locators that can be programmed resources. 6726 Implementers and users of this memo should be aware of the network 6727 security implications of accepting and parsing such information. In 6728 addition, the security considerations observed by implementations of 6729 electronic mail systems should be followed for this memo. 6731 15. IANA MIME Media Type Registration 6733 [[Comment.6: We will need to check out the new Media Type 6734 Registration Procedures defined in draft-freed-media-type-reg-05.txt. 6735 --bdesruisseaux]] 6737 The following text is intended to register this memo as the MIME 6738 content type "text/calendar". 6740 To: ietf-types@iana.org 6742 Subject: Registration of MIME content type text/calendar. 6744 MIME media type name: text 6746 MIME subtype name: calendar 6748 Required parameters: none 6750 Optional parameters: charset, method, component and optinfo 6752 The "charset" parameter is defined in MIME Media Types [5]. 6754 The "method" parameter contains the iCalendar object method. The 6755 parameter is to be used as a guide for applications interpreting 6756 the information contained within the body part. It SHOULD NOT be 6757 used to exclude or require particular pieces of information unless 6758 the identified method definition specifically calls for this 6759 behavior. Unless specifically forbidden by a particular method 6760 definition, a text/calendar content type can contain any set of 6761 properties permitted by the Calendaring and Scheduling Core Object 6762 Specification. The "method" parameter MUST be the same value as 6763 that specified in the "METHOD" component property in the iCalendar 6764 object. If one is present, the other MUST also be present. 6766 The value for the "method" parameter is defined as follows: 6768 method = 1*(ALPHA / DIGIT / "-") 6769 ; IANA registered iCalendar object method 6771 The "component" parameter conveys the type of iCalendar calendar 6772 component within the body part. If the iCalendar object contains 6773 more than one calendar component type, then multiple component 6774 parameters MUST be specified. [[Comment.7: I believe this is 6775 ambiguous about whether the 'component' parameter is always 6776 required. --Lisa D]] 6777 The value for the "component" parameter is defined as follows: 6779 component = ("VEVENT" / "VTODO" / "VJOURNAL" / "VFREEBUSY" 6780 / "VTIMEZONE" / x-name / iana-token) 6782 The "optinfo" parameter conveys optional information about the 6783 iCalendar object within the body part. This parameter can only 6784 specify semantics already specified by the iCalendar object and 6785 that can be otherwise determined by parsing the body part. In 6786 addition, the optional information specified by this parameter 6787 MUST be consistent with that information specified by the 6788 iCalendar object. For example, it can be used to convey the 6789 "Attendee" response status to a meeting request. The parameter 6790 value consists of a string value. 6792 The "optinfo" parameter can be specified multiple times. This 6793 parameter MAY only specify semantics already specified by the 6794 iCalendar object and that can be otherwise determined by parsing 6795 the body part. [[Comment.8: I believe that 'optinfo' is 6796 underspecified and interoperability probably cannot even be 6797 tested. If nobody uses it we need to delete this parameter. 6798 --Lisa D]] 6800 The value for the "optinfo" parameter is defined as follows: 6802 optinfo = infovalue / qinfovalue 6804 infovalue = iana-token / x-name 6806 qinfovalue = DQUOTE (infovalue) DQUOTE 6808 Encoding Considerations: This MIME content type can contain 8bit 6809 characters, so the use of quoted-printable or BASE64 MIME content- 6810 transfer-encodings might be necessary when iCalendar objects are 6811 transferred across protocols restricted to the 7bit repertoire. 6812 Note that a text valued property in the content entity can also 6813 have content encoding of special characters using a BACKSLASH 6814 character (US-ASCII decimal 92) escapement technique. This means 6815 that content values can end up encoded twice. 6817 Security Considerations: See the Security Considerations section of 6818 this document. 6820 Interoperability Considerations: This MIME content type is intended 6821 to define a common format for conveying calendaring and scheduling 6822 information between different systems. 6824 Published Specification: This document. 6826 Applications Which Use This Media Type: This media type is designed 6827 for widespread use by Internet calendaring and scheduling 6828 applications. In addition, applications in the workflow and 6829 document management area might find this media type applicable. 6830 The [ITIP] and [IMIP] Internet protocols directly use this type. 6831 [[Comment.9: Consider adding CalDAV. --Lisa D]] 6833 Magic Numbers: None 6835 File Extensions: The file extension of "ics" is to be used to 6836 designate a file containing (an arbitrary set of) calendaring and 6837 scheduling information consistent with this MIME content type. 6838 The file extension of "ifb" is to be used to designate a file 6839 containing free or busy time information consistent with this MIME 6840 content type. 6842 Macintosh file type codes: The file type code of "iCal" is to be 6843 used in Apple MacIntosh operating system environments to designate 6844 a file containing calendaring and scheduling information 6845 consistent with this MIME media type. The file type code of 6846 "iFBf" is to be used in Apple MacIntosh operating system 6847 environments to designate a file containing free or busy time 6848 information consistent with this MIME media type. 6850 Contact for Further Information: TBD 6852 Intended Usage: COMMON 6854 16. Acknowledgements 6856 The editors of this document wish to thank Frank Dawson and Stenerson 6857 Derik, the original author of this document. 6859 The editors would also like to thank the Calendaring and Scheduling 6860 Consortium for advice with this specification, and for organizing 6861 interoperability testing events to help refine it. 6863 17. Normative References 6865 [1] Crocker, D., "Standard for the format of ARPA Internet text 6866 messages", STD 11, RFC 822, August 1982. 6868 [2] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform 6869 Resource Locators (URL)", RFC 1738, December 1994. 6871 [3] Alvestrand, H., "Tags for the Identification of Languages", 6872 RFC 1766, March 1995. 6874 [4] Freed, N. and N. Borenstein, "Multipurpose Internet Mail 6875 Extensions (MIME) Part One: Format of Internet Message Bodies", 6876 RFC 2045, November 1996. 6878 [5] Freed, N. and N. Borenstein, "Multipurpose Internet Mail 6879 Extensions (MIME) Part Two: Media Types", RFC 2046, 6880 November 1996. 6882 [6] Freed, N., Klensin, J., and J. Postel, "Multipurpose Internet 6883 Mail Extensions (MIME) Part Four: Registration Procedures", 6884 BCP 13, RFC 2048, November 1996. 6886 [7] Bradner, S., "Key words for use in RFCs to Indicate Requirement 6887 Levels", BCP 14, RFC 2119, March 1997. 6889 [8] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 6890 Specifications: ABNF", RFC 2234, November 1997. 6892 [9] Yergeau, F., "UTF-8, a transformation format of ISO 10646", 6893 RFC 2279, January 1998. 6895 [10] Dawson, F. and T. Howes, "vCard MIME Directory Profile", 6896 RFC 2426, September 1998. 6898 [11] Dawson, F. and Stenerson, D., "Internet Calendaring and 6899 Scheduling Core Object Specification (iCalendar)", RFC 2445, 6900 November 1998. 6902 [12] Silverberg, S., Mansour, S., Dawson, F., and R. Hopson, 6903 "iCalendar Transport-Independent Interoperability Protocol 6904 (iTIP) Scheduling Events, BusyTime, To-dos and Journal 6905 Entries", RFC 2446, November 1998. 6907 [13] International Organization for Standardization, "Data elements 6908 and interchange formats- Information interchange- 6909 -Representation of dates and times", 6910 . 6912 [14] International Organization for Standardization, "Information 6913 Technology_SGML Support Facilities- -Registration Procedures 6914 for Public Text Owner Identifiers, Second Edition", 6915 April 1991, . 6918 [15] "Time zone code and data, ftp://elsie.nci.nih.gov/pub/, updated 6919 periodically", October 2005, . 6921 Authors' Addresses 6923 Bernard Desruisseaux (editor) 6924 Oracle Corporation 6925 600 blvd. de Maisonneuve West 6926 Suite 1900 6927 Montreal, QC H3A 3J2 6928 CA 6930 Email: bernard.desruisseaux@oracle.com 6931 URI: http://www.oracle.com/ 6933 Chris Stoner (editor) 6934 IBM 6935 5 Technology Park Drive 6936 Westford, MA 01886 6937 US 6939 Email: cstoner1@us.ibm.com 6940 URI: http://www.ibm.com/ 6942 Intellectual Property Statement 6944 The IETF takes no position regarding the validity or scope of any 6945 Intellectual Property Rights or other rights that might be claimed to 6946 pertain to the implementation or use of the technology described in 6947 this document or the extent to which any license under such rights 6948 might or might not be available; nor does it represent that it has 6949 made any independent effort to identify any such rights. Information 6950 on the procedures with respect to rights in RFC documents can be 6951 found in BCP 78 and BCP 79. 6953 Copies of IPR disclosures made to the IETF Secretariat and any 6954 assurances of licenses to be made available, or the result of an 6955 attempt made to obtain a general license or permission for the use of 6956 such proprietary rights by implementers or users of this 6957 specification can be obtained from the IETF on-line IPR repository at 6958 http://www.ietf.org/ipr. 6960 The IETF invites any interested party to bring to its attention any 6961 copyrights, patents or patent applications, or other proprietary 6962 rights that may cover technology that may be required to implement 6963 this standard. Please address the information to the IETF at 6964 ietf-ipr@ietf.org. 6966 Disclaimer of Validity 6968 This document and the information contained herein are provided on an 6969 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 6970 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 6971 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 6972 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 6973 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 6974 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 6976 Copyright Statement 6978 Copyright (C) The Internet Society (2005). This document is subject 6979 to the rights, licenses and restrictions contained in BCP 78, and 6980 except as set forth therein, the authors retain all their rights. 6982 Acknowledgment 6984 Funding for the RFC Editor function is currently provided by the 6985 Internet Society.