idnits 2.17.1 draft-ietf-calsify-rfc2445bis-01.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 16. -- Found old boilerplate from RFC 3978, Section 5.5 on line 7019. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 6996. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 7003. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 7009. ** This document has an original RFC 3978 Section 5.4 Copyright Line, instead of the newer IETF Trust Copyright according to RFC 4748. ** This document has an original RFC 3978 Section 5.5 Disclaimer, instead of the newer disclaimer which includes the IETF Trust according to RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 1 instance of lines with non-RFC2606-compliant FQDNs in the document. -- The draft header indicates that this document obsoletes RFC2445, but the abstract doesn't seem to directly say this. It does mention RFC2445 though, so this could be OK. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 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. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: The property parameter CN is for the common or displayable name associated with the calendar address; ROLE, for the intended role that the attendee will have in the calendar component; PARTSTAT, for the status of the attendee's participation; RSVP, for indicating whether the favor of a reply is requested; CUTYPE, to indicate the type of calendar user; MEMBER, to indicate the groups that the attendee belongs to; DELEGATED-TO, to indicate the calendar users that the original request was delegated to; and DELEGATED-FROM, to indicate whom the request was delegated from; SENT-BY, to indicate whom is acting on behalf of the ATTENDEE; and DIR, to indicate the URI that points to the directory information corresponding to the attendee. These property parameters can be specified on an "ATTENDEE" property in either a "VEVENT", "VTODO" or "VJOURNAL" calendar component. They MUST not be specified in an "ATTENDEE" property in a "VFREEBUSY" or "VALARM" calendar component. If the LANGUAGE property parameter is specified, the identified language applies to the CN parameter. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 22, 2006) is 6489 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) == Missing Reference: 'MIME-DIR' is mentioned on line 4847, but not defined == Outdated reference: A later version (-10) exists of draft-ietf-calsify-2446bis-01 == Outdated reference: A later version (-11) exists of draft-ietf-calsify-rfc2447bis-02 ** Obsolete normative reference: RFC 822 (Obsoleted by RFC 2822) ** Obsolete normative reference: RFC 1738 (Obsoleted by RFC 4248, RFC 4266) ** Obsolete normative reference: RFC 1766 (Obsoleted by RFC 3066, RFC 3282) ** Obsolete normative reference: RFC 2234 (Obsoleted by RFC 4234) ** Obsolete normative reference: RFC 2279 (Obsoleted by RFC 3629) ** Obsolete normative reference: RFC 2425 (Obsoleted by RFC 6350) ** Obsolete normative reference: RFC 2426 (Obsoleted by RFC 6350) -- Possible downref: Non-RFC (?) normative reference: ref. 'TZDB' -- Possible downref: Non-RFC (?) normative reference: ref. 'VCAL' == Outdated reference: A later version (-15) exists of draft-dusseault-caldav-12 Summary: 11 errors (**), 0 flaws (~~), 10 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) June 22, 2006 5 Expires: December 24, 2006 7 Internet Calendaring and Scheduling Core Object Specification 8 (iCalendar) 9 draft-ietf-calsify-rfc2445bis-01 11 Status of this Memo 13 By submitting this Internet-Draft, each author represents that any 14 applicable patent or other IPR claims of which he or she is aware 15 have been or will be disclosed, and any of which he or she becomes 16 aware will be disclosed, in accordance with Section 6 of BCP 79. 18 Internet-Drafts are working documents of the Internet Engineering 19 Task Force (IETF), its areas, and its working groups. Note that 20 other groups may also distribute working documents as Internet- 21 Drafts. 23 Internet-Drafts are draft documents valid for a maximum of six months 24 and may be updated, replaced, or obsoleted by other documents at any 25 time. It is inappropriate to use Internet-Drafts as reference 26 material or to cite them other than as "work in progress." 28 The list of current Internet-Drafts can be accessed at 29 http://www.ietf.org/ietf/1id-abstracts.txt. 31 The list of Internet-Draft Shadow Directories can be accessed at 32 http://www.ietf.org/shadow.html. 34 This Internet-Draft will expire on December 24, 2006. 36 Copyright Notice 38 Copyright (C) The Internet Society (2006). 40 Abstract 42 There is a clear need to provide and deploy interoperable calendaring 43 and scheduling services for the Internet. Current group scheduling 44 and Personal Information Management (PIM) products are being extended 45 for use across the Internet, today, in proprietary ways. This memo 46 has been defined to provide the definition of a common format for 47 openly exchanging calendaring and scheduling information across the 48 Internet. 50 This memo is formatted as a registration for a MIME media type . 51 However, the format in this memo is equally applicable for use 52 outside of a MIME message content type. 54 The proposed media type value is 'text/calendar'. This string would 55 label a media type containing calendaring and scheduling information 56 encoded as text characters formatted in a manner outlined below. 58 This MIME media type provides a standard content type for capturing 59 calendar event, to-do and journal entry information. It also can be 60 used to convey free/busy time information. The content type is 61 suitable as a MIME message entity that can be transferred over MIME 62 based email systems, using HTTP or some other Internet transport. In 63 addition, the content type is useful as an object for interactions 64 between desktop applications using the operating system clipboard, 65 drag/drop or file systems capabilities. 67 This memo is based on the earlier work of the vCalendar specification 68 for the exchange of personal calendaring and scheduling information. 69 In order to avoid confusion with this referenced work, this memo is 70 to be known as the iCalendar specification. 72 This memo defines the format for specifying iCalendar object methods. 73 An iCalendar object method is a set of usage constraints for the 74 iCalendar object. For example, these methods might define scheduling 75 messages that request an event be scheduled, reply to an event 76 request, send a cancellation notice for an event, modify or replace 77 the definition of an event, provide a counter proposal for an 78 original event request, delegate an event request to another 79 individual, request free or busy time, reply to a free or busy time 80 request, or provide similar scheduling messages for a to-do or 81 journal entry calendar component. The iCalendar Transport-indendent 82 Interoperability Protocol (iTIP) is one such scheduling protocol. 84 Editorial Note 86 This document is a product of the Calendaring and Scheduling 87 Standards Simplification (Calsify) working group of the Internet 88 Engineering Task Force. Comments on this draft are welcomed, and 89 should be addressed to the ietf-calsify@osafoundation.org [1] mailing 90 list. 92 A detailed list of changes is available at the following page: 93 http://www.geocities.com/bdesruisseaux/calsify/ 94 draft-ietf-calsify-rfc2445bis-01.html. 96 Table of Contents 98 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 99 2. Basic Grammar and Conventions . . . . . . . . . . . . . . . . 6 100 2.1. Formatting Conventions . . . . . . . . . . . . . . . . . 7 101 2.2. Related Memos . . . . . . . . . . . . . . . . . . . . . . 8 102 2.3. International Considerations . . . . . . . . . . . . . . 8 103 3. iCalendar Object Specification . . . . . . . . . . . . . . . 9 104 3.1. Content Lines . . . . . . . . . . . . . . . . . . . . . . 9 105 3.1.1. List and Field Separators . . . . . . . . . . . . . . 11 106 3.1.2. Multiple Values . . . . . . . . . . . . . . . . . . . 12 107 3.1.3. Binary Content . . . . . . . . . . . . . . . . . . . 12 108 3.1.4. Character Set . . . . . . . . . . . . . . . . . . . . 13 109 3.2. Property Parameters . . . . . . . . . . . . . . . . . . . 13 110 3.2.1. Alternate Text Representation . . . . . . . . . . . . 14 111 3.2.2. Common Name . . . . . . . . . . . . . . . . . . . . . 15 112 3.2.3. Calendar User Type . . . . . . . . . . . . . . . . . 16 113 3.2.4. Delegators . . . . . . . . . . . . . . . . . . . . . 16 114 3.2.5. Delegatees . . . . . . . . . . . . . . . . . . . . . 17 115 3.2.6. Directory Entry Reference . . . . . . . . . . . . . . 17 116 3.2.7. Inline Encoding . . . . . . . . . . . . . . . . . . . 18 117 3.2.8. Format Type . . . . . . . . . . . . . . . . . . . . . 19 118 3.2.9. Free/Busy Time Type . . . . . . . . . . . . . . . . . 19 119 3.2.10. Language . . . . . . . . . . . . . . . . . . . . . . 20 120 3.2.11. Group or List Membership . . . . . . . . . . . . . . 21 121 3.2.12. Participation Status . . . . . . . . . . . . . . . . 21 122 3.2.13. Recurrence Identifier Range . . . . . . . . . . . . . 23 123 3.2.14. Alarm Trigger Relationship . . . . . . . . . . . . . 23 124 3.2.15. Relationship Type . . . . . . . . . . . . . . . . . . 24 125 3.2.16. Participation Role . . . . . . . . . . . . . . . . . 25 126 3.2.17. RSVP Expectation . . . . . . . . . . . . . . . . . . 25 127 3.2.18. Sent By . . . . . . . . . . . . . . . . . . . . . . . 26 128 3.2.19. Time Zone Identifier . . . . . . . . . . . . . . . . 26 129 3.2.20. Value Data Types . . . . . . . . . . . . . . . . . . 28 130 3.3. Property Value Data Types . . . . . . . . . . . . . . . . 29 131 3.3.1. Binary . . . . . . . . . . . . . . . . . . . . . . . 29 132 3.3.2. Boolean . . . . . . . . . . . . . . . . . . . . . . . 30 133 3.3.3. Calendar User Address . . . . . . . . . . . . . . . . 30 134 3.3.4. Date . . . . . . . . . . . . . . . . . . . . . . . . 31 135 3.3.5. Date-Time . . . . . . . . . . . . . . . . . . . . . . 31 136 3.3.6. Duration . . . . . . . . . . . . . . . . . . . . . . 34 137 3.3.7. Float . . . . . . . . . . . . . . . . . . . . . . . . 34 138 3.3.8. Integer . . . . . . . . . . . . . . . . . . . . . . . 35 139 3.3.9. Period of Time . . . . . . . . . . . . . . . . . . . 35 140 3.3.10. Recurrence Rule . . . . . . . . . . . . . . . . . . . 37 141 3.3.11. Text . . . . . . . . . . . . . . . . . . . . . . . . 42 142 3.3.12. Time . . . . . . . . . . . . . . . . . . . . . . . . 43 143 3.3.13. URI . . . . . . . . . . . . . . . . . . . . . . . . . 46 144 3.3.14. UTC Offset . . . . . . . . . . . . . . . . . . . . . 46 145 3.4. iCalendar Object . . . . . . . . . . . . . . . . . . . . 47 146 3.5. Property . . . . . . . . . . . . . . . . . . . . . . . . 48 147 3.6. Calendar Components . . . . . . . . . . . . . . . . . . . 48 148 3.6.1. Event Component . . . . . . . . . . . . . . . . . . . 49 149 3.6.2. To-do Component . . . . . . . . . . . . . . . . . . . 52 150 3.6.3. Journal Component . . . . . . . . . . . . . . . . . . 54 151 3.6.4. Free/Busy Component . . . . . . . . . . . . . . . . . 55 152 3.6.5. Time Zone Component . . . . . . . . . . . . . . . . . 58 153 3.6.6. Alarm Component . . . . . . . . . . . . . . . . . . . 66 154 3.7. Calendar Properties . . . . . . . . . . . . . . . . . . . 72 155 3.7.1. Calendar Scale . . . . . . . . . . . . . . . . . . . 72 156 3.7.2. Method . . . . . . . . . . . . . . . . . . . . . . . 73 157 3.7.3. Product Identifier . . . . . . . . . . . . . . . . . 74 158 3.7.4. Version . . . . . . . . . . . . . . . . . . . . . . . 75 159 3.8. Component Properties . . . . . . . . . . . . . . . . . . 76 160 3.8.1. Descriptive Component Properties . . . . . . . . . . 76 161 3.8.1.1. Attachment . . . . . . . . . . . . . . . . . . . 76 162 3.8.1.2. Categories . . . . . . . . . . . . . . . . . . . 77 163 3.8.1.3. Classification . . . . . . . . . . . . . . . . . 78 164 3.8.1.4. Comment . . . . . . . . . . . . . . . . . . . . . 79 165 3.8.1.5. Description . . . . . . . . . . . . . . . . . . . 80 166 3.8.1.6. Geographic Position . . . . . . . . . . . . . . . 81 167 3.8.1.7. Location . . . . . . . . . . . . . . . . . . . . 83 168 3.8.1.8. Percent Complete . . . . . . . . . . . . . . . . 84 169 3.8.1.9. Priority . . . . . . . . . . . . . . . . . . . . 85 170 3.8.1.10. Resources . . . . . . . . . . . . . . . . . . . . 87 171 3.8.1.11. Status . . . . . . . . . . . . . . . . . . . . . 87 172 3.8.1.12. Summary . . . . . . . . . . . . . . . . . . . . . 89 173 3.8.2. Date and Time Component Properties . . . . . . . . . 90 174 3.8.2.1. Date/Time Completed . . . . . . . . . . . . . . . 90 175 3.8.2.2. Date/Time End . . . . . . . . . . . . . . . . . . 91 176 3.8.2.3. Date/Time Due . . . . . . . . . . . . . . . . . . 92 177 3.8.2.4. Date/Time Start . . . . . . . . . . . . . . . . . 93 178 3.8.2.5. Duration . . . . . . . . . . . . . . . . . . . . 94 179 3.8.2.6. Free/Busy Time . . . . . . . . . . . . . . . . . 95 180 3.8.2.7. Time Transparency . . . . . . . . . . . . . . . . 96 181 3.8.3. Time Zone Component Properties . . . . . . . . . . . 97 182 3.8.3.1. Time Zone Identifier . . . . . . . . . . . . . . 98 183 3.8.3.2. Time Zone Name . . . . . . . . . . . . . . . . . 99 184 3.8.3.3. Time Zone Offset From . . . . . . . . . . . . . . 100 185 3.8.3.4. Time Zone Offset To . . . . . . . . . . . . . . . 101 186 3.8.3.5. Time Zone URL . . . . . . . . . . . . . . . . . . 101 187 3.8.4. Relationship Component Properties . . . . . . . . . . 102 188 3.8.4.1. Attendee . . . . . . . . . . . . . . . . . . . . 102 189 3.8.4.2. Contact . . . . . . . . . . . . . . . . . . . . . 105 190 3.8.4.3. Organizer . . . . . . . . . . . . . . . . . . . . 106 191 3.8.4.4. Recurrence ID . . . . . . . . . . . . . . . . . . 108 192 3.8.4.5. Related To . . . . . . . . . . . . . . . . . . . 110 193 3.8.4.6. Uniform Resource Locator . . . . . . . . . . . . 112 194 3.8.4.7. Unique Identifier . . . . . . . . . . . . . . . . 112 195 3.8.5. Recurrence Component Properties . . . . . . . . . . . 114 196 3.8.5.1. Exception Date/Times . . . . . . . . . . . . . . 114 197 3.8.5.2. Exception Rule . . . . . . . . . . . . . . . . . 115 198 3.8.5.3. Recurrence Date/Times . . . . . . . . . . . . . . 117 199 3.8.5.4. Recurrence Rule . . . . . . . . . . . . . . . . . 118 200 3.8.6. Alarm Component Properties . . . . . . . . . . . . . 127 201 3.8.6.1. Action . . . . . . . . . . . . . . . . . . . . . 128 202 3.8.6.2. Repeat Count . . . . . . . . . . . . . . . . . . 128 203 3.8.6.3. Trigger . . . . . . . . . . . . . . . . . . . . . 129 204 3.8.7. Change Management Component Properties . . . . . . . 131 205 3.8.7.1. Date/Time Created . . . . . . . . . . . . . . . . 132 206 3.8.7.2. Date/Time Stamp . . . . . . . . . . . . . . . . . 132 207 3.8.7.3. Last Modified . . . . . . . . . . . . . . . . . . 133 208 3.8.7.4. Sequence Number . . . . . . . . . . . . . . . . . 134 209 3.8.8. Miscellaneous Component Properties . . . . . . . . . 136 210 3.8.8.1. Non-standard Properties . . . . . . . . . . . . . 136 211 3.8.8.2. Request Status . . . . . . . . . . . . . . . . . 137 212 4. iCalendar Object Examples . . . . . . . . . . . . . . . . . . 140 213 5. Recommended Practices . . . . . . . . . . . . . . . . . . . . 144 214 6. Registration of Content Type Elements . . . . . . . . . . . . 145 215 6.1. Registration of New and Modified iCalendar Object 216 Methods . . . . . . . . . . . . . . . . . . . . . . . . . 145 217 6.2. Registration of New Properties . . . . . . . . . . . . . 145 218 6.2.1. Define the property . . . . . . . . . . . . . . . . . 146 219 6.2.2. Post the Property definition . . . . . . . . . . . . 147 220 6.2.3. Allow a comment period . . . . . . . . . . . . . . . 147 221 6.2.4. Submit the property for approval . . . . . . . . . . 147 222 6.3. Property Change Control . . . . . . . . . . . . . . . . . 148 223 7. Internationalization Considerations . . . . . . . . . . . . . 148 224 8. Security Considerations . . . . . . . . . . . . . . . . . . . 148 225 9. IANA Consideration . . . . . . . . . . . . . . . . . . . . . 149 226 9.1. Media Type Registration Information . . . . . . . . . . . 149 227 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 152 228 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 152 229 11.1. Normative References . . . . . . . . . . . . . . . . . . 152 230 11.2. Informative References . . . . . . . . . . . . . . . . . 153 231 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 155 232 Intellectual Property and Copyright Statements . . . . . . . . . 156 234 1. Introduction 236 The use of calendaring and scheduling has grown considerably in the 237 last decade. Enterprise and inter-enterprise business has become 238 dependent on rapid scheduling of events and actions using this 239 information technology. However, the longer term growth of 240 calendaring and scheduling, is currently limited by the lack of 241 Internet standards for the message content types that are central to 242 these knowledgeware applications. This memo is intended to progress 243 the level of interoperability possible between dissimilar calendaring 244 and scheduling applications. This memo defines a MIME content type 245 for exchanging electronic calendaring and scheduling information. 246 The Internet Calendaring and Scheduling Core Object Specification, or 247 iCalendar, allows for the capture and exchange of information 248 normally stored within a calendaring and scheduling application; such 249 as a Personal Information Manager (PIM) or a Group Scheduling 250 product. 252 The iCalendar format is suitable as an exchange format between 253 applications or systems. The format is defined in terms of a MIME 254 content type. This will enable the object to be exchanged using 255 several transports, including but not limited to SMTP, HTTP, a file 256 system, desktop interactive protocols such as the use of a memory- 257 based clipboard or drag/drop interactions, point-to-point 258 asynchronous communication, wired-network transport, or some form of 259 unwired transport such as infrared might also be used. 261 The memo also provides for the definition of iCalendar object methods 262 that will map this content type to a set of messages for supporting 263 calendaring and scheduling operations such as requesting, replying 264 to, modifying, and canceling meetings or appointments, to-dos and 265 journal entries. The iCalendar object methods can be used to define 266 other calendaring and scheduling operations such a requesting for and 267 replying with free/busy time data. Such a scheduling protocol is 268 defined in the iCalendar Transport-independent Interoperability 269 Protocol (iTIP) defined in [I-D.ietf-calsify-2446bis]. 271 The memo also includes a formal grammar for the content type based on 272 the Internet ABNF defined in [RFC2234]. This ABNF is required for 273 the implementation of parsers and to serve as the definitive 274 reference when ambiguities or questions arise in interpreting the 275 descriptive prose definition of the memo. 277 2. Basic Grammar and Conventions 279 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 280 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" and 281 "OPTIONAL" in this document are to be interoperated as described in 282 [RFC2119]. 284 This memo makes use of both a descriptive prose and a more formal 285 notation for defining the calendaring and scheduling format. 287 The notation used in this memo is the ABNF notation of [RFC2234]. 288 Readers intending on implementing this format defined in this memo 289 should be familiar with this notation in order to properly interpret 290 the specifications of this memo. 292 All numeric values used in this memo are given in decimal notation. 294 All names of properties, property parameters, enumerated property 295 values and property parameter values are case-insensitive. However, 296 all other property values are case-sensitive, unless otherwise 297 stated. 299 Note: All indented editorial notes, such as this one, are intended 300 to provide the reader with additional information. The 301 information is not essential to the building of an implementation 302 conformant with this memo. The information is provided to 303 highlight a particular feature or characteristic of the memo. 305 The format for the iCalendar object is based on the syntax of the 306 [RFC2425] content type. While the iCalendar object is not a profile 307 of the [RFC2425] content type, it does reuse a number of the elements 308 from the [RFC2425] specification. 310 2.1. Formatting Conventions 312 The mechanisms defined in this memo are defined in prose. Many of 313 the terms used to describe these have common usage that is different 314 than the standards usage of this memo. In order to reference within 315 this memo elements of the calendaring and scheduling model, core 316 object (this memo) or interoperability protocol [I-D.ietf-calsify- 317 2446bis] some formatting conventions have been used. Calendaring and 318 scheduling roles are referred to in quoted-strings of text with the 319 first character of each word in upper case. For example, "Organizer" 320 refers to a role of a "Calendar User" within the scheduling protocol 321 defined by [I-D.ietf-calsify-2446bis]. Calendar components defined 322 by this memo are referred to with capitalized, quoted-strings of 323 text. All calendar components start with the letter "V". For 324 example, "VEVENT" refers to the event calendar component, "VTODO" 325 refers to the to-do calendar component and "VJOURNAL" refers to the 326 daily journal calendar component. Scheduling methods defined by iTIP 327 [I-D.ietf-calsify-2446bis] are referred to with capitalized, quoted- 328 strings of text. For example, "REQUEST" refers to the method for 329 requesting a scheduling calendar component be created or modified, 330 "REPLY" refers to the method a recipient of a request uses to update 331 their status with the "Organizer" of the calendar component. 333 The properties defined by this memo are referred to with capitalized, 334 quoted-strings of text, followed by the word "property". For 335 example, "ATTENDEE" property refers to the iCalendar property used to 336 convey the calendar address of a calendar user. Property parameters 337 defined by this memo are referred to with lowercase, quoted-strings 338 of text, followed by the word "parameter". For example, "value" 339 parameter refers to the iCalendar property parameter used to override 340 the default data type for a property value. Enumerated values 341 defined by this memo are referred to with capitalized text, either 342 alone or followed by the word "value". For example, the "MINUTELY" 343 value can be used with the "FREQ" component of the "RECUR" data type 344 to specify repeating components based on an interval of one minute or 345 more. 347 2.2. Related Memos 349 Implementers will need to be familiar with several other memos that, 350 along with this memo, form a framework for Internet calendaring and 351 scheduling standards. This memo specifies a core specification of 352 objects, data types, properties and property parameters. 354 o iTIP [I-D.ietf-calsify-2446bis] specifies an interoperability 355 protocol for scheduling between different implementations; 357 o iMIP [I-D.ietf-calsify-rfc2447bis] specifies an Internet email 358 binding for [I-D.ietf-calsify-2446bis]. 360 This memo does not attempt to repeat the specification of concepts or 361 definitions from these other memos. Where possible, references are 362 made to the memo that provides for the specification of these 363 concepts or definitions. 365 2.3. International Considerations 367 In the rest of this document, descriptions of characters are of the 368 form "character name (codepoint)", where "codepoint" is from the US- 369 ASCII character set. The "character name" is the authoritative 370 description; (codepoint) is a reference to that character in US-ASCII 371 or US-ASCII compatible sets (for example the ISO-8859-x family, UTF- 372 8, ISO-2022-xx, KOI8-R). If a non-US-ASCII compatible character set 373 is used, appropriate code-point from that character set MUST be 374 chosen instead. Use of non-US-ASCII-compatible character sets is NOT 375 recommended. 377 3. iCalendar Object Specification 379 The following sections define the details of a Calendaring and 380 Scheduling Core Object Specification. This information is intended 381 to be an integral part of the MIME content type registration. In 382 addition, this information can be used independent of such content 383 registration. In particular, this memo has direct applicability for 384 use as a calendaring and scheduling exchange format in file-, memory- 385 or network-based transport mechanisms. 387 3.1. Content Lines 389 The iCalendar object is organized into individual lines of text, 390 called content lines. Content lines are delimited by a line break, 391 which is a CRLF sequence (US-ASCII decimal 13, followed by US-ASCII 392 decimal 10). 394 Lines of text SHOULD NOT be longer than 75 octets, excluding the line 395 break. Long content lines SHOULD be split into a multiple line 396 representations using a line "folding" technique. That is, a long 397 line can be split between any two characters by inserting a CRLF 398 immediately followed by a single linear white space character (i.e., 399 SPACE, US-ASCII decimal 32 or HTAB, US-ASCII decimal 9). Any 400 sequence of CRLF followed immediately by a single linear white space 401 character is ignored (i.e., removed) when processing the content 402 type. 404 For example the line: 406 DESCRIPTION:This is a long description that exists on a long line. 408 Can be represented as: 410 DESCRIPTION:This is a lo 411 ng description 412 that exists on a long line. 414 The process of moving from this folded multiple line representation 415 to its single line representation is called "unfolding". Unfolding 416 is accomplished by removing the CRLF character and the linear white 417 space character that immediately follows. 419 When parsing a content line, folded lines MUST first be unfolded 420 according to the unfolding procedure described above. When 421 generating a content line, lines longer than 75 octets SHOULD be 422 folded according to the folding procedure described above. 424 The content information associated with an iCalendar object is 425 formatted using a syntax similar to that defined by [RFC2425]. That 426 is, the content information consists of CRLF-separated content lines. 428 The following notation defines the lines of content in an iCalendar 429 object: 431 contentline = name *(";" param ) ":" value CRLF 432 ; This ABNF is just a general definition for an initial parsing 433 ; of the content line into its property name, parameter list, 434 ; and value string 436 ; When parsing a content line, folded lines MUST first 437 ; be unfolded according to the unfolding procedure 438 ; described above. When generating a content line, lines 439 ; longer than 75 octets SHOULD be folded according to 440 ; the folding procedure described above. 442 name = x-name / iana-token 444 iana-token = 1*(ALPHA / DIGIT / "-") 445 ; iCalendar identifier registered with IANA 447 x-name = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-") 448 ; Reserved for experimental use. 450 vendorid = 3*(ALPHA / DIGIT) ;Vendor identification 452 param = param-name "=" param-value 453 *("," param-value) 454 ; Each property defines the specific ABNF for the parameters 455 ; allowed on the property. Refer to specific properties for 456 ; precise parameter ABNF. 458 param-name = iana-token / x-token 460 param-value = paramtext / quoted-string 462 paramtext = *SAFE-CHAR 464 value = *VALUE-CHAR 466 quoted-string = DQUOTE *QSAFE-CHAR DQUOTE 468 NON-US-ASCII = %x80-F8 469 ; Use restricted by charset parameter 470 ; on outer MIME object (UTF-8 preferred) 472 QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-US-ASCII 473 ; Any character except CTLs and DQUOTE 475 SAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E 476 / NON-US-ASCII 477 ; Any character except CTLs, DQUOTE, ";", ":", "," 479 VALUE-CHAR = WSP / %x21-7E / NON-US-ASCII 480 ; Any textual character 482 CR = %x0D 483 ; carriage return 485 LF = %x0A 486 ; line feed 488 CRLF = CR LF 489 ; Internet standard newline 491 CTL = %x00-08 / %x0A-1F / %x7F 492 ; Controls 494 ALPHA = %x41-5A / %x61-7A ; A-Z / a-z 496 DIGIT = %x30-39 497 ; 0-9 499 DQUOTE = %x22 500 ; Quotation Mark 502 WSP = SPACE / HTAB 504 SPACE = %x20 506 HTAB = %x09 508 The property value component of a content line has a format that is 509 property specific. Refer to the section describing each property for 510 a definition of this format. 512 All names of properties, property parameters, enumerated property 513 values and property parameter values are case-insensitive. However, 514 all other property values are case-sensitive, unless otherwise 515 stated. 517 3.1.1. List and Field Separators 519 Some properties and parameters allow a list of values. Values in a 520 list of values MUST be separated by a COMMA character (US-ASCII 521 decimal 44). There is no significance to the order of values in a 522 list. For those parameter values (such as those that specify URI 523 values) that are specified in quoted-strings, the individual quoted- 524 strings are separated by a COMMA character (US-ASCII decimal 44). 526 Some property values are defined in terms of multiple parts. These 527 structured property values MUST have their value parts separated by a 528 SEMICOLON character (US-ASCII decimal 59). 530 Some properties allow a list of parameters. Each property parameter 531 in a list of property parameters MUST be separated by a SEMICOLON 532 character (US-ASCII decimal 59). 534 Property parameters with values containing a COLON, a SEMICOLON or a 535 COMMA character MUST be placed in quoted text. 537 For example, in the following properties a SEMICOLON is used to 538 separate property parameters from each other, and a COMMA is used to 539 separate property values in a value list. 541 ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:MAILTO: 542 jsmith@host.com 544 RDATE;VALUE=DATE:19970304,19970504,19970704,19970904 546 3.1.2. Multiple Values 548 Some properties defined in the iCalendar object can have multiple 549 values. The general rule for encoding multi-valued items is to 550 simply create a new content line for each value, including the 551 property name. However, it should be noted that some properties 552 support encoding multiple values in a single property by separating 553 the values with a COMMA character (US-ASCII decimal 44). Individual 554 property definitions should be consulted for determining whether a 555 specific property allows multiple values and in which of these two 556 forms. 558 3.1.3. Binary Content 560 Binary content information in an iCalendar object SHOULD be 561 referenced using a URI within a property value. That is the binary 562 content information SHOULD be placed in an external MIME entity that 563 can be referenced by a URI from within the iCalendar object. In 564 applications where this is not feasible, binary content information 565 can be included within an iCalendar object, but only after first 566 encoding it into text using the "BASE64" encoding method defined in 567 [RFC2045]. Inline binary contact SHOULD only be used in applications 568 whose special circumstances demand that an iCalendar object be 569 expressed as a single entity. A property containing inline binary 570 content information MUST specify the "ENCODING" property parameter. 571 Binary content information placed external to the iCalendar object 572 MUST be referenced by a uniform resource identifier (URI). 574 The following example specifies an "ATTACH" property that references 575 an attachment external to the iCalendar object with a URI reference: 577 ATTACH:http://example.com/public/quarterly-report.doc 579 The following example specifies an "ATTACH" property with inline 580 binary encoded content information: 582 ATTACH;FMTTYPE=image/basic;ENCODING=BASE64;VALUE=BINARY: 583 MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1U 584 EBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIE 585 <...remainder of "BASE64" encoded binary data...> 587 3.1.4. Character Set 589 There is not a property parameter to declare the character set used 590 in a property value. The default character set for an iCalendar 591 object is UTF-8 as defined in [RFC2279]. 593 The "charset" Content-Type parameter can be used in MIME transports 594 to specify any other IANA registered character set. 596 3.2. Property Parameters 598 A property can have attributes associated with it. These "property 599 parameters" contain meta-information about the property or the 600 property value. Property parameters are provided to specify such 601 information as the location of an alternate text representation for a 602 property value, the language of a text property value, the data type 603 of the property value and other attributes. 605 Property parameter values that contain the COLON (US-ASCII decimal 606 58), SEMICOLON (US-ASCII decimal 59) or COMMA (US-ASCII decimal 44) 607 character separators MUST be specified as quoted-string text values. 608 Property parameter values MUST NOT contain the DQUOTE (US-ASCII 609 decimal 22) character. The DQUOTE (US-ASCII decimal 22) character is 610 used as a delimiter for parameter values that contain restricted 611 characters or URI text. For example: 613 DESCRIPTION;ALTREP="http://www.wiz.org":The Fall'98 Wild Wizards 614 Conference - - Las Vegas, NV, USA 616 Property parameter values that are not in quoted strings are case 617 insensitive. 619 The general property parameters defined by this memo are defined by 620 the following notation: 622 parameter = altrepparam ; Alternate text representation 623 / cnparam ; Common name 624 / cutypeparam ; Calendar user type 625 / delfromparam ; Delegator 626 / deltoparam ; Delegatee 627 / dirparam ; Directory entry 628 / encodingparam ; Inline encoding 629 / fmttypeparam ; Format type 630 / fbtypeparam ; Free/busy time type 631 / languageparam ; Language for text 632 / memberparam ; Group or list membership 633 / partstatparam ; Participation status 634 / rangeparam ; Recurrence identifier range 635 / trigrelparam ; Alarm trigger relationship 636 / reltypeparam ; Relationship type 637 / roleparam ; Participation role 638 / rsvpparam ; RSVP expectation 639 / sentbyparam ; Sent by 640 / tzidparam ; Reference to time zone object 641 / valuetypeparam ; Property value data type 642 / ianaparam 643 ; Some other IANA registered iCalendar parameter. 644 / xparam 645 ; A non-standard, experimental parameter. 647 ianaparam = iana-token "=" param-value *("," param-value) 649 xparam = x-name "=" param-value *("," param-value) 651 3.2.1. Alternate Text Representation 653 Parameter Name: ALTREP 655 Purpose: To specify an alternate text representation for the property 656 value. 658 Format Definition: The property parameter is defined by the following 659 notation: 661 altrepparam = "ALTREP" "=" DQUOTE uri DQUOTE 663 Description: The parameter specifies a URI that points to an 664 alternate representation for a textual property value. A property 665 specifying this parameter MUST also include a value that reflects 666 the default representation of the text value. The individual URI 667 parameter values MUST each be specified in a quoted-string. 669 Example: 671 DESCRIPTION;ALTREP="CID:":Project 672 XYZ Review Meeting will include the following agenda items: (a) 673 Market Overview, (b) Finances, (c) Project Management 675 The "ALTREP" property parameter value might point to a "text/html" 676 content portion. 678 Content-Type:text/html 679 Content-Id: 681 682

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

  1. Market 684 Overview
  2. Finances
  3. Project Management

685 687 3.2.2. Common Name 689 Parameter Name: CN 691 Purpose: To specify the common name to be associated with the 692 calendar user specified by the property. 694 Format Definition: The property parameter is defined by the following 695 notation: 697 cnparam = "CN" "=" param-value 699 Description: This parameter can be specified on properties with a 700 CAL-ADDRESS value type. The parameter specifies the common name 701 to be associated with the calendar user specified by the property. 702 The parameter value is text. The parameter value can be used for 703 display text to be associated with the calendar address specified 704 by the property. 706 Example: 708 ORGANIZER;CN="John Smith":MAILTO:jsmith@host.com 710 3.2.3. Calendar User Type 712 Parameter Name: CUTYPE 714 Purpose: To specify the type of calendar user specified by the 715 property. 717 Format Definition: The property parameter is defined by the following 718 notation: 720 cutypeparam = "CUTYPE" "=" 721 ("INDIVIDUAL" ; An individual 722 / "GROUP" ; A group of individuals 723 / "RESOURCE" ; A physical resource 724 / "ROOM" ; A room resource 725 / "UNKNOWN" ; Otherwise not known 726 / x-name ; Experimental type 727 / iana-token) ; Other IANA registered 728 ; type 729 ; Default is INDIVIDUAL 731 Description: This parameter can be specified on properties with a 732 CAL-ADDRESS value type. The parameter identifies the type of 733 calendar user specified by the property. If not specified on a 734 property that allows this parameter, the default is INDIVIDUAL. 736 Example: 738 ATTENDEE;CUTYPE=GROUP:MAILTO:ietf-calsch@imc.org 740 3.2.4. Delegators 742 Parameter Name: DELEGATED-FROM 744 Purpose: To specify the calendar users that have delegated their 745 participation to the calendar user specified by the property. 747 Format Definition: The property parameter is defined by the following 748 notation: 750 delfromparam = "DELEGATED-FROM" "=" DQUOTE cal-address DQUOTE 751 *("," DQUOTE cal-address DQUOTE) 753 Description: This parameter can be specified on properties with a 754 CAL-ADDRESS value type. This parameter can be specified on a 755 property that has a value type of calendar address. This 756 parameter specifies those calendar users that have delegated their 757 participation in a group scheduled event or to-do to the calendar 758 user specified by the property. The value MUST be a MAILTO URI as 759 defined in [RFC1738]. The individual calendar address parameter 760 values MUST each be specified in a quoted-string. 762 Example: 764 ATTENDEE;DELEGATED-FROM="MAILTO:jsmith@host.com":MAILTO: 765 jdoe@host.com 767 3.2.5. Delegatees 769 Parameter Name: DELEGATED-TO 771 Purpose: To specify the calendar users to whom the calendar user 772 specified by the property has delegated participation. 774 Format Definition: The property parameter is defined by the following 775 notation: 777 deltoparam = "DELEGATED-TO" "=" DQUOTE cal-address DQUOTE 778 *("," DQUOTE cal-address DQUOTE) 780 Description: This parameter can be specified on properties with a 781 CAL-ADDRESS value type. This parameter specifies those calendar 782 users whom have been delegated participation in a group scheduled 783 event or to-do by the calendar user specified by the property. 784 The value MUST be a MAILTO URI as defined in [RFC1738]. The 785 individual calendar address parameter values MUST each be 786 specified in a quoted-string. 788 Example: 790 ATTENDEE;DELEGATED-TO="MAILTO:jdoe@host.com","MAILTO:jqpublic@ 791 host.com":MAILTO:jsmith@host.com 793 3.2.6. Directory Entry Reference 795 Parameter Name: DIR 797 Purpose: To specify reference to a directory entry associated with 798 the calendar user specified by the property. 800 Format Definition: The property parameter is defined by the following 801 notation: 803 dirparam = "DIR" "=" DQUOTE uri DQUOTE 805 Description: This parameter can be specified on properties with a 806 CAL-ADDRESS value type. The parameter specifies a reference to 807 the directory entry associated with the calendar user specified by 808 the property. The parameter value is a URI. The individual URI 809 parameter values MUST each be specified in a quoted-string. 811 Example: 813 ORGANIZER;DIR="ldap://host.com:6666/o=eDABC%20Industries,c=3DUS?? 814 (cn=3DBJim%20Dolittle)":MAILTO:jimdo@host1.com 816 3.2.7. Inline Encoding 818 Parameter Name: ENCODING 820 Purpose: To specify an alternate inline encoding for the property 821 value. 823 Format Definition: The property parameter is defined by the following 824 notation: 826 encodingparam = "ENCODING" "=" 827 ("8BIT" 828 ; "8bit" text encoding is defined in [RFC2045] 829 / "BASE64" 830 ; "BASE64" binary encoding format is defined in [RFC2045] 831 / iana-token 832 ; Some other IANA registered iCalendar encoding type 833 / x-name) 834 ; A non-standard, experimental encoding type 836 Description: The property parameter identifies the inline encoding 837 used in a property value. The default encoding is "8BIT", 838 corresponding to a property value consisting of text. The 839 "BASE64" encoding type corresponds to a property value encoded 840 using the "BASE64" encoding defined in [RFC2045]. 842 If the value type parameter is ";VALUE=BINARY", then the inline 843 encoding parameter MUST be specified with the value 844 ";ENCODING=BASE64". 846 Example: 848 ATTACH;FMTYPE=IMAGE/JPEG;ENCODING=BASE64;VALUE=BINARY:MIICajC 849 CAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDA 850 qBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRw 851 <...remainder of "BASE64" encoded binary data...> 853 3.2.8. Format Type 855 Parameter Name: FMTTYPE 857 Purpose: To specify the content type of a referenced object. 859 Format Definition: The property parameter is defined by the following 860 notation: 862 fmttypeparam = "FMTTYPE" "=" iana-token 863 ; A IANA registered content type 864 / x-name 865 ; A non-standard content type 867 Description: This parameter can be specified on properties that are 868 used to reference an object. The parameter specifies the content 869 type of the referenced object. For example, on the "ATTACH" 870 property, a FTP type URI value does not, by itself, necessarily 871 convey the type of content associated with the resource. The 872 parameter value MUST be the TEXT for either an IANA registered 873 content type or a non-standard content type. 875 Example: 877 ATTACH;FMTTYPE=application/msword:ftp://domain.com/pub/docs/ 878 agenda.doc 880 3.2.9. Free/Busy Time Type 882 Parameter Name: FBTYPE 884 Purpose: To specify the free or busy time type. 886 Format Definition: The property parameter is defined by the following 887 notation: 889 fbtypeparam = "FBTYPE" "=" ("FREE" / "BUSY" 890 / "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE" 891 / x-name 892 ; Some experimental iCalendar data type. 893 / iana-token) 894 ; Some other IANA registered iCalendar data type. 896 Description: The parameter specifies the free or busy time type. The 897 value FREE indicates that the time interval is free for 898 scheduling. The value BUSY indicates that the time interval is 899 busy because one or more events have been scheduled for that 900 interval. The value BUSY-UNAVAILABLE indicates that the time 901 interval is busy and that the interval can not be scheduled. The 902 value BUSY-TENTATIVE indicates that the time interval is busy 903 because one or more events have been tentatively scheduled for 904 that interval. If not specified on a property that allows this 905 parameter, the default is BUSY. 907 Example: The following is an example of this parameter on a FREEBUSY 908 property. 910 FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z 912 3.2.10. Language 914 Parameter Name: LANGUAGE 916 Purpose: To specify the language for text values in a property or 917 property parameter. 919 Format Definition: The property parameter is defined by the following 920 notation: 922 languageparam = "LANGUAGE" "=" language 924 language = 926 Description: This parameter can be specified on properties with a 927 text value type. The parameter identifies the language of the 928 text in the property or property parameter value. The value of 929 the "language" property parameter is that defined in [RFC1766]. 931 For transport in a MIME entity, the Content-Language header field 932 can be used to set the default language for the entire body part. 933 Otherwise, no default language is assumed. 935 Example: 937 SUMMARY;LANGUAGE=us-EN:Company Holiday Party 939 LOCATION;LANGUAGE=en:Germany 941 LOCATION;LANGUAGE=no:Tyskland 943 The following example makes use of the Quoted-Printable encoding 944 in order to represent non-ASCII characters. 946 LOCATION;LANGUAGE=3Dda:K=C3=B8benhavn 948 LOCATION;LANGUAGE=en:Copenhagen 950 3.2.11. Group or List Membership 952 Parameter Name: MEMBER 954 Purpose: To specify the group or list membership of the calendar user 955 specified by the property. 957 Format Definition: The property parameter is defined by the following 958 notation: 960 memberparam = "MEMBER" "=" DQUOTE cal-address DQUOTE 961 *("," DQUOTE cal-address DQUOTE) 963 Description: This parameter can be specified on properties with a 964 CAL-ADDRESS value type. The parameter identifies the groups or 965 list membership for the calendar user specified by the property. 966 The parameter value either a single calendar address in a quoted- 967 string or a COMMA character (US-ASCII decimal 44) list of calendar 968 addresses, each in a quoted-string. The individual calendar 969 address parameter values MUST each be specified in a quoted- 970 string. 972 Example: 974 ATTENDEE;MEMBER="MAILTO:ietf-calsch@imc.org":MAILTO:jsmith@host.com 976 ATTENDEE;MEMBER="MAILTO:projectA@host.com","MAILTO:projectB@host. 977 com":MAILTO:janedoe@host.com 979 3.2.12. Participation Status 981 Parameter Name: PARTSTAT 983 Purpose: To specify the participation status for the calendar user 984 specified by the property. 986 Format Definition: The property parameter is defined by the following 987 notation: 989 partstatparam = "PARTSTAT" "=" 990 ("NEEDS-ACTION" ; Event needs action 991 / "ACCEPTED" ; Event accepted 992 / "DECLINED" ; Event declined 993 / "TENTATIVE" ; Event tentatively 994 ; accepted 995 / "DELEGATED" ; Event delegated 996 / x-name ; Experimental status 997 / iana-token) ; Other IANA registered 998 ; status 999 ; These are the participation statuses for a "VEVENT". Default is 1000 ; NEEDS-ACTION 1001 partstatparam /= "PARTSTAT" "=" 1002 ("NEEDS-ACTION" ; To-do needs action 1003 / "ACCEPTED" ; To-do accepted 1004 / "DECLINED" ; To-do declined 1005 / "TENTATIVE" ; To-do tentatively 1006 ; accepted 1007 / "DELEGATED" ; To-do delegated 1008 / "COMPLETED" ; To-do completed. 1009 ; COMPLETED property has 1010 ;date/time completed. 1011 / "IN-PROCESS" ; To-do in process of 1012 ; being completed 1013 / x-name ; Experimental status 1014 / iana-token) ; Other IANA registered 1015 ; status 1016 ; These are the participation statuses for a "VTODO". Default is 1017 ; NEEDS-ACTION 1019 partstatparam /= "PARTSTAT" "=" 1020 ("NEEDS-ACTION" ; Journal needs action 1021 / "ACCEPTED" ; Journal accepted 1022 / "DECLINED" ; Journal declined 1023 / x-name ; Experimental status 1024 / iana-token) ; Other IANA registered 1025 ; status 1026 ; These are the participation statuses for a "VJOURNAL". Default is 1027 ; NEEDS-ACTION 1029 Description: This parameter can be specified on properties with a 1030 CAL-ADDRESS value type. The parameter identifies the 1031 participation status for the calendar user specified by the 1032 property value. The parameter values differ depending on whether 1033 they are associated with a group scheduled "VEVENT", "VTODO" or 1034 "VJOURNAL". The values MUST match one of the values allowed for 1035 the given calendar component. If not specified on a property that 1036 allows this parameter, the default value is NEEDS-ACTION. 1038 Example: 1040 ATTENDEE;PARTSTAT=DECLINED:MAILTO:jsmith@host.com 1042 3.2.13. Recurrence Identifier Range 1044 Parameter Name: RANGE 1046 Purpose: To specify the effective range of recurrence instances from 1047 the instance specified by the recurrence identifier specified by 1048 the property. 1050 Format Definition: The property parameter is defined by the following 1051 notation: 1053 rangeparam = "RANGE" "=" ("THISANDPRIOR" 1054 ; To specify all instances prior to the recurrence identifier 1055 / "THISANDFUTURE") 1056 ; To specify the instance specified by the recurrence identifier 1057 ; and all subsequent recurrence instances 1059 Description: The parameter can be specified on a property that 1060 specifies a recurrence identifier. The parameter specifies the 1061 effective range of recurrence instances that is specified by the 1062 property. The effective range is from the recurrence identified 1063 specified by the property. If this parameter is not specified an 1064 allowed property, then the default range is the single instance 1065 specified by the recurrence identifier value of the property. The 1066 parameter value can be "THISANDPRIOR" to indicate a range defined 1067 by the recurrence identified value of the property and all prior 1068 instances. The parameter value can also be "THISANDFUTURE" to 1069 indicate a range defined by the recurrence identifier and all 1070 subsequent instances. 1072 Example: 1074 RECURRENCE-ID;RANGE=THISANDPRIOR:19980401T133000Z 1076 3.2.14. Alarm Trigger Relationship 1078 Parameter Name: RELATED 1080 Purpose: To specify the relationship of the alarm trigger with 1081 respect to the start or end of the calendar component. 1083 Format Definition: The property parameter is defined by the following 1084 notation: 1086 trigrelparam = "RELATED" "=" 1087 ("START" ; Trigger off of start 1088 / "END") ; Trigger off of end 1090 Description: The parameter can be specified on properties that 1091 specify an alarm trigger with a DURATION value type. The 1092 parameter specifies whether the alarm will trigger relative to the 1093 start or end of the calendar component. The parameter value START 1094 will set the alarm to trigger off the start of the calendar 1095 component; the parameter value END will set the alarm to trigger 1096 off the end of the calendar component. If the parameter is not 1097 specified on an allowable property, then the default is START. 1099 Example: 1101 TRIGGER;RELATED=END:PT5M 1103 3.2.15. Relationship Type 1105 Parameter Name: RELTYPE 1107 Purpose: To specify the type of hierarchical relationship associated 1108 with the calendar component specified by the property. 1110 Format Definition: The property parameter is defined by the following 1111 notation: 1113 reltypeparam = "RELTYPE" "=" 1114 ("PARENT" ; Parent relationship. Default. 1115 / "CHILD" ; Child relationship 1116 / "SIBLING ; Sibling relationship 1117 / iana-token ; Some other IANA registered 1118 ; iCalendar relationship type 1119 / x-name) ; A non-standard, experimental 1120 ; relationship type 1122 Description: This parameter can be specified on a property that 1123 references another related calendar. The parameter specifies the 1124 hierarchical relationship type of the calendar component 1125 referenced by the property. The parameter value can be PARENT, to 1126 indicate that the referenced calendar component is a superior of 1127 calendar component; CHILD to indicate that the referenced calendar 1128 component is a subordinate of the calendar component; SIBLING to 1129 indicate that the referenced calendar component is a peer of the 1130 calendar component. If this parameter is not specified on an 1131 allowable property, the default relationship type is PARENT. 1133 Example: 1135 RELATED-TO;RELTYPE=SIBLING:<19960401-080045-4000F192713@host.com> 1137 3.2.16. Participation Role 1139 Parameter Name: ROLE 1141 Purpose: To specify the participation role for the calendar user 1142 specified by the property. 1144 Format Definition: The property parameter is defined by the following 1145 notation: 1147 roleparam = "ROLE" "=" 1148 ("CHAIR" ; Indicates chair of the 1149 ; calendar entity 1150 / "REQ-PARTICIPANT" ; Indicates a participant whose 1151 ; participation is required 1152 / "OPT-PARTICIPANT" ; Indicates a participant whose 1153 ; participation is optional 1154 / "NON-PARTICIPANT" ; Indicates a participant who is 1155 ; copied for information 1156 ; purposes only 1157 / x-name ; Experimental role 1158 / iana-token) ; Other IANA role 1159 ; Default is REQ-PARTICIPANT 1161 Description: This parameter can be specified on properties with a 1162 CAL-ADDRESS value type. The parameter specifies the participation 1163 role for the calendar user specified by the property in the group 1164 schedule calendar component. If not specified on a property that 1165 allows this parameter, the default value is REQ-PARTICIPANT. 1167 Example: 1169 ATTENDEE;ROLE=CHAIR:MAILTO:mrbig@host.com 1171 3.2.17. RSVP Expectation 1173 Parameter Name: RSVP 1175 Purpose: To specify whether there is an expectation of a favor of a 1176 reply from the calendar user specified by the property value. 1178 Format Definition: The property parameter is defined by the following 1179 notation: 1181 rsvpparam = "RSVP" "=" ("TRUE" / "FALSE") 1182 ; Default is FALSE 1184 Description: This parameter can be specified on properties with a 1185 CAL-ADDRESS value type. The parameter identifies the expectation 1186 of a reply from the calendar user specified by the property value. 1187 This parameter is used by the "Organizer" to request a 1188 participation status reply from an "Attendee" of a group scheduled 1189 event or to-do. If not specified on a property that allows this 1190 parameter, the default value is FALSE. 1192 Example: 1194 ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host.com 1196 3.2.18. Sent By 1198 Parameter Name: SENT-BY 1200 Purpose: To specify the calendar user that is acting on behalf of the 1201 calendar user specified by the property. 1203 Format Definition: The property parameter is defined by the following 1204 notation: 1206 sentbyparam = "SENT-BY" "=" DQUOTE cal-address DQUOTE 1208 Description: This parameter can be specified on properties with a 1209 CAL-ADDRESS value type. The parameter specifies the calendar user 1210 that is acting on behalf of the calendar user specified by the 1211 property. The parameter value MUST be a MAILTO URI as defined in 1212 [RFC1738]. The individual calendar address parameter values MUST 1213 each be specified in a quoted-string. 1215 Example: 1217 ORGANIZER;SENT-BY:"MAILTO:sray@host.com":MAILTO:jsmith@host.com 1219 3.2.19. Time Zone Identifier 1221 Parameter Name: TZID 1222 Purpose: To specify the identifier for the time zone definition for a 1223 time component in the property value. 1225 Format Definition: The property parameter is defined by the following 1226 notation: 1228 tzidparam = "TZID" "=" [tzidprefix] paramtext CRLF 1230 tzidprefix = "/" 1232 Description: The parameter MUST be specified on the "DTSTART", 1233 "DTEND", "DUE", "EXDATE" and "RDATE" properties when either a 1234 DATE- TIME or TIME value type is specified and when the value is 1235 not either a UTC or a "floating" time. Refer to the DATE-TIME or 1236 TIME value type definition for a description of UTC and "floating 1237 time" formats. This property parameter specifies a text value 1238 which uniquely identifies the "VTIMEZONE" calendar component to be 1239 used when evaluating the time portion of the property. The value 1240 of the TZID property parameter will be equal to the value of the 1241 TZID property for the matching time zone definition. An 1242 individual "VTIMEZONE" calendar component MUST be specified for 1243 each unique "TZID" parameter value specified in the iCalendar 1244 object. 1246 The parameter MUST be specified on properties with a DATE-TIME 1247 value if the DATE-TIME is not either a UTC or a "floating" time. 1249 The presence of the SOLIDUS character (US-ASCII decimal 47) as a 1250 prefix, indicates that this TZID represents a unique ID in a 1251 globally defined time zone registry (when such registry is 1252 defined). 1254 Note: This document does not define a naming convention for 1255 time zone identifiers. Implementers may want to use the naming 1256 conventions defined in existing time zone specifications such 1257 as the public-domain Olson database [TZDB]. The specification 1258 of globally unique time zone identifiers is not addressed by 1259 this document and is left for future study. 1261 The following are examples of this property parameter: 1263 DTSTART;TZID=US-Eastern:19980119T020000 1265 DTEND;TZID=US-Eastern:19980119T030000 1267 The TZID property parameter MUST NOT be applied to DATE-TIME or 1268 TIME properties whose time values are specified in UTC. 1270 The use of local time in a DATE-TIME or TIME value without the 1271 TZID property parameter is to be interpreted as a local time 1272 value, regardless of the existence of "VTIMEZONE" calendar 1273 components in the iCalendar object. 1275 For more information see the sections on the data types DATE-TIME 1276 and TIME. 1278 3.2.20. Value Data Types 1280 Parameter Name: VALUE 1282 Purpose: To explicitly specify the data type format for a property 1283 value. 1285 Format Definition: The property parameter is defined by the following 1286 notation: 1288 valuetypeparam = "VALUE" "=" valuetype 1290 valuetype = ("BINARY" 1291 / "BOOLEAN" 1292 / "CAL-ADDRESS" 1293 / "DATE" 1294 / "DATE-TIME" 1295 / "DURATION" 1296 / "FLOAT" 1297 / "INTEGER" 1298 / "PERIOD" 1299 / "RECUR" 1300 / "TEXT" 1301 / "TIME" 1302 / "URI" 1303 / "UTC-OFFSET" 1304 / x-name 1305 ; Some experimental iCalendar data type. 1306 / iana-token) 1307 ; Some other IANA registered iCalendar data type. 1309 Description: The parameter specifies the data type and format of the 1310 property value. The property values MUST be of a single value 1311 type. For example, a "RDATE" property cannot have a combination 1312 of DATE- TIME and TIME value types. 1314 If the property's value is the default value type, then this 1315 parameter need not be specified. However, if the property's 1316 default value type is overridden by some other allowable value 1317 type, then this parameter MUST be specified. 1319 3.3. Property Value Data Types 1321 The properties in an iCalendar object are strongly typed. The 1322 definition of each property restricts the value to be one of the 1323 value data types, or simply value types, defined in this section. 1324 The value type for a property will either be specified implicitly as 1325 the default value type or will be explicitly specified with the 1326 "VALUE" parameter. If the value type of a property is one of the 1327 alternate valid types, then it MUST be explicitly specified with the 1328 "VALUE" parameter. 1330 3.3.1. Binary 1332 Value Name: BINARY 1334 Purpose: This value type is used to identify properties that contain 1335 a character encoding of inline binary data. For example, an 1336 inline attachment of an object code might be included in an 1337 iCalendar object. 1339 Format Definition: The value type is defined by the following 1340 notation: 1342 binary = *(4b-char) [b-end] 1343 ; A "BASE64" encoded character string, as defined by [RFC2045]. 1345 b-end = (2b-char "==") / (3b-char "=") 1347 b-char = ALPHA / DIGIT / "+" / "/" 1349 Description: Property values with this value type MUST also include 1350 the inline encoding parameter sequence of ";ENCODING=BASE64". 1351 That is, all inline binary data MUST first be character encoded 1352 using the "BASE64" encoding method defined in [RFC2045]. No 1353 additional content value encoding (i.e., BACKSLASH character 1354 encoding) is defined for this value type. 1356 Example: The following is an abridged example of a "BASE64" encoded 1357 binary value data. 1359 ATTACH;VALUE=BINARY;ENCODING=BASE64:MIICajCCAdOgAwIBAgICBEUwDQY 1360 JKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlI 1361 ENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZv 1362 <...remainder of "BASE64" encoded binary data...> 1364 3.3.2. Boolean 1366 Value Name: BOOLEAN 1368 Purpose: This value type is used to identify properties that contain 1369 either a "TRUE" or "FALSE" Boolean value. 1371 Format Definition: The value type is defined by the following 1372 notation: 1374 boolean = "TRUE" / "FALSE" 1376 Description: These values are case insensitive text. No additional 1377 content value encoding (i.e., BACKSLASH character encoding) is 1378 defined for this value type. 1380 Example: The following is an example of a hypothetical property that 1381 has a BOOLEAN value type: 1383 GIBBERISH:TRUE 1385 3.3.3. Calendar User Address 1387 Value Name: CAL-ADDRESS 1389 Purpose: This value type is used to identify properties that contain 1390 a calendar user address. 1392 Format Definition: The value type is defined by the following 1393 notation: 1395 cal-address = uri 1397 Description: The value is a URI as defined by [RFC1738] or any other 1398 IANA registered form for a URI. When used to address an Internet 1399 email transport address for a calendar user, the value MUST be a 1400 MAILTO URI, as defined by [RFC1738]. No additional content value 1401 encoding (i.e., BACKSLASH character encoding) is defined for this 1402 value type. 1404 Example: 1406 ATTENDEE:MAILTO:jane_doe@host.com 1408 3.3.4. Date 1410 Value Name: DATE 1412 Purpose: This value type is used to identify values that contain a 1413 calendar date. 1415 Format Definition: The value type is defined by the following 1416 notation: 1418 date = date-value 1420 date-value = date-fullyear date-month date-mday 1421 date-fullyear = 4DIGIT 1422 date-month = 2DIGIT ;01-12 1423 date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31 1424 ;based on month/year 1426 Description: If the property permits, multiple "date" values are 1427 specified as a COMMA character (US-ASCII decimal 44) separated 1428 list of values. The format for the value type is expressed as the 1429 [ISO.8601.1988] complete representation, basic format for a 1430 calendar date. The textual format specifies a four-digit year, 1431 two-digit month, and two-digit day of the month. There are no 1432 separator characters between the year, month and day component 1433 text. 1435 No additional content value encoding (i.e., BACKSLASH character 1436 encoding) is defined for this value type. 1438 Example: The following represents July 14, 1997: 1440 19970714 1442 3.3.5. Date-Time 1444 Value Name: DATE-TIME 1446 Purpose: This value type is used to identify values that specify a 1447 precise calendar date and time of day. 1449 Format Definition: The value type is defined by the following 1450 notation: 1452 date-time = date "T" time ;As specified in the date and time 1453 ;value definitions 1455 Description: If the property permits, multiple "date-time" values are 1456 specified as a COMMA character (US-ASCII decimal 44) separated 1457 list of values. No additional content value encoding (i.e., 1458 BACKSLASH character encoding) is defined for this value type. 1460 The "DATE-TIME" data type is used to identify values that contain 1461 a precise calendar date and time of day. The format is based on 1462 the [ISO.8601.1988] complete representation, basic format for a 1463 calendar date and time of day. The text format is a concatenation 1464 of the "date", followed by the LATIN CAPITAL LETTER T character 1465 (US-ASCII decimal 84) time designator, followed by the "time" 1466 format. 1468 The "DATE-TIME" data type expresses time values in three forms: 1470 The form of date and time with UTC offset MUST NOT be used. For 1471 example, the following is not valid for a date-time value: 1473 DTSTART:19980119T230000-0800 ;Invalid time format 1475 FORM #1: DATE WITH LOCAL TIME 1477 The date with local time form is simply a date-time value that 1478 does not contain the UTC designator nor does it reference a time 1479 zone. For example, the following represents Janurary 18, 1998, at 1480 11 PM: 1482 DTSTART:19980118T230000 1484 Date-time values of this type are said to be "floating" and are 1485 not bound to any time zone in particular. They are used to 1486 represent the same hour, minute, and second value regardless of 1487 which time zone is currently being observed. For example, an 1488 event can be defined that indicates that an individual will be 1489 busy from 11:00 AM to 1:00 PM every day, no matter which time zone 1490 the person is in. In these cases, a local time can be specified. 1491 The recipient of an iCalendar object with a property value 1492 consisting of a local time, without any relative time zone 1493 information, SHOULD interpret the value as being fixed to whatever 1494 time zone the ATTENDEE is in at any given moment. This means that 1495 two ATTENDEEs, in different time zones, receiving the same event 1496 definition as a floating time, may be participating in the event 1497 at different actual times. Floating time SHOULD only be used 1498 where that is the reasonable behavior. 1500 In most cases, a fixed time is desired. To properly communicate a 1501 fixed time in a property value, either UTC time or local time with 1502 time zone reference MUST be specified. 1504 The use of local time in a DATE-TIME value without the TZID 1505 property parameter is to be interpreted as floating time, 1506 regardless of the existence of "VTIMEZONE" calendar components in 1507 the iCalendar object. 1509 FORM #2: DATE WITH UTC TIME 1511 The date with UTC time, or absolute time, is identified by a LATIN 1512 CAPITAL LETTER Z suffix character (US-ASCII decimal 90), the UTC 1513 designator, appended to the time value. For example, the 1514 following represents January 19, 1998, at 0700 UTC: 1516 DTSTART:19980119T070000Z 1518 The TZID property parameter MUST NOT be applied to DATE-TIME 1519 properties whose time values are specified in UTC. 1521 FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE 1523 The date and local time with reference to time zone information is 1524 identified by the use the TZID property parameter to reference the 1525 appropriate time zone definition. TZID is discussed in detail in 1526 the section on Time Zone. For example, the following represents 2 1527 AM in New York on Janurary 19, 1998: 1529 DTSTART;TZID=US-Eastern:19980119T020000 1531 Example: The following represents July 14, 1997, at 1:30 PM in New 1532 York City in each of the three time formats, using the "DTSTART" 1533 property. 1535 DTSTART:19970714T133000 ;Local time 1536 DTSTART:19970714T173000Z ;UTC time 1537 DTSTART;TZID=US-Eastern:19970714T133000 ;Local time and time 1538 ; zone reference 1540 A time value MUST ONLY specify 60 seconds when specifying the 1541 periodic "leap second" in the time value. For example: 1543 COMPLETED:19970630T235960Z 1545 3.3.6. Duration 1547 Value Name: DURATION 1549 Purpose: This value type is used to identify properties that contain 1550 a duration of time. 1552 Format Definition: The value type is defined by the following 1553 notation: 1555 dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week) 1557 dur-date = dur-day [dur-time] 1558 dur-time = "T" (dur-hour / dur-minute / dur-second) 1559 dur-week = 1*DIGIT "W" 1560 dur-hour = 1*DIGIT "H" [dur-minute] 1561 dur-minute = 1*DIGIT "M" [dur-second] 1562 dur-second = 1*DIGIT "S" 1563 dur-day = 1*DIGIT "D" 1565 Description: If the property permits, multiple "duration" values are 1566 specified by a COMMA character (US-ASCII decimal 44) separated 1567 list of values. The format is expressed as the [ISO.8601.1988] 1568 basic format for the duration of time. The format can represent 1569 durations in terms of weeks, days, hours, minutes, and seconds. 1571 No additional content value encoding (i.e., BACKSLASH character 1572 encoding) are defined for this value type. 1574 Example: A duration of 15 days, 5 hours and 20 seconds would be: 1576 P15DT5H0M20S 1578 A duration of 7 weeks would be: 1580 P7W 1582 3.3.7. Float 1584 Value Name: FLOAT 1586 Purpose: This value type is used to identify properties that contain 1587 a real number value. 1589 Format Definition: The value type is defined by the following 1590 notation: 1592 float = (["+"] / "-") 1*DIGIT ["." 1*DIGIT] 1594 Description: If the property permits, multiple "float" values are 1595 specified by a COMMA character (US-ASCII decimal 44) separated 1596 list of values. 1598 No additional content value encoding (i.e., BACKSLASH character 1599 encoding) is defined for this value type. 1601 Example: 1603 1000000.0000001 1604 1.333 1605 -3.14 1607 3.3.8. Integer 1609 Value Name: INTEGER 1611 Purpose: This value type is used to identify properties that contain 1612 a signed integer value. 1614 Format Definition: The value type is defined by the following 1615 notation: 1617 integer = (["+"] / "-") 1*DIGIT 1619 Description: If the property permits, multiple "integer" values are 1620 specified by a COMMA character (US-ASCII decimal 44) separated 1621 list of values. The valid range for "integer" is -2147483648 to 1622 2147483647. If the sign is not specified, then the value is 1623 assumed to be positive. 1625 No additional content value encoding (i.e., BACKSLASH character 1626 encoding) is defined for this value type. 1628 Example: 1630 1234567890 1631 -1234567890 1632 +1234567890 1633 432109876 1635 3.3.9. Period of Time 1637 Value Name: PERIOD 1638 Purpose: This value type is used to identify values that contain a 1639 precise period of time. 1641 Format Definition: The value type is defined by the following 1642 notation: 1644 period = period-explicit / period-start 1646 period-explicit = date-time "/" date-time 1647 ; [ISO.8601.1988] complete representation basic format for a 1648 ; period of time consisting of a start and end. The start MUST 1649 ; be before the end. 1651 period-start = date-time "/" dur-value 1652 ; [ISO.8601.1988] complete representation basic format for a 1653 ; period of time consisting of a start and positive duration 1654 ; of time. 1656 Description: If the property permits, multiple "period" values are 1657 specified by a COMMA character (US-ASCII decimal 44) separated 1658 list of values. There are two forms of a period of time. First, 1659 a period of time is identified by its start and its end. This 1660 format is expressed as the [ISO.8601.1988] complete 1661 representation, basic format for "DATE-TIME" start of the period, 1662 followed by a SOLIDUS character (US-ASCII decimal 47), followed by 1663 the "DATE-TIME" of the end of the period. The start of the period 1664 MUST be before the end of the period. Second, a period of time 1665 can also be defined by a start and a positive duration of time. 1666 The format is expressed as the [ISO.8601.1988] complete 1667 representation, basic format for the "DATE-TIME" start of the 1668 period, followed by a SOLIDUS character (US-ASCII decimal 47), 1669 followed by the [ISO.8601.1988] basic format for "DURATION" of the 1670 period. 1672 Example: The period starting at 18:00:00 UTC, on January 1, 1997 and 1673 ending at 07:00:00 UTC on January 2, 1997 would be: 1675 19970101T180000Z/19970102T070000Z 1677 The period start at 18:00:00 on January 1, 1997 and lasting 5 1678 hours and 30 minutes would be: 1680 19970101T180000Z/PT5H30M 1682 No additional content value encoding (i.e., BACKSLASH character 1683 encoding) is defined for this value type. 1685 3.3.10. Recurrence Rule 1687 Value Name: RECUR 1689 Purpose: This value type is used to identify properties that contain 1690 a recurrence rule specification. 1692 Format Definition: The value type is defined by the following 1693 notation: 1695 recur = "FREQ"=freq *( 1697 ; either UNTIL or COUNT may appear in a 'recur', 1698 ; but UNTIL and COUNT MUST NOT occur in the same 'recur' 1700 ( ";" "UNTIL" "=" enddate ) / 1701 ( ";" "COUNT" "=" 1*DIGIT ) / 1703 ; the rest of these keywords are optional, 1704 ; but MUST NOT occur more than once 1706 ( ";" "INTERVAL" "=" 1*DIGIT ) / 1707 ( ";" "BYSECOND" "=" byseclist ) / 1708 ( ";" "BYMINUTE" "=" byminlist ) / 1709 ( ";" "BYHOUR" "=" byhrlist ) / 1710 ( ";" "BYDAY" "=" bywdaylist ) / 1711 ( ";" "BYMONTHDAY" "=" bymodaylist ) / 1712 ( ";" "BYYEARDAY" "=" byyrdaylist ) / 1713 ( ";" "BYWEEKNO" "=" bywknolist ) / 1714 ( ";" "BYMONTH" "=" bymolist ) / 1715 ( ";" "BYSETPOS" "=" bysplist ) / 1716 ( ";" "WKST" "=" weekday ) / 1717 ( ";" x-name "=" text ) 1718 ) 1720 freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY" 1721 / "WEEKLY" / "MONTHLY" / "YEARLY" 1723 enddate = date 1724 enddate =/ date-time ;An UTC value 1726 byseclist = seconds / ( seconds *("," seconds) ) 1728 seconds = 1DIGIT / 2DIGIT ;0 to 59 1730 byminlist = minutes / ( minutes *("," minutes) ) 1732 minutes = 1DIGIT / 2DIGIT ;0 to 59 1733 byhrlist = hour / ( hour *("," hour) ) 1735 hour = 1DIGIT / 2DIGIT ;0 to 23 1737 bywdaylist = weekdaynum / ( weekdaynum *("," weekdaynum) ) 1739 weekdaynum = [([plus] ordwk / minus ordwk)] weekday 1741 plus = "+" 1743 minus = "-" 1745 ordwk = 1DIGIT / 2DIGIT ;1 to 53 1747 weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" 1748 ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, 1749 ;FRIDAY, SATURDAY and SUNDAY days of the week. 1751 bymodaylist = monthdaynum / ( monthdaynum *("," monthdaynum) ) 1753 monthdaynum = ([plus] ordmoday) / (minus ordmoday) 1755 ordmoday = 1DIGIT / 2DIGIT ;1 to 31 1757 byyrdaylist = yeardaynum / ( yeardaynum *("," yeardaynum) ) 1759 yeardaynum = ([plus] ordyrday) / (minus ordyrday) 1761 ordyrday = 1DIGIT / 2DIGIT / 3DIGIT ;1 to 366 1763 bywknolist = weeknum / ( weeknum *("," weeknum) ) 1765 weeknum = ([plus] ordwk) / (minus ordwk) 1767 bymolist = monthnum / ( monthnum *("," monthnum) ) 1769 monthnum = 1DIGIT / 2DIGIT ;1 to 12 1771 bysplist = setposday / ( setposday *("," setposday) ) 1773 setposday = yeardaynum 1775 Description: If the property permits, multiple "recur" values are 1776 specified by a COMMA character (US-ASCII decimal 44) separated 1777 list of values. The value type is a structured value consisting 1778 of a list of one or more recurrence grammar parts. Each rule part 1779 is defined by a NAME=VALUE pair. The rule parts are separated 1780 from each other by the SEMICOLON character (US-ASCII decimal 59). 1782 The rule parts are not ordered in any particular sequence. 1783 Individual rule parts MUST only be specified once. 1785 The FREQ rule part identifies the type of recurrence rule. This 1786 rule part MUST be specified in the recurrence rule. Valid values 1787 include SECONDLY, to specify repeating events based on an interval 1788 of a second or more; MINUTELY, to specify repeating events based 1789 on an interval of a minute or more; HOURLY, to specify repeating 1790 events based on an interval of an hour or more; DAILY, to specify 1791 repeating events based on an interval of a day or more; WEEKLY, to 1792 specify repeating events based on an interval of a week or more; 1793 MONTHLY, to specify repeating events based on an interval of a 1794 month or more; and YEARLY, to specify repeating events based on an 1795 interval of a year or more. 1797 The INTERVAL rule part contains a positive integer representing 1798 how often the recurrence rule repeats. The default value is "1", 1799 meaning every second for a SECONDLY rule, or every minute for a 1800 MINUTELY rule, every hour for an HOURLY rule, every day for a 1801 DAILY rule, every week for a WEEKLY rule, every month for a 1802 MONTHLY rule and every year for a YEARLY rule. 1804 The UNTIL rule part defines a date-time value which bounds the 1805 recurrence rule in an inclusive manner. If the value specified by 1806 UNTIL is synchronized with the specified recurrence, this date or 1807 date-time becomes the last instance of the recurrence. If 1808 specified as a date-time value, then it MUST be specified in an 1809 UTC time format. If not present, and the COUNT rule part is also 1810 not present, the RRULE is considered to repeat forever. 1812 The COUNT rule part defines the number of occurrences at which to 1813 range-bound the recurrence. The "DTSTART" property value, if 1814 specified, counts as the first occurrence. 1816 The BYSECOND rule part specifies a COMMA character (US-ASCII 1817 decimal 44) separated list of seconds within a minute. Valid 1818 values are 0 to 59. The BYMINUTE rule part specifies a COMMA 1819 character (US-ASCII decimal 44) separated list of minutes within 1820 an hour. Valid values are 0 to 59. The BYHOUR rule part 1821 specifies a COMMA character (US- ASCII decimal 44) separated list 1822 of hours of the day. Valid values are 0 to 23. 1824 The BYDAY rule part specifies a COMMA character (US-ASCII decimal 1825 44) separated list of days of the week; MO indicates Monday; TU 1826 indicates Tuesday; WE indicates Wednesday; TH indicates Thursday; 1827 FR indicates Friday; SA indicates Saturday; SU indicates Sunday. 1829 Each BYDAY value can also be preceded by a positive (+n) or 1830 negative (-n) integer. If present, this indicates the nth 1831 occurrence of the specific day within the MONTHLY or YEARLY RRULE. 1832 For example, within a MONTHLY rule, +1MO (or simply 1MO) 1833 represents the first Monday within the month, whereas -1MO 1834 represents the last Monday of the month. If an integer modifier 1835 is not present, it means all days of this type within the 1836 specified frequency. For example, within a MONTHLY rule, MO 1837 represents all Mondays within the month. 1839 The BYMONTHDAY rule part specifies a COMMA character (ASCII 1840 decimal 44) separated list of days of the month. Valid values are 1841 1 to 31 or -31 to -1. For example, -10 represents the tenth to 1842 the last day of the month. 1844 The BYYEARDAY rule part specifies a COMMA character (US-ASCII 1845 decimal 44) separated list of days of the year. Valid values are 1846 1 to 366 or -366 to -1. For example, -1 represents the last day 1847 of the year (December 31st) and -306 represents the 306th to the 1848 last day of the year (March 1st). 1850 The BYWEEKNO rule part specifies a COMMA character (US-ASCII 1851 decimal 44) separated list of ordinals specifying weeks of the 1852 year. Valid values are 1 to 53 or -53 to -1. This corresponds to 1853 weeks according to week numbering as defined in [ISO.8601.1988]. 1854 A week is defined as a seven day period, starting on the day of 1855 the week defined to be the week start (see WKST). Week number one 1856 of the calendar year is the first week which contains at least 1857 four (4) days in that calendar year. This rule part is only valid 1858 for YEARLY rules. For example, 3 represents the third week of the 1859 year. 1861 Note: Assuming a Monday week start, week 53 can only occur when 1862 Thursday is January 1 or if it is a leap year and Wednesday is 1863 January 1. 1865 The BYMONTH rule part specifies a COMMA character (US-ASCII 1866 decimal 44) separated list of months of the year. Valid values 1867 are 1 to 12. 1869 The WKST rule part specifies the day on which the workweek starts. 1870 Valid values are MO, TU, WE, TH, FR, SA and SU. This is 1871 significant when a WEEKLY RRULE has an interval greater than 1, 1872 and a BYDAY rule part is specified. This is also significant when 1873 in a YEARLY RRULE when a BYWEEKNO rule part is specified. The 1874 default value is MO. 1876 The BYSETPOS rule part specifies a COMMA character (US-ASCII 1877 decimal 44) separated list of values which corresponds to the nth 1878 occurrence within the set of events specified by the rule. Valid 1879 values are 1 to 366 or -366 to -1. It MUST only be used in 1880 conjunction with another BYxxx rule part. For example "the last 1881 work day of the month" could be represented as: 1883 RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 1885 Each BYSETPOS value can include a positive (+n) or negative (-n) 1886 integer. If present, this indicates the nth occurrence of the 1887 specific occurrence within the set of events specified by the 1888 rule. 1890 If BYxxx rule part values are found which are beyond the available 1891 scope (ie, BYMONTHDAY=30 in February), they are simply ignored. 1893 Information, not contained in the rule, necessary to determine the 1894 various recurrence instance start time and dates are derived from 1895 the Start Time (DTSTART) entry attribute. For example, 1896 "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the 1897 month or a time. This information would be the same as what is 1898 specified for DTSTART. 1900 BYxxx rule parts modify the recurrence in some manner. BYxxx rule 1901 parts for a period of time which is the same or greater than the 1902 frequency generally reduce or limit the number of occurrences of 1903 the recurrence generated. For example, "FREQ=DAILY;BYMONTH=1" 1904 reduces the number of recurrence instances from all days (if 1905 BYMONTH tag is not present) to all days in January. BYxxx rule 1906 parts for a period of time less than the frequency generally 1907 increase or expand the number of occurrences of the recurrence. 1908 For example, "FREQ=YEARLY;BYMONTH=1,2" increases the number of 1909 days within the yearly recurrence set from 1 (if BYMONTH tag is 1910 not present) to 2. 1912 If multiple BYxxx rule parts are specified, then after evaluating 1913 the specified FREQ and INTERVAL rule parts, the BYxxx rule parts 1914 are applied to the current set of evaluated occurrences in the 1915 following order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, 1916 BYHOUR, BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are 1917 evaluated. 1919 Here is an example of evaluating multiple BYxxx rule parts. 1921 DTSTART;TZID=US-Eastern:19970105T083000 1922 RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9; 1923 BYMINUTE=30 1925 First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to 1926 arrive at "every other year". Then, "BYMONTH=1" would be applied 1927 to arrive at "every January, every other year". Then, "BYDAY=SU" 1928 would be applied to arrive at "every Sunday in January, every 1929 other year". Then, "BYHOUR=8,9" would be applied to arrive at 1930 "every Sunday in January at 8 AM and 9 AM, every other year". 1931 Then, "BYMINUTE=30" would be applied to arrive at "every Sunday in 1932 January at 8:30 AM and 9:30 AM, every other year". Then, lacking 1933 information from RRULE, the second is derived from DTSTART, to end 1934 up in "every Sunday in January at 8:30:00 AM and 9:30:00 AM, every 1935 other year". Similarly, if the BYMINUTE, BYHOUR, BYDAY, 1936 BYMONTHDAY or BYMONTH rule part were missing, the appropriate 1937 minute, hour, day or month would have been retrieved from the 1938 "DTSTART" property. 1940 No additional content value encoding (i.e., BACKSLASH character 1941 encoding) is defined for this value type. 1943 Example: The following is a rule which specifies 10 meetings which 1944 occur every other day: 1946 FREQ=DAILY;COUNT=10;INTERVAL=2 1948 There are other examples specified in the "RRULE" specification. 1950 3.3.11. Text 1952 Value Name: TEXT 1954 Purpose: This value type is used to identify values that contain 1955 human readable text. 1957 Format Definition: The character sets supported by this revision of 1958 iCalendar are UTF-8 and US-ASCII thereof. The applicability to 1959 other character sets is for future work. The value type is 1960 defined by the following notation. 1962 text = *(TSAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR) 1963 ; Folded according to description above 1965 ESCAPED-CHAR = "\\" / "\;" / "\," / "\N" / "\n") 1966 ; \\ encodes \, \N or \n encodes newline 1967 ; \; encodes ;, \, encodes , 1969 TSAFE-CHAR = %x20-21 / %x23-2B / %x2D-39 / %x3C-5B 1970 %x5D-7E / NON-US-ASCII 1971 ; Any character except CTLs not needed by the current 1972 ; character set, DQUOTE, ";", ":", "\", "," 1974 Note: Certain other character sets may require modification of 1975 the above definitions, but this is beyond the scope of this 1976 document. 1978 Description: If the property permits, multiple "text" values are 1979 specified by a COMMA character (US-ASCII decimal 44) separated 1980 list of values. 1982 The language in which the text is represented can be controlled by 1983 the "LANGUAGE" property parameter. 1985 An intentional formatted text line break MUST only be included in 1986 a "TEXT" property value by representing the line break with the 1987 character sequence of BACKSLASH (US-ASCII decimal 92), followed by 1988 a LATIN SMALL LETTER N (US-ASCII decimal 110) or a LATIN CAPITAL 1989 LETTER N (US-ASCII decimal 78), that is "\n" or "\N". 1991 The "TEXT" property values may also contain special characters 1992 that are used to signify delimiters, such as a COMMA character for 1993 lists of values or a SEMICOLON character for structured values. 1994 In order to support the inclusion of these special characters in 1995 "TEXT" property values, they MUST be escaped with a BACKSLASH 1996 character. A BACKSLASH character (US-ASCII decimal 92) in a 1997 "TEXT" property value MUST be escaped with another BACKSLASH 1998 character. A COMMA character in a "TEXT" property value MUST be 1999 escaped with a BACKSLASH character (US-ASCII decimal 92). A 2000 SEMICOLON character in a "TEXT" property value MUST be escaped 2001 with a BACKSLASH character (US-ASCII decimal 92). However, a 2002 COLON character in a "TEXT" property value SHALL NOT be escaped 2003 with a BACKSLASH character. 2005 Example: A multiple line value of: 2007 Project XYZ Final Review 2008 Conference Room - 3B 2009 Come Prepared. 2011 would be represented as: 2013 Project XYZ Final Review\nConference Room - 3B\nCome Prepared. 2015 3.3.12. Time 2017 Value Name: TIME 2018 Purpose: This value type is used to identify values that contain a 2019 time of day. 2021 Format Definition: The data type is defined by the following 2022 notation: 2024 time = time-hour time-minute time-second [time-utc] 2026 time-hour = 2DIGIT ;00-23 2027 time-minute = 2DIGIT ;00-59 2028 time-second = 2DIGIT ;00-60 2029 ;The "60" value is used to account for "leap" seconds. 2031 time-utc = "Z" 2033 Description: If the property permits, multiple "time" values are 2034 specified by a COMMA character (US-ASCII decimal 44) separated 2035 list of values. No additional content value encoding (i.e., 2036 BACKSLASH character encoding) is defined for this value type. 2038 The "TIME" data type is used to identify values that contain a 2039 time of day. The format is based on the [ISO.8601.1988] complete 2040 representation, basic format for a time of day. The text format 2041 consists of a two-digit 24-hour of the day (i.e., values 0-23), 2042 two- digit minute in the hour (i.e., values 0-59), and two-digit 2043 seconds in the minute (i.e., values 0-60). The seconds value of 2044 60 MUST only to be used to account for "leap" seconds. Fractions 2045 of a second are not supported by this format. 2047 In parallel to the "DATE-TIME" definition above, the "TIME" data 2048 type expresses time values in three forms: 2050 The form of time with UTC offset MUST NOT be used. For example, 2051 the following is NOT VALID for a time value: 2053 230000-0800 ;Invalid time format 2055 FORM #1 LOCAL TIME 2057 The local time form is simply a time value that does not contain 2058 the UTC designator nor does it reference a time zone. For 2059 example, 11:00 PM: 2061 230000 2063 Time values of this type are said to be "floating" and are not 2064 bound to any time zone in particular. They are used to represent 2065 the same hour, minute, and second value regardless of which time 2066 zone is currently being observed. For example, an event can be 2067 defined that indicates that an individual will be busy from 11:00 2068 AM to 1:00 PM every day, no matter which time zone the person is 2069 in. In these cases, a local time can be specified. The recipient 2070 of an iCalendar object with a property value consisting of a local 2071 time, without any relative time zone information, SHOULD interpret 2072 the value as being fixed to whatever time zone the ATTENDEE is in 2073 at any given moment. This means that two ATTENDEEs may 2074 participate in the same event at different UTC times; floating 2075 time SHOULD only be used where that is reasonable behavior. 2077 In most cases, a fixed time is desired. To properly communicate a 2078 fixed time in a property value, either UTC time or local time with 2079 time zone reference MUST be specified. 2081 The use of local time in a TIME value without the TZID property 2082 parameter is to be interpreted as a local time value, regardless 2083 of the existence of "VTIMEZONE" calendar components in the 2084 iCalendar object. 2086 FORM #2: UTC TIME 2088 UTC time, or absolute time, is identified by a LATIN CAPITAL 2089 LETTER Z suffix character (US-ASCII decimal 90), the UTC 2090 designator, appended to the time value. For example, the 2091 following represents 07:00 AM UTC: 2093 070000Z 2095 The TZID property parameter MUST NOT be applied to TIME properties 2096 whose time values are specified in UTC. 2098 FORM #3: LOCAL TIME AND TIME ZONE REFERENCE 2100 The local time with reference to time zone information form is 2101 identified by the use the TZID property parameter to reference the 2102 appropriate time zone definition. TZID is discussed in detail in 2103 the section on Time Zone. 2105 Example: The following represents 8:30 AM in New York in Winter, five 2106 hours behind UTC, in each of the three formats using the "X- 2107 TIMEOFDAY" non-standard property: 2109 X-TIMEOFDAY:083000 2111 X-TIMEOFDAY:133000Z 2113 X-TIMEOFDAY;TZID=US-Eastern:083000 2115 3.3.13. URI 2117 Value Name: URI 2119 Purpose: This value type is used to identify values that contain a 2120 uniform resource identifier (URI) type of reference to the 2121 property value. 2123 Format Definition: The data type is defined by the following 2124 notation: 2126 uri = 2128 Description: This data type might be used to reference binary 2129 information, for values that are large, or otherwise undesirable 2130 to include directly in the iCalendar object. 2132 The URI value formats in RFC 1738, RFC 2111 and any other IETF 2133 registered value format can be specified. 2135 Any IANA registered URI format can be used. These include, but 2136 are not limited to, those defined in RFC 1738 and RFC 2111. 2138 When a property parameter value is a URI value type, the URI MUST 2139 be specified as a quoted-string value. 2141 No additional content value encoding (i.e., BACKSLASH character 2142 encoding) is defined for this value type. 2144 Example: The following is a URI for a network file: 2146 http://host1.com/my-report.txt 2148 3.3.14. UTC Offset 2149 Value Name: UTC-OFFSET 2151 Purpose: This value type is used to identify properties that contain 2152 an offset from UTC to local time. 2154 Format Definition: The data type is defined by the following 2155 notation: 2157 utc-offset = time-numzone ;As defined above in time data type 2159 time-numzone = ("+" / "-") time-hour time-minute [time- 2160 second] 2162 Description: The PLUS SIGN character MUST be specified for positive 2163 UTC offsets (i.e., ahead of UTC). The MINUS SIGN character MUST 2164 be specified for negative UTC offsets (i.e., behind of UTC). The 2165 value of "-0000" and "-000000" are not allowed. The time-second, 2166 if present, may not be 60; if absent, it defaults to zero. 2168 No additional content value encoding (i.e., BACKSLASH character 2169 encoding) is defined for this value type. 2171 Example: The following UTC offsets are given for standard time for 2172 New York (five hours behind UTC) and Geneva (one hour ahead of 2173 UTC): 2175 -0500 2177 +0100 2179 3.4. iCalendar Object 2181 The Calendaring and Scheduling Core Object is a collection of 2182 calendaring and scheduling information. Typically, this information 2183 will consist of a single iCalendar object. However, multiple 2184 iCalendar objects can be sequentially grouped together. The first 2185 line and last line of the iCalendar object MUST contain a pair of 2186 iCalendar object delimiter strings. The syntax for an iCalendar 2187 object is as follows: 2189 icalobject = 1*("BEGIN" ":" "VCALENDAR" CRLF 2190 icalbody 2191 "END" ":" "VCALENDAR" CRLF) 2193 The following is a simple example of an iCalendar object: 2195 BEGIN:VCALENDAR 2196 VERSION:2.0 2197 PRODID:-//hacksw/handcal//NONSGML v1.0//EN 2198 BEGIN:VEVENT 2199 DTSTART:19970714T170000Z 2200 DTEND:19970715T035959Z 2201 SUMMARY:Bastille Day Party 2202 END:VEVENT 2203 END:VCALENDAR 2205 3.5. Property 2207 A property is the definition of an individual attribute describing a 2208 calendar or a calendar component. A property takes the form defined 2209 by the "contentline" notation defined in Section 3.1. 2211 The following is an example of a property: 2213 DTSTART:19960415T133000Z 2215 This memo imposes no ordering of properties within an iCalendar 2216 object. 2218 Property names, parameter names and enumerated parameter values are 2219 case insensitive. For example, the property name "DUE" is the same 2220 as "due" and "Due", DTSTART;TZID=US-Eastern:19980714T120000 is the 2221 same as DtStart;TzID=US-Eastern:19980714T120000. 2223 3.6. Calendar Components 2225 The body of the iCalendar object consists of a sequence of calendar 2226 properties and one or more calendar components. The calendar 2227 properties are attributes that apply to the calendar as a whole. The 2228 calendar components are collections of properties that express a 2229 particular calendar semantic. For example, the calendar component 2230 can specify an event, a to-do, a journal entry, time zone 2231 information, or free/busy time information, or an alarm. 2233 The body of the iCalendar object is defined by the following 2234 notation: 2236 icalbody = calprops component 2238 calprops = 2*( 2240 ; 'prodid' and 'version' are both REQUIRED, 2241 ; but MUST NOT occur more than once 2243 prodid /version / 2245 ; 'calscale' and 'method' are optional, 2246 ; but MUST NOT occur more than once 2248 calscale / 2249 method / 2251 x-prop 2252 ) 2254 component = 1*(eventc / todoc / journalc / freebusyc / 2255 / timezonec / iana-comp / x-comp) 2257 iana-comp = "BEGIN" ":" iana-token CRLF 2259 1*contentline 2261 "END" ":" iana-token CRLF 2263 x-comp = "BEGIN" ":" x-name CRLF 2265 1*contentline 2267 "END" ":" x-name CRLF 2269 An iCalendar object MUST include the "PRODID" and "VERSION" calendar 2270 properties. In addition, it MUST include at least one calendar 2271 component. Special forms of iCalendar objects are possible to 2272 publish just busy time (i.e., only a "VFREEBUSY" calendar component) 2273 or time zone (i.e., only a "VTIMEZONE" calendar component) 2274 information. In addition, a complex iCalendar object is possible 2275 that is used to capture a complete snapshot of the contents of a 2276 calendar (e.g., composite of many different calendar components). 2277 More commonly, an iCalendar object will consist of just a single 2278 "VEVENT", "VTODO" or "VJOURNAL" calendar component. 2280 3.6.1. Event Component 2281 Component Name: VEVENT 2283 Purpose: Provide a grouping of component properties that describe an 2284 event. 2286 Format Definition: A "VEVENT" calendar component is defined by the 2287 following notation: 2289 eventc = "BEGIN" ":" "VEVENT" CRLF 2290 eventprop *alarmc 2291 "END" ":" "VEVENT" CRLF 2293 eventprop = *( 2295 ; the following are optional, 2296 ; but MUST NOT occur more than once 2298 class / created / description / dtstart / geo / 2299 last-mod / location / organizer / priority / 2300 dtstamp / seq / status / summary / transp / 2301 uid / url / recurid / 2303 ; either 'dtend' or 'duration' may appear in 2304 ; a 'eventprop', but 'dtend' and 'duration' 2305 ; MUST NOT occur in the same 'eventprop' 2307 dtend / duration / 2309 ; the following are optional, 2310 ; and MAY occur more than once 2312 attach / attendee / categories / comment / 2313 contact / exdate / exrule / rstatus / related / 2314 resources / rdate / rrule / x-prop 2316 ) 2318 Description: A "VEVENT" calendar component is a grouping of component 2319 properties, and possibly including "VALARM" calendar components, 2320 that represents a scheduled amount of time on a calendar. For 2321 example, it can be an activity; such as a one-hour long, 2322 department meeting from 8:00 AM to 9:00 AM, tomorrow. Generally, 2323 an event will take up time on an individual calendar. Hence, the 2324 event will appear as an opaque interval in a search for busy time. 2325 Alternately, the event can have its Time Transparency set to 2326 "TRANSPARENT" in order to prevent blocking of the event in 2327 searches for busy time. 2329 The "VEVENT" is also the calendar component used to specify an 2330 anniversary or daily reminder within a calendar. These events 2331 have a DATE value type for the "DTSTART" property instead of the 2332 default data type of DATE-TIME. If such a "VEVENT" has a "DTEND" 2333 property, it MUST be specified as a DATE value also. The 2334 anniversary type of "VEVENT" can span more than one date (i.e, 2335 "DTEND" property value is set to a calendar date after the 2336 "DTSTART" property value). 2338 The "DTSTART" property for a "VEVENT" specifies the inclusive 2339 start of the event. For recurring events, it also specifies the 2340 very first instance in the recurrence set. The "DTEND" property 2341 for a "VEVENT" calendar component specifies the non-inclusive end 2342 of the event. For cases where a "VEVENT" calendar component 2343 specifies a "DTSTART" property with a DATE data type but no 2344 "DTEND" property, the events non-inclusive end is the end of the 2345 calendar date specified by the "DTSTART" property. For cases 2346 where a "VEVENT" calendar component specifies a "DTSTART" property 2347 with a DATE-TIME data type but no "DTEND" property, the event ends 2348 on the same calendar date and time of day specified by the 2349 "DTSTART" property. 2351 The "VEVENT" calendar component cannot be nested within another 2352 calendar component. However, "VEVENT" calendar components can be 2353 related to each other or to a "VTODO" or to a "VJOURNAL" calendar 2354 component with the "RELATED-TO" property. 2356 Example: The following is an example of the "VEVENT" calendar 2357 component used to represent a meeting that will also be opaque to 2358 searches for busy time: 2360 BEGIN:VEVENT 2361 UID:19970901T130000Z-123401@host.com 2362 DTSTAMP:19970901T130000Z 2363 DTSTART:19970903T163000Z 2364 DTEND:19970903T190000Z 2365 SUMMARY:Annual Employee Review 2366 CLASS:PRIVATE 2367 CATEGORIES:BUSINESS,HUMAN RESOURCES 2368 END:VEVENT 2370 The following is an example of the "VEVENT" calendar component 2371 used to represent a reminder that will not be opaque, but rather 2372 transparent, to searches for busy time: 2374 BEGIN:VEVENT 2375 UID:19970901T130000Z-123402@host.com 2376 DTSTAMP:19970901T130000Z 2377 DTSTART:19970401T163000Z 2378 DTEND:19970402T010000Z 2379 SUMMARY:Laurel is in sensitivity awareness class. 2380 CLASS:PUBLIC 2381 CATEGORIES:BUSINESS,HUMAN RESOURCES 2382 TRANSP:TRANSPARENT 2383 END:VEVENT 2385 The following is an example of the "VEVENT" calendar component 2386 used to represent an anniversary that will occur annually. Since 2387 it takes up no time, it will not appear as opaque in a search for 2388 busy time; no matter what the value of the "TRANSP" property 2389 indicates: 2391 BEGIN:VEVENT 2392 UID:19970901T130000Z-123403@host.com 2393 DTSTAMP:19970901T130000Z 2394 DTSTART:19971102 2395 SUMMARY:Our Blissful Anniversary 2396 CLASS:CONFIDENTIAL 2397 CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION 2398 RRULE:FREQ=YEARLY 2399 END:VEVENT 2401 3.6.2. To-do Component 2403 Component Name: VTODO 2405 Purpose: Provide a grouping of calendar properties that describe a 2406 to-do. 2408 Format Definition: A "VTODO" calendar component is defined by the 2409 following notation: 2411 todoc = "BEGIN" ":" "VTODO" CRLF 2412 todoprop *alarmc 2413 "END" ":" "VTODO" CRLF 2415 todoprop = *( 2417 ; the following are optional, 2418 ; but MUST NOT occur more than once 2420 class / completed / created / description / dtstamp / 2421 dtstart / geo / last-mod / location / organizer / 2422 percent / priority / recurid / seq / status / 2423 summary / uid / url / 2425 ; either 'due' or 'duration' may appear in 2426 ; a 'todoprop', but 'due' and 'duration' 2427 ; MUST NOT occur in the same 'todoprop' 2429 due / duration / 2431 ; the following are optional, 2432 ; and MAY occur more than once 2433 attach / attendee / categories / comment / contact / 2434 exdate / exrule / rstatus / related / resources / 2435 rdate / rrule / x-prop 2437 ) 2439 Description: A "VTODO" calendar component is a grouping of component 2440 properties and possibly "VALARM" calendar components that 2441 represent an action-item or assignment. For example, it can be 2442 used to represent an item of work assigned to an individual; such 2443 as "turn in travel expense today". 2445 The "VTODO" calendar component cannot be nested within another 2446 calendar component. However, "VTODO" calendar components can be 2447 related to each other or to a "VTODO" or to a "VJOURNAL" calendar 2448 component with the "RELATED-TO" property. 2450 A "VTODO" calendar component without the "DTSTART" and "DUE" (or 2451 "DURATION") properties specifies a to-do that will be associated 2452 with each successive calendar date, until it is completed. 2454 Example: The following is an example of a "VTODO" calendar component: 2456 BEGIN:VTODO 2457 UID:19970901T130000Z-123404@host.com 2458 DTSTAMP:19970901T130000Z 2459 DTSTART:19970415T133000Z 2460 DUE:19970416T045959Z 2461 SUMMARY:1996 Income Tax Preparation 2462 CLASS:CONFIDENTIAL 2463 CATEGORIES:FAMILY,FINANCE 2464 PRIORITY:1 2465 STATUS:NEEDS-ACTION 2466 END:VTODO 2468 3.6.3. Journal Component 2470 Component Name: VJOURNAL 2472 Purpose: Provide a grouping of component properties that describe a 2473 journal entry. 2475 Format Definition: A "VJOURNAL" calendar component is defined by the 2476 following notation: 2478 journalc = "BEGIN" ":" "VJOURNAL" CRLF 2479 jourprop 2480 "END" ":" "VJOURNAL" CRLF 2482 jourprop = *( 2484 ; the following are optional, 2485 ; but MUST NOT occur more than once 2487 class / created / description / dtstart / dtstamp / 2488 last-mod / organizer / recurid / seq / status / 2489 summary / uid / url / 2491 ; the following are optional, 2492 ; and MAY occur more than once 2494 attach / attendee / categories / comment / 2495 contact / exdate / exrule / related / rdate / 2496 rrule / rstatus / x-prop 2497 ) 2499 Description: A "VJOURNAL" calendar component is a grouping of 2500 component properties that represent one or more descriptive text 2501 notes associated with a particular calendar date. The "DTSTART" 2502 property is used to specify the calendar date that the journal 2503 entry is associated with. Generally, it will have a DATE value 2504 data type, but it can also be used to specify a DATE-TIME value 2505 data type. Examples of a journal entry include a daily record of 2506 a legislative body or a journal entry of individual telephone 2507 contacts for the day or an ordered list of accomplishments for the 2508 day. The "VJOURNAL" calendar component can also be used to 2509 associate a document with a calendar date. 2511 The "VJOURNAL" calendar component does not take up time on a 2512 calendar. Hence, it does not play a role in free or busy time 2513 searches - - it is as though it has a time transparency value of 2514 TRANSPARENT. It is transparent to any such searches. 2516 The "VJOURNAL" calendar component cannot be nested within another 2517 calendar component. However, "VJOURNAL" calendar components can 2518 be related to each other or to a "VEVENT" or to a "VTODO" calendar 2519 component, with the "RELATED-TO" property. 2521 Example: The following is an example of the "VJOURNAL" calendar 2522 component: 2524 BEGIN:VJOURNAL 2525 UID:19970901T130000Z-123405@host.com 2526 DTSTAMP:19970901T130000Z 2527 DTSTART;VALUE=DATE:19970317 2528 SUMMARY:Staff meeting minutes 2529 DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa 2530 and Bob. Aurora project plans were reviewed. There is currently 2531 no budget reserves for this project. Lisa will escalate to 2532 management. Next meeting on Tuesday.\n 2533 2. Telephone Conference: ABC Corp. sales representative called 2534 to discuss new printer. Promised to get us a demo by Friday.\n 2535 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. 2536 Is looking into a loaner car. 654-2323 (tel). 2537 END:VJOURNAL 2539 3.6.4. Free/Busy Component 2541 Component Name: VFREEBUSY 2543 Purpose: Provide a grouping of component properties that describe 2544 either a request for free/busy time, describe a response to a 2545 request for free/busy time or describe a published set of busy 2546 time. 2548 Format Definition: A "VFREEBUSY" calendar component is defined by the 2549 following notation: 2551 freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF 2552 fbprop 2553 "END" ":" "VFREEBUSY" CRLF 2555 fbprop = *( 2557 ; the following are optional, 2558 ; but MUST NOT occur more than once 2560 contact / dtstart / dtend / duration / dtstamp / 2561 organizer / uid / url / 2563 ; the following are optional, 2564 ; and MAY occur more than once 2566 attendee / comment / freebusy / rstatus / x-prop 2567 ) 2569 Description: A "VFREEBUSY" calendar component is a grouping of 2570 component properties that represents either a request for, a reply 2571 to a request for free or busy time information or a published set 2572 of busy time information. 2574 When used to request free/busy time information, the "ATTENDEE" 2575 property specifies the calendar users whose free/busy time is 2576 being requested; the "ORGANIZER" property specifies the calendar 2577 user who is requesting the free/busy time; the "DTSTART" and 2578 "DTEND" properties specify the window of time for which the free/ 2579 busy time is being requested; the "UID" and "DTSTAMP" properties 2580 are specified to assist in proper sequencing of multiple free/busy 2581 time requests. 2583 When used to reply to a request for free/busy time, the "ATTENDEE" 2584 property specifies the calendar user responding to the free/busy 2585 time request; the "ORGANIZER" property specifies the calendar user 2586 that originally requested the free/busy time; the "FREEBUSY" 2587 property specifies the free/busy time information (if it exists); 2588 and the "UID" and "DTSTAMP" properties are specified to assist in 2589 proper sequencing of multiple free/busy time replies. 2591 When used to publish busy time, the "ORGANIZER" property specifies 2592 the calendar user associated with the published busy time; the 2593 "DTSTART" and "DTEND" properties specify an inclusive time window 2594 that surrounds the busy time information; the "FREEBUSY" property 2595 specifies the published busy time information; and the "DTSTAMP" 2596 property specifies the date/time that iCalendar object was 2597 created. 2599 The "VFREEBUSY" calendar component cannot be nested within another 2600 calendar component. Multiple "VFREEBUSY" calendar components can 2601 be specified within an iCalendar object. This permits the 2602 grouping of Free/Busy information into logical collections, such 2603 as monthly groups of busy time information. 2605 The "VFREEBUSY" calendar component is intended for use in 2606 iCalendar object methods involving requests for free time, 2607 requests for busy time, requests for both free and busy, and the 2608 associated replies. 2610 Free/Busy information is represented with the "FREEBUSY" property. 2611 This property provides a terse representation of time periods. 2612 One or more "FREEBUSY" properties can be specified in the 2613 "VFREEBUSY" calendar component. 2615 When present in a "VFREEBUSY" calendar component, the "DTSTART" 2616 and "DTEND" properties SHOULD be specified prior to any "FREEBUSY" 2617 properties. In a free time request, these properties can be used 2618 in combination with the "DURATION" property to represent a request 2619 for a duration of free time within a specified window of time. 2621 The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") 2622 are not permitted within a "VFREEBUSY" calendar component. Any 2623 recurring events are resolved into their individual busy time 2624 periods using the "FREEBUSY" property. 2626 Example: The following is an example of a "VFREEBUSY" calendar 2627 component used to request free or busy time information: 2629 BEGIN:VFREEBUSY 2630 ORGANIZER:MAILTO:jane_doe@host1.com 2631 ATTENDEE:MAILTO:john_public@host2.com 2632 DTSTART:19971015T050000Z 2633 DTEND:19971016T050000Z 2634 DTSTAMP:19970901T083000Z 2635 END:VFREEBUSY 2637 The following is an example of a "VFREEBUSY" calendar component 2638 used to reply to the request with busy time information: 2640 BEGIN:VFREEBUSY 2641 ORGANIZER:MAILTO:jane_doe@host1.com 2642 ATTENDEE:MAILTO:john_public@host2.com 2643 DTSTAMP:19970901T100000Z 2644 FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, 2645 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M 2646 URL:http://host2.com/pub/busy/jpublic-01.ifb 2647 COMMENT:This iCalendar file contains busy time information for 2648 the next three months. 2649 END:VFREEBUSY 2651 The following is an example of a "VFREEBUSY" calendar component 2652 used to publish busy time information. 2654 BEGIN:VFREEBUSY 2655 ORGANIZER:jsmith@host.com 2656 DTSTART:19980313T141711Z 2657 DTEND:19980410T141711Z 2658 FREEBUSY:19980314T233000Z/19980315T003000Z 2659 FREEBUSY:19980316T153000Z/19980316T163000Z 2660 FREEBUSY:19980318T030000Z/19980318T040000Z 2661 URL:http://www.host.com/calendar/busytime/jsmith.ifb 2662 END:VFREEBUSY 2664 3.6.5. Time Zone Component 2666 Component Name: VTIMEZONE 2668 Purpose: Provide a grouping of component properties that defines a 2669 time zone. 2671 Format Definition: A "VTIMEZONE" calendar component is defined by the 2672 following notation: 2674 timezonec = "BEGIN" ":" "VTIMEZONE" CRLF 2676 2*( 2678 ; 'tzid' is required, but MUST NOT occur more 2679 ; than once 2681 tzid / 2683 ; 'last-mod' and 'tzurl' are optional, 2684 but MUST NOT occur more than once 2686 last-mod / tzurl / 2687 ; one of 'standardc' or 'daylightc' MUST occur 2688 ; and each MAY occur more than once. 2690 standardc / daylightc / 2692 ; the following is optional, 2693 ; and MAY occur more than once 2695 x-prop 2697 ) 2699 "END" ":" "VTIMEZONE" CRLF 2701 standardc = "BEGIN" ":" "STANDARD" CRLF 2703 tzprop 2705 "END" ":" "STANDARD" CRLF 2707 daylightc = "BEGIN" ":" "DAYLIGHT" CRLF 2709 tzprop 2711 "END" ":" "DAYLIGHT" CRLF 2713 tzprop = 3*( 2715 ; the following are each REQUIRED, 2716 ; but MUST NOT occur more than once 2718 dtstart / tzoffsetto / tzoffsetfrom / 2720 ; the following are optional, 2721 ; and MAY occur more than once 2723 comment / rdate / rrule / tzname / x-prop 2725 ) 2727 Description: A time zone is unambiguously defined by the set of time 2728 measurement rules determined by the governing body for a given 2729 geographic area. These rules describe at a minimum the base 2730 offset from UTC for the time zone, often referred to as the 2731 Standard Time offset. Many locations adjust their Standard Time 2732 forward or backward by one hour, in order to accommodate seasonal 2733 changes in number of daylight hours, often referred to as Daylight 2734 Saving Time. Some locations adjust their time by a fraction of an 2735 hour. Standard Time is also known as Winter Time. Daylight 2736 Saving Time is also known as Advanced Time, Summer Time, or Legal 2737 Time in certain countries. The following table shows the changes 2738 in time zone rules in effect for New York City starting from 1967. 2739 Each line represents a description or rule for a particular 2740 observance. 2742 Effective Observance Rule 2744 +-----------+-------------------------+--------+--------------+ 2745 | Date | (Date/Time) | Offset | Abbreviation | 2746 +-----------+-------------------------+--------+--------------+ 2747 | 1967-* | last Sun in Oct, 02:00 | -0500 | EST | 2748 | 1967-1973 | last Sun in Apr, 02:00 | -0400 | EDT | 2749 | 1974-1974 | Jan 6, 02:00 | -0400 | EDT | 2750 | 1975-1975 | Feb 23, 02:00 | -0400 | EDT | 2751 | 1976-1986 | last Sun in Apr, 02:00 | -0400 | EDT | 2752 | 1987-* | first Sun in Apr, 02:00 | -0400 | EDT | 2753 +-----------+-------------------------+--------+--------------+ 2755 Effective Observance Rule 2757 Date (Date/Time) Offset Abbreviation 2759 1967-* last Sun in Oct, 02:00 -0500 EST 2761 1967-1973 last Sun in Apr, 02:00 -0400 EDT 2763 1974-1974 Jan 6, 02:00 -0400 EDT 2765 1975-1975 Feb 23, 02:00 -0400 EDT 2767 1976-1986 last Sun in Apr, 02:00 -0400 EDT 2769 1987-* first Sun in Apr, 02:00 -0400 EDT 2771 Note: The specification of a global time zone registry is not 2772 addressed by this document and is left for future study. 2773 However, implementers may find the Olson time zone database 2774 [TZDB] a useful reference. It is an informal, public-domain 2775 collection of time zone information, which is currently being 2776 maintained by volunteer Internet participants, and is used in 2777 several operating systems. This database contains current and 2778 historical time zone information for a wide variety of 2779 locations around the globe; it provides a time zone identifier 2780 for every unique time zone rule set in actual use since 1970, 2781 with historical data going back to the introduction of standard 2782 time. 2784 Interoperability between two calendaring and scheduling 2785 applications, especially for recurring events, to-dos or journal 2786 entries, is dependent on the ability to capture and convey date 2787 and time information in an unambiguous format. The specification 2788 of current time zone information is integral to this behavior. 2790 If present, the "VTIMEZONE" calendar component defines the set of 2791 Standard Time and Daylight Saving Time observances (or rules) for 2792 a particular time zone for a given interval of time. The 2793 "VTIMEZONE" calendar component cannot be nested within other 2794 calendar components. Multiple "VTIMEZONE" calendar components can 2795 exist in an iCalendar object. In this situation, each "VTIMEZONE" 2796 MUST represent a unique time zone definition. This is necessary 2797 for some classes of events, such as airline flights, that start in 2798 one time zone and end in another. 2800 The "VTIMEZONE" calendar component MUST be present if the 2801 iCalendar object contains an RRULE that generates dates on both 2802 sides of a time zone shift (e.g., both in Standard Time and 2803 Daylight Saving Time) unless the iCalendar object intends to 2804 convey a floating time ( see Section 3.3.12 for proper 2805 interpretation of floating time). It can be present if the 2806 iCalendar object does not contain such a RRULE. In addition, if a 2807 RRULE is present, there MUST be valid time zone information for 2808 all recurrence instances. 2810 The "VTIMEZONE" calendar component MUST include the "TZID" 2811 property and at least one definition of a standard or daylight 2812 component. The standard or daylight component MUST include the 2813 "DTSTART", "TZOFFSETFROM" and "TZOFFSETTO" properties. 2815 An individual "VTIMEZONE" calendar component MUST be specified for 2816 each unique "TZID" parameter value specified in the iCalendar 2817 object. 2819 Each "VTIMEZONE" calendar component consists of a collection of 2820 one or more sub-components that describe the rule for a particular 2821 observance (either a Standard Time or a Daylight Saving Time 2822 observance). The "STANDARD" sub-component consists of a 2823 collection of properties that describe Standard Time. The 2824 "DAYLIGHT" sub-component consists of a collection of properties 2825 that describe Daylight Saving Time. In general this collection of 2826 properties consists of: 2828 the first onset date-time for the observance 2830 the last onset date-time for the observance, if a last onset is 2831 known. 2833 the offset to be applied for the observance 2835 a rule that describes the day and time when the observance 2836 takes effect 2838 an optional name for the observance 2840 For a given time zone, there may be multiple unique definitions of 2841 the observances over a period of time. Each observance is 2842 described using either a "STANDARD" or "DAYLIGHT" sub-component. 2843 The collection of these sub-components is used to describe the 2844 time zone for a given period of time. The offset to apply at any 2845 given time is found by locating the observance that has the last 2846 onset date and time before the time in question, and using the 2847 offset value from that observance. 2849 The top-level properties in a "VTIMEZONE" calendar component are: 2851 The mandatory "TZID" property is a text value that uniquely 2852 identifies the VTIMEZONE; and each MAY occur more than once. 2853 calendar component within the scope of an iCalendar object. 2855 The optional "LAST-MODIFIED" property is a UTC value that 2856 specifies the date and time that this time zone definition was 2857 last updated. 2859 The optional "TZURL" property is a url value that points to a 2860 published VTIMEZONE definition. TZURL SHOULD refer to a resource 2861 that is accessible by anyone who might need to interpret the 2862 object. This SHOULD NOT normally be a "file" URL or other URL 2863 that is not widely-accessible. 2865 The collection of properties that are used to define the STANDARD 2866 and DAYLIGHT sub-components include: 2868 The mandatory "DTSTART" property gives the effective onset date 2869 and local time for the time zone sub-component definition. 2870 "DTSTART" in this usage MUST be specified as a local DATE-TIME 2871 value. 2873 The mandatory "TZOFFSETFROM" property gives the UTC offset which 2874 is in use when the onset of this time zone observance begins. 2875 "TZOFFSETFROM" is combined with "DTSTART" to define the effective 2876 onset for the time zone sub-component definition. For example, 2877 the following represents the time at which the observance of 2878 Standard Time took effect in Fall 1967 for New York City: 2880 DTSTART:19671029T020000 2882 TZOFFSETFROM:-0400 2884 The mandatory "TZOFFSETTO " property gives the UTC offset for the 2885 time zone sub-component (Standard Time or Daylight Saving Time) 2886 when this observance is in use. 2888 The optional "TZNAME" property is the customary name for the time 2889 zone. It may be specified multiple times, to allow for specifying 2890 multiple language variants of the time zone names. This could be 2891 used for displaying dates. 2893 If specified, the onset for the observance defined by the time 2894 zone sub-component is defined by either the "RRULE" or "RDATE" 2895 property. If neither is specified, only one sub-component can be 2896 specified in the "VTIMEZONE" calendar component and it is assumed 2897 that the single observance specified is always in effect. 2899 The "RRULE" property defines the recurrence rule for the onset of 2900 the observance defined by this time zone sub-component. Some 2901 specific requirements for the usage of RRULE for this purpose 2902 include: 2904 If observance is known to have an effective end date, the 2905 "UNTIL" recurrence rule parameter MUST be used to specify the 2906 last valid onset of this observance (i.e., the UNTIL date-time 2907 will be equal to the last instance generated by the recurrence 2908 pattern). It MUST be specified in UTC time. 2910 The "DTSTART" and the "TZOFFSETTO" properties MUST be used when 2911 generating the onset date-time values (instances) from the 2912 RRULE. 2914 Alternatively, the "RDATE" property can be used to define the 2915 onset of the observance by giving the individual onset date and 2916 times. "RDATE" in this usage MUST be specified as a local DATE- 2917 TIME value in UTC time. 2919 The optional "COMMENT" property is also allowed for descriptive 2920 explanatory text. 2922 Example: The following are examples of the "VTIMEZONE" calendar 2923 component: 2925 This is an example showing time zone information for the Eastern 2926 United States using "RDATE" property. Note that this is only 2927 suitable for a recurring event that starts on or later than April 2928 6, 1997 at 03:00:00 EDT (i.e., the earliest effective transition 2929 date and time) and ends no later than April 7, 1998 02:00:00 EST 2930 (i.e., latest valid date and time for EST in this scenario). For 2931 example, this can be used for a recurring event that occurs every 2932 Friday, 8:00AM-9:00 AM, starting June 1, 1997, ending December 31, 2933 1997. 2935 BEGIN:VTIMEZONE 2936 TZID:US-Eastern 2937 LAST-MODIFIED:19870101T000000Z 2938 BEGIN:STANDARD 2939 DTSTART:19971026T020000 2940 RDATE:19971026T020000 2941 TZOFFSETFROM:-0400 2942 TZOFFSETTO:-0500 2943 TZNAME:EST 2944 END:STANDARD 2945 BEGIN:DAYLIGHT 2946 DTSTART:19970406T020000 2947 RDATE:19970406T020000 2948 TZOFFSETFROM:-0500 2949 TZOFFSETTO:-0400 2950 TZNAME:EDT 2951 END:DAYLIGHT 2952 END:VTIMEZONE 2954 This is a simple example showing the current time zone rules for 2955 the Eastern United States using a RRULE recurrence pattern. Note 2956 that there is no effective end date to either of the Standard Time 2957 or Daylight Time rules. This information would be valid for a 2958 recurring event starting today and continuing indefinitely. 2960 BEGIN:VTIMEZONE 2961 TZID:US-Eastern 2962 LAST-MODIFIED:19870101T000000Z 2963 TZURL:http://zones.example.com/tz/US-Eastern.ics 2964 BEGIN:STANDARD 2965 DTSTART:19671029T020000 2966 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 2967 TZOFFSETFROM:-0400 2968 TZOFFSETTO:-0500 2969 TZNAME:EST 2970 END:STANDARD 2971 BEGIN:DAYLIGHT 2972 DTSTART:19870405T020000 2973 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 2974 TZOFFSETFROM:-0500 2975 TZOFFSETTO:-0400 2976 TZNAME:EDT 2977 END:DAYLIGHT 2978 END:VTIMEZONE 2980 This is an example showing a fictitious set of rules for the 2981 Eastern United States, where the Daylight Time rule has an 2982 effective end date (i.e., after that date, Daylight Time is no 2983 longer observed). 2985 BEGIN:VTIMEZONE 2986 TZID:US--Fictitious-Eastern 2987 LAST-MODIFIED:19870101T000000Z 2988 BEGIN:STANDARD 2989 DTSTART:19671029T020000 2990 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 2991 TZOFFSETFROM:-0400 2992 TZOFFSETTO:-0500 2993 TZNAME:EST 2994 END:STANDARD 2995 BEGIN:DAYLIGHT 2996 DTSTART:19870405T020000 2997 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z 2998 TZOFFSETFROM:-0500 2999 TZOFFSETTO:-0400 3000 TZNAME:EDT 3001 END:DAYLIGHT 3002 END:VTIMEZONE 3004 This is an example showing a fictitious set of rules for the 3005 Eastern United States, where the first Daylight Time rule has an 3006 effective end date. There is a second Daylight Time rule that 3007 picks up where the other left off. 3009 BEGIN:VTIMEZONE 3010 TZID:US--Fictitious-Eastern 3011 LAST-MODIFIED:19870101T000000Z 3012 BEGIN:STANDARD 3013 DTSTART:19671029T020000 3014 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 3015 TZOFFSETFROM:-0400 3016 TZOFFSETTO:-0500 3017 TZNAME:EST 3018 END:STANDARD 3019 BEGIN:DAYLIGHT 3020 DTSTART:19870405T020000 3021 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z 3022 TZOFFSETFROM:-0500 3023 TZOFFSETTO:-0400 3024 TZNAME:EDT 3025 END:DAYLIGHT 3026 BEGIN:DAYLIGHT 3027 DTSTART:19990424T020000 3028 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 3029 TZOFFSETFROM:-0500 3030 TZOFFSETTO:-0400 3031 TZNAME:EDT 3032 END:DAYLIGHT 3033 END:VTIMEZONE 3035 3.6.6. Alarm Component 3037 Component Name: VALARM 3039 Purpose: Provide a grouping of component properties that define an 3040 alarm. 3042 Format Definition: A "VALARM" calendar component is defined by the 3043 following notation: 3045 alarmc = "BEGIN" ":" "VALARM" CRLF 3046 (audioprop / dispprop / emailprop / procprop) 3047 "END" ":" "VALARM" CRLF 3049 audioprop = 2*( 3051 ; 'action' and 'trigger' are both REQUIRED, 3052 ; but MUST NOT occur more than once 3054 action / trigger / 3056 ; 'duration' and 'repeat' are both optional, 3057 ; and MUST NOT occur more than once each, 3058 ; but if one occurs, so MUST the other 3060 duration / repeat / 3062 ; the following is optional, 3063 ; but MUST NOT occur more than once 3065 attach / 3067 ; the following is optional, 3068 ; and MAY occur more than once 3070 x-prop 3072 ) 3074 dispprop = 3*( 3076 ; the following are all REQUIRED, 3077 ; but MUST NOT occur more than once 3079 action / description / trigger / 3081 ; 'duration' and 'repeat' are both optional, 3082 ; and MUST NOT occur more than once each, 3083 ; but if one occurs, so MUST the other 3085 duration / repeat / 3087 ; the following is optional, 3088 ; and MAY occur more than once 3090 x-prop 3092 ) 3094 emailprop = 5*( 3096 ; the following are all REQUIRED, 3097 ; but MUST NOT occur more than once 3099 action / description / trigger / summary / 3100 ; the following is REQUIRED, 3101 ; and MAY occur more than once 3103 attendee / 3105 ; 'duration' and 'repeat' are both optional, 3106 ; and MUST NOT occur more than once each, 3107 ; but if one occurs, so MUST the other 3109 duration / repeat / 3111 ; the following are optional, 3112 ; and MAY occur more than once 3114 attach / x-prop 3116 ) 3118 procprop = 3*( 3120 ; the following are all REQUIRED, 3121 ; but MUST NOT occur more than once 3123 action / attach / trigger / 3125 ; 'duration' and 'repeat' are both optional, 3126 ; and MUST NOT occur more than once each, 3127 ; but if one occurs, so MUST the other 3129 duration / repeat / 3131 ; 'description' is optional, 3132 ; and MUST NOT occur more than once 3134 description / 3136 ; the following is optional, 3137 ; and MAY occur more than once 3139 x-prop 3141 ) 3143 Description: A "VALARM" calendar component is a grouping of component 3144 properties that is a reminder or alarm for an event or a to-do. 3145 For example, it may be used to define a reminder for a pending 3146 event or an overdue to-do. 3148 The "VALARM" calendar component MUST include the "ACTION" and 3149 "TRIGGER" properties. The "ACTION" property further constrains 3150 the "VALARM" calendar component in the following ways: 3152 When the action is "AUDIO", the alarm can also include one and 3153 only one "ATTACH" property, which MUST point to a sound resource, 3154 which is rendered when the alarm is triggered. 3156 When the action is "DISPLAY", the alarm MUST also include a 3157 "DESCRIPTION" property, which contains the text to be displayed 3158 when the alarm is triggered. 3160 When the action is "EMAIL", the alarm MUST include a "DESCRIPTION" 3161 property, which contains the text to be used as the message body, 3162 a "SUMMARY" property, which contains the text to be used as the 3163 message subject, and one or more "ATTENDEE" properties, which 3164 contain the email address of attendees to receive the message. It 3165 can also include one or more "ATTACH" properties, which are 3166 intended to be sent as message attachments. When the alarm is 3167 triggered, the email message is sent. 3169 When the action is "PROCEDURE", the alarm MUST include one and 3170 only one "ATTACH" property, which MUST point to a procedure 3171 resource, which is invoked when the alarm is triggered. 3173 The "VALARM" calendar component MUST only appear within either a 3174 "VEVENT" or "VTODO" calendar component. "VALARM" calendar 3175 components cannot be nested. Multiple mutually independent 3176 "VALARM" calendar components can be specified for a single 3177 "VEVENT" or "VTODO" calendar component. 3179 The "TRIGGER" property specifies when the alarm will be triggered. 3180 The "TRIGGER" property specifies a duration prior to the start of 3181 an event or a to-do. The "TRIGGER" edge may be explicitly set to 3182 be relative to the "START" or "END" of the event or to-do with the 3183 "RELATED" parameter of the "TRIGGER" property. The "TRIGGER" 3184 property value type can alternatively be set to an absolute 3185 calendar date and time of day value. 3187 In an alarm set to trigger on the "START" of an event or to-do, 3188 the "DTSTART" property MUST be present in the associated event or 3189 to-do. In an alarm in a "VEVENT" calendar component set to 3190 trigger on the "END" of the event, either the "DTEND" property 3191 MUST be present, or the "DTSTART" and "DURATION" properties MUST 3192 both be present. In an alarm in a "VTODO" calendar component set 3193 to trigger on the "END" of the to-do, either the "DUE" property 3194 MUST be present, or the "DTSTART" and "DURATION" properties MUST 3195 both be present. 3197 The alarm can be defined such that it triggers repeatedly. A 3198 definition of an alarm with a repeating trigger MUST include both 3199 the "DURATION" and "REPEAT" properties. The "DURATION" property 3200 specifies the delay period, after which the alarm will repeat. 3201 The "REPEAT" property specifies the number of additional 3202 repetitions that the alarm will be triggered. This repetition 3203 count is in addition to the initial triggering of the alarm. Both 3204 of these properties MUST be present in order to specify a 3205 repeating alarm. If one of these two properties is absent, then 3206 the alarm will not repeat beyond the initial trigger. 3208 The "ACTION" property is used within the "VALARM" calendar 3209 component to specify the type of action invoked when the alarm is 3210 triggered. The "VALARM" properties provide enough information for 3211 a specific action to be invoked. It is typically the 3212 responsibility of a "Calendar User Agent" (CUA) to deliver the 3213 alarm in the specified fashion. An "ACTION" property value of 3214 AUDIO specifies an alarm that causes a sound to be played to alert 3215 the user; DISPLAY specifies an alarm that causes a text message to 3216 be displayed to the user; EMAIL specifies an alarm that causes an 3217 electronic email message to be delivered to one or more email 3218 addresses; and PROCEDURE specifies an alarm that causes a 3219 procedure to be executed. The "ACTION" property MUST specify one 3220 and only one of these values. 3222 In an AUDIO alarm, if the optional "ATTACH" property is included, 3223 it MUST specify an audio sound resource. The intention is that 3224 the sound will be played as the alarm effect. If an "ATTACH" 3225 property is specified that does not refer to a sound resource, or 3226 if the specified sound resource cannot be rendered (because its 3227 format is unsupported, or because it cannot be retrieved), then 3228 the CUA or other entity responsible for playing the sound may 3229 choose a fallback action, such as playing a built-in default 3230 sound, or playing no sound at all. 3232 In a DISPLAY alarm, the intended alarm effect is for the text 3233 value of the "DESCRIPTION" property to be displayed to the user. 3235 In an EMAIL alarm, the intended alarm effect is for an email 3236 message to be composed and delivered to all the addresses 3237 specified by the "ATTENDEE" properties in the "VALARM" calendar 3238 component. The "DESCRIPTION" property of the "VALARM" calendar 3239 component MUST be used as the body text of the message, and the 3240 "SUMMARY" property MUST be used as the subject text. Any "ATTACH" 3241 properties in the "VALARM" calendar component SHOULD be sent as 3242 attachments to the message. 3244 In a PROCEDURE alarm, the "ATTACH" property in the "VALARM" 3245 calendar component MUST specify a procedure or program that is 3246 intended to be invoked as the alarm effect. If the procedure or 3247 program is in a format that cannot be rendered, then no procedure 3248 alarm will be invoked. If the "DESCRIPTION" property is present, 3249 its value specifies the argument string to be passed to the 3250 procedure or program. "Calendar User Agents" that receive an 3251 iCalendar object with this category of alarm, can disable or allow 3252 the "Calendar User" to disable, or otherwise ignore this type of 3253 alarm. While a very useful alarm capability, the PROCEDURE type 3254 of alarm SHOULD be treated by the "Calendar User Agent" as a 3255 potential security risk. 3257 Example: The following example is for a "VALARM" calendar component 3258 that specifies an audio alarm that will sound at a precise time 3259 and repeat 4 more times at 15 minute intervals: 3261 BEGIN:VALARM 3262 TRIGGER;VALUE=DATE-TIME:19970317T133000Z 3263 REPEAT:4 3264 DURATION:PT15M 3265 ACTION:AUDIO 3266 ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud 3267 END:VALARM 3269 The following example is for a "VALARM" calendar component that 3270 specifies a display alarm that will trigger 30 minutes before the 3271 scheduled start of the event or the due date/time of the to-do it 3272 is associated with and will repeat 2 more times at 15 minute 3273 intervals: 3275 BEGIN:VALARM 3276 TRIGGER:-PT30M 3277 REPEAT:2 3278 DURATION:PT15M 3279 ACTION:DISPLAY 3280 DESCRIPTION:Breakfast meeting with executive\n 3281 team at 8:30 AM EST. 3282 END:VALARM 3284 The following example is for a "VALARM" calendar component that 3285 specifies an email alarm that will trigger 2 days before the 3286 scheduled due date/time of a to-do it is associated with. It does 3287 not repeat. The email has a subject, body and attachment link. 3289 BEGIN:VALARM 3290 TRIGGER:-P2D 3291 ACTION:EMAIL 3292 ATTENDEE:MAILTO:john_doe@host.com 3293 SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** 3294 DESCRIPTION:A draft agenda needs to be sent out to the attendees 3295 to the weekly managers meeting (MGR-LIST). Attached is a 3296 pointer the document template for the agenda file. 3297 ATTACH;FMTTYPE=application/msword:http://host.com/templates/agen 3298 da.doc 3299 END:VALARM 3301 The following example is for a "VALARM" calendar component that 3302 specifies a procedural alarm that will trigger at a precise date/ 3303 time and will repeat 23 more times at one hour intervals. The 3304 alarm will invoke a procedure file. 3306 BEGIN:VALARM 3307 TRIGGER;VALUE=DATE-TIME:19980101T050000Z 3308 REPEAT:23 3309 DURATION:PT1H 3310 ACTION:PROCEDURE 3311 ATTACH;FMTTYPE=application/octet-stream:ftp://host.com/novo- 3312 procs/felizano.exe 3313 END:VALARM 3315 3.7. Calendar Properties 3317 The Calendar Properties are attributes that apply to the iCalendar 3318 object, as a whole. These properties do not appear within a calendar 3319 component. They SHOULD be specified after the "BEGIN:VCALENDAR" 3320 delimiter string and prior to any calendar component. 3322 3.7.1. Calendar Scale 3324 Property Name: CALSCALE 3326 Purpose: This property defines the calendar scale used for the 3327 calendar information specified in the iCalendar object. 3329 Value Type: TEXT 3331 Property Parameters: Non-standard property parameters can be 3332 specified on this property. 3334 Conformance: Property can be specified in an iCalendar object. The 3335 default value is "GREGORIAN". 3337 Description: This memo is based on the Gregorian calendar scale. The 3338 Gregorian calendar scale is assumed if this property is not 3339 specified in the iCalendar object. It is expected that other 3340 calendar scales will be defined in other specifications or by 3341 future versions of this memo. 3343 Format Definition: The property is defined by the following notation: 3345 calscale = "CALSCALE" calparam ":" calvalue CRLF 3347 calparam = *(";" xparam) 3349 calvalue = "GREGORIAN" / iana-token 3351 Example: The following is an example of this property: 3353 CALSCALE:GREGORIAN 3355 3.7.2. Method 3357 Property Name: METHOD 3359 Purpose: This property defines the iCalendar object method associated 3360 with the calendar object. 3362 Value Type: TEXT 3364 Property Parameters: Non-standard property parameters can be 3365 specified on this property. 3367 Conformance: The property can be specified in an iCalendar object. 3369 Description: When used in a MIME message entity, the value of this 3370 property MUST be the same as the Content-Type "method" parameter 3371 value. This property can only appear once within the iCalendar 3372 object. If either the "METHOD" property or the Content-Type 3373 "method" parameter is specified, then the other MUST also be 3374 specified. 3376 No methods are defined by this specification. This is the subject 3377 of other specifications, such as the iCalendar Transport- 3378 independent Interoperability Protocol (iTIP) defined by [I-D.ietf- 3379 calsify-2446bis]. 3381 If this property is not present in the iCalendar object, then a 3382 scheduling transaction MUST NOT be assumed. In such cases, the 3383 iCalendar object is merely being used to transport a snapshot of 3384 some calendar information; without the intention of conveying a 3385 scheduling semantic. 3387 Format Definition: The property is defined by the following notation: 3389 method = "METHOD" metparam ":" metvalue CRLF 3391 metparam = *(";" xparam) 3393 metvalue = iana-token 3395 Example: The following is a hypothetical example of this property to 3396 convey that the iCalendar object is a request for a meeting: 3398 METHOD:REQUEST 3400 3.7.3. Product Identifier 3402 Property Name: PRODID 3404 Purpose: This property specifies the identifier for the product that 3405 created the iCalendar object. 3407 Value Type: TEXT 3409 Property Parameters: Non-standard property parameters can be 3410 specified on this property. 3412 Conformance: The property MUST be specified once in an iCalendar 3413 object. 3415 Description: The vendor of the implementation SHOULD assure that this 3416 is a globally unique identifier; using some technique such as an 3417 FPI value, as defined in [ISO.9070.1991]. 3419 This property SHOULD not be used to alter the interpretation of an 3420 iCalendar object beyond the semantics specified in this memo. For 3421 example, it is not to be used to further the understanding of non- 3422 standard properties. 3424 Format Definition: The property is defined by the following notation: 3426 prodid = "PRODID" pidparam ":" pidvalue CRLF 3428 pidparam = *(";" xparam) 3430 pidvalue = text 3431 ;Any text that describes the product and version 3432 ;and that is generally assured of being unique. 3434 Example: The following is an example of this property. It does not 3435 imply that English is the default language. 3437 PRODID:-//ABC Corporation//NONSGML My Product//EN 3439 3.7.4. Version 3441 Property Name: VERSION 3443 Purpose: This property specifies the identifier corresponding to the 3444 highest version number or the minimum and maximum range of the 3445 iCalendar specification that is required in order to interpret the 3446 iCalendar object. 3448 Value Type: TEXT 3450 Property Parameters: Non-standard property parameters can be 3451 specified on this property. 3453 Conformance: This property MUST be specified by an iCalendar object, 3454 but MUST only be specified once. 3456 Description: A value of "2.0" corresponds to this memo. 3458 Format Definition: The property is defined by the following notation: 3460 version = "VERSION" verparam ":" vervalue CRLF 3462 verparam = *(";" xparam) 3464 vervalue = "2.0" ;This memo 3465 / maxver 3466 / (minver ";" maxver) 3468 minver = 3469 ;Minimum iCalendar version needed to parse the iCalendar object 3471 maxver = 3472 ;Maximum iCalendar version needed to parse the iCalendar object 3474 Example: The following is an example of this property: 3476 VERSION:2.0 3478 3.8. Component Properties 3480 The following properties can appear within calendar components, as 3481 specified by each component property definition. 3483 3.8.1. Descriptive Component Properties 3485 The following properties specify descriptive information about 3486 calendar components. 3488 3.8.1.1. Attachment 3490 Property Name: ATTACH 3492 Purpose: The property provides the capability to associate a document 3493 object with a calendar component. 3495 Value Type: The default value type for this property is URI. The 3496 value type can also be set to BINARY to indicate inline binary 3497 encoded content information. 3499 Property Parameters: Non-standard, inline encoding, format type and 3500 value data type property parameters can be specified on this 3501 property. 3503 Conformance: The property can be specified in a "VEVENT", "VTODO", 3504 "VJOURNAL" or "VALARM" calendar components. 3506 Description: The property can be specified within "VEVENT", "VTODO", 3507 "VJOURNAL", or "VALARM" calendar components. This property can be 3508 specified multiple times within an iCalendar object. 3510 Format Definition: The property is defined by the following notation: 3512 attach = "ATTACH" attparam ":" uri CRLF 3514 attach =/ "ATTACH" attparam ";" "ENCODING" "=" "BASE64" 3515 ";" "VALUE" "=" "BINARY" ":" binary 3517 attparam = *( 3519 ; the following is optional, 3520 ; but MUST NOT occur more than once 3522 (";" fmttypeparam) / 3524 ; the following is optional, 3525 ; and MAY occur more than once 3527 (";" xparam) 3529 ) 3531 Example: The following are examples of this property: 3533 ATTACH:CID:jsmith.part3.960817T083000.xyzMail@host1.com 3535 ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ 3536 reports/r-960812.ps 3538 3.8.1.2. Categories 3540 Property Name: CATEGORIES 3542 Purpose: This property defines the categories for a calendar 3543 component. 3545 Value Type: TEXT 3547 Property Parameters: Non-standard and language property parameters 3548 can be specified on this property. 3550 Conformance: The property can be specified within "VEVENT", "VTODO" 3551 or "VJOURNAL" calendar components. 3553 Description: This property is used to specify categories or subtypes 3554 of the calendar component. The categories are useful in searching 3555 for a calendar component of a particular type and category. 3556 Within the "VEVENT", "VTODO" or "VJOURNAL" calendar components, 3557 more than one category can be specified as a list of categories 3558 separated by the COMMA character (US-ASCII decimal 44). 3560 Format Definition: The property is defined by the following notation: 3562 categories = "CATEGORIES" catparam ":" text *("," text) 3563 CRLF 3565 catparam = *( 3567 ; the following is optional, 3568 ; but MUST NOT occur more than once 3570 (";" languageparam ) / 3572 ; the following is optional, 3573 ; and MAY occur more than once 3575 (";" xparam) 3577 ) 3579 Example: The following are examples of this property: 3581 CATEGORIES:APPOINTMENT,EDUCATION 3583 CATEGORIES:MEETING 3585 3.8.1.3. Classification 3587 Property Name: CLASS 3589 Purpose: This property defines the access classification for a 3590 calendar component. 3592 Value Type: TEXT 3594 Property Parameters: Non-standard property parameters can be 3595 specified on this property. 3597 Conformance: The property can be specified once in a "VEVENT", 3598 "VTODO" or "VJOURNAL" calendar components. 3600 Description: An access classification is only one component of the 3601 general security system within a calendar application. It 3602 provides a method of capturing the scope of the access the 3603 calendar owner intends for information within an individual 3604 calendar entry. The access classification of an individual 3605 iCalendar component is useful when measured along with the other 3606 security components of a calendar system (e.g., calendar user 3607 authentication, authorization, access rights, access role, etc.). 3609 Hence, the semantics of the individual access classifications 3610 cannot be completely defined by this memo alone. Additionally, 3611 due to the "blind" nature of most exchange processes using this 3612 memo, these access classifications cannot serve as an enforcement 3613 statement for a system receiving an iCalendar object. Rather, 3614 they provide a method for capturing the intention of the calendar 3615 owner for the access to the calendar component. 3617 Format Definition: The property is defined by the following notation: 3619 class = "CLASS" classparam ":" classvalue CRLF 3621 classparam = *(";" xparam) 3623 classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token 3624 / x-name 3625 ;Default is PUBLIC 3627 Example: The following is an example of this property: 3629 CLASS:PUBLIC 3631 3.8.1.4. Comment 3633 Property Name: COMMENT 3635 Purpose: This property specifies non-processing information intended 3636 to provide a comment to the calendar user. 3638 Value Type: TEXT 3640 Property Parameters: Non-standard, alternate text representation and 3641 language property parameters can be specified on this property. 3643 Conformance: This property can be specified in "VEVENT", "VTODO", 3644 "VJOURNAL", "VTIMEZONE" or "VFREEBUSY" calendar components. 3646 Description: The property can be specified multiple times. 3648 Format Definition: The property is defined by the following notation: 3650 comment = "COMMENT" commparam ":" text CRLF 3652 commparam = *( 3654 ; the following are optional, 3655 ; but MUST NOT occur more than once 3657 (";" altrepparam) / (";" languageparam) / 3659 ; the following is optional, 3660 ; and MAY occur more than once 3662 (";" xparam) 3664 ) 3666 Example: The following is an example of this property: 3668 COMMENT:The meeting really needs to include both ourselves 3669 and the customer. We can't hold this meeting without them. 3670 As a matter of fact\, the venue for the meeting ought to be at 3671 their site. - - John 3673 3.8.1.5. Description 3675 Property Name: DESCRIPTION 3677 Purpose: This property provides a more complete description of the 3678 calendar component, than that provided by the "SUMMARY" property. 3680 Value Type: TEXT 3682 Property Parameters: Non-standard, alternate text representation and 3683 language property parameters can be specified on this property. 3685 Conformance: The property can be specified in the "VEVENT", "VTODO", 3686 "VJOURNAL" or "VALARM" calendar components. The property can be 3687 specified multiple times only within a "VJOURNAL" calendar 3688 component. 3690 Description: This property is used in the "VEVENT" and "VTODO" to 3691 capture lengthy textual decriptions associated with the activity. 3693 This property is used in the "VJOURNAL" calendar component to 3694 capture one more textual journal entries. 3696 This property is used in the "VALARM" calendar component to 3697 capture the display text for a DISPLAY category of alarm, to 3698 capture the body text for an EMAIL category of alarm and to 3699 capture the argument string for a PROCEDURE category of alarm. 3701 Format Definition: The property is defined by the following notation: 3703 description = "DESCRIPTION" descparam ":" text CRLF 3705 descparam = *( 3707 ; the following are optional, 3708 ; but MUST NOT occur more than once 3710 (";" altrepparam) / (";" languageparam) / 3712 ; the following is optional, 3713 ; and MAY occur more than once 3715 (";" xparam) 3717 ) 3719 Example: The following is an example of the property with formatted 3720 line breaks in the property value: 3722 DESCRIPTION:Meeting to provide technical review for "Phoenix" 3723 design.\n Happy Face Conference Room. Phoenix design team 3724 MUST attend this meeting.\n RSVP to team leader. 3726 The following is an example of the property with folding of long 3727 lines: 3729 DESCRIPTION:Last draft of the new novel is to be completed 3730 for the editor's proof today. 3732 3.8.1.6. Geographic Position 3734 Property Name: GEO 3736 Purpose: This property specifies information related to the global 3737 position for the activity specified by a calendar component. 3739 Value Type: FLOAT. The value MUST be two SEMICOLON separated FLOAT 3740 values. 3742 Property Parameters: Non-standard property parameters can be 3743 specified on this property. 3745 Conformance: This property can be specified in "VEVENT" or "VTODO" 3746 calendar components. 3748 Description: The property value specifies latitude and longitude, in 3749 that order (i.e., "LAT LON" ordering). The longitude represents 3750 the location east or west of the prime meridian as a positive or 3751 negative real number, respectively. The longitude and latitude 3752 values MAY be specified up to six decimal places, which will allow 3753 for accuracy to within one meter of geographical position. 3754 Receiving applications MUST accept values of this precision and 3755 MAY truncate values of greater precision. 3757 Values for latitude and longitude shall be expressed as decimal 3758 fractions of degrees. Whole degrees of latitude shall be 3759 represented by a two-digit decimal number ranging from 0 through 3760 90. Whole degrees of longitude shall be represented by a decimal 3761 number ranging from 0 through 180. When a decimal fraction of a 3762 degree is specified, it shall be separated from the whole number 3763 of degrees by a decimal point. 3765 Latitudes north of the equator shall be specified by a plus sign 3766 (+), or by the absence of a minus sign (-), preceding the digits 3767 designating degrees. Latitudes south of the Equator shall be 3768 designated by a minus sign (-) preceding the digits designating 3769 degrees. A point on the Equator shall be assigned to the Northern 3770 Hemisphere. 3772 Longitudes east of the prime meridian shall be specified by a plus 3773 sign (+), or by the absence of a minus sign (-), preceding the 3774 digits designating degrees. Longitudes west of the meridian shall 3775 be designated by minus sign (-) preceding the digits designating 3776 degrees. A point on the prime meridian shall be assigned to the 3777 Eastern Hemisphere. A point on the 180th meridian shall be 3778 assigned to the Western Hemisphere. One exception to this last 3779 convention is permitted. For the special condition of describing 3780 a band of latitude around the earth, the East Bounding Coordinate 3781 data element shall be assigned the value +180 (180) degrees. 3783 Any spatial address with a latitude of +90 (90) or -90 degrees 3784 will specify the position at the North or South Pole, 3785 respectively. The component for longitude may have any legal 3786 value. 3788 With the exception of the special condition described above, this 3789 form is specified in Department of Commerce, 1986, Representation 3790 of geographic point locations for information interchange (Federal 3791 Information Processing Standard 70-1): Washington, Department of 3792 Commerce, National Institute of Standards and Technology. 3794 The simple formula for converting degrees-minutes-seconds into 3795 decimal degrees is: 3797 decimal = degrees + minutes/60 + seconds/3600. 3799 Format Definition: The property is defined by the following notation: 3801 geo = "GEO" geoparam ":" geovalue CRLF 3803 geoparam = *(";" xparam) 3805 geovalue = float ";" float 3806 ;Latitude and Longitude components 3808 Example: The following is an example of this property: 3810 GEO:37.386013;-122.082932 3812 3.8.1.7. Location 3814 Property Name: LOCATION 3816 Purpose: The property defines the intended venue for the activity 3817 defined by a calendar component. 3819 Value Type: TEXT 3821 Property Parameters: Non-standard, alternate text representation and 3822 language property parameters can be specified on this property. 3824 Conformance: This property can be specified in "VEVENT" or "VTODO" 3825 calendar component. 3827 Description: Specific venues such as conference or meeting rooms may 3828 be explicitly specified using this property. An alternate 3829 representation may be specified that is a URI that points to 3830 directory information with more structured specification of the 3831 location. For example, the alternate representation may specify 3832 either an LDAP URI pointing to an LDAP server entry or a CID URI 3833 pointing to a MIME body part containing a vCard [RFC2426] for the 3834 location. 3836 Format Definition: The property is defined by the following notation: 3838 location = "LOCATION locparam ":" text CRLF 3840 locparam = *( 3842 ; the following are optional, 3843 ; but MUST NOT occur more than once 3845 (";" altrepparam) / (";" languageparam) / 3847 ; the following is optional, 3848 ; and MAY occur more than once 3850 (";" xparam) 3852 ) 3854 Example: The following are some examples of this property: 3856 LOCATION:Conference Room - F123, Bldg. 002 3858 LOCATION;ALTREP="http://xyzcorp.com/conf-rooms/f123.vcf": 3859 Conference Room - F123, Bldg. 002 3861 3.8.1.8. Percent Complete 3863 Property Name: PERCENT-COMPLETE 3865 Purpose: This property is used by an assignee or delegatee of a to-do 3866 to convey the percent completion of a to-do to the Organizer. 3868 Value Type: INTEGER 3870 Property Parameters: Non-standard property parameters can be 3871 specified on this property. 3873 Conformance: This property can be specified in a "VTODO" calendar 3874 component. 3876 Description: The property value is a positive integer between zero 3877 and one hundred. A value of "0" indicates the to-do has not yet 3878 been started. A value of "100" indicates that the to-do has been 3879 completed. Integer values in between indicate the percent 3880 partially complete. 3882 When a to-do is assigned to multiple individuals, the property 3883 value indicates the percent complete for that portion of the to-do 3884 assigned to the assignee or delegatee. For example, if a to-do is 3885 assigned to both individuals "A" and "B". A reply from "A" with a 3886 percent complete of "70" indicates that "A" has completed 70% of 3887 the to-do assigned to them. A reply from "B" with a percent 3888 complete of "50" indicates "B" has completed 50% of the to-do 3889 assigned to them. 3891 Format Definition: The property is defined by the following notation: 3893 percent = "PERCENT-COMPLETE" pctparam ":" integer CRLF 3895 pctparam = *(";" xparam) 3897 Example: The following is an example of this property to show 39% 3898 completion: 3900 PERCENT-COMPLETE:39 3902 3.8.1.9. Priority 3904 Property Name: PRIORITY 3906 Purpose: The property defines the relative priority for a calendar 3907 component. 3909 Value Type: INTEGER 3911 Property Parameters: Non-standard property parameters can be 3912 specified on this property. 3914 Conformance: The property can be specified in a "VEVENT" or "VTODO" 3915 calendar component. 3917 Description: The priority is specified as an integer in the range 3918 zero to nine. A value of zero (US-ASCII decimal 48) specifies an 3919 undefined priority. A value of one (US-ASCII decimal 49) is the 3920 highest priority. A value of two (US-ASCII decimal 50) is the 3921 second highest priority. Subsequent numbers specify a decreasing 3922 ordinal priority. A value of nine (US-ASCII decimal 58) is the 3923 lowest priority. 3925 A CUA with a three-level priority scheme of "HIGH", "MEDIUM" and 3926 "LOW" is mapped into this property such that a property value in 3927 the range of one (US-ASCII decimal 49) to four (US-ASCII decimal 3928 52) specifies "HIGH" priority. A value of five (US-ASCII decimal 3929 53) is the normal or "MEDIUM" priority. A value in the range of 3930 six (US- ASCII decimal 54) to nine (US-ASCII decimal 58) is "LOW" 3931 priority. 3933 A CUA with a priority schema of "A1", "A2", "A3", "B1", "B2", ..., 3934 "C3" is mapped into this property such that a property value of 3935 one (US-ASCII decimal 49) specifies "A1", a property value of two 3936 (US- ASCII decimal 50) specifies "A2", a property value of three 3937 (US-ASCII decimal 51) specifies "A3", and so forth up to a 3938 property value of 9 (US-ASCII decimal 58) specifies "C3". 3940 Other integer values are reserved for future use. 3942 Within a "VEVENT" calendar component, this property specifies a 3943 priority for the event. This property may be useful when more 3944 than one event is scheduled for a given time period. 3946 Within a "VTODO" calendar component, this property specified a 3947 priority for the to-do. This property is useful in prioritizing 3948 multiple action items for a given time period. 3950 Format Definition: The property is defined by the following notation: 3952 priority = "PRIORITY" prioparam ":" privalue CRLF 3953 ;Default is zero 3955 prioparam = *(";" xparam) 3957 privalue = integer ;Must be in the range [0..9] 3958 ; All other values are reserved for future use 3960 The following is an example of a property with the highest 3961 priority: 3963 PRIORITY:1 3965 The following is an example of a property with a next highest 3966 priority: 3968 PRIORITY:2 3970 Example: The following is an example of a property with no priority. 3972 This is equivalent to not specifying the "PRIORITY" property: 3974 PRIORITY:0 3976 3.8.1.10. Resources 3978 Property Name: RESOURCES 3980 Purpose: This property defines the equipment or resources anticipated 3981 for an activity specified by a calendar entity.. 3983 Value Type: TEXT 3985 Property Parameters: Non-standard, alternate text representation and 3986 language property parameters can be specified on this property. 3988 Conformance: This property can be specified in "VEVENT" or "VTODO" 3989 calendar component. 3991 Description: The property value is an arbitrary text. More than one 3992 resource can be specified as a list of resources separated by the 3993 COMMA character (US-ASCII decimal 44). 3995 Format Definition: The property is defined by the following notation: 3997 resources = "RESOURCES" resrcparam ":" text *("," text) CRLF 3999 resrcparam = *( 4001 ; the following are optional, 4002 ; but MUST NOT occur more than once 4004 (";" altrepparam) / (";" languageparam) / 4006 ; the following is optional, 4007 ; and MAY occur more than once 4009 (";" xparam) 4011 ) 4013 Example: The following is an example of this property: 4015 RESOURCES:EASEL,PROJECTOR,VCR 4017 RESOURCES;LANGUAGE=fr:1 raton-laveur 4019 3.8.1.11. Status 4020 Property Name: STATUS 4022 Purpose: This property defines the overall status or confirmation for 4023 the calendar component. 4025 Value Type: TEXT 4027 Property Parameters: Non-standard property parameters can be 4028 specified on this property. 4030 Conformance: This property can be specified in "VEVENT", "VTODO" or 4031 "VJOURNAL" calendar components. 4033 Description: In a group scheduled calendar component, the property is 4034 used by the "Organizer" to provide a confirmation of the event to 4035 the "Attendees". For example in a "VEVENT" calendar component, 4036 the "Organizer" can indicate that a meeting is tentative, 4037 confirmed or cancelled. In a "VTODO" calendar component, the 4038 "Organizer" can indicate that an action item needs action, is 4039 completed, is in process or being worked on, or has been 4040 cancelled. In a "VJOURNAL" calendar component, the "Organizer" 4041 can indicate that a journal entry is draft, final or has been 4042 cancelled or removed. 4044 Format Definition: The property is defined by the following notation: 4046 status = "STATUS" statparam] ":" statvalue CRLF 4048 statparam = *(";" xparam) 4050 statvalue = "TENTATIVE" ;Indicates event is 4051 ;tentative. 4052 / "CONFIRMED" ;Indicates event is 4053 ;definite. 4054 / "CANCELLED" ;Indicates event was 4055 ;cancelled. 4056 ;Status values for a "VEVENT" 4058 statvalue =/ "NEEDS-ACTION" ;Indicates to-do needs action. 4059 / "COMPLETED" ;Indicates to-do completed. 4060 / "IN-PROCESS" ;Indicates to-do in process of 4061 / "CANCELLED" ;Indicates to-do was cancelled. 4062 ;Status values for "VTODO". 4064 statvalue =/ "DRAFT" ;Indicates journal is draft. 4065 / "FINAL" ;Indicates journal is final. 4066 / "CANCELLED" ;Indicates journal is removed. 4067 ;Status values for "VJOURNAL". 4069 Example: The following is an example of this property for a "VEVENT" 4070 calendar component: 4072 STATUS:TENTATIVE 4074 The following is an example of this property for a "VTODO" 4075 calendar component: 4077 STATUS:NEEDS-ACTION 4079 The following is an example of this property for a "VJOURNAL" 4080 calendar component: 4082 STATUS:DRAFT 4084 3.8.1.12. Summary 4086 Property Name: SUMMARY 4088 Purpose: This property defines a short summary or subject for the 4089 calendar component. 4091 Value Type: TEXT 4093 Property Parameters: Non-standard, alternate text representation and 4094 language property parameters can be specified on this property. 4096 Conformance: The property can be specified in "VEVENT", "VTODO", 4097 "VJOURNAL" or "VALARM" calendar components. 4099 Description: This property is used in the "VEVENT", "VTODO" and 4100 "VJOURNAL" calendar components to capture a short, one line 4101 summary about the activity or journal entry. 4103 This property is used in the "VALARM" calendar component to 4104 capture the subject of an EMAIL category of alarm. 4106 Format Definition: The property is defined by the following notation: 4108 summary = "SUMMARY" summparam ":" text CRLF 4110 summparam = *( 4112 ; the following are optional, 4113 ; but MUST NOT occur more than once 4115 (";" altrepparam) / (";" languageparam) / 4117 ; the following is optional, 4118 ; and MAY occur more than once 4120 (";" xparam) 4122 ) 4124 Example: The following is an example of this property: 4126 SUMMARY:Department Party 4128 3.8.2. Date and Time Component Properties 4130 The following properties specify date and time related information in 4131 calendar components. 4133 3.8.2.1. Date/Time Completed 4135 Property Name: COMPLETED 4137 Purpose: This property defines the date and time that a to-do was 4138 actually completed. 4140 Value Type: DATE-TIME 4142 Property Parameters: Non-standard property parameters can be 4143 specified on this property. 4145 Conformance: The property can be specified in a "VTODO" calendar 4146 component. 4148 Description: The date and time MUST be in a UTC format. 4150 Format Definition: The property is defined by the following notation: 4152 completed = "COMPLETED" compparam ":" date-time CRLF 4154 compparam = *(";" xparam) 4156 Example: The following is an example of this property: 4158 COMPLETED:19960401T235959Z 4160 3.8.2.2. Date/Time End 4162 Property Name: DTEND 4164 Purpose: This property specifies the date and time that a calendar 4165 component ends. 4167 Value Type: The default value type is DATE-TIME. The value type can 4168 be set to a DATE value type. 4170 Property Parameters: Non-standard, value data type, time zone 4171 identifier property parameters can be specified on this property. 4173 Conformance: This property can be specified in "VEVENT" or 4174 "VFREEBUSY" calendar components. 4176 Description: Within the "VEVENT" calendar component, this property 4177 defines the date and time by which the event ends. The value MUST 4178 be later in time than the value of the "DTSTART" property. 4180 Within the "VFREEBUSY" calendar component, this property defines 4181 the end date and time for the free or busy time information. The 4182 time MUST be specified in the UTC time format. The value MUST be 4183 later in time than the value of the "DTSTART" property. 4185 Format Definition: The property is defined by the following notation: 4187 dtend = "DTEND" dtendparam":" dtendval CRLF 4189 dtendparam = *( 4191 ; the following are optional, 4192 ; but MUST NOT occur more than once 4194 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 4195 (";" tzidparam) / 4197 ; the following is optional, 4198 ; and MAY occur more than once 4200 (";" xparam) 4202 ) 4204 dtendval = date-time / date 4205 ;Value MUST match value type 4207 Example: The following is an example of this property: 4209 DTEND:19960401T235959Z 4211 DTEND;VALUE=DATE:19980704 4213 3.8.2.3. Date/Time Due 4215 Property Name: DUE 4217 Purpose: This property defines the date and time that a to-do is 4218 expected to be completed. 4220 Value Type: The default value type is DATE-TIME. The value type can 4221 be set to a DATE value type. 4223 Property Parameters: Non-standard, value data type, time zone 4224 identifier property parameters can be specified on this property. 4226 Conformance: The property can be specified once in a "VTODO" calendar 4227 component. 4229 Description: The value MUST be a date/time equal to or after the 4230 DTSTART value, if specified. 4232 Format Definition: The property is defined by the following notation: 4234 due = "DUE" dueparam":" dueval CRLF 4236 dueparam = *( 4237 ; the following are optional, 4238 ; but MUST NOT occur more than once 4240 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 4241 (";" tzidparam) / 4243 ; the following is optional, 4244 ; and MAY occur more than once 4246 *(";" xparam) 4248 ) 4250 dueval = date-time / date 4251 ;Value MUST match value type 4253 Example: The following is an example of this property: 4255 DUE:19980430T235959Z 4257 3.8.2.4. Date/Time Start 4259 Property Name: DTSTART 4261 Purpose: This property specifies when the calendar component begins. 4263 Value Type: The default value type is DATE-TIME. The time value MUST 4264 be one of the forms defined for the DATE-TIME value type. The 4265 value type can be set to a DATE value type. 4267 Property Parameters: Non-standard, value data type, time zone 4268 identifier property parameters can be specified on this property. 4270 Conformance: This property can be specified in the "VEVENT", "VTODO", 4271 "VFREEBUSY", or "VTIMEZONE" calendar components. 4273 Description: Within the "VEVENT" calendar component, this property 4274 defines the start date and time for the event. The property is 4275 REQUIRED in "VEVENT" calendar components. Events can have a start 4276 date/time but no end date/time. In that case, the event does not 4277 take up any time. 4279 Within the "VFREEBUSY" calendar component, this property defines 4280 the start date and time for the free or busy time information. 4281 The time MUST be specified in UTC time. 4283 Within the "VTIMEZONE" calendar component, this property defines 4284 the effective start date and time for a time zone specification. 4285 This property is REQUIRED within each STANDARD and DAYLIGHT part 4286 included in "VTIMEZONE" calendar components and MUST be specified 4287 as a local DATE-TIME without the "TZID" property parameter. 4289 Format Definition: The property is defined by the following notation: 4291 dtstart = "DTSTART" dtstparam ":" dtstval CRLF 4293 dtstparam = *( 4295 ; the following are optional, 4296 ; but MUST NOT occur more than once 4298 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 4299 (";" tzidparam) / 4301 ; the following is optional, 4302 ; and MAY occur more than once 4304 *(";" xparam) 4306 ) 4308 dtstval = date-time / date 4309 ;Value MUST match value type 4311 Example: The following is an example of this property: 4313 DTSTART:19980118T073000Z 4315 3.8.2.5. Duration 4317 Property Name: DURATION 4319 Purpose: The property specifies a positive duration of time. 4321 Value Type: DURATION 4323 Property Parameters: Non-standard property parameters can be 4324 specified on this property. 4326 Conformance: The property can be specified in "VEVENT", "VTODO", 4327 "VFREEBUSY" or "VALARM" calendar components. 4329 Description: In a "VEVENT" calendar component the property may be 4330 used to specify a duration of the event, instead of an explicit 4331 end date/time. In a "VTODO" calendar component the property may 4332 be used to specify a duration for the to-do, instead of an 4333 explicit due date/time. In a "VFREEBUSY" calendar component the 4334 property may be used to specify the interval of free time being 4335 requested. In a "VALARM" calendar component the property may be 4336 used to specify the delay period prior to repeating an alarm. 4338 Format Definition: The property is defined by the following notation: 4340 duration = "DURATION" durparam ":" dur-value CRLF 4341 ;consisting of a positive duration of time. 4343 durparam = *(";" xparam) 4345 Example: The following is an example of this property that specifies 4346 an interval of time of 1 hour and zero minutes and zero seconds: 4348 DURATION:PT1H0M0S 4350 The following is an example of this property that specifies an 4351 interval of time of 15 minutes. 4353 DURATION:PT15M 4355 3.8.2.6. Free/Busy Time 4357 Property Name: FREEBUSY 4359 Purpose: The property defines one or more free or busy time 4360 intervals. 4362 Value Type: PERIOD. The date and time values MUST be in an UTC time 4363 format. 4365 Property Parameters: Non-standard or free/busy time type property 4366 parameters can be specified on this property. 4368 Conformance: The property can be specified in a "VFREEBUSY" calendar 4369 component. 4371 Description: These time periods can be specified as either a start 4372 and end date-time or a start date-time and duration. The date and 4373 time MUST be a UTC time format. 4375 "FREEBUSY" properties within the "VFREEBUSY" calendar component 4376 SHOULD be sorted in ascending order, based on start time and then 4377 end time, with the earliest periods first. 4379 The "FREEBUSY" property can specify more than one value, separated 4380 by the COMMA character (US-ASCII decimal 44). In such cases, the 4381 "FREEBUSY" property values SHOULD all be of the same "FBTYPE" 4382 property parameter type (e.g., all values of a particular "FBTYPE" 4383 listed together in a single property). 4385 Format Definition: The property is defined by the following notation: 4387 freebusy = "FREEBUSY" fbparam ":" fbvalue 4388 CRLF 4390 fbparam = *( 4391 ; the following is optional, 4392 ; but MUST NOT occur more than once 4394 (";" fbtypeparam) / 4396 ; the following is optional, 4397 ; and MAY occur more than once 4399 (";" xparam) 4401 ) 4403 fbvalue = period *["," period] 4404 ;Time value MUST be in the UTC time format. 4406 Example: The following are some examples of this property: 4408 FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:19970308T160000Z/PT8H30M 4410 FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H 4412 FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H, 4413 19970308T230000Z/19970309T000000Z 4415 3.8.2.7. Time Transparency 4416 Property Name: TRANSP 4418 Purpose: This property defines whether an event is transparent or not 4419 to busy time searches. 4421 Value Type: TEXT 4423 Property Parameters: Non-standard property parameters can be 4424 specified on this property. 4426 Conformance: This property can be specified once in a "VEVENT" 4427 calendar component. 4429 Description: Time Transparency is the characteristic of an event that 4430 determines whether it appears to consume time on a calendar. 4431 Events that consume actual time for the individual or resource 4432 associated with the calendar SHOULD be recorded as OPAQUE, 4433 allowing them to be detected by free-busy time searches. Other 4434 events, which do not take up the individual's (or resource's) time 4435 SHOULD be recorded as TRANSPARENT, making them invisible to free- 4436 busy time searches. 4438 Format Definition: The property is defined by the following notation: 4440 transp = "TRANSP" tranparam ":" transvalue CRLF 4442 tranparam = *(";" xparam) 4444 transvalue = "OPAQUE" ;Blocks or opaque on busy time searches. 4445 / "TRANSPARENT" ;Transparent on busy time searches. 4446 ;Default value is OPAQUE 4448 Example: The following is an example of this property for an event 4449 that is transparent or does not block on free/busy time searches: 4451 TRANSP:TRANSPARENT 4453 The following is an example of this property for an event that is 4454 opaque or blocks on free/busy time searches: 4456 TRANSP:OPAQUE 4458 3.8.3. Time Zone Component Properties 4460 The following properties specify time zone information in calendar 4461 components. 4463 3.8.3.1. Time Zone Identifier 4465 Property Name: TZID 4467 Purpose: This property specifies the text value that uniquely 4468 identifies the "VTIMEZONE" calendar component. 4470 Value Type: TEXT 4472 Property Parameters: Non-standard property parameters can be 4473 specified on this property. 4475 Conformance: This property MUST be specified in a "VTIMEZONE" 4476 calendar component. 4478 Description: This is the label by which a time zone calendar 4479 component is referenced by any iCalendar properties whose data 4480 type is either DATE-TIME or TIME and not intended to specify a UTC 4481 or a "floating" time. The presence of the SOLIDUS character (US- 4482 ASCII decimal 47) as a prefix, indicates that this TZID represents 4483 an unique ID in a globally defined time zone registry (when such 4484 registry is defined). 4486 Note: This document does not define a naming convention for 4487 time zone identifiers. Implementers may want to use the naming 4488 conventions defined in existing time zone specifications such 4489 as the public-domain Olson database [TZDB]. The specification 4490 of globally unique time zone identifiers is not addressed by 4491 this document and is left for future study. 4493 Format Definition: The property is defined by the following notation: 4495 tzid = "TZID" tzidpropparam ":" [tzidprefix] text CRLF 4497 tzidpropparam = *(";" xparam) 4499 ;tzidprefix = "/" 4500 ; Defined previously. Just listed here for reader convenience. 4502 Example: The following are examples of non-globally unique time zone 4503 identifiers: 4505 TZID:US-Eastern 4507 TZID:California-Los_Angeles 4509 The following is an example of a fictitious globally unique time 4510 zone identifier: 4512 TZID:/US-New_York-New_York 4514 3.8.3.2. Time Zone Name 4516 Property Name: TZNAME 4518 Purpose: This property specifies the customary designation for a time 4519 zone description. 4521 Value Type: TEXT 4523 Property Parameters: Non-standard and language property parameters 4524 can be specified on this property. 4526 Conformance: This property can be specified in a "VTIMEZONE" calendar 4527 component. 4529 Description: This property may be specified in multiple languages; in 4530 order to provide for different language requirements. 4532 Format Definition: The property is defined by the following notation: 4534 tzname = "TZNAME" tznparam ":" text CRLF 4536 tznparam = *( 4538 ; the following is optional, 4539 ; but MUST NOT occur more than once 4541 (";" languageparam) / 4543 ; the following is optional, 4544 ; and MAY occur more than once 4546 (";" xparam) 4548 ) 4550 Example: The following are example of this property: 4552 TZNAME:EST 4554 The following is an example of this property when two different 4555 languages for the time zone name are specified: 4557 TZNAME;LANGUAGE=en:EST 4558 TZNAME;LANGUAGE=fr-CA:HNE 4560 3.8.3.3. Time Zone Offset From 4562 Property Name: TZOFFSETFROM 4564 Purpose: This property specifies the offset which is in use prior to 4565 this time zone observance. 4567 Value Type: UTC-OFFSET 4569 Property Parameters: Non-standard property parameters can be 4570 specified on this property. 4572 Conformance: This property MUST be specified in a "VTIMEZONE" 4573 calendar component. 4575 Description: This property specifies the offset which is in use prior 4576 to this time observance. It is used to calculate the absolute 4577 time at which the transition to a given observance takes place. 4578 This property MUST only be specified in a "VTIMEZONE" calendar 4579 component. A "VTIMEZONE" calendar component MUST include this 4580 property. The property value is a signed numeric indicating the 4581 number of hours and possibly minutes from UTC. Positive numbers 4582 represent time zones east of the prime meridian, or ahead of UTC. 4583 Negative numbers represent time zones west of the prime meridian, 4584 or behind UTC. 4586 Format Definition: The property is defined by the following notation: 4588 tzoffsetfrom = "TZOFFSETFROM" frmparam ":" utc-offset 4589 CRLF 4591 frmparam = *(";" xparam) 4593 Example: The following are examples of this property: 4595 TZOFFSETFROM:-0500 4597 TZOFFSETFROM:+1345 4599 3.8.3.4. Time Zone Offset To 4601 Property Name: TZOFFSETTO 4603 Purpose: This property specifies the offset which is in use in this 4604 time zone observance. 4606 Value Type: UTC-OFFSET 4608 Property Parameters: Non-standard property parameters can be 4609 specified on this property. 4611 Conformance: This property MUST be specified in a "VTIMEZONE" 4612 calendar component. 4614 Description: This property specifies the offset which is in use in 4615 this time zone observance. It is used to calculate the absolute 4616 time for the new observance. The property value is a signed 4617 numeric indicating the number of hours and possibly minutes from 4618 UTC. Positive numbers represent time zones east of the prime 4619 meridian, or ahead of UTC. Negative numbers represent time zones 4620 west of the prime meridian, or behind UTC. 4622 Format Definition: The property is defined by the following notation: 4624 tzoffsetto = "TZOFFSETTO" toparam ":" utc-offset CRLF 4626 toparam = *(";" xparam) 4628 Example: The following are examples of this property: 4630 TZOFFSETTO:-0400 4632 TZOFFSETTO:+1245 4634 3.8.3.5. Time Zone URL 4636 Property Name: TZURL 4638 Purpose: The TZURL provides a means for a VTIMEZONE component to 4639 point to a network location that can be used to retrieve an up-to- 4640 date version of itself. 4642 Value Type: URI 4643 Property Parameters: Non-standard property parameters can be 4644 specified on this property. 4646 Conformance: This property can be specified in a "VTIMEZONE" calendar 4647 component. 4649 Description: The TZURL provides a means for a VTIMEZONE component to 4650 point to a network location that can be used to retrieve an up-to- 4651 date version of itself. This provides a hook to handle changes 4652 government bodies impose upon time zone definitions. Retrieval of 4653 this resource results in an iCalendar object containing a single 4654 VTIMEZONE component and a METHOD property set to PUBLISH. 4656 Format Definition: The property is defined by the following notation: 4658 tzurl = "TZURL" tzurlparam ":" uri CRLF 4660 tzurlparam = *(";" xparam) 4662 Example: The following is an example of this property: 4664 TZURL:http://timezones.r.us.net/tz/US-California-Los_Angeles 4666 3.8.4. Relationship Component Properties 4668 The following properties specify relationship information in calendar 4669 components. 4671 3.8.4.1. Attendee 4673 Property Name: ATTENDEE 4675 Purpose: The property defines an "Attendee" within a calendar 4676 component. 4678 Value Type: CAL-ADDRESS 4680 Property Parameters: Non-standard, language, calendar user type, 4681 group or list membership, participation role, participation 4682 status, RSVP expectation, delegatee, delegator, sent by, common 4683 name or directory entry reference property parameters can be 4684 specified on this property. 4686 Conformance: This property MUST be specified in an iCalendar object 4687 that specifies a group scheduled calendar entity. This property 4688 MUST NOT be specified in an iCalendar object when publishing the 4689 calendar information (e.g., NOT in an iCalendar object that 4690 specifies the publication of a calendar user's busy time, event, 4691 to-do or journal). This property is not specified in an iCalendar 4692 object that specifies only a time zone definition or that defines 4693 calendar entities that are not group scheduled entities, but are 4694 entities only on a single user's calendar. 4696 Description: The property MUST only be specified within calendar 4697 components to specify participants, non-participants and the chair 4698 of a group scheduled calendar entity. The property is specified 4699 within an "EMAIL" category of the "VALARM" calendar component to 4700 specify an email address that is to receive the email type of 4701 iCalendar alarm. 4703 The property parameter CN is for the common or displayable name 4704 associated with the calendar address; ROLE, for the intended role 4705 that the attendee will have in the calendar component; PARTSTAT, 4706 for the status of the attendee's participation; RSVP, for 4707 indicating whether the favor of a reply is requested; CUTYPE, to 4708 indicate the type of calendar user; MEMBER, to indicate the groups 4709 that the attendee belongs to; DELEGATED-TO, to indicate the 4710 calendar users that the original request was delegated to; and 4711 DELEGATED-FROM, to indicate whom the request was delegated from; 4712 SENT-BY, to indicate whom is acting on behalf of the ATTENDEE; and 4713 DIR, to indicate the URI that points to the directory information 4714 corresponding to the attendee. These property parameters can be 4715 specified on an "ATTENDEE" property in either a "VEVENT", "VTODO" 4716 or "VJOURNAL" calendar component. They MUST not be specified in 4717 an "ATTENDEE" property in a "VFREEBUSY" or "VALARM" calendar 4718 component. If the LANGUAGE property parameter is specified, the 4719 identified language applies to the CN parameter. 4721 A recipient delegated a request MUST inherit the RSVP and ROLE 4722 values from the attendee that delegated the request to them. 4724 Multiple attendees can be specified by including multiple 4725 "ATTENDEE" properties within the calendar component. 4727 Format Definition: The property is defined by the following notation: 4729 attendee = "ATTENDEE" attparam ":" cal-address CRLF 4731 attparam = *( 4733 ; the following are optional, 4734 ; but MUST NOT occur more than once 4736 (";" cutypeparam) / (";"memberparam) / 4737 (";" roleparam) / (";" partstatparam) / 4738 (";" rsvpparam) / (";" deltoparam) / 4739 (";" delfromparam) / (";" sentbyparam) / 4740 (";"cnparam) / (";" dirparam) / 4741 (";" languageparam) / 4743 ; the following is optional, 4744 ; and MAY occur more than once 4746 (";" xparam) 4748 ) 4750 Example: The following are examples of this property's use for a 4751 to-do: 4753 ORGANIZER:MAILTO:jsmith@host1.com 4754 ATTENDEE;MEMBER="MAILTO:DEV-GROUP@host2.com": 4755 MAILTO:joecool@host2.com 4756 ATTENDEE;DELEGATED-FROM="MAILTO:immud@host3.com": 4757 MAILTO:ildoit@host1.com 4759 The following is an example of this property used for specifying 4760 multiple attendees to an event: 4762 ORGANIZER:MAILTO:jsmith@host1.com 4763 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CN=Henry Cabot 4764 :MAILTO:hcabot@host2.com 4765 ATTENDEE;ROLE=REQ-PARTICIPANT;DELEGATED-FROM="MAILTO:bob@host.com" 4766 ;PARTSTAT=ACCEPTED;CN=Jane Doe:MAILTO:jdoe@host1.com 4768 The following is an example of this property with a URI to the 4769 directory information associated with the attendee: 4771 ATTENDEE;CN=John Smith;DIR="ldap://host.com:6666/o=eDABC% 4772 20Industries,c=3DUS??(cn=3DBJim%20Dolittle)":MAILTO:jimdo@ 4773 host1.com 4774 The following is an example of this property with "delegatee" and 4775 "delegator" information for an event: 4777 ORGANIZER;CN=John Smith:MAILTO:jsmith@host.com 4778 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;DELEGATED-FROM= 4779 "MAILTO:iamboss@host2.com";CN=Henry Cabot:MAILTO:hcabot@ 4780 host2.com 4781 ATTENDEE;ROLE=NON-PARTICIPANT;PARTSTAT=DELEGATED;DELEGATED-TO= 4782 "MAILTO:hcabot@host2.com";CN=The Big Cheese:MAILTO:iamboss 4783 @host2.com 4784 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Jane Doe 4785 :MAILTO:jdoe@host1.com 4787 Example: The following is an example of this property's use when 4788 another calendar user is acting on behalf of the "Attendee": 4790 ATTENDEE;SENT-BY=MAILTO:jan_doe@host1.com;CN=John Smith:MAILTO: 4791 jsmith@host1.com 4793 3.8.4.2. Contact 4795 Property Name: CONTACT 4797 Purpose: The property is used to represent contact information or 4798 alternately a reference to contact information associated with the 4799 calendar component. 4801 Value Type: TEXT 4803 Property Parameters: Non-standard, alternate text representation and 4804 language property parameters can be specified on this property. 4806 Conformance: The property can be specified in a "VEVENT", "VTODO", 4807 "VJOURNAL" or "VFREEBUSY" calendar component. 4809 Description: The property value consists of textual contact 4810 information. An alternative representation for the property value 4811 can also be specified that refers to a URI pointing to an 4812 alternate form, such as a vCard [RFC2426], for the contact 4813 information. 4815 Format Definition: The property is defined by the following notation: 4817 contact = "CONTACT" contparam ":" text CRLF 4819 contparam = *( 4820 ; the following are optional, 4821 ; but MUST NOT occur more than once 4823 (";" altrepparam) / (";" languageparam) / 4825 ; the following is optional, 4826 ; and MAY occur more than once 4828 (";" xparam) 4830 ) 4832 Example: The following is an example of this property referencing 4833 textual contact information: 4835 CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234 4837 The following is an example of this property with an alternate 4838 representation of a LDAP URI to a directory entry containing the 4839 contact information: 4841 CONTACT;ALTREP="ldap://host.com:6666/o=3DABC%20Industries\, 4842 c=3DUS??(cn=3DBJim%20Dolittle)":Jim Dolittle\, ABC Industries\, 4843 +1-919-555-1234 4845 The following is an example of this property with an alternate 4846 representation of a MIME body part containing the contact 4847 information, such as a vCard [RFC2426] embedded in a [MIME-DIR] 4848 content-type: 4850 CONTACT;ALTREP="CID=":Jim 4851 Dolittle\, ABC Industries\, +1-919-555-1234 4853 The following is an example of this property referencing a network 4854 resource, such as a vCard [RFC2426] object containing the contact 4855 information: 4857 CONTACT;ALTREP="http://host.com/pdi/jdoe.vcf":Jim 4858 Dolittle\, ABC Industries\, +1-919-555-1234 4860 3.8.4.3. Organizer 4861 Property Name: ORGANIZER 4863 Purpose: The property defines the organizer for a calendar component. 4865 Value Type: CAL-ADDRESS 4867 Property Parameters: Non-standard, language, common name, directory 4868 entry reference, sent by property parameters can be specified on 4869 this property. 4871 Conformance: This property MUST be specified in an iCalendar object 4872 that specifies a group scheduled calendar entity. This property 4873 MUST be specified in an iCalendar object that specifies the 4874 publication of a calendar user's busy time. This property MUST 4875 NOT be specified in an iCalendar object that specifies only a time 4876 zone definition or that defines calendar entities that are not 4877 group scheduled entities, but are entities only on a single user's 4878 calendar. 4880 Description: The property is specified within the "VEVENT", "VTODO", 4881 "VJOURNAL calendar components to specify the organizer of a group 4882 scheduled calendar entity. The property is specified within the 4883 "VFREEBUSY" calendar component to specify the calendar user 4884 requesting the free or busy time. When publishing a "VFREEBUSY" 4885 calendar component, the property is used to specify the calendar 4886 that the published busy time came from. 4888 The property has the property parameters CN, for specifying the 4889 common or display name associated with the "Organizer", DIR, for 4890 specifying a pointer to the directory information associated with 4891 the "Organizer", SENT-BY, for specifying another calendar user 4892 that is acting on behalf of the "Organizer". The non-standard 4893 parameters may also be specified on this property. If the 4894 LANGUAGE property parameter is specified, the identified language 4895 applies to the CN parameter value. 4897 Format Definition: The property is defined by the following notation: 4899 organizer = "ORGANIZER" orgparam ":" 4900 cal-address CRLF 4902 orgparam = *( 4904 ; the following are optional, 4905 ; but MUST NOT occur more than once 4907 (";" cnparam) / (";" dirparam) / (";" sentbyparam) / 4908 (";" languageparam) / 4910 ; the following is optional, 4911 ; and MAY occur more than once 4913 (";" xparam) 4915 ) 4917 Example: The following is an example of this property: 4919 ORGANIZER;CN=John Smith:MAILTO:jsmith@host1.com 4921 The following is an example of this property with a pointer to the 4922 directory information associated with the organizer: 4924 ORGANIZER;CN=JohnSmith;DIR="ldap://host.com:6666/o=3DDC%20Associ 4925 ates,c=3DUS??(cn=3DJohn%20Smith)":MAILTO:jsmith@host1.com 4927 The following is an example of this property used by another 4928 calendar user who is acting on behalf of the organizer, with 4929 responses intended to be sent back to the organizer, not the other 4930 calendar user: 4932 ORGANIZER;SENT-BY="MAILTO:jane_doe@host.com": 4933 MAILTO:jsmith@host1.com 4935 3.8.4.4. Recurrence ID 4937 Property Name: RECURRENCE-ID 4939 Purpose: This property is used in conjunction with the "UID" and 4940 "SEQUENCE" property to identify a specific instance of a recurring 4941 "VEVENT", "VTODO" or "VJOURNAL" calendar component. The property 4942 value is the effective value of the "DTSTART" property of the 4943 recurrence instance. 4945 Value Type: The default value type for this property is DATE-TIME. 4946 The time format can be any of the valid forms defined for a DATE- 4947 TIME value type. See DATE-TIME value type definition for specific 4948 interpretations of the various forms. The value type can be set 4949 to DATE. 4951 Property Parameters: Non-standard property, value data type, time 4952 zone identifier and recurrence identifier range parameters can be 4953 specified on this property. 4955 Conformance: This property can be specified in an iCalendar object 4956 containing a recurring calendar component. 4958 Description: The full range of calendar components specified by a 4959 recurrence set is referenced by referring to just the "UID" 4960 property value corresponding to the calendar component. The 4961 "RECURRENCE-ID" property allows the reference to an individual 4962 instance within the recurrence set. 4964 If the value of the "DTSTART" property is a DATE type value, then 4965 the value MUST be the calendar date for the recurrence instance. 4967 The date/time value is set to the time when the original 4968 recurrence instance would occur; meaning that if the intent is to 4969 change a Friday meeting to Thursday, the date/time is still set to 4970 the original Friday meeting. 4972 The "RECURRENCE-ID" property is used in conjunction with the "UID" 4973 and "SEQUENCE" property to identify a particular instance of a 4974 recurring event, to-do or journal. For a given pair of "UID" and 4975 "SEQUENCE" property values, the "RECURRENCE-ID" value for a 4976 recurrence instance is fixed. When the definition of the 4977 recurrence set for a calendar component changes, and hence the 4978 "SEQUENCE" property value changes, the "RECURRENCE-ID" for a given 4979 recurrence instance might also change.The "RANGE" parameter is 4980 used to specify the effective range of recurrence instances from 4981 the instance specified by the "RECURRENCE-ID" property value. The 4982 default value for the range parameter is the single recurrence 4983 instance only. The value can also be "THISANDPRIOR" to indicate a 4984 range defined by the given recurrence instance and all prior 4985 instances or the value can be "THISANDFUTURE" to indicate a range 4986 defined by the given recurrence instance and all subsequent 4987 instances. 4989 Format Definition: The property is defined by the following notation: 4991 recurid = "RECURRENCE-ID" ridparam ":" ridval CRLF 4993 ridparam = *( 4995 ; the following are optional, 4996 ; but MUST NOT occur more than once 4998 (";" "VALUE" "=" ("DATE-TIME" / "DATE)) / 4999 (";" tzidparam) / (";" rangeparam) / 5001 ; the following is optional, 5002 ; and MAY occur more than once 5004 (";" xparam) 5006 ) 5008 ridval = date-time / date 5009 ;Value MUST match value type 5011 Example: The following are examples of this property: 5013 RECURRENCE-ID;VALUE=DATE:19960401 5015 RECURRENCE-ID;RANGE=THISANDFUTURE:19960120T120000Z 5017 3.8.4.5. Related To 5019 Property Name: RELATED-TO 5021 Purpose: The property is used to represent a relationship or 5022 reference between one calendar component and another. 5024 Value Type: TEXT 5026 Property Parameters: Non-standard and relationship type property 5027 parameters can be specified on this property. 5029 Conformance: The property can be specified one or more times in the 5030 "VEVENT", "VTODO" or "VJOURNAL" calendar components. 5032 Description: The property value consists of the persistent, globally 5033 unique identifier of another calendar component. This value would 5034 be represented in a calendar component by the "UID" property. 5036 By default, the property value points to another calendar 5037 component that has a PARENT relationship to the referencing 5038 object. The "RELTYPE" property parameter is used to either 5039 explicitly state the default PARENT relationship type to the 5040 referenced calendar component or to override the default PARENT 5041 relationship type and specify either a CHILD or SIBLING 5042 relationship. The PARENT relationship indicates that the calendar 5043 component is a subordinate of the referenced calendar component. 5044 The CHILD relationship indicates that the calendar component is a 5045 superior of the referenced calendar component. The SIBLING 5046 relationship indicates that the calendar component is a peer of 5047 the referenced calendar component. 5049 Changes to a calendar component referenced by this property can 5050 have an implicit impact on the related calendar component. For 5051 example, if a group event changes its start or end date or time, 5052 then the related, dependent events will need to have their start 5053 and end dates changed in a corresponding way. Similarly, if a 5054 PARENT calendar component is canceled or deleted, then there is an 5055 implied impact to the related CHILD calendar components. This 5056 property is intended only to provide information on the 5057 relationship of calendar components. It is up to the target 5058 calendar system to maintain any property implications of this 5059 relationship. 5061 Format Definition: The property is defined by the following notation: 5063 related = "RELATED-TO" [relparam] ":" text CRLF 5065 relparam = *( 5067 ; the following is optional, 5068 ; but MUST NOT occur more than once 5070 (";" reltypeparam) / 5072 ; the following is optional, 5073 ; and MAY occur more than once 5075 (";" xparm) 5077 ) 5079 The following is an example of this property: 5081 RELATED-TO: 5083 RELATED-TO:<19960401-080045-4000F192713-0052@host1.com> 5085 3.8.4.6. Uniform Resource Locator 5087 Property Name: URL 5089 Purpose: This property defines a Uniform Resource Locator (URL) 5090 associated with the iCalendar object. 5092 Value Type: URI 5094 Property Parameters: Non-standard property parameters can be 5095 specified on this property. 5097 Conformance: This property can be specified once in the "VEVENT", 5098 "VTODO", "VJOURNAL" or "VFREEBUSY" calendar components. 5100 Description: This property may be used in a calendar component to 5101 convey a location where a more dynamic rendition of the calendar 5102 information associated with the calendar component can be found. 5103 This memo does not attempt to standardize the form of the URI, nor 5104 the format of the resource pointed to by the property value. If 5105 the URL property and Content-Location MIME header are both 5106 specified, they MUST point to the same resource. 5108 Format Definition: The property is defined by the following notation: 5110 url = "URL" urlparam ":" uri CRLF 5112 urlparam = *(";" xparam) 5114 Example: The following is an example of this property: 5116 URL:http://abc.com/pub/calendars/jsmith/mytime.ics 5118 3.8.4.7. Unique Identifier 5120 Property Name: UID 5122 Purpose: This property defines the persistent, globally unique 5123 identifier for the calendar component. 5125 Value Type: TEXT 5127 Property Parameters: Non-standard property parameters can be 5128 specified on this property. 5130 Conformance: The property MUST be specified in the "VEVENT", "VTODO", 5131 "VJOURNAL" or "VFREEBUSY" calendar components. 5133 Description: The UID itself MUST be a globally unique identifier. 5134 The generator of the identifier MUST guarantee that the identifier 5135 is unique. There are several algorithms that can be used to 5136 accomplish this. The identifier is RECOMMENDED to be the 5137 identical syntax to the [RFC0822] addr-spec. A good method to 5138 assure uniqueness is to put the domain name or a domain literal IP 5139 address of the host on which the identifier was created on the 5140 right hand side of the "@", and on the left hand side, put a 5141 combination of the current calendar date and time of day (i.e., 5142 formatted in as a DATE-TIME value) along with some other currently 5143 unique (perhaps sequential) identifier available on the system 5144 (for example, a process id number). Using a date/time value on 5145 the left hand side and a domain name or domain literal on the 5146 right hand side makes it possible to guarantee uniqueness since no 5147 two hosts should be using the same domain name or IP address at 5148 the same time. Though other algorithms will work, it is 5149 RECOMMENDED that the right hand side contain some domain 5150 identifier (either of the host itself or otherwise) such that the 5151 generator of the message identifier can guarantee the uniqueness 5152 of the left hand side within the scope of that domain. 5154 This is the method for correlating scheduling messages with the 5155 referenced "VEVENT", "VTODO", or "VJOURNAL" calendar component. 5157 The full range of calendar components specified by a recurrence 5158 set is referenced by referring to just the "UID" property value 5159 corresponding to the calendar component. The "RECURRENCE-ID" 5160 property allows the reference to an individual instance within the 5161 recurrence set. 5163 This property is an important method for group scheduling 5164 applications to match requests with later replies, modifications 5165 or deletion requests. Calendaring and scheduling applications 5166 MUST generate this property in "VEVENT", "VTODO" and "VJOURNAL" 5167 calendar components to assure interoperability with other group 5168 scheduling applications. This identifier is created by the 5169 calendar system that generates an iCalendar object. 5171 Implementations MUST be able to receive and persist values of at 5172 least 255 characters for this property. 5174 Format Definition: The property is defined by the following notation: 5176 uid = "UID" uidparam ":" text CRLF 5177 uidparam = *(";" xparam) 5179 Example: The following is an example of this property: 5181 UID:19960401T080045Z-4000F192713-0052@host1.com 5183 3.8.5. Recurrence Component Properties 5185 The following properties specify recurrence information in calendar 5186 components. 5188 3.8.5.1. Exception Date/Times 5190 Property Name: EXDATE 5192 Purpose: This property defines the list of date/time exceptions for a 5193 recurring calendar component. 5195 Value Type: The default value type for this property is DATE-TIME. 5196 The value type can be set to DATE. 5198 Property Parameters: Non-standard, value data type and time zone 5199 identifier property parameters can be specified on this property. 5201 Conformance: This property can be specified in an iCalendar object 5202 that includes a recurring calendar component. 5204 Description: The exception dates, if specified, are used in computing 5205 the recurrence set. The recurrence set is the complete set of 5206 recurrence instances for a calendar component. The recurrence set 5207 is generated by considering the initial "DTSTART" property along 5208 with the "RRULE", "RDATE", "EXDATE" and "EXRULE" properties 5209 contained within the iCalendar object. The "DTSTART" property 5210 defines the first instance in the recurrence set. Multiple 5211 instances of the "RRULE" and "EXRULE" properties can also be 5212 specified to define more sophisticated recurrence sets. The final 5213 recurrence set is generated by gathering all of the start date- 5214 times generated by any of the specified "RRULE" and "RDATE" 5215 properties, and then excluding any start date and times which fall 5216 within the union of start date and times generated by any 5217 specified "EXRULE" and "EXDATE" properties. This implies that 5218 start date and times within exclusion related properties (i.e., 5219 "EXDATE" and "EXRULE") take precedence over those specified by 5220 inclusion properties (i.e., "RDATE" and "RRULE"). Where duplicate 5221 instances are generated by the "RRULE" and "RDATE" properties, 5222 only one recurrence is considered. Duplicate instances are 5223 ignored. 5225 The "EXDATE" property can be used to exclude the value specified 5226 in "DTSTART". However, in such cases the original "DTSTART" date 5227 MUST still be maintained by the calendaring and scheduling system 5228 because the original "DTSTART" value has inherent usage 5229 dependencies by other properties such as the "RECURRENCE-ID". 5231 Format Definition: The property is defined by the following notation: 5233 exdate = "EXDATE" exdtparam ":" exdtval *("," exdtval) CRLF 5235 exdtparam = *( 5237 ; the following are optional, 5238 ; but MUST NOT occur more than once 5240 (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / 5242 (";" tzidparam) / 5244 ; the following is optional, 5245 ; and MAY occur more than once 5247 (";" xparam) 5249 ) 5251 exdtval = date-time / date 5252 ;Value MUST match value type 5254 Example: The following is an example of this property: 5256 EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z 5258 3.8.5.2. Exception Rule 5260 Property Name: EXRULE 5262 Purpose: This property defines a rule or repeating pattern for an 5263 exception to a recurrence set. 5265 Value Type: RECUR 5267 Property Parameters: Non-standard property parameters can be 5268 specified on this property. 5270 Conformance: This property can be specified in "VEVENT", "VTODO" or 5271 "VJOURNAL" calendar components. 5273 Description: The exception rule, if specified, is used in computing 5274 the recurrence set. The recurrence set is the complete set of 5275 recurrence instances for a calendar component. The recurrence set 5276 is generated by considering the initial "DTSTART" property along 5277 with the "RRULE", "RDATE", "EXDATE" and "EXRULE" properties 5278 contained within the iCalendar object. The "DTSTART" defines the 5279 first instance in the recurrence set. Multiple instances of the 5280 "RRULE" and "EXRULE" properties can also be specified to define 5281 more sophisticated recurrence sets. The final recurrence set is 5282 generated by gathering all of the start date-times generated by 5283 any of the specified "RRULE" and "RDATE" properties, and excluding 5284 any start date and times which fall within the union of start date 5285 and times generated by any specified "EXRULE" and "EXDATE" 5286 properties. This implies that start date and times within 5287 exclusion related properties (i.e., "EXDATE" and "EXRULE") take 5288 precedence over those specified by inclusion properties (i.e., 5289 "RDATE" and "RRULE"). Where duplicate instances are generated by 5290 the "RRULE" and "RDATE" properties, only one recurrence is 5291 considered. Duplicate instances are ignored. 5293 The "EXRULE" property can be used to exclude the value specified 5294 in "DTSTART". However, in such cases the original "DTSTART" date 5295 MUST still be maintained by the calendaring and scheduling system 5296 because the original "DTSTART" value has inherent usage 5297 dependencies by other properties such as the "RECURRENCE-ID". 5299 Format Definition: The property is defined by the following notation: 5301 exrule = "EXRULE" exrparam ":" recur CRLF 5303 exrparam = *(";" xparam) 5305 Example: The following are examples of this property. Except every 5306 other week, on Tuesday and Thursday for 4 occurrences: 5308 EXRULE:FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,TH 5310 Except daily for 10 occurrences: 5312 EXRULE:FREQ=DAILY;COUNT=10 5314 Except yearly in June and July for 8 occurrences: 5316 EXRULE:FREQ=YEARLY;COUNT=8;BYMONTH=6,7 5318 3.8.5.3. Recurrence Date/Times 5320 Property Name: RDATE 5322 Purpose: This property defines the list of date/times for a 5323 recurrence set. 5325 Value Type: The default value type for this property is DATE-TIME. 5326 The value type can be set to DATE or PERIOD. 5328 Property Parameters: Non-standard, value data type and time zone 5329 identifier property parameters can be specified on this property. 5331 Conformance: The property can be specified in "VEVENT", "VTODO", 5332 "VJOURNAL" or "VTIMEZONE" calendar components. 5334 Description: This property can appear along with the "RRULE" property 5335 to define an aggregate set of repeating occurrences. When they 5336 both appear in an iCalendar object, the recurring events are 5337 defined by the union of occurrences defined by both the "RDATE" 5338 and "RRULE". 5340 The recurrence dates, if specified, are used in computing the 5341 recurrence set. The recurrence set is the complete set of 5342 recurrence instances for a calendar component. The recurrence set 5343 is generated by considering the initial "DTSTART" property along 5344 with the "RRULE", "RDATE", "EXDATE" and "EXRULE" properties 5345 contained within the iCalendar object. The "DTSTART" property 5346 defines the first instance in the recurrence set. Multiple 5347 instances of the "RRULE" and "EXRULE" properties can also be 5348 specified to define more sophisticated recurrence sets. The final 5349 recurrence set is generated by gathering all of the start date/ 5350 times generated by any of the specified "RRULE" and "RDATE" 5351 properties, and excluding any start date/times which fall within 5352 the union of start date/times generated by any specified "EXRULE" 5353 and "EXDATE" properties. This implies that start date/times 5354 within exclusion related properties (i.e., "EXDATE" and "EXRULE") 5355 take precedence over those specified by inclusion properties 5356 (i.e., "RDATE" and "RRULE"). Where duplicate instances are 5357 generated by the "RRULE" and "RDATE" properties, only one 5358 recurrence is considered. Duplicate instances are ignored. 5360 Format Definition: The property is defined by the following notation: 5362 rdate = "RDATE" rdtparam ":" rdtval *("," rdtval) CRLF 5364 rdtparam = *( 5366 ; the following are optional, 5367 ; but MUST NOT occur more than once 5369 (";" "VALUE" "=" ("DATE-TIME" / "DATE" / "PERIOD")) / 5370 (";" tzidparam) / 5372 ; the following is optional, 5373 ; and MAY occur more than once 5375 (";" xparam) 5377 ) 5379 rdtval = date-time / date / period 5380 ;Value MUST match value type 5382 Example: The following are examples of this property: 5384 RDATE:19970714T123000Z 5386 RDATE;TZID=US-EASTERN:19970714T083000 5388 RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z, 5389 19960404T010000Z/PT3H 5391 RDATE;VALUE=DATE:19970101,19970120,19970217,19970421 5392 19970526,19970704,19970901,19971014,19971128,19971129,19971225 5394 3.8.5.4. Recurrence Rule 5396 Property Name: RRULE 5398 Purpose: This property defines a rule or repeating pattern for 5399 recurring events, to-dos, or time zone definitions. 5401 Value Type: RECUR 5403 Property Parameters: Non-standard property parameters can be 5404 specified on this property. 5406 Conformance: This property can be specified one or more times in 5407 recurring "VEVENT", "VTODO" and "VJOURNAL" calendar components. 5408 It can also be specified once in each STANDARD or DAYLIGHT sub- 5409 component of the "VTIMEZONE" calendar component. 5411 Description: The recurrence rule, if specified, is used in computing 5412 the recurrence set. The recurrence set is the complete set of 5413 recurrence instances for a calendar component. The recurrence set 5414 is generated by considering the initial "DTSTART" property along 5415 with the "RRULE", "RDATE", "EXDATE" and "EXRULE" properties 5416 contained within the iCalendar object. The "DTSTART" property 5417 defines the first instance in the recurrence set. Multiple 5418 instances of the "RRULE" and "EXRULE" properties can also be 5419 specified to define more sophisticated recurrence sets. The final 5420 recurrence set is generated by gathering all of the start date/ 5421 times generated by any of the specified "RRULE" and "RDATE" 5422 properties, and excluding any start date/times which fall within 5423 the union of start date/times generated by any specified "EXRULE" 5424 and "EXDATE" properties. This implies that start date/times 5425 within exclusion related properties (i.e., "EXDATE" and "EXRULE") 5426 take precedence over those specified by inclusion properties 5427 (i.e., "RDATE" and "RRULE"). Where duplicate instances are 5428 generated by the "RRULE" and "RDATE" properties, only one 5429 recurrence is considered. Duplicate instances are ignored. 5431 The "DTSTART" and "DTEND" property pair or "DTSTART" and 5432 "DURATION" property pair, specified within the iCalendar object 5433 defines the first instance of the recurrence. When used with a 5434 recurrence rule, the "DTSTART" and "DTEND" properties MUST be 5435 specified in local time and the appropriate set of "VTIMEZONE" 5436 calendar components MUST be included. For detail on the usage of 5437 the "VTIMEZONE" calendar component, see the "VTIMEZONE" calendar 5438 component definition. 5440 Any duration associated with the iCalendar object applies to all 5441 members of the generated recurrence set. Any modified duration 5442 for specific recurrences MUST be explicitly specified using the 5443 "RDATE" property. 5445 Format Definition: The property is defined by the following notation: 5447 rrule = "RRULE" rrulparam ":" recur CRLF 5449 rrulparam = *(";" xparam) 5451 Example: All examples assume the Eastern United States time zone. 5453 Daily for 10 occurrences: 5455 DTSTART;TZID=US-Eastern:19970902T090000 5456 RRULE:FREQ=DAILY;COUNT=10 5458 ==> (1997 9:00 AM EDT)September 2-11 5460 Daily until December 24, 1997: 5462 DTSTART;TZID=US-Eastern:19970902T090000 5463 RRULE:FREQ=DAILY;UNTIL=19971224T000000Z 5465 ==> (1997 9:00 AM EDT)September 2-30;October 1-25 5466 (1997 9:00 AM EST)October 26-31;November 1-30;December 1-23 5468 Every other day - forever: 5470 DTSTART;TZID=US-Eastern:19970902T090000 5471 RRULE:FREQ=DAILY;INTERVAL=2 5473 ==> (1997 9:00 AM EDT)September2,4,6,8...24,26,28,30; 5474 October 2,4,6...20,22,24 5475 (1997 9:00 AM EST)October 26,28,30;November 1,3,5,7...25,27,29; 5476 Dec 1,3,... 5478 Every 10 days, 5 occurrences: 5480 DTSTART;TZID=US-Eastern:19970902T090000 5481 RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5 5483 ==> (1997 9:00 AM EDT)September 2,12,22;October 2,12 5485 Everyday in January, for 3 years: 5487 DTSTART;TZID=US-Eastern:19980101T090000 5488 RRULE:FREQ=YEARLY;UNTIL=20000131T090000Z; 5489 BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA 5490 or 5491 RRULE:FREQ=DAILY;UNTIL=20000131T090000Z;BYMONTH=1 5493 ==> (1998 9:00 AM EDT)January 1-31 5494 (1999 9:00 AM EDT)January 1-31 5495 (2000 9:00 AM EDT)January 1-31 5497 Weekly for 10 occurrences 5499 DTSTART;TZID=US-Eastern:19970902T090000 5500 RRULE:FREQ=WEEKLY;COUNT=10 5502 ==> (1997 9:00 AM EDT)September 2,9,16,23,30;October 7,14,21 5503 (1997 9:00 AM EST)October 28;November 4 5505 Weekly until December 24, 1997 5507 DTSTART;TZID=US-Eastern:19970902T090000 5508 RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z 5510 ==> (1997 9:00 AM EDT)September 2,9,16,23,30;October 7,14,21 5511 (1997 9:00 AM EST)October 28;November 4,11,18,25; 5512 December 2,9,16,23 5514 Every other week - forever: 5516 DTSTART;TZID=US-Eastern:19970902T090000 5517 RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU 5519 ==> (1997 9:00 AM EDT)September 2,16,30;October 14 5520 (1997 9:00 AM EST)October 28;November 11,25;December 9,23 5521 (1998 9:00 AM EST)January 6,20;February 5522 ... 5524 Weekly on Tuesday and Thursday for 5 weeks: 5526 DTSTART;TZID=US-Eastern:19970902T090000 5527 RRULE:FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH 5528 or 5530 RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH 5532 ==> (1997 9:00 AM EDT)September 2,4,9,11,16,18,23,25,30;October 2 5534 Every other week on Monday, Wednesday and Friday until December 5535 24, 1997, but starting on Tuesday, September 2, 1997: 5537 DTSTART;TZID=US-Eastern:19970902T090000 5538 RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU; 5539 BYDAY=MO,WE,FR 5541 ==> (1997 9:00 AM EDT)September 2,3,5,15,17,19,29;October 5542 1,3,13,15,17 5543 (1997 9:00 AM EST)October 27,29,31;November 10,12,14,24,26,28; 5544 December 8,10,12,22 5546 Every other week on Tuesday and Thursday, for 8 occurrences: 5548 DTSTART;TZID=US-Eastern:19970902T090000 5549 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH 5551 ==> (1997 9:00 AM EDT)September 2,4,16,18,30;October 2,14,16 5553 Monthly on the 1st Friday for ten occurrences: 5555 DTSTART;TZID=US-Eastern:19970905T090000 5556 RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR 5558 ==> (1997 9:00 AM EDT)September 5;October 3 5559 (1997 9:00 AM EST)November 7;Dec 5 5560 (1998 9:00 AM EST)January 2;February 6;March 6;April 3 5561 (1998 9:00 AM EDT)May 1;June 5 5563 Monthly on the 1st Friday until December 24, 1997: 5565 DTSTART;TZID=US-Eastern:19970905T090000 5566 RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR 5568 ==> (1997 9:00 AM EDT)September 5;October 3 5569 (1997 9:00 AM EST)November 7;December 5 5571 Every other month on the 1st and last Sunday of the month for 10 5572 occurrences: 5574 DTSTART;TZID=US-Eastern:19970907T090000 5575 RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU 5577 ==> (1997 9:00 AM EDT)September 7,28 5578 (1997 9:00 AM EST)November 2,30 5579 (1998 9:00 AM EST)January 4,25;March 1,29 5580 (1998 9:00 AM EDT)May 3,31 5582 Monthly on the second to last Monday of the month for 6 months: 5584 DTSTART;TZID=US-Eastern:19970922T090000 5585 RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO 5587 ==> (1997 9:00 AM EDT)September 22;October 20 5588 (1997 9:00 AM EST)November 17;December 22 5589 (1998 9:00 AM EST)January 19;February 16 5591 Monthly on the third to the last day of the month, forever: 5593 DTSTART;TZID=US-Eastern:19970928T090000 5594 RRULE:FREQ=MONTHLY;BYMONTHDAY=-3 5596 ==> (1997 9:00 AM EDT)September 28 5597 (1997 9:00 AM EST)October 29;November 28;December 29 5598 (1998 9:00 AM EST)January 29;February 26 5599 ... 5601 Monthly on the 2nd and 15th of the month for 10 occurrences: 5603 DTSTART;TZID=US-Eastern:19970902T090000 5604 RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15 5606 ==> (1997 9:00 AM EDT)September 2,15;October 2,15 5607 (1997 9:00 AM EST)November 2,15;December 2,15 5608 (1998 9:00 AM EST)January 2,15 5610 Monthly on the first and last day of the month for 10 occurrences: 5612 DTSTART;TZID=US-Eastern:19970930T090000 5613 RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1 5615 ==> (1997 9:00 AM EDT)September 30;October 1 5616 (1997 9:00 AM EST)October 31;November 1,30;December 1,31 5617 (1998 9:00 AM EST)January 1,31;February 1 5619 Every 18 months on the 10th thru 15th of the month for 10 5620 occurrences: 5622 DTSTART;TZID=US-Eastern:19970910T090000 5623 RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14, 5624 15 5626 ==> (1997 9:00 AM EDT)September 10,11,12,13,14,15 5627 (1999 9:00 AM EST)March 10,11,12,13 5629 Every Tuesday, every other month: 5631 DTSTART;TZID=US-Eastern:19970902T090000 5632 RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU 5634 ==> (1997 9:00 AM EDT)September 2,9,16,23,30 5635 (1997 9:00 AM EST)November 4,11,18,25 5636 (1998 9:00 AM EST)January 6,13,20,27;March 3,10,17,24,31 5637 ... 5639 Yearly in June and July for 10 occurrences: 5641 DTSTART;TZID=US-Eastern:19970610T090000 5642 RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7 5643 ==> (1997 9:00 AM EDT)June 10;July 10 5644 (1998 9:00 AM EDT)June 10;July 10 5645 (1999 9:00 AM EDT)June 10;July 10 5646 (2000 9:00 AM EDT)June 10;July 10 5647 (2001 9:00 AM EDT)June 10;July 10 5648 Note: Since none of the BYDAY, BYMONTHDAY or BYYEARDAY components 5649 are specified, the day is gotten from DTSTART 5651 Every other year on January, February, and March for 10 5652 occurrences: 5654 DTSTART;TZID=US-Eastern:19970310T090000 5655 RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3 5657 ==> (1997 9:00 AM EST)March 10 5658 (1999 9:00 AM EST)January 10;February 10;March 10 5659 (2001 9:00 AM EST)January 10;February 10;March 10 5660 (2003 9:00 AM EST)January 10;February 10;March 10 5662 Every 3rd year on the 1st, 100th and 200th day for 10 occurrences: 5664 DTSTART;TZID=US-Eastern:19970101T090000 5665 RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200 5667 ==> (1997 9:00 AM EST)January 1 5668 (1997 9:00 AM EDT)April 10;July 19 5669 (2000 9:00 AM EST)January 1 5670 (2000 9:00 AM EDT)April 9;July 18 5671 (2003 9:00 AM EST)January 1 5672 (2003 9:00 AM EDT)April 10;July 19 5673 (2006 9:00 AM EST)January 1 5675 Every 20th Monday of the year, forever: 5677 DTSTART;TZID=US-Eastern:19970519T090000 5678 RRULE:FREQ=YEARLY;BYDAY=20MO 5680 ==> (1997 9:00 AM EDT)May 19 5681 (1998 9:00 AM EDT)May 18 5682 (1999 9:00 AM EDT)May 17 5683 ... 5685 Monday of week number 20 (where the default start of the week is 5686 Monday), forever: 5688 DTSTART;TZID=US-Eastern:19970512T090000 5689 RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO 5691 ==> (1997 9:00 AM EDT)May 12 5692 (1998 9:00 AM EDT)May 11 5693 (1999 9:00 AM EDT)May 17 5694 ... 5696 Every Thursday in March, forever: 5698 DTSTART;TZID=US-Eastern:19970313T090000 5699 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH 5701 ==> (1997 9:00 AM EST)March 13,20,27 5702 (1998 9:00 AM EST)March 5,12,19,26 5703 (1999 9:00 AM EST)March 4,11,18,25 5704 ... 5706 Every Thursday, but only during June, July, and August, forever: 5708 DTSTART;TZID=US-Eastern:19970605T090000 5709 RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8 5711 ==> (1997 9:00 AM EDT)June 5,12,19,26;July 3,10,17,24,31; 5712 August 7,14,21,28 5713 (1998 9:00 AM EDT)June 4,11,18,25;July 2,9,16,23,30; 5714 August 6,13,20,27 5715 (1999 9:00 AM EDT)June 3,10,17,24;July 1,8,15,22,29; 5716 August 5,12,19,26 5717 ... 5719 Every Friday the 13th, forever: 5721 DTSTART;TZID=US-Eastern:19970902T090000 5722 EXDATE;TZID=US-Eastern:19970902T090000 5723 RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13 5725 ==> (1998 9:00 AM EST)February 13;March 13;November 13 5726 (1999 9:00 AM EDT)August 13 5727 (2000 9:00 AM EDT)October 13 5728 ... 5730 The first Saturday that follows the first Sunday of the month, 5731 forever: 5733 DTSTART;TZID=US-Eastern:19970913T090000 5734 RRULE:FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13 5736 ==> (1997 9:00 AM EDT)September 13;October 11 5737 (1997 9:00 AM EST)November 8;December 13 5738 (1998 9:00 AM EST)January 10;February 7;March 7 5739 (1998 9:00 AM EDT)April 11;May 9;June 13... 5740 ... 5742 Every four years, the first Tuesday after a Monday in November, 5743 forever (U.S. Presidential Election day): 5745 DTSTART;TZID=US-Eastern:19961105T090000 5746 RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4, 5747 5,6,7,8 5749 ==> (1996 9:00 AM EST)November 5 5750 (2000 9:00 AM EST)November 7 5751 (2004 9:00 AM EST)November 2 5752 ... 5754 The 3rd instance into the month of one of Tuesday, Wednesday or 5755 Thursday, for the next 3 months: 5757 DTSTART;TZID=US-Eastern:19970904T090000 5758 RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3 5760 ==> (1997 9:00 AM EDT)September 4;October 7 5761 (1997 9:00 AM EST)November 6 5763 The 2nd to last weekday of the month: 5765 DTSTART;TZID=US-Eastern:19970929T090000 5766 RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2 5768 ==> (1997 9:00 AM EDT)September 29 5769 (1997 9:00 AM EST)October 30;November 27;December 30 5770 (1998 9:00 AM EST)January 29;February 26;March 30 5771 ... 5773 Every 3 hours from 9:00 AM to 5:00 PM on a specific day: 5775 DTSTART;TZID=US-Eastern:19970902T090000 5776 RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z 5777 ==> (September 2, 1997 EDT)09:00,12:00,15:00 5779 Every 15 minutes for 6 occurrences: 5781 DTSTART;TZID=US-Eastern:19970902T090000 5782 RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6 5784 ==> (September 2, 1997 EDT)09:00,09:15,09:30,09:45,10:00,10:15 5786 Every hour and a half for 4 occurrences: 5788 DTSTART;TZID=US-Eastern:19970902T090000 5789 RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4 5791 ==> (September 2, 1997 EDT)09:00,10:30;12:00;13:30 5793 Every 20 minutes from 9:00 AM to 4:40 PM every day: 5795 DTSTART;TZID=US-Eastern:19970902T090000 5796 RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40 5797 or 5798 RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16 5800 ==> (September 2, 1997 EDT)9:00,9:20,9:40,10:00,10:20, 5801 ... 16:00,16:20,16:40 5802 (September 3, 1997 EDT)9:00,9:20,9:40,10:00,10:20, 5803 ...16:00,16:20,16:40 5804 ... 5806 An example where the days generated makes a difference because of 5807 WKST: 5809 DTSTART;TZID=US-Eastern:19970805T090000 5810 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO 5812 ==> (1997 EDT)Aug 5,10,19,24 5814 changing only WKST from MO to SU, yields different results... 5816 DTSTART;TZID=US-Eastern:19970805T090000 5817 RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU 5818 ==> (1997 EDT)August 5,17,19,31 5820 3.8.6. Alarm Component Properties 5822 The following properties specify alarm information in calendar 5823 components. 5825 3.8.6.1. Action 5827 Property Name: ACTION 5829 Purpose: This property defines the action to be invoked when an alarm 5830 is triggered. 5832 Value Type: TEXT 5834 Property Parameters: Non-standard property parameters can be 5835 specified on this property. 5837 Conformance: This property MUST be specified once in a "VALARM" 5838 calendar component. 5840 Description: Each "VALARM" calendar component has a particular type 5841 of action associated with it. This property specifies the type of 5842 action 5844 Format Definition: The property is defined by the following notation: 5846 action = "ACTION" actionparam ":" actionvalue CRLF 5848 actionparam = *(";" xparam) 5850 actionvalue = "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE" 5851 / iana-token / x-name 5853 Example: The following are examples of this property in a "VALARM" 5854 calendar component: 5856 ACTION:AUDIO 5858 ACTION:DISPLAY 5860 ACTION:PROCEDURE 5862 3.8.6.2. Repeat Count 5864 Property Name: REPEAT 5866 Purpose: This property defines the number of time the alarm should be 5867 repeated, after the initial trigger. 5869 Value Type: INTEGER 5870 Property Parameters: Non-standard property parameters can be 5871 specified on this property. 5873 Conformance: This property can be specified in a "VALARM" calendar 5874 component. 5876 Description: If the alarm triggers more than once, then this property 5877 MUST be specified along with the "DURATION" property. 5879 Format Definition: The property is defined by the following notation: 5881 repeatcnt = "REPEAT" repparam ":" integer CRLF 5882 ;Default is "0", zero. 5884 repparam = *(";" xparam) 5886 Example: The following is an example of this property for an alarm 5887 that repeats 4 additional times with a 5 minute delay after the 5888 initial triggering of the alarm: 5890 REPEAT:4 5891 DURATION:PT5M 5893 3.8.6.3. Trigger 5895 Property Name: TRIGGER 5897 Purpose: This property specifies when an alarm will trigger. 5899 Value Type: The default value type is DURATION. The value type can 5900 be set to a DATE-TIME value type, in which case the value MUST 5901 specify a UTC formatted DATE-TIME value. 5903 Property Parameters: Non-standard, value data type, time zone 5904 identifier or trigger relationship property parameters can be 5905 specified on this property. The trigger relationship property 5906 parameter MUST only be specified when the value type is DURATION. 5908 Conformance: This property MUST be specified in the "VALARM" calendar 5909 component. 5911 Description: Within the "VALARM" calendar component, this property 5912 defines when the alarm will trigger. The default value type is 5913 DURATION, specifying a relative time for the trigger of the alarm. 5914 The default duration is relative to the start of an event or to-do 5915 that the alarm is associated with. The duration can be explicitly 5916 set to trigger from either the end or the start of the associated 5917 event or to-do with the "RELATED" parameter. A value of START 5918 will set the alarm to trigger off the start of the associated 5919 event or to-do. A value of END will set the alarm to trigger off 5920 the end of the associated event or to-do. 5922 Either a positive or negative duration may be specified for the 5923 "TRIGGER" property. An alarm with a positive duration is 5924 triggered after the associated start or end of the event or to-do. 5925 An alarm with a negative duration is triggered before the 5926 associated start or end of the event or to-do. 5928 The "RELATED" property parameter is not valid if the value type of 5929 the property is set to DATE-TIME (i.e., for an absolute date and 5930 time alarm trigger). If a value type of DATE-TIME is specified, 5931 then the property value MUST be specified in the UTC time format. 5932 If an absolute trigger is specified on an alarm for a recurring 5933 event or to-do, then the alarm will only trigger for the specified 5934 absolute date/time, along with any specified repeating instances. 5936 If the trigger is set relative to START, then the "DTSTART" 5937 property MUST be present in the associated "VEVENT" or "VTODO" 5938 calendar component. If an alarm is specified for an event with 5939 the trigger set relative to the END, then the "DTEND" property or 5940 the "DSTART" and "DURATION' properties MUST be present in the 5941 associated "VEVENT" calendar component. If the alarm is specified 5942 for a to-do with a trigger set relative to the END, then either 5943 the "DUE" property or the "DTSTART" and "DURATION" properties MUST 5944 be present in the associated "VTODO" calendar component. 5946 Alarms specified in an event or to-do which is defined in terms of 5947 a DATE value type will be triggered relative to 00:00:00 UTC on 5948 the specified date. For example, if "DTSTART:19980205, then the 5949 duration trigger will be relative to19980205T000000Z. 5951 Format Definition: The property is defined by the following notation: 5953 trigger = "TRIGGER" (trigrel / trigabs) 5955 trigrel = *( 5957 ; the following are optional, 5958 ; but MUST NOT occur more than once 5960 (";" "VALUE" "=" "DURATION") / 5961 (";" trigrelparam) / 5963 ; the following is optional, 5964 ; and MAY occur more than once 5966 (";" xparam) 5967 ) ":" dur-value 5969 trigabs = 1*( 5971 ; the following is REQUIRED, 5972 ; but MUST NOT occur more than once 5974 (";" "VALUE" "=" "DATE-TIME") / 5976 ; the following is optional, 5977 ; and MAY occur more than once 5979 (";" xparam) 5981 ) ":" date-time 5983 Example: A trigger set 15 minutes prior to the start of the event or 5984 to-do. 5986 TRIGGER:-P15M 5988 A trigger set 5 minutes after the end of the event or to-do. 5990 TRIGGER;RELATED=END:P5M 5992 A trigger set to an absolute date/time. 5994 TRIGGER;VALUE=DATE-TIME:19980101T050000Z 5996 3.8.7. Change Management Component Properties 5998 The following properties specify change management information in 5999 calendar components. 6001 3.8.7.1. Date/Time Created 6003 Property Name: CREATED 6005 Purpose: This property specifies the date and time that the calendar 6006 information was created by the calendar user agent in the calendar 6007 store. 6009 Note: This is analogous to the creation date and time for a 6010 file in the file system. 6012 Value Type: DATE-TIME 6014 Property Parameters: Non-standard property parameters can be 6015 specified on this property. 6017 Conformance: The property can be specified once in "VEVENT", "VTODO" 6018 or "VJOURNAL" calendar components. 6020 Description: The date and time is a UTC value. 6022 Format Definition: The property is defined by the following notation: 6024 created = "CREATED" creaparam ":" date-time CRLF 6026 creaparam = *(";" xparam) 6028 Example: The following is an example of this property: 6030 CREATED:19960329T133000Z 6032 3.8.7.2. Date/Time Stamp 6034 Property Name: DTSTAMP 6036 Purpose: The property indicates the date/time that the instance of 6037 the iCalendar object was created. 6039 Value Type: DATE-TIME 6041 Property Parameters: Non-standard property parameters can be 6042 specified on this property. 6044 Conformance: This property MUST be included in the "VEVENT", "VTODO", 6045 "VJOURNAL" or "VFREEBUSY" calendar components. 6047 Description: The value MUST be specified in the UTC time format. 6049 This property is also useful to protocols such as [I-D.ietf- 6050 calsify-rfc2447bis] that have inherent latency issues with the 6051 delivery of content. This property will assist in the proper 6052 sequencing of messages containing iCalendar objects. 6054 This property is different than the "CREATED" and "LAST-MODIFIED" 6055 properties. These two properties are used to specify when the 6056 particular calendar data in the calendar store was created and 6057 last modified. This is different than when the iCalendar object 6058 representation of the calendar service information was created or 6059 last modified. 6061 Format Definition: The property is defined by the following notation: 6063 dtstamp = "DTSTAMP" stmparam ":" date-time CRLF 6065 stmparam = *(";" xparam) 6067 Example: 6069 DTSTAMP:19971210T080000Z 6071 3.8.7.3. Last Modified 6073 Property Name: LAST-MODIFIED 6075 Purpose: The property specifies the date and time that the 6076 information associated with the calendar component was last 6077 revised in the calendar store. 6079 Note: This is analogous to the modification date and time for a 6080 file in the file system. 6082 Value Type: DATE-TIME 6084 Property Parameters: Non-standard property parameters can be 6085 specified on this property. 6087 Conformance: This property can be specified in the "EVENT", "VTODO", 6088 "VJOURNAL" or "VTIMEZONE" calendar components. 6090 Description: The property value MUST be specified in the UTC time 6091 format. 6093 Format Definition: The property is defined by the following notation: 6095 last-mod = "LAST-MODIFIED" lstparam ":" date-time CRLF 6097 lstparam = *(";" xparam) 6099 Example: The following is are examples of this property: 6101 LAST-MODIFIED:19960817T133000Z 6103 3.8.7.4. Sequence Number 6105 Property Name: SEQUENCE 6107 Purpose: This property defines the revision sequence number of the 6108 calendar component within a sequence of revisions. 6110 Value Type: integer 6112 Property Parameters: Non-standard property parameters can be 6113 specified on this property. 6115 Conformance: The property can be specified in "VEVENT", "VTODO" or 6116 "VJOURNAL" calendar component. 6118 Description: When a calendar component is created, its sequence 6119 number is zero (US-ASCII decimal 48). It is monotonically 6120 incremented by the "Organizer's" CUA each time the "Organizer" 6121 makes a significant revision to the calendar component. When the 6122 "Organizer" makes changes to one of the following properties, the 6123 sequence number MUST be incremented: 6125 "DTSTART" 6127 "DTEND" 6129 "DUE" 6131 "RDATE" 6133 "RRULE" 6135 "EXDATE" 6137 "EXRULE" 6138 "STATUS" 6140 In addition, changes made by the "Organizer" to other properties 6141 can also force the sequence number to be incremented. The 6142 "Organizer" CUA MUST increment the sequence number when ever it 6143 makes changes to properties in the calendar component that the 6144 "Organizer" deems will jeopardize the validity of the 6145 participation status of the "Attendees". For example, changing 6146 the location of a meeting from one locale to another distant 6147 locale could effectively impact the participation status of the 6148 "Attendees". 6150 The "Organizer" includes this property in an iCalendar object that 6151 it sends to an "Attendee" to specify the current version of the 6152 calendar component. 6154 The "Attendee" includes this property in an iCalendar object that 6155 it sends to the "Organizer" to specify the version of the calendar 6156 component that the "Attendee" is referring to. 6158 A change to the sequence number is not the mechanism that an 6159 "Organizer" uses to request a response from the "Attendees". The 6160 "RSVP" parameter on the "ATTENDEE" property is used by the 6161 "Organizer" to indicate that a response from the "Attendees" is 6162 requested. 6164 Format Definition: The property is defined by the following notation: 6166 seq = "SEQUENCE" seqparam ":" integer CRLF 6167 ; Default is "0" 6169 seqparam = *(";" xparam) 6171 Example: The following is an example of this property for a calendar 6172 component that was just created by the "Organizer". 6174 SEQUENCE:0 6176 The following is an example of this property for a calendar 6177 component that has been revised two different times by the 6178 "Organizer". 6180 SEQUENCE:2 6182 3.8.8. Miscellaneous Component Properties 6184 The following properties specify information about a number of 6185 miscellaneous features of calendar components. 6187 3.8.8.1. Non-standard Properties 6189 Property Name: Any property name with a "X-" prefix 6191 Purpose: This class of property provides a framework for defining 6192 non-standard properties. 6194 Value Type: TEXT 6196 Property Parameters: Non-standard and language property parameters 6197 can be specified on this property. 6199 Conformance: This property can be specified in any calendar 6200 component. 6202 Description: The MIME Calendaring and Scheduling Content Type 6203 provides a "standard mechanism for doing non-standard things". 6204 This extension support is provided for implementers to "push the 6205 envelope" on the existing version of the memo. Extension 6206 properties are specified by property and/or property parameter 6207 names that have the prefix text of "X-" (the two character 6208 sequence: LATIN CAPITAL LETTER X character followed by the HYPEN- 6209 MINUS character). It is recommended that vendors concatenate onto 6210 this sentinel another short prefix text to identify the vendor. 6211 This will facilitate readability of the extensions and minimize 6212 possible collision of names between different vendors. User 6213 agents that support this content type are expected to be able to 6214 parse the extension properties and property parameters but can 6215 ignore them. 6217 At present, there is no registration authority for names of 6218 extension properties and property parameters. The data type for 6219 this property is TEXT. Optionally, the data type can be any of 6220 the other valid data types. 6222 Format Definition: The property is defined by the following notation: 6224 x-prop = x-name *(";" xparam) [";" languageparam] ":" text CRLF 6225 ; Lines longer than 75 octets should be folded 6227 Example: The following might be the ABC vendor's extension for an 6228 audio-clip form of subject property: 6230 X-ABC-MMSUBJ;X-ABC-MMSUBJTYPE=wave:http://load.noise.org/mysubj.wav 6232 3.8.8.2. Request Status 6234 Property Name: REQUEST-STATUS 6236 Purpose: This property defines the status code returned for a 6237 scheduling request. 6239 Value Type: TEXT 6241 Property Parameters: Non-standard and language property parameters 6242 can be specified on this property. 6244 Conformance: The property can be specified in "VEVENT", "VTODO", 6245 "VJOURNAL" or "VFREEBUSY" calendar component. 6247 Description: This property is used to return status code information 6248 related to the processing of an associated iCalendar object. The 6249 data type for this property is TEXT. 6251 The value consists of a short return status component, a longer 6252 return status description component, and optionally a status- 6253 specific data component. The components of the value are 6254 separated by the SEMICOLON character (US-ASCII decimal 59). 6256 The short return status is a PERIOD character (US-ASCII decimal 6257 46) separated 3-tuple of integers. For example, "3.1.1". The 6258 successive levels of integers provide for a successive level of 6259 status code granularity. 6261 The following are initial classes for the return status code. 6262 Individual iCalendar object methods will define specific return 6263 status codes for these classes. In addition, other classes for 6264 the return status code may be defined using the registration 6265 process defined later in this memo. 6267 |==============+===============================================| 6268 | Short Return | Longer Return Status Description | 6269 | Status Code | | 6270 |==============+===============================================| 6271 | 1.xx | Preliminary success. This class of status | 6272 | | of status code indicates that the request has | 6273 | | request has been initially processed but that | 6274 | | completion is pending. | 6275 |==============+===============================================| 6276 | 2.xx | Successful. This class of status code | 6277 | | indicates that the request was completed | 6278 | | successfuly. However, the exact status code | 6279 | | can indicate that a fallback has been taken. | 6280 |==============+===============================================| 6281 | 3.xx | Client Error. This class of status code | 6282 | | indicates that the request was not successful.| 6283 | | The error is the result of either a syntax or | 6284 | | a semantic error in the client formatted | 6285 | | request. Request should not be retried until | 6286 | | the condition in the request is corrected. | 6287 |==============+===============================================| 6288 | 4.xx | Scheduling Error. This class of status code | 6289 | | indicates that the request was not successful.| 6290 | | Some sort of error occurred within the | 6291 | | calendaring and scheduling service, not | 6292 | | directly related to the request itself. | 6293 |==============+===============================================| 6295 Format Definition: The property is defined by the following notation: 6297 rstatus = "REQUEST-STATUS" rstatparam ":" 6298 statcode ";" statdesc [";" extdata] 6300 rstatparam = *( 6302 ; the following is optional, 6303 ; but MUST NOT occur more than once 6305 (";" languageparm) / 6307 ; the following is optional, 6308 ; and MAY occur more than once 6310 (";" xparam) 6312 ) 6314 statcode = 1*DIGIT *("." 1*DIGIT) 6315 ;Hierarchical, numeric return status code 6317 statdesc = text 6318 ;Textual status description 6320 extdata = text 6321 ;Textual exception data. For example, the offending property 6322 ;name and value or complete property line. 6324 Example: The following are some possible examples of this property. 6326 The COMMA and SEMICOLON separator characters in the property value 6327 are BACKSLASH character escaped because they appear in a text 6328 value. 6330 REQUEST-STATUS:2.0;Success 6332 REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01 6334 REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled 6335 as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2 6337 REQUEST-STATUS:4.1;Event conflict. Date/time is busy. 6339 REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE: 6340 MAILTO:jsmith@host.com 6342 4. iCalendar Object Examples 6344 The following examples are provided as an informational source of 6345 illustrative iCalendar objects consistent with this content type. 6347 The following example specifies a three-day conference that begins at 6348 8:00 AM EDT, September 18, 1996 and end at 6:00 PM EDT, September 20, 6349 1996. 6351 BEGIN:VCALENDAR 6352 PRODID:-//xyz Corp//NONSGML PDA Calendar Version 1.0//EN 6353 VERSION:2.0 6354 BEGIN:VEVENT 6355 DTSTAMP:19960704T120000Z 6356 UID:uid1@host.com 6357 ORGANIZER:MAILTO:jsmith@host.com 6358 DTSTART:19960918T143000Z 6359 DTEND:19960920T220000Z 6360 STATUS:CONFIRMED 6361 CATEGORIES:CONFERENCE 6362 SUMMARY:Networld+Interop Conference 6363 DESCRIPTION:Networld+Interop Conference 6364 and Exhibit\nAtlanta World Congress Center\n 6365 Atlanta, Georgia 6366 END:VEVENT 6367 END:VCALENDAR 6369 The following example specifies a group scheduled meeting that begin 6370 at 8:30 AM EST on March 12, 1998 and end at 9:30 AM EST on March 12, 6371 1998. The "Organizer" has scheduled the meeting with one or more 6372 calendar users in a group. A time zone specification for Eastern 6373 United States has been specified. 6375 BEGIN:VCALENDAR 6376 PRODID:-//RDU Software//NONSGML HandCal//EN 6377 VERSION:2.0 6378 BEGIN:VTIMEZONE 6379 TZID:US-Eastern 6380 BEGIN:STANDARD 6381 DTSTART:19981025T020000 6382 RDATE:19981025T020000 6383 TZOFFSETFROM:-0400 6384 TZOFFSETTO:-0500 6385 TZNAME:EST 6386 END:STANDARD 6387 BEGIN:DAYLIGHT 6388 DTSTART:19990404T020000 6389 RDATE:19990404T020000 6390 TZOFFSETFROM:-0500 6391 TZOFFSETTO:-0400 6392 TZNAME:EDT 6393 END:DAYLIGHT 6394 END:VTIMEZONE 6395 BEGIN:VEVENT 6396 DTSTAMP:19980309T231000Z 6397 UID:guid-1.host1.com 6398 ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com 6399 ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: 6400 MAILTO:employee-A@host.com 6401 DESCRIPTION:Project XYZ Review Meeting 6402 CATEGORIES:MEETING 6403 CLASS:PUBLIC 6404 CREATED:19980309T130000Z 6405 SUMMARY:XYZ Project Review 6406 DTSTART;TZID=US-Eastern:19980312T083000 6407 DTEND;TZID=US-Eastern:19980312T093000 6408 LOCATION:1CP Conference Room 4350 6409 END:VEVENT 6410 END:VCALENDAR 6412 The following is an example of an iCalendar object passed in a MIME 6413 message with a single body part consisting of a "text/calendar" 6414 Content Type. 6416 TO:jsmith@host1.com 6417 FROM:jdoe@host1.com 6418 MIME-VERSION:1.0 6419 MESSAGE-ID: 6420 CONTENT-TYPE:text/calendar 6422 BEGIN:VCALENDAR 6423 METHOD:xyz 6424 VERSION:2.0 6425 PRODID:-//ABC Corporation//NONSGML My Product//EN 6426 BEGIN:VEVENT 6427 DTSTAMP:19970324T120000Z 6428 SEQUENCE:0 6429 UID:uid3@host1.com 6430 ORGANIZER:MAILTO:jdoe@host1.com 6431 ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host1.com 6432 DTSTART:19970324T123000Z 6433 DTEND:19970324T210000Z 6434 CATEGORIES:MEETING,PROJECT 6435 CLASS:PUBLIC 6436 SUMMARY:Calendaring Interoperability Planning Meeting 6437 DESCRIPTION:Discuss how we can test c&s interoperability\n 6438 using iCalendar and other IETF standards. 6439 LOCATION:LDB Lobby 6440 ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ 6441 conf/bkgrnd.ps 6442 END:VEVENT 6443 END:VCALENDAR 6445 The following is an example of a to-do due on April 15, 1998. An 6446 audio alarm has been specified to remind the calendar user at noon, 6447 the day before the to-do is expected to be completed and repeat 6448 hourly, four additional times. The to-do definition has been 6449 modified twice since it was initially created. 6451 BEGIN:VCALENDAR 6452 VERSION:2.0 6453 PRODID:-//ABC Corporation//NONSGML My Product//EN 6454 BEGIN:VTODO 6455 DTSTAMP:19980130T134500Z 6456 SEQUENCE:2 6457 UID:uid4@host1.com 6458 ORGANIZER:MAILTO:unclesam@us.gov 6459 ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com 6460 DUE:19980415T235959 6461 STATUS:NEEDS-ACTION 6462 SUMMARY:Submit Income Taxes 6463 BEGIN:VALARM 6464 ACTION:AUDIO 6465 TRIGGER:19980403T120000 6466 ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- 6467 files/ssbanner.aud 6468 REPEAT:4 6469 DURATION:PT1H 6470 END:VALARM 6471 END:VTODO 6472 END:VCALENDAR 6474 The following is an example of a journal entry. 6476 BEGIN:VCALENDAR 6477 VERSION:2.0 6478 PRODID:-//ABC Corporation//NONSGML My Product//EN 6479 BEGIN:VJOURNAL 6480 DTSTAMP:19970324T120000Z 6481 UID:uid5@host1.com 6482 ORGANIZER:MAILTO:jsmith@host.com 6483 STATUS:DRAFT 6484 CLASS:PUBLIC 6485 CATEGORY:Project Report, XYZ, Weekly Meeting 6486 DESCRIPTION:Project xyz Review Meeting Minutes\n 6487 Agenda\n1. Review of project version 1.0 requirements.\n2. 6488 Definition 6489 of project processes.\n3. Review of project schedule.\n 6490 Participants: John Smith, Jane Doe, Jim Dandy\n-It was 6491 decided that the requirements need to be signed off by 6492 product marketing.\n-Project processes were accepted.\n 6493 -Project schedule needs to account for scheduled holidays 6494 and employee vacation time. Check with HR for specific 6495 dates.\n-New schedule will be distributed by Friday.\n- 6496 Next weeks meeting is cancelled. No meeting until 3/23. 6497 END:VJOURNAL 6498 END:VCALENDAR 6500 The following is an example of published busy time information. The 6501 iCalendar object might be placed in the network resource 6502 www.host.com/calendar/busytime/jsmith.ifb. 6504 BEGIN:VCALENDAR 6505 VERSION:2.0 6506 PRODID:-//RDU Software//NONSGML HandCal//EN 6507 BEGIN:VFREEBUSY 6508 ORGANIZER:MAILTO:jsmith@host.com 6509 DTSTART:19980313T141711Z 6510 DTEND:19980410T141711Z 6511 FREEBUSY:19980314T233000Z/19980315T003000Z 6512 FREEBUSY:19980316T153000Z/19980316T163000Z 6513 FREEBUSY:19980318T030000Z/19980318T040000Z 6514 URL:http://www.host.com/calendar/busytime/jsmith.ifb 6515 END:VFREEBUSY 6516 END:VCALENDAR 6518 5. Recommended Practices 6520 These recommended practices should be followed in order to assure 6521 consistent handling of the following cases for an iCalendar object. 6523 1. Content lines longer than 75 octets SHOULD be folded. 6525 2. A calendar entry with a "DTSTART" property but no "DTEND" 6526 property does not take up any time. It is intended to represent 6527 an event that is associated with a given calendar date and time 6528 of day, such as an anniversary. Since the event does not take 6529 up any time, it MUST NOT be used to record busy time no matter 6530 what the value for the "TRANSP" property. 6532 3. When the "DTSTART" and "DTEND", for "VEVENT", "VJOURNAL" and 6533 "VFREEBUSY" calendar components, and "DTSTART" and "DUE", for 6534 "VTODO" calendar components, have the same value data type 6535 (e.g., DATE-TIME), they SHOULD specify values in the same time 6536 format (e.g., UTC time format). 6538 4. When the combination of the "RRULE" and "RDATE" properties on an 6539 iCalendar object produces multiple instances having the same 6540 start date/time, they should be collapsed to, and considered as, 6541 a single instance. 6543 5. When a calendar user receives multiple requests for the same 6544 calendar component (e.g., REQUEST for a "VEVENT" calendar 6545 component) as a result of being on multiple mailing lists 6546 specified by "ATTENDEE" properties in the request, they SHOULD 6547 respond to only one of the requests. The calendar user SHOULD 6548 also specify (using the "MEMBER" parameter of the "ATTENDEE" 6549 property) which mailing list they are a member of. 6551 6. An implementation can truncate a "SUMMARY" property value to 255 6552 characters. 6554 7. If seconds of the minute are not supported by an implementation, 6555 then a value of "00" SHOULD be specified for the seconds 6556 component in a time value. 6558 8. If the value type parameter (VALUE=) contains an unknown value 6559 type, it SHOULD be treated as TEXT. 6561 9. TZURL values SHOULD NOT be specified as a FILE URI type. This 6562 URI form can be useful within an organization, but is 6563 problematic in the Internet. 6565 10. Some possible English values for CATEGORIES property include 6566 "ANNIVERSARY", "APPOINTMENT", "BUSINESS", "EDUCATION", 6567 "HOLIDAY", "MEETING", "MISCELLANEOUS", "NON-WORKING HOURS", "NOT 6568 IN OFFICE", "PERSONAL", "PHONE CALL", "SICK DAY", "SPECIAL 6569 OCCASION", "TRAVEL", "VACATION". Categories can be specified in 6570 any registered language. 6572 11. Some possible English values for RESOURCES property include 6573 "CATERING", "CHAIRS", "COMPUTER PROJECTOR", "EASEL", "OVERHEAD 6574 PROJECTOR", "SPEAKER PHONE", "TABLE", "TV", "VCR", "VIDEO 6575 PHONE", "VEHICLE". Resources can be specified in any registered 6576 language. 6578 6. Registration of Content Type Elements 6580 This section provides the process for registration of MIME 6581 Calendaring and Scheduling Content Type iCalendar object methods and 6582 new or modified properties. 6584 6.1. Registration of New and Modified iCalendar Object Methods 6586 New MIME Calendaring and Scheduling Content Type iCalendar object 6587 methods are registered by the publication of an IETF Request for 6588 Comments (RFC). Changes to an iCalendar object method are registered 6589 by the publication of a revision of the RFC defining the method. 6591 6.2. Registration of New Properties 6593 This section defines procedures by which new properties or enumerated 6594 property values for the MIME Calendaring and Scheduling Content Type 6595 can be registered with the IANA. Non-IANA properties can be used by 6596 bilateral agreement, provided the associated properties names follow 6597 the "X-" convention. 6599 The procedures defined here are designed to allow public comment and 6600 review of new properties, while posing only a small impediment to the 6601 definition of new properties. 6603 Registration of a new property is accomplished by the following 6604 steps. 6606 6.2.1. Define the property 6608 A property is defined by completing the following template. 6610 To: ietf-calendar@imc.org 6612 Subject: Registration of text/calendar MIME property XXX 6614 Property name: 6616 Property purpose: 6618 Property value type(s): 6620 Property parameter (s): 6622 Conformance: 6624 Description: 6626 Format definition: 6628 Examples: 6630 The meaning of each field in the template is as follows. 6632 Property name: The name of the property, as it will appear in the 6633 body of an text/calendar MIME Content-Type "property: value" line 6634 to the left of the colon ":". 6636 Property purpose: The purpose of the property (e.g., to indicate a 6637 delegate for the event or to-do, etc.). Give a short but clear 6638 description. 6640 Property value type (s): Any of the valid value types for the 6641 property value needs to be specified. The default value type also 6642 needs to be specified. If a new value type is specified, it needs 6643 to be declared in this section. 6645 Property parameter (s): Any of the valid property parameters for the 6646 property needs to be specified. 6648 Conformance: The calendar components that the property can appear in 6649 needs to be specified. 6651 Description: Any special notes about the property, how it is to be 6652 used, etc. 6654 Format definition: The ABNF for the property definition needs to be 6655 specified. 6657 Examples: One or more examples of instances of the property needs to 6658 be specified. 6660 6.2.2. Post the Property definition 6662 The property description MUST be posted to the new property 6663 discussion list, ietf-calendar@imc.org. 6665 6.2.3. Allow a comment period 6667 Discussion on the new property MUST be allowed to take place on the 6668 list for a minimum of two weeks. Consensus MUST be reached on the 6669 property before proceeding to the next step. 6671 6.2.4. Submit the property for approval 6673 Once the two-week comment period has elapsed, and the proposer is 6674 convinced consensus has been reached on the property, the 6675 registration application should be submitted to the Method Reviewer 6676 for approval. The Method Reviewer is appointed to the Application 6677 Area Directors and can either accept or reject the property 6678 registration. An accepted registration should be passed on by the 6679 Method Reviewer to the IANA for inclusion in the official IANA method 6680 registry. The registration can be rejected for any of the following 6681 reasons. 1) Insufficient comment period; 2) Consensus not reached; 3) 6682 Technical deficiencies raised on the list or elsewhere have not been 6683 addressed. The Method Reviewer's decision to reject a property can 6684 be appealed by the proposer to the IESG, or the objections raised can 6685 be addressed by the proposer and the property resubmitted. 6687 6.3. Property Change Control 6689 Existing properties can be changed using the same process by which 6690 they were registered. 6692 1. Define the change 6694 2. Post the change 6696 3. Allow a comment period 6698 4. Submit the property for approval 6700 Note that the original author or any other interested party can 6701 propose a change to an existing property, but that such changes 6702 should only be proposed when there are serious omissions or errors in 6703 the published memo. The Method Reviewer can object to a change if it 6704 is not backward compatible, but is not required to do so. 6706 Property definitions can never be deleted from the IANA registry, but 6707 properties which are no longer believed to be useful can be declared 6708 OBSOLETE by a change to their "intended use" field. 6710 7. Internationalization Considerations 6712 8. Security Considerations 6714 SPOOFING: In this memo, the "Organizer" is the only person authorized 6715 to make changes to an existing "VEVENT", "VTODO", "VJOURNAL" 6716 calendar component and redistribute the updates to the 6717 "Attendees". An iCalendar object that maliciously changes or 6718 cancels an existing "VEVENT", "VTODO" or "VJOURNAL" or "VFREEBUSY" 6719 calendar component might be constructed by someone other than the 6720 "Organizer" and sent to the "Attendees". In addition in this 6721 memo, other than the "Organizer", an "Attendee" of a "VEVENT", 6722 "VTODO", "VJOURNAL" calendar component is the only other person 6723 authorized to update any parameter associated with their 6724 "ATTENDEE" property and send it to the "Organizer". An iCalendar 6725 object that maliciously changes the "ATTENDEE" parameters can be 6726 constructed by someone other than the real "Attendee" and sent to 6727 the "Organizer". 6729 PROCEDURAL ALARMS: An iCalendar object can be created that contains a 6730 "VEVENT" and "VTODO" calendar component with "VALARM" calendar 6731 components. The "VALARM" calendar component can be of type 6732 PROCEDURE and can have an attachment containing some sort of 6733 executable program. Implementations that incorporate these types 6734 of alarms are subject to any virus or malicious attack that might 6735 occur as a result of executing the attachment. 6737 ATTACHMENTS: An iCalendar object can include references to Uniform 6738 Resource Locators that can be programmed resources. 6740 Implementers and users of this memo should be aware of the network 6741 security implications of accepting and parsing such information. 6742 In addition, the security considerations observed by 6743 implementations of electronic mail systems should be followed for 6744 this memo. 6746 9. IANA Consideration 6748 9.1. Media Type Registration Information 6750 The Calendaring and Scheduling Core Object Specification is intended 6751 for use as a MIME content type. However, the implementation of the 6752 memo is in no way limited solely as a MIME content type. 6754 To: ietf-types@iana.org 6755 Subject: Registration of media type text/calendar 6757 Type name: text 6759 Subtype name: calendar 6761 Required parameters: none 6763 Optional parameters: charset, method, component and optinfo 6765 The "charset" parameter is defined in [RFC2046] for other body 6766 parts. It is used to identify the default character set used 6767 within the body part. 6769 The "method" parameter is used to convey the iCalendar object 6770 method or transaction semantics for the calendaring and scheduling 6771 information. It also is an identifier for the restricted set of 6772 properties and values that the iCalendar object consists of. The 6773 parameter is to be used as a guide for applications interpreting 6774 the information contained within the body part. It SHOULD NOT be 6775 used to exclude or require particular pieces of information unless 6776 the identified method definition specifically calls for this 6777 behavior. Unless specifically forbidden by a particular method 6778 definition, a text/calendar content type can contain any set of 6779 properties permitted by the Calendaring and Scheduling Core Object 6780 Specification. The "method" parameter MUST be the same value as 6781 that specified in the "METHOD" component property in the iCalendar 6782 object. If one is present, the other MUST also be present. 6784 The value for the "method" parameter is defined as follows: 6786 method = 1*(ALPHA / DIGIT / "-") 6787 ; IANA registered iCalendar object method 6789 The "component" parameter conveys the type of iCalendar calendar 6790 component within the body part. If the iCalendar object contains 6791 more than one calendar component type, then multiple component 6792 parameters MUST be specified. 6794 The value for the "component" parameter is defined as follows: 6796 component = "VEVENT" 6797 / "VTODO" 6798 / "VJOURNAL" 6799 / "VFREEBUSY" 6800 / "VTIMEZONE" 6801 / x-name 6802 / iana-token 6804 The "optinfo" parameter conveys optional information about the 6805 iCalendar object within the body part. This parameter can only 6806 specify semantics already specified by the iCalendar object and 6807 that can be otherwise determined by parsing the body part. In 6808 addition, the optional information specified by this parameter 6809 MUST be consistent with that information specified by the 6810 iCalendar object. For example, it can be used to convey the 6811 "Attendee" response status to a meeting request. The parameter 6812 value consists of a string value. 6814 The parameter can be specified multiple times. 6816 This parameter MAY only specify semantics already specified by the 6817 iCalendar object and that can be otherwise determined by parsing 6818 the body part. 6820 The value for the "optinfo" parameter is defined as follows: 6822 optinfo = infovalue / qinfovalue 6824 infovalue = iana-token / x-name 6826 qinfovalue = DQUOTE (infovalue) DQUOTE 6828 Encoding considerations: This media type can contain 8bit characters, 6829 so the use of quoted-printable or base64 MIME Content-Transfer- 6830 Encodings might be necessary when iCalendar objects are 6831 transferred across protocols restricted to the 7bit repertoire. 6832 Note that a text valued property in the content entity can also 6833 have content encoding of special characters using a BACKSLASH 6834 character (US-ASCII decimal 92) escapement technique. This means 6835 that content values can end up encoded twice. 6837 Security considerations: See Section 8. 6839 Interoperability considerations: This media type is intended to 6840 define a common format for conveying calendaring and scheduling 6841 information between different systems. It is heavily based on the 6842 earlier [VCAL] industry specification. 6844 Published specification: This specification. 6846 Applications which use this media type: This media type is designed 6847 for widespread use by Internet calendaring and scheduling 6848 applications. In addition, applications in the workflow and 6849 document management area might find this content-type applicable. 6850 The iTIP [I-D.ietf-calsify-2446bis], iMIP [I-D.ietf-calsify- 6851 rfc2447bis] and CalDAV [I-D.dusseault-caldav] Internet protocols 6852 directly use this media type also. 6854 Additional information: 6856 Magic number(s): None. 6858 File extension(s): The file extension of "ics" is to be used to 6859 designate a file containing (an arbitrary set of) calendaring 6860 and scheduling information consistent with this MIME content 6861 type. 6863 The file extension of "ifb" is to be used to designate a file 6864 containing free or busy time information consistent with this 6865 MIME content type. 6867 Macintosh file type code(s): The file type code of "iCal" is to be 6868 used in Apple MacIntosh operating system environments to 6869 designate a file containing calendaring and scheduling 6870 information consistent with this MIME media type. 6872 The file type code of "iFBf" is to be used in Apple MacIntosh 6873 operating system environments to designate a file containing 6874 free or busy time information consistent with this MIME media 6875 type. 6877 Person & email address to contact for further information: TBD 6879 Intended usage: COMMON 6881 Restrictions on usage: There are no restrictions on where this media 6882 type can be used. 6884 Author: TBD 6886 Change controller: IETF 6888 10. Acknowledgments 6890 The editor of this document wish to thank Frank Dawson and Stenerson 6891 Derik, the original author of RFC2445. 6893 The editor would also like to thank the Calendaring and Scheduling 6894 Consortium for advice with this specification, and for organizing 6895 interoperability testing events to help refine it. 6897 11. References 6899 11.1. Normative References 6901 [I-D.ietf-calsify-2446bis] 6902 Daboo, C., "iCalendar Transport-Independent 6903 Interoperability Protocol (iTIP)", 6904 draft-ietf-calsify-2446bis-01 (work in progress), 6905 March 2006. 6907 [I-D.ietf-calsify-rfc2447bis] 6908 Melnikov, A., "iCalendar Message-Based Interoperability 6909 Protocol(iMIP)", draft-ietf-calsify-rfc2447bis-02 (work in 6910 progress), June 2006. 6912 [ISO.8601.1988] 6913 International Organization for Standardization, "Data 6914 elements and interchange formats - Information interchange 6915 - Representation of dates and times", 6916 . 6918 [ISO.9070.1991] 6919 International Organization for Standardization, 6920 "Information Technology_SGML Support Facilities -- 6921 Registration Procedures for Public Text Owner Identifiers, 6922 Second Edition", April 1991, . 6925 [RFC0822] Crocker, D., "Standard for the format of ARPA Internet 6926 text messages", STD 11, RFC 822, August 1982. 6928 [RFC1738] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform 6929 Resource Locators (URL)", RFC 1738, December 1994. 6931 [RFC1766] Alvestrand, H., "Tags for the Identification of 6932 Languages", RFC 1766, March 1995. 6934 [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail 6935 Extensions (MIME) Part One: Format of Internet Message 6936 Bodies", RFC 2045, November 1996. 6938 [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail 6939 Extensions (MIME) Part Two: Media Types", RFC 2046, 6940 November 1996. 6942 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 6943 Requirement Levels", BCP 14, RFC 2119, March 1997. 6945 [RFC2234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 6946 Specifications: ABNF", RFC 2234, November 1997. 6948 [RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO 6949 10646", RFC 2279, January 1998. 6951 [RFC2425] Howes, T., Smith, M., and F. Dawson, "A MIME Content-Type 6952 for Directory Information", RFC 2425, September 1998. 6954 [RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory Profile", 6955 RFC 2426, September 1998. 6957 [TZDB] "Time zone code and data", October 2005, 6958 . 6960 [VCAL] Internet Mail Consortium, "vCalendar: The Electronic 6961 Calendaring and Scheduling Exchange Format", 6962 September 1996, . 6964 11.2. Informative References 6966 [I-D.dusseault-caldav] 6967 Dusseault, L., "Calendaring Extensions to WebDAV 6968 (CalDAV)", draft-dusseault-caldav-12 (work in progress), 6969 April 2006. 6971 URIs 6973 [1] 6975 Author's Address 6977 Bernard Desruisseaux (editor) 6978 Oracle Corporation 6979 600 blvd. de Maisonneuve West 6980 Suite 1900 6981 Montreal, QC H3A 3J2 6982 CA 6984 Email: bernard.desruisseaux@oracle.com 6985 URI: http://www.oracle.com/ 6987 Intellectual Property Statement 6989 The IETF takes no position regarding the validity or scope of any 6990 Intellectual Property Rights or other rights that might be claimed to 6991 pertain to the implementation or use of the technology described in 6992 this document or the extent to which any license under such rights 6993 might or might not be available; nor does it represent that it has 6994 made any independent effort to identify any such rights. Information 6995 on the procedures with respect to rights in RFC documents can be 6996 found in BCP 78 and BCP 79. 6998 Copies of IPR disclosures made to the IETF Secretariat and any 6999 assurances of licenses to be made available, or the result of an 7000 attempt made to obtain a general license or permission for the use of 7001 such proprietary rights by implementers or users of this 7002 specification can be obtained from the IETF on-line IPR repository at 7003 http://www.ietf.org/ipr. 7005 The IETF invites any interested party to bring to its attention any 7006 copyrights, patents or patent applications, or other proprietary 7007 rights that may cover technology that may be required to implement 7008 this standard. Please address the information to the IETF at 7009 ietf-ipr@ietf.org. 7011 Disclaimer of Validity 7013 This document and the information contained herein are provided on an 7014 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 7015 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 7016 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 7017 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 7018 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 7019 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 7021 Copyright Statement 7023 Copyright (C) The Internet Society (2006). This document is subject 7024 to the rights, licenses and restrictions contained in BCP 78, and 7025 except as set forth therein, the authors retain all their rights. 7027 Acknowledgment 7029 Funding for the RFC Editor function is currently provided by the 7030 Internet Society.