idnits 2.17.1 draft-ietf-calsify-rfc2445bis-07.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, updated by RFC 4748 on line 7881. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 7892. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 7899. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 7905. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. -- The draft header indicates that this document obsoletes RFC2445, but the abstract doesn't seem to mention this, which it should. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year == 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. -- 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 (July 8, 2007) is 6136 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) ** Obsolete normative reference: RFC 2368 (Obsoleted by RFC 6068) ** Obsolete normative reference: RFC 2822 (Obsoleted by RFC 5322) ** Obsolete normative reference: RFC 4234 (Obsoleted by RFC 5234) ** Obsolete normative reference: RFC 4646 (Obsoleted by RFC 5646) == Outdated reference: A later version (-10) exists of draft-ietf-calsify-2446bis-03 == Outdated reference: A later version (-11) exists of draft-ietf-calsify-rfc2447bis-03 -- Obsolete informational reference (is this intentional?): RFC 2425 (Obsoleted by RFC 6350) -- Obsolete informational reference (is this intentional?): RFC 2426 (Obsoleted by RFC 6350) Summary: 6 errors (**), 0 flaws (~~), 5 warnings (==), 10 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 Obsoletes: 2445 (if approved) July 8, 2007 5 Intended status: Standards Track 6 Expires: January 9, 2008 8 Internet Calendaring and Scheduling Core Object Specification 9 (iCalendar) 10 draft-ietf-calsify-rfc2445bis-07 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 January 9, 2008. 37 Copyright Notice 39 Copyright (C) The IETF Trust (2007). 41 Abstract 43 This document defines the iCalendar data format for representing and 44 exchanging calendaring and scheduling information such as events, to- 45 dos, journal entries and free/busy information, independent of any 46 particular calendar service or protocol. 48 Editorial Note (To be removed by RFC Editor prior to publication) 50 This document is a product of the Calendaring and Scheduling 51 Standards Simplification (Calsify) working group of the Internet 52 Engineering Task Force. Comments on this draft are welcomed, and 53 should be addressed to the ietf-calsify@osafoundation.org [1] mailing 54 list. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 59 2. Basic Grammar and Conventions . . . . . . . . . . . . . . . . 7 60 2.1. Formatting Conventions . . . . . . . . . . . . . . . . . 7 61 2.2. Related Memos . . . . . . . . . . . . . . . . . . . . . . 8 62 3. iCalendar Object Specification . . . . . . . . . . . . . . . 9 63 3.1. Content Lines . . . . . . . . . . . . . . . . . . . . . . 9 64 3.1.1. List and Field Separators . . . . . . . . . . . . . . 11 65 3.1.2. Multiple Values . . . . . . . . . . . . . . . . . . . 12 66 3.1.3. Binary Content . . . . . . . . . . . . . . . . . . . 12 67 3.1.4. Character Set . . . . . . . . . . . . . . . . . . . . 13 68 3.2. Property Parameters . . . . . . . . . . . . . . . . . . . 13 69 3.2.1. Alternate Text Representation . . . . . . . . . . . . 14 70 3.2.2. Common Name . . . . . . . . . . . . . . . . . . . . . 15 71 3.2.3. Calendar User Type . . . . . . . . . . . . . . . . . 16 72 3.2.4. Delegators . . . . . . . . . . . . . . . . . . . . . 16 73 3.2.5. Delegatees . . . . . . . . . . . . . . . . . . . . . 17 74 3.2.6. Directory Entry Reference . . . . . . . . . . . . . . 18 75 3.2.7. Inline Encoding . . . . . . . . . . . . . . . . . . . 18 76 3.2.8. Format Type . . . . . . . . . . . . . . . . . . . . . 19 77 3.2.9. Free/Busy Time Type . . . . . . . . . . . . . . . . . 19 78 3.2.10. Language . . . . . . . . . . . . . . . . . . . . . . 20 79 3.2.11. Group or List Membership . . . . . . . . . . . . . . 21 80 3.2.12. Participation Status . . . . . . . . . . . . . . . . 22 81 3.2.13. Alarm Trigger Relationship . . . . . . . . . . . . . 24 82 3.2.14. Relationship Type . . . . . . . . . . . . . . . . . . 24 83 3.2.15. Participation Role . . . . . . . . . . . . . . . . . 25 84 3.2.16. RSVP Expectation . . . . . . . . . . . . . . . . . . 26 85 3.2.17. Sent By . . . . . . . . . . . . . . . . . . . . . . . 27 86 3.2.18. Time Zone Identifier . . . . . . . . . . . . . . . . 27 87 3.2.19. Value Data Types . . . . . . . . . . . . . . . . . . 28 88 3.3. Property Value Data Types . . . . . . . . . . . . . . . . 29 89 3.3.1. Binary . . . . . . . . . . . . . . . . . . . . . . . 30 90 3.3.2. Boolean . . . . . . . . . . . . . . . . . . . . . . . 30 91 3.3.3. Calendar User Address . . . . . . . . . . . . . . . . 31 92 3.3.4. Date . . . . . . . . . . . . . . . . . . . . . . . . 31 93 3.3.5. Date-Time . . . . . . . . . . . . . . . . . . . . . . 32 94 3.3.6. Duration . . . . . . . . . . . . . . . . . . . . . . 34 95 3.3.7. Float . . . . . . . . . . . . . . . . . . . . . . . . 36 96 3.3.8. Integer . . . . . . . . . . . . . . . . . . . . . . . 36 97 3.3.9. Period of Time . . . . . . . . . . . . . . . . . . . 37 98 3.3.10. Recurrence Rule . . . . . . . . . . . . . . . . . . . 38 99 3.3.11. Text . . . . . . . . . . . . . . . . . . . . . . . . 45 100 3.3.12. Time . . . . . . . . . . . . . . . . . . . . . . . . 47 101 3.3.13. URI . . . . . . . . . . . . . . . . . . . . . . . . . 49 102 3.3.14. UTC Offset . . . . . . . . . . . . . . . . . . . . . 49 103 3.4. iCalendar Object . . . . . . . . . . . . . . . . . . . . 50 104 3.5. Property . . . . . . . . . . . . . . . . . . . . . . . . 51 105 3.6. Calendar Components . . . . . . . . . . . . . . . . . . . 51 106 3.6.1. Event Component . . . . . . . . . . . . . . . . . . . 52 107 3.6.2. To-do Component . . . . . . . . . . . . . . . . . . . 56 108 3.6.3. Journal Component . . . . . . . . . . . . . . . . . . 58 109 3.6.4. Free/Busy Component . . . . . . . . . . . . . . . . . 60 110 3.6.5. Time Zone Component . . . . . . . . . . . . . . . . . 63 111 3.6.6. Alarm Component . . . . . . . . . . . . . . . . . . . 72 112 3.7. Calendar Properties . . . . . . . . . . . . . . . . . . . 77 113 3.7.1. Calendar Scale . . . . . . . . . . . . . . . . . . . 77 114 3.7.2. Method . . . . . . . . . . . . . . . . . . . . . . . 78 115 3.7.3. Product Identifier . . . . . . . . . . . . . . . . . 79 116 3.7.4. Version . . . . . . . . . . . . . . . . . . . . . . . 80 117 3.8. Component Properties . . . . . . . . . . . . . . . . . . 81 118 3.8.1. Descriptive Component Properties . . . . . . . . . . 81 119 3.8.1.1. Attachment . . . . . . . . . . . . . . . . . . . 81 120 3.8.1.2. Categories . . . . . . . . . . . . . . . . . . . 82 121 3.8.1.3. Classification . . . . . . . . . . . . . . . . . 83 122 3.8.1.4. Comment . . . . . . . . . . . . . . . . . . . . . 84 123 3.8.1.5. Description . . . . . . . . . . . . . . . . . . . 85 124 3.8.1.6. Geographic Position . . . . . . . . . . . . . . . 86 125 3.8.1.7. Location . . . . . . . . . . . . . . . . . . . . 88 126 3.8.1.8. Percent Complete . . . . . . . . . . . . . . . . 89 127 3.8.1.9. Priority . . . . . . . . . . . . . . . . . . . . 90 128 3.8.1.10. Resources . . . . . . . . . . . . . . . . . . . . 92 129 3.8.1.11. Status . . . . . . . . . . . . . . . . . . . . . 93 130 3.8.1.12. Summary . . . . . . . . . . . . . . . . . . . . . 94 131 3.8.2. Date and Time Component Properties . . . . . . . . . 95 132 3.8.2.1. Date/Time Completed . . . . . . . . . . . . . . . 95 133 3.8.2.2. Date/Time End . . . . . . . . . . . . . . . . . . 96 134 3.8.2.3. Date/Time Due . . . . . . . . . . . . . . . . . . 97 135 3.8.2.4. Date/Time Start . . . . . . . . . . . . . . . . . 99 136 3.8.2.5. Duration . . . . . . . . . . . . . . . . . . . . 100 137 3.8.2.6. Free/Busy Time . . . . . . . . . . . . . . . . . 101 138 3.8.2.7. Time Transparency . . . . . . . . . . . . . . . . 102 139 3.8.3. Time Zone Component Properties . . . . . . . . . . . 103 140 3.8.3.1. Time Zone Identifier . . . . . . . . . . . . . . 103 141 3.8.3.2. Time Zone Name . . . . . . . . . . . . . . . . . 105 142 3.8.3.3. Time Zone Offset From . . . . . . . . . . . . . . 106 143 3.8.3.4. Time Zone Offset To . . . . . . . . . . . . . . . 106 144 3.8.3.5. Time Zone URL . . . . . . . . . . . . . . . . . . 107 145 3.8.4. Relationship Component Properties . . . . . . . . . . 108 146 3.8.4.1. Attendee . . . . . . . . . . . . . . . . . . . . 108 147 3.8.4.2. Contact . . . . . . . . . . . . . . . . . . . . . 111 148 3.8.4.3. Organizer . . . . . . . . . . . . . . . . . . . . 112 149 3.8.4.4. Recurrence ID . . . . . . . . . . . . . . . . . . 114 150 3.8.4.5. Related To . . . . . . . . . . . . . . . . . . . 116 151 3.8.4.6. Uniform Resource Locator . . . . . . . . . . . . 118 152 3.8.4.7. Unique Identifier . . . . . . . . . . . . . . . . 118 153 3.8.5. Recurrence Component Properties . . . . . . . . . . . 120 154 3.8.5.1. Exception Date/Times . . . . . . . . . . . . . . 120 155 3.8.5.2. Recurrence Date/Times . . . . . . . . . . . . . . 122 156 3.8.5.3. Recurrence Rule . . . . . . . . . . . . . . . . . 123 157 3.8.6. Alarm Component Properties . . . . . . . . . . . . . 134 158 3.8.6.1. Action . . . . . . . . . . . . . . . . . . . . . 134 159 3.8.6.2. Repeat Count . . . . . . . . . . . . . . . . . . 134 160 3.8.6.3. Trigger . . . . . . . . . . . . . . . . . . . . . 135 161 3.8.7. Change Management Component Properties . . . . . . . 138 162 3.8.7.1. Date/Time Created . . . . . . . . . . . . . . . . 138 163 3.8.7.2. Date/Time Stamp . . . . . . . . . . . . . . . . . 138 164 3.8.7.3. Last Modified . . . . . . . . . . . . . . . . . . 139 165 3.8.7.4. Sequence Number . . . . . . . . . . . . . . . . . 140 166 3.8.8. Miscellaneous Component Properties . . . . . . . . . 142 167 3.8.8.1. IANA Properties . . . . . . . . . . . . . . . . . 142 168 3.8.8.2. Non-standard Properties . . . . . . . . . . . . . 143 169 3.8.8.3. Request Status . . . . . . . . . . . . . . . . . 144 170 4. iCalendar Object Examples . . . . . . . . . . . . . . . . . . 147 171 5. Recommended Practices . . . . . . . . . . . . . . . . . . . . 151 172 6. Internationalization Considerations . . . . . . . . . . . . . 152 173 7. Security Considerations . . . . . . . . . . . . . . . . . . . 152 174 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 152 175 8.1. iCalendar Media Type Registration . . . . . . . . . . . . 153 176 8.2. New iCalendar Elements Registration . . . . . . . . . . . 156 177 8.2.1. iCalendar Elements Registration Procedure . . . . . . 156 178 8.2.2. Registration Template for Components . . . . . . . . 156 179 8.2.3. Registration Template for Properties . . . . . . . . 157 180 8.2.4. Registration Template for Parameters . . . . . . . . 158 181 8.2.5. Registration Template for Value Data Types . . . . . 158 182 8.2.6. Registration Template for Values . . . . . . . . . . 158 183 8.3. Initial iCalendar Elements Registries . . . . . . . . . . 159 184 8.3.1. Components Registry . . . . . . . . . . . . . . . . . 159 185 8.3.2. Properties Registry . . . . . . . . . . . . . . . . . 160 186 8.3.3. Parameters Registry . . . . . . . . . . . . . . . . . 161 187 8.3.4. Value Data Types Registry . . . . . . . . . . . . . . 162 188 8.3.5. Calendar User Types Registry . . . . . . . . . . . . 163 189 8.3.6. Free/Busy Time Types Registry . . . . . . . . . . . . 163 190 8.3.7. Participation Statuses Registry . . . . . . . . . . . 163 191 8.3.8. Relationship Types Registry . . . . . . . . . . . . . 164 192 8.3.9. Participation Roles Registry . . . . . . . . . . . . 164 193 8.3.10. Actions Registry . . . . . . . . . . . . . . . . . . 164 194 8.3.11. Classifications Registry . . . . . . . . . . . . . . 164 195 8.3.12. Methods Registry . . . . . . . . . . . . . . . . . . 165 196 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 165 197 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 165 198 10.1. Normative References . . . . . . . . . . . . . . . . . . 165 199 10.2. Informative References . . . . . . . . . . . . . . . . . 167 200 Appendix A. Differences from RFC 2445 . . . . . . . . . . . . . 168 201 A.1. New restrictions . . . . . . . . . . . . . . . . . . . . 168 202 A.2. Restrictions removed . . . . . . . . . . . . . . . . . . 168 203 A.3. Deprecated features . . . . . . . . . . . . . . . . . . . 168 204 Appendix B. Change Log (to be removed by RFC Editor prior to 205 publication) . . . . . . . . . . . . . . . . . . . . 169 206 B.1. Changes in -07 . . . . . . . . . . . . . . . . . . . . . 169 207 B.2. Changes in -06 . . . . . . . . . . . . . . . . . . . . . 170 208 B.3. Changes in -05 . . . . . . . . . . . . . . . . . . . . . 172 209 B.4. Changes in -04 . . . . . . . . . . . . . . . . . . . . . 172 210 B.5. Changes in -03 . . . . . . . . . . . . . . . . . . . . . 174 211 B.6. Changes in -02 . . . . . . . . . . . . . . . . . . . . . 174 212 B.7. Changes in -01 . . . . . . . . . . . . . . . . . . . . . 175 213 Appendix C. Open issues (to be removed by RFC Editor prior to 214 publication) . . . . . . . . . . . . . . . . . . . . 175 215 C.1. introduction . . . . . . . . . . . . . . . . . . . . . . 175 216 C.2. #issue11+4.3.10_byxxx_rule_part_examples . . . . . . . . 175 217 C.3. #issue63+4.8.5.3_rdate_and_dtstart . . . . . . . . . . . 176 219 1. Introduction 221 The use of calendaring and scheduling has grown considerably in the 222 last decade. Enterprise and inter-enterprise business has become 223 dependent on rapid scheduling of events and actions using this 224 information technology. However, the longer term growth of 225 calendaring and scheduling is currently limited by the lack of 226 Internet standards for the message content types that are central to 227 these knowledgeware applications. This memo is intended to progress 228 the level of interoperability possible between dissimilar calendaring 229 and scheduling applications. This memo defines a MIME content type 230 for exchanging electronic calendaring and scheduling information. 231 The Internet Calendaring and Scheduling Core Object Specification, or 232 iCalendar, allows for the capture and exchange of information 233 normally stored within a calendaring and scheduling application; such 234 as a Personal Information Manager (PIM) or a Group Scheduling 235 product. 237 The iCalendar format is suitable as an exchange format between 238 applications or systems. The format is defined in terms of a MIME 239 content type. This will enable the object to be exchanged using 240 several transports, including but not limited to SMTP, HTTP, a file 241 system, desktop interactive protocols such as the use of a memory- 242 based clipboard or drag/drop interactions, point-to-point 243 asynchronous communication, wired-network transport, or some form of 244 unwired transport such as infrared might also be used. 246 The memo also provides for the definition of iCalendar object methods 247 that will map this content type to a set of messages for supporting 248 calendaring and scheduling operations such as requesting, replying 249 to, modifying, and canceling meetings or appointments, to-dos and 250 journal entries. The iCalendar object methods can be used to define 251 other calendaring and scheduling operations such a requesting for and 252 replying with free/busy time data. Such a scheduling protocol is 253 defined in the iCalendar Transport-independent Interoperability 254 Protocol (iTIP) defined in [I-D.ietf-calsify-2446bis]. 256 The memo also includes a formal grammar for the content type based on 257 the Internet ABNF defined in [RFC4234]. This ABNF is required for 258 the implementation of parsers and to serve as the definitive 259 reference when ambiguities or questions arise in interpreting the 260 descriptive prose definition of the memo. Additional restrictions 261 that could not easily be expressed with the ABNF syntax are specified 262 as comments in the ABNF. Comments with normative statements should 263 be treated as such. 265 2. Basic Grammar and Conventions 267 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 268 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" and 269 "OPTIONAL" in this document are to be interpreted as described in 270 [RFC2119]. 272 This memo makes use of both a descriptive prose and a more formal 273 notation for defining the calendaring and scheduling format. 275 The notation used in this memo is the ABNF notation of [RFC4234]. 276 Readers intending on implementing the format defined in this memo 277 should be familiar with this notation in order to properly interpret 278 the specifications of this memo. 280 All numeric values used in this memo are given in decimal notation. 282 All names of properties, property parameters, enumerated property 283 values and property parameter values are case-insensitive. However, 284 all other property values are case-sensitive, unless otherwise 285 stated. 287 Note: All indented editorial notes, such as this one, are intended 288 to provide the reader with additional information. The 289 information is not essential to the building of an implementation 290 conformant with this memo. The information is provided to 291 highlight a particular feature or characteristic of the memo. 293 The format for the iCalendar object is based on the syntax of the 294 text/directory media type [RFC2425]. While the iCalendar object is 295 not a profile of the text/directory media type [RFC2425], it does 296 reuse a number of the elements from the [RFC2425] specification. 298 2.1. Formatting Conventions 300 The elements defined in this memo are defined in prose. Many of the 301 terms used to describe these have common usage that is different than 302 the standards usage of this memo. In order to reference within this 303 memo elements of the calendaring and scheduling model, core object 304 (this memo) or interoperability protocol [I-D.ietf-calsify-2446bis] 305 some formatting conventions have been used. Calendaring and 306 scheduling roles are referred to in quoted-strings of text with the 307 first character of each word in upper case. For example, "Organizer" 308 refers to a role of a "Calendar User" within the scheduling protocol 309 defined by [I-D.ietf-calsify-2446bis]. Calendar components defined 310 by this memo are referred to with capitalized, quoted-strings of 311 text. All calendar components start with the letter "V". For 312 example, "VEVENT" refers to the event calendar component, "VTODO" 313 refers to the to-do calendar component and "VJOURNAL" refers to the 314 daily journal calendar component. Scheduling methods defined by iTIP 315 [I-D.ietf-calsify-2446bis] are referred to with capitalized, quoted- 316 strings of text. For example, "REQUEST" refers to the method for 317 requesting a scheduling calendar component be created or modified, 318 "REPLY" refers to the method a recipient of a request uses to update 319 their status with the "Organizer" of the calendar component. 321 The properties defined by this memo are referred to with capitalized, 322 quoted-strings of text, followed by the word "property". For 323 example, "ATTENDEE" property refers to the iCalendar property used to 324 convey the calendar address of a calendar user. Property parameters 325 defined by this memo are referred to with lowercase, quoted-strings 326 of text, followed by the word "parameter". For example, "value" 327 parameter refers to the iCalendar property parameter used to override 328 the default value type for a property value. Enumerated values 329 defined by this memo are referred to with capitalized text, either 330 alone or followed by the word "value". For example, the "MINUTELY" 331 value can be used with the "FREQ" component of the "RECUR" value type 332 to specify repeating components based on an interval of one minute or 333 more. 335 In this document, descriptions of characters are of the form 336 "character name (codepoint)", where "codepoint" is from the US-ASCII 337 character set. The "character name" is the authoritative 338 description; (codepoint) is a reference to that character in US- 339 ASCII. 341 2.2. Related Memos 343 Implementers will need to be familiar with several other memos that, 344 along with this memo, form a framework for Internet calendaring and 345 scheduling standards. This memo specifies a core specification of 346 objects, value types, properties and property parameters. 348 o iTIP [I-D.ietf-calsify-2446bis] specifies an interoperability 349 protocol for scheduling between different implementations; 351 o iMIP [I-D.ietf-calsify-rfc2447bis] specifies an Internet email 352 binding for [I-D.ietf-calsify-2446bis]. 354 This memo does not attempt to repeat the specification of concepts or 355 definitions from these other memos. Where possible, references are 356 made to the memo that provides for the specification of these 357 concepts or definitions. 359 3. iCalendar Object Specification 361 The following sections define the details of a Calendaring and 362 Scheduling Core Object Specification. This information is intended 363 to be an integral part of the MIME content type registration. In 364 addition, this information can be used independent of such content 365 registration. In particular, this memo has direct applicability for 366 use as a calendaring and scheduling exchange format in file-, memory- 367 or network-based transport mechanisms. 369 3.1. Content Lines 371 The iCalendar object is organized into individual lines of text, 372 called content lines. Content lines are delimited by a line break, 373 which is a CRLF sequence (US-ASCII decimal 13, followed by US-ASCII 374 decimal 10). 376 Lines of text SHOULD NOT be longer than 75 octets, excluding the line 377 break. Long content lines SHOULD be split into a multiple line 378 representations using a line "folding" technique. That is, a long 379 line can be split between any two characters by inserting a CRLF 380 immediately followed by a single linear white space character (i.e., 381 SPACE, US-ASCII decimal 32 or HTAB, US-ASCII decimal 9). Any 382 sequence of CRLF followed immediately by a single linear white space 383 character is ignored (i.e., removed) when processing the content 384 type. 386 For example the line: 388 DESCRIPTION:This is a long description that exists on a long line. 390 Can be represented as: 392 DESCRIPTION:This is a lo 393 ng description 394 that exists on a long line. 396 The process of moving from this folded multiple line representation 397 to its single line representation is called "unfolding". Unfolding 398 is accomplished by removing the CRLF character and the linear white 399 space character that immediately follows. 401 When parsing a content line, folded lines MUST first be unfolded 402 according to the unfolding procedure described above. 404 Note: It is possible for very simple implementations to generate 405 improperly folded lines in the middle of a UTF-8 multi-octet 406 sequence. For this reason, implementations need to unfold lines 407 in such a way to properly restore the original sequence. 409 The content information associated with an iCalendar object is 410 formatted using a syntax similar to that defined by [RFC2425]. That 411 is, the content information consists of CRLF-separated content lines. 413 The following notation defines the lines of content in an iCalendar 414 object: 416 contentline = name *(";" param ) ":" value CRLF 417 ; This ABNF is just a general definition for an initial parsing 418 ; of the content line into its property name, parameter list, 419 ; and value string 421 ; When parsing a content line, folded lines MUST first 422 ; be unfolded according to the unfolding procedure 423 ; described above. When generating a content line, lines 424 ; longer than 75 octets SHOULD be folded according to 425 ; the folding procedure described above. 427 name = iana-token / x-name 429 iana-token = 1*(ALPHA / DIGIT / "-") 430 ; iCalendar identifier registered with IANA 432 x-name = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-") 433 ; Reserved for experimental use. 435 vendorid = 3*(ALPHA / DIGIT) 436 ; Vendor identification 438 param = param-name "=" param-value *("," param-value) 439 ; Each property defines the specific ABNF for the parameters 440 ; allowed on the property. Refer to specific properties for 441 ; precise parameter ABNF. 443 param-name = iana-token / x-name 445 param-value = paramtext / quoted-string 447 paramtext = *SAFE-CHAR 449 value = *VALUE-CHAR 451 quoted-string = DQUOTE *QSAFE-CHAR DQUOTE 453 QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-US-ASCII 454 ; Any character except CONTROL and DQUOTE 455 SAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E 456 / NON-US-ASCII 457 ; Any character except CONTROL, DQUOTE, ";", ":", "," 459 VALUE-CHAR = WSP / %x21-7E / NON-US-ASCII 460 ; Any textual character 462 NON-US-ASCII = UTF8-2 / UTF8-3 / UTF8-4 463 ; UTF8-2, UTF8-3, and UTF8-4 are defined in [RFC3629] 465 CONTROL = %x00-08 / %x0A-1F / %x7F 466 ; All the controls except HTAB 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 3.1.1. 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 character (US- 495 ASCII decimal 58), a SEMICOLON character (US-ASCII decimal 59) or a 496 COMMA character (US-ASCII decimal 44) MUST be placed in quoted text. 498 For example, in the following properties a SEMICOLON is used to 499 separate property parameters from each other, and a COMMA is used to 500 separate property values in a value list. 502 ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:mailto: 503 jsmith@example.com 505 RDATE;VALUE=DATE:19970304,19970504,19970704,19970904 507 3.1.2. Multiple Values 509 Some properties defined in the iCalendar object can have multiple 510 values. The general rule for encoding multi-valued items is to 511 simply create a new content line for each value, including the 512 property name. However, it should be noted that some properties 513 support encoding multiple values in a single property by separating 514 the values with a COMMA character (US-ASCII decimal 44). Individual 515 property definitions should be consulted for determining whether a 516 specific property allows multiple values and in which of these two 517 forms. 519 3.1.3. Binary Content 521 Binary content information in an iCalendar object SHOULD be 522 referenced using a URI within a property value. That is the binary 523 content information SHOULD be placed in an external MIME entity that 524 can be referenced by a URI from within the iCalendar object. In 525 applications where this is not feasible, binary content information 526 can be included within an iCalendar object, but only after first 527 encoding it into text using the "BASE64" encoding method defined in 528 [RFC4648]. Inline binary content SHOULD only be used in applications 529 whose special circumstances demand that an iCalendar object be 530 expressed as a single entity. A property containing inline binary 531 content information MUST specify the "ENCODING" property parameter. 532 Binary content information placed external to the iCalendar object 533 MUST be referenced by a uniform resource identifier (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://example.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 3.1.4. Character Set 550 There is not a property parameter to declare the charset used in a 551 property value. The default charset for an iCalendar stream is UTF-8 552 as defined in [RFC3629]. 554 The "charset" Content-Type parameter MUST be used in MIME transports 555 to specify the charset being used. 557 3.2. Property Parameters 559 A property can have attributes associated with it. These "property 560 parameters" contain meta-information about the property or the 561 property value. Property parameters are provided to specify such 562 information as the location of an alternate text representation for a 563 property value, the language of a text property value, the value type 564 of the property value and other attributes. 566 Property parameter values that contain the COLON (US-ASCII decimal 567 58), SEMICOLON (US-ASCII decimal 59) or COMMA (US-ASCII decimal 44) 568 character separators MUST be specified as quoted-string text values. 569 Property parameter values MUST NOT contain the DQUOTE (US-ASCII 570 decimal 22) character. The DQUOTE (US-ASCII decimal 22) character is 571 used as a delimiter for parameter values that contain restricted 572 characters or URI text. For example: 574 DESCRIPTION;ALTREP="http://www.example.org":The Fall'98 Wild 575 Wizards Conference - - Las Vegas\, NV\, USA 577 Property parameter values that are not in quoted strings are case 578 insensitive. 580 The general property parameters defined by this memo are defined by 581 the following notation: 583 icalparameter = altrepparam ; Alternate text representation 584 / cnparam ; Common name 585 / cutypeparam ; Calendar user type 586 / delfromparam ; Delegator 587 / deltoparam ; Delegatee 588 / dirparam ; Directory entry 589 / encodingparam ; Inline encoding 590 / fmttypeparam ; Format type 591 / fbtypeparam ; Free/busy time type 592 / languageparam ; Language for text 593 / memberparam ; Group or list membership 594 / partstatparam ; Participation status 595 / trigrelparam ; Alarm trigger relationship 596 / reltypeparam ; Relationship type 597 / roleparam ; Participation role 598 / rsvpparam ; RSVP expectation 599 / sentbyparam ; Sent by 600 / tzidparam ; Reference to time zone object 601 / valuetypeparam ; Property value data type 602 / other-param 604 other-param = (iana-param / x-param) 606 iana-param = iana-token "=" param-value *("," param-value) 607 ; Some other IANA registered iCalendar parameter. 609 x-param = x-name "=" param-value *("," param-value) 610 ; A non-standard, experimental parameter. 612 Applications MUST ignore x-param and iana-param value they don't 613 recognized. 615 3.2.1. Alternate Text Representation 617 Parameter Name: ALTREP 619 Purpose: To specify an alternate text representation for the 620 property value. 622 Format Definition: This property parameter is defined by the 623 following notation: 625 altrepparam = "ALTREP" "=" DQUOTE uri DQUOTE 627 Description: This parameter specifies a URI that points to an 628 alternate representation for a textual property value. A property 629 specifying this parameter MUST also include a value that reflects 630 the default representation of the text value. The individual URI 631 parameter values MUST each be specified in a quoted-string. 633 Example: 635 DESCRIPTION;ALTREP="CID:part3.msg.970415T083000@example.com": 636 Project XYZ Review Meeting will include the following agenda 637 items: (a) Market Overview\, (b) Finances\, (c) Project Man 638 agement 640 The "ALTREP" property parameter value might point to a "text/html" 641 content portion. 643 Content-Type:text/html 644 Content-Id: 646 647 648 649 650 651

652 Project XYZ Review Meeting will include 653 the following agenda items: 654

    655
  1. Market Overview
  2. 656
  3. Finances
  4. 657
  5. Project Management
  6. 658
659

660 661 663 3.2.2. Common Name 665 Parameter Name: CN 667 Purpose: To specify the common name to be associated with the 668 calendar user specified by the property. 670 Format Definition: This property parameter is defined by the 671 following notation: 673 cnparam = "CN" "=" param-value 675 Description: This parameter can be specified on properties with a 676 CAL-ADDRESS value type. The parameter specifies the common name 677 to be associated with the calendar user specified by the property. 678 The parameter value is text. The parameter value can be used for 679 display text to be associated with the calendar address specified 680 by the property. 682 Example: 684 ORGANIZER;CN="John Smith":mailto:jsmith@example.com 686 3.2.3. Calendar User Type 688 Parameter Name: CUTYPE 690 Purpose: To specify the type of calendar user specified by the 691 property. 693 Format Definition: This property parameter is defined by the 694 following notation: 696 cutypeparam = "CUTYPE" "=" 697 ("INDIVIDUAL" ; An individual 698 / "GROUP" ; A group of individuals 699 / "RESOURCE" ; A physical resource 700 / "ROOM" ; A room resource 701 / "UNKNOWN" ; Otherwise not known 702 / x-name ; Experimental type 703 / iana-token) ; Other IANA registered 704 ; type 705 ; Default is INDIVIDUAL 707 Description: This parameter can be specified on properties with a 708 CAL-ADDRESS value type. The parameter identifies the type of 709 calendar user specified by the property. If not specified on a 710 property that allows this parameter, the default is INDIVIDUAL. 711 Applications MUST treat x-name and iana-token value they don't 712 recognized the same way as the INDIVIDUAL value. 714 Example: 716 ATTENDEE;CUTYPE=GROUP:mailto:ietf-calsch@example.org 718 3.2.4. Delegators 719 Parameter Name: DELEGATED-FROM 721 Purpose: To specify the calendar users that have delegated their 722 participation to the calendar user specified by the property. 724 Format Definition: This property parameter is defined by the 725 following notation: 727 delfromparam = "DELEGATED-FROM" "=" DQUOTE cal-address 728 DQUOTE *("," DQUOTE cal-address DQUOTE) 730 Description: This parameter can be specified on properties with a 731 CAL-ADDRESS value type. This parameter specifies those calendar 732 users that have delegated their participation in a group scheduled 733 event or to-do to the calendar user specified by the property. 734 The value MUST be a mailto URI as defined in [RFC2368]. The 735 individual calendar address parameter values MUST each be 736 specified in a quoted-string. 738 Example: 740 ATTENDEE;DELEGATED-FROM="mailto:jsmith@example.com":mailto: 741 jdoe@example.com 743 3.2.5. Delegatees 745 Parameter Name: DELEGATED-TO 747 Purpose: To specify the calendar users to whom the calendar user 748 specified by the property has delegated participation. 750 Format Definition: This property parameter is defined by the 751 following notation: 753 deltoparam = "DELEGATED-TO" "=" DQUOTE cal-address DQUOTE 754 *("," DQUOTE cal-address DQUOTE) 756 Description: This parameter can be specified on properties with a 757 CAL-ADDRESS value type. This parameter specifies those calendar 758 users whom have been delegated participation in a group scheduled 759 event or to-do by the calendar user specified by the property. 760 The value MUST be a mailto URI as defined in [RFC2368]. The 761 individual calendar address parameter values MUST each be 762 specified in a quoted-string. 764 Example: 766 ATTENDEE;DELEGATED-TO="mailto:jdoe@example.com","mailto:jqpublic 767 @example.com":mailto:jsmith@example.com 769 3.2.6. Directory Entry Reference 771 Parameter Name: DIR 773 Purpose: To specify reference to a directory entry associated with 774 the calendar user specified by the property. 776 Format Definition: This property parameter is defined by the 777 following notation: 779 dirparam = "DIR" "=" DQUOTE uri DQUOTE 781 Description: This parameter can be specified on properties with a 782 CAL-ADDRESS value type. The parameter specifies a reference to 783 the directory entry associated with the calendar user specified by 784 the property. The parameter value is a URI. The URI parameter 785 value MUST be specified in a quoted-string. 787 Example: 789 ORGANIZER;DIR="ldap://example.com:6666/o=ABC%20Industries, 790 c=US???(cn=Jim%20Dolittle)":mailto:jimdo@example.com 792 3.2.7. Inline Encoding 794 Parameter Name: ENCODING 796 Purpose: To specify an alternate inline encoding for the property 797 value. 799 Format Definition: This property parameter is defined by the 800 following notation: 802 encodingparam = "ENCODING" "=" 803 ( "8BIT" 804 ; "8bit" text encoding is defined in [RFC2045] 805 / "BASE64" 806 ; "BASE64" binary encoding format is defined in [RFC4648] 807 ) 809 Description: This property parameter identifies the inline encoding 810 used in a property value. The default encoding is "8BIT", 811 corresponding to a property value consisting of text. The 812 "BASE64" encoding type corresponds to a property value encoded 813 using the "BASE64" encoding defined in [RFC2045]. 815 If the value type parameter is ";VALUE=BINARY", then the inline 816 encoding parameter MUST be specified with the value 817 ";ENCODING=BASE64". 819 Example: 821 ATTACH;FMTYPE=IMAGE/JPEG;ENCODING=BASE64;VALUE=BINARY:MIICajC 822 CAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDA 823 qBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRw 824 <...remainder of "BASE64" encoded binary data...> 826 3.2.8. Format Type 828 Parameter Name: FMTTYPE 830 Purpose: To specify the content type of a referenced object. 832 Format Definition: This property parameter is defined by the 833 following notation: 835 fmttypeparam = "FMTTYPE" "=" type "/" subtype *(";" parameter) 836 ; Where "type", "subtype", and "parameter" 837 ; are defined in section 5.1 of [RFC2045] 839 Description: This parameter can be specified on properties that are 840 used to reference an object. The parameter specifies the content 841 type of the referenced object. For example, on the "ATTACH" 842 property, a FTP type URI value does not, by itself, necessarily 843 convey the type of content associated with the resource. The 844 parameter value MUST be the text for either an IANA registered 845 media type or a non-standard media type. 847 Example: 849 ATTACH;FMTTYPE=application/msword:ftp://example.com/pub/docs/ 850 agenda.doc 852 3.2.9. Free/Busy Time Type 853 Parameter Name: FBTYPE 855 Purpose: To specify the free or busy time type. 857 Format Definition: This property parameter is defined by the 858 following notation: 860 fbtypeparam = "FBTYPE" "=" ("FREE" / "BUSY" 861 / "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE" 862 / x-name 863 ; Some experimental iCalendar free busy type. 864 / iana-token) 865 ; Some other IANA registered iCalendar free busy type. 867 Description: This parameter specifies the free or busy time type. 868 The value FREE indicates that the time interval is free for 869 scheduling. The value BUSY indicates that the time interval is 870 busy because one or more events have been scheduled for that 871 interval. The value BUSY-UNAVAILABLE indicates that the time 872 interval is busy and that the interval can not be scheduled. The 873 value BUSY-TENTATIVE indicates that the time interval is busy 874 because one or more events have been tentatively scheduled for 875 that interval. If not specified on a property that allows this 876 parameter, the default is BUSY. Applications MUST treat x-name 877 and iana-token value they don't recognized the same way as the 878 BUSY value. 880 Example: The following is an example of this parameter on a 881 "FREEBUSY" property. 883 FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z 885 3.2.10. Language 887 Parameter Name: LANGUAGE 889 Purpose: To specify the language for text values in a property or 890 property parameter. 892 Format Definition: This property parameter is defined by the 893 following notation: 895 languageparam = "LANGUAGE" "=" language 897 language = Language-Tag 898 ; As defined in [RFC4646] 900 Description: This parameter identifies the language of the text in 901 the property value and of all property parameter values of the 902 property. The value of the "LANGUAGE" property parameter is that 903 defined in [RFC4646]. 905 For transport in a MIME entity, the Content-Language header field 906 can be used to set the default language for the entire body part. 907 Otherwise, no default language is assumed. 909 Example: The following are examples of this parameter on the 910 "SUMMARY" and "LOCATION" properties: 912 SUMMARY;LANGUAGE=us-EN:Company Holiday Party 914 LOCATION;LANGUAGE=en:Germany 916 LOCATION;LANGUAGE=no:Tyskland 918 3.2.11. Group or List Membership 920 Parameter Name: MEMBER 922 Purpose: To specify the group or list membership of the calendar 923 user specified by the property. 925 Format Definition: This property parameter is defined by the 926 following notation: 928 memberparam = "MEMBER" "=" DQUOTE cal-address DQUOTE 929 *("," DQUOTE cal-address DQUOTE) 931 Description: This parameter can be specified on properties with a 932 CAL-ADDRESS value type. The parameter identifies the groups or 933 list membership for the calendar user specified by the property. 934 The parameter value is either a single calendar address in a 935 quoted-string or a COMMA character (US-ASCII decimal 44) separated 936 list of calendar addresses, each in a quoted-string. The 937 individual calendar address parameter values MUST each be 938 specified in a quoted-string. 940 Example: 942 ATTENDEE;MEMBER="mailto:ietf-calsch@example.org":mailto: 943 jsmith@example.com 945 ATTENDEE;MEMBER="mailto:projectA@example.com","mailto:pr 946 ojectB@example.com":mailto:janedoe@example.com 948 3.2.12. Participation Status 950 Parameter Name: PARTSTAT 952 Purpose: To specify the participation status for the calendar user 953 specified by the property. 955 Format Definition: This property parameter is defined by the 956 following notation: 958 partstatparam = "PARTSTAT" "=" 959 (partstat-event 960 / partstat-todo 961 / partstat-jour) 963 partstat-event = ("NEEDS-ACTION" ; Event needs action 964 / "ACCEPTED" ; Event accepted 965 / "DECLINED" ; Event declined 966 / "TENTATIVE" ; Event tentatively 967 ; accepted 968 / "DELEGATED" ; Event delegated 969 / x-name ; Experimental status 970 / iana-token) ; Other IANA registered 971 ; status 972 ; These are the participation statuses for a "VEVENT". 973 ; Default is NEEDS-ACTION. 975 partstat-todo = ("NEEDS-ACTION" ; To-do needs action 976 / "ACCEPTED" ; To-do accepted 977 / "DECLINED" ; To-do declined 978 / "TENTATIVE" ; To-do tentatively 979 ; accepted 980 / "DELEGATED" ; To-do delegated 981 / "COMPLETED" ; To-do completed. 982 ; COMPLETED property has 983 ; date/time completed. 984 / "IN-PROCESS" ; To-do in process of 985 ; being completed 986 / x-name ; Experimental status 987 / iana-token) ; Other IANA registered 988 ; status 989 ; These are the participation statuses for a "VTODO". 990 ; Default is NEEDS-ACTION. 992 partstat-jour = ("NEEDS-ACTION" ; Journal needs action 993 / "ACCEPTED" ; Journal accepted 994 / "DECLINED" ; Journal declined 995 / x-name ; Experimental status 996 / iana-token) ; Other IANA registered 997 ; status 998 ; These are the participation statuses for a "VJOURNAL". 999 ; Default is NEEDS-ACTION. 1001 Description: This parameter can be specified on properties with a 1002 CAL-ADDRESS value type. The parameter identifies the 1003 participation status for the calendar user specified by the 1004 property value. The parameter values differ depending on whether 1005 they are associated with a group scheduled "VEVENT", "VTODO" or 1006 "VJOURNAL". The values MUST match one of the values allowed for 1007 the given calendar component. If not specified on a property that 1008 allows this parameter, the default value is NEEDS-ACTION. 1009 Applications MUST treat x-name and iana-token value they don't 1010 recognized the same way as the NEEDS-ACTION value. 1012 Example: 1014 ATTENDEE;PARTSTAT=DECLINED:mailto:jsmith@example.com 1016 3.2.13. Alarm Trigger Relationship 1018 Parameter Name: RELATED 1020 Purpose: To specify the relationship of the alarm trigger with 1021 respect to the start or end of the calendar component. 1023 Format Definition: This property parameter is defined by the 1024 following notation: 1026 trigrelparam = "RELATED" "=" 1027 ("START" ; Trigger off of start 1028 / "END") ; Trigger off of end 1030 Description: This parameter can be specified on properties that 1031 specify an alarm trigger with a "DURATION" value type. The 1032 parameter specifies whether the alarm will trigger relative to the 1033 start or end of the calendar component. The parameter value START 1034 will set the alarm to trigger off the start of the calendar 1035 component; the parameter value END will set the alarm to trigger 1036 off the end of the calendar component. If the parameter is not 1037 specified on an allowable property, then the default is START. 1039 Example: 1041 TRIGGER;RELATED=END:PT5M 1043 3.2.14. Relationship Type 1045 Parameter Name: RELTYPE 1047 Purpose: To specify the type of hierarchical relationship associated 1048 with the calendar component specified by the property. 1050 Format Definition: This property parameter is defined by the 1051 following notation: 1053 reltypeparam = "RELTYPE" "=" 1054 ("PARENT" ; Parent relationship. Default. 1055 / "CHILD" ; Child relationship 1056 / "SIBLING" ; Sibling relationship 1057 / iana-token ; Some other IANA registered 1058 ; iCalendar relationship type 1059 / x-name) ; A non-standard, experimental 1060 ; relationship type 1062 Description: This parameter can be specified on a property that 1063 references another related calendar. The parameter specifies the 1064 hierarchical relationship type of the calendar component 1065 referenced by the property. The parameter value can be PARENT, to 1066 indicate that the referenced calendar component is a superior of 1067 calendar component; CHILD to indicate that the referenced calendar 1068 component is a subordinate of the calendar component; SIBLING to 1069 indicate that the referenced calendar component is a peer of the 1070 calendar component. If this parameter is not specified on an 1071 allowable property, the default relationship type is PARENT. 1072 Applications MUST treat x-name and iana-token value they don't 1073 recognized the same way as the PARENT value. 1075 Example: 1077 RELATED-TO;RELTYPE=SIBLING:19960401-080045-4000F192713@ 1078 example.com 1080 3.2.15. Participation Role 1082 Parameter Name: ROLE 1084 Purpose: To specify the participation role for the calendar user 1085 specified by the property. 1087 Format Definition: This property parameter is defined by the 1088 following notation: 1090 roleparam = "ROLE" "=" 1091 ("CHAIR" ; Indicates chair of the 1092 ; calendar entity 1093 / "REQ-PARTICIPANT" ; Indicates a participant whose 1094 ; participation is required 1095 / "OPT-PARTICIPANT" ; Indicates a participant whose 1096 ; participation is optional 1097 / "NON-PARTICIPANT" ; Indicates a participant who 1098 ; is copied for information 1099 ; purposes only 1100 / x-name ; Experimental role 1101 / iana-token) ; Other IANA role 1102 ; Default is REQ-PARTICIPANT 1104 Description: This parameter can be specified on properties with a 1105 CAL-ADDRESS value type. The parameter specifies the participation 1106 role for the calendar user specified by the property in the group 1107 schedule calendar component. If not specified on a property that 1108 allows this parameter, the default value is REQ-PARTICIPANT. 1109 Applications MUST treat x-name and iana-token value they don't 1110 recognized the same way as the REQ-PARTICIPANT value. 1112 Example: 1114 ATTENDEE;ROLE=CHAIR:mailto:mrbig@example.com 1116 3.2.16. RSVP Expectation 1118 Parameter Name: RSVP 1120 Purpose: To specify whether there is an expectation of a favor of a 1121 reply from the calendar user specified by the property value. 1123 Format Definition: This property parameter is defined by the 1124 following notation: 1126 rsvpparam = "RSVP" "=" ("TRUE" / "FALSE") 1127 ; Default is FALSE 1129 Description: This parameter can be specified on properties with a 1130 CAL-ADDRESS value type. The parameter identifies the expectation 1131 of a reply from the calendar user specified by the property value. 1132 This parameter is used by the "Organizer" to request a 1133 participation status reply from an "Attendee" of a group scheduled 1134 event or to-do. If not specified on a property that allows this 1135 parameter, the default value is FALSE. 1137 Example: 1139 ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com 1141 3.2.17. Sent By 1143 Parameter Name: SENT-BY 1145 Purpose: To specify the calendar user that is acting on behalf of 1146 the calendar user specified by the property. 1148 Format Definition: This property parameter is defined by the 1149 following notation: 1151 sentbyparam = "SENT-BY" "=" DQUOTE cal-address DQUOTE 1153 Description: This parameter can be specified on properties with a 1154 CAL-ADDRESS value type. The parameter specifies the calendar user 1155 that is acting on behalf of the calendar user specified by the 1156 property. The parameter value MUST be a mailto URI as defined in 1157 [RFC2368]. The individual calendar address parameter values MUST 1158 each be specified in a quoted-string. 1160 Example: 1162 ORGANIZER;SENT-BY="mailto:sray@example.com":mailto: 1163 jsmith@example.com 1165 3.2.18. Time Zone Identifier 1167 Parameter Name: TZID 1169 Purpose: To specify the identifier for the time zone definition for 1170 a time component in the property value. 1172 Format Definition: This property parameter is defined by the 1173 following notation: 1175 tzidparam = "TZID" "=" [tzidprefix] paramtext 1177 tzidprefix = "/" 1179 Description: This parameter MUST be specified on the "DTSTART", 1180 "DTEND", "DUE", "EXDATE" and "RDATE" properties when either a 1181 DATE-TIME or TIME value type is specified and when the value is 1182 not either a UTC or a "floating" time. Refer to the DATE-TIME or 1183 TIME value type definition for a description of UTC and "floating 1184 time" formats. This property parameter specifies a text value 1185 which uniquely identifies the "VTIMEZONE" calendar component to be 1186 used when evaluating the time portion of the property. The value 1187 of the "TZID" property parameter will be equal to the value of the 1188 "TZID" property for the matching time zone definition. An 1189 individual "VTIMEZONE" calendar component MUST be specified for 1190 each unique "TZID" parameter value specified in the iCalendar 1191 object. 1193 The parameter MUST be specified on properties with a DATE-TIME 1194 value if the DATE-TIME is not either a UTC or a "floating" time. 1196 The presence of the SOLIDUS character (US-ASCII decimal 47) as a 1197 prefix, indicates that this "TZID" represents a unique ID in a 1198 globally defined time zone registry (when such registry is 1199 defined). 1201 Note: This document does not define a naming convention for 1202 time zone identifiers. Implementers may want to use the naming 1203 conventions defined in existing time zone specifications such 1204 as the public-domain TZ database [TZDB]. The specification of 1205 globally unique time zone identifiers is not addressed by this 1206 document and is left for future study. 1208 The following are examples of this property parameter: 1210 DTSTART;TZID=America/New_York:19980119T020000 1212 DTEND;TZID=America/New_York:19980119T030000 1214 The "TZID" property parameter MUST NOT be applied to DATE 1215 properties, and DATE-TIME or TIME properties whose time values are 1216 specified in UTC. 1218 The use of local time in a DATE-TIME or TIME value without the 1219 "TZID" property parameter is to be interpreted as a local time 1220 value, regardless of the existence of "VTIMEZONE" calendar 1221 components in the iCalendar object. 1223 For more information see the sections on the value types DATE-TIME 1224 and TIME. 1226 3.2.19. Value Data Types 1228 Parameter Name: VALUE 1229 Purpose: To explicitly specify the value type format for a property 1230 value. 1232 Format Definition: This property parameter is defined by the 1233 following notation: 1235 valuetypeparam = "VALUE" "=" valuetype 1237 valuetype = ("BINARY" 1238 / "BOOLEAN" 1239 / "CAL-ADDRESS" 1240 / "DATE" 1241 / "DATE-TIME" 1242 / "DURATION" 1243 / "FLOAT" 1244 / "INTEGER" 1245 / "PERIOD" 1246 / "RECUR" 1247 / "TEXT" 1248 / "TIME" 1249 / "URI" 1250 / "UTC-OFFSET" 1251 / x-name 1252 ; Some experimental iCalendar value type. 1253 / iana-token) 1254 ; Some other IANA registered iCalendar value type. 1256 Description: This parameter specifies the value type and format of 1257 the property value. The property values MUST be of a single value 1258 type. For example, a "RDATE" property cannot have a combination 1259 of DATE-TIME and TIME value types. 1261 If the property's value is the default value type, then this 1262 parameter need not be specified. However, if the property's 1263 default value type is overridden by some other allowable value 1264 type, then this parameter MUST be specified. 1266 Applications MUST treat x-name and iana-token value they don't 1267 recognized the same way as the TEXT value. 1269 3.3. Property Value Data Types 1271 The properties in an iCalendar object are strongly typed. The 1272 definition of each property restricts the value to be one of the 1273 value data types, or simply value types, defined in this section. 1274 The value type for a property will either be specified implicitly as 1275 the default value type or will be explicitly specified with the 1276 "VALUE" parameter. If the value type of a property is one of the 1277 alternate valid types, then it MUST be explicitly specified with the 1278 "VALUE" parameter. 1280 3.3.1. Binary 1282 Value Name: BINARY 1284 Purpose: This value type is used to identify properties that contain 1285 a character encoding of inline binary data. For example, an 1286 inline attachment of a document might be included in an iCalendar 1287 object. 1289 Format Definition: This value type is defined by the following 1290 notation: 1292 binary = *(4b-char) [b-end] 1293 ; A "BASE64" encoded character string, as defined by [RFC4648]. 1295 b-end = (2b-char "==") / (3b-char "=") 1297 b-char = ALPHA / DIGIT / "+" / "/" 1299 Description: Property values with this value type MUST also include 1300 the inline encoding parameter sequence of ";ENCODING=BASE64". 1301 That is, all inline binary data MUST first be character encoded 1302 using the "BASE64" encoding method defined in [RFC2045]. No 1303 additional content value encoding (i.e., BACKSLASH character 1304 encoding) is defined for this value type. 1306 Example: The following is an abridged example of a "BASE64" encoded 1307 binary value data. 1309 JKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlI 1310 ENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZv 1311 <...remainder of "BASE64" encoded binary data...> 1313 3.3.2. Boolean 1315 Value Name: BOOLEAN 1317 Purpose: This value type is used to identify properties that contain 1318 either a "TRUE" or "FALSE" Boolean value. 1320 Format Definition: This value type is defined by the following 1321 notation: 1323 boolean = "TRUE" / "FALSE" 1325 Description: These values are case insensitive text. No additional 1326 content value encoding (i.e., BACKSLASH character encoding) is 1327 defined for this value type. 1329 Example: The following is an example of a hypothetical property that 1330 has a BOOLEAN value type: 1332 TRUE 1334 3.3.3. Calendar User Address 1336 Value Name: CAL-ADDRESS 1338 Purpose: This value type is used to identify properties that contain 1339 a calendar user address. 1341 Format Definition: This value type is defined by the following 1342 notation: 1344 cal-address = uri 1346 Description: The value is a URI as defined by [RFC3986] or any other 1347 IANA registered form for a URI. When used to address an Internet 1348 email transport address for a calendar user, the value MUST be a 1349 mailto URI, as defined by [RFC2368]. No additional content value 1350 encoding (i.e., BACKSLASH character encoding) is defined for this 1351 value type. 1353 Example: 1355 mailto:jane_doe@example.com 1357 3.3.4. Date 1359 Value Name: DATE 1361 Purpose: This value type is used to identify values that contain a 1362 calendar date. 1364 Format Definition: This value type is defined by the following 1365 notation: 1367 date = date-value 1369 date-value = date-fullyear date-month date-mday 1370 date-fullyear = 4DIGIT 1371 date-month = 2DIGIT ;01-12 1372 date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31 1373 ;based on month/year 1375 Description: If the property permits, multiple "date" values are 1376 specified as a COMMA character (US-ASCII decimal 44) separated 1377 list of values. The format for the value type is based on the 1378 [ISO.8601.2004] complete representation, basic format for a 1379 calendar date. The textual format specifies a four-digit year, 1380 two-digit month, and two-digit day of the month. There are no 1381 separator characters between the year, month and day component 1382 text. 1384 No additional content value encoding (i.e., BACKSLASH character 1385 encoding) is defined for this value type. 1387 Example: The following represents July 14, 1997: 1389 19970714 1391 3.3.5. Date-Time 1393 Value Name: DATE-TIME 1395 Purpose: This value type is used to identify values that specify a 1396 precise calendar date and time of day. 1398 Format Definition: This value type is defined by the following 1399 notation: 1401 date-time = date "T" time ;As specified in the date and time 1402 ;value definitions 1404 Description: If the property permits, multiple "date-time" values 1405 are specified as a COMMA character (US-ASCII decimal 44) separated 1406 list of values. No additional content value encoding (i.e., 1407 BACKSLASH character encoding) is defined for this value type. 1409 The "DATE-TIME" value type is used to identify values that contain 1410 a precise calendar date and time of day. The format is based on 1411 the [ISO.8601.2004] complete representation, basic format for a 1412 calendar date and time of day. The text format is a concatenation 1413 of the "date", followed by the LATIN CAPITAL LETTER T character 1414 (US-ASCII decimal 84) time designator, followed by the "time" 1415 format. 1417 The "DATE-TIME" value type expresses time values in three forms: 1419 The form of date and time with UTC offset MUST NOT be used. For 1420 example, the following is not valid for a date-time value: 1422 19980119T230000-0800 ;Invalid time format 1424 FORM #1: DATE WITH LOCAL TIME 1426 The date with local time form is simply a date-time value that 1427 does not contain the UTC designator nor does it reference a time 1428 zone. For example, the following represents January 18, 1998, at 1429 11 PM: 1431 19980118T230000 1433 Date-time values of this type are said to be "floating" and are 1434 not bound to any time zone in particular. They are used to 1435 represent the same hour, minute, and second value regardless of 1436 which time zone is currently being observed. For example, an 1437 event can be defined that indicates that an individual will be 1438 busy from 11:00 AM to 1:00 PM every day, no matter which time zone 1439 the person is in. In these cases, a local time can be specified. 1440 The recipient of an iCalendar object with a property value 1441 consisting of a local time, without any relative time zone 1442 information, SHOULD interpret the value as being fixed to whatever 1443 time zone the "ATTENDEE" is in at any given moment. This means 1444 that two "Attendees", in different time zones, receiving the same 1445 event definition as a floating time, may be participating in the 1446 event at different actual times. Floating time SHOULD only be 1447 used where that is the reasonable behavior. 1449 In most cases, a fixed time is desired. To properly communicate a 1450 fixed time in a property value, either UTC time or local time with 1451 time zone reference MUST be specified. 1453 The use of local time in a DATE-TIME value without the "TZID" 1454 property parameter is to be interpreted as floating time, 1455 regardless of the existence of "VTIMEZONE" calendar components in 1456 the iCalendar object. 1458 FORM #2: DATE WITH UTC TIME 1460 The date with UTC time, or absolute time, is identified by a LATIN 1461 CAPITAL LETTER Z suffix character (US-ASCII decimal 90), the UTC 1462 designator, appended to the time value. For example, the 1463 following represents January 19, 1998, at 0700 UTC: 1465 19980119T070000Z 1467 The "TZID" property parameter MUST NOT be applied to DATE-TIME 1468 properties whose time values are specified in UTC. 1470 FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE 1472 The date and local time with reference to time zone information is 1473 identified by the use the "TZID" property parameter to reference 1474 the appropriate time zone definition. "TZID" is discussed in 1475 detail in Section 3.2.18. For example, the following represents 1476 2:00 A.M. in New York on Janurary 19, 1998: 1478 TZID=America/New_York:19980119T020000 1480 If, based on the definition of the referenced time zone, the local 1481 time described occurs more than once (when changing from daylight 1482 to standard time), the DATE-TIME value refers to the first 1483 occurence of the referenced time. Thus, TZID=America/ 1484 New_York:20071104T013000 indicates November 4, 2007 at 1:30 A.M. 1485 EDT (UTC-04:00). If the local time described does not occur (when 1486 changing from standard to daylight time), the DATE-TIME value is 1487 interpreted using the UTC offset before the gap in local times. 1488 Thus, TZID=America/New_York:20070311T023000 indicates March 11, 1489 2007 at 3:30 A.M. EDT (UTC-04:00), one hour after 1:30 A.M. EST 1490 (UTC-05:00). 1492 A time value MUST only specify the second 60 when specifying a 1493 positive leap second. For example: 1495 19970630T235960Z 1497 Implementations which do not support leap seconds SHOULD interpret 1498 the second 60 as equivalent to the second 59. 1500 Example: The following represents July 14, 1997, at 1:30 PM in New 1501 York City in each of the three time formats, using the "DTSTART" 1502 property. 1504 DTSTART:19970714T133000 ; Local time 1505 DTSTART:19970714T173000Z ; UTC time 1506 DTSTART;TZID=America/New_York:19970714T133000 1507 ; Local time and time 1508 ; zone reference 1510 3.3.6. Duration 1511 Value Name: DURATION 1513 Purpose: This value type is used to identify properties that contain 1514 a duration of time. 1516 Format Definition: This value type is defined by the following 1517 notation: 1519 dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week) 1521 dur-date = dur-day [dur-time] 1522 dur-time = "T" (dur-hour / dur-minute / dur-second) 1523 dur-week = 1*DIGIT "W" 1524 dur-hour = 1*DIGIT "H" [dur-minute] 1525 dur-minute = 1*DIGIT "M" [dur-second] 1526 dur-second = 1*DIGIT "S" 1527 dur-day = 1*DIGIT "D" 1529 Description: If the property permits, multiple "duration" values are 1530 specified by a COMMA character (US-ASCII decimal 44) separated 1531 list of values. The format is based on the [ISO.8601.2004] 1532 complete representation basic format with designators for the 1533 duration of time. The format can represent nominal durations 1534 (weeks and days) and accurate durations (hours, minutes, and 1535 seconds). Note that unlike [ISO.8601.2004] this value type 1536 doesn't support the "Y" and "M" designators to specify durations 1537 in terms of years and months. 1539 The duration of a week or a day depends on its position in the 1540 calendar. In the case of discontinuities in the time scale, such 1541 as the change from standard time to daylight time and back, the 1542 computation of the exact duration requires the substraction or 1543 addition of the change of duration of the discontinuity. Leap 1544 seconds MUST NOT be considered when computing an exact duration. 1545 When computing an exact duration, the greatest order time 1546 components MUST be added first, that is, the number of weeks MUST 1547 be added first, followed by the number of days, number of hours, 1548 number of minutes, and number of seconds. 1550 Negative durations are typically used to schedule an alarm to 1551 trigger before an associated time (see Section 3.8.6.3). 1553 No additional content value encoding (i.e., BACKSLASH character 1554 encoding) are defined for this value type. 1556 Example: A duration of 15 days, 5 hours and 20 seconds would be: 1558 P15DT5H0M20S 1560 A duration of 7 weeks would be: 1562 P7W 1564 3.3.7. Float 1566 Value Name: FLOAT 1568 Purpose: This value type is used to identify properties that contain 1569 a real number value. 1571 Format Definition: This value type is defined by the following 1572 notation: 1574 float = (["+"] / "-") 1*DIGIT ["." 1*DIGIT] 1576 Description: If the property permits, multiple "float" values are 1577 specified by a COMMA character (US-ASCII decimal 44) separated 1578 list of values. 1580 No additional content value encoding (i.e., BACKSLASH character 1581 encoding) is defined for this value type. 1583 Example: 1585 1000000.0000001 1586 1.333 1587 -3.14 1589 3.3.8. Integer 1591 Value Name: INTEGER 1593 Purpose: This value type is used to identify properties that contain 1594 a signed integer value. 1596 Format Definition: This value type is defined by the following 1597 notation: 1599 integer = (["+"] / "-") 1*DIGIT 1601 Description: If the property permits, multiple "integer" values are 1602 specified by a COMMA character (US-ASCII decimal 44) separated 1603 list of values. The valid range for "integer" is -2147483648 to 1604 2147483647. If the sign is not specified, then the value is 1605 assumed to be positive. 1607 No additional content value encoding (i.e., BACKSLASH character 1608 encoding) is defined for this value type. 1610 Example: 1612 1234567890 1613 -1234567890 1614 +1234567890 1615 432109876 1617 3.3.9. Period of Time 1619 Value Name: PERIOD 1621 Purpose: This value type is used to identify values that contain a 1622 precise period of time. 1624 Format Definition: This value type is defined by the following 1625 notation: 1627 period = period-explicit / period-start 1629 period-explicit = date-time "/" date-time 1630 ; [ISO.8601.2004] complete representation basic format for a 1631 ; period of time consisting of a start and end. The start MUST 1632 ; be before the end. 1634 period-start = date-time "/" dur-value 1635 ; [ISO.8601.2004] complete representation basic format for a 1636 ; period of time consisting of a start and positive duration 1637 ; of time. 1639 Description: If the property permits, multiple "period" values are 1640 specified by a COMMA character (US-ASCII decimal 44) separated 1641 list of values. There are two forms of a period of time. First, 1642 a period of time is identified by its start and its end. This 1643 format is based on the [ISO.8601.2004] complete representation, 1644 basic format for "DATE-TIME" start of the period, followed by a 1645 SOLIDUS character (US-ASCII decimal 47), followed by the "DATE- 1646 TIME" of the end of the period. The start of the period MUST be 1647 before the end of the period. Second, a period of time can also 1648 be defined by a start and a positive duration of time. The format 1649 is based on the [ISO.8601.2004] complete representation, basic 1650 format for the "DATE-TIME" start of the period, followed by a 1651 SOLIDUS character (US-ASCII decimal 47), followed by the 1652 [ISO.8601.2004] basic format for "DURATION" of the period. 1654 Example: The period starting at 18:00:00 UTC, on January 1, 1997 and 1655 ending at 07:00:00 UTC on January 2, 1997 would be: 1657 19970101T180000Z/19970102T070000Z 1659 The period start at 18:00:00 on January 1, 1997 and lasting 5 1660 hours and 30 minutes would be: 1662 19970101T180000Z/PT5H30M 1664 No additional content value encoding (i.e., BACKSLASH character 1665 encoding) is defined for this value type. 1667 3.3.10. Recurrence Rule 1669 Value Name: RECUR 1671 Purpose: This value type is used to identify properties that contain 1672 a recurrence rule specification. 1674 Format Definition: This value type is defined by the following 1675 notation: 1677 recur = recur-rule-part *( ";" recur-rule-part ) 1678 ; 1679 ; The rule parts are not ordered in any 1680 ; particular sequence 1681 ; 1682 ; The FREQ rule part is REQUIRED, 1683 ; but MUST NOT occur more than once 1684 ; 1685 ; The UNTIL or COUNT rule parts are OPTIONAL, 1686 ; but they MUST NOT occur in the same 'recur' 1687 ; 1688 ; The other rule parts are OPTIONAL, 1689 ; but MUST NOT occur more than once 1691 recur-rule-part = ( "FREQ" "=" freq ) 1692 / ( "UNTIL" "=" enddate ) 1693 / ( "COUNT" "=" 1*DIGIT ) 1694 / ( "INTERVAL" "=" 1*DIGIT ) 1695 / ( "BYSECOND" "=" byseclist ) 1696 / ( "BYMINUTE" "=" byminlist ) 1697 / ( "BYHOUR" "=" byhrlist ) 1698 / ( "BYDAY" "=" bywdaylist ) 1699 / ( "BYMONTHDAY" "=" bymodaylist ) 1700 / ( "BYYEARDAY" "=" byyrdaylist ) 1701 / ( "BYWEEKNO" "=" bywknolist ) 1702 / ( "BYMONTH" "=" bymolist ) 1703 / ( "BYSETPOS" "=" bysplist ) 1704 / ( "WKST" "=" weekday ) 1706 freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY" 1707 / "WEEKLY" / "MONTHLY" / "YEARLY" 1709 enddate = date / date-time ;A UTC value 1711 byseclist = ( seconds *("," seconds) ) 1713 seconds = 1*2DIGIT ;0 to 60 1715 byminlist = ( minutes *("," minutes) ) 1717 minutes = 1*2DIGIT ;0 to 59 1719 byhrlist = ( hour *("," hour) ) 1721 hour = 1*2DIGIT ;0 to 23 1723 bywdaylist = ( weekdaynum *("," weekdaynum) ) 1725 weekdaynum = [[plus / minus] ordwk] weekday 1727 plus = "+" 1729 minus = "-" 1731 ordwk = 1*2DIGIT ;1 to 53 1733 weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" 1734 ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, 1735 ;FRIDAY, and SATURDAY days of the week. 1737 bymodaylist = ( monthdaynum *("," monthdaynum) ) 1739 monthdaynum = [plus / minus] ordmoday 1741 ordmoday = 1*2DIGIT ;1 to 31 1743 byyrdaylist = ( yeardaynum *("," yeardaynum) ) 1744 yeardaynum = [plus / minus] ordyrday 1746 ordyrday = 1*3DIGIT ;1 to 366 1748 bywknolist = ( weeknum *("," weeknum) ) 1750 weeknum = [plus / minus] ordwk 1752 bymolist = ( monthnum *("," monthnum) ) 1754 monthnum = 1*2DIGIT ;1 to 12 1756 bysplist = ( setposday *("," setposday) ) 1758 setposday = yeardaynum 1760 Description: This value type is a structured value consisting of a 1761 list of one or more recurrence grammar parts. Each rule part is 1762 defined by a NAME=VALUE pair. The rule parts are separated from 1763 each other by the SEMICOLON character (US-ASCII decimal 59). The 1764 rule parts are not ordered in any particular sequence. Individual 1765 rule parts MUST only be specified once. 1767 Note: Compliant applications MUST accept rule parts ordered in 1768 any sequence, but to ensure backward compatibility with 1769 applications that pre-date this revision of iCalendar the FREQ 1770 rule part MUST be the first rule part specified in a RECUR 1771 value. 1773 The FREQ rule part identifies the type of recurrence rule. This 1774 rule part MUST be specified in the recurrence rule. Valid values 1775 include SECONDLY, to specify repeating events based on an interval 1776 of a second or more; MINUTELY, to specify repeating events based 1777 on an interval of a minute or more; HOURLY, to specify repeating 1778 events based on an interval of an hour or more; DAILY, to specify 1779 repeating events based on an interval of a day or more; WEEKLY, to 1780 specify repeating events based on an interval of a week or more; 1781 MONTHLY, to specify repeating events based on an interval of a 1782 month or more; and YEARLY, to specify repeating events based on an 1783 interval of a year or more. 1785 The INTERVAL rule part contains a positive integer representing 1786 how often the recurrence rule repeats. The default value is "1", 1787 meaning every second for a SECONDLY rule, or every minute for a 1788 MINUTELY rule, every hour for an HOURLY rule, every day for a 1789 DAILY rule, every week for a WEEKLY rule, every month for a 1790 MONTHLY rule and every year for a YEARLY rule. 1792 The UNTIL rule part defines a DATE or DATE-TIME value which bounds 1793 the recurrence rule in an inclusive manner. If the value 1794 specified by UNTIL is synchronized with the specified recurrence, 1795 this DATE or DATE-TIME becomes the last instance of the 1796 recurrence. The value of the UNTIL rule part MUST have the same 1797 value type as the "DTSTART" property. Furthermore, if the 1798 "DTSTART" property is specified as a date with local time, then 1799 the UNTIL rule part MUST also be specified as a date with local 1800 time. Else, if the "DTSTART" property is specified as a date with 1801 UTC time or a date with local time and time zone reference, then 1802 the UNTIL rule part MUST be specified as a date with UTC time. In 1803 the case of the "STANDARD" and "DAYLIGHT" sub-components the UNTIL 1804 rule part MUST always be specified as a date with UTC time. If 1805 specified as a DATE-TIME value, then it MUST be specified in a UTC 1806 time format. If not present, and the COUNT rule part is also not 1807 present, the "RRULE" is considered to repeat forever. 1809 The COUNT rule part defines the number of occurrences at which to 1810 range-bound the recurrence. The "DTSTART" property value always 1811 counts as the first occurrence. 1813 The BYSECOND rule part specifies a COMMA character (US-ASCII 1814 decimal 44) separated list of seconds within a minute. Valid 1815 values are 0 to 60. The BYMINUTE rule part specifies a COMMA 1816 character (US-ASCII decimal 44) separated list of minutes within 1817 an hour. Valid values are 0 to 59. The BYHOUR rule part 1818 specifies a COMMA character (US-ASCII decimal 44) separated list 1819 of hours of the day. Valid values are 0 to 23. The BYSECOND, 1820 BYMINUTE and BYHOUR rule parts MUST NOT be specified when the 1821 associated "DTSTART" property has a DATE value type. These rule 1822 parts MUST be ignored in RECUR value that violate the above 1823 requirement (e.g., generated by applications that pre-date this 1824 revision of iCalendar). 1826 The BYDAY rule part specifies a COMMA character (US-ASCII decimal 1827 44) separated list of days of the week; SU indicates Sunday; MO 1828 indicates Monday; TU indicates Tuesday; WE indicates Wednesday; TH 1829 indicates Thursday; FR indicates Friday; SA indicates Saturday. 1831 Each BYDAY value can also be preceded by a positive (+n) or 1832 negative (-n) integer. If present, this indicates the nth 1833 occurrence of the specific day within the MONTHLY or YEARLY 1834 "RRULE". For example, within a MONTHLY rule, +1MO (or simply 1MO) 1835 represents the first Monday within the month, whereas -1MO 1836 represents the last Monday of the month. If an integer modifier 1837 is not present, it means all days of this type within the 1838 specified frequency. For example, within a MONTHLY rule, MO 1839 represents all Mondays within the month. The BYDAY rule part MUST 1840 NOT be specified with a numeric value when the FREQ rule part is 1841 not set to MONTHLY or YEARLY. Furthermore, the BYDAY rule part 1842 MUST NOT be specified with a numeric value with the FREQ rule part 1843 set to YEARLY when the BYWEEKNO rule part is specified. The 1844 numeric value in a BYDAY rule part with the FREQ rule part set to 1845 YEARLY corresponds to an offset within the month when the BYMONTH 1846 rule part is present, and corresponds to an offset within the year 1847 when the BYWEEKNO or BYMONTH rule parts are present. 1849 The BYMONTHDAY rule part specifies a COMMA character (US-ASCII 1850 decimal 44) separated list of days of the month. Valid values are 1851 1 to 31 or -31 to -1. For example, -10 represents the tenth to 1852 the last day of the month. The BYMONTHDAY rule part MUST NOT be 1853 specified when the FREQ rule part is set to WEEKLY. 1855 The BYYEARDAY rule part specifies a COMMA character (US-ASCII 1856 decimal 44) separated list of days of the year. Valid values are 1857 1 to 366 or -366 to -1. For example, -1 represents the last day 1858 of the year (December 31st) and -306 represents the 306th to the 1859 last day of the year (March 1st). The BYYEARDAY rule part MUST 1860 NOT be specified when the FREQ rule part is set to DAILY, WEEKLY, 1861 and MONTHLY. 1863 The BYWEEKNO rule part specifies a COMMA character (US-ASCII 1864 decimal 44) separated list of ordinals specifying weeks of the 1865 year. Valid values are 1 to 53 or -53 to -1. This corresponds to 1866 weeks according to week numbering as defined in [ISO.8601.2004]. 1867 A week is defined as a seven day period, starting on the day of 1868 the week defined to be the week start (see WKST). Week number one 1869 of the calendar year is the first week which contains at least 1870 four (4) days in that calendar year. This rule part MUST NOT be 1871 used when the FREQ rule part is not set to YEARLY. For example, 3 1872 represents the third week of the year. 1874 Note: Assuming a Monday week start, week 53 can only occur when 1875 Thursday is January 1 or if it is a leap year and Wednesday is 1876 January 1. 1878 The BYMONTH rule part specifies a COMMA character (US-ASCII 1879 decimal 44) separated list of months of the year. Valid values 1880 are 1 to 12. 1882 The WKST rule part specifies the day on which the workweek starts. 1883 Valid values are MO, TU, WE, TH, FR, SA and SU. This is 1884 significant when a WEEKLY "RRULE" has an interval greater than 1, 1885 and a BYDAY rule part is specified. This is also significant when 1886 in a YEARLY "RRULE" when a BYWEEKNO rule part is specified. The 1887 default value is MO. 1889 The BYSETPOS rule part specifies a COMMA character (US-ASCII 1890 decimal 44) separated list of values which corresponds to the nth 1891 occurrence within the set of recurrence instances specified by the 1892 rule. BYSETPOS operates on a set of recurrence instances in one 1893 interval of the recurrence rule. For a WEEKLY rule, the interval 1894 is one week, for a MONTHLY rule, one month, and for a YEARLY rule, 1895 one year. Valid values are 1 to 366 or -366 to -1. It MUST only 1896 be used in conjunction with another BYxxx rule part. For example 1897 "the last work day of the month" could be represented as: 1899 FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 1901 Each BYSETPOS value can include a positive (+n) or negative (-n) 1902 integer. If present, this indicates the nth occurrence of the 1903 specific occurrence within the set of occurences specified by the 1904 rule. 1906 Recurrence rules may generate recurrence instances with invalid 1907 date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM 1908 on a day where the local time is moved forward by an hour at 1:00 1909 AM). Such recurrence instances MUST be ignored and MUST NOT be 1910 counted as part of the recurrence set. 1912 Information, not contained in the rule, necessary to determine the 1913 various recurrence instance start time and dates are derived from 1914 the Start Time ("DTSTART") component attribute. For example, 1915 "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the 1916 month or a time. This information would be the same as what is 1917 specified for "DTSTART". 1919 BYxxx rule parts modify the recurrence in some manner. BYxxx rule 1920 parts for a period of time which is the same or greater than the 1921 frequency generally reduce or limit the number of occurrences of 1922 the recurrence generated. For example, "FREQ=DAILY;BYMONTH=1" 1923 reduces the number of recurrence instances from all days (if 1924 BYMONTH rule part is not present) to all days in January. BYxxx 1925 rule parts for a period of time less than the frequency generally 1926 increase or expand the number of occurrences of the recurrence. 1927 For example, "FREQ=YEARLY;BYMONTH=1,2" increases the number of 1928 days within the yearly recurrence set from 1 (if BYMONTH rule part 1929 is not present) to 2. 1931 If multiple BYxxx rule parts are specified, then after evaluating 1932 the specified FREQ and INTERVAL rule parts, the BYxxx rule parts 1933 are applied to the current set of evaluated occurrences in the 1934 following order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, 1935 BYHOUR, BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are 1936 evaluated. 1938 The table below summarizes the dependency of BYxxx rule part 1939 expand or limit behaviour on the FREQ rule part value. 1941 The term "N/A" means that the corresponding BYxxx rule part MUST 1942 NOT be used with the corresponding FREQ value. 1944 BYDAY has some special behaviour depending on the FREQ value and 1945 this is described in separate notes below the table. 1947 +----------+--------+--------+-------+-------+------+-------+------+ 1948 | |SECONDLY|MINUTELY|HOURLY |DAILY |WEEKLY|MONTHLY|YEARLY| 1949 +----------+--------+--------+-------+-------+------+-------+------+ 1950 |BYMONTH |Limit |Limit |Limit |Limit |Limit |Limit |Expand| 1951 +----------+--------+--------+-------+-------+------+-------+------+ 1952 |BYWEEKNO |N/A |N/A |N/A |N/A |N/A |N/A |Expand| 1953 +----------+--------+--------+-------+-------+------+-------+------+ 1954 |BYYEARDAY |Limit |Limit |Limit |N/A |N/A |N/A |Expand| 1955 +----------+--------+--------+-------+-------+------+-------+------+ 1956 |BYMONTHDAY|Limit |Limit |Limit |Limit |N/A |Expand |Expand| 1957 +----------+--------+--------+-------+-------+------+-------+------+ 1958 |BYDAY |Limit |Limit |Limit |Limit |Expand|Note 1 |Note 2| 1959 +----------+--------+--------+-------+-------+------+-------+------+ 1960 |BYHOUR |Limit |Limit |Limit |Expand |Expand|Expand |Expand| 1961 +----------+--------+--------+-------+-------+------+-------+------+ 1962 |BYMINUTE |Limit |Limit |Expand |Expand |Expand|Expand |Expand| 1963 +----------+--------+--------+-------+-------+------+-------+------+ 1964 |BYSECOND |Limit |Expand |Expand |Expand |Expand|Expand |Expand| 1965 +----------+--------+--------+-------+-------+------+-------+------+ 1966 |BYSETPOS |Limit |Limit |Limit |Limit |Limit |Limit |Limit | 1967 +----------+--------+--------+-------+-------+------+-------+------+ 1969 Note 1: Limit if BYMONTHDAY is present, otherwise special expand 1970 for MONTHLY. 1972 Note 2: Limit if BYYEARDAY or BYMONTHDAY is present, otherwise 1973 special expand for WEEKLY if BYWEEKNO present, otherwise 1974 special expand for MONTHLY if BYMONTH present, otherwise 1975 special expand for YEARLY. 1977 Here is an example of evaluating multiple BYxxx rule parts. 1979 DTSTART;TZID=America/New_York:19970105T083000 1980 RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9; 1981 BYMINUTE=30 1983 First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to 1984 arrive at "every other year". Then, "BYMONTH=1" would be applied 1985 to arrive at "every January, every other year". Then, "BYDAY=SU" 1986 would be applied to arrive at "every Sunday in January, every 1987 other year". Then, "BYHOUR=8,9" would be applied to arrive at 1988 "every Sunday in January at 8 AM and 9 AM, every other year". 1989 Then, "BYMINUTE=30" would be applied to arrive at "every Sunday in 1990 January at 8:30 AM and 9:30 AM, every other year". Then, lacking 1991 information from "RRULE", the second is derived from "DTSTART", to 1992 end up in "every Sunday in January at 8:30:00 AM and 9:30:00 AM, 1993 every other year". Similarly, if the BYMINUTE, BYHOUR, BYDAY, 1994 BYMONTHDAY or BYMONTH rule part were missing, the appropriate 1995 minute, hour, day or month would have been retrieved from the 1996 "DTSTART" property. 1998 If the computed local start time of a recurrence instance does not 1999 exist, or occurs more than once, for the specified time zone, the 2000 time of the recurrence instance is interpreted in the same manner 2001 as an explicit DATE-TIME value describing that date and time, as 2002 specified in Section 3.3.5. 2004 No additional content value encoding (i.e., BACKSLASH character 2005 encoding) is defined for this value type. 2007 Example: The following is a rule which specifies 10 occurences which 2008 occur every other day: 2010 FREQ=DAILY;COUNT=10;INTERVAL=2 2012 There are other examples specified in Section 3.8.5.3. 2014 3.3.11. Text 2016 Value Name: TEXT 2018 Purpose: This value type is used to identify values that contain 2019 human readable text. 2021 Format Definition: This value type is defined by the following 2022 notation. 2024 text = *(TSAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR) 2025 ; Folded according to description above 2027 ESCAPED-CHAR = ("\\" / "\;" / "\," / "\N" / "\n") 2028 ; \\ encodes \, \N or \n encodes newline 2029 ; \; encodes ;, \, encodes , 2031 TSAFE-CHAR = %x20-21 / %x23-2B / %x2D-39 / %x3C-5B / 2032 %x5D-7E / NON-US-ASCII 2033 ; Any character except CTLs not needed by the current 2034 ; character set, DQUOTE, ";", ":", "\", "," 2036 Description: If the property permits, multiple TEXT values are 2037 specified by a COMMA character (US-ASCII decimal 44) separated 2038 list of values. 2040 The language in which the text is represented can be controlled by 2041 the "LANGUAGE" property parameter. 2043 An intentional formatted text line break MUST only be included in 2044 a "TEXT" property value by representing the line break with the 2045 character sequence of BACKSLASH (US-ASCII decimal 92), followed by 2046 a LATIN SMALL LETTER N (US-ASCII decimal 110) or a LATIN CAPITAL 2047 LETTER N (US-ASCII decimal 78), that is "\n" or "\N". 2049 The "TEXT" property values may also contain special characters 2050 that are used to signify delimiters, such as a COMMA character for 2051 lists of values or a SEMICOLON character for structured values. 2052 In order to support the inclusion of these special characters in 2053 "TEXT" property values, they MUST be escaped with a BACKSLASH 2054 character. A BACKSLASH character (US-ASCII decimal 92) in a 2055 "TEXT" property value MUST be escaped with another BACKSLASH 2056 character. A COMMA character in a "TEXT" property value MUST be 2057 escaped with a BACKSLASH character (US-ASCII decimal 92). A 2058 SEMICOLON character in a "TEXT" property value MUST be escaped 2059 with a BACKSLASH character (US-ASCII decimal 92). However, a 2060 COLON character in a "TEXT" property value SHALL NOT be escaped 2061 with a BACKSLASH character. 2063 Example: A multiple line value of: 2065 Project XYZ Final Review 2066 Conference Room - 3B 2067 Come Prepared. 2069 would be represented as: 2071 Project XYZ Final Review\nConference Room - 3B\nCome Prepared. 2073 3.3.12. Time 2075 Value Name: TIME 2077 Purpose: This value type is used to identify values that contain a 2078 time of day. 2080 Format Definition: This value type is defined by the following 2081 notation: 2083 time = time-hour time-minute time-second [time-utc] 2085 time-hour = 2DIGIT ;00-23 2086 time-minute = 2DIGIT ;00-59 2087 time-second = 2DIGIT ;00-60 2088 ;The "60" value is used to account for positive "leap" seconds. 2090 time-utc = "Z" 2092 Description: If the property permits, multiple "time" values are 2093 specified by a COMMA character (US-ASCII decimal 44) separated 2094 list of values. No additional content value encoding (i.e., 2095 BACKSLASH character encoding) is defined for this value type. 2097 The "TIME" value type is used to identify values that contain a 2098 time of day. The format is based on the [ISO.8601.2004] complete 2099 representation, basic format for a time of day. The text format 2100 consists of a two-digit 24-hour of the day (i.e., values 00-23), 2101 two-digit minute in the hour (i.e., values 00-59), and two-digit 2102 seconds in the minute (i.e., values 00-60). The seconds value of 2103 60 MUST only be used to account for positive "leap" seconds. 2104 Fractions of a second are not supported by this format. 2106 In parallel to the "DATE-TIME" definition above, the "TIME" value 2107 type expresses time values in three forms: 2109 The form of time with UTC offset MUST NOT be used. For example, 2110 the following is not valid for a time value: 2112 230000-0800 ;Invalid time format 2114 FORM #1 LOCAL TIME 2116 The local time form is simply a time value that does not contain 2117 the UTC designator nor does it reference a time zone. For 2118 example, 11:00 PM: 2120 230000 2122 Time values of this type are said to be "floating" and are not 2123 bound to any time zone in particular. They are used to represent 2124 the same hour, minute, and second value regardless of which time 2125 zone is currently being observed. For example, an event can be 2126 defined that indicates that an individual will be busy from 11:00 2127 AM to 1:00 PM every day, no matter which time zone the person is 2128 in. In these cases, a local time can be specified. The recipient 2129 of an iCalendar object with a property value consisting of a local 2130 time, without any relative time zone information, SHOULD interpret 2131 the value as being fixed to whatever time zone the "ATTENDEE" is 2132 in at any given moment. This means that two "Attendees", may 2133 participate in the same event at different UTC times; floating 2134 time SHOULD only be used where that is reasonable behavior. 2136 In most cases, a fixed time is desired. To properly communicate a 2137 fixed time in a property value, either UTC time or local time with 2138 time zone reference MUST be specified. 2140 The use of local time in a TIME value without the "TZID" property 2141 parameter is to be interpreted as a local time value, regardless 2142 of the existence of "VTIMEZONE" calendar components in the 2143 iCalendar object. 2145 FORM #2: UTC TIME 2147 UTC time, or absolute time, is identified by a LATIN CAPITAL 2148 LETTER Z suffix character (US-ASCII decimal 90), the UTC 2149 designator, appended to the time value. For example, the 2150 following represents 07:00 AM UTC: 2152 070000Z 2154 The "TZID" property parameter MUST NOT be applied to TIME 2155 properties whose time values are specified in UTC. 2157 FORM #3: LOCAL TIME AND TIME ZONE REFERENCE 2159 The local time with reference to time zone information form is 2160 identified by the use the "TZID" property parameter to reference 2161 the appropriate time zone definition. "TZID" is discussed in 2162 detail in Section 3.2.18. 2164 Example: The following represents 8:30 AM in New York in Winter, 2165 five hours behind UTC, in each of the three formats: 2167 083000 2168 133000Z 2169 TZID=America/New_York:083000 2171 3.3.13. URI 2173 Value Name: URI 2175 Purpose: This value type is used to identify values that contain a 2176 uniform resource identifier (URI) type of reference to the 2177 property value. 2179 Format Definition: This value type is defined by the following 2180 notation: 2182 uri = 2184 Description: This value type might be used to reference binary 2185 information, for values that are large, or otherwise undesirable 2186 to include directly in the iCalendar object. 2188 Property values with this value type MUST follow the generic URI 2189 syntax defined in [RFC3986]. 2191 When a property parameter value is a URI value type, the URI MUST 2192 be specified as a quoted-string value. 2194 No additional content value encoding (i.e., BACKSLASH character 2195 encoding) is defined for this value type. 2197 Example: The following is a URI for a network file: 2199 http://example.com/my-report.txt 2201 3.3.14. UTC Offset 2203 Value Name: UTC-OFFSET 2205 Purpose: This value type is used to identify properties that contain 2206 an offset from UTC to local time. 2208 Format Definition: This value type is defined by the following 2209 notation: 2211 utc-offset = time-numzone 2213 time-numzone = ("+" / "-") time-hour time-minute [time-second] 2215 Description: The PLUS SIGN (US-ASCII decimal 43) character MUST be 2216 specified for positive UTC offsets (i.e., ahead of UTC). The 2217 HYPHEN-MINUS character (US-ASCII decimal 45) MUST be specified for 2218 negative UTC offsets (i.e., behind of UTC). The value of "-0000" 2219 and "-000000" are not allowed. The time-second, if present, MUST 2220 NOT be 60; if absent, it defaults to zero. 2222 No additional content value encoding (i.e., BACKSLASH character 2223 encoding) is defined for this value type. 2225 Example: The following UTC offsets are given for standard time for 2226 New York (five hours behind UTC) and Geneva (one hour ahead of 2227 UTC): 2229 -0500 2231 +0100 2233 3.4. iCalendar Object 2235 The Calendaring and Scheduling Core Object is a collection of 2236 calendaring and scheduling information. Typically, this information 2237 will consist of an iCalendar stream with a single iCalendar object. 2238 However, multiple iCalendar objects can be sequentially grouped 2239 together in an iCalendar stream. The first line and last line of the 2240 iCalendar object MUST contain a pair of iCalendar object delimiter 2241 strings. The syntax for an iCalendar stream is as follows: 2243 icalstream = 1*icalobject 2245 icalobject = "BEGIN" ":" "VCALENDAR" CRLF 2246 icalbody 2247 "END" ":" "VCALENDAR" CRLF 2249 The following is a simple example of an iCalendar object: 2251 BEGIN:VCALENDAR 2252 VERSION:2.0 2253 PRODID:-//hacksw/handcal//NONSGML v1.0//EN 2254 BEGIN:VEVENT 2255 UID:19970610T172345Z-AF23B2@example.com 2256 DTSTAMP:19970610T172345Z 2257 DTSTART:19970714T170000Z 2258 DTEND:19970715T040000Z 2259 SUMMARY:Bastille Day Party 2260 END:VEVENT 2261 END:VCALENDAR 2263 3.5. Property 2265 A property is the definition of an individual attribute describing a 2266 calendar object or a calendar component. A property takes the form 2267 defined by the "contentline" notation defined in Section 3.1. 2269 The following is an example of a property: 2271 DTSTART:19960415T133000Z 2273 This memo imposes no ordering of properties within an iCalendar 2274 object. 2276 Property names, parameter names and enumerated parameter values are 2277 case insensitive. For example, the property name "DUE" is the same 2278 as "due" and "Due", DTSTART;TZID=America/New_York:19980714T120000 is 2279 the same as DtStart;TzID=America/New_York:19980714T120000. 2281 3.6. Calendar Components 2283 The body of the iCalendar object consists of a sequence of calendar 2284 properties and one or more calendar components. The calendar 2285 properties are attributes that apply to the calendar object as a 2286 whole. The calendar components are collections of properties that 2287 express a particular calendar semantic. For example, the calendar 2288 component can specify an event, a to-do, a journal entry, time zone 2289 information, free/busy time information, or an alarm. 2291 The body of the iCalendar object is defined by the following 2292 notation: 2294 icalbody = calprops component 2296 calprops = *( 2298 ; the following are REQUIRED, 2299 ; but MUST NOT occur more than once 2301 prodid / version / 2303 ; the following are OPTIONAL, 2304 ; but MUST NOT occur more than once 2306 calscale / method / 2308 ; the following are OPTIONAL, 2309 ; and MAY occur more than once 2311 x-prop / iana-prop 2312 ) 2314 component = 1*(eventc / todoc / journalc / freebusyc / 2315 timezonec / iana-comp / x-comp) 2317 iana-comp = "BEGIN" ":" iana-token CRLF 2318 1*contentline 2319 "END" ":" iana-token CRLF 2321 x-comp = "BEGIN" ":" x-name CRLF 2322 1*contentline 2323 "END" ":" x-name CRLF 2325 An iCalendar object MUST include the "PRODID" and "VERSION" calendar 2326 properties. In addition, it MUST include at least one calendar 2327 component. Special forms of iCalendar objects are possible to 2328 publish just busy time (i.e., only a "VFREEBUSY" calendar component) 2329 or time zone (i.e., only a "VTIMEZONE" calendar component) 2330 information. In addition, a complex iCalendar object that is used to 2331 capture a complete snapshot of the contents of a calendar is possible 2332 (e.g., composite of many different calendar components). More 2333 commonly, an iCalendar object will consist of just a single "VEVENT", 2334 "VTODO" or "VJOURNAL" calendar component. Applications MUST ignore 2335 x-comp and iana-comp they don't recognized. 2337 3.6.1. Event Component 2338 Component Name: VEVENT 2340 Purpose: Provide a grouping of component properties that describe an 2341 event. 2343 Format Definition: A "VEVENT" calendar component is defined by the 2344 following notation: 2346 eventc = "BEGIN" ":" "VEVENT" CRLF 2347 eventprop *alarmc 2348 "END" ":" "VEVENT" CRLF 2350 eventprop = *( 2352 ; the following are REQUIRED, 2353 ; but MUST NOT occur more than once 2355 dtstamp / dtstart / uid / 2357 ; the following are OPTIONAL, 2358 ; but MUST NOT occur more than once 2360 class / created / description / geo / 2361 last-mod / location / organizer / priority / 2362 seq / status / summary / transp / 2363 url / recurid / 2365 ; the following is OPTIONAL, 2366 ; but SHOULD NOT occur more than once 2368 rrule / 2370 ; either 'dtend' or 'duration' MAY appear in 2371 ; a 'eventprop', but 'dtend' and 'duration' 2372 ; MUST NOT occur in the same 'eventprop' 2374 dtend / duration / 2376 ; the following are OPTIONAL, 2377 ; and MAY occur more than once 2379 attach / attendee / categories / comment / 2380 contact / exdate / rstatus / related / 2381 resources / rdate / x-prop / iana-prop 2383 ) 2385 Description: A "VEVENT" calendar component is a grouping of 2386 component properties, and possibly including "VALARM" calendar 2387 components, that represents a scheduled amount of time on a 2388 calendar. For example, it can be an activity; such as a one-hour 2389 long, department meeting from 8:00 AM to 9:00 AM, tomorrow. 2390 Generally, an event will take up time on an individual calendar. 2391 Hence, the event will appear as an opaque interval in a search for 2392 busy time. Alternately, the event can have its Time Transparency 2393 set to "TRANSPARENT" in order to prevent blocking of the event in 2394 searches for busy time. 2396 The "VEVENT" is also the calendar component used to specify an 2397 anniversary or daily reminder within a calendar. These events 2398 have a DATE value type for the "DTSTART" property instead of the 2399 default value type of DATE-TIME. If such a "VEVENT" has a "DTEND" 2400 property, it MUST be specified as a DATE value also. The 2401 anniversary type of "VEVENT" can span more than one date (i.e., 2402 "DTEND" property value is set to a calendar date after the 2403 "DTSTART" property value). If such a "VEVENT" has a "DURATION" 2404 property, it MUST be specified as a "dur-day" or "dur-week" value. 2406 The "DTSTART" property for a "VEVENT" specifies the inclusive 2407 start of the event. For recurring events, it also specifies the 2408 very first instance in the recurrence set. The "DTEND" property 2409 for a "VEVENT" calendar component specifies the non-inclusive end 2410 of the event. For cases where a "VEVENT" calendar component 2411 specifies a "DTSTART" property with a DATE value type but no 2412 "DTEND" nor DURATION property, the event's duration is taken to be 2413 one day. For cases where a "VEVENT" calendar component specifies 2414 a "DTSTART" property with a DATE-TIME value type but no "DTEND" 2415 property, the event ends on the same calendar date and time of day 2416 specified by the "DTSTART" property. 2418 The "VEVENT" calendar component cannot be nested within another 2419 calendar component. However, "VEVENT" calendar components can be 2420 related to each other or to a "VTODO" or to a "VJOURNAL" calendar 2421 component with the "RELATED-TO" property. 2423 Example: The following is an example of the "VEVENT" calendar 2424 component used to represent a meeting that will also be opaque to 2425 searches for busy time: 2427 BEGIN:VEVENT 2428 UID:19970901T130000Z-123401@example.com 2429 DTSTAMP:19970901T130000Z 2430 DTSTART:19970903T163000Z 2431 DTEND:19970903T190000Z 2432 SUMMARY:Annual Employee Review 2433 CLASS:PRIVATE 2434 CATEGORIES:BUSINESS,HUMAN RESOURCES 2435 END:VEVENT 2437 The following is an example of the "VEVENT" calendar component 2438 used to represent a reminder that will not be opaque, but rather 2439 transparent, to searches for busy time: 2441 BEGIN:VEVENT 2442 UID:19970901T130000Z-123402@example.com 2443 DTSTAMP:19970901T130000Z 2444 DTSTART:19970401T163000Z 2445 DTEND:19970402T010000Z 2446 SUMMARY:Laurel is in sensitivity awareness class. 2447 CLASS:PUBLIC 2448 CATEGORIES:BUSINESS,HUMAN RESOURCES 2449 TRANSP:TRANSPARENT 2450 END:VEVENT 2452 The following is an example of the "VEVENT" calendar component 2453 used to represent an anniversary that will occur annually. 2455 BEGIN:VEVENT 2456 UID:19970901T130000Z-123403@example.com 2457 DTSTAMP:19970901T130000Z 2458 DTSTART;VALUE=DATE:19971102 2459 SUMMARY:Our Blissful Anniversary 2460 TRANSP:TRANSPARENT 2461 CLASS:CONFIDENTIAL 2462 CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION 2463 RRULE:FREQ=YEARLY 2464 END:VEVENT 2466 The following is an example of the "VEVENT" calendar component 2467 used to represent a multi-day event scheduled from June 28th, 2007 2468 to July 8th, 2007 inclusively. Note that the "DTEND" property is 2469 set to July 9th, 2007, since the "DTEND" property specifies the 2470 non-inclusive end of the event. 2472 BEGIN:VEVENT 2473 UID:20070423T123432Z-541111@example.com 2474 DTSTAMP:20070423T123432Z 2475 DTSTART;VALUE=DATE:20070628 2476 DTEND;VALUE=DATE:20070709 2477 SUMMARY:Festival International de Jazz de Montreal 2478 TRANSP:TRANSPARENT 2479 END:VEVENT 2481 3.6.2. To-do Component 2483 Component Name: VTODO 2485 Purpose: Provide a grouping of calendar properties that describe a 2486 to-do. 2488 Format Definition: A "VTODO" calendar component is defined by the 2489 following notation: 2491 todoc = "BEGIN" ":" "VTODO" CRLF 2492 todoprop *alarmc 2493 "END" ":" "VTODO" CRLF 2495 todoprop = *( 2497 ; the following are REQUIRED, 2498 ; but MUST NOT occur more than once 2500 dtstamp / uid / 2502 ; the following are OPTIONAL, 2503 ; but MUST NOT occur more than once 2505 class / completed / created / description / 2506 dtstart / geo / last-mod / location / organizer / 2507 percent / priority / recurid / seq / status / 2508 summary / url / 2510 ; the following is OPTIONAL, 2511 ; but SHOULD NOT occur more than once 2513 rrule / 2515 ; either 'due' or 'duration' MAY appear in 2516 ; a 'todoprop', but 'due' and 'duration' 2517 ; MUST NOT occur in the same 'todoprop'. 2518 ; If 'duration' appear in a 'todoprop', 2519 ; then 'dtstart' MUST also appear in 2520 ' the same 'todoprop'. 2522 due / duration / 2524 ; the following are OPTIONAL, 2525 ; and MAY occur more than once 2527 attach / attendee / categories / comment / contact / 2528 exdate / rstatus / related / resources / 2529 rdate / x-prop / iana-prop 2531 ) 2533 Description: A "VTODO" calendar component is a grouping of component 2534 properties and possibly "VALARM" calendar components that 2535 represent an action-item or assignment. For example, it can be 2536 used to represent an item of work assigned to an individual; such 2537 as "turn in travel expense today". 2539 The "VTODO" calendar component cannot be nested within another 2540 calendar component. However, "VTODO" calendar components can be 2541 related to each other or to a "VEVENT" or to a "VJOURNAL" calendar 2542 component with the "RELATED-TO" property. 2544 A "VTODO" calendar component without the "DTSTART" and "DUE" (or 2545 "DURATION") properties specifies a to-do that will be associated 2546 with each successive calendar date, until it is completed. 2548 Examples: The following is an example of a "VTODO" calendar 2549 component that needs to be completed before May 1st, 2007. On 2550 midnight May 1st, 2007 this to-do would be considered overdue. 2552 BEGIN:VTODO 2553 UID:20070313T123432Z-456553@example.com 2554 DTSTAMP:20070313T123432Z 2555 DUE;VALUE=DATE:20070501 2556 SUMMARY:Submit Quebec Income Tax Return for 2006 2557 CLASS:CONFIDENTIAL 2558 CATEGORIES:FAMILY,FINANCE 2559 STATUS:NEEDS-ACTION 2560 END:VTODO 2562 The following is an example of a "VTODO" calendar component that 2563 was due before 1:00 P.M. UTC on July 9th, 2007 and was completed 2564 on July 7th, 2007 at 10:00 A.M. UTC. 2566 BEGIN:VTODO 2567 UID:20070514T103211Z-123404@example.com 2568 DTSTAMP:20070514T103211Z 2569 DTSTART:20070514T110000Z 2570 DUE:20070709T130000Z 2571 COMPLETED:20070707T100000Z 2572 SUMMARY:Submit Revised Internet-Draft 2573 PRIORITY:1 2574 STATUS:NEEDS-ACTION 2575 END:VTODO 2577 3.6.3. Journal Component 2579 Component Name: VJOURNAL 2581 Purpose: Provide a grouping of component properties that describe a 2582 journal entry. 2584 Format Definition: A "VJOURNAL" calendar component is defined by the 2585 following notation: 2587 journalc = "BEGIN" ":" "VJOURNAL" CRLF 2588 jourprop 2589 "END" ":" "VJOURNAL" CRLF 2591 jourprop = *( 2593 ; the following are REQUIRED, 2594 ; but MUST NOT occur more than once 2596 dtstamp / uid / 2598 ; the following are OPTIONAL, 2599 ; but MUST NOT occur more than once 2601 class / created / dtstart / 2602 last-mod / organizer / recurid / seq / 2603 status / summary / url / 2605 ; the following is OPTIONAL, 2606 ; but SHOULD NOT occur more than once 2608 rrule / 2610 ; the following are OPTIONAL, 2611 ; and MAY occur more than once 2613 attach / attendee / categories / comment / 2614 contact / description / exdate / related / rdate / 2615 rstatus / x-prop / iana-prop 2616 ) 2618 Description: A "VJOURNAL" calendar component is a grouping of 2619 component properties that represent one or more descriptive text 2620 notes associated with a particular calendar date. The "DTSTART" 2621 property is used to specify the calendar date that the journal 2622 entry is associated with. Generally, it will have a DATE value 2623 data type, but it can also be used to specify a DATE-TIME value 2624 data type. Examples of a journal entry include a daily record of 2625 a legislative body or a journal entry of individual telephone 2626 contacts for the day or an ordered list of accomplishments for the 2627 day. The "VJOURNAL" calendar component can also be used to 2628 associate a document with a calendar date. 2630 The "VJOURNAL" calendar component does not take up time on a 2631 calendar. Hence, it does not play a role in free or busy time 2632 searches -- it is as though it has a time transparency value of 2633 TRANSPARENT. It is transparent to any such searches. 2635 The "VJOURNAL" calendar component cannot be nested within another 2636 calendar component. However, "VJOURNAL" calendar components can 2637 be related to each other or to a "VEVENT" or to a "VTODO" calendar 2638 component, with the "RELATED-TO" property. 2640 Example: The following is an example of the "VJOURNAL" calendar 2641 component: 2643 BEGIN:VJOURNAL 2644 UID:19970901T130000Z-123405@example.com 2645 DTSTAMP:19970901T130000Z 2646 DTSTART;VALUE=DATE:19970317 2647 SUMMARY:Staff meeting minutes 2648 DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa 2649 and Bob. Aurora project plans were reviewed. There is currentl 2650 y no budget reserves for this project. Lisa will escalate to 2651 management. Next meeting on Tuesday.\n 2652 2. Telephone Conference: ABC Corp. sales representative called 2653 to discuss new printer. Promised to get us a demo by Friday.\n 2654 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. 2655 Is looking into a loaner car. 555-2323 (tel). 2656 END:VJOURNAL 2658 3.6.4. Free/Busy Component 2660 Component Name: VFREEBUSY 2662 Purpose: Provide a grouping of component properties that describe 2663 either a request for free/busy time, describe a response to a 2664 request for free/busy time or describe a published set of busy 2665 time. 2667 Format Definition: A "VFREEBUSY" calendar component is defined by 2668 the following notation: 2670 freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF 2671 fbprop 2672 "END" ":" "VFREEBUSY" CRLF 2674 fbprop = *( 2676 ; the following are REQUIRED, 2677 ; but MUST NOT occur more than once 2679 dtstamp / uid / 2681 ; the following are OPTIONAL, 2682 ; but MUST NOT occur more than once 2684 contact / dtstart / dtend / duration / dtstamp / 2685 organizer / uid / url / 2687 ; the following are OPTIONAL, 2688 ; and MAY occur more than once 2690 attendee / comment / freebusy / rstatus / x-prop / 2691 iana-prop 2692 ) 2694 Description: A "VFREEBUSY" calendar component is a grouping of 2695 component properties that represents either a request for, a reply 2696 to a request for free or busy time information or a published set 2697 of busy time information. 2699 When used to request free/busy time information, the "ATTENDEE" 2700 property specifies the calendar users whose free/busy time is 2701 being requested; the "ORGANIZER" property specifies the calendar 2702 user who is requesting the free/busy time; the "DTSTART" and 2703 "DTEND" properties specify the window of time for which the free/ 2704 busy time is being requested; the "UID" and "DTSTAMP" properties 2705 are specified to assist in proper sequencing of multiple free/busy 2706 time requests. 2708 When used to reply to a request for free/busy time, the "ATTENDEE" 2709 property specifies the calendar user responding to the free/busy 2710 time request; the "ORGANIZER" property specifies the calendar user 2711 that originally requested the free/busy time; the "FREEBUSY" 2712 property specifies the free/busy time information (if it exists); 2713 and the "UID" and "DTSTAMP" properties are specified to assist in 2714 proper sequencing of multiple free/busy time replies. 2716 When used to publish busy time, the "ORGANIZER" property specifies 2717 the calendar user associated with the published busy time; the 2718 "DTSTART" and "DTEND" properties specify an inclusive time window 2719 that surrounds the busy time information; the "FREEBUSY" property 2720 specifies the published busy time information; and the "DTSTAMP" 2721 property specifies the date/time that iCalendar object was 2722 created. 2724 The "VFREEBUSY" calendar component cannot be nested within another 2725 calendar component. Multiple "VFREEBUSY" calendar components can 2726 be specified within an iCalendar object. This permits the 2727 grouping of Free/Busy information into logical collections, such 2728 as monthly groups of busy time information. 2730 The "VFREEBUSY" calendar component is intended for use in 2731 iCalendar object methods involving requests for free time, 2732 requests for busy time, requests for both free and busy, and the 2733 associated replies. 2735 Free/Busy information is represented with the "FREEBUSY" property. 2736 This property provides a terse representation of time periods. 2737 One or more "FREEBUSY" properties can be specified in the 2738 "VFREEBUSY" calendar component. 2740 When present in a "VFREEBUSY" calendar component, the "DTSTART" 2741 and "DTEND" properties SHOULD be specified prior to any "FREEBUSY" 2742 properties. In a free time request, these properties can be used 2743 in combination with the "DURATION" property to represent a request 2744 for a duration of free time within a specified window of time. 2746 The recurrence properties ("RRULE", "RDATE", "EXDATE") are not 2747 permitted within a "VFREEBUSY" calendar component. Any recurring 2748 events are resolved into their individual busy time periods using 2749 the "FREEBUSY" property. 2751 Example: The following is an example of a "VFREEBUSY" calendar 2752 component used to request free or busy time information: 2754 BEGIN:VFREEBUSY 2755 UID:19970901T082949Z-FA43EF@example.com 2756 ORGANIZER:mailto:jane_doe@example.com 2757 ATTENDEE:mailto:john_public@example.com 2758 DTSTART:19971015T050000Z 2759 DTEND:19971016T050000Z 2760 DTSTAMP:19970901T083000Z 2761 END:VFREEBUSY 2763 The following is an example of a "VFREEBUSY" calendar component 2764 used to reply to the request with busy time information: 2766 BEGIN:VFREEBUSY 2767 UID:19970901T095957Z-76A912@example.com 2768 ORGANIZER:mailto:jane_doe@example.com 2769 ATTENDEE:mailto:john_public@example.com 2770 DTSTAMP:19970901T100000Z 2771 FREEBUSY:19971015T050000Z/PT8H30M, 2772 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M 2773 URL:http://example.com/pub/busy/jpublic-01.ifb 2774 COMMENT:This iCalendar file contains busy time information for 2775 the next three months. 2776 END:VFREEBUSY 2778 The following is an example of a "VFREEBUSY" calendar component 2779 used to publish busy time information. 2781 BEGIN:VFREEBUSY 2782 UID:19970901T115957Z-76A912@example.com 2783 DTSTAMP:19970901T120000Z 2784 ORGANIZER:jsmith@example.com 2785 DTSTART:19980313T141711Z 2786 DTEND:19980410T141711Z 2787 FREEBUSY:19980314T233000Z/19980315T003000Z 2788 FREEBUSY:19980316T153000Z/19980316T163000Z 2789 FREEBUSY:19980318T030000Z/19980318T040000Z 2790 URL:http://www.example.com/calendar/busytime/jsmith.ifb 2791 END:VFREEBUSY 2793 3.6.5. Time Zone Component 2795 Component Name: VTIMEZONE 2797 Purpose: Provide a grouping of component properties that defines a 2798 time zone. 2800 Format Definition: A "VTIMEZONE" calendar component is defined by 2801 the following notation: 2803 timezonec = "BEGIN" ":" "VTIMEZONE" CRLF 2804 *( 2806 ; 'tzid' is REQUIRED, but MUST NOT occur more 2807 ; than once 2809 tzid / 2810 ; 'last-mod' and 'tzurl' are OPTIONAL, 2811 ; but MUST NOT occur more than once 2813 last-mod / tzurl / 2815 ; one of 'standardc' or 'daylightc' MUST occur 2816 ; and each MAY occur more than once. 2818 standardc / daylightc / 2820 ; the following are OPTIONAL, 2821 ; and MAY occur more than once 2823 x-prop / iana-prop 2825 ) 2827 "END" ":" "VTIMEZONE" CRLF 2829 standardc = "BEGIN" ":" "STANDARD" CRLF 2830 tzprop 2831 "END" ":" "STANDARD" CRLF 2833 daylightc = "BEGIN" ":" "DAYLIGHT" CRLF 2834 tzprop 2835 "END" ":" "DAYLIGHT" CRLF 2837 tzprop = *( 2839 ; the following are REQUIRED, 2840 ; but MUST NOT occur more than once 2842 dtstart / tzoffsetto / tzoffsetfrom / 2844 ; the following is OPTIONAL, 2845 ; but SHOULD NOT occur more than once 2847 rrule / 2849 ; the following are OPTIONAL, 2850 ; and MAY occur more than once 2852 comment / rdate / tzname / x-prop / iana-prop 2854 ) 2856 Description: A time zone is unambiguously defined by the set of time 2857 measurement rules determined by the governing body for a given 2858 geographic area. These rules describe at a minimum the base 2859 offset from UTC for the time zone, often referred to as the 2860 Standard Time offset. Many locations adjust their Standard Time 2861 forward or backward by one hour, in order to accommodate seasonal 2862 changes in number of daylight hours, often referred to as Daylight 2863 Saving Time. Some locations adjust their time by a fraction of an 2864 hour. Standard Time is also known as Winter Time. Daylight 2865 Saving Time is also known as Advanced Time, Summer Time, or Legal 2866 Time in certain countries. The following table shows the changes 2867 in time zone rules in effect for New York City starting from 1967. 2868 Each line represents a description or rule for a particular 2869 observance. 2871 Effective Observance Rule 2873 +-----------+--------------------------+--------+--------------+ 2874 | Date | (Date/Time) | Offset | Abbreviation | 2875 +-----------+--------------------------+--------+--------------+ 2876 | 1967-1973 | last Sun in Apr, 02:00 | -0400 | EDT | 2877 | 1967-2006 | last Sun in Oct, 02:00 | -0500 | EST | 2878 | 1974-1974 | Jan 6, 02:00 | -0400 | EDT | 2879 | 1975-1975 | Feb 23, 02:00 | -0400 | EDT | 2880 | 1976-1986 | last Sun in Apr, 02:00 | -0400 | EDT | 2881 | 1987-2006 | first Sun in Apr, 02:00 | -0400 | EDT | 2882 | 2007-* | second Sun in Mar, 02:00 | -0400 | EDT | 2883 | 2007-* | first Sun in Nov, 02:00 | -0500 | EST | 2884 +-----------+--------------------------+--------+--------------+ 2886 Note: The specification of a global time zone registry is not 2887 addressed by this document and is left for future study. 2888 However, implementers may find the TZ database [TZDB] a useful 2889 reference. It is an informal, public-domain collection of time 2890 zone information, which is currently being maintained by 2891 volunteer Internet participants, and is used in several 2892 operating systems. This database contains current and 2893 historical time zone information for a wide variety of 2894 locations around the globe; it provides a time zone identifier 2895 for every unique time zone rule set in actual use since 1970, 2896 with historical data going back to the introduction of standard 2897 time. 2899 Interoperability between two calendaring and scheduling 2900 applications, especially for recurring events, to-dos or journal 2901 entries, is dependent on the ability to capture and convey date 2902 and time information in an unambiguous format. The specification 2903 of current time zone information is integral to this behavior. 2905 If present, the "VTIMEZONE" calendar component defines the set of 2906 Standard Time and Daylight Saving Time observances (or rules) for 2907 a particular time zone for a given interval of time. The 2908 "VTIMEZONE" calendar component cannot be nested within other 2909 calendar components. Multiple "VTIMEZONE" calendar components can 2910 exist in an iCalendar object. In this situation, each "VTIMEZONE" 2911 MUST represent a unique time zone definition. This is necessary 2912 for some classes of events, such as airline flights, that start in 2913 one time zone and end in another. 2915 The "VTIMEZONE" calendar component MUST include the "TZID" 2916 property and at least one definition of a "STANDARD" or "DAYLIGHT" 2917 sub-component. The "STANDARD" or "DAYLIGHT" subcomponent MUST 2918 include the "DTSTART", "TZOFFSETFROM" and "TZOFFSETTO" properties. 2920 An individual "VTIMEZONE" calendar component MUST be specified for 2921 each unique "TZID" parameter value specified in the iCalendar 2922 object. In addition, a "VTIMEZONE" calendar component, referred 2923 to by a recurring calendar component, MUST provide valid time zone 2924 information for all recurrence instances. 2926 Each "VTIMEZONE" calendar component consists of a collection of 2927 one or more sub-components that describe the rule for a particular 2928 observance (either a Standard Time or a Daylight Saving Time 2929 observance). The "STANDARD" sub-component consists of a 2930 collection of properties that describe Standard Time. The 2931 "DAYLIGHT" sub-component consists of a collection of properties 2932 that describe Daylight Saving Time. In general this collection of 2933 properties consists of: 2935 * the first onset date-time for the observance; 2937 * the last onset date-time for the observance, if a last onset is 2938 known; 2940 * the offset to be applied for the observance; 2942 * a rule that describes the day and time when the observance 2943 takes effect; 2945 * an optional name for the observance. 2947 For a given time zone, there may be multiple unique definitions of 2948 the observances over a period of time. Each observance is 2949 described using either a "STANDARD" or "DAYLIGHT" sub-component. 2950 The collection of these sub-components is used to describe the 2951 time zone for a given period of time. The offset to apply at any 2952 given time is found by locating the observance that has the last 2953 onset date and time before the time in question, and using the 2954 offset value from that observance. 2956 The top-level properties in a "VTIMEZONE" calendar component are: 2958 The mandatory "TZID" property is a text value that uniquely 2959 identifies the "VTIMEZONE" calendar component within the scope of 2960 an iCalendar object. 2962 The optional "LAST-MODIFIED" property is a UTC value that 2963 specifies the date and time that this time zone definition was 2964 last updated. 2966 The optional "TZURL" property is a url value that points to a 2967 published "VTIMEZONE" definition. "TZURL" SHOULD refer to a 2968 resource that is accessible by anyone who might need to interpret 2969 the object. This SHOULD NOT normally be a "file" URL or other URL 2970 that is not widely-accessible. 2972 The collection of properties that are used to define the 2973 "STANDARD" and "DAYLIGHT" sub-components include: 2975 The mandatory "DTSTART" property gives the effective onset date 2976 and local time for the time zone sub-component definition. 2977 "DTSTART" in this usage MUST be specified as a local DATE-TIME 2978 value. 2980 The mandatory "TZOFFSETFROM" property gives the UTC offset which 2981 is in use when the onset of this time zone observance begins. 2982 "TZOFFSETFROM" is combined with "DTSTART" to define the effective 2983 onset for the time zone sub-component definition. For example, 2984 the following represents the time at which the observance of 2985 Standard Time took effect in Fall 1967 for New York City: 2987 DTSTART:19671029T020000 2989 TZOFFSETFROM:-0400 2991 The mandatory "TZOFFSETTO" property gives the UTC offset for the 2992 time zone sub-component (Standard Time or Daylight Saving Time) 2993 when this observance is in use. 2995 The optional "TZNAME" property is the customary name for the time 2996 zone. It may be specified multiple times, to allow for specifying 2997 multiple language variants of the time zone names. This could be 2998 used for displaying dates. 3000 The onset date-times for the observance defined by the time zone 3001 sub-component is defined by the "DTSTART", "RRULE", and "RDATE" 3002 properties. 3004 The "RRULE" property defines the recurrence rule for the onset of 3005 the observance defined by this time zone sub-component. Some 3006 specific requirements for the usage of "RRULE" for this purpose 3007 include: 3009 * If observance is known to have an effective end date, the 3010 "UNTIL" recurrence rule parameter MUST be used to specify the 3011 last valid onset of this observance (i.e., the UNTIL date-time 3012 will be equal to the last instance generated by the recurrence 3013 pattern). It MUST be specified in UTC time. 3015 * The "DTSTART" and the "TZOFFSETFROM" properties MUST be used 3016 when generating the onset date-time values (instances) from the 3017 "RRULE". 3019 Alternatively, the "RDATE" property can be used to define the 3020 onset of the observance by giving the individual onset date and 3021 times. "RDATE" in this usage MUST be specified as a local DATE- 3022 TIME value, relative to the UTC offset specified in the 3023 "TZOFFSETFROM" property. 3025 The optional "COMMENT" property is also allowed for descriptive 3026 explanatory text. 3028 Example: The following are examples of the "VTIMEZONE" calendar 3029 component: 3031 This is an example showing all the time zone rules for New York 3032 City since April 30, 1967 at 03:00:00 EDT. 3034 BEGIN:VTIMEZONE 3035 TZID:America/New_York 3036 LAST-MODIFIED:20050809T050000Z 3037 BEGIN:DAYLIGHT 3038 DTSTART:19670430T020000 3039 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z 3040 TZOFFSETFROM:-0500 3041 TZOFFSETTO:-0400 3042 TZNAME:EDT 3043 END:DAYLIGHT 3044 BEGIN:STANDARD 3045 DTSTART:19671029T020000 3046 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z 3047 TZOFFSETFROM:-0400 3048 TZOFFSETTO:-0500 3049 TZNAME:EST 3050 END:STANDARD 3051 BEGIN:DAYLIGHT 3052 DTSTART:19740106T020000 3053 RDATE:19750223T020000 3054 TZOFFSETFROM:-0500 3055 TZOFFSETTO:-0400 3056 TZNAME:EDT 3057 END:DAYLIGHT 3058 BEGIN:DAYLIGHT 3059 DTSTART:19760425T020000 3060 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19860427T070000Z 3061 TZOFFSETFROM:-0500 3062 TZOFFSETTO:-0400 3063 TZNAME:EDT 3064 END:DAYLIGHT 3065 BEGIN:DAYLIGHT 3066 DTSTART:19870405T020000 3067 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T070000Z 3068 TZOFFSETFROM:-0500 3069 TZOFFSETTO:-0400 3070 TZNAME:EDT 3071 END:DAYLIGHT 3072 BEGIN:DAYLIGHT 3073 DTSTART:20070311T020000 3074 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 3075 TZOFFSETFROM:-0500 3076 TZOFFSETTO:-0400 3077 TZNAME:EDT 3078 END:DAYLIGHT 3079 BEGIN:STANDARD 3080 DTSTART:20071104T020000 3081 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 3082 TZOFFSETFROM:-0400 3083 TZOFFSETTO:-0500 3084 TZNAME:EST 3085 END:STANDARD 3086 END:VTIMEZONE 3088 This is an example showing time zone information for New York City 3089 using "RDATE" property. Note that this is only suitable for a 3090 recurring event that starts on or later than March 11, 2007 at 03: 3091 00:00 EDT (i.e., the earliest effective transition date and time) 3092 and ends no later than March 9, 2008 at 01:59:59 EST (i.e., latest 3093 valid date and time for EST in this scenario). For example, this 3094 can be used for a recurring event that occurs every Friday, 8:00 3095 A.M.-9:00 A.M., starting June 1, 2007, ending December 31, 2007, 3097 BEGIN:VTIMEZONE 3098 TZID:America/New_York 3099 LAST-MODIFIED:20050809T050000Z 3100 BEGIN:STANDARD 3101 DTSTART:20071104T020000 3102 TZOFFSETFROM:-0400 3103 TZOFFSETTO:-0500 3104 TZNAME:EST 3105 END:STANDARD 3106 BEGIN:DAYLIGHT 3107 DTSTART:20070311T020000 3108 TZOFFSETFROM:-0500 3109 TZOFFSETTO:-0400 3110 TZNAME:EDT 3111 END:DAYLIGHT 3112 END:VTIMEZONE 3114 This is a simple example showing the current time zone rules for 3115 New York City using a "RRULE" recurrence pattern. Note that there 3116 is no effective end date to either of the Standard Time or 3117 Daylight Time rules. This information would be valid for a 3118 recurring event starting today and continuing indefinitely. 3120 BEGIN:VTIMEZONE 3121 TZID:America/New_York 3122 LAST-MODIFIED:20050809T050000Z 3124 TZURL:http://zones.example.com/tz/America-New_York.ics 3125 BEGIN:STANDARD 3126 DTSTART:20071104T020000 3127 RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 3128 TZOFFSETFROM:-0400 3129 TZOFFSETTO:-0500 3130 TZNAME:EST 3131 END:STANDARD 3132 BEGIN:DAYLIGHT 3133 DTSTART:20070311T020000 3134 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 3135 TZOFFSETFROM:-0500 3136 TZOFFSETTO:-0400 3137 TZNAME:EDT 3138 END:DAYLIGHT 3139 END:VTIMEZONE 3141 This is an example showing a set of rules for a fictitious time 3142 zone where the Daylight Time rule has an effective end date (i.e., 3143 after that date, Daylight Time is no longer observed). 3145 BEGIN:VTIMEZONE 3146 TZID:Fictitious 3147 LAST-MODIFIED:19870101T000000Z 3148 BEGIN:STANDARD 3149 DTSTART:19671029T020000 3150 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 3151 TZOFFSETFROM:-0400 3152 TZOFFSETTO:-0500 3153 TZNAME:EST 3154 END:STANDARD 3155 BEGIN:DAYLIGHT 3156 DTSTART:19870405T020000 3157 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z 3158 TZOFFSETFROM:-0500 3159 TZOFFSETTO:-0400 3160 TZNAME:EDT 3161 END:DAYLIGHT 3162 END:VTIMEZONE 3164 This is an example showing a set of rules for a fictitious time 3165 zone where the first Daylight Time rule has an effective end date. 3166 There is a second Daylight Time rule that picks up where the other 3167 left off. 3169 BEGIN:VTIMEZONE 3170 TZID:Fictitious 3171 LAST-MODIFIED:19870101T000000Z 3172 BEGIN:STANDARD 3173 DTSTART:19671029T020000 3174 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 3175 TZOFFSETFROM:-0400 3176 TZOFFSETTO:-0500 3177 TZNAME:EST 3178 END:STANDARD 3179 BEGIN:DAYLIGHT 3180 DTSTART:19870405T020000 3181 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z 3182 TZOFFSETFROM:-0500 3183 TZOFFSETTO:-0400 3184 TZNAME:EDT 3185 END:DAYLIGHT 3186 BEGIN:DAYLIGHT 3187 DTSTART:19990424T020000 3188 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 3189 TZOFFSETFROM:-0500 3190 TZOFFSETTO:-0400 3191 TZNAME:EDT 3192 END:DAYLIGHT 3193 END:VTIMEZONE 3195 3.6.6. Alarm Component 3197 Component Name: VALARM 3199 Purpose: Provide a grouping of component properties that define an 3200 alarm. 3202 Format Definition: A "VALARM" calendar component is defined by the 3203 following notation: 3205 alarmc = "BEGIN" ":" "VALARM" CRLF 3206 (audioprop / dispprop / emailprop) 3207 "END" ":" "VALARM" CRLF 3209 audioprop = *( 3211 ; 'action' and 'trigger' are both REQUIRED, 3212 ; but MUST NOT occur more than once 3214 action / trigger / 3216 ; 'duration' and 'repeat' are both OPTIONAL, 3217 ; and MUST NOT occur more than once each, 3218 ; but if one occurs, so MUST the other 3220 duration / repeat / 3222 ; the following is OPTIONAL, 3223 ; but MUST NOT occur more than once 3225 attach / 3227 ; the following is OPTIONAL, 3228 ; and MAY occur more than once 3230 x-prop / iana-prop 3232 ) 3234 dispprop = *( 3236 ; the following are REQUIRED, 3237 ; but MUST NOT occur more than once 3239 action / description / trigger / 3241 ; 'duration' and 'repeat' are both OPTIONAL, 3242 ; and MUST NOT occur more than once each, 3243 ; but if one occurs, so MUST the other 3245 duration / repeat / 3247 ; the following is OPTIONAL, 3248 ; and MAY occur more than once 3250 x-prop / iana-prop 3252 ) 3254 emailprop = *( 3256 ; the following are all REQUIRED, 3257 ; but MUST NOT occur more than once 3259 action / description / trigger / summary / 3260 ; the following is REQUIRED, 3261 ; and MAY occur more than once 3263 attendee / 3265 ; 'duration' and 'repeat' are both OPTIONAL, 3266 ; and MUST NOT occur more than once each, 3267 ; but if one occurs, so MUST the other 3269 duration / repeat / 3271 ; the following are OPTIONAL, 3272 ; and MAY occur more than once 3274 attach / x-prop / iana-prop 3276 ) 3278 Description: A "VALARM" calendar component is a grouping of 3279 component properties that is a reminder or alarm for an event or a 3280 to-do. For example, it may be used to define a reminder for a 3281 pending event or an overdue to-do. 3283 The "VALARM" calendar component MUST include the "ACTION" and 3284 "TRIGGER" properties. The "ACTION" property further constrains 3285 the "VALARM" calendar component in the following ways: 3287 When the action is "AUDIO", the alarm can also include one and 3288 only one "ATTACH" property, which MUST point to a sound resource, 3289 which is rendered when the alarm is triggered. 3291 When the action is "DISPLAY", the alarm MUST also include a 3292 "DESCRIPTION" property, which contains the text to be displayed 3293 when the alarm is triggered. 3295 When the action is "EMAIL", the alarm MUST include a "DESCRIPTION" 3296 property, which contains the text to be used as the message body, 3297 a "SUMMARY" property, which contains the text to be used as the 3298 message subject, and one or more "ATTENDEE" properties, which 3299 contain the email address of attendees to receive the message. It 3300 can also include one or more "ATTACH" properties, which are 3301 intended to be sent as message attachments. When the alarm is 3302 triggered, the email message is sent. 3304 The "VALARM" calendar component MUST only appear within either a 3305 "VEVENT" or "VTODO" calendar component. "VALARM" calendar 3306 components cannot be nested. Multiple mutually independent 3307 "VALARM" calendar components can be specified for a single 3308 "VEVENT" or "VTODO" calendar component. 3310 The "TRIGGER" property specifies when the alarm will be triggered. 3311 The "TRIGGER" property specifies a duration prior to the start of 3312 an event or a to-do. The "TRIGGER" edge may be explicitly set to 3313 be relative to the "START" or "END" of the event or to-do with the 3314 "RELATED" parameter of the "TRIGGER" property. The "TRIGGER" 3315 property value type can alternatively be set to an absolute 3316 calendar date with UTC time. 3318 In an alarm set to trigger on the "START" of an event or to-do, 3319 the "DTSTART" property MUST be present in the associated event or 3320 to-do. In an alarm in a "VEVENT" calendar component set to 3321 trigger on the "END" of the event, either the "DTEND" property 3322 MUST be present, or the "DTSTART" and "DURATION" properties MUST 3323 both be present. In an alarm in a "VTODO" calendar component set 3324 to trigger on the "END" of the to-do, either the "DUE" property 3325 MUST be present, or the "DTSTART" and "DURATION" properties MUST 3326 both be present. 3328 The alarm can be defined such that it triggers repeatedly. A 3329 definition of an alarm with a repeating trigger MUST include both 3330 the "DURATION" and "REPEAT" properties. The "DURATION" property 3331 specifies the delay period, after which the alarm will repeat. 3332 The "REPEAT" property specifies the number of additional 3333 repetitions that the alarm will be triggered. This repetition 3334 count is in addition to the initial triggering of the alarm. Both 3335 of these properties MUST be present in order to specify a 3336 repeating alarm. If one of these two properties is absent, then 3337 the alarm will not repeat beyond the initial trigger. 3339 The "ACTION" property is used within the "VALARM" calendar 3340 component to specify the type of action invoked when the alarm is 3341 triggered. The "VALARM" properties provide enough information for 3342 a specific action to be invoked. It is typically the 3343 responsibility of a "Calendar User Agent" (CUA) to deliver the 3344 alarm in the specified fashion. An "ACTION" property value of 3345 AUDIO specifies an alarm that causes a sound to be played to alert 3346 the user; DISPLAY specifies an alarm that causes a text message to 3347 be displayed to the user; and EMAIL specifies an alarm that causes 3348 an electronic email message to be delivered to one or more email 3349 addresses. 3351 In an AUDIO alarm, if the optional "ATTACH" property is included, 3352 it MUST specify an audio sound resource. The intention is that 3353 the sound will be played as the alarm effect. If an "ATTACH" 3354 property is specified that does not refer to a sound resource, or 3355 if the specified sound resource cannot be rendered (because its 3356 format is unsupported, or because it cannot be retrieved), then 3357 the CUA or other entity responsible for playing the sound may 3358 choose a fallback action, such as playing a built-in default 3359 sound, or playing no sound at all. 3361 In a DISPLAY alarm, the intended alarm effect is for the text 3362 value of the "DESCRIPTION" property to be displayed to the user. 3364 In an EMAIL alarm, the intended alarm effect is for an email 3365 message to be composed and delivered to all the addresses 3366 specified by the "ATTENDEE" properties in the "VALARM" calendar 3367 component. The "DESCRIPTION" property of the "VALARM" calendar 3368 component MUST be used as the body text of the message, and the 3369 "SUMMARY" property MUST be used as the subject text. Any "ATTACH" 3370 properties in the "VALARM" calendar component SHOULD be sent as 3371 attachments to the message. 3373 Example: The following example is for a "VALARM" calendar component 3374 that specifies an audio alarm that will sound at a precise time 3375 and repeat 4 more times at 15 minute intervals: 3377 BEGIN:VALARM 3378 TRIGGER;VALUE=DATE-TIME:19970317T133000Z 3379 REPEAT:4 3380 DURATION:PT15M 3381 ACTION:AUDIO 3382 ATTACH;FMTTYPE=audio/basic:ftp://example.com/pub/ 3383 sounds/bell-01.aud 3384 END:VALARM 3386 The following example is for a "VALARM" calendar component that 3387 specifies a display alarm that will trigger 30 minutes before the 3388 scheduled start of the event or of the to-do it is associated with 3389 and will repeat 2 more times at 15 minute intervals: 3391 BEGIN:VALARM 3392 TRIGGER:-PT30M 3393 REPEAT:2 3394 DURATION:PT15M 3395 ACTION:DISPLAY 3396 DESCRIPTION:Breakfast meeting with executive\n 3397 team at 8:30 AM EST. 3398 END:VALARM 3400 The following example is for a "VALARM" calendar component that 3401 specifies an email alarm that will trigger 2 days before the 3402 scheduled due date/time of a to-do it is associated with. It does 3403 not repeat. The email has a subject, body and attachment link. 3405 BEGIN:VALARM 3406 TRIGGER;RELATED=END:-P2D 3407 ACTION:EMAIL 3408 ATTENDEE:mailto:john_doe@example.com 3409 SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** 3410 DESCRIPTION:A draft agenda needs to be sent out to the attendees 3411 to the weekly managers meeting (MGR-LIST). Attached is a 3412 pointer the document template for the agenda file. 3413 ATTACH;FMTTYPE=application/msword:http://example.com/ 3414 templates/agenda.doc 3415 END:VALARM 3417 3.7. Calendar Properties 3419 The Calendar Properties are attributes that apply to the iCalendar 3420 object, as a whole. These properties do not appear within a calendar 3421 component. They SHOULD be specified after the "BEGIN:VCALENDAR" 3422 delimiter string and prior to any calendar component. 3424 3.7.1. Calendar Scale 3426 Property Name: CALSCALE 3428 Purpose: This property defines the calendar scale used for the 3429 calendar information specified in the iCalendar object. 3431 Value Type: TEXT 3433 Property Parameters: IANA and non-standard property parameters can 3434 be specified on this property. 3436 Conformance: This property can be specified once in an iCalendar 3437 object. The default value is "GREGORIAN". 3439 Description: This memo is based on the Gregorian calendar scale. 3440 The Gregorian calendar scale is assumed if this property is not 3441 specified in the iCalendar object. It is expected that other 3442 calendar scales will be defined in other specifications or by 3443 future versions of this memo. 3445 Format Definition: This property is defined by the following 3446 notation: 3448 calscale = "CALSCALE" calparam ":" calvalue CRLF 3450 calparam = *(";" other-param) 3452 calvalue = "GREGORIAN" 3454 Example: The following is an example of this property: 3456 CALSCALE:GREGORIAN 3458 3.7.2. Method 3460 Property Name: METHOD 3462 Purpose: This property defines the iCalendar object method 3463 associated with the calendar object. 3465 Value Type: TEXT 3467 Property Parameters: IANA and non-standard property parameters can 3468 be specified on this property. 3470 Conformance: This property can be specified once in an iCalendar 3471 object. 3473 Description: When used in a MIME message entity, the value of this 3474 property MUST be the same as the Content-Type "method" parameter 3475 value. If either the "METHOD" property or the Content-Type 3476 "method" parameter is specified, then the other MUST also be 3477 specified. 3479 No methods are defined by this specification. This is the subject 3480 of other specifications, such as the iCalendar Transport- 3481 independent Interoperability Protocol (iTIP) defined by 3482 [I-D.ietf-calsify-2446bis]. 3484 If this property is not present in the iCalendar object, then a 3485 scheduling transaction MUST NOT be assumed. In such cases, the 3486 iCalendar object is merely being used to transport a snapshot of 3487 some calendar information; without the intention of conveying a 3488 scheduling semantic. 3490 Format Definition: This property is defined by the following 3491 notation: 3493 method = "METHOD" metparam ":" metvalue CRLF 3495 metparam = *(";" other-param) 3497 metvalue = iana-token 3499 Example: The following is a hypothetical example of this property to 3500 convey that the iCalendar object is a scheduling request: 3502 METHOD:REQUEST 3504 3.7.3. Product Identifier 3506 Property Name: PRODID 3508 Purpose: This property specifies the identifier for the product that 3509 created the iCalendar object. 3511 Value Type: TEXT 3513 Property Parameters: IANA and non-standard property parameters can 3514 be specified on this property. 3516 Conformance: The property MUST be specified once in an iCalendar 3517 object. 3519 Description: The vendor of the implementation SHOULD assure that 3520 this is a globally unique identifier; using some technique such as 3521 an FPI value, as defined in [ISO.9070.1991]. 3523 This property SHOULD not be used to alter the interpretation of an 3524 iCalendar object beyond the semantics specified in this memo. For 3525 example, it is not to be used to further the understanding of non- 3526 standard properties. 3528 Format Definition: This property is defined by the following 3529 notation: 3531 prodid = "PRODID" pidparam ":" pidvalue CRLF 3533 pidparam = *(";" other-param) 3535 pidvalue = text 3536 ;Any text that describes the product and version 3537 ;and that is generally assured of being unique. 3539 Example: The following is an example of this property. It does not 3540 imply that English is the default language. 3542 PRODID:-//ABC Corporation//NONSGML My Product//EN 3544 3.7.4. Version 3546 Property Name: VERSION 3548 Purpose: This property specifies the identifier corresponding to the 3549 highest version number or the minimum and maximum range of the 3550 iCalendar specification that is required in order to interpret the 3551 iCalendar object. 3553 Value Type: TEXT 3555 Property Parameters: IANA and non-standard property parameters can 3556 be specified on this property. 3558 Conformance: This property MUST be specified once in an iCalendar 3559 object. 3561 Description: A value of "2.0" corresponds to this memo. 3563 Format Definition: This property is defined by the following 3564 notation: 3566 version = "VERSION" verparam ":" vervalue CRLF 3568 verparam = *(";" other-param) 3570 vervalue = "2.0" ;This memo 3571 / maxver 3572 / (minver ";" maxver) 3574 minver = 3575 ;Minimum iCalendar version needed to parse the iCalendar object 3577 maxver = 3578 ;Maximum iCalendar version needed to parse the iCalendar object 3580 Example: The following is an example of this property: 3582 VERSION:2.0 3584 3.8. Component Properties 3586 The following properties can appear within calendar components, as 3587 specified by each component property definition. 3589 3.8.1. Descriptive Component Properties 3591 The following properties specify descriptive information about 3592 calendar components. 3594 3.8.1.1. Attachment 3596 Property Name: ATTACH 3598 Purpose: This property provides the capability to associate a 3599 document object with a calendar component. 3601 Value Type: The default value type for this property is URI. The 3602 value type can also be set to BINARY to indicate inline binary 3603 encoded content information. 3605 Property Parameters: IANA, non-standard, inline encoding, format 3606 type and value data type property parameters can be specified on 3607 this property. 3609 Conformance: This property can be specified multiple times in a 3610 "VEVENT", "VTODO", "VJOURNAL" or "VALARM" calendar component with 3611 the exception of AUDIO alarm which only allow this property to 3612 occur once. 3614 Description: This property is used in "VEVENT", "VTODO", and 3615 "VJOURNAL" calendar components to associate a resource (e.g., 3616 document) with the calendar component. This property is used in 3617 "VALARM" calendar components to specify an audio sound resource or 3618 an email message attachment. This property can be specified as a 3619 URI pointing to a resource or as inline binary encoded content. 3621 Format Definition: This property is defined by the following 3622 notation: 3624 attach = "ATTACH" attachparam ":" uri CRLF 3626 / "ATTACH" attachparam ";" "ENCODING" "=" "BASE64" 3627 ";" "VALUE" "=" "BINARY" ":" binary 3629 attachparam = *( 3631 ; the following is OPTIONAL, 3632 ; but MUST NOT occur more than once 3634 (";" fmttypeparam) / 3636 ; the following is OPTIONAL, 3637 ; and MAY occur more than once 3639 (";" other-param) 3641 ) 3643 Example: The following are examples of this property: 3645 ATTACH:CID:jsmith.part3.960817T083000.xyzMail@example.com 3647 ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/ 3648 reports/r-960812.ps 3650 3.8.1.2. Categories 3652 Property Name: CATEGORIES 3654 Purpose: This property defines the categories for a calendar 3655 component. 3657 Value Type: TEXT 3659 Property Parameters: IANA, non-standard, and language property 3660 parameters can be specified on this property. 3662 Conformance: The property can be specified within "VEVENT", "VTODO" 3663 or "VJOURNAL" calendar components. 3665 Description: This property is used to specify categories or subtypes 3666 of the calendar component. The categories are useful in searching 3667 for a calendar component of a particular type and category. 3668 Within the "VEVENT", "VTODO" or "VJOURNAL" calendar components, 3669 more than one category can be specified as a list of categories 3670 separated by the COMMA character (US-ASCII decimal 44). 3672 Format Definition: This property is defined by the following 3673 notation: 3675 categories = "CATEGORIES" catparam ":" text *("," text) 3676 CRLF 3678 catparam = *( 3680 ; the following is OPTIONAL, 3681 ; but MUST NOT occur more than once 3683 (";" languageparam ) / 3685 ; the following is OPTIONAL, 3686 ; and MAY occur more than once 3688 (";" other-param) 3690 ) 3692 Example: The following are examples of this property: 3694 CATEGORIES:APPOINTMENT,EDUCATION 3696 CATEGORIES:MEETING 3698 3.8.1.3. Classification 3700 Property Name: CLASS 3702 Purpose: This property defines the access classification for a 3703 calendar component. 3705 Value Type: TEXT 3707 Property Parameters: IANA and non-standard property parameters can 3708 be specified on this property. 3710 Conformance: The property can be specified once in a "VEVENT", 3711 "VTODO" or "VJOURNAL" calendar components. 3713 Description: An access classification is only one component of the 3714 general security system within a calendar application. It 3715 provides a method of capturing the scope of the access the 3716 calendar owner intends for information within an individual 3717 calendar entry. The access classification of an individual 3718 iCalendar component is useful when measured along with the other 3719 security components of a calendar system (e.g., calendar user 3720 authentication, authorization, access rights, access role, etc.). 3721 Hence, the semantics of the individual access classifications 3722 cannot be completely defined by this memo alone. Additionally, 3723 due to the "blind" nature of most exchange processes using this 3724 memo, these access classifications cannot serve as an enforcement 3725 statement for a system receiving an iCalendar object. Rather, 3726 they provide a method for capturing the intention of the calendar 3727 owner for the access to the calendar component. If not specified 3728 in a component that allows this property, the default value is 3729 PUBLIC. Applications MUST treat x-name and iana-token value they 3730 don't recognized the same way as the PRIVATE value. 3732 Format Definition: This property is defined by the following 3733 notation: 3735 class = "CLASS" classparam ":" classvalue CRLF 3737 classparam = *(";" other-param) 3739 classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token 3740 / x-name 3741 ;Default is PUBLIC 3743 Example: The following is an example of this property: 3745 CLASS:PUBLIC 3747 3.8.1.4. Comment 3749 Property Name: COMMENT 3751 Purpose: This property specifies non-processing information intended 3752 to provide a comment to the calendar user. 3754 Value Type: TEXT 3756 Property Parameters: IANA, non-standard, alternate text 3757 representation and language property parameters can be specified 3758 on this property. 3760 Conformance: This property can be specified multiple times in 3761 "VEVENT", "VTODO", "VJOURNAL", and "VFREEBUSY" calendar components 3762 as well as in the "STANDARD" and "DAYLIGHT" sub-components. 3764 Description: This property is used to specify a comment to the 3765 calendar user. 3767 Format Definition: This property is defined by the following 3768 notation: 3770 comment = "COMMENT" commparam ":" text CRLF 3772 commparam = *( 3774 ; the following are OPTIONAL, 3775 ; but MUST NOT occur more than once 3777 (";" altrepparam) / (";" languageparam) / 3779 ; the following is OPTIONAL, 3780 ; and MAY occur more than once 3782 (";" other-param) 3784 ) 3786 Example: The following is an example of this property: 3788 COMMENT:The meeting really needs to include both ourselves 3789 and the customer. We can't hold this meeting without them. 3790 As a matter of fact\, the venue for the meeting ought to be at 3791 their site. - - John 3793 3.8.1.5. Description 3795 Property Name: DESCRIPTION 3797 Purpose: This property provides a more complete description of the 3798 calendar component, than that provided by the "SUMMARY" property. 3800 Value Type: TEXT 3802 Property Parameters: IANA, non-standard, alternate text 3803 representation and language property parameters can be specified 3804 on this property. 3806 Conformance: The property can be specified in the "VEVENT", "VTODO", 3807 "VJOURNAL" or "VALARM" calendar components. The property can be 3808 specified multiple times only within a "VJOURNAL" calendar 3809 component. 3811 Description: This property is used in the "VEVENT" and "VTODO" to 3812 capture lengthy textual decriptions associated with the activity. 3814 This property is used in the "VJOURNAL" calendar component to 3815 capture one or more textual journal entries. 3817 This property is used in the "VALARM" calendar component to 3818 capture the display text for a DISPLAY category of alarm, and to 3819 capture the body text for an EMAIL category of alarm. 3821 Format Definition: This property is defined by the following 3822 notation: 3824 description = "DESCRIPTION" descparam ":" text CRLF 3826 descparam = *( 3828 ; the following are OPTIONAL, 3829 ; but MUST NOT occur more than once 3831 (";" altrepparam) / (";" languageparam) / 3833 ; the following is OPTIONAL, 3834 ; and MAY occur more than once 3836 (";" other-param) 3838 ) 3840 Example: The following is an example of this property with formatted 3841 line breaks in the property value: 3843 DESCRIPTION:Meeting to provide technical review for "Phoenix" 3844 design.\nHappy Face Conference Room. Phoenix design team 3845 MUST attend this meeting.\nRSVP to team leader. 3847 3.8.1.6. Geographic Position 3849 Property Name: GEO 3851 Purpose: This property specifies information related to the global 3852 position for the activity specified by a calendar component. 3854 Value Type: FLOAT. The value MUST be two SEMICOLON separated FLOAT 3855 values. 3857 Property Parameters: IANA and non-standard property parameters can 3858 be specified on this property. 3860 Conformance: This property can be specified in "VEVENT" or "VTODO" 3861 calendar components. 3863 Description: This property value specifies latitude and longitude, 3864 in that order (i.e., "LAT LON" ordering). The longitude 3865 represents the location East or West of the prime meridian as a 3866 positive or negative real number, respectively. The longitude and 3867 latitude values MAY be specified up to six decimal places, which 3868 will allow for accuracy to within one meter of geographical 3869 position. Receiving applications MUST accept values of this 3870 precision and MAY truncate values of greater precision. 3872 Values for latitude and longitude shall be expressed as decimal 3873 fractions of degrees. Whole degrees of latitude shall be 3874 represented by a two-digit decimal number ranging from 0 through 3875 90. Whole degrees of longitude shall be represented by a decimal 3876 number ranging from 0 through 180. When a decimal fraction of a 3877 degree is specified, it shall be separated from the whole number 3878 of degrees by a decimal point. 3880 Latitudes North of the equator shall be specified by a plus sign 3881 (+), or by the absence of a minus sign (-), preceding the digits 3882 designating degrees. Latitudes South of the Equator shall be 3883 designated by a minus sign (-) preceding the digits designating 3884 degrees. A point on the Equator shall be assigned to the Northern 3885 Hemisphere. 3887 Longitudes east of the prime meridian shall be specified by a plus 3888 sign (+), or by the absence of a minus sign (-), preceding the 3889 digits designating degrees. Longitudes west of the meridian shall 3890 be designated by minus sign (-) preceding the digits designating 3891 degrees. A point on the prime meridian shall be assigned to the 3892 Eastern Hemisphere. A point on the 180th meridian shall be 3893 assigned to the Western Hemisphere. One exception to this last 3894 convention is permitted. For the special condition of describing 3895 a band of latitude around the earth, the East Bounding Coordinate 3896 data element shall be assigned the value +180 (180) degrees. 3898 Any spatial address with a latitude of +90 (90) or -90 degrees 3899 will specify the position at the North or South Pole, 3900 respectively. The component for longitude may have any legal 3901 value. 3903 With the exception of the special condition described above, this 3904 form is specified in Department of Commerce, 1986, Representation 3905 of geographic point locations for information interchange (Federal 3906 Information Processing Standard 70-1): Washington, Department of 3907 Commerce, National Institute of Standards and Technology. 3909 The simple formula for converting degrees-minutes-seconds into 3910 decimal degrees is: 3912 decimal = degrees + minutes/60 + seconds/3600. 3914 Format Definition: This property is defined by the following 3915 notation: 3917 geo = "GEO" geoparam ":" geovalue CRLF 3919 geoparam = *(";" other-param) 3921 geovalue = float ";" float 3922 ;Latitude and Longitude components 3924 Example: The following is an example of this property: 3926 GEO:37.386013;-122.082932 3928 3.8.1.7. Location 3930 Property Name: LOCATION 3932 Purpose: This property defines the intended venue for the activity 3933 defined by a calendar component. 3935 Value Type: TEXT 3937 Property Parameters: IANA, non-standard, alternate text 3938 representation and language property parameters can be specified 3939 on this property. 3941 Conformance: This property can be specified in "VEVENT" or "VTODO" 3942 calendar component. 3944 Description: Specific venues such as conference or meeting rooms may 3945 be explicitly specified using this property. An alternate 3946 representation may be specified that is a URI that points to 3947 directory information with more structured specification of the 3948 location. For example, the alternate representation may specify 3949 either an LDAP URL [RFC4516] pointing to an LDAP server entry or a 3950 CID URL [RFC2392] pointing to a MIME body part containing a vCard 3951 [RFC2426] for the location. 3953 Format Definition: This property is defined by the following 3954 notation: 3956 location = "LOCATION" locparam ":" text CRLF 3958 locparam = *( 3960 ; the following are OPTIONAL, 3961 ; but MUST NOT occur more than once 3963 (";" altrepparam) / (";" languageparam) / 3965 ; the following is OPTIONAL, 3966 ; and MAY occur more than once 3968 (";" other-param) 3970 ) 3972 Example: The following are some examples of this property: 3974 LOCATION:Conference Room - F123\, Bldg. 002 3976 LOCATION;ALTREP="http://xyzcorp.com/conf-rooms/f123.vcf": 3977 Conference Room - F123\, Bldg. 002 3979 3.8.1.8. Percent Complete 3981 Property Name: PERCENT-COMPLETE 3983 Purpose: This property is used by an assignee or delegatee of a 3984 to-do to convey the percent completion of a to-do to the 3985 "Organizer". 3987 Value Type: INTEGER 3989 Property Parameters: IANA and non-standard property parameters can 3990 be specified on this property. 3992 Conformance: This property can be specified once in a "VTODO" 3993 calendar component. 3995 Description: The property value is a positive integer between zero 3996 and one hundred. A value of "0" indicates the to-do has not yet 3997 been started. A value of "100" indicates that the to-do has been 3998 completed. Integer values in between indicate the percent 3999 partially complete. 4001 When a to-do is assigned to multiple individuals, the property 4002 value indicates the percent complete for that portion of the to-do 4003 assigned to the assignee or delegatee. For example, if a to-do is 4004 assigned to both individuals "A" and "B". A reply from "A" with a 4005 percent complete of "70" indicates that "A" has completed 70% of 4006 the to-do assigned to them. A reply from "B" with a percent 4007 complete of "50" indicates "B" has completed 50% of the to-do 4008 assigned to them. 4010 Format Definition: This property is defined by the following 4011 notation: 4013 percent = "PERCENT-COMPLETE" pctparam ":" integer CRLF 4015 pctparam = *(";" other-param) 4017 Example: The following is an example of this property to show 39% 4018 completion: 4020 PERCENT-COMPLETE:39 4022 3.8.1.9. Priority 4024 Property Name: PRIORITY 4026 Purpose: This property defines the relative priority for a calendar 4027 component. 4029 Value Type: INTEGER 4031 Property Parameters: IANA and non-standard property parameters can 4032 be specified on this property. 4034 Conformance: This property can be specified in "VEVENT" and "VTODO" 4035 calendar components. 4037 Description: This priority is specified as an integer in the range 4038 zero to nine. A value of zero (US-ASCII decimal 48) specifies an 4039 undefined priority. A value of one (US-ASCII decimal 49) is the 4040 highest priority. A value of two (US-ASCII decimal 50) is the 4041 second highest priority. Subsequent numbers specify a decreasing 4042 ordinal priority. A value of nine (US-ASCII decimal 57 ) is the 4043 lowest priority. 4045 A CUA with a three-level priority scheme of "HIGH", "MEDIUM" and 4046 "LOW" is mapped into this property such that a property value in 4047 the range of one (US-ASCII decimal 49) to four (US-ASCII decimal 4048 52) specifies "HIGH" priority. A value of five (US-ASCII decimal 4049 53) is the normal or "MEDIUM" priority. A value in the range of 4050 six (US-ASCII decimal 54) to nine (US-ASCII decimal 57 ) is "LOW" 4051 priority. 4053 A CUA with a priority schema of "A1", "A2", "A3", "B1", "B2", ..., 4054 "C3" is mapped into this property such that a property value of 4055 one (US-ASCII decimal 49) specifies "A1", a property value of two 4056 (US-ASCII decimal 50) specifies "A2", a property value of three 4057 (US-ASCII decimal 51) specifies "A3", and so forth up to a 4058 property value of 9 (US-ASCII decimal 57 ) specifies "C3". 4060 Other integer values are reserved for future use. 4062 Within a "VEVENT" calendar component, this property specifies a 4063 priority for the event. This property may be useful when more 4064 than one event is scheduled for a given time period. 4066 Within a "VTODO" calendar component, this property specified a 4067 priority for the to-do. This property is useful in prioritizing 4068 multiple action items for a given time period. 4070 Format Definition: This property is defined by the following 4071 notation: 4073 priority = "PRIORITY" prioparam ":" priovalue CRLF 4074 ;Default is zero (i.e., undefined) 4076 prioparam = *(";" other-param) 4078 priovalue = integer ;Must be in the range [0..9] 4079 ; All other values are reserved for future use 4081 Example: The following is an example of a property with the highest 4082 priority: 4084 PRIORITY:1 4086 The following is an example of a property with a next highest 4087 priority: 4089 PRIORITY:2 4091 The following is an example of a property with no priority. This 4092 is equivalent to not specifying the "PRIORITY" property: 4094 PRIORITY:0 4096 3.8.1.10. Resources 4098 Property Name: RESOURCES 4100 Purpose: This property defines the equipment or resources 4101 anticipated for an activity specified by a calendar component. 4103 Value Type: TEXT 4105 Property Parameters: IANA, non-standard, alternate text 4106 representation and language property parameters can be specified 4107 on this property. 4109 Conformance: This property can be specified once in "VEVENT" or 4110 "VTODO" calendar component. 4112 Description: The property value is an arbitrary text. More than one 4113 resource can be specified as a list of resources separated by the 4114 COMMA character (US-ASCII decimal 44). 4116 Format Definition: This property is defined by the following 4117 notation: 4119 resources = "RESOURCES" resrcparam ":" text *("," text) CRLF 4121 resrcparam = *( 4123 ; the following are OPTIONAL, 4124 ; but MUST NOT occur more than once 4126 (";" altrepparam) / (";" languageparam) / 4128 ; the following is OPTIONAL, 4129 ; and MAY occur more than once 4131 (";" other-param) 4133 ) 4135 Example: The following is an example of this property: 4137 RESOURCES:EASEL,PROJECTOR,VCR 4139 RESOURCES;LANGUAGE=fr:1 raton-laveur 4141 3.8.1.11. Status 4143 Property Name: STATUS 4145 Purpose: This property defines the overall status or confirmation 4146 for the calendar component. 4148 Value Type: TEXT 4150 Property Parameters: IANA and non-standard property parameters can 4151 be specified on this property. 4153 Conformance: This property can be specified once in "VEVENT", 4154 "VTODO" or "VJOURNAL" calendar components. 4156 Description: In a group scheduled calendar component, the property 4157 is used by the "Organizer" to provide a confirmation of the event 4158 to the "Attendees". For example in a "VEVENT" calendar component, 4159 the "Organizer" can indicate that a meeting is tentative, 4160 confirmed or cancelled. In a "VTODO" calendar component, the 4161 "Organizer" can indicate that an action item needs action, is 4162 completed, is in process or being worked on, or has been 4163 cancelled. In a "VJOURNAL" calendar component, the "Organizer" 4164 can indicate that a journal entry is draft, final or has been 4165 cancelled or removed. 4167 Format Definition: This property is defined by the following 4168 notation: 4170 status = "STATUS" statparam ":" statvalue CRLF 4172 statparam = *(";" other-param) 4174 statvalue = (statvalue-event 4175 / statvalue-todo 4176 / statvalue-jour) 4178 statvalue-event = "TENTATIVE" ;Indicates event is tentative. 4179 / "CONFIRMED" ;Indicates event is definite. 4180 / "CANCELLED" ;Indicates event was cancelled. 4181 ;Status values for a "VEVENT" 4183 statvalue-todo = "NEEDS-ACTION" ;Indicates to-do needs action. 4184 / "COMPLETED" ;Indicates to-do completed. 4185 / "IN-PROCESS" ;Indicates to-do in process of. 4186 / "CANCELLED" ;Indicates to-do was cancelled. 4187 ;Status values for "VTODO". 4189 statvalue-jour = "DRAFT" ;Indicates journal is draft. 4190 / "FINAL" ;Indicates journal is final. 4191 / "CANCELLED" ;Indicates journal is removed. 4192 ;Status values for "VJOURNAL". 4194 Example: The following is an example of this property for a "VEVENT" 4195 calendar component: 4197 STATUS:TENTATIVE 4199 The following is an example of this property for a "VTODO" 4200 calendar component: 4202 STATUS:NEEDS-ACTION 4204 The following is an example of this property for a "VJOURNAL" 4205 calendar component: 4207 STATUS:DRAFT 4209 3.8.1.12. Summary 4211 Property Name: SUMMARY 4213 Purpose: This property defines a short summary or subject for the 4214 calendar component. 4216 Value Type: TEXT 4218 Property Parameters: IANA, non-standard, alternate text 4219 representation and language property parameters can be specified 4220 on this property. 4222 Conformance: The property can be specified in "VEVENT", "VTODO", 4223 "VJOURNAL" or "VALARM" calendar components. 4225 Description: This property is used in the "VEVENT", "VTODO" and 4226 "VJOURNAL" calendar components to capture a short, one line 4227 summary about the activity or journal entry. 4229 This property is used in the "VALARM" calendar component to 4230 capture the subject of an EMAIL category of alarm. 4232 Format Definition: This property is defined by the following 4233 notation: 4235 summary = "SUMMARY" summparam ":" text CRLF 4237 summparam = *( 4239 ; the following are OPTIONAL, 4240 ; but MUST NOT occur more than once 4242 (";" altrepparam) / (";" languageparam) / 4244 ; the following is OPTIONAL, 4245 ; and MAY occur more than once 4247 (";" other-param) 4249 ) 4251 Example: The following is an example of this property: 4253 SUMMARY:Department Party 4255 3.8.2. Date and Time Component Properties 4257 The following properties specify date and time related information in 4258 calendar components. 4260 3.8.2.1. Date/Time Completed 4261 Property Name: COMPLETED 4263 Purpose: This property defines the date and time that a to-do was 4264 actually completed. 4266 Value Type: DATE-TIME 4268 Property Parameters: IANA and non-standard property parameters can 4269 be specified on this property. 4271 Conformance: The property can be specified in a "VTODO" calendar 4272 component. The value MUST be specified as a date with UTC time. 4274 Description: This property defines the date and time that a to-do 4275 was actually completed. 4277 Format Definition: This property is defined by the following 4278 notation: 4280 completed = "COMPLETED" compparam ":" date-time CRLF 4282 compparam = *(";" other-param) 4284 Example: The following is an example of this property: 4286 COMPLETED:19960401T150000Z 4288 3.8.2.2. Date/Time End 4290 Property Name: DTEND 4292 Purpose: This property specifies the date and time that a calendar 4293 component ends. 4295 Value Type: The default value type is DATE-TIME. The value type can 4296 be set to a DATE value type. 4298 Property Parameters: IANA, non-standard, value data type, and time 4299 zone identifier property parameters can be specified on this 4300 property. 4302 Conformance: This property can be specified in "VEVENT" or 4303 "VFREEBUSY" calendar components. 4305 Description: Within the "VEVENT" calendar component, this property 4306 defines the date and time by which the event ends. The value type 4307 of this property MUST be the same as the "DTSTART" property, and 4308 its value MUST be later in time than the value of the "DTSTART" 4309 property. Furthermore, this property MUST be specified as a date 4310 with local time if and only if the "DTSTART" property is also 4311 specified as a date with local time. 4313 Within the "VFREEBUSY" calendar component, this property defines 4314 the end date and time for the free or busy time information. The 4315 time MUST be specified in the UTC time format. The value MUST be 4316 later in time than the value of the "DTSTART" property. 4318 Format Definition: This property is defined by the following 4319 notation: 4321 dtend = "DTEND" dtendparam ":" dtendval CRLF 4323 dtendparam = *( 4325 ; the following are OPTIONAL, 4326 ; but MUST NOT occur more than once 4328 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 4329 (";" tzidparam) / 4331 ; the following is OPTIONAL, 4332 ; and MAY occur more than once 4334 (";" other-param) 4336 ) 4338 dtendval = date-time / date 4339 ;Value MUST match value type 4341 Example: The following is an example of this property: 4343 DTEND:19960401T150000Z 4345 DTEND;VALUE=DATE:19980704 4347 3.8.2.3. Date/Time Due 4349 Property Name: DUE 4351 Purpose: This property defines the date and time that a to-do is 4352 expected to be completed. 4354 Value Type: The default value type is DATE-TIME. The value type can 4355 be set to a DATE value type. 4357 Property Parameters: IANA, non-standard, value data type, and time 4358 zone identifier property parameters can be specified on this 4359 property. 4361 Conformance: The property can be specified once in a "VTODO" 4362 calendar component. 4364 Description: This property defines the date and time that a to-do is 4365 expected to be completed. For cases where this property is 4366 specified in a "VTODO" calendar component that also specifies a 4367 "DTSTART" property, the value type of this property MUST be the 4368 same as the "DTSTART" property, and the value of this property 4369 MUST be later in time than the value of the "DTSTART" property. 4370 Furthermore, this property MUST be specified as a date with local 4371 time if and only if the "DTSTART" property is also specified as a 4372 date with local time. 4374 Format Definition: This property is defined by the following 4375 notation: 4377 due = "DUE" dueparam ":" dueval CRLF 4379 dueparam = *( 4381 ; the following are OPTIONAL, 4382 ; but MUST NOT occur more than once 4384 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 4385 (";" tzidparam) / 4387 ; the following is OPTIONAL, 4388 ; and MAY occur more than once 4390 (";" other-param) 4392 ) 4394 dueval = date-time / date 4395 ;Value MUST match value type 4397 Example: The following is an example of this property: 4399 DUE:19980430T000000Z 4401 3.8.2.4. Date/Time Start 4403 Property Name: DTSTART 4405 Purpose: This property specifies when the calendar component begins. 4407 Value Type: The default value type is DATE-TIME. The time value 4408 MUST be one of the forms defined for the DATE-TIME value type. 4409 The value type can be set to a DATE value type. 4411 Property Parameters: IANA, non-standard, value data type, and time 4412 zone identifier property parameters can be specified on this 4413 property. 4415 Conformance: This property can be specified once in the "VEVENT", 4416 "VTODO", or "VFREEBUSY" calendar components as well as in the 4417 "STANDARD" and "DAYLIGHT" sub-components. This property is 4418 REQUIRED in "VEVENT" calendar components and in all types of 4419 recurring calendar components. 4421 Description: Within the "VEVENT" calendar component, this property 4422 defines the start date and time for the event. 4424 Within the "VFREEBUSY" calendar component, this property defines 4425 the start date and time for the free or busy time information. 4426 The time MUST be specified in UTC time. 4428 Within the "STANDARD" and "DAYLIGHT" sub-components, this property 4429 defines the effective start date and time for a time zone 4430 specification. This property is REQUIRED within each "STANDARD" 4431 and "DAYLIGHT" sub-components included in "VTIMEZONE" calendar 4432 components and MUST be specified as a local DATE-TIME without the 4433 "TZID" property parameter. 4435 Format Definition: This property is defined by the following 4436 notation: 4438 dtstart = "DTSTART" dtstparam ":" dtstval CRLF 4440 dtstparam = *( 4442 ; the following are OPTIONAL, 4443 ; but MUST NOT occur more than once 4445 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 4446 (";" tzidparam) / 4448 ; the following is OPTIONAL, 4449 ; and MAY occur more than once 4451 (";" other-param) 4453 ) 4455 dtstval = date-time / date 4456 ;Value MUST match value type 4458 Example: The following is an example of this property: 4460 DTSTART:19980118T073000Z 4462 3.8.2.5. Duration 4464 Property Name: DURATION 4466 Purpose: This property specifies a positive duration of time. 4468 Value Type: DURATION 4470 Property Parameters: IANA and non-standard property parameters can 4471 be specified on this property. 4473 Conformance: This property can be specified in "VEVENT", "VTODO", 4474 "VFREEBUSY" or "VALARM" calendar components. 4476 Description: In a "VEVENT" calendar component the property may be 4477 used to specify a duration of the event, instead of an explicit 4478 end date/time. In a "VTODO" calendar component the property may 4479 be used to specify a duration for the to-do, instead of an 4480 explicit due date/time. In a "VFREEBUSY" calendar component the 4481 property may be used to specify the interval of free time being 4482 requested. In a "VALARM" calendar component the property may be 4483 used to specify the delay period prior to repeating an alarm. 4484 When the "DURATION" property relates to a "DTSTART" property that 4485 is specified as a DATE value, then the "DURATION" property MUST be 4486 specified as a "dur-day" or "dur-week" value. 4488 Format Definition: This property is defined by the following 4489 notation: 4491 duration = "DURATION" durparam ":" dur-value CRLF 4492 ;consisting of a positive duration of time. 4494 durparam = *(";" other-param) 4496 Example: The following is an example of this property that specifies 4497 an interval of time of 1 hour and zero minutes and zero seconds: 4499 DURATION:PT1H0M0S 4501 The following is an example of this property that specifies an 4502 interval of time of 15 minutes. 4504 DURATION:PT15M 4506 3.8.2.6. Free/Busy Time 4508 Property Name: FREEBUSY 4510 Purpose: This property defines one or more free or busy time 4511 intervals. 4513 Value Type: PERIOD 4515 Property Parameters: IANA, non-standard, and free/busy time type 4516 property parameters can be specified on this property. 4518 Conformance: The property can be specified in a "VFREEBUSY" calendar 4519 component. 4521 Description: These time periods can be specified as either a start 4522 and end date-time or a start date-time and duration. The date and 4523 time MUST be a UTC time format. 4525 "FREEBUSY" properties within the "VFREEBUSY" calendar component 4526 SHOULD be sorted in ascending order, based on start time and then 4527 end time, with the earliest periods first. 4529 The "FREEBUSY" property can specify more than one value, separated 4530 by the COMMA character (US-ASCII decimal 44). In such cases, the 4531 "FREEBUSY" property values MUST all be of the same "FBTYPE" 4532 property parameter type (e.g., all values of a particular "FBTYPE" 4533 listed together in a single property). 4535 Format Definition: This property is defined by the following 4536 notation: 4538 freebusy = "FREEBUSY" fbparam ":" fbvalue CRLF 4540 fbparam = *( 4541 ; the following is OPTIONAL, 4542 ; but MUST NOT occur more than once 4544 (";" fbtypeparam) / 4546 ; the following is OPTIONAL, 4547 ; and MAY occur more than once 4549 (";" other-param) 4551 ) 4553 fbvalue = period *("," period) 4554 ;Time value MUST be in the UTC time format. 4556 Example: The following are some examples of this property: 4558 FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:19970308T160000Z/PT8H30M 4560 FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H 4562 FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H 4563 ,19970308T230000Z/19970309T000000Z 4565 3.8.2.7. Time Transparency 4567 Property Name: TRANSP 4569 Purpose: This property defines whether an event is transparent or 4570 not to busy time searches. 4572 Value Type: TEXT 4574 Property Parameters: IANA and non-standard property parameters can 4575 be specified on this property. 4577 Conformance: This property can be specified once in a "VEVENT" 4578 calendar component. 4580 Description: Time Transparency is the characteristic of an event 4581 that determines whether it appears to consume time on a calendar. 4582 Events that consume actual time for the individual or resource 4583 associated with the calendar SHOULD be recorded as OPAQUE, 4584 allowing them to be detected by free-busy time searches. Other 4585 events, which do not take up the individual's (or resource's) time 4586 SHOULD be recorded as TRANSPARENT, making them invisible to free- 4587 busy time searches. 4589 Format Definition: This property is defined by the following 4590 notation: 4592 transp = "TRANSP" transparam ":" transvalue CRLF 4594 transparam = *(";" other-param) 4596 transvalue = "OPAQUE" 4597 ;Blocks or opaque on busy time searches. 4598 / "TRANSPARENT" 4599 ;Transparent on busy time searches. 4600 ;Default value is OPAQUE 4602 Example: The following is an example of this property for an event 4603 that is transparent or does not block on free/busy time searches: 4605 TRANSP:TRANSPARENT 4607 The following is an example of this property for an event that is 4608 opaque or blocks on free/busy time searches: 4610 TRANSP:OPAQUE 4612 3.8.3. Time Zone Component Properties 4614 The following properties specify time zone information in calendar 4615 components. 4617 3.8.3.1. Time Zone Identifier 4619 Property Name: TZID 4621 Purpose: This property specifies the text value that uniquely 4622 identifies the "VTIMEZONE" calendar component in the scope of an 4623 iCalendar object. 4625 Value Type: TEXT 4627 Property Parameters: IANA and non-standard property parameters can 4628 be specified on this property. 4630 Conformance: This property MUST be specified in a "VTIMEZONE" 4631 calendar component. 4633 Description: This is the label by which a time zone calendar 4634 component is referenced by any iCalendar properties whose value 4635 type is either DATE-TIME or TIME and not intended to specify a UTC 4636 or a "floating" time. The presence of the SOLIDUS character (US- 4637 ASCII decimal 47) as a prefix, indicates that this "TZID" 4638 represents an unique ID in a globally defined time zone registry 4639 (when such registry is defined). 4641 Note: This document does not define a naming convention for 4642 time zone identifiers. Implementers may want to use the naming 4643 conventions defined in existing time zone specifications such 4644 as the public-domain TZ database [TZDB]. The specification of 4645 globally unique time zone identifiers is not addressed by this 4646 document and is left for future study. 4648 Format Definition: This property is defined by the following 4649 notation: 4651 tzid = "TZID" tzidpropparam ":" [tzidprefix] text CRLF 4653 tzidpropparam = *(";" other-param) 4655 ;tzidprefix = "/" 4656 ; Defined previously. Just listed here for reader convenience. 4658 Example: The following are examples of non-globally unique time zone 4659 identifiers: 4661 TZID:America/New_York 4663 TZID:America/Los_Angeles 4665 The following is an example of a fictitious globally unique time 4666 zone identifier: 4668 TZID:/example.org/America/New_York 4670 3.8.3.2. Time Zone Name 4672 Property Name: TZNAME 4674 Purpose: This property specifies the customary designation for a 4675 time zone description. 4677 Value Type: TEXT 4679 Property Parameters: IANA, non-standard, and language property 4680 parameters can be specified on this property. 4682 Conformance: This property can be specified in "STANDARD" and 4683 "DAYLIGHT" sub-components. 4685 Description: This property may be specified in multiple languages; 4686 in order to provide for different language requirements. 4688 Format Definition: This property is defined by the following 4689 notation: 4691 tzname = "TZNAME" tznparam ":" text CRLF 4693 tznparam = *( 4695 ; the following is OPTIONAL, 4696 ; but MUST NOT occur more than once 4698 (";" languageparam) / 4700 ; the following is OPTIONAL, 4701 ; and MAY occur more than once 4703 (";" other-param) 4705 ) 4707 Example: The following are example of this property: 4709 TZNAME:EST 4711 The following is an example of this property when two different 4712 languages for the time zone name are specified: 4714 TZNAME;LANGUAGE=en:EST 4715 TZNAME;LANGUAGE=fr-CA:HNE 4717 3.8.3.3. Time Zone Offset From 4719 Property Name: TZOFFSETFROM 4721 Purpose: This property specifies the offset which is in use prior to 4722 this time zone observance. 4724 Value Type: UTC-OFFSET 4726 Property Parameters: IANA and non-standard property parameters can 4727 be specified on this property. 4729 Conformance: This property MUST be specified in "STANDARD" and 4730 "DAYLIGHT" sub-components. 4732 Description: This property specifies the offset which is in use 4733 prior to this time observance. It is used to calculate the 4734 absolute time at which the transition to a given observance takes 4735 place. This property MUST only be specified in a "VTIMEZONE" 4736 calendar component. A "VTIMEZONE" calendar component MUST include 4737 this property. The property value is a signed numeric indicating 4738 the number of hours and possibly minutes from UTC. Positive 4739 numbers represent time zones east of the prime meridian, or ahead 4740 of UTC. Negative numbers represent time zones west of the prime 4741 meridian, or behind UTC. 4743 Format Definition: This property is defined by the following 4744 notation: 4746 tzoffsetfrom = "TZOFFSETFROM" frmparam ":" utc-offset 4747 CRLF 4749 frmparam = *(";" other-param) 4751 Example: The following are examples of this property: 4753 TZOFFSETFROM:-0500 4755 TZOFFSETFROM:+1345 4757 3.8.3.4. Time Zone Offset To 4759 Property Name: TZOFFSETTO 4761 Purpose: This property specifies the offset which is in use in this 4762 time zone observance. 4764 Value Type: UTC-OFFSET 4766 Property Parameters: IANA and non-standard property parameters can 4767 be specified on this property. 4769 Conformance: This property MUST be specified in "STANDARD" and 4770 "DAYLIGHT" sub-components. 4772 Description: This property specifies the offset which is in use in 4773 this time zone observance. It is used to calculate the absolute 4774 time for the new observance. The property value is a signed 4775 numeric indicating the number of hours and possibly minutes from 4776 UTC. Positive numbers represent time zones east of the prime 4777 meridian, or ahead of UTC. Negative numbers represent time zones 4778 west of the prime meridian, or behind UTC. 4780 Format Definition: This property is defined by the following 4781 notation: 4783 tzoffsetto = "TZOFFSETTO" toparam ":" utc-offset CRLF 4785 toparam = *(";" other-param) 4787 Example: The following are examples of this property: 4789 TZOFFSETTO:-0400 4791 TZOFFSETTO:+1245 4793 3.8.3.5. Time Zone URL 4795 Property Name: TZURL 4797 Purpose: This property provides a means for a "VTIMEZONE" component 4798 to point to a network location that can be used to retrieve an up- 4799 to-date version of itself. 4801 Value Type: URI 4803 Property Parameters: IANA and non-standard property parameters can 4804 be specified on this property. 4806 Conformance: This property can be specified in a "VTIMEZONE" 4807 calendar component. 4809 Description: This property provides a means for a "VTIMEZONE" 4810 component to point to a network location that can be used to 4811 retrieve an up-to-date version of itself. This provides a hook to 4812 handle changes government bodies impose upon time zone 4813 definitions. Retrieval of this resource results in an iCalendar 4814 object containing a single "VTIMEZONE" component and a "METHOD" 4815 property set to PUBLISH. 4817 Format Definition: This property is defined by the following 4818 notation: 4820 tzurl = "TZURL" tzurlparam ":" uri CRLF 4822 tzurlparam = *(";" other-param) 4824 Example: The following is an example of this property: 4826 TZURL:http://timezones.example.org/tz/America-Los_Angeles.ics 4828 3.8.4. Relationship Component Properties 4830 The following properties specify relationship information in calendar 4831 components. 4833 3.8.4.1. Attendee 4835 Property Name: ATTENDEE 4837 Purpose: This property defines an "Attendee" within a calendar 4838 component. 4840 Value Type: CAL-ADDRESS 4842 Property Parameters: IANA, non-standard, language, calendar user 4843 type, group or list membership, participation role, participation 4844 status, RSVP expectation, delegatee, delegator, sent by, common 4845 name or directory entry reference property parameters can be 4846 specified on this property. 4848 Conformance: This property MUST be specified in an iCalendar object 4849 that specifies a group scheduled calendar entity. This property 4850 MUST NOT be specified in an iCalendar object when publishing the 4851 calendar information (e.g., NOT in an iCalendar object that 4852 specifies the publication of a calendar user's busy time, event, 4853 to-do or journal). This property is not specified in an iCalendar 4854 object that specifies only a time zone definition or that defines 4855 calendar components that are not group scheduled components, but 4856 are components only on a single user's calendar. 4858 Description: This property MUST only be specified within calendar 4859 components to specify participants, non-participants and the chair 4860 of a group scheduled calendar entity. The property is specified 4861 within an "EMAIL" category of the "VALARM" calendar component to 4862 specify an email address that is to receive the email type of 4863 iCalendar alarm. 4865 The property parameter "CN" is for the common or displayable name 4866 associated with the calendar address; "ROLE", for the intended 4867 role that the attendee will have in the calendar component; 4868 "PARTSTAT", for the status of the attendee's participation; 4869 "RSVP", for indicating whether the favor of a reply is requested; 4870 "CUTYPE", to indicate the type of calendar user; "MEMBER", to 4871 indicate the groups that the attendee belongs to; "DELEGATED-TO", 4872 to indicate the calendar users that the original request was 4873 delegated to; and "DELEGATED-FROM", to indicate whom the request 4874 was delegated from; "SENT-BY", to indicate whom is acting on 4875 behalf of the "ATTENDEE"; and "DIR", to indicate the URI that 4876 points to the directory information corresponding to the attendee. 4877 These property parameters can be specified on an "ATTENDEE" 4878 property in either a "VEVENT", "VTODO" or "VJOURNAL" calendar 4879 component. They MUST NOT be specified in an "ATTENDEE" property 4880 in a "VFREEBUSY" or "VALARM" calendar component. If the 4881 "LANGUAGE" property parameter is specified, the identified 4882 language applies to the "CN" parameter. 4884 A recipient delegated a request MUST inherit the "RSVP" and "ROLE" 4885 values from the attendee that delegated the request to them. 4887 Multiple attendees can be specified by including multiple 4888 "ATTENDEE" properties within the calendar component. 4890 Format Definition: This property is defined by the following 4891 notation: 4893 attendee = "ATTENDEE" attparam ":" cal-address CRLF 4895 attparam = *( 4897 ; the following are OPTIONAL, 4898 ; but MUST NOT occur more than once 4900 (";" cutypeparam) / (";" memberparam) / 4901 (";" roleparam) / (";" partstatparam) / 4902 (";" rsvpparam) / (";" deltoparam) / 4903 (";" delfromparam) / (";" sentbyparam) / 4904 (";" cnparam) / (";" dirparam) / 4905 (";" languageparam) / 4907 ; the following is OPTIONAL, 4908 ; and MAY occur more than once 4910 (";" other-param) 4912 ) 4914 Example: The following are examples of this property's use for a 4915 to-do: 4917 ATTENDEE;MEMBER="mailto:DEV-GROUP@example.com": 4918 mailto:joecool@example.com 4919 ATTENDEE;DELEGATED-FROM="mailto:immud@example.com": 4920 mailto:ildoit@example.com 4922 The following is an example of this property used for specifying 4923 multiple attendees to an event: 4925 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CN=Henry 4926 Cabot:mailto:hcabot@example.com 4927 ATTENDEE;ROLE=REQ-PARTICIPANT;DELEGATED-FROM="mailto:bob@ 4928 example.com";PARTSTAT=ACCEPTED;CN=Jane Doe:mailto:jdoe@ 4929 example.com 4931 The following is an example of this property with a URI to the 4932 directory information associated with the attendee: 4934 ATTENDEE;CN=John Smith;DIR="ldap://example.com:6666/o=ABC% 4935 20Industries,c=US???(cn=Jim%20Dolittle)":mailto:jimdo@ 4936 example.com 4938 The following is an example of this property with "delegatee" and 4939 "delegator" information for an event: 4941 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;DELEGATED-FROM= 4942 "mailto:iamboss@example.com";CN=Henry Cabot:mailto:hcabot@ 4943 example.com 4944 ATTENDEE;ROLE=NON-PARTICIPANT;PARTSTAT=DELEGATED;DELEGATED-TO= 4945 "mailto:hcabot@example.com";CN=The Big Cheese:mailto:iamboss 4946 @example.com 4947 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Jane Doe 4948 :mailto:jdoe@example.com 4950 Example: The following is an example of this property's use when 4951 another calendar user is acting on behalf of the "Attendee": 4953 ATTENDEE;SENT-BY=mailto:jan_doe@example.com;CN=John Smith: 4954 mailto:jsmith@example.com 4956 3.8.4.2. Contact 4958 Property Name: CONTACT 4960 Purpose: This property is used to represent contact information or 4961 alternately a reference to contact information associated with the 4962 calendar component. 4964 Value Type: TEXT 4966 Property Parameters: IANA, non-standard, alternate text 4967 representation and language property parameters can be specified 4968 on this property. 4970 Conformance: This property can be specified in a "VEVENT", "VTODO", 4971 "VJOURNAL" or "VFREEBUSY" calendar component. 4973 Description: The property value consists of textual contact 4974 information. An alternative representation for the property value 4975 can also be specified that refers to a URI pointing to an 4976 alternate form, such as a vCard [RFC2426], for the contact 4977 information. 4979 Format Definition: This property is defined by the following 4980 notation: 4982 contact = "CONTACT" contparam ":" text CRLF 4984 contparam = *( 4985 ; the following are OPTIONAL, 4986 ; but MUST NOT occur more than once 4988 (";" altrepparam) / (";" languageparam) / 4990 ; the following is OPTIONAL, 4991 ; and MAY occur more than once 4993 (";" other-param) 4995 ) 4997 Example: The following is an example of this property referencing 4998 textual contact information: 5000 CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234 5002 The following is an example of this property with an alternate 5003 representation of a LDAP URI to a directory entry containing the 5004 contact information: 5006 CONTACT;ALTREP="ldap://example.com:6666/o=ABC%20Industries\, 5007 c=US???(cn=Jim%20Dolittle)":Jim Dolittle\, ABC Industries\, 5008 +1-919-555-1234 5010 The following is an example of this property with an alternate 5011 representation of a MIME body part containing the contact 5012 information, such as a vCard [RFC2426] embedded in a text/ 5013 directory media type [RFC2425]: 5015 CONTACT;ALTREP="CID:part3.msg970930T083000SILVER@example.com": 5016 Jim Dolittle\, ABC Industries\, +1-919-555-1234 5018 The following is an example of this property referencing a network 5019 resource, such as a vCard [RFC2426] object containing the contact 5020 information: 5022 CONTACT;ALTREP="http://example.com/pdi/jdoe.vcf":Jim 5023 Dolittle\, ABC Industries\, +1-919-555-1234 5025 3.8.4.3. Organizer 5026 Property Name: ORGANIZER 5028 Purpose: This property defines the organizer for a calendar 5029 component. 5031 Value Type: CAL-ADDRESS 5033 Property Parameters: IANA, non-standard, language, common name, 5034 directory entry reference, sent by property parameters can be 5035 specified on this property. 5037 Conformance: This property MUST be specified in an iCalendar object 5038 that specifies a group scheduled calendar entity. This property 5039 MUST be specified in an iCalendar object that specifies the 5040 publication of a calendar user's busy time. This property MUST 5041 NOT be specified in an iCalendar object that specifies only a time 5042 zone definition or that defines calendar components that are not 5043 group scheduled components, but are components only on a single 5044 user's calendar. 5046 Description: This property is specified within the "VEVENT", 5047 "VTODO", "VJOURNAL" calendar components to specify the organizer 5048 of a group scheduled calendar entity. The property is specified 5049 within the "VFREEBUSY" calendar component to specify the calendar 5050 user requesting the free or busy time. When publishing a 5051 "VFREEBUSY" calendar component, the property is used to specify 5052 the calendar that the published busy time came from. 5054 The property has the property parameters "CN", for specifying the 5055 common or display name associated with the "Organizer", "DIR", for 5056 specifying a pointer to the directory information associated with 5057 the "Organizer", "SENT-BY", for specifying another calendar user 5058 that is acting on behalf of the "Organizer". The non-standard 5059 parameters may also be specified on this property. If the 5060 "LANGUAGE" property parameter is specified, the identified 5061 language applies to the "CN" parameter value. 5063 Format Definition: This property is defined by the following 5064 notation: 5066 organizer = "ORGANIZER" orgparam ":" 5067 cal-address CRLF 5069 orgparam = *( 5071 ; the following are OPTIONAL, 5072 ; but MUST NOT occur more than once 5074 (";" cnparam) / (";" dirparam) / (";" sentbyparam) / 5075 (";" languageparam) / 5077 ; the following is OPTIONAL, 5078 ; and MAY occur more than once 5080 (";" other-param) 5082 ) 5084 Example: The following is an example of this property: 5086 ORGANIZER;CN=John Smith:mailto:jsmith@example.com 5088 The following is an example of this property with a pointer to the 5089 directory information associated with the organizer: 5091 ORGANIZER;CN=JohnSmith;DIR="ldap://example.com:6666/o=DC%20Ass 5092 ociates,c=US???(cn=John%20Smith)":mailto:jsmith@example.com 5094 The following is an example of this property used by another 5095 calendar user who is acting on behalf of the organizer, with 5096 responses intended to be sent back to the organizer, not the other 5097 calendar user: 5099 ORGANIZER;SENT-BY="mailto:jane_doe@example.com": 5100 mailto:jsmith@example.com 5102 3.8.4.4. Recurrence ID 5104 Property Name: RECURRENCE-ID 5106 Purpose: This property is used in conjunction with the "UID" and 5107 "SEQUENCE" property to identify a specific instance of a recurring 5108 "VEVENT", "VTODO" or "VJOURNAL" calendar component. The property 5109 value is the original value of the "DTSTART" property of the 5110 recurrence instance. 5112 Value Type: The default value type for this property is DATE-TIME. 5113 The time format can be any of the valid forms defined for a DATE- 5114 TIME value type. See DATE-TIME value type definition for specific 5115 interpretations of the various forms. The value type can be set 5116 to DATE. 5118 Property Parameters: IANA, non-standard, value data type, and time 5119 zone identifier parameters can be specified on this property. 5121 Conformance: This property can be specified in an iCalendar object 5122 containing a recurring calendar component. 5124 Description: The full range of calendar components specified by a 5125 recurrence set is referenced by referring to just the "UID" 5126 property value corresponding to the calendar component. The 5127 "RECURRENCE-ID" property allows the reference to an individual 5128 instance within the recurrence set. 5130 If the value of the "DTSTART" property is a DATE type value, then 5131 the value MUST be the calendar date for the recurrence instance. 5133 The date/time value is set to the time when the original 5134 recurrence instance would occur; meaning that if the intent is to 5135 change a Friday meeting to Thursday, the date/time is still set to 5136 the original Friday meeting. 5138 The "RECURRENCE-ID" property is used in conjunction with the "UID" 5139 and "SEQUENCE" property to identify a particular instance of a 5140 recurring event, to-do or journal. For a given pair of "UID" and 5141 "SEQUENCE" property values, the "RECURRENCE-ID" value for a 5142 recurrence instance is fixed. 5144 Format Definition: This property is defined by the following 5145 notation: 5147 recurid = "RECURRENCE-ID" ridparam ":" ridval CRLF 5149 ridparam = *( 5151 ; the following are OPTIONAL, 5152 ; but MUST NOT occur more than once 5154 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 5155 (";" tzidparam) / 5157 ; the following is OPTIONAL, 5158 ; and MAY occur more than once 5160 (";" other-param) 5162 ) 5164 ridval = date-time / date 5165 ;Value MUST match value type 5167 Example: The following are examples of this property: 5169 RECURRENCE-ID;VALUE=DATE:19960401 5171 RECURRENCE-ID:19960120T120000Z 5173 3.8.4.5. Related To 5175 Property Name: RELATED-TO 5177 Purpose: This property is used to represent a relationship or 5178 reference between one calendar component and another. 5180 Value Type: TEXT 5182 Property Parameters: IANA, non-standard, and relationship type 5183 property parameters can be specified on this property. 5185 Conformance: This property can be specified in the "VEVENT", "VTODO" 5186 and "VJOURNAL" calendar components. 5188 Description: The property value consists of the persistent, globally 5189 unique identifier of another calendar component. This value would 5190 be represented in a calendar component by the "UID" property. 5192 By default, the property value points to another calendar 5193 component that has a PARENT relationship to the referencing 5194 object. The "RELTYPE" property parameter is used to either 5195 explicitly state the default PARENT relationship type to the 5196 referenced calendar component or to override the default PARENT 5197 relationship type and specify either a CHILD or SIBLING 5198 relationship. The PARENT relationship indicates that the calendar 5199 component is a subordinate of the referenced calendar component. 5200 The CHILD relationship indicates that the calendar component is a 5201 superior of the referenced calendar component. The SIBLING 5202 relationship indicates that the calendar component is a peer of 5203 the referenced calendar component. 5205 Changes to a calendar component referenced by this property can 5206 have an implicit impact on the related calendar component. For 5207 example, if a group event changes its start or end date or time, 5208 then the related, dependent events will need to have their start 5209 and end dates changed in a corresponding way. Similarly, if a 5210 PARENT calendar component is cancelled or deleted, then there is 5211 an implied impact to the related CHILD calendar components. This 5212 property is intended only to provide information on the 5213 relationship of calendar components. It is up to the target 5214 calendar system to maintain any property implications of this 5215 relationship. 5217 Format Definition: This property is defined by the following 5218 notation: 5220 related = "RELATED-TO" relparam ":" text CRLF 5222 relparam = *( 5224 ; the following is OPTIONAL, 5225 ; but MUST NOT occur more than once 5227 (";" reltypeparam) / 5229 ; the following is OPTIONAL, 5230 ; and MAY occur more than once 5232 (";" other-param) 5234 ) 5236 The following is an example of this property: 5238 RELATED-TO:jsmith.part7.19960817T083000.xyzMail@example.com 5240 RELATED-TO:19960401-080045-4000F192713-0052@example.com 5242 3.8.4.6. Uniform Resource Locator 5244 Property Name: URL 5246 Purpose: This property defines a Uniform Resource Locator (URL) 5247 associated with the iCalendar object. 5249 Value Type: URI 5251 Property Parameters: IANA and non-standard property parameters can 5252 be specified on this property. 5254 Conformance: This property can be specified once in the "VEVENT", 5255 "VTODO", "VJOURNAL" or "VFREEBUSY" calendar components. 5257 Description: This property may be used in a calendar component to 5258 convey a location where a more dynamic rendition of the calendar 5259 information associated with the calendar component can be found. 5260 This memo does not attempt to standardize the form of the URI, nor 5261 the format of the resource pointed to by the property value. If 5262 the URL property and Content-Location MIME header are both 5263 specified, they MUST point to the same resource. 5265 Format Definition: This property is defined by the following 5266 notation: 5268 url = "URL" urlparam ":" uri CRLF 5270 urlparam = *(";" other-param) 5272 Example: The following is an example of this property: 5274 URL:http://example.com/pub/calendars/jsmith/mytime.ics 5276 3.8.4.7. Unique Identifier 5278 Property Name: UID 5280 Purpose: This property defines the persistent, globally unique 5281 identifier for the calendar component. 5283 Value Type: TEXT 5285 Property Parameters: IANA and non-standard property parameters can 5286 be specified on this property. 5288 Conformance: The property MUST be specified in the "VEVENT", 5289 "VTODO", "VJOURNAL" or "VFREEBUSY" calendar components. 5291 Description: The "UID" itself MUST be a globally unique identifier. 5292 The generator of the identifier MUST guarantee that the identifier 5293 is unique. There are several algorithms that can be used to 5294 accomplish this. The identifier is RECOMMENDED to be the 5295 identical syntax to the [RFC2822] addr-spec. A good method to 5296 assure uniqueness is to put the domain name or a domain literal IP 5297 address of the host on which the identifier was created on the 5298 right hand side of the "@", and on the left hand side, put a 5299 combination of the current calendar date and time of day (i.e., 5300 formatted in as a DATE-TIME value) along with some other currently 5301 unique (perhaps sequential) identifier available on the system 5302 (for example, a process id number). Using a date/time value on 5303 the left hand side and a domain name or domain literal on the 5304 right hand side makes it possible to guarantee uniqueness since no 5305 two hosts should be using the same domain name or IP address at 5306 the same time. Though other algorithms will work, it is 5307 RECOMMENDED that the right hand side contain some domain 5308 identifier (either of the host itself or otherwise) such that the 5309 generator of the message identifier can guarantee the uniqueness 5310 of the left hand side within the scope of that domain. 5312 This is the method for correlating scheduling messages with the 5313 referenced "VEVENT", "VTODO", or "VJOURNAL" calendar component. 5315 The full range of calendar components specified by a recurrence 5316 set is referenced by referring to just the "UID" property value 5317 corresponding to the calendar component. The "RECURRENCE-ID" 5318 property allows the reference to an individual instance within the 5319 recurrence set. 5321 This property is an important method for group scheduling 5322 applications to match requests with later replies, modifications 5323 or deletion requests. Calendaring and scheduling applications 5324 MUST generate this property in "VEVENT", "VTODO" and "VJOURNAL" 5325 calendar components to assure interoperability with other group 5326 scheduling applications. This identifier is created by the 5327 calendar system that generates an iCalendar object. 5329 Implementations MUST be able to receive and persist values of at 5330 least 255 octets for this property but MUST NOT truncate values in 5331 the middle of a UTF-8 multi-octet sequence. 5333 Format Definition: This property is defined by the following 5334 notation: 5336 uid = "UID" uidparam ":" text CRLF 5338 uidparam = *(";" other-param) 5340 Example: The following is an example of this property: 5342 UID:19960401T080045Z-4000F192713-0052@example.com 5344 3.8.5. Recurrence Component Properties 5346 The following properties specify recurrence information in calendar 5347 components. 5349 3.8.5.1. Exception Date/Times 5351 Property Name: EXDATE 5353 Purpose: This property defines the list of date/time exceptions for 5354 recurring events, to-dos, journal entries or time zone 5355 definitions. 5357 Value Type: The default value type for this property is DATE-TIME. 5358 The value type can be set to DATE. 5360 Property Parameters: IANA, non-standard, value data type and time 5361 zone identifier property parameters can be specified on this 5362 property. 5364 Conformance: This property can be specified in recurring "VEVENT", 5365 "VTODO", and "VJOURNAL" calendar components as well as in the 5366 "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE" 5367 calendar component. 5369 Description: The exception dates, if specified, are used in 5370 computing the recurrence set. The recurrence set is the complete 5371 set of recurrence instances for a calendar component. The 5372 recurrence set is generated by considering the initial "DTSTART" 5373 property along with the "RRULE", "RDATE", and "EXDATE" properties 5374 contained within the recurring component. The "DTSTART" property 5375 defines the first instance in the recurrence set. The "DTSTART" 5376 property value SHOULD match the pattern of the recurrence rule, if 5377 specified. The recurrence set generated with a "DTSTART" property 5378 value that doesn't match the pattern of the rule is undefined. 5379 The final recurrence set is generated by gathering all of the 5380 start date-times generated by any of the specified "RRULE" and 5381 "RDATE" properties, and then excluding any start date and times 5382 specified by "EXDATE" properties. This implies that start date 5383 and times specified by "EXDATE" properties take precedence over 5384 those specified by inclusion properties (i.e., "RDATE" and 5385 "RRULE"). When duplicate instances are generated by the "RRULE" 5386 and "RDATE" properties, only one recurrence is considered. 5387 Duplicate instances are ignored. 5389 The "EXDATE" property can be used to exclude the value specified 5390 in "DTSTART". However, in such cases the original "DTSTART" date 5391 MUST still be maintained by the calendaring and scheduling system 5392 because the original "DTSTART" value has inherent usage 5393 dependencies by other properties such as the "RECURRENCE-ID". 5395 Format Definition: This property is defined by the following 5396 notation: 5398 exdate = "EXDATE" exdtparam ":" exdtval *("," exdtval) CRLF 5400 exdtparam = *( 5402 ; the following are OPTIONAL, 5403 ; but MUST NOT occur more than once 5405 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 5407 (";" tzidparam) / 5409 ; the following is OPTIONAL, 5410 ; and MAY occur more than once 5412 (";" other-param) 5414 ) 5416 exdtval = date-time / date 5417 ;Value MUST match value type 5419 Example: The following is an example of this property: 5421 EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z 5423 3.8.5.2. Recurrence Date/Times 5425 Property Name: RDATE 5427 Purpose: This property defines the list of date/times for recurring 5428 events, to-dos, journal entries or time zone definitions. 5430 Value Type: The default value type for this property is DATE-TIME. 5431 The value type can be set to DATE or PERIOD. 5433 Property Parameters: IANA, non-standard, value data type and time 5434 zone identifier property parameters can be specified on this 5435 property. 5437 Conformance: This property can be specified in recurring "VEVENT", 5438 "VTODO", and "VJOURNAL" calendar components as well as in the 5439 "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE" 5440 calendar component. 5442 Description: This property can appear along with the "RRULE" 5443 property to define an aggregate set of repeating occurrences. 5444 When they both appear in a recurring component, the recurrence 5445 instances are defined by the union of occurrences defined by both 5446 the "RDATE" and "RRULE". 5448 The recurrence dates, if specified, are used in computing the 5449 recurrence set. The recurrence set is the complete set of 5450 recurrence instances for a calendar component. The recurrence set 5451 is generated by considering the initial "DTSTART" property along 5452 with the "RRULE", "RDATE", and "EXDATE" properties contained 5453 within the recurring component. The "DTSTART" property defines 5454 the first instance in the recurrence set. The "DTSTART" property 5455 value SHOULD match the pattern of the recurrence rule, if 5456 specified. The recurrence set generated with a "DTSTART" property 5457 value that doesn't match the pattern of the rule is undefined. 5458 The final recurrence set is generated by gathering all of the 5459 start date-times generated by any of the specified "RRULE" and 5460 "RDATE" properties, and then excluding any start date and times 5461 specified by "EXDATE" properties. This implies that start date/ 5462 times specified by "EXDATE" properties take precedence over those 5463 specified by inclusion properties (i.e., "RDATE" and "RRULE"). 5464 Where duplicate instances are generated by the "RRULE" and "RDATE" 5465 properties, only one recurrence is considered. Duplicate 5466 instances are ignored. 5468 Format Definition: This property is defined by the following 5469 notation: 5471 rdate = "RDATE" rdtparam ":" rdtval *("," rdtval) CRLF 5473 rdtparam = *( 5475 ; the following are OPTIONAL, 5476 ; but MUST NOT occur more than once 5478 (";" "VALUE" "=" ("DATE-TIME" / "DATE" / "PERIOD")) / 5479 (";" tzidparam) / 5481 ; the following is OPTIONAL, 5482 ; and MAY occur more than once 5484 (";" other-param) 5486 ) 5488 rdtval = date-time / date / period 5489 ;Value MUST match value type 5491 Example: The following are examples of this property: 5493 RDATE:19970714T123000Z 5494 RDATE;TZID=America/New_York:19970714T083000 5496 RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z, 5497 19960404T010000Z/PT3H 5499 RDATE;VALUE=DATE:19970101,19970120,19970217,19970421 5500 19970526,19970704,19970901,19971014,19971128,19971129,19971225 5502 3.8.5.3. Recurrence Rule 5504 Property Name: RRULE 5506 Purpose: This property defines a rule or repeating pattern for 5507 recurring events, to-dos, journal entries or time zone 5508 definitions. 5510 Value Type: RECUR 5512 Property Parameters: IANA and non-standard property parameters can 5513 be specified on this property. 5515 Conformance: This property can be specified in recurring "VEVENT", 5516 "VTODO" and "VJOURNAL" calendar components as well as in the 5517 "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE" 5518 calendar component, but it SHOULD NOT be specified more than once. 5519 The recurrence set generated with multiple "RRULE" properties is 5520 undefined. 5522 Description: The recurrence rule, if specified, is used in computing 5523 the recurrence set. The recurrence set is the complete set of 5524 recurrence instances for a calendar component. The recurrence set 5525 is generated by considering the initial "DTSTART" property along 5526 with the "RRULE", "RDATE", and "EXDATE" properties contained 5527 within the recurring component. The "DTSTART" property defines 5528 the first instance in the recurrence set. The "DTSTART" property 5529 value SHOULD be synchronized with the recurrence rule, if 5530 specified. The recurrence set generated with a "DTSTART" property 5531 value not synchronized with the recurrence rule is undefined. The 5532 final recurrence set is generated by gathering all of the start 5533 date/times generated by any of the specified "RRULE" and "RDATE" 5534 properties, and then excluding any start date/times specified by 5535 "EXDATE" properties. This implies that start date/times specified 5536 by "EXDATE" properties take precedence over those specified by 5537 inclusion properties (i.e., "RDATE" and "RRULE"). Where duplicate 5538 instances are generated by the "RRULE" and "RDATE" properties, 5539 only one recurrence is considered. Duplicate instances are 5540 ignored. 5542 The "DTSTART" property specified within the iCalendar object 5543 defines the first instance of the recurrence. In most cases, a 5544 "DTSTART" property of DATE-TIME value type used with a recurrence 5545 rule, should be specified as a date with local time and time zone 5546 reference to make sure all the recurrence instances start at the 5547 same local time regardless of time zone changes. 5549 If the duration of the recurring component is specified with the 5550 "DTEND" or "DUE" property, then the same exact duration will apply 5551 to all the members of the generated recurrence set. Else, if the 5552 duration of the recurring component is specified with the 5553 "DURATION" property, then the same nominal duration will apply to 5554 all the members of the generated recurrence set and the exact 5555 duration of each recurrence instance will depend on its specific 5556 start time. For example, recurrence instances of a nominal 5557 duration of one day will have an exact duration of more or less 5558 than 24 hours on a day where a time zone shift occurs. The 5559 duration of a specific recurrence may be modified in an exception 5560 component or simply by using an "RDATE" property of PERIOD value 5561 type. 5563 Format Definition: This property is defined by the following 5564 notation: 5566 rrule = "RRULE" rrulparam ":" recur CRLF 5568 rrulparam = *(";" other-param) 5570 Example: All examples assume the Eastern United States time zone. 5572 Daily for 10 occurrences: 5574 DTSTART;TZID=America/New_York:19970902T090000 5575 RRULE:FREQ=DAILY;COUNT=10 5577 ==> (1997 9:00 AM EDT) September 2-11 5579 Daily until December 24, 1997: 5581 DTSTART;TZID=America/New_York:19970902T090000 5582 RRULE:FREQ=DAILY;UNTIL=19971224T000000Z 5584 ==> (1997 9:00 AM EDT) September 2-30;October 1-25 5585 (1997 9:00 AM EST) October 26-31;November 1-30;December 1-23 5587 Every other day - forever: 5589 DTSTART;TZID=America/New_York:19970902T090000 5590 RRULE:FREQ=DAILY;INTERVAL=2 5592 ==> (1997 9:00 AM EDT) September 2,4,6,8...24,26,28,30; 5593 October 2,4,6...20,22,24 5594 (1997 9:00 AM EST) October 26,28,30; 5595 November 1,3,5,7...25,27,29; 5596 December 1,3,... 5598 Every 10 days, 5 occurrences: 5600 DTSTART;TZID=America/New_York:19970902T090000 5601 RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5 5603 ==> (1997 9:00 AM EDT) September 2,12,22; 5604 October 2,12 5606 Everyday in January, for 3 years: 5608 DTSTART;TZID=America/New_York:19980101T090000 5610 RRULE:FREQ=YEARLY;UNTIL=20000131T140000Z; 5611 BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA 5612 or 5613 RRULE:FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1 5615 ==> (1998 9:00 AM EST)January 1-31 5616 (1999 9:00 AM EST)January 1-31 5617 (2000 9:00 AM EST)January 1-31 5619 Weekly for 10 occurrences 5621 DTSTART;TZID=America/New_York:19970902T090000 5622 RRULE:FREQ=WEEKLY;COUNT=10 5624 ==> (1997 9:00 AM EDT) September 2,9,16,23,30;October 7,14,21 5625 (1997 9:00 AM EST) October 28;November 4 5627 Weekly until December 24, 1997 5629 DTSTART;TZID=America/New_York:19970902T090000 5630 RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z 5632 ==> (1997 9:00 AM EDT) September 2,9,16,23,30; 5633 October 7,14,21 5634 (1997 9:00 AM EST) October 28; 5635 November 4,11,18,25; 5636 December 2,9,16,23 5638 Every other week - forever: 5640 DTSTART;TZID=America/New_York:19970902T090000 5641 RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU 5643 ==> (1997 9:00 AM EDT) September 2,16,30; 5644 October 14 5645 (1997 9:00 AM EST) October 28; 5646 November 11,25; 5647 December 9,23 5648 (1998 9:00 AM EST) January 6,20; 5649 February 3, 17 5650 ... 5652 Weekly on Tuesday and Thursday for 5 weeks: 5654 DTSTART;TZID=America/New_York:19970902T090000 5655 RRULE:FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH 5657 or 5659 RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH 5661 ==> (1997 9:00 AM EDT) September 2,4,9,11,16,18,23,25,30; 5662 October 2 5664 Every other week on Monday, Wednesday and Friday until December 5665 24, 1997, starting on Monday, September 1, 1997: 5667 DTSTART;TZID=America/New_York:19970901T090000 5668 RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU; 5669 BYDAY=MO,WE,FR 5671 ==> (1997 9:00 AM EDT) September 1,3,5,15,17,19,29; 5672 October 1,3,13,15,17 5673 (1997 9:00 AM EST) October 27,29,31; 5674 November 10,12,14,24,26,28; 5675 December 8,10,12,22 5677 Every other week on Tuesday and Thursday, for 8 occurrences: 5679 DTSTART;TZID=America/New_York:19970902T090000 5680 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH 5682 ==> (1997 9:00 AM EDT) September 2,4,16,18,30; 5683 October 2,14,16 5685 Monthly on the 1st Friday for ten occurrences: 5687 DTSTART;TZID=America/New_York:19970905T090000 5688 RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR 5690 ==> (1997 9:00 AM EDT) September 5;October 3 5691 (1997 9:00 AM EST) November 7;December 5 5692 (1998 9:00 AM EST) January 2;February 6;March 6;April 3 5693 (1998 9:00 AM EDT) May 1;June 5 5695 Monthly on the 1st Friday until December 24, 1997: 5697 DTSTART;TZID=America/New_York:19970905T090000 5698 RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR 5700 ==> (1997 9:00 AM EDT) September 5; October 3 5701 (1997 9:00 AM EST) November 7; December 5 5703 Every other month on the 1st and last Sunday of the month for 10 5704 occurrences: 5706 DTSTART;TZID=America/New_York:19970907T090000 5707 RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU 5709 ==> (1997 9:00 AM EDT) September 7,28 5710 (1997 9:00 AM EST) November 2,30 5711 (1998 9:00 AM EST) January 4,25;March 1,29 5712 (1998 9:00 AM EDT) May 3,31 5714 Monthly on the second to last Monday of the month for 6 months: 5716 DTSTART;TZID=America/New_York:19970922T090000 5717 RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO 5719 ==> (1997 9:00 AM EDT) September 22;October 20 5720 (1997 9:00 AM EST) November 17;December 22 5721 (1998 9:00 AM EST) January 19;February 16 5723 Monthly on the third to the last day of the month, forever: 5725 DTSTART;TZID=America/New_York:19970928T090000 5726 RRULE:FREQ=MONTHLY;BYMONTHDAY=-3 5728 ==> (1997 9:00 AM EDT) September 28 5729 (1997 9:00 AM EST) October 29;November 28;December 29 5730 (1998 9:00 AM EST) January 29;February 26 5731 ... 5733 Monthly on the 2nd and 15th of the month for 10 occurrences: 5735 DTSTART;TZID=America/New_York:19970902T090000 5736 RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15 5738 ==> (1997 9:00 AM EDT) September 2,15;October 2,15 5739 (1997 9:00 AM EST) November 2,15;December 2,15 5740 (1998 9:00 AM EST) January 2,15 5742 Monthly on the first and last day of the month for 10 occurrences: 5744 DTSTART;TZID=America/New_York:19970930T090000 5745 RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1 5747 ==> (1997 9:00 AM EDT) September 30;October 1 5748 (1997 9:00 AM EST) October 31;November 1,30;December 1,31 5749 (1998 9:00 AM EST) January 1,31;February 1 5751 Every 18 months on the 10th thru 15th of the month for 10 5752 occurrences: 5754 DTSTART;TZID=America/New_York:19970910T090000 5755 RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12, 5756 13,14,15 5758 ==> (1997 9:00 AM EDT) September 10,11,12,13,14,15 5759 (1999 9:00 AM EST) March 10,11,12,13 5761 Every Tuesday, every other month: 5763 DTSTART;TZID=America/New_York:19970902T090000 5764 RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU 5766 ==> (1997 9:00 AM EDT) September 2,9,16,23,30 5767 (1997 9:00 AM EST) November 4,11,18,25 5768 (1998 9:00 AM EST) January 6,13,20,27;March 3,10,17,24,31 5769 ... 5771 Yearly in June and July for 10 occurrences: 5773 DTSTART;TZID=America/New_York:19970610T090000 5774 RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7 5776 ==> (1997 9:00 AM EDT) June 10;July 10 5777 (1998 9:00 AM EDT) June 10;July 10 5778 (1999 9:00 AM EDT) June 10;July 10 5779 (2000 9:00 AM EDT) June 10;July 10 5780 (2001 9:00 AM EDT) June 10;July 10 5782 Note: Since none of the BYDAY, BYMONTHDAY or BYYEARDAY 5783 components are specified, the day is gotten from "DTSTART" 5785 Every other year on January, February, and March for 10 5786 occurrences: 5788 DTSTART;TZID=America/New_York:19970310T090000 5789 RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3 5791 ==> (1997 9:00 AM EST) March 10 5792 (1999 9:00 AM EST) January 10;February 10;March 10 5793 (2001 9:00 AM EST) January 10;February 10;March 10 5794 (2003 9:00 AM EST) January 10;February 10;March 10 5796 Every 3rd year on the 1st, 100th and 200th day for 10 occurrences: 5798 DTSTART;TZID=America/New_York:19970101T090000 5799 RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200 5801 ==> (1997 9:00 AM EST) January 1 5802 (1997 9:00 AM EDT) April 10;July 19 5803 (2000 9:00 AM EST) January 1 5804 (2000 9:00 AM EDT) April 9;July 18 5805 (2003 9:00 AM EST) January 1 5806 (2003 9:00 AM EDT) April 10;July 19 5807 (2006 9:00 AM EST) January 1 5809 Every 20th Monday of the year, forever: 5811 DTSTART;TZID=America/New_York:19970519T090000 5812 RRULE:FREQ=YEARLY;BYDAY=20MO 5814 ==> (1997 9:00 AM EDT) May 19 5815 (1998 9:00 AM EDT) May 18 5816 (1999 9:00 AM EDT) May 17 5817 ... 5819 Monday of week number 20 (where the default start of the week is 5820 Monday), forever: 5822 DTSTART;TZID=America/New_York:19970512T090000 5823 RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO 5825 ==> (1997 9:00 AM EDT) May 12 5826 (1998 9:00 AM EDT) May 11 5827 (1999 9:00 AM EDT) May 17 5828 ... 5830 Every Thursday in March, forever: 5832 DTSTART;TZID=America/New_York:19970313T090000 5833 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH 5835 ==> (1997 9:00 AM EST) March 13,20,27 5836 (1998 9:00 AM EST) March 5,12,19,26 5837 (1999 9:00 AM EST) March 4,11,18,25 5838 ... 5840 Every Thursday, but only during June, July, and August, forever: 5842 DTSTART;TZID=America/New_York:19970605T090000 5843 RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8 5845 ==> (1997 9:00 AM EDT) June 5,12,19,26;July 3,10,17,24,31; 5846 August 7,14,21,28 5847 (1998 9:00 AM EDT) June 4,11,18,25;July 2,9,16,23,30; 5848 August 6,13,20,27 5849 (1999 9:00 AM EDT) June 3,10,17,24;July 1,8,15,22,29; 5850 August 5,12,19,26 5851 ... 5853 Every Friday the 13th, forever: 5855 DTSTART;TZID=America/New_York:19970902T090000 5856 EXDATE;TZID=America/New_York:19970902T090000 5857 RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13 5859 ==> (1998 9:00 AM EST) February 13;March 13;November 13 5860 (1999 9:00 AM EDT) August 13 5861 (2000 9:00 AM EDT) October 13 5862 ... 5864 The first Saturday that follows the first Sunday of the month, 5865 forever: 5867 DTSTART;TZID=America/New_York:19970913T090000 5868 RRULE:FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13 5870 ==> (1997 9:00 AM EDT) September 13;October 11 5871 (1997 9:00 AM EST) November 8;December 13 5872 (1998 9:00 AM EST) January 10;February 7;March 7 5873 (1998 9:00 AM EDT) April 11;May 9;June 13... 5874 ... 5876 Every four years, the first Tuesday after a Monday in November, 5877 forever (U.S. Presidential Election day): 5879 DTSTART;TZID=America/New_York:19961105T090000 5880 RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU; 5881 BYMONTHDAY=2,3,4,5,6,7,8 5883 ==> (1996 9:00 AM EST) November 5 5884 (2000 9:00 AM EST) November 7 5885 (2004 9:00 AM EST) November 2 5886 ... 5888 The 3rd instance into the month of one of Tuesday, Wednesday or 5889 Thursday, for the next 3 months: 5891 DTSTART;TZID=America/New_York:19970904T090000 5892 RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3 5894 ==> (1997 9:00 AM EDT) September 4;October 7 5895 (1997 9:00 AM EST) November 6 5897 The 2nd to last weekday of the month: 5899 DTSTART;TZID=America/New_York:19970929T090000 5900 RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2 5902 ==> (1997 9:00 AM EDT) September 29 5903 (1997 9:00 AM EST) October 30;November 27;December 30 5904 (1998 9:00 AM EST) January 29;February 26;March 30 5905 ... 5907 Every 3 hours from 9:00 AM to 5:00 PM on a specific day: 5909 DTSTART;TZID=America/New_York:19970902T090000 5910 RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z 5912 ==> (September 2, 1997 EDT) 09:00,12:00,15:00 5914 Every 15 minutes for 6 occurrences: 5916 DTSTART;TZID=America/New_York:19970902T090000 5917 RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6 5919 ==> (September 2, 1997 EDT) 09:00,09:15,09:30,09:45,10:00,10:15 5921 Every hour and a half for 4 occurrences: 5923 DTSTART;TZID=America/New_York:19970902T090000 5924 RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4 5926 ==> (September 2, 1997 EDT) 09:00,10:30;12:00;13:30 5928 Every 20 minutes from 9:00 AM to 4:40 PM every day: 5930 DTSTART;TZID=America/New_York:19970902T090000 5931 RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40 5932 or 5933 RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16 5935 ==> (September 2, 1997 EDT) 9:00,9:20,9:40,10:00,10:20, 5936 ... 16:00,16:20,16:40 5937 (September 3, 1997 EDT) 9:00,9:20,9:40,10:00,10:20, 5938 ...16:00,16:20,16:40 5939 ... 5941 An example where the days generated makes a difference because of 5942 WKST: 5944 DTSTART;TZID=America/New_York:19970805T090000 5945 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO 5947 ==> (1997 EDT) August 5,10,19,24 5949 changing only WKST from MO to SU, yields different results... 5951 DTSTART;TZID=America/New_York:19970805T090000 5952 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU 5954 ==> (1997 EDT) August 5,17,19,31 5956 An example where an invalid date (i.e., February 30) is ignored. 5958 DTSTART;TZID=America/New_York:20070115T090000 5959 RRULE:FREQ=MONTHLY;BYMONTHDAY=15,30;COUNT=5 5961 ==> (2007 EST) January 15,30 5962 (2007 EST) February 15 5963 (2007 EDT) March 15,30 5965 3.8.6. Alarm Component Properties 5967 The following properties specify alarm information in calendar 5968 components. 5970 3.8.6.1. Action 5972 Property Name: ACTION 5974 Purpose: This property defines the action to be invoked when an 5975 alarm is triggered. 5977 Value Type: TEXT 5979 Property Parameters: IANA and non-standard property parameters can 5980 be specified on this property. 5982 Conformance: This property MUST be specified once in a "VALARM" 5983 calendar component. 5985 Description: Each "VALARM" calendar component has a particular type 5986 of action associated with it. This property specifies the type of 5987 action. Applications MUST ignore alarms with x-name and iana- 5988 token value they don't recognized. 5990 Format Definition: This property is defined by the following 5991 notation: 5993 action = "ACTION" actionparam ":" actionvalue CRLF 5995 actionparam = *(";" other-param) 5997 actionvalue = "AUDIO" / "DISPLAY" / "EMAIL" 5998 / iana-token / x-name 6000 Example: The following are examples of this property in a "VALARM" 6001 calendar component: 6003 ACTION:AUDIO 6005 ACTION:DISPLAY 6007 3.8.6.2. Repeat Count 6008 Property Name: REPEAT 6010 Purpose: This property defines the number of time the alarm should 6011 be repeated, after the initial trigger. 6013 Value Type: INTEGER 6015 Property Parameters: IANA and non-standard property parameters can 6016 be specified on this property. 6018 Conformance: This property can be specified in a "VALARM" calendar 6019 component. 6021 Description: This property defines the number of time an alarm 6022 should be repeated after its initial trigger. If the alarm 6023 triggers more than once, then this property MUST be specified 6024 along with the "DURATION" property. 6026 Format Definition: This property is defined by the following 6027 notation: 6029 repeat = "REPEAT" repparam ":" integer CRLF 6030 ;Default is "0", zero. 6032 repparam = *(";" other-param) 6034 Example: The following is an example of this property for an alarm 6035 that repeats 4 additional times with a 5 minute delay after the 6036 initial triggering of the alarm: 6038 REPEAT:4 6039 DURATION:PT5M 6041 3.8.6.3. Trigger 6043 Property Name: TRIGGER 6045 Purpose: This property specifies when an alarm will trigger. 6047 Value Type: The default value type is DURATION. The value type can 6048 be set to a DATE-TIME value type, in which case the value MUST 6049 specify a UTC formatted DATE-TIME value. 6051 Property Parameters: IANA, non-standard, value data type, time zone 6052 identifier or trigger relationship property parameters can be 6053 specified on this property. The trigger relationship property 6054 parameter MUST only be specified when the value type is 6055 "DURATION". 6057 Conformance: This property MUST be specified in the "VALARM" 6058 calendar component. 6060 Description: This property defines when an alarm will trigger. The 6061 default value type is DURATION, specifying a relative time for the 6062 trigger of the alarm. The default duration is relative to the 6063 start of an event or to-do that the alarm is associated with. The 6064 duration can be explicitly set to trigger from either the end or 6065 the start of the associated event or to-do with the "RELATED" 6066 parameter. A value of START will set the alarm to trigger off the 6067 start of the associated event or to-do. A value of END will set 6068 the alarm to trigger off the end of the associated event or to-do. 6070 Either a positive or negative duration may be specified for the 6071 "TRIGGER" property. An alarm with a positive duration is 6072 triggered after the associated start or end of the event or to-do. 6073 An alarm with a negative duration is triggered before the 6074 associated start or end of the event or to-do. 6076 The "RELATED" property parameter is not valid if the value type of 6077 the property is set to DATE-TIME (i.e., for an absolute date and 6078 time alarm trigger). If a value type of DATE-TIME is specified, 6079 then the property value MUST be specified in the UTC time format. 6080 If an absolute trigger is specified on an alarm for a recurring 6081 event or to-do, then the alarm will only trigger for the specified 6082 absolute date/time, along with any specified repeating instances. 6084 If the trigger is set relative to START, then the "DTSTART" 6085 property MUST be present in the associated "VEVENT" or "VTODO" 6086 calendar component. If an alarm is specified for an event with 6087 the trigger set relative to the END, then the "DTEND" property or 6088 the "DTSTART" and "DURATION " properties MUST be present in the 6089 associated "VEVENT" calendar component. If the alarm is specified 6090 for a to-do with a trigger set relative to the END, then either 6091 the "DUE" property or the "DTSTART" and "DURATION " properties 6092 MUST be present in the associated "VTODO" calendar component. 6094 Alarms specified in an event or to-do which is defined in terms of 6095 a DATE value type will be triggered relative to 00:00:00 of the 6096 user's configured time zone on the specified date, or relative to 6097 00:00:00 UTC on the specified date if no configured time zone can 6098 be found for the user. For example, if "DTSTART" is a DATE value 6099 set to 19980205 then the duration trigger will be relative to 6100 19980205T000000 America/New_York for a user configured with the 6101 America/New_York time zone. 6103 Format Definition: This property is defined by the following 6104 notation: 6106 trigger = "TRIGGER" (trigrel / trigabs) CRLF 6108 trigrel = *( 6110 ; the following are OPTIONAL, 6111 ; but MUST NOT occur more than once 6113 (";" "VALUE" "=" "DURATION") / 6114 (";" trigrelparam) / 6116 ; the following is OPTIONAL, 6117 ; and MAY occur more than once 6119 (";" other-param) 6120 ) ":" dur-value 6122 trigabs = *( 6124 ; the following is REQUIRED, 6125 ; but MUST NOT occur more than once 6127 (";" "VALUE" "=" "DATE-TIME") / 6129 ; the following is OPTIONAL, 6130 ; and MAY occur more than once 6132 (";" other-param) 6134 ) ":" date-time 6136 Example: A trigger set 15 minutes prior to the start of the event or 6137 to-do. 6139 TRIGGER:-PT15M 6141 A trigger set 5 minutes after the end of an event or the due date 6142 of a to-do. 6144 TRIGGER;RELATED=END:PT5M 6146 A trigger set to an absolute date/time. 6148 TRIGGER;VALUE=DATE-TIME:19980101T050000Z 6150 3.8.7. Change Management Component Properties 6152 The following properties specify change management information in 6153 calendar components. 6155 3.8.7.1. Date/Time Created 6157 Property Name: CREATED 6159 Purpose: This property specifies the date and time that the calendar 6160 information was created by the calendar user agent in the calendar 6161 store. 6163 Note: This is analogous to the creation date and time for a 6164 file in the file system. 6166 Value Type: DATE-TIME 6168 Property Parameters: IANA and non-standard property parameters can 6169 be specified on this property. 6171 Conformance: The property can be specified once in "VEVENT", "VTODO" 6172 or "VJOURNAL" calendar components. The value MUST be specified as 6173 a date with UTC time. 6175 Description: This property specifies the date and time that the 6176 calendar information was created by the calendar user agent in the 6177 calendar store. 6179 Format Definition: This property is defined by the following 6180 notation: 6182 created = "CREATED" creaparam ":" date-time CRLF 6184 creaparam = *(";" other-param) 6186 Example: The following is an example of this property: 6188 CREATED:19960329T133000Z 6190 3.8.7.2. Date/Time Stamp 6192 Property Name: DTSTAMP 6194 Purpose: In the case of an iCalendar object that specifies a 6195 "METHOD" property, this property specifies the date and time that 6196 the instance of the iCalendar object was created. In the case of 6197 an iCalendar object that doesn't specify a "METHOD" property, this 6198 property specifies the date and time that the information 6199 associated with the calendar component was last revised in the 6200 calendar store. 6202 Value Type: DATE-TIME 6204 Property Parameters: IANA and non-standard property parameters can 6205 be specified on this property. 6207 Conformance: This property MUST be included in the "VEVENT", 6208 "VTODO", "VJOURNAL" or "VFREEBUSY" calendar components. 6210 Description: The value MUST be specified in the UTC time format. 6212 This property is also useful to protocols such as 6213 [I-D.ietf-calsify-rfc2447bis] that have inherent latency issues 6214 with the delivery of content. This property will assist in the 6215 proper sequencing of messages containing iCalendar objects. 6217 In the case of an iCalendar object that specifies a "METHOD" 6218 property, this property is different than the "CREATED" and "LAST- 6219 MODIFIED" properties. These two properties are used to specify 6220 when the particular calendar data in the calendar store was 6221 created and last modified. This is different than when the 6222 iCalendar object representation of the calendar service 6223 information was created or last modified. 6225 In the case of an iCalendar object that doesn't specify a "METHOD" 6226 property, this property is equivalent to the "LAST-MODIFIED" 6227 property. 6229 Format Definition: This property is defined by the following 6230 notation: 6232 dtstamp = "DTSTAMP" stmparam ":" date-time CRLF 6234 stmparam = *(";" other-param) 6236 Example: 6238 DTSTAMP:19971210T080000Z 6240 3.8.7.3. Last Modified 6241 Property Name: LAST-MODIFIED 6243 Purpose: This property specifies the date and time that the 6244 information associated with the calendar component was last 6245 revised in the calendar store. 6247 Note: This is analogous to the modification date and time for a 6248 file in the file system. 6250 Value Type: DATE-TIME 6252 Property Parameters: IANA and non-standard property parameters can 6253 be specified on this property. 6255 Conformance: This property can be specified in the "VEVENT", 6256 "VTODO", "VJOURNAL" or "VTIMEZONE" calendar components. 6258 Description: The property value MUST be specified in the UTC time 6259 format. 6261 Format Definition: This property is defined by the following 6262 notation: 6264 last-mod = "LAST-MODIFIED" lstparam ":" date-time CRLF 6266 lstparam = *(";" other-param) 6268 Example: The following is an example of this property: 6270 LAST-MODIFIED:19960817T133000Z 6272 3.8.7.4. Sequence Number 6274 Property Name: SEQUENCE 6276 Purpose: This property defines the revision sequence number of the 6277 calendar component within a sequence of revisions. 6279 Value Type: INTEGER 6281 Property Parameters: IANA and non-standard property parameters can 6282 be specified on this property. 6284 Conformance: The property can be specified in "VEVENT", "VTODO" or 6285 "VJOURNAL" calendar component. 6287 Description: When a calendar component is created, its sequence 6288 number is zero (US-ASCII decimal 48). It is monotonically 6289 incremented by the "Organizer's" CUA each time the "Organizer" 6290 makes a significant revision to the calendar component. When the 6291 "Organizer" makes changes to one of the following properties, the 6292 sequence number MUST be incremented: 6294 * "DTSTART" 6296 * "DTEND" 6298 * "DURATION" 6300 * "DUE" 6302 * "RDATE" 6304 * "RRULE" 6306 * "EXDATE" 6308 * "STATUS" 6310 In addition, changes made by the "Organizer" to other properties 6311 can also force the sequence number to be incremented. The 6312 "Organizer" CUA MUST increment the sequence number whenever it 6313 makes changes to properties in the calendar component that the 6314 "Organizer" deems will jeopardize the validity of the 6315 participation status of the "Attendees". For example, changing 6316 the location of a meeting from one locale to another distant 6317 locale could effectively impact the participation status of the 6318 "Attendees". 6320 The "Organizer" includes this property in an iCalendar object that 6321 it sends to an "Attendee" to specify the current version of the 6322 calendar component. 6324 The "Attendee" includes this property in an iCalendar object that 6325 it sends to the "Organizer" to specify the version of the calendar 6326 component that the "Attendee" is referring to. 6328 A change to the sequence number is not the mechanism that an 6329 "Organizer" uses to request a response from the "Attendees". The 6330 "RSVP" parameter on the "ATTENDEE" property is used by the 6331 "Organizer" to indicate that a response from the "Attendees" is 6332 requested. 6334 Format Definition: This property is defined by the following 6335 notation: 6337 seq = "SEQUENCE" seqparam ":" integer CRLF 6338 ; Default is "0" 6340 seqparam = *(";" other-param) 6342 Example: The following is an example of this property for a calendar 6343 component that was just created by the "Organizer": 6345 SEQUENCE:0 6347 The following is an example of this property for a calendar 6348 component that has been revised two different times by the 6349 "Organizer": 6351 SEQUENCE:2 6353 3.8.8. Miscellaneous Component Properties 6355 The following properties specify information about a number of 6356 miscellaneous features of calendar components. 6358 3.8.8.1. IANA Properties 6360 Property Name: An IANA registered property name 6362 Value Type: The default value type is TEXT. The value type can be 6363 set to any value type. 6365 Property Parameters: Any parameter can be specified on this 6366 property. 6368 Description: This specification allows other properties registered 6369 with IANA to be specified in any calendar components. Compliant 6370 applications are expected to be able to parse these other IANA 6371 registered properties but can ignore them. 6373 Format Definition: This property is defined by the following 6374 notation: 6376 iana-prop = iana-token *(";" icalparameter) ":" value CRLF 6378 Example: The following are examples of properties that might be 6379 registered to IANA: 6381 DRESSCODE:CASUAL 6383 NON-SMOKING;VALUE=BOOLEAN:TRUE 6385 3.8.8.2. Non-standard Properties 6387 Property Name: Any property name with a "X-" prefix 6389 Purpose: This class of property provides a framework for defining 6390 non-standard properties. 6392 Value Type: The default value type is TEXT. The value type can be 6393 set to any value type. 6395 Property Parameters: IANA, non-standard and language property 6396 parameters can be specified on this property. 6398 Conformance: This property can be specified in any calendar 6399 component. 6401 Description: The MIME Calendaring and Scheduling Content Type 6402 provides a "standard mechanism for doing non-standard things". 6403 This extension support is provided for implementers to "push the 6404 envelope" on the existing version of the memo. Extension 6405 properties are specified by property and/or property parameter 6406 names that have the prefix text of "X-" (the two character 6407 sequence: LATIN CAPITAL LETTER X character followed by the HYPHEN- 6408 MINUS character). It is recommended that vendors concatenate onto 6409 this sentinel another short prefix text to identify the vendor. 6410 This will facilitate readability of the extensions and minimize 6411 possible collision of names between different vendors. User 6412 agents that support this content type are expected to be able to 6413 parse the extension properties and property parameters but can 6414 ignore them. 6416 At present, there is no registration authority for names of 6417 extension properties and property parameters. The value type for 6418 this property is TEXT. Optionally, the value type can be any of 6419 the other valid value types. 6421 Format Definition: This property is defined by the following 6422 notation: 6424 x-prop = x-name *(";" icalparameter) ":" value CRLF 6426 Example: The following might be the ABC vendor's extension for an 6427 audio-clip form of subject property: 6429 X-ABC-MMSUBJ;VALUE=URI;FMTTYPE=audio/basic:http://www.example. 6430 org/mysubj.au 6432 3.8.8.3. Request Status 6434 Property Name: REQUEST-STATUS 6436 Purpose: This property defines the status code returned for a 6437 scheduling request. 6439 Value Type: TEXT 6441 Property Parameters: IANA, non-standard and language property 6442 parameters can be specified on this property. 6444 Conformance: The property can be specified in "VEVENT", "VTODO", 6445 "VJOURNAL" or "VFREEBUSY" calendar component. 6447 Description: This property is used to return status code information 6448 related to the processing of an associated iCalendar object. The 6449 value type for this property is TEXT. 6451 The value consists of a short return status component, a longer 6452 return status description component, and optionally a status- 6453 specific data component. The components of the value are 6454 separated by the SEMICOLON character (US-ASCII decimal 59). 6456 The short return status is a PERIOD character (US-ASCII decimal 6457 46) separated pair or 3-tuple of integers. For example, "3.1" or 6458 "3.1.1". The successive levels of integers provide for a 6459 successive level of status code granularity. 6461 The following are initial classes for the return status code. 6462 Individual iCalendar object methods will define specific return 6463 status codes for these classes. In addition, other classes for 6464 the return status code may be defined using the registration 6465 process defined later in this memo. 6467 |==============+===============================================| 6468 | Short Return | Longer Return Status Description | 6469 | Status Code | | 6470 |==============+===============================================| 6471 | 1.xx | Preliminary success. This class of status | 6472 | | of status code indicates that the request has | 6473 | | request has been initially processed but that | 6474 | | completion is pending. | 6475 |==============+===============================================| 6476 | 2.xx | Successful. This class of status code | 6477 | | indicates that the request was completed | 6478 | | successfuly. However, the exact status code | 6479 | | can indicate that a fallback has been taken. | 6480 |==============+===============================================| 6481 | 3.xx | Client Error. This class of status code | 6482 | | indicates that the request was not successful.| 6483 | | The error is the result of either a syntax or | 6484 | | a semantic error in the client formatted | 6485 | | request. Request should not be retried until | 6486 | | the condition in the request is corrected. | 6487 |==============+===============================================| 6488 | 4.xx | Scheduling Error. This class of status code | 6489 | | indicates that the request was not successful.| 6490 | | Some sort of error occurred within the | 6491 | | calendaring and scheduling service, not | 6492 | | directly related to the request itself. | 6493 |==============+===============================================| 6495 Format Definition: This property is defined by the following 6496 notation: 6498 rstatus = "REQUEST-STATUS" rstatparam ":" 6499 statcode ";" statdesc [";" extdata] 6501 rstatparam = *( 6503 ; the following is OPTIONAL, 6504 ; but MUST NOT occur more than once 6506 (";" languageparam) / 6508 ; the following is OPTIONAL, 6509 ; and MAY occur more than once 6511 (";" other-param) 6513 ) 6515 statcode = 1*DIGIT 1*2("." 1*DIGIT) 6516 ;Hierarchical, numeric return status code 6518 statdesc = text 6519 ;Textual status description 6521 extdata = text 6522 ;Textual exception data. For example, the offending property 6523 ;name and value or complete property line. 6525 Example: The following are some possible examples of this property. 6527 The COMMA and SEMICOLON separator characters in the property value 6528 are BACKSLASH character escaped because they appear in a text 6529 value. 6531 REQUEST-STATUS:2.0;Success 6533 REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01 6535 REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled 6536 as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2 6538 REQUEST-STATUS:4.1;Event conflict. Date/time is busy. 6540 REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE: 6541 mailto:jsmith@example.com 6543 4. iCalendar Object Examples 6545 The following examples are provided as an informational source of 6546 illustrative iCalendar objects consistent with this content type. 6548 The following example specifies a three-day conference that begins at 6549 2:30 P.M. UTC, September 18, 1996 and end at 10:00 P.M. UTC, 6550 September 20, 1996. 6552 BEGIN:VCALENDAR 6553 PRODID:-//xyz Corp//NONSGML PDA Calendar Version 1.0//EN 6554 VERSION:2.0 6555 BEGIN:VEVENT 6556 DTSTAMP:19960704T120000Z 6557 UID:uid1@example.com 6558 ORGANIZER:mailto:jsmith@example.com 6559 DTSTART:19960918T143000Z 6560 DTEND:19960920T220000Z 6561 STATUS:CONFIRMED 6562 CATEGORIES:CONFERENCE 6563 SUMMARY:Networld+Interop Conference 6564 DESCRIPTION:Networld+Interop Conference 6565 and Exhibit\nAtlanta World Congress Center\n 6566 Atlanta\, Georgia 6567 END:VEVENT 6568 END:VCALENDAR 6570 The following example specifies a group scheduled meeting that begin 6571 at 8:30 AM EST on March 12, 1998 and end at 9:30 AM EST on March 12, 6572 1998. The "Organizer" has scheduled the meeting with one or more 6573 calendar users in a group. A time zone specification for Eastern 6574 United States has been specified. 6576 BEGIN:VCALENDAR 6577 PRODID:-//RDU Software//NONSGML HandCal//EN 6578 VERSION:2.0 6579 BEGIN:VTIMEZONE 6580 TZID:America/New_York 6581 BEGIN:STANDARD 6582 DTSTART:19981025T020000 6583 TZOFFSETFROM:-0400 6584 TZOFFSETTO:-0500 6585 TZNAME:EST 6586 END:STANDARD 6587 BEGIN:DAYLIGHT 6588 DTSTART:19990404T020000 6589 TZOFFSETFROM:-0500 6590 TZOFFSETTO:-0400 6591 TZNAME:EDT 6592 END:DAYLIGHT 6593 END:VTIMEZONE 6594 BEGIN:VEVENT 6595 DTSTAMP:19980309T231000Z 6596 UID:guid-1.example.com 6597 ORGANIZER;ROLE=CHAIR:mailto:mrbig@example.com 6598 ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: 6599 mailto:employee-A@example.com 6600 DESCRIPTION:Project XYZ Review Meeting 6601 CATEGORIES:MEETING 6602 CLASS:PUBLIC 6603 CREATED:19980309T130000Z 6604 SUMMARY:XYZ Project Review 6605 DTSTART;TZID=America/New_York:19980312T083000 6606 DTEND;TZID=America/New_York:19980312T093000 6607 LOCATION:1CP Conference Room 4350 6608 END:VEVENT 6609 END:VCALENDAR 6611 The following is an example of an iCalendar object passed in a MIME 6612 message with a single body part consisting of a "text/calendar" 6613 Content Type. 6615 TO:jsmith@example.com 6616 FROM:jdoe@example.com 6617 MIME-VERSION:1.0 6618 MESSAGE-ID: 6619 CONTENT-TYPE:text/calendar; method="xyz"; component="VEVENT" 6621 BEGIN:VCALENDAR 6622 METHOD:xyz 6623 VERSION:2.0 6624 PRODID:-//ABC Corporation//NONSGML My Product//EN 6625 BEGIN:VEVENT 6626 DTSTAMP:19970324T120000Z 6627 SEQUENCE:0 6628 UID:uid3@example.com 6629 ORGANIZER:mailto:jdoe@example.com 6630 ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com 6631 DTSTART:19970324T123000Z 6632 DTEND:19970324T210000Z 6633 CATEGORIES:MEETING,PROJECT 6634 CLASS:PUBLIC 6635 SUMMARY:Calendaring Interoperability Planning Meeting 6636 DESCRIPTION:Discuss how we can test c&s interoperability\n 6637 using iCalendar and other IETF standards. 6638 LOCATION:LDB Lobby 6639 ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/ 6640 conf/bkgrnd.ps 6641 END:VEVENT 6642 END:VCALENDAR 6644 The following is an example of a to-do due on April 15, 1998. An 6645 audio alarm has been specified to remind the calendar user at noon, 6646 the day before the to-do is expected to be completed and repeat 6647 hourly, four additional times. The to-do definition has been 6648 modified twice since it was initially created. 6650 BEGIN:VCALENDAR 6651 VERSION:2.0 6652 PRODID:-//ABC Corporation//NONSGML My Product//EN 6653 BEGIN:VTODO 6654 DTSTAMP:19980130T134500Z 6655 SEQUENCE:2 6656 UID:uid4@example.com 6657 ORGANIZER:mailto:unclesam@example.com 6658 ATTENDEE;PARTSTAT=ACCEPTED:mailto:jqpublic@example.com 6659 DUE:19980415T000000 6660 STATUS:NEEDS-ACTION 6661 SUMMARY:Submit Income Taxes 6662 BEGIN:VALARM 6663 ACTION:AUDIO 6664 TRIGGER:19980403T120000Z 6665 ATTACH;FMTTYPE=audio/basic:http://example.com/pub/audio- 6666 files/ssbanner.aud 6667 REPEAT:4 6668 DURATION:PT1H 6669 END:VALARM 6670 END:VTODO 6671 END:VCALENDAR 6673 The following is an example of a journal entry. 6675 BEGIN:VCALENDAR 6676 VERSION:2.0 6677 PRODID:-//ABC Corporation//NONSGML My Product//EN 6678 BEGIN:VJOURNAL 6679 DTSTAMP:19970324T120000Z 6680 UID:uid5@example.com 6681 ORGANIZER:mailto:jsmith@example.com 6682 STATUS:DRAFT 6683 CLASS:PUBLIC 6684 CATEGORIES:Project Report,XYZ,Weekly Meeting 6685 DESCRIPTION:Project xyz Review Meeting Minutes\n 6686 Agenda\n1. Review of project version 1.0 requirements.\n2. 6687 Definition 6688 of project processes.\n3. Review of project schedule.\n 6689 Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was 6690 decided that the requirements need to be signed off by 6691 product marketing.\n-Project processes were accepted.\n 6692 -Project schedule needs to account for scheduled holidays 6693 and employee vacation time. Check with HR for specific 6694 dates.\n-New schedule will be distributed by Friday.\n- 6695 Next weeks meeting is cancelled. No meeting until 3/23. 6696 END:VJOURNAL 6697 END:VCALENDAR 6699 The following is an example of published busy time information. The 6700 iCalendar object might be placed in the network resource 6701 http://www.example.com/calendar/busytime/jsmith.ifb. 6703 BEGIN:VCALENDAR 6704 VERSION:2.0 6705 PRODID:-//RDU Software//NONSGML HandCal//EN 6706 BEGIN:VFREEBUSY 6707 ORGANIZER:mailto:jsmith@example.com 6708 DTSTART:19980313T141711Z 6709 DTEND:19980410T141711Z 6710 FREEBUSY:19980314T233000Z/19980315T003000Z 6711 FREEBUSY:19980316T153000Z/19980316T163000Z 6712 FREEBUSY:19980318T030000Z/19980318T040000Z 6713 URL:http://www.example.com/calendar/busytime/jsmith.ifb 6714 END:VFREEBUSY 6715 END:VCALENDAR 6717 5. Recommended Practices 6719 These recommended practices should be followed in order to assure 6720 consistent handling of the following cases for an iCalendar object. 6722 1. Content lines longer than 75 octets SHOULD be folded. 6724 2. 6726 3. When the combination of the "RRULE" and "RDATE" properties in a 6727 recurring component produces multiple instances having the same 6728 start DATE-TIME value, they should be collapsed to, and 6729 considered as, a single instance. If the "RDATE" property is 6730 specified as a PERIOD value the duration of the recurrence 6731 instance will be the one specified by the "RDATE" property, and 6732 not the duration of the recurrence instance defined by the 6733 "DTSTART" property. 6735 4. When a calendar user receives multiple requests for the same 6736 calendar component (e.g., REQUEST for a "VEVENT" calendar 6737 component) as a result of being on multiple mailing lists 6738 specified by "ATTENDEE" properties in the request, they SHOULD 6739 respond to only one of the requests. The calendar user SHOULD 6740 also specify (using the "MEMBER" parameter of the "ATTENDEE" 6741 property) which mailing list they are a member of. 6743 5. An implementation can truncate a "SUMMARY" property value to 255 6744 octets, but MUST NOT truncate the value in the middle of a UTF-8 6745 multi-octet sequence. 6747 6. If seconds of the minute are not supported by an implementation, 6748 then a value of "00" SHOULD be specified for the seconds 6749 component in a time value. 6751 7. 6753 8. "TZURL" values SHOULD NOT be specified as a file URI type. This 6754 URI form can be useful within an organization, but is 6755 problematic in the Internet. 6757 9. Some possible English values for "CATEGORIES" property include 6758 "ANNIVERSARY", "APPOINTMENT", "BUSINESS", "EDUCATION", 6759 "HOLIDAY", "MEETING", "MISCELLANEOUS", "NON-WORKING HOURS", "NOT 6760 IN OFFICE", "PERSONAL", "PHONE CALL", "SICK DAY", "SPECIAL 6761 OCCASION", "TRAVEL", "VACATION". Categories can be specified in 6762 any registered language. 6764 10. Some possible English values for "RESOURCES" property include 6765 "CATERING", "CHAIRS", "COMPUTER PROJECTOR", "EASEL", "OVERHEAD 6766 PROJECTOR", "SPEAKER PHONE", "TABLE", "TV", "VCR", "VIDEO 6767 PHONE", "VEHICLE". Resources can be specified in any registered 6768 language. 6770 6. Internationalization Considerations 6772 Applications MUST generate iCalendar stream in the UTF-8 charset and 6773 MUST accept iCalendar stream in the UTF-8 or US-ASCII charset. 6775 7. Security Considerations 6777 Because calendaring and scheduling information is very privacy- 6778 sensitive, the protocol used for the transmission of calendaring and 6779 scheduling information should have capabilities to protect the 6780 information from possible threats, such as eavesdropping, replay, 6781 message insertion, deletion, modification and man-in-the-middle 6782 attacks. 6784 As this document only defines the data format and media type of text/ 6785 calendar that is independent of any calendar service or protocol, it 6786 is up to the actual protocol specifications such as iTIP 6787 [I-D.ietf-calsify-2446bis], iMIP [I-D.ietf-calsify-rfc2447bis], and 6788 CalDAV [RFC4791] to describe the threats that the above attacks 6789 present, as well as ways in which to mitigate them. 6791 8. IANA Considerations 6792 8.1. iCalendar Media Type Registration 6794 The Calendaring and Scheduling Core Object Specification is intended 6795 for use as a MIME content type. However, the implementation of the 6796 memo is in no way limited solely as a MIME content type. 6798 To: ietf-types@iana.org 6799 Subject: Registration of media type text/calendar 6801 Type name: text 6803 Subtype name: calendar 6805 Required parameters: none 6807 Optional parameters: charset, method, component and optinfo 6809 The "charset" parameter is defined in [RFC2046] for subtypes of 6810 the "text" media type. It is used to indicate the charset used in 6811 the body part. The charset supported by this revision of 6812 iCalendar is UTF-8. The use of any other charset is deprecated by 6813 this revision of iCalendar; however note that this revision 6814 requires that compliant applications MUST accept iCalendar streams 6815 using either the UTF-8 or US-ASCII charset. 6817 The "method" parameter is used to convey the iCalendar object 6818 method or transaction semantics for the calendaring and scheduling 6819 information. It also is an identifier for the restricted set of 6820 properties and values that the iCalendar object consists of. The 6821 parameter is to be used as a guide for applications interpreting 6822 the information contained within the body part. It SHOULD NOT be 6823 used to exclude or require particular pieces of information unless 6824 the identified method definition specifically calls for this 6825 behavior. Unless specifically forbidden by a particular method 6826 definition, a text/calendar content type can contain any set of 6827 properties permitted by the Calendaring and Scheduling Core Object 6828 Specification. The "method" parameter MUST be specified and MUST 6829 be set to the same value as the "METHOD" component property of the 6830 iCalendar objects of the iCalendar stream if and only if the 6831 iCalendar objects in the iCalendar stream all have a "METHOD" 6832 component property set to the same value. 6834 The value for the "method" parameter is defined as follows: 6836 method = 1*(ALPHA / DIGIT / "-") 6837 ; IANA registered iCalendar object method 6839 The "component" parameter conveys the type of iCalendar calendar 6840 component within the body part. If the iCalendar object contains 6841 more than one calendar component type, then multiple component 6842 parameters MUST be specified. 6844 The value for the "component" parameter is defined as follows: 6846 component = "VEVENT" 6847 / "VTODO" 6848 / "VJOURNAL" 6849 / "VFREEBUSY" 6850 / "VTIMEZONE" 6851 / iana-token 6852 / x-name 6854 The "optinfo" parameter conveys optional information about the 6855 iCalendar object within the body part. This parameter can only 6856 specify semantics already specified by the iCalendar object and 6857 that can be otherwise determined by parsing the body part. In 6858 addition, the optional information specified by this parameter 6859 MUST be consistent with that information specified by the 6860 iCalendar object. For example, it can be used to convey the 6861 "Attendee" response status to a meeting request. The parameter 6862 value consists of a string value. 6864 The parameter can be specified multiple times. 6866 The value for the "optinfo" parameter is defined as follows: 6868 optinfo = infovalue / qinfovalue 6870 infovalue = iana-token / x-name 6872 qinfovalue = DQUOTE (infovalue) DQUOTE 6874 Encoding considerations: This media type can contain 8bit 6875 characters, so the use of quoted-printable or base64 MIME Content- 6876 Transfer-Encodings might be necessary when iCalendar objects are 6877 transferred across protocols restricted to the 7bit repertoire. 6878 Note that a text valued property in the content entity can also 6879 have content encoding of special characters using a BACKSLASH 6880 character (US-ASCII decimal 92) escapement technique. This means 6881 that content values can end up encoded twice. 6883 Security considerations: See Section 7. 6885 Interoperability considerations: This media type is intended to 6886 define a common format for conveying calendaring and scheduling 6887 information between different systems. It is heavily based on the 6888 earlier [VCAL] industry specification. 6890 Published specification: This specification. 6892 Applications which use this media type: This media type is designed 6893 for widespread use by Internet calendaring and scheduling 6894 applications. In addition, applications in the workflow and 6895 document management area might find this content-type applicable. 6896 The iTIP [I-D.ietf-calsify-2446bis], iMIP 6897 [I-D.ietf-calsify-rfc2447bis] and CalDAV [RFC4791] Internet 6898 protocols directly use this media type also. 6900 Additional information: 6902 Magic number(s): None. 6904 File extension(s): The file extension of "ics" is to be used to 6905 designate a file containing (an arbitrary set of) calendaring 6906 and scheduling information consistent with this MIME content 6907 type. 6909 The file extension of "ifb" is to be used to designate a file 6910 containing free or busy time information consistent with this 6911 MIME content type. 6913 Macintosh file type code(s): The file type code of "iCal" is to 6914 be used in Apple MacIntosh operating system environments to 6915 designate a file containing calendaring and scheduling 6916 information consistent with this MIME media type. 6918 The file type code of "iFBf" is to be used in Apple MacIntosh 6919 operating system environments to designate a file containing 6920 free or busy time information consistent with this MIME media 6921 type. 6923 Person & email address to contact for further information: See the 6924 "Author's Address" section of this document. 6926 Intended usage: COMMON 6928 Restrictions on usage: There are no restrictions on where this media 6929 type can be used. 6931 Author: See the "Author's Address" section of this document. 6933 Change controller: IETF 6935 8.2. New iCalendar Elements Registration 6937 This section defines the process to register new or modified 6938 iCalendar elements, that is, components, properties, parameters, 6939 value data types, and values, with IANA. 6941 8.2.1. iCalendar Elements Registration Procedure 6943 The IETF will create a mailing list, icalendar@ietf.org [2], which 6944 can be used for public discussion of iCalendar elements proposals 6945 prior to registration. Use of the mailing list is strongly 6946 encouraged. The IESG will appoint a designated expert who will 6947 monitor the icalendar@ietf.org [2] mailing list and review 6948 registrations. 6950 Registration of new iCalendar elements MUST be reviewed by the 6951 designated expert and published in an RFC. A Standard Tracks RFC is 6952 REQUIRED for the regisration of new value data types that modify 6953 existing properties, as well as for the registration of participation 6954 statuses values to be used in "VEVENT" calendar components. A 6955 Standard Tracks RFC is also REQUIRED for registration of iCalendar 6956 elements that modify iCalendar elements previously documented in a 6957 Standard Tracks RFC. 6959 The registration procedure begins when a completed registration 6960 template, defined in the sections below, is sent to 6961 icalendar@ietf.org [2] and iana@iana.org [3]. The designated expert 6962 is expected to tell IANA and the submitter of the registration within 6963 two weeks whether the registration is approved, approved with minor 6964 changes, or rejected with cause. When a registration is rejected 6965 with cause, it can be re-submitted if the concerns listed in the 6966 cause are addressed. Decisions made by the designated expert can be 6967 appealed to the IESG Applications Area Director, then to the IESG. 6968 They follow the normal appeals procedure for IESG decisions. 6970 8.2.2. Registration Template for Components 6972 A component is defined by completing the following template. 6974 Component name: The name of the component. 6976 Purpose: The purpose of the component. Give a short but clear 6977 description. 6979 Format definition: The ABNF for the component definition needs to 6980 be specified. 6982 Description: Any special notes about the component, how it is to 6983 be used, etc. 6985 Example(s): One or more examples of instances of the component 6986 needs to be specified. 6988 8.2.3. Registration Template for Properties 6990 A property is defined by completing the following template. 6992 Property name: The name of the property. 6994 Purpose: The purpose of the property. Give a short but clear 6995 description. 6997 Value type: Any of the valid value types for the property value 6998 needs to be specified. The default value type also needs to be 6999 specified. 7001 Property parameters: Any of the valid property parameters for the 7002 property MUST be specified. 7004 Conformance: The calendar components that the property can appear 7005 in MUST be specified. 7007 Description: Any special notes about the property, how it is to 7008 be used, etc. 7010 Format definition: The ABNF for the property definition needs to 7011 be specified. 7013 Example(s): One or more examples of instances of the property 7014 needs to be specified. 7016 8.2.4. Registration Template for Parameters 7018 A parameter is defined by completing the following template. 7020 Parameter name: The name of the parameter. 7022 Purpose: The purpose of the parameter. Give a short but clear 7023 description. 7025 Format definition: The ABNF for the parameter definition needs to 7026 be specified. 7028 Description: Any special notes about the parameter, how it is to 7029 be used, etc. 7031 Example(s): One or more examples of instances of the parameter 7032 needs to be specified. 7034 8.2.5. Registration Template for Value Data Types 7036 A value data type is defined by completing the following template. 7038 Value name: The name of the value type. 7040 Purpose: The purpose of the value type. Give a short but clear 7041 description. 7043 Format definition: The ABNF for the value type definition needs 7044 to be specified. 7046 Description: Any special notes about the value type, how it is to 7047 be used, etc. 7049 Example(s): One or more examples of instances of the value type 7050 needs to be specified. 7052 8.2.6. Registration Template for Values 7054 A value is defined by completing the following template. 7056 Value: The value literal. 7058 Purpose: The purpose of the value. Give a short but clear 7059 description. 7061 Conformance: The calendar properties and/or parameters that can 7062 take this value needs to be specified. 7064 Example(s): One or more examples of instances of the value needs 7065 to be specified. 7067 The following is a fictitious example of a registration of an 7068 iCalendar value: 7070 Value: TOP-SECRET 7072 Purpose: This value is used to specify the access classification 7073 of top-secret calendar components. 7075 Conformance: This value can be used with the "CLASS" property. 7077 Example(s): The following is an example of this value used with 7078 the "CLASS" property: 7080 CLASS:TOP-SECRET 7082 8.3. Initial iCalendar Elements Registries 7084 The IANA is requested to create and maintain the following registries 7085 for iCalendar elements with pointers to appropriate reference 7086 documents. 7088 8.3.1. Components Registry 7090 The following table is to be used to initialize the components 7091 registry. 7093 +-----------+---------+------------------------+ 7094 | Component | Status | Reference | 7095 +-----------+---------+------------------------+ 7096 | VCALENDAR | Current | RFCXXXX, Section 3.4 | 7097 | VEVENT | Current | RFCXXXX, Section 3.6.1 | 7098 | VTODO | Current | RFCXXXX, Section 3.6.2 | 7099 | VJOURNAL | Current | RFCXXXX, Section 3.6.3 | 7100 | VFREEBUSY | Current | RFCXXXX, Section 3.6.4 | 7101 | VTIMEZONE | Current | RFCXXXX, Section 3.6.5 | 7102 | VALARM | Current | RFCXXXX, Section 3.6.6 | 7103 | STANDARD | Current | RFCXXXX, Section 3.6.5 | 7104 | DAYLIGHT | Current | RFCXXXX, Section 3.6.5 | 7105 +-----------+---------+------------------------+ 7107 8.3.2. Properties Registry 7109 The following table is to be used to initialize the properties 7110 registry. 7112 +------------------+------------+---------------------------+ 7113 | Property | Status | Reference | 7114 +------------------+------------+---------------------------+ 7115 | CALSCALE | Current | RFCXXXX, Section 3.7.1 | 7116 | METHOD | Current | RFCXXXX, Section 3.7.2 | 7117 | PRODID | Current | RFCXXXX, Section 3.7.3 | 7118 | VERSION | Current | RFCXXXX, Section 3.7.4 | 7119 | ATTACH | Current | RFCXXXX, Section 3.8.1.1 | 7120 | CATEGORIES | Current | RFCXXXX, Section 3.8.1.2 | 7121 | CLASS | Current | RFCXXXX, Section 3.8.1.3 | 7122 | COMMENT | Current | RFCXXXX, Section 3.8.1.4 | 7123 | DESCRIPTION | Current | RFCXXXX, Section 3.8.1.5 | 7124 | GEO | Current | RFCXXXX, Section 3.8.1.6 | 7125 | LOCATION | Current | RFCXXXX, Section 3.8.1.7 | 7126 | PERCENT-COMPLETE | Current | RFCXXXX, Section 3.8.1.8 | 7127 | PRIORITY | Current | RFCXXXX, Section 3.8.1.9 | 7128 | RESOURCES | Current | RFCXXXX, Section 3.8.1.10 | 7129 | STATUS | Current | RFCXXXX, Section 3.8.1.11 | 7130 | SUMMARY | Current | RFCXXXX, Section 3.8.1.12 | 7131 | COMPLETED | Current | RFCXXXX, Section 3.8.2.1 | 7132 | DTEND | Current | RFCXXXX, Section 3.8.2.2 | 7133 | DUE | Current | RFCXXXX, Section 3.8.2.3 | 7134 | DTSTART | Current | RFCXXXX, Section 3.8.2.4 | 7135 | DURATION | Current | RFCXXXX, Section 3.8.2.5 | 7136 | FREEBUSY | Current | RFCXXXX, Section 3.8.2.6 | 7137 | TRANSP | Current | RFCXXXX, Section 3.8.2.7 | 7138 | TZID | Current | RFCXXXX, Section 3.8.3.1 | 7139 | TZNAME | Current | RFCXXXX, Section 3.8.3.2 | 7140 | TZOFFSETFROM | Current | RFCXXXX, Section 3.8.3.3 | 7141 | TZOFFSETTO | Current | RFCXXXX, Section 3.8.3.4 | 7142 | TZURL | Current | RFCXXXX, Section 3.8.3.5 | 7143 | ATTENDEE | Current | RFCXXXX, Section 3.8.4.1 | 7144 | CONTACT | Current | RFCXXXX, Section 3.8.4.2 | 7145 | ORGANIZER | Current | RFCXXXX, Section 3.8.4.3 | 7146 | RECURRENCE-ID | Current | RFCXXXX, Section 3.8.4.4 | 7147 | RELATED-TO | Current | RFCXXXX, Section 3.8.4.5 | 7148 | URL | Current | RFCXXXX, Section 3.8.4.6 | 7149 | UID | Current | RFCXXXX, Section 3.8.4.7 | 7150 | EXDATE | Current | RFCXXXX, Section 3.8.5.1 | 7151 | EXRULE | Deprecated | RFC2445, Section 4.8.5.2 | 7152 | RDATE | Current | RFCXXXX, Section 3.8.5.2 | 7153 | RRULE | Current | RFCXXXX, Section 3.8.5.3 | 7154 | ACTION | Current | RFCXXXX, Section 3.8.6.1 | 7155 | REPEAT | Current | RFCXXXX, Section 3.8.6.2 | 7156 | TRIGGER | Current | RFCXXXX, Section 3.8.6.3 | 7157 | CREATED | Current | RFCXXXX, Section 3.8.7.1 | 7158 | DTSTAMP | Current | RFCXXXX, Section 3.8.7.2 | 7159 | LAST-MODIFIED | Current | RFCXXXX, Section 3.8.7.3 | 7160 | SEQUENCE | Current | RFCXXXX, Section 3.8.7.4 | 7161 | REQUEST-STATUS | Current | RFCXXXX, Section 3.8.8.3 | 7162 +------------------+------------+---------------------------+ 7164 8.3.3. Parameters Registry 7166 The following table is to be used to initialize the parameters 7167 registry. 7169 +----------------+------------+-------------------------+ 7170 | Parameter | Status | Reference | 7171 +----------------+------------+-------------------------+ 7172 | ALTREP | Current | RFCXXXX, Section 3.2.1 | 7173 | CN | Current | RFCXXXX, Section 3.2.2 | 7174 | CUTYPE | Current | RFCXXXX, Section 3.2.3 | 7175 | DELEGATED-FROM | Current | RFCXXXX, Section 3.2.4 | 7176 | DELEGATED-TO | Current | RFCXXXX, Section 3.2.5 | 7177 | DIR | Current | RFCXXXX, Section 3.2.6 | 7178 | ENCODING | Current | RFCXXXX, Section 3.2.7 | 7179 | FMTTYPE | Current | RFCXXXX, Section 3.2.8 | 7180 | FBTYPE | Current | RFCXXXX, Section 3.2.9 | 7181 | LANGUAGE | Current | RFCXXXX, Section 3.2.10 | 7182 | MEMBER | Current | RFCXXXX, Section 3.2.11 | 7183 | PARTSTAT | Current | RFCXXXX, Section 3.2.12 | 7184 | RANGE | Deprecated | RFC2445, Section 4.2.13 | 7185 | RELATED | Current | RFCXXXX, Section 3.2.13 | 7186 | RELTYPE | Current | RFCXXXX, Section 3.2.14 | 7187 | ROLE | Current | RFCXXXX, Section 3.2.15 | 7188 | RSVP | Current | RFCXXXX, Section 3.2.16 | 7189 | SENT-BY | Current | RFCXXXX, Section 3.2.17 | 7190 | TZID | Current | RFCXXXX, Section 3.2.18 | 7191 | VALUE | Current | RFCXXXX, Section 3.2.19 | 7192 +----------------+------------+-------------------------+ 7194 8.3.4. Value Data Types Registry 7196 The following table is to be used to initialize the value data types 7197 registry. 7199 +-----------------+---------+-------------------------+ 7200 | Value Data Type | Status | Reference | 7201 +-----------------+---------+-------------------------+ 7202 | BINARY | Current | RFCXXXX, Section 3.3.1 | 7203 | BOOLEAN | Current | RFCXXXX, Section 3.3.2 | 7204 | CAL-ADDRESS | Current | RFCXXXX, Section 3.3.3 | 7205 | DATE | Current | RFCXXXX, Section 3.3.4 | 7206 | DATE-TIME | Current | RFCXXXX, Section 3.3.5 | 7207 | DURATION | Current | RFCXXXX, Section 3.3.6 | 7208 | FLOAT | Current | RFCXXXX, Section 3.3.7 | 7209 | INTEGER | Current | RFCXXXX, Section 3.3.8 | 7210 | PERIOD | Current | RFCXXXX, Section 3.3.9 | 7211 | RECUR | Current | RFCXXXX, Section 3.3.10 | 7212 | TEXT | Current | RFCXXXX, Section 3.3.11 | 7213 | TIME | Current | RFCXXXX, Section 3.3.12 | 7214 | URI | Current | RFCXXXX, Section 3.3.13 | 7215 | UTC-OFFSET | Current | RFCXXXX, Section 3.3.14 | 7216 +-----------------+---------+-------------------------+ 7218 8.3.5. Calendar User Types Registry 7220 The following table is to be used to initialize the calendar user 7221 types registry. 7223 +--------------------+---------+------------------------+ 7224 | Calendar User Type | Status | Reference | 7225 +--------------------+---------+------------------------+ 7226 | INDIVIDUAL | Current | RFCXXXX, Section 3.2.3 | 7227 | GROUP | Current | RFCXXXX, Section 3.2.3 | 7228 | RESOURCE | Current | RFCXXXX, Section 3.2.3 | 7229 | ROOM | Current | RFCXXXX, Section 3.2.3 | 7230 | UNKNOWN | Current | RFCXXXX, Section 3.2.3 | 7231 +--------------------+---------+------------------------+ 7233 8.3.6. Free/Busy Time Types Registry 7235 The following table is to be used to initialize the free/busy time 7236 types registry. 7238 +---------------------+---------+------------------------+ 7239 | Free/Busy Time Type | Status | Reference | 7240 +---------------------+---------+------------------------+ 7241 | FREE | Current | RFCXXXX, Section 3.2.9 | 7242 | BUSY | Current | RFCXXXX, Section 3.2.9 | 7243 | BUSY-UNAVAILABLE | Current | RFCXXXX, Section 3.2.9 | 7244 | BUSY-TENTATIVE | Current | RFCXXXX, Section 3.2.9 | 7245 +---------------------+---------+------------------------+ 7247 8.3.7. Participation Statuses Registry 7249 The following table is to be used to initialize the participation 7250 statuses registry. 7252 +--------------------+---------+-------------------------+ 7253 | Participant Status | Status | Reference | 7254 +--------------------+---------+-------------------------+ 7255 | NEEDS-ACTION | Current | RFCXXXX, Section 3.2.12 | 7256 | ACCEPTED | Current | RFCXXXX, Section 3.2.12 | 7257 | DECLINED | Current | RFCXXXX, Section 3.2.12 | 7258 | TENTATIVE | Current | RFCXXXX, Section 3.2.12 | 7259 | DELEGATED | Current | RFCXXXX, Section 3.2.12 | 7260 | COMPLETED | Current | RFCXXXX, Section 3.2.12 | 7261 | IN-PROCESS | Current | RFCXXXX, Section 3.2.12 | 7262 +--------------------+---------+-------------------------+ 7264 8.3.8. Relationship Types Registry 7266 The following table is to be used to initialize the property 7267 parameters registry. 7269 +-------------------+---------+-------------------------+ 7270 | Relationship Type | Status | Reference | 7271 +-------------------+---------+-------------------------+ 7272 | CHILD | Current | RFCXXXX, Section 3.2.14 | 7273 | PARENT | Current | RFCXXXX, Section 3.2.14 | 7274 | SIBLING | Current | RFCXXXX, Section 3.2.14 | 7275 +-------------------+---------+-------------------------+ 7277 8.3.9. Participation Roles Registry 7279 The following table is to be used to initialize the participation 7280 roles registry. 7282 +-----------------+---------+-------------------------+ 7283 | Role Type | Status | Reference | 7284 +-----------------+---------+-------------------------+ 7285 | CHAIR | Current | RFCXXXX, Section 3.2.15 | 7286 | REQ-PARTICIPANT | Current | RFCXXXX, Section 3.2.15 | 7287 | OPT-PARTICIPANT | Current | RFCXXXX, Section 3.2.15 | 7288 | NON-PARTICIPANT | Current | RFCXXXX, Section 3.2.15 | 7289 +-----------------+---------+-------------------------+ 7291 8.3.10. Actions Registry 7293 The following table is to be used to initialize the actions registry. 7295 +-----------+------------+--------------------------+ 7296 | Action | Status | Reference | 7297 +-----------+------------+--------------------------+ 7298 | AUDIO | Current | RFCXXXX, Section 3.8.6.1 | 7299 | DISPLAY | Current | RFCXXXX, Section 3.8.6.1 | 7300 | EMAIL | Current | RFCXXXX, Section 3.8.6.1 | 7301 | PROCEDURE | Deprecated | RFC2445, Section 4.8.6.1 | 7302 +-----------+------------+--------------------------+ 7304 8.3.11. Classifications Registry 7306 The following table is to be used to initialize the classifications 7307 registry. 7309 +----------------+---------+--------------------------+ 7310 | Classification | Status | Reference | 7311 +----------------+---------+--------------------------+ 7312 | PUBLIC | Current | RFCXXXX, Section 3.8.1.3 | 7313 | PRIVATE | Current | RFCXXXX, Section 3.8.1.3 | 7314 | CONFIDENTIAL | Current | RFCXXXX, Section 3.8.1.3 | 7315 +----------------+---------+--------------------------+ 7317 8.3.12. Methods Registry 7319 No values are defined in this document for the "METHOD" property. 7321 9. Acknowledgements 7323 The editor of this document wish to thank Frank Dawson and Derik 7324 Stenerson, the original authors of RFC2445, as well as the following 7325 individuals who have participated in the drafting, review and 7326 discussion of this memo: 7328 Joe Abley, Hervey Allen, Jay Batson, Oliver Block, Stephane 7329 Bortzmeyer, Chris Bryant, Tantek Celik, Mark Crispin, Cyrus Daboo, 7330 Mike Douglass, Andrew N. Dowden, Lisa Dusseault, Ned Freed, Ted 7331 Hardie, Tim Hare, Jeffrey Harris, Helge Hess, Leif Johansson, 7332 Reinhold Kainhofer, Eliot Lear, Michiel van Leeuwen, Jonathan Lennox, 7333 Jeff McCullough, Bill McQuillan, Alexey Melnikov, Aki Niemi, John W. 7334 Noerenberg II, Chuck Norris, Mark Paterson, Simon Pilette, Arnaud 7335 Quillaud, Robert Ransdell, Julian F. Reschke, Caleb Richardson, Sam 7336 Roberts, George Sexton, Nigel Swinson, Simon Vaillancourt, and Sandy 7337 Wills. 7339 The editor would also like to thank the Calendaring and Scheduling 7340 Consortium for advice with this specification, and for organizing 7341 interoperability testing events to help refine it. 7343 10. References 7345 10.1. Normative References 7347 [ISO.8601.2004] International Organization for 7348 Standardization, "Data elements and 7349 interchange formats -- Information 7350 interchange -- Representation of dates 7351 and times", 2004. 7353 [ISO.9070.1991] International Organization for 7354 Standardization, "Information 7355 Technology_SGML Support Facilities -- 7356 Registration Procedures for Public 7357 Text Owner Identifiers, Second 7358 Edition", April 1991. 7360 [RFC2045] Freed, N. and N. Borenstein, 7361 "Multipurpose Internet Mail Extensions 7362 (MIME) Part One: Format of Internet 7363 Message Bodies", RFC 2045, 7364 November 1996. 7366 [RFC2046] Freed, N. and N. Borenstein, 7367 "Multipurpose Internet Mail Extensions 7368 (MIME) Part Two: Media Types", 7369 RFC 2046, November 1996. 7371 [RFC2119] Bradner, S., "Key words for use in 7372 RFCs to Indicate Requirement Levels", 7373 BCP 14, RFC 2119, March 1997. 7375 [RFC2368] Hoffman, P., Masinter, L., and J. 7376 Zawinski, "The mailto URL scheme", 7377 RFC 2368, July 1998. 7379 [RFC2822] Resnick, P., "Internet Message 7380 Format", RFC 2822, April 2001. 7382 [RFC3629] Yergeau, F., "UTF-8, a transformation 7383 format of ISO 10646", STD 63, 7384 RFC 3629, November 2003. 7386 [RFC3986] Berners-Lee, T., Fielding, R., and L. 7387 Masinter, "Uniform Resource Identifier 7388 (URI): Generic Syntax", STD 66, 7389 RFC 3986, January 2005. 7391 [RFC4234] Crocker, D., Ed. and P. Overell, 7392 "Augmented BNF for Syntax 7393 Specifications: ABNF", RFC 4234, 7394 October 2005. 7396 [RFC4646] Phillips, A. and M. Davis, "Tags for 7397 Identifying Languages", BCP 47, 7398 RFC 4646, September 2006. 7400 [RFC4648] Josefsson, S., "The Base16, Base32, 7401 and Base64 Data Encodings", RFC 4648, 7402 October 2006. 7404 10.2. Informative References 7406 [I-D.ietf-calsify-2446bis] Daboo, C., "iCalendar Transport- 7407 Independent Interoperability Protocol 7408 (iTIP)", draft-ietf-calsify-2446bis-03 7409 (work in progress), March 2007. 7411 [I-D.ietf-calsify-rfc2447bis] Melnikov, A., "iCalendar Message-Based 7412 Interoperability Protocol(iMIP)", 7413 draft-ietf-calsify-rfc2447bis-03 (work 7414 in progress), February 2007. 7416 [RFC2392] Levinson, E., "Content-ID and 7417 Message-ID Uniform Resource Locators", 7418 RFC 2392, August 1998. 7420 [RFC2425] Howes, T., Smith, M., and F. Dawson, 7421 "A MIME Content-Type for Directory 7422 Information", RFC 2425, 7423 September 1998. 7425 [RFC2426] Dawson, F. and T. Howes, "vCard MIME 7426 Directory Profile", RFC 2426, 7427 September 1998. 7429 [RFC4516] Smith, M. and T. Howes, "Lightweight 7430 Directory Access Protocol (LDAP): 7431 Uniform Resource Locator", RFC 4516, 7432 June 2006. 7434 [RFC4791] Daboo, C., Desruisseaux, B., and L. 7435 Dusseault, "Calendaring Extensions to 7436 WebDAV (CalDAV)", RFC 4791, 7437 March 2007. 7439 [TZDB] Eggert, P. and A. Olson, "Sources for 7440 Time Zone and Daylight Saving Time 7441 Data", January 2007, . 7444 [Note to RFC Editor: Change "A. Olson" 7445 to "A.D. Olson".] 7447 [VCAL] Internet Mail Consortium, "vCalendar: 7448 The Electronic Calendaring and 7449 Scheduling Exchange Format", 7450 September 1996, 7451 . 7453 URIs 7455 [1] 7457 [2] 7459 [3] 7461 Appendix A. Differences from RFC 2445 7463 This appendix contains a list of changes that have been made in the 7464 Internet Calendaring and Scheduling Core Object Specification from 7465 RFC 2445. 7467 A.1. New restrictions 7469 1. The "DTSTART" property SHOULD be synchronized with the recurrence 7470 rule, if specified. 7472 2. The "RRULE" property SHOULD NOT occur more than once in a 7473 component. 7475 3. The BYHOUR, BYMINUTE and BYSECOND rule parts MUST NOT be 7476 specified in the "RRULE" property when the "DTSTART" property is 7477 specified as a DATE value. 7479 4. The value type of the "DTEND" or "DUE" properties MUST match the 7480 value type of "DTSTART" property. 7482 A.2. Restrictions removed 7484 1. The "DTSTART" and "DTEND" properties are no longer required to be 7485 specified as date with local time and time zone reference when 7486 used with a recurrence rule. 7488 A.3. Deprecated features 7490 1. The "EXRULE" property can no longer be specified in a component. 7492 2. The "RANGE" parameter can no longer be specified on the 7493 "RECURRENCE-ID" property. 7495 3. The "PROCEDURE" value can no longer be used with the "ACTION" 7496 property. 7498 4. x-name rule parts can no longer be specified in properties of 7499 RECUR value type (e.g., RRULE). x-param can be used on RECUR 7500 value type properties instead. 7502 Appendix B. Change Log (to be removed by RFC Editor prior to 7503 publication) 7505 B.1. Changes in -07 7507 A detailed list of changes is available at the following page: 7508 http://tools.ietf.org/wg/calsify/draft-ietf-calsify-rfc2445bis/ 7509 draft-ietf-calsify-rfc2445bis-07.changes.html. 7511 a. Issue 8: Clarified how to compute the exact duration of a nominal 7512 duration. 7514 b. Issue 10: Added new examples for "VEVENT" and "VTODO" to 7515 demonstrate that end times are always non-inclusive, that is, 7516 even end times specified as DATE values. 7518 c. Issue 11: Added a table that shows the dependency of BYxxx rule 7519 part expand or limit behaviour on the FREQ value in the rule. 7521 d. Issue 19: Removed section "Registration of Content Type 7522 Elements". Added registration templates in IANA Considerations 7523 section. Specified how applications should treat x-name and 7524 x-token they don't recognize. 7526 e. Issue 65: Removed 3rd recommended practice. Added new 7527 requirements to require "DTEND" and "DUE" to be a local date time 7528 if and only if "DTSTART" is a local date time. 7530 f. Issue 68: Clarified handling of date-times that fall in time 7531 discontinutities. 7533 g. Issue 69: Clarified handling of recurrence instances that fall in 7534 time discontinutities 7536 h. Issue 71: Clarified handling of leap seconds. 7538 i. Issue 75: Clarified that the "RDATE" property MUST be specified 7539 as a local DATE-TIME value in "VTIMEZONE" sub-components. 7541 j. Issue 76: Clarified that the value type of the "DTEND" property 7542 MUST be the same as the "DTSTART" property. 7544 k. Issue 77: Clarified that the value type of the "DUE" property 7545 MUST be the same as the "DTSTART" property. 7547 l. Issue 79: Clarified that "DTSTART" always specify an onset date- 7548 time of an observance and that its value does not need to be 7549 repeated in an "RDATE" property. 7551 m. Issue 80: Rewrote Security Considerations section. 7553 n. Issue 81: Clarified the meaning of "the set of events specified 7554 by the rule" in the description of the BYSETPOS rule part. 7556 o. Modified Abstract section. 7558 p. Moved text of section 2.3 International Considerations at the end 7559 of sectino 2.1 Formatting Conventions. 7561 q. Added Internationalization Considerations section. 7563 r. Modified the description of the following properties: "ATTACH", 7564 "COMMENT", "COMPLETED", "CREATED" "DTSTAMP" "DUE", and "REPEAT". 7566 s. Clarified some differences with ISO 8601. 7568 t. Updated reference to CalDAV and ISO 8601. 7570 u. Updated section "Differences from RFC 2445": added new 7571 restrictions and added list of removed restrictions. 7573 v. Numerous editorial changes. 7575 B.2. Changes in -06 7577 A detailed list of changes is available at the following page: 7578 http://tools.ietf.org/wg/calsify/draft-ietf-calsify-rfc2445bis/ 7579 draft-ietf-calsify-rfc2445bis-06.changes.html. 7581 a. Issue 19: Defined new IANA registries. [Work in progress]; 7583 b. Issue 23: Clarified that the UNTIL rule part MUST specify a value 7584 of the same type as the value specified by "DTSTART"; 7586 c. Issue 27: Clarified how the duration of generated recurrence 7587 instances is determined; 7589 d. Issue 35: Further clarified the description of the "LANGUAGE" 7590 property; 7592 e. Issue 42: Removed the restriction on the values allowed for the 7593 "ACTION" property in the the "VALARM" component; 7595 f. Issue 47: Clarified that alarm triggers relative to a DATE value 7596 type needs to be triggered to 00:00:00 of the user's configured 7597 time zone; 7599 g. Issue 56: Added a note to specify that FREQ MUST be specified as 7600 the first rule part in generated iCalendar applications, but MUST 7601 be accepted in any order to ensure backward compatibility. The 7602 rest of the RECUR value type ABNF has been further simplified; 7604 h. Issue 59: Clarified the default duration of "VEVENT" components 7605 specified with a "DTSTART" property of DATE value type; 7607 i. Issue 61: Modified all the property ABNFs to allow iana-param in 7608 addition to x-param. Also modified the component ABNFs to allow 7609 iana-prop in addition to x-prop. [Work in progress]; 7611 j. Issue 62: Removed the text that lead to believe that the 7612 "RECURRENCE-ID" of a specific recurrence instance might change; 7614 k. Issue 64: Clarified that REQUEST-STATUS only allows pairs (1.1) 7615 and 3-tuples (1.1.1). 7617 l. Issue 65: Clarified that a different time zone may be used by 7618 "DTSTART" and "DTEND", and "DTSTART" and "DUE" when specified as 7619 date with local time and time zone reference. [Work in 7620 progress]; 7622 m. Issue 66: Clarified that if the "RDATE" property is specified as 7623 a PERIOD, its duration has precedence over the duration of the 7624 recurrence instance defined by the "DTSTART" property; 7626 n. Issue 72: Removed the requirement that a "VTIMEZONE" calendar 7627 component MUST be present if the iCalendar object contains an 7628 RRULE that generates dates on both sides of a time zone shift; 7630 o. Issue 73: Clarified that the "TZID" must be unique in the scope 7631 of an iCalendar object only; 7633 p. Issue 74: Deprecated the "PROCEDURE" value for the "ACTION" 7634 property; 7636 q. Issue 78: Fixed the text to specify that "TZOFFSETFROM" and not 7637 "TZOFFSETTO" must be used with "DTSTART" when generating the 7638 onset date-time values from the "RRULE" in a "VTIMEZONE" 7639 component; 7641 r. Clarified that the "DTSTART" property MUST be specified in a 7642 "VTODO" component when the "DURATION" property is specified; 7644 s. Started to update the time zone information / examples; 7645 t. Numerous editorial changes. 7647 B.3. Changes in -05 7649 A detailed list of changes is available at the following page: 7650 http://tools.ietf.org/wg/calsify/draft-ietf-calsify-rfc2445bis/ 7651 draft-ietf-calsify-rfc2445bis-05.changes.html. 7653 a. Fixed ABNF with references in .txt version of the draft; 7655 b. Numerous editorial changes; 7657 c. Clarified that normative statements in ABNF comments should be 7658 considered as normative; 7660 d. Removed notes talking of character sets other than US-ASCII and 7661 UTF-8; 7663 e. Renamed CTL to CONTROL to avoid conflict with the CTL rule 7664 defined in RFC4234; 7666 f. Removed ABNF rules defined in RFC4234; 7668 g. Changed the partstatparam ABNF rule for clarity; 7670 h. Clarified the purpose of negative durations; 7672 i. Added informational references to RFC 2392 (CID URL) and RFC 4516 7673 (LDAP URL). 7675 j. Updated TZDB reference. 7677 B.4. Changes in -04 7679 A detailed list of changes is available at the following page: 7680 http://tools.ietf.org/wg/calsify/draft-ietf-calsify-rfc2445bis/ 7681 draft-ietf-calsify-rfc2445bis-04.changes.html. 7683 a. Issue 16: Clarified that recurrence instances, generated by a 7684 recurrence rule, with an invalid date or nonexistent local time 7685 must be ignored and not counted as part of the recurrence set. 7687 b. Issue 26: Clarified how to handle the BYHOUR, BYMINUTE and 7688 BYSECOND rule parts when "DTSTART" is a DATE value. 7690 c. Issue 28: Removed the MUST requirement to specify the "RDATE" 7691 property whenever the duration of a recurrence instance is 7692 modified. 7694 d. Issue 29: Clarified that the "DTSTART" property is REQUIRED in 7695 all types of recurring components. 7697 e. Issue 32: Introduced the notion of an "iCalendar stream" to make 7698 it explicit when we are refering to a "single iCalendar object" 7699 or a "sequence of iCalendar objects". 7701 f. Issue 34: Clarified what should be done with the "method" 7702 parameter when the iCalendar stream is a sequence of iCalendar 7703 objects. 7705 g. Issue 40: Changed to fbprop ABNF rule to specify that the 7706 "DTSTAMP" and the "UID" properties are REQUIRED in "VFREEBUSY" 7707 components. 7709 h. Issue 43: Removed the MUST requirement to specify the "DTSTART" 7710 and the "DTEND" properties as local time in recurring components, 7711 but added a note that in most cases this is the right thing to 7712 do. 7714 i. Issue 44: Changed the x-prop ABNF to allow any parameters on non- 7715 standard properties. 7717 j. Issue 46: Simplified the tzprop, audioprop, dispprop, emailprop, 7718 and procprop ABNF rules by removing the number of required 7719 properties in front of the "*". 7721 k. Issue 48: Deprecated the "RANGE" parameter. 7723 l. Issue 51: Clarified implicit duration of day events with no 7724 "DTEND" nor "DURATION" property. 7726 m. Issue 52: Removed x-name from the "recur" rule part definition. 7727 It should be sufficient to allow xparam on properties of RECUR 7728 value type. 7730 n. Issue 53: Updated the NON-US-ASCII ABNF rule for UTF-8. 7732 o. Issue 56: Changed the "recur" ABNF rule to allow rule parts to be 7733 specified in any order. 7735 p. Issue 57: Specified that the "DURATION" property MUST be 7736 specified as a "dur-day" or "dur-week" value when the "DTSTART" 7737 is a DATE. 7739 q. Issue 58: Changed the jourprop ABNF rule to allow the 7740 "DESCRIPTION" property to occur more than once. 7742 r. Numerous editorial changes. 7744 s. Changed reference to RFC 4646 for Language-Tag. 7746 B.5. Changes in -03 7748 A detailed list of changes is available at the following page: 7749 http://tools.ietf.org/wg/calsify/draft-ietf-calsify-rfc2445bis/ 7750 draft-ietf-calsify-rfc2445bis-03.changes.html. 7752 a. Numerous editorial changes. 7754 b. Specified that "DTSTART" should match the pattern of "RRULE" and 7755 is always part of the "COUNT". 7757 c. Specified "RRULE" should not occur more than once in recurring 7758 components. 7760 d. Deprecated "EXRULE". 7762 e. Fixed all ABNF errors reported by Bill Fenner's ABNF parsing web 7763 service available at: 7764 http://rtg.ietf.org/~fenner/abnf.cgi. 7766 f. Changed reference to RFC 4648 for Base64 encoding. 7768 B.6. Changes in -02 7770 A detailed list of changes is available at the following page: 7771 http://tools.ietf.org/wg/calsify/draft-ietf-calsify-rfc2445bis/ 7772 draft-ietf-calsify-rfc2445bis-02.changes.html. 7774 a. Numerous editorial changes including the typos listed in the 7775 "RFC2445 Errata": 7776 http://www.rfc-editor.org/cgi-bin/errataSearch.pl?rfc=2445& 7777 and in the "RFC2445 Issues List": 7778 http://www.softwarestudio.org/iCal/2445Issues.html. 7780 b. Clarified line folding requirements. 7782 c. Clarified charset requirements. 7784 d. Clarified line limits requirements. 7786 e. Clarified on the use of the "LANGUAGE" parameter. 7788 f. Fixed the eventprop, todoprop and jourprop ABNF rules with 7789 respect to required properties. 7791 g. Fixed all the examples to use RFC2606-compliant FQDNs. 7793 h. Fixed the Content-ID URLs in the examples. 7795 i. Fixed the LDAP URLs in the examples. 7797 j. Moved multiple references in the Informative References section. 7799 k. Updated the Acknowledgments section. 7801 B.7. Changes in -01 7803 A detailed list of changes is available at the following page: 7804 http://tools.ietf.org/wg/calsify/draft-ietf-calsify-rfc2445bis/ 7805 draft-ietf-calsify-rfc2445bis-01.changes.html. 7807 a. Numerous editorial changes (typos, errors in examples, etc.). 7809 b. Fixed invalid media types in examples. 7811 c. Fixed the "DTSTAMP" values in the examples. 7813 d. Moved media type registration in a separate IANA Consideration 7814 section. 7816 e. Added Internationalization Considerations section. 7818 f. Added Security Considerations section. 7820 g. Updated the Acknowledgments section. 7822 Appendix C. Open issues (to be removed by RFC Editor prior to 7823 publication) 7825 C.1. introduction 7827 Type: edit 7829 bernard.desruisseaux@oracle.com (2007-02-20): The Introduction 7830 section should be updated. 7832 C.2. #issue11+4.3.10_byxxx_rule_part_examples 7834 Type: change 7836 7838 reinhold@kainhofer.com (2006-06-03): We should add more BYXXX rule 7839 parts examples. 7841 Resolution: 7843 C.3. #issue63+4.8.5.3_rdate_and_dtstart 7845 Type: change 7847 7850 bernard.desruisseaux@oracle.com (2006-11-05): We need to clarify 7851 whether RDATE can specify a value earlier in time than DTSTART. 7853 Resolution: 7855 Author's Address 7857 Bernard Desruisseaux (editor) 7858 Oracle Corporation 7859 600 blvd. de Maisonneuve West 7860 Suite 1900 7861 Montreal, QC H3A 3J2 7862 CANADA 7864 EMail: bernard.desruisseaux@oracle.com 7865 URI: http://www.oracle.com/ 7867 Full Copyright Statement 7869 Copyright (C) The IETF Trust (2007). 7871 This document is subject to the rights, licenses and restrictions 7872 contained in BCP 78, and except as set forth therein, the authors 7873 retain all their rights. 7875 This document and the information contained herein are provided on an 7876 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 7877 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 7878 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 7879 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 7880 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 7881 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 7883 Intellectual Property 7885 The IETF takes no position regarding the validity or scope of any 7886 Intellectual Property Rights or other rights that might be claimed to 7887 pertain to the implementation or use of the technology described in 7888 this document or the extent to which any license under such rights 7889 might or might not be available; nor does it represent that it has 7890 made any independent effort to identify any such rights. Information 7891 on the procedures with respect to rights in RFC documents can be 7892 found in BCP 78 and BCP 79. 7894 Copies of IPR disclosures made to the IETF Secretariat and any 7895 assurances of licenses to be made available, or the result of an 7896 attempt made to obtain a general license or permission for the use of 7897 such proprietary rights by implementers or users of this 7898 specification can be obtained from the IETF on-line IPR repository at 7899 http://www.ietf.org/ipr. 7901 The IETF invites any interested party to bring to its attention any 7902 copyrights, patents or patent applications, or other proprietary 7903 rights that may cover technology that may be required to implement 7904 this standard. Please address the information to the IETF at 7905 ietf-ipr@ietf.org. 7907 Acknowledgement 7909 Funding for the RFC Editor function is provided by the IETF 7910 Administrative Support Activity (IASA).