add a converter from plain text (prompt user) to .ics - ics2txt - convert icalendar .ics file to plain text HTML git clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit 04011029ed137087117a5e3a5cd779c2375c626b DIR parent d70a459aaa15bf3fc8d6715441671f580afd6d9d HTML Author: Josuah Demangeon <mail@josuah.net> Date: Wed, 30 May 2018 11:30:30 +0200 add a converter from plain text (prompt user) to .ics Diffstat: A doc/rfc5545.txt | 9411 +++++++++++++++++++++++++++++++ M ics2txt | 1 - M ics2txt.1 | 14 ++++++++++++-- A txt2ics | 84 +++++++++++++++++++++++++++++++ A txt2ics.1 | 50 +++++++++++++++++++++++++++++++ 5 files changed, 9557 insertions(+), 3 deletions(-) --- DIR diff --git a/doc/rfc5545.txt b/doc/rfc5545.txt @@ -0,0 +1,9411 @@ + + + + + + +Network Working Group B. Desruisseaux, Ed. +Request for Comments: 5545 Oracle +Obsoletes: 2445 September 2009 +Category: Standards Track + + + Internet Calendaring and Scheduling Core Object Specification + (iCalendar) + +Abstract + +This document defines the iCalendar data format for representing and +exchanging calendaring and scheduling information such as events, +to-dos, journal entries, and free/busy information, independent of any +particular calendar service or protocol. + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright and License Notice + + Copyright (c) 2009 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the BSD License. + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + + + +Desruisseaux Standards Track [Page 1] + +RFC 5545 iCalendar September 2009 + + + it for publication as an RFC or to translate it into languages other + than English. + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 + 2. Basic Grammar and Conventions . . . . . . . . . . . . . . . . 6 + 2.1. Formatting Conventions . . . . . . . . . . . . . . . . . 6 + 2.2. Related Memos . . . . . . . . . . . . . . . . . . . . . . 7 + 3. iCalendar Object Specification . . . . . . . . . . . . . . . 8 + 3.1. Content Lines . . . . . . . . . . . . . . . . . . . . . . 8 + 3.1.1. List and Field Separators . . . . . . . . . . . . . . 11 + 3.1.2. Multiple Values . . . . . . . . . . . . . . . . . . . 11 + 3.1.3. Binary Content . . . . . . . . . . . . . . . . . . . 11 + 3.1.4. Character Set . . . . . . . . . . . . . . . . . . . . 12 + 3.2. Property Parameters . . . . . . . . . . . . . . . . . . . 12 + 3.2.1. Alternate Text Representation . . . . . . . . . . . . 13 + 3.2.2. Common Name . . . . . . . . . . . . . . . . . . . . . 15 + 3.2.3. Calendar User Type . . . . . . . . . . . . . . . . . 15 + 3.2.4. Delegators . . . . . . . . . . . . . . . . . . . . . 16 + 3.2.5. Delegatees . . . . . . . . . . . . . . . . . . . . . 16 + 3.2.6. Directory Entry Reference . . . . . . . . . . . . . . 17 + 3.2.7. Inline Encoding . . . . . . . . . . . . . . . . . . . 17 + 3.2.8. Format Type . . . . . . . . . . . . . . . . . . . . . 18 + 3.2.9. Free/Busy Time Type . . . . . . . . . . . . . . . . . 19 + 3.2.10. Language . . . . . . . . . . . . . . . . . . . . . . 20 + 3.2.11. Group or List Membership . . . . . . . . . . . . . . 20 + 3.2.12. Participation Status . . . . . . . . . . . . . . . . 21 + 3.2.13. Recurrence Identifier Range . . . . . . . . . . . . . 22 + 3.2.14. Alarm Trigger Relationship . . . . . . . . . . . . . 23 + 3.2.15. Relationship Type . . . . . . . . . . . . . . . . . . 24 + 3.2.16. Participation Role . . . . . . . . . . . . . . . . . 25 + 3.2.17. RSVP Expectation . . . . . . . . . . . . . . . . . . 25 + 3.2.18. Sent By . . . . . . . . . . . . . . . . . . . . . . . 26 + 3.2.19. Time Zone Identifier . . . . . . . . . . . . . . . . 26 + 3.2.20. Value Data Types . . . . . . . . . . . . . . . . . . 28 + 3.3. Property Value Data Types . . . . . . . . . . . . . . . . 29 + 3.3.1. Binary . . . . . . . . . . . . . . . . . . . . . . . 29 + 3.3.2. Boolean . . . . . . . . . . . . . . . . . . . . . . . 30 + 3.3.3. Calendar User Address . . . . . . . . . . . . . . . . 30 + 3.3.4. Date . . . . . . . . . . . . . . . . . . . . . . . . 31 + 3.3.5. Date-Time . . . . . . . . . . . . . . . . . . . . . . 31 + 3.3.6. Duration . . . . . . . . . . . . . . . . . . . . . . 34 + 3.3.7. Float . . . . . . . . . . . . . . . . . . . . . . . . 35 + 3.3.8. Integer . . . . . . . . . . . . . . . . . . . . . . . 35 + 3.3.9. Period of Time . . . . . . . . . . . . . . . . . . . 36 + 3.3.10. Recurrence Rule . . . . . . . . . . . . . . . . . . . 37 + 3.3.11. Text . . . . . . . . . . . . . . . . . . . . . . . . 45 + + + +Desruisseaux Standards Track [Page 2] + +RFC 5545 iCalendar September 2009 + + + 3.3.12. Time . . . . . . . . . . . . . . . . . . . . . . . . 46 + 3.3.13. URI . . . . . . . . . . . . . . . . . . . . . . . . . 48 + 3.3.14. UTC Offset . . . . . . . . . . . . . . . . . . . . . 49 + 3.4. iCalendar Object . . . . . . . . . . . . . . . . . . . . 49 + 3.5. Property . . . . . . . . . . . . . . . . . . . . . . . . 50 + 3.6. Calendar Components . . . . . . . . . . . . . . . . . . . 50 + 3.6.1. Event Component . . . . . . . . . . . . . . . . . . . 52 + 3.6.2. To-Do Component . . . . . . . . . . . . . . . . . . . 56 + 3.6.3. Journal Component . . . . . . . . . . . . . . . . . . 58 + 3.6.4. Free/Busy Component . . . . . . . . . . . . . . . . . 60 + 3.6.5. Time Zone Component . . . . . . . . . . . . . . . . . 63 + 3.6.6. Alarm Component . . . . . . . . . . . . . . . . . . . 72 + 3.7. Calendar Properties . . . . . . . . . . . . . . . . . . . 77 + 3.7.1. Calendar Scale . . . . . . . . . . . . . . . . . . . 77 + 3.7.2. Method . . . . . . . . . . . . . . . . . . . . . . . 78 + 3.7.3. Product Identifier . . . . . . . . . . . . . . . . . 79 + 3.7.4. Version . . . . . . . . . . . . . . . . . . . . . . . 80 + 3.8. Component Properties . . . . . . . . . . . . . . . . . . 81 + 3.8.1. Descriptive Component Properties . . . . . . . . . . 81 + 3.8.1.1. Attachment . . . . . . . . . . . . . . . . . . . 81 + 3.8.1.2. Categories . . . . . . . . . . . . . . . . . . . 82 + 3.8.1.3. Classification . . . . . . . . . . . . . . . . . 83 + 3.8.1.4. Comment . . . . . . . . . . . . . . . . . . . . . 84 + 3.8.1.5. Description . . . . . . . . . . . . . . . . . . . 85 + 3.8.1.6. Geographic Position . . . . . . . . . . . . . . . 87 + 3.8.1.7. Location . . . . . . . . . . . . . . . . . . . . 88 + 3.8.1.8. Percent Complete . . . . . . . . . . . . . . . . 89 + 3.8.1.9. Priority . . . . . . . . . . . . . . . . . . . . 90 + 3.8.1.10. Resources . . . . . . . . . . . . . . . . . . . . 92 + 3.8.1.11. Status . . . . . . . . . . . . . . . . . . . . . 93 + 3.8.1.12. Summary . . . . . . . . . . . . . . . . . . . . . 94 + 3.8.2. Date and Time Component Properties . . . . . . . . . 95 + 3.8.2.1. Date-Time Completed . . . . . . . . . . . . . . . 95 + 3.8.2.2. Date-Time End . . . . . . . . . . . . . . . . . . 96 + 3.8.2.3. Date-Time Due . . . . . . . . . . . . . . . . . . 97 + 3.8.2.4. Date-Time Start . . . . . . . . . . . . . . . . . 99 + 3.8.2.5. Duration . . . . . . . . . . . . . . . . . . . . 100 + 3.8.2.6. Free/Busy Time . . . . . . . . . . . . . . . . . 101 + 3.8.2.7. Time Transparency . . . . . . . . . . . . . . . . 102 + 3.8.3. Time Zone Component Properties . . . . . . . . . . . 103 + 3.8.3.1. Time Zone Identifier . . . . . . . . . . . . . . 103 + 3.8.3.2. Time Zone Name . . . . . . . . . . . . . . . . . 105 + 3.8.3.3. Time Zone Offset From . . . . . . . . . . . . . . 106 + 3.8.3.4. Time Zone Offset To . . . . . . . . . . . . . . . 106 + 3.8.3.5. Time Zone URL . . . . . . . . . . . . . . . . . . 107 + 3.8.4. Relationship Component Properties . . . . . . . . . . 108 + 3.8.4.1. Attendee . . . . . . . . . . . . . . . . . . . . 108 + 3.8.4.2. Contact . . . . . . . . . . . . . . . . . . . . . 111 + + + +Desruisseaux Standards Track [Page 3] + +RFC 5545 iCalendar September 2009 + + + 3.8.4.3. Organizer . . . . . . . . . . . . . . . . . . . . 113 + 3.8.4.4. Recurrence ID . . . . . . . . . . . . . . . . . . 114 + 3.8.4.5. Related To . . . . . . . . . . . . . . . . . . . 117 + 3.8.4.6. Uniform Resource Locator . . . . . . . . . . . . 118 + 3.8.4.7. Unique Identifier . . . . . . . . . . . . . . . . 119 + 3.8.5. Recurrence Component Properties . . . . . . . . . . . 120 + 3.8.5.1. Exception Date-Times . . . . . . . . . . . . . . 120 + 3.8.5.2. Recurrence Date-Times . . . . . . . . . . . . . . 122 + 3.8.5.3. Recurrence Rule . . . . . . . . . . . . . . . . . 124 + 3.8.6. Alarm Component Properties . . . . . . . . . . . . . 134 + 3.8.6.1. Action . . . . . . . . . . . . . . . . . . . . . 134 + 3.8.6.2. Repeat Count . . . . . . . . . . . . . . . . . . 135 + 3.8.6.3. Trigger . . . . . . . . . . . . . . . . . . . . . 135 + 3.8.7. Change Management Component Properties . . . . . . . 138 + 3.8.7.1. Date-Time Created . . . . . . . . . . . . . . . . 138 + 3.8.7.2. Date-Time Stamp . . . . . . . . . . . . . . . . . 139 + 3.8.7.3. Last Modified . . . . . . . . . . . . . . . . . . 140 + 3.8.7.4. Sequence Number . . . . . . . . . . . . . . . . . 141 + 3.8.8. Miscellaneous Component Properties . . . . . . . . . 142 + 3.8.8.1. IANA Properties . . . . . . . . . . . . . . . . . 142 + 3.8.8.2. Non-Standard Properties . . . . . . . . . . . . . 142 + 3.8.8.3. Request Status . . . . . . . . . . . . . . . . . 144 + 4. iCalendar Object Examples . . . . . . . . . . . . . . . . . . 146 + 5. Recommended Practices . . . . . . . . . . . . . . . . . . . . 150 + 6. Internationalization Considerations . . . . . . . . . . . . . 151 + 7. Security Considerations . . . . . . . . . . . . . . . . . . . 151 + 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 151 + 8.1. iCalendar Media Type Registration . . . . . . . . . . . . 151 + 8.2. New iCalendar Elements Registration . . . . . . . . . . . 155 + 8.2.1. iCalendar Elements Registration Procedure . . . . . . 155 + 8.2.2. Registration Template for Components . . . . . . . . 155 + 8.2.3. Registration Template for Properties . . . . . . . . 156 + 8.2.4. Registration Template for Parameters . . . . . . . . 156 + 8.2.5. Registration Template for Value Data Types . . . . . 157 + 8.2.6. Registration Template for Values . . . . . . . . . . 157 + 8.3. Initial iCalendar Elements Registries . . . . . . . . . . 158 + 8.3.1. Components Registry . . . . . . . . . . . . . . . . . 158 + 8.3.2. Properties Registry . . . . . . . . . . . . . . . . . 158 + 8.3.3. Parameters Registry . . . . . . . . . . . . . . . . . 161 + 8.3.4. Value Data Types Registry . . . . . . . . . . . . . . 162 + 8.3.5. Calendar User Types Registry . . . . . . . . . . . . 162 + 8.3.6. Free/Busy Time Types Registry . . . . . . . . . . . . 163 + 8.3.7. Participation Statuses Registry . . . . . . . . . . . 163 + 8.3.8. Relationship Types Registry . . . . . . . . . . . . . 164 + 8.3.9. Participation Roles Registry . . . . . . . . . . . . 164 + 8.3.10. Actions Registry . . . . . . . . . . . . . . . . . . 165 + 8.3.11. Classifications Registry . . . . . . . . . . . . . . 165 + 8.3.12. Methods Registry . . . . . . . . . . . . . . . . . . 165 + + + +Desruisseaux Standards Track [Page 4] + +RFC 5545 iCalendar September 2009 + + + 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 165 + 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 166 + 10.1. Normative References . . . . . . . . . . . . . . . . . . 166 + 10.2. Informative References . . . . . . . . . . . . . . . . . 167 + Appendix A. Differences from RFC 2445 . . . . . . . . . . . . . 169 + A.1. New Restrictions . . . . . . . . . . . . . . . . . . . . 169 + A.2. Restrictions Removed . . . . . . . . . . . . . . . . . . 169 + A.3. Deprecated Features . . . . . . . . . . . . . . . . . . . 169 + +1. Introduction + + The use of calendaring and scheduling has grown considerably in the + last decade. Enterprise and inter-enterprise business has become + dependent on rapid scheduling of events and actions using this + information technology. This memo is intended to progress the level + of interoperability possible between dissimilar calendaring and + scheduling applications. This memo defines a MIME content type for + exchanging electronic calendaring and scheduling information. The + Internet Calendaring and Scheduling Core Object Specification, or + iCalendar, allows for the capture and exchange of information + normally stored within a calendaring and scheduling application; such + as a Personal Information Manager (PIM) or a Group-Scheduling + product. + + The iCalendar format is suitable as an exchange format between + applications or systems. The format is defined in terms of a MIME + content type. This will enable the object to be exchanged using + several transports, including but not limited to SMTP, HTTP, a file + system, desktop interactive protocols such as the use of a memory- + based clipboard or drag/drop interactions, point-to-point + asynchronous communication, wired-network transport, or some form of + unwired transport such as infrared. + + The memo also provides for the definition of iCalendar object methods + that will map this content type to a set of messages for supporting + calendaring and scheduling operations such as requesting, replying + to, modifying, and canceling meetings or appointments, to-dos, and + journal entries. The iCalendar object methods can be used to define + other calendaring and scheduling operations such as requesting for + and replying with free/busy time data. Such a scheduling protocol is + defined in the iCalendar Transport-independent Interoperability + Protocol (iTIP) defined in [2446bis]. + + The memo also includes a formal grammar for the content type based on + the Internet ABNF defined in [RFC5234]. This ABNF is required for + the implementation of parsers and to serve as the definitive + reference when ambiguities or questions arise in interpreting the + descriptive prose definition of the memo. Additional restrictions + + + +Desruisseaux Standards Track [Page 5] + +RFC 5545 iCalendar September 2009 + + + that could not easily be expressed with the ABNF syntax are specified + as comments in the ABNF. Comments with normative statements should + be treated as such. + +2. Basic Grammar and Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + + This memo makes use of both a descriptive prose and a more formal + notation for defining the calendaring and scheduling format. + + The notation used in this memo is the ABNF notation of [RFC5234]. + Readers intending on implementing the format defined in this memo + should be familiar with this notation in order to properly interpret + the specifications of this memo. + + All numeric values used in this memo are given in decimal notation. + + All names of properties, property parameters, enumerated property + values, and property parameter values are case-insensitive. However, + all other property values are case-sensitive, unless otherwise + stated. + + Note: All indented editorial notes, such as this one, are intended + to provide the reader with additional information. The + information is not essential to the building of an implementation + conformant with this memo. The information is provided to + highlight a particular feature or characteristic of the memo. + + The format for the iCalendar object is based on the syntax of the + text/directory media type [RFC2425]. While the iCalendar object is + not a profile of the text/directory media type [RFC2425], it does + reuse a number of the elements from the [RFC2425] specification. + +2.1. Formatting Conventions + + The elements defined in this memo are defined in prose. Many of the + terms used to describe these have common usage that is different than + the standards usage of this memo. In order to reference, within this + memo, elements of the calendaring and scheduling model, core object + (this memo), or interoperability protocol [2446bis] some formatting + conventions have been used. Calendaring and scheduling roles are + referred to in quoted-strings of text with the first character of + each word in uppercase. For example, "Organizer" refers to a role of + a "Calendar User" within the scheduling protocol defined by + [2446bis]. Calendar components defined by this memo are referred to + + + +Desruisseaux Standards Track [Page 6] + +RFC 5545 iCalendar September 2009 + + + with capitalized, quoted-strings of text. All calendar components + start with the letter "V". For example, "VEVENT" refers to the event + calendar component, "VTODO" refers to the to-do calendar component, + and "VJOURNAL" refers to the daily journal calendar component. + Scheduling methods defined by iTIP [2446bis] are referred to with + capitalized, quoted-strings of text. For example, "REQUEST" refers + to the method for requesting a scheduling calendar component be + created or modified, and "REPLY" refers to the method a recipient of + a request uses to update their status with the "Organizer" of the + calendar component. + + The properties defined by this memo are referred to with capitalized, + quoted-strings of text, followed by the word "property". For + example, "ATTENDEE" property refers to the iCalendar property used to + convey the calendar address of a calendar user. Property parameters + defined by this memo are referred to with lowercase, quoted-strings + of text, followed by the word "parameter". For example, "value" + parameter refers to the iCalendar property parameter used to override + the default value type for a property value. Enumerated values + defined by this memo are referred to with capitalized text, either + alone or followed by the word "value". For example, the "MINUTELY" + value can be used with the "FREQ" component of the "RECUR" value type + to specify repeating components based on an interval of one minute or + more. + + The following table lists the different characters from the + [US-ASCII] character set that is referenced in this document. For + each character, the table specifies the character name used + throughout this document, along with its US-ASCII decimal codepoint. + + + + + + + + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 7] + +RFC 5545 iCalendar September 2009 + + + +------------------------+-------------------+ + | Character name | Decimal codepoint | + +------------------------+-------------------+ + | HTAB | 9 | + | LF | 10 | + | CR | 13 | + | DQUOTE | 22 | + | SPACE | 32 | + | PLUS SIGN | 43 | + | COMMA | 44 | + | HYPHEN-MINUS | 45 | + | PERIOD | 46 | + | SOLIDUS | 47 | + | COLON | 58 | + | SEMICOLON | 59 | + | LATIN CAPITAL LETTER N | 78 | + | LATIN CAPITAL LETTER T | 84 | + | LATIN CAPITAL LETTER X | 88 | + | LATIN CAPITAL LETTER Z | 90 | + | BACKSLASH | 92 | + | LATIN SMALL LETTER N | 110 | + +------------------------+-------------------+ + +2.2. Related Memos + + Implementers will need to be familiar with several other memos that, + along with this memo, form a framework for Internet calendaring and + scheduling standards. This memo specifies a core specification of + objects, value types, properties, and property parameters. + + o iTIP [2446bis] specifies an interoperability protocol for + scheduling between different implementations; + + o iCalendar Message-Based Interoperability Protocol (iMIP) [2447bis] + specifies an Internet email binding for [2446bis]. + + This memo does not attempt to repeat the specification of concepts or + definitions from these other memos. Where possible, references are + made to the memo that provides for the specification of these + concepts or definitions. + +3. iCalendar Object Specification + + The following sections define the details of a Calendaring and + Scheduling Core Object Specification. The Calendaring and Scheduling + Core Object is a collection of calendaring and scheduling + information. Typically, this information will consist of an + iCalendar stream with one or more iCalendar objects. The body of the + + + +Desruisseaux Standards Track [Page 8] + +RFC 5545 iCalendar September 2009 + + + iCalendar object consists of a sequence of calendar properties and + one or more calendar components. + + Section 3.1 defines the content line format; Section 3.2 defines the + property parameter format; Section 3.3 defines the data types for + property values; Section 3.4 defines the iCalendar object format; + Section 3.5 defines the iCalendar property format; Section 3.6 + defines the calendar component format; Section 3.7 defines calendar + properties; and Section 3.8 defines calendar component properties. + + This information is intended to be an integral part of the MIME + content type registration. In addition, this information can be used + independent of such content registration. In particular, this memo + has direct applicability for use as a calendaring and scheduling + exchange format in file-, memory-, or network-based transport + mechanisms. + +3.1. Content Lines + + The iCalendar object is organized into individual lines of text, + called content lines. Content lines are delimited by a line break, + which is a CRLF sequence (CR character followed by LF character). + + Lines of text SHOULD NOT be longer than 75 octets, excluding the line + break. Long content lines SHOULD be split into a multiple line + representations using a line "folding" technique. That is, a long + line can be split between any two characters by inserting a CRLF + immediately followed by a single linear white-space character (i.e., + SPACE or HTAB). Any sequence of CRLF followed immediately by a + single linear white-space character is ignored (i.e., removed) when + processing the content type. + + For example, the line: + + DESCRIPTION:This is a long description that exists on a long line. + + Can be represented as: + + DESCRIPTION:This is a lo + ng description + that exists on a long line. + + The process of moving from this folded multiple-line representation + to its single-line representation is called "unfolding". Unfolding + is accomplished by removing the CRLF and the linear white-space + character that immediately follows. + + + + + +Desruisseaux Standards Track [Page 9] + +RFC 5545 iCalendar September 2009 + + + When parsing a content line, folded lines MUST first be unfolded + according to the unfolding procedure described above. + + Note: It is possible for very simple implementations to generate + improperly folded lines in the middle of a UTF-8 multi-octet + sequence. For this reason, implementations need to unfold lines + in such a way to properly restore the original sequence. + + The content information associated with an iCalendar object is + formatted using a syntax similar to that defined by [RFC2425]. That + is, the content information consists of CRLF-separated content lines. + + The following notation defines the lines of content in an iCalendar + object: + + contentline = name *(";" param ) ":" value CRLF + ; This ABNF is just a general definition for an initial parsing + ; of the content line into its property name, parameter list, + ; and value string + + ; When parsing a content line, folded lines MUST first + ; be unfolded according to the unfolding procedure + ; described above. When generating a content line, lines + ; longer than 75 octets SHOULD be folded according to + ; the folding procedure described above. + + name = iana-token / x-name + + iana-token = 1*(ALPHA / DIGIT / "-") + ; iCalendar identifier registered with IANA + + x-name = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-") + ; Reserved for experimental use. + + vendorid = 3*(ALPHA / DIGIT) + ; Vendor identification + + param = param-name "=" param-value *("," param-value) + ; Each property defines the specific ABNF for the parameters + ; allowed on the property. Refer to specific properties for + ; precise parameter ABNF. + + param-name = iana-token / x-name + + param-value = paramtext / quoted-string + + paramtext = *SAFE-CHAR + + + + +Desruisseaux Standards Track [Page 10] + +RFC 5545 iCalendar September 2009 + + + value = *VALUE-CHAR + + quoted-string = DQUOTE *QSAFE-CHAR DQUOTE + + QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-US-ASCII + ; Any character except CONTROL and DQUOTE + + SAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E + / NON-US-ASCII + ; Any character except CONTROL, DQUOTE, ";", ":", "," + + VALUE-CHAR = WSP / %x21-7E / NON-US-ASCII + ; Any textual character + + NON-US-ASCII = UTF8-2 / UTF8-3 / UTF8-4 + ; UTF8-2, UTF8-3, and UTF8-4 are defined in [RFC3629] + + CONTROL = %x00-08 / %x0A-1F / %x7F + ; All the controls except HTAB + + The property value component of a content line has a format that is + property specific. Refer to the section describing each property for + a definition of this format. + + All names of properties, property parameters, enumerated property + values and property parameter values are case-insensitive. However, + all other property values are case-sensitive, unless otherwise + stated. + +3.1.1. List and Field Separators + + Some properties and parameters allow a list of values. Values in a + list of values MUST be separated by a COMMA character. There is no + significance to the order of values in a list. For those parameter + values (such as those that specify URI values) that are specified in + quoted-strings, the individual quoted-strings are separated by a + COMMA character. + + Some property values are defined in terms of multiple parts. These + structured property values MUST have their value parts separated by a + SEMICOLON character. + + Some properties allow a list of parameters. Each property parameter + in a list of property parameters MUST be separated by a SEMICOLON + character. + + + + + + +Desruisseaux Standards Track [Page 11] + +RFC 5545 iCalendar September 2009 + + + Property parameters with values containing a COLON character, a + SEMICOLON character or a COMMA character MUST be placed in quoted + text. + + For example, in the following properties, a SEMICOLON is used to + separate property parameters from each other and a COMMA character is + used to separate property values in a value list. + + ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:mailto: + jsmith@example.com + + RDATE;VALUE=DATE:19970304,19970504,19970704,19970904 + +3.1.2. Multiple Values + + Some properties defined in the iCalendar object can have multiple + values. The general rule for encoding multi-valued items is to + simply create a new content line for each value, including the + property name. However, it should be noted that some properties + support encoding multiple values in a single property by separating + the values with a COMMA character. Individual property definitions + should be consulted for determining whether a specific property + allows multiple values and in which of these two forms. Multi-valued + properties MUST NOT be used to specify multiple language variants of + the same value. Calendar applications SHOULD display all values. + +3.1.3. Binary Content + + Binary content information in an iCalendar object SHOULD be + referenced using a URI within a property value. That is, the binary + content information SHOULD be placed in an external MIME entity that + can be referenced by a URI from within the iCalendar object. In + applications where this is not feasible, binary content information + can be included within an iCalendar object, but only after first + encoding it into text using the "BASE64" encoding method defined in + [RFC4648]. Inline binary content SHOULD only be used in applications + whose special circumstances demand that an iCalendar object be + expressed as a single entity. A property containing inline binary + content information MUST specify the "ENCODING" property parameter. + Binary content information placed external to the iCalendar object + MUST be referenced by a uniform resource identifier (URI). + + The following example specifies an "ATTACH" property that references + an attachment external to the iCalendar object with a URI reference: + + ATTACH:http://example.com/public/quarterly-report.doc + + + + + +Desruisseaux Standards Track [Page 12] + +RFC 5545 iCalendar September 2009 + + + The following example specifies an "ATTACH" property with inline + binary encoded content information: + + ATTACH;FMTTYPE=text/plain;ENCODING=BASE64;VALUE=BINARY:VGhlIH + F1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4 + +3.1.4. Character Set + + There is not a property parameter to declare the charset used in a + property value. The default charset for an iCalendar stream is UTF-8 + as defined in [RFC3629]. + + The "charset" Content-Type parameter MUST be used in MIME transports + to specify the charset being used. + +3.2. Property Parameters + + A property can have attributes with which it is associated. These + "property parameters" contain meta-information about the property or + the property value. Property parameters are provided to specify such + information as the location of an alternate text representation for a + property value, the language of a text property value, the value type + of the property value, and other attributes. + + Property parameter values that contain the COLON, SEMICOLON, or COMMA + character separators MUST be specified as quoted-string text values. + Property parameter values MUST NOT contain the DQUOTE character. The + DQUOTE character is used as a delimiter for parameter values that + contain restricted characters or URI text. For example: + + DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild + Wizards Conference - - Las Vegas\, NV\, USA + + Property parameter values that are not in quoted-strings are case- + insensitive. + + The general property parameters defined by this memo are defined by + the following notation: + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 13] + +RFC 5545 iCalendar September 2009 + + + icalparameter = altrepparam ; Alternate text representation + / cnparam ; Common name + / cutypeparam ; Calendar user type + / delfromparam ; Delegator + / deltoparam ; Delegatee + / dirparam ; Directory entry + / encodingparam ; Inline encoding + / fmttypeparam ; Format type + / fbtypeparam ; Free/busy time type + / languageparam ; Language for text + / memberparam ; Group or list membership + / partstatparam ; Participation status + / rangeparam ; Recurrence identifier range + / trigrelparam ; Alarm trigger relationship + / reltypeparam ; Relationship type + / roleparam ; Participation role + / rsvpparam ; RSVP expectation + / sentbyparam ; Sent by + / tzidparam ; Reference to time zone object + / valuetypeparam ; Property value data type + / other-param + + other-param = (iana-param / x-param) + + iana-param = iana-token "=" param-value *("," param-value) + ; Some other IANA-registered iCalendar parameter. + + x-param = x-name "=" param-value *("," param-value) + ; A non-standard, experimental parameter. + + Applications MUST ignore x-param and iana-param values they don't + recognize. + +3.2.1. Alternate Text Representation + + Parameter Name: ALTREP + + Purpose: To specify an alternate text representation for the + property value. + + Format Definition: This property parameter is defined by the + following notation: + + altrepparam = "ALTREP" "=" DQUOTE uri DQUOTE + + Description: This parameter specifies a URI that points to an + alternate representation for a textual property value. A property + specifying this parameter MUST also include a value that reflects + + + +Desruisseaux Standards Track [Page 14] + +RFC 5545 iCalendar September 2009 + + + the default representation of the text value. The URI parameter + value MUST be specified in a quoted-string. + + Note: While there is no restriction imposed on the URI schemes + allowed for this parameter, Content Identifier (CID) [RFC2392], + HTTP [RFC2616], and HTTPS [RFC2818] are the URI schemes most + commonly used by current implementations. + + Example: + + DESCRIPTION;ALTREP="CID:part3.msg.970415T083000@example.com": + Project XYZ Review Meeting will include the following agenda + items: (a) Market Overview\, (b) Finances\, (c) Project Man + agement + + The "ALTREP" property parameter value might point to a "text/html" + content portion. + + Content-Type:text/html + Content-Id:<part3.msg.970415T083000@example.com> + + <html> + <head> + <title></title> + </head> + <body> + <p> + <b>Project XYZ Review Meeting</b> will include + the following agenda items: + <ol> + <li>Market Overview</li> + <li>Finances</li> + <li>Project Management</li> + </ol> + </p> + </body> + </html> + +3.2.2. Common Name + + Parameter Name: CN + + Purpose: To specify the common name to be associated with the + calendar user specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + + + +Desruisseaux Standards Track [Page 15] + +RFC 5545 iCalendar September 2009 + + + cnparam = "CN" "=" param-value + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter specifies the common name + to be associated with the calendar user specified by the property. + The parameter value is text. The parameter value can be used for + display text to be associated with the calendar address specified + by the property. + + Example: + + ORGANIZER;CN="John Smith":mailto:jsmith@example.com + +3.2.3. Calendar User Type + + Parameter Name: CUTYPE + + Purpose: To identify the type of calendar user specified by the + property. + + Format Definition: This property parameter is defined by the + following notation: + + cutypeparam = "CUTYPE" "=" + ("INDIVIDUAL" ; An individual + / "GROUP" ; A group of individuals + / "RESOURCE" ; A physical resource + / "ROOM" ; A room resource + / "UNKNOWN" ; Otherwise not known + / x-name ; Experimental type + / iana-token) ; Other IANA-registered + ; type + ; Default is INDIVIDUAL + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter identifies the type of + calendar user specified by the property. If not specified on a + property that allows this parameter, the default is INDIVIDUAL. + Applications MUST treat x-name and iana-token values they don't + recognize the same way as they would the UNKNOWN value. + + Example: + + ATTENDEE;CUTYPE=GROUP:mailto:ietf-calsch@example.org + + + + + + + +Desruisseaux Standards Track [Page 16] + +RFC 5545 iCalendar September 2009 + + +3.2.4. Delegators + + Parameter Name: DELEGATED-FROM + + Purpose: To specify the calendar users that have delegated their + participation to the calendar user specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + delfromparam = "DELEGATED-FROM" "=" DQUOTE cal-address + DQUOTE *("," DQUOTE cal-address DQUOTE) + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. This parameter specifies those calendar + users that have delegated their participation in a group-scheduled + event or to-do to the calendar user specified by the property. + The individual calendar address parameter values MUST each be + specified in a quoted-string. + + Example: + + ATTENDEE;DELEGATED-FROM="mailto:jsmith@example.com":mailto: + jdoe@example.com + +3.2.5. Delegatees + + Parameter Name: DELEGATED-TO + + Purpose: To specify the calendar users to whom the calendar user + specified by the property has delegated participation. + + Format Definition: This property parameter is defined by the + following notation: + + deltoparam = "DELEGATED-TO" "=" DQUOTE cal-address DQUOTE + *("," DQUOTE cal-address DQUOTE) + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. This parameter specifies those calendar + users whom have been delegated participation in a group-scheduled + event or to-do by the calendar user specified by the property. + The individual calendar address parameter values MUST each be + specified in a quoted-string. + + + + + + + +Desruisseaux Standards Track [Page 17] + +RFC 5545 iCalendar September 2009 + + + Example: + + ATTENDEE;DELEGATED-TO="mailto:jdoe@example.com","mailto:jqpublic + @example.com":mailto:jsmith@example.com + +3.2.6. Directory Entry Reference + + Parameter Name: DIR + + Purpose: To specify reference to a directory entry associated with + the calendar user specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + dirparam = "DIR" "=" DQUOTE uri DQUOTE + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter specifies a reference to + the directory entry associated with the calendar user specified by + the property. The parameter value is a URI. The URI parameter + value MUST be specified in a quoted-string. + + Note: While there is no restriction imposed on the URI schemes + allowed for this parameter, CID [RFC2392], DATA [RFC2397], FILE + [RFC1738], FTP [RFC1738], HTTP [RFC2616], HTTPS [RFC2818], LDAP + [RFC4516], and MID [RFC2392] are the URI schemes most commonly + used by current implementations. + + Example: + + ORGANIZER;DIR="ldap://example.com:6666/o=ABC%20Industries, + c=US???(cn=Jim%20Dolittle)":mailto:jimdo@example.com + +3.2.7. Inline Encoding + + Parameter Name: ENCODING + + Purpose: To specify an alternate inline encoding for the property + value. + + Format Definition: This property parameter is defined by the + following notation: + + + + + + + + +Desruisseaux Standards Track [Page 18] + +RFC 5545 iCalendar September 2009 + + + encodingparam = "ENCODING" "=" + ( "8BIT" + ; "8bit" text encoding is defined in [RFC2045] + / "BASE64" + ; "BASE64" binary encoding format is defined in [RFC4648] + ) + + Description: This property parameter identifies the inline encoding + used in a property value. The default encoding is "8BIT", + corresponding to a property value consisting of text. The + "BASE64" encoding type corresponds to a property value encoded + using the "BASE64" encoding defined in [RFC2045]. + + If the value type parameter is ";VALUE=BINARY", then the inline + encoding parameter MUST be specified with the value + ";ENCODING=BASE64". + + Example: + + ATTACH;FMTTYPE=text/plain;ENCODING=BASE64;VALUE=BINARY:TG9yZW + 0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW + 5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IG + xhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbm + ltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIG + xhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdW + F0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbi + B2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdC + BudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaW + RhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYS + BkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4= + +3.2.8. Format Type + + Parameter Name: FMTTYPE + + Purpose: To specify the content type of a referenced object. + + Format Definition: This property parameter is defined by the + following notation: + + fmttypeparam = "FMTTYPE" "=" type-name "/" subtype-name + ; Where "type-name" and "subtype-name" are + ; defined in Section 4.2 of [RFC4288]. + + Description: This parameter can be specified on properties that are + used to reference an object. The parameter specifies the media + type [RFC4288] of the referenced object. For example, on the + "ATTACH" property, an FTP type URI value does not, by itself, + + + +Desruisseaux Standards Track [Page 19] + +RFC 5545 iCalendar September 2009 + + + necessarily convey the type of content associated with the + resource. The parameter value MUST be the text for either an + IANA-registered media type or a non-standard media type. + + Example: + + ATTACH;FMTTYPE=application/msword:ftp://example.com/pub/docs/ + agenda.doc + +3.2.9. Free/Busy Time Type + + Parameter Name: FBTYPE + + Purpose: To specify the free or busy time type. + + Format Definition: This property parameter is defined by the + following notation: + + fbtypeparam = "FBTYPE" "=" ("FREE" / "BUSY" + / "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE" + / x-name + ; Some experimental iCalendar free/busy type. + / iana-token) + ; Some other IANA-registered iCalendar free/busy type. + + Description: This parameter specifies the free or busy time type. + The value FREE indicates that the time interval is free for + scheduling. The value BUSY indicates that the time interval is + busy because one or more events have been scheduled for that + interval. The value BUSY-UNAVAILABLE indicates that the time + interval is busy and that the interval can not be scheduled. The + value BUSY-TENTATIVE indicates that the time interval is busy + because one or more events have been tentatively scheduled for + that interval. If not specified on a property that allows this + parameter, the default is BUSY. Applications MUST treat x-name + and iana-token values they don't recognize the same way as they + would the BUSY value. + + Example: The following is an example of this parameter on a + "FREEBUSY" property. + + FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z + + + + + + + + + +Desruisseaux Standards Track [Page 20] + +RFC 5545 iCalendar September 2009 + + +3.2.10. Language + + Parameter Name: LANGUAGE + + Purpose: To specify the language for text values in a property or + property parameter. + + Format Definition: This property parameter is defined by the + following notation: + + languageparam = "LANGUAGE" "=" language + + language = Language-Tag + ; As defined in [RFC5646]. + + Description: This parameter identifies the language of the text in + the property value and of all property parameter values of the + property. The value of the "LANGUAGE" property parameter is that + defined in [RFC5646]. + + For transport in a MIME entity, the Content-Language header field + can be used to set the default language for the entire body part. + Otherwise, no default language is assumed. + + Example: The following are examples of this parameter on the + "SUMMARY" and "LOCATION" properties: + + SUMMARY;LANGUAGE=en-US:Company Holiday Party + + LOCATION;LANGUAGE=en:Germany + + LOCATION;LANGUAGE=no:Tyskland + +3.2.11. Group or List Membership + + Parameter Name: MEMBER + + Purpose: To specify the group or list membership of the calendar + user specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + memberparam = "MEMBER" "=" DQUOTE cal-address DQUOTE + *("," DQUOTE cal-address DQUOTE) + + + + + + +Desruisseaux Standards Track [Page 21] + +RFC 5545 iCalendar September 2009 + + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter identifies the groups or + list membership for the calendar user specified by the property. + The parameter value is either a single calendar address in a + quoted-string or a COMMA-separated list of calendar addresses, + each in a quoted-string. The individual calendar address + parameter values MUST each be specified in a quoted-string. + + Example: + + ATTENDEE;MEMBER="mailto:ietf-calsch@example.org":mailto: + jsmith@example.com + + ATTENDEE;MEMBER="mailto:projectA@example.com","mailto:pr + ojectB@example.com":mailto:janedoe@example.com + +3.2.12. Participation Status + + Parameter Name: PARTSTAT + + Purpose: To specify the participation status for the calendar user + specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + partstatparam = "PARTSTAT" "=" + (partstat-event + / partstat-todo + / partstat-jour) + + partstat-event = ("NEEDS-ACTION" ; Event needs action + / "ACCEPTED" ; Event accepted + / "DECLINED" ; Event declined + / "TENTATIVE" ; Event tentatively + ; accepted + / "DELEGATED" ; Event delegated + / x-name ; Experimental status + / iana-token) ; Other IANA-registered + ; status + ; These are the participation statuses for a "VEVENT". + ; Default is NEEDS-ACTION. + + partstat-todo = ("NEEDS-ACTION" ; To-do needs action + / "ACCEPTED" ; To-do accepted + / "DECLINED" ; To-do declined + / "TENTATIVE" ; To-do tentatively + ; accepted + + + +Desruisseaux Standards Track [Page 22] + +RFC 5545 iCalendar September 2009 + + + / "DELEGATED" ; To-do delegated + / "COMPLETED" ; To-do completed + ; COMPLETED property has + ; DATE-TIME completed + / "IN-PROCESS" ; To-do in process of + ; being completed + / x-name ; Experimental status + / iana-token) ; Other IANA-registered + ; status + ; These are the participation statuses for a "VTODO". + ; Default is NEEDS-ACTION. + + + + partstat-jour = ("NEEDS-ACTION" ; Journal needs action + / "ACCEPTED" ; Journal accepted + / "DECLINED" ; Journal declined + / x-name ; Experimental status + / iana-token) ; Other IANA-registered + ; status + ; These are the participation statuses for a "VJOURNAL". + ; Default is NEEDS-ACTION. + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter identifies the + participation status for the calendar user specified by the + property value. The parameter values differ depending on whether + they are associated with a group-scheduled "VEVENT", "VTODO", or + "VJOURNAL". The values MUST match one of the values allowed for + the given calendar component. If not specified on a property that + allows this parameter, the default value is NEEDS-ACTION. + Applications MUST treat x-name and iana-token values they don't + recognize the same way as they would the NEEDS-ACTION value. + + Example: + + ATTENDEE;PARTSTAT=DECLINED:mailto:jsmith@example.com + +3.2.13. Recurrence Identifier Range + + Parameter Name: RANGE + + Purpose: To specify the effective range of recurrence instances from + the instance specified by the recurrence identifier specified by + the property. + + Format Definition: This property parameter is defined by the + following notation: + + + +Desruisseaux Standards Track [Page 23] + +RFC 5545 iCalendar September 2009 + + + rangeparam = "RANGE" "=" "THISANDFUTURE" + ; To specify the instance specified by the recurrence identifier + ; and all subsequent recurrence instances. + + Description: This parameter can be specified on a property that + specifies a recurrence identifier. The parameter specifies the + effective range of recurrence instances that is specified by the + property. The effective range is from the recurrence identifier + specified by the property. If this parameter is not specified on + an allowed property, then the default range is the single instance + specified by the recurrence identifier value of the property. The + parameter value can only be "THISANDFUTURE" to indicate a range + defined by the recurrence identifier and all subsequent instances. + The value "THISANDPRIOR" is deprecated by this revision of + iCalendar and MUST NOT be generated by applications. + + Example: + + RECURRENCE-ID;RANGE=THISANDFUTURE:19980401T133000Z + +3.2.14. Alarm Trigger Relationship + + Parameter Name: RELATED + + Purpose: To specify the relationship of the alarm trigger with + respect to the start or end of the calendar component. + + Format Definition: This property parameter is defined by the + following notation: + + trigrelparam = "RELATED" "=" + ("START" ; Trigger off of start + / "END") ; Trigger off of end + + Description: This parameter can be specified on properties that + specify an alarm trigger with a "DURATION" value type. The + parameter specifies whether the alarm will trigger relative to the + start or end of the calendar component. The parameter value START + will set the alarm to trigger off the start of the calendar + component; the parameter value END will set the alarm to trigger + off the end of the calendar component. If the parameter is not + specified on an allowable property, then the default is START. + + Example: + + TRIGGER;RELATED=END:PT5M + + + + + +Desruisseaux Standards Track [Page 24] + +RFC 5545 iCalendar September 2009 + + +3.2.15. Relationship Type + + Parameter Name: RELTYPE + + Purpose: To specify the type of hierarchical relationship associated + with the calendar component specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + reltypeparam = "RELTYPE" "=" + ("PARENT" ; Parent relationship - Default + / "CHILD" ; Child relationship + / "SIBLING" ; Sibling relationship + / iana-token ; Some other IANA-registered + ; iCalendar relationship type + / x-name) ; A non-standard, experimental + ; relationship type + + Description: This parameter can be specified on a property that + references another related calendar. The parameter specifies the + hierarchical relationship type of the calendar component + referenced by the property. The parameter value can be PARENT, to + indicate that the referenced calendar component is a superior of + calendar component; CHILD to indicate that the referenced calendar + component is a subordinate of the calendar component; or SIBLING + to indicate that the referenced calendar component is a peer of + the calendar component. If this parameter is not specified on an + allowable property, the default relationship type is PARENT. + Applications MUST treat x-name and iana-token values they don't + recognize the same way as they would the PARENT value. + + Example: + + RELATED-TO;RELTYPE=SIBLING:19960401-080045-4000F192713@ + example.com + +3.2.16. Participation Role + + Parameter Name: ROLE + + Purpose: To specify the participation role for the calendar user + specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + + + + +Desruisseaux Standards Track [Page 25] + +RFC 5545 iCalendar September 2009 + + + roleparam = "ROLE" "=" + ("CHAIR" ; Indicates chair of the + ; calendar entity + / "REQ-PARTICIPANT" ; Indicates a participant whose + ; participation is required + / "OPT-PARTICIPANT" ; Indicates a participant whose + ; participation is optional + / "NON-PARTICIPANT" ; Indicates a participant who + ; is copied for information + ; purposes only + / x-name ; Experimental role + / iana-token) ; Other IANA role + ; Default is REQ-PARTICIPANT + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter specifies the participation + role for the calendar user specified by the property in the group + schedule calendar component. If not specified on a property that + allows this parameter, the default value is REQ-PARTICIPANT. + Applications MUST treat x-name and iana-token values they don't + recognize the same way as they would the REQ-PARTICIPANT value. + + Example: + + ATTENDEE;ROLE=CHAIR:mailto:mrbig@example.com + +3.2.17. RSVP Expectation + + Parameter Name: RSVP + + Purpose: To specify whether there is an expectation of a favor of a + reply from the calendar user specified by the property value. + + Format Definition: This property parameter is defined by the + following notation: + + rsvpparam = "RSVP" "=" ("TRUE" / "FALSE") + ; Default is FALSE + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter identifies the expectation + of a reply from the calendar user specified by the property value. + This parameter is used by the "Organizer" to request a + participation status reply from an "Attendee" of a group-scheduled + event or to-do. If not specified on a property that allows this + parameter, the default value is FALSE. + + + + + +Desruisseaux Standards Track [Page 26] + +RFC 5545 iCalendar September 2009 + + + Example: + + ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com + +3.2.18. Sent By + + Parameter Name: SENT-BY + + Purpose: To specify the calendar user that is acting on behalf of + the calendar user specified by the property. + + Format Definition: This property parameter is defined by the + following notation: + + sentbyparam = "SENT-BY" "=" DQUOTE cal-address DQUOTE + + Description: This parameter can be specified on properties with a + CAL-ADDRESS value type. The parameter specifies the calendar user + that is acting on behalf of the calendar user specified by the + property. The parameter value MUST be a mailto URI as defined in + [RFC2368]. The individual calendar address parameter values MUST + each be specified in a quoted-string. + + Example: + + ORGANIZER;SENT-BY="mailto:sray@example.com":mailto: + jsmith@example.com + +3.2.19. Time Zone Identifier + + Parameter Name: TZID + + Purpose: To specify the identifier for the time zone definition for + a time component in the property value. + + Format Definition: This property parameter is defined by the + following notation: + + tzidparam = "TZID" "=" [tzidprefix] paramtext + + tzidprefix = "/" + + Description: This parameter MUST be specified on the "DTSTART", + "DTEND", "DUE", "EXDATE", and "RDATE" properties when either a + DATE-TIME or TIME value type is specified and when the value is + neither a UTC or a "floating" time. Refer to the DATE-TIME or + TIME value type definition for a description of UTC and "floating + time" formats. This property parameter specifies a text value + + + +Desruisseaux Standards Track [Page 27] + +RFC 5545 iCalendar September 2009 + + + that uniquely identifies the "VTIMEZONE" calendar component to be + used when evaluating the time portion of the property. The value + of the "TZID" property parameter will be equal to the value of the + "TZID" property for the matching time zone definition. An + individual "VTIMEZONE" calendar component MUST be specified for + each unique "TZID" parameter value specified in the iCalendar + object. + + The parameter MUST be specified on properties with a DATE-TIME + value if the DATE-TIME is not either a UTC or a "floating" time. + Failure to include and follow VTIMEZONE definitions in iCalendar + objects may lead to inconsistent understanding of the local time + at any given location. + + The presence of the SOLIDUS character as a prefix, indicates that + this "TZID" represents a unique ID in a globally defined time zone + registry (when such registry is defined). + + Note: This document does not define a naming convention for + time zone identifiers. Implementers may want to use the naming + conventions defined in existing time zone specifications such + as the public-domain TZ database [TZDB]. The specification of + globally unique time zone identifiers is not addressed by this + document and is left for future study. + + The following are examples of this property parameter: + + DTSTART;TZID=America/New_York:19980119T020000 + + DTEND;TZID=America/New_York:19980119T030000 + + The "TZID" property parameter MUST NOT be applied to DATE + properties and DATE-TIME or TIME properties whose time values are + specified in UTC. + + The use of local time in a DATE-TIME or TIME value without the + "TZID" property parameter is to be interpreted as floating time, + regardless of the existence of "VTIMEZONE" calendar components in + the iCalendar object. + + For more information, see the sections on the value types DATE- + TIME and TIME. + + + + + + + + + +Desruisseaux Standards Track [Page 28] + +RFC 5545 iCalendar September 2009 + + +3.2.20. Value Data Types + + Parameter Name: VALUE + + Purpose: To explicitly specify the value type format for a property + value. + + Format Definition: This property parameter is defined by the + following notation: + + valuetypeparam = "VALUE" "=" valuetype + + valuetype = ("BINARY" + / "BOOLEAN" + / "CAL-ADDRESS" + / "DATE" + / "DATE-TIME" + / "DURATION" + / "FLOAT" + / "INTEGER" + / "PERIOD" + / "RECUR" + / "TEXT" + / "TIME" + / "URI" + / "UTC-OFFSET" + / x-name + ; Some experimental iCalendar value type. + / iana-token) + ; Some other IANA-registered iCalendar value type. + + Description: This parameter specifies the value type and format of + the property value. The property values MUST be of a single value + type. For example, a "RDATE" property cannot have a combination + of DATE-TIME and TIME value types. + + If the property's value is the default value type, then this + parameter need not be specified. However, if the property's + default value type is overridden by some other allowable value + type, then this parameter MUST be specified. + + Applications MUST preserve the value data for x-name and iana- + token values that they don't recognize without attempting to + interpret or parse the value data. + + + + + + + +Desruisseaux Standards Track [Page 29] + +RFC 5545 iCalendar September 2009 + + +3.3. Property Value Data Types + + The properties in an iCalendar object are strongly typed. The + definition of each property restricts the value to be one of the + value data types, or simply value types, defined in this section. + The value type for a property will either be specified implicitly as + the default value type or will be explicitly specified with the + "VALUE" parameter. If the value type of a property is one of the + alternate valid types, then it MUST be explicitly specified with the + "VALUE" parameter. + +3.3.1. Binary + + Value Name: BINARY + + Purpose: This value type is used to identify properties that contain + a character encoding of inline binary data. For example, an + inline attachment of a document might be included in an iCalendar + object. + + Format Definition: This value type is defined by the following + notation: + + binary = *(4b-char) [b-end] + ; A "BASE64" encoded character string, as defined by [RFC4648]. + + b-end = (2b-char "==") / (3b-char "=") + + b-char = ALPHA / DIGIT / "+" / "/" + + Description: Property values with this value type MUST also include + the inline encoding parameter sequence of ";ENCODING=BASE64". + That is, all inline binary data MUST first be character encoded + using the "BASE64" encoding method defined in [RFC2045]. No + additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 30] + +RFC 5545 iCalendar September 2009 + + + Example: The following is an example of a "BASE64" encoded binary + value data: + + ATTACH;FMTTYPE=image/vnd.microsoft.icon;ENCODING=BASE64;VALUE + =BINARY:AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgIAAAICAgADAwMAA////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAMwAAAAAAABNEMQAAAAAAAkQgAAAAAAJEREQgAA + ACECQ0QgEgAAQxQzM0E0AABERCRCREQAADRDJEJEQwAAAhA0QwEQAAAAAERE + AAAAAAAAREQAAAAAAAAkQgAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA + +3.3.2. Boolean + + Value Name: BOOLEAN + + Purpose: This value type is used to identify properties that contain + either a "TRUE" or "FALSE" Boolean value. + + Format Definition: This value type is defined by the following + notation: + + boolean = "TRUE" / "FALSE" + + Description: These values are case-insensitive text. No additional + content value encoding (i.e., BACKSLASH character encoding, see + Section 3.3.11) is defined for this value type. + + Example: The following is an example of a hypothetical property that + has a BOOLEAN value type: + + TRUE + +3.3.3. Calendar User Address + + Value Name: CAL-ADDRESS + + Purpose: This value type is used to identify properties that contain + a calendar user address. + + Format Definition: This value type is defined by the following + notation: + + cal-address = uri + + Description: The value is a URI as defined by [RFC3986] or any other + IANA-registered form for a URI. When used to address an Internet + + + +Desruisseaux Standards Track [Page 31] + +RFC 5545 iCalendar September 2009 + + + email transport address for a calendar user, the value MUST be a + mailto URI, as defined by [RFC2368]. No additional content value + encoding (i.e., BACKSLASH character encoding, see Section 3.3.11) + is defined for this value type. + + Example: + + mailto:jane_doe@example.com + +3.3.4. Date + + Value Name: DATE + + Purpose: This value type is used to identify values that contain a + calendar date. + + Format Definition: This value type is defined by the following + notation: + + date = date-value + + date-value = date-fullyear date-month date-mday + date-fullyear = 4DIGIT + date-month = 2DIGIT ;01-12 + date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31 + ;based on month/year + + Description: If the property permits, multiple "date" values are + specified as a COMMA-separated list of values. The format for the + value type is based on the [ISO.8601.2004] complete + representation, basic format for a calendar date. The textual + format specifies a four-digit year, two-digit month, and two-digit + day of the month. There are no separator characters between the + year, month, and day component text. + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + + Example: The following represents July 14, 1997: + + 19970714 + +3.3.5. Date-Time + + Value Name: DATE-TIME + + Purpose: This value type is used to identify values that specify a + precise calendar date and time of day. + + + +Desruisseaux Standards Track [Page 32] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This value type is defined by the following + notation: + + date-time = date "T" time ;As specified in the DATE and TIME + ;value definitions + + Description: If the property permits, multiple "DATE-TIME" values + are specified as a COMMA-separated list of values. No additional + content value encoding (i.e., BACKSLASH character encoding, see + Section 3.3.11) is defined for this value type. + + The "DATE-TIME" value type is used to identify values that contain + a precise calendar date and time of day. The format is based on + the [ISO.8601.2004] complete representation, basic format for a + calendar date and time of day. The text format is a concatenation + of the "date", followed by the LATIN CAPITAL LETTER T character, + the time designator, followed by the "time" format. + + The "DATE-TIME" value type expresses time values in three forms: + + The form of date and time with UTC offset MUST NOT be used. For + example, the following is not valid for a DATE-TIME value: + + 19980119T230000-0800 ;Invalid time format + + FORM #1: DATE WITH LOCAL TIME + + The date with local time form is simply a DATE-TIME value that + does not contain the UTC designator nor does it reference a time + zone. For example, the following represents January 18, 1998, at + 11 PM: + + 19980118T230000 + + DATE-TIME values of this type are said to be "floating" and are + not bound to any time zone in particular. They are used to + represent the same hour, minute, and second value regardless of + which time zone is currently being observed. For example, an + event can be defined that indicates that an individual will be + busy from 11:00 AM to 1:00 PM every day, no matter which time zone + the person is in. In these cases, a local time can be specified. + The recipient of an iCalendar object with a property value + consisting of a local time, without any relative time zone + information, SHOULD interpret the value as being fixed to whatever + time zone the "ATTENDEE" is in at any given moment. This means + that two "Attendees", in different time zones, receiving the same + event definition as a floating time, may be participating in the + + + + +Desruisseaux Standards Track [Page 33] + +RFC 5545 iCalendar September 2009 + + + event at different actual times. Floating time SHOULD only be + used where that is the reasonable behavior. + + In most cases, a fixed time is desired. To properly communicate a + fixed time in a property value, either UTC time or local time with + time zone reference MUST be specified. + + The use of local time in a DATE-TIME value without the "TZID" + property parameter is to be interpreted as floating time, + regardless of the existence of "VTIMEZONE" calendar components in + the iCalendar object. + + FORM #2: DATE WITH UTC TIME + + The date with UTC time, or absolute time, is identified by a LATIN + CAPITAL LETTER Z suffix character, the UTC designator, appended to + the time value. For example, the following represents January 19, + 1998, at 0700 UTC: + + 19980119T070000Z + + The "TZID" property parameter MUST NOT be applied to DATE-TIME + properties whose time values are specified in UTC. + + FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE + + The date and local time with reference to time zone information is + identified by the use the "TZID" property parameter to reference + the appropriate time zone definition. "TZID" is discussed in + detail in Section 3.2.19. For example, the following represents + 2:00 A.M. in New York on January 19, 1998: + + TZID=America/New_York:19980119T020000 + + If, based on the definition of the referenced time zone, the local + time described occurs more than once (when changing from daylight + to standard time), the DATE-TIME value refers to the first + occurrence of the referenced time. Thus, TZID=America/ + New_York:20071104T013000 indicates November 4, 2007 at 1:30 A.M. + EDT (UTC-04:00). If the local time described does not occur (when + changing from standard to daylight time), the DATE-TIME value is + interpreted using the UTC offset before the gap in local times. + Thus, TZID=America/New_York:20070311T023000 indicates March 11, + 2007 at 3:30 A.M. EDT (UTC-04:00), one hour after 1:30 A.M. EST + (UTC-05:00). + + + + + + +Desruisseaux Standards Track [Page 34] + +RFC 5545 iCalendar September 2009 + + + A time value MUST only specify the second 60 when specifying a + positive leap second. For example: + + 19970630T235960Z + + Implementations that do not support leap seconds SHOULD interpret + the second 60 as equivalent to the second 59. + + Example: The following represents July 14, 1997, at 1:30 PM in New + York City in each of the three time formats, using the "DTSTART" + property. + + DTSTART:19970714T133000 ; Local time + DTSTART:19970714T173000Z ; UTC time + DTSTART;TZID=America/New_York:19970714T133000 + ; Local time and time + ; zone reference + +3.3.6. Duration + + Value Name: DURATION + + Purpose: This value type is used to identify properties that contain + a duration of time. + + Format Definition: This value type is defined by the following + notation: + + dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week) + + dur-date = dur-day [dur-time] + dur-time = "T" (dur-hour / dur-minute / dur-second) + dur-week = 1*DIGIT "W" + dur-hour = 1*DIGIT "H" [dur-minute] + dur-minute = 1*DIGIT "M" [dur-second] + dur-second = 1*DIGIT "S" + dur-day = 1*DIGIT "D" + + Description: If the property permits, multiple "duration" values are + specified by a COMMA-separated list of values. The format is + based on the [ISO.8601.2004] complete representation basic format + with designators for the duration of time. The format can + represent nominal durations (weeks and days) and accurate + durations (hours, minutes, and seconds). Note that unlike + [ISO.8601.2004], this value type doesn't support the "Y" and "M" + designators to specify durations in terms of years and months. + + + + + +Desruisseaux Standards Track [Page 35] + +RFC 5545 iCalendar September 2009 + + + The duration of a week or a day depends on its position in the + calendar. In the case of discontinuities in the time scale, such + as the change from standard time to daylight time and back, the + computation of the exact duration requires the subtraction or + addition of the change of duration of the discontinuity. Leap + seconds MUST NOT be considered when computing an exact duration. + When computing an exact duration, the greatest order time + components MUST be added first, that is, the number of days MUST + be added first, followed by the number of hours, number of + minutes, and number of seconds. + + Negative durations are typically used to schedule an alarm to + trigger before an associated time (see Section 3.8.6.3). + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) are defined for this value type. + + Example: A duration of 15 days, 5 hours, and 20 seconds would be: + + P15DT5H0M20S + + A duration of 7 weeks would be: + + P7W + +3.3.7. Float + + Value Name: FLOAT + + Purpose: This value type is used to identify properties that contain + a real-number value. + + Format Definition: This value type is defined by the following + notation: + + float = (["+"] / "-") 1*DIGIT ["." 1*DIGIT] + + Description: If the property permits, multiple "float" values are + specified by a COMMA-separated list of values. + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + + Example: + + 1000000.0000001 + 1.333 + -3.14 + + + +Desruisseaux Standards Track [Page 36] + +RFC 5545 iCalendar September 2009 + + +3.3.8. Integer + + Value Name: INTEGER + + Purpose: This value type is used to identify properties that contain + a signed integer value. + + Format Definition: This value type is defined by the following + notation: + + integer = (["+"] / "-") 1*DIGIT + + Description: If the property permits, multiple "integer" values are + specified by a COMMA-separated list of values. The valid range + for "integer" is -2147483648 to 2147483647. If the sign is not + specified, then the value is assumed to be positive. + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + + Example: + + 1234567890 + -1234567890 + +1234567890 + 432109876 + +3.3.9. Period of Time + + Value Name: PERIOD + + Purpose: This value type is used to identify values that contain a + precise period of time. + + Format Definition: This value type is defined by the following + notation: + + period = period-explicit / period-start + + period-explicit = date-time "/" date-time + ; [ISO.8601.2004] complete representation basic format for a + ; period of time consisting of a start and end. The start MUST + ; be before the end. + + period-start = date-time "/" dur-value + ; [ISO.8601.2004] complete representation basic format for a + ; period of time consisting of a start and positive duration + ; of time. + + + +Desruisseaux Standards Track [Page 37] + +RFC 5545 iCalendar September 2009 + + + Description: If the property permits, multiple "period" values are + specified by a COMMA-separated list of values. There are two + forms of a period of time. First, a period of time is identified + by its start and its end. This format is based on the + [ISO.8601.2004] complete representation, basic format for "DATE- + TIME" start of the period, followed by a SOLIDUS character + followed by the "DATE-TIME" of the end of the period. The start + of the period MUST be before the end of the period. Second, a + period of time can also be defined by a start and a positive + duration of time. The format is based on the [ISO.8601.2004] + complete representation, basic format for the "DATE-TIME" start of + the period, followed by a SOLIDUS character, followed by the + [ISO.8601.2004] basic format for "DURATION" of the period. + + Example: The period starting at 18:00:00 UTC, on January 1, 1997 and + ending at 07:00:00 UTC on January 2, 1997 would be: + + 19970101T180000Z/19970102T070000Z + + The period start at 18:00:00 on January 1, 1997 and lasting 5 + hours and 30 minutes would be: + + 19970101T180000Z/PT5H30M + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + +3.3.10. Recurrence Rule + + Value Name: RECUR + + Purpose: This value type is used to identify properties that contain + a recurrence rule specification. + + Format Definition: This value type is defined by the following + notation: + + recur = recur-rule-part *( ";" recur-rule-part ) + ; + ; The rule parts are not ordered in any + ; particular sequence. + ; + ; The FREQ rule part is REQUIRED, + ; but MUST NOT occur more than once. + ; + ; The UNTIL or COUNT rule parts are OPTIONAL, + ; but they MUST NOT occur in the same 'recur'. + ; + + + +Desruisseaux Standards Track [Page 38] + +RFC 5545 iCalendar September 2009 + + + ; The other rule parts are OPTIONAL, + ; but MUST NOT occur more than once. + + recur-rule-part = ( "FREQ" "=" freq ) + / ( "UNTIL" "=" enddate ) + / ( "COUNT" "=" 1*DIGIT ) + / ( "INTERVAL" "=" 1*DIGIT ) + / ( "BYSECOND" "=" byseclist ) + / ( "BYMINUTE" "=" byminlist ) + / ( "BYHOUR" "=" byhrlist ) + / ( "BYDAY" "=" bywdaylist ) + / ( "BYMONTHDAY" "=" bymodaylist ) + / ( "BYYEARDAY" "=" byyrdaylist ) + / ( "BYWEEKNO" "=" bywknolist ) + / ( "BYMONTH" "=" bymolist ) + / ( "BYSETPOS" "=" bysplist ) + / ( "WKST" "=" weekday ) + + freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY" + / "WEEKLY" / "MONTHLY" / "YEARLY" + + enddate = date / date-time + + byseclist = ( seconds *("," seconds) ) + + seconds = 1*2DIGIT ;0 to 60 + + byminlist = ( minutes *("," minutes) ) + + minutes = 1*2DIGIT ;0 to 59 + + byhrlist = ( hour *("," hour) ) + + hour = 1*2DIGIT ;0 to 23 + + bywdaylist = ( weekdaynum *("," weekdaynum) ) + + weekdaynum = [[plus / minus] ordwk] weekday + + plus = "+" + + minus = "-" + + ordwk = 1*2DIGIT ;1 to 53 + + weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" + ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, + ;FRIDAY, and SATURDAY days of the week. + + + +Desruisseaux Standards Track [Page 39] + +RFC 5545 iCalendar September 2009 + + + bymodaylist = ( monthdaynum *("," monthdaynum) ) + + monthdaynum = [plus / minus] ordmoday + + ordmoday = 1*2DIGIT ;1 to 31 + + byyrdaylist = ( yeardaynum *("," yeardaynum) ) + + yeardaynum = [plus / minus] ordyrday + + ordyrday = 1*3DIGIT ;1 to 366 + + bywknolist = ( weeknum *("," weeknum) ) + + weeknum = [plus / minus] ordwk + + bymolist = ( monthnum *("," monthnum) ) + + monthnum = 1*2DIGIT ;1 to 12 + + bysplist = ( setposday *("," setposday) ) + + setposday = yeardaynum + + Description: This value type is a structured value consisting of a + list of one or more recurrence grammar parts. Each rule part is + defined by a NAME=VALUE pair. The rule parts are separated from + each other by the SEMICOLON character. The rule parts are not + ordered in any particular sequence. Individual rule parts MUST + only be specified once. Compliant applications MUST accept rule + parts ordered in any sequence, but to ensure backward + compatibility with applications that pre-date this revision of + iCalendar the FREQ rule part MUST be the first rule part specified + in a RECUR value. + + The FREQ rule part identifies the type of recurrence rule. This + rule part MUST be specified in the recurrence rule. Valid values + include SECONDLY, to specify repeating events based on an interval + of a second or more; MINUTELY, to specify repeating events based + on an interval of a minute or more; HOURLY, to specify repeating + events based on an interval of an hour or more; DAILY, to specify + repeating events based on an interval of a day or more; WEEKLY, to + specify repeating events based on an interval of a week or more; + MONTHLY, to specify repeating events based on an interval of a + month or more; and YEARLY, to specify repeating events based on an + interval of a year or more. + + + + + +Desruisseaux Standards Track [Page 40] + +RFC 5545 iCalendar September 2009 + + + The INTERVAL rule part contains a positive integer representing at + which intervals the recurrence rule repeats. The default value is + "1", meaning every second for a SECONDLY rule, every minute for a + MINUTELY rule, every hour for an HOURLY rule, every day for a + DAILY rule, every week for a WEEKLY rule, every month for a + MONTHLY rule, and every year for a YEARLY rule. For example, + within a DAILY rule, a value of "8" means every eight days. + + The UNTIL rule part defines a DATE or DATE-TIME value that bounds + the recurrence rule in an inclusive manner. If the value + specified by UNTIL is synchronized with the specified recurrence, + this DATE or DATE-TIME becomes the last instance of the + recurrence. The value of the UNTIL rule part MUST have the same + value type as the "DTSTART" property. Furthermore, if the + "DTSTART" property is specified as a date with local time, then + the UNTIL rule part MUST also be specified as a date with local + time. If the "DTSTART" property is specified as a date with UTC + time or a date with local time and time zone reference, then the + UNTIL rule part MUST be specified as a date with UTC time. In the + case of the "STANDARD" and "DAYLIGHT" sub-components the UNTIL + rule part MUST always be specified as a date with UTC time. If + specified as a DATE-TIME value, then it MUST be specified in a UTC + time format. If not present, and the COUNT rule part is also not + present, the "RRULE" is considered to repeat forever. + + The COUNT rule part defines the number of occurrences at which to + range-bound the recurrence. The "DTSTART" property value always + counts as the first occurrence. + + The BYSECOND rule part specifies a COMMA-separated list of seconds + within a minute. Valid values are 0 to 60. The BYMINUTE rule + part specifies a COMMA-separated list of minutes within an hour. + Valid values are 0 to 59. The BYHOUR rule part specifies a COMMA- + separated list of hours of the day. Valid values are 0 to 23. + The BYSECOND, BYMINUTE and BYHOUR rule parts MUST NOT be specified + when the associated "DTSTART" property has a DATE value type. + These rule parts MUST be ignored in RECUR value that violate the + above requirement (e.g., generated by applications that pre-date + this revision of iCalendar). + + The BYDAY rule part specifies a COMMA-separated list of days of + the week; SU indicates Sunday; MO indicates Monday; TU indicates + Tuesday; WE indicates Wednesday; TH indicates Thursday; FR + indicates Friday; and SA indicates Saturday. + + Each BYDAY value can also be preceded by a positive (+n) or + negative (-n) integer. If present, this indicates the nth + occurrence of a specific day within the MONTHLY or YEARLY "RRULE". + + + +Desruisseaux Standards Track [Page 41] + +RFC 5545 iCalendar September 2009 + + + For example, within a MONTHLY rule, +1MO (or simply 1MO) + represents the first Monday within the month, whereas -1MO + represents the last Monday of the month. The numeric value in a + BYDAY rule part with the FREQ rule part set to YEARLY corresponds + to an offset within the month when the BYMONTH rule part is + present, and corresponds to an offset within the year when the + BYWEEKNO or BYMONTH rule parts are present. If an integer + modifier is not present, it means all days of this type within the + specified frequency. For example, within a MONTHLY rule, MO + represents all Mondays within the month. The BYDAY rule part MUST + NOT be specified with a numeric value when the FREQ rule part is + not set to MONTHLY or YEARLY. Furthermore, the BYDAY rule part + MUST NOT be specified with a numeric value with the FREQ rule part + set to YEARLY when the BYWEEKNO rule part is specified. + + The BYMONTHDAY rule part specifies a COMMA-separated list of days + of the month. Valid values are 1 to 31 or -31 to -1. For + example, -10 represents the tenth to the last day of the month. + The BYMONTHDAY rule part MUST NOT be specified when the FREQ rule + part is set to WEEKLY. + + The BYYEARDAY rule part specifies a COMMA-separated list of days + of the year. Valid values are 1 to 366 or -366 to -1. For + example, -1 represents the last day of the year (December 31st) + and -306 represents the 306th to the last day of the year (March + 1st). The BYYEARDAY rule part MUST NOT be specified when the FREQ + rule part is set to DAILY, WEEKLY, or MONTHLY. + + The BYWEEKNO rule part specifies a COMMA-separated list of + ordinals specifying weeks of the year. Valid values are 1 to 53 + or -53 to -1. This corresponds to weeks according to week + numbering as defined in [ISO.8601.2004]. A week is defined as a + seven day period, starting on the day of the week defined to be + the week start (see WKST). Week number one of the calendar year + is the first week that contains at least four (4) days in that + calendar year. This rule part MUST NOT be used when the FREQ rule + part is set to anything other than YEARLY. For example, 3 + represents the third week of the year. + + Note: Assuming a Monday week start, week 53 can only occur when + Thursday is January 1 or if it is a leap year and Wednesday is + January 1. + + The BYMONTH rule part specifies a COMMA-separated list of months + of the year. Valid values are 1 to 12. + + The WKST rule part specifies the day on which the workweek starts. + Valid values are MO, TU, WE, TH, FR, SA, and SU. This is + + + +Desruisseaux Standards Track [Page 42] + +RFC 5545 iCalendar September 2009 + + + significant when a WEEKLY "RRULE" has an interval greater than 1, + and a BYDAY rule part is specified. This is also significant when + in a YEARLY "RRULE" when a BYWEEKNO rule part is specified. The + default value is MO. + + The BYSETPOS rule part specifies a COMMA-separated list of values + that corresponds to the nth occurrence within the set of + recurrence instances specified by the rule. BYSETPOS operates on + a set of recurrence instances in one interval of the recurrence + rule. For example, in a WEEKLY rule, the interval would be one + week A set of recurrence instances starts at the beginning of the + interval defined by the FREQ rule part. Valid values are 1 to 366 + or -366 to -1. It MUST only be used in conjunction with another + BYxxx rule part. For example "the last work day of the month" + could be represented as: + + FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 + + Each BYSETPOS value can include a positive (+n) or negative (-n) + integer. If present, this indicates the nth occurrence of the + specific occurrence within the set of occurrences specified by the + rule. + + Recurrence rules may generate recurrence instances with an invalid + date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM + on a day where the local time is moved forward by an hour at 1:00 + AM). Such recurrence instances MUST be ignored and MUST NOT be + counted as part of the recurrence set. + + Information, not contained in the rule, necessary to determine the + various recurrence instance start time and dates are derived from + the Start Time ("DTSTART") component attribute. For example, + "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the + month or a time. This information would be the same as what is + specified for "DTSTART". + + BYxxx rule parts modify the recurrence in some manner. BYxxx rule + parts for a period of time that is the same or greater than the + frequency generally reduce or limit the number of occurrences of + the recurrence generated. For example, "FREQ=DAILY;BYMONTH=1" + reduces the number of recurrence instances from all days (if + BYMONTH rule part is not present) to all days in January. BYxxx + rule parts for a period of time less than the frequency generally + increase or expand the number of occurrences of the recurrence. + For example, "FREQ=YEARLY;BYMONTH=1,2" increases the number of + days within the yearly recurrence set from 1 (if BYMONTH rule part + is not present) to 2. + + + + +Desruisseaux Standards Track [Page 43] + +RFC 5545 iCalendar September 2009 + + + If multiple BYxxx rule parts are specified, then after evaluating + the specified FREQ and INTERVAL rule parts, the BYxxx rule parts + are applied to the current set of evaluated occurrences in the + following order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, + BYHOUR, BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are + evaluated. + + The table below summarizes the dependency of BYxxx rule part + expand or limit behavior on the FREQ rule part value. + + The term "N/A" means that the corresponding BYxxx rule part MUST + NOT be used with the corresponding FREQ value. + + BYDAY has some special behavior depending on the FREQ value and + this is described in separate notes below the table. + + +----------+--------+--------+-------+-------+------+-------+------+ + | |SECONDLY|MINUTELY|HOURLY |DAILY |WEEKLY|MONTHLY|YEARLY| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYMONTH |Limit |Limit |Limit |Limit |Limit |Limit |Expand| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYWEEKNO |N/A |N/A |N/A |N/A |N/A |N/A |Expand| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYYEARDAY |Limit |Limit |Limit |N/A |N/A |N/A |Expand| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYMONTHDAY|Limit |Limit |Limit |Limit |N/A |Expand |Expand| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYDAY |Limit |Limit |Limit |Limit |Expand|Note 1 |Note 2| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYHOUR |Limit |Limit |Limit |Expand |Expand|Expand |Expand| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYMINUTE |Limit |Limit |Expand |Expand |Expand|Expand |Expand| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYSECOND |Limit |Expand |Expand |Expand |Expand|Expand |Expand| + +----------+--------+--------+-------+-------+------+-------+------+ + |BYSETPOS |Limit |Limit |Limit |Limit |Limit |Limit |Limit | + +----------+--------+--------+-------+-------+------+-------+------+ + + Note 1: Limit if BYMONTHDAY is present; otherwise, special expand + for MONTHLY. + + Note 2: Limit if BYYEARDAY or BYMONTHDAY is present; otherwise, + special expand for WEEKLY if BYWEEKNO present; otherwise, + special expand for MONTHLY if BYMONTH present; otherwise, + special expand for YEARLY. + + + + + + +Desruisseaux Standards Track [Page 44] + +RFC 5545 iCalendar September 2009 + + + Here is an example of evaluating multiple BYxxx rule parts. + + DTSTART;TZID=America/New_York:19970105T083000 + RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9; + BYMINUTE=30 + + First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to + arrive at "every other year". Then, "BYMONTH=1" would be applied + to arrive at "every January, every other year". Then, "BYDAY=SU" + would be applied to arrive at "every Sunday in January, every + other year". Then, "BYHOUR=8,9" would be applied to arrive at + "every Sunday in January at 8 AM and 9 AM, every other year". + Then, "BYMINUTE=30" would be applied to arrive at "every Sunday in + January at 8:30 AM and 9:30 AM, every other year". Then, lacking + information from "RRULE", the second is derived from "DTSTART", to + end up in "every Sunday in January at 8:30:00 AM and 9:30:00 AM, + every other year". Similarly, if the BYMINUTE, BYHOUR, BYDAY, + BYMONTHDAY, or BYMONTH rule part were missing, the appropriate + minute, hour, day, or month would have been retrieved from the + "DTSTART" property. + + If the computed local start time of a recurrence instance does not + exist, or occurs more than once, for the specified time zone, the + time of the recurrence instance is interpreted in the same manner + as an explicit DATE-TIME value describing that date and time, as + specified in Section 3.3.5. + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + + Example: The following is a rule that specifies 10 occurrences that + occur every other day: + + FREQ=DAILY;COUNT=10;INTERVAL=2 + + There are other examples specified in Section 3.8.5.3. + +3.3.11. Text + + Value Name: TEXT + + Purpose: This value type is used to identify values that contain + human-readable text. + + Format Definition: This value type is defined by the following + notation: + + + + + +Desruisseaux Standards Track [Page 45] + +RFC 5545 iCalendar September 2009 + + + text = *(TSAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR) + ; Folded according to description above + + ESCAPED-CHAR = ("\\" / "\;" / "\," / "\N" / "\n") + ; \\ encodes \, \N or \n encodes newline + ; \; encodes ;, \, encodes , + + TSAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-5B / + %x5D-7E / NON-US-ASCII + ; Any character except CONTROLs not needed by the current + ; character set, DQUOTE, ";", ":", "\", "," + + Description: If the property permits, multiple TEXT values are + specified by a COMMA-separated list of values. + + The language in which the text is represented can be controlled by + the "LANGUAGE" property parameter. + + An intentional formatted text line break MUST only be included in + a "TEXT" property value by representing the line break with the + character sequence of BACKSLASH, followed by a LATIN SMALL LETTER + N or a LATIN CAPITAL LETTER N, that is "\n" or "\N". + + The "TEXT" property values may also contain special characters + that are used to signify delimiters, such as a COMMA character for + lists of values or a SEMICOLON character for structured values. + In order to support the inclusion of these special characters in + "TEXT" property values, they MUST be escaped with a BACKSLASH + character. A BACKSLASH character in a "TEXT" property value MUST + be escaped with another BACKSLASH character. A COMMA character in + a "TEXT" property value MUST be escaped with a BACKSLASH + character. A SEMICOLON character in a "TEXT" property value MUST + be escaped with a BACKSLASH character. However, a COLON character + in a "TEXT" property value SHALL NOT be escaped with a BACKSLASH + character. + + Example: A multiple line value of: + + Project XYZ Final Review + Conference Room - 3B + Come Prepared. + + would be represented as: + + Project XYZ Final Review\nConference Room - 3B\nCome Prepared. + + + + + + +Desruisseaux Standards Track [Page 46] + +RFC 5545 iCalendar September 2009 + + +3.3.12. Time + + Value Name: TIME + + Purpose: This value type is used to identify values that contain a + time of day. + + Format Definition: This value type is defined by the following + notation: + + time = time-hour time-minute time-second [time-utc] + + time-hour = 2DIGIT ;00-23 + time-minute = 2DIGIT ;00-59 + time-second = 2DIGIT ;00-60 + ;The "60" value is used to account for positive "leap" seconds. + + time-utc = "Z" + + Description: If the property permits, multiple "time" values are + specified by a COMMA-separated list of values. No additional + content value encoding (i.e., BACKSLASH character encoding, see + Section 3.3.11) is defined for this value type. + + The "TIME" value type is used to identify values that contain a + time of day. The format is based on the [ISO.8601.2004] complete + representation, basic format for a time of day. The text format + consists of a two-digit, 24-hour of the day (i.e., values 00-23), + two-digit minute in the hour (i.e., values 00-59), and two-digit + seconds in the minute (i.e., values 00-60). The seconds value of + 60 MUST only be used to account for positive "leap" seconds. + Fractions of a second are not supported by this format. + + In parallel to the "DATE-TIME" definition above, the "TIME" value + type expresses time values in three forms: + + The form of time with UTC offset MUST NOT be used. For example, + the following is not valid for a time value: + + 230000-0800 ;Invalid time format + + FORM #1 LOCAL TIME + + The local time form is simply a time value that does not contain + the UTC designator nor does it reference a time zone. For + example, 11:00 PM: + + 230000 + + + +Desruisseaux Standards Track [Page 47] + +RFC 5545 iCalendar September 2009 + + + Time values of this type are said to be "floating" and are not + bound to any time zone in particular. They are used to represent + the same hour, minute, and second value regardless of which time + zone is currently being observed. For example, an event can be + defined that indicates that an individual will be busy from 11:00 + AM to 1:00 PM every day, no matter which time zone the person is + in. In these cases, a local time can be specified. The recipient + of an iCalendar object with a property value consisting of a local + time, without any relative time zone information, SHOULD interpret + the value as being fixed to whatever time zone the "ATTENDEE" is + in at any given moment. This means that two "Attendees", may + participate in the same event at different UTC times; floating + time SHOULD only be used where that is reasonable behavior. + + In most cases, a fixed time is desired. To properly communicate a + fixed time in a property value, either UTC time or local time with + time zone reference MUST be specified. + + The use of local time in a TIME value without the "TZID" property + parameter is to be interpreted as floating time, regardless of the + existence of "VTIMEZONE" calendar components in the iCalendar + object. + + FORM #2: UTC TIME + + UTC time, or absolute time, is identified by a LATIN CAPITAL + LETTER Z suffix character, the UTC designator, appended to the + time value. For example, the following represents 07:00 AM UTC: + + 070000Z + + The "TZID" property parameter MUST NOT be applied to TIME + properties whose time values are specified in UTC. + + FORM #3: LOCAL TIME AND TIME ZONE REFERENCE + + The local time with reference to time zone information form is + identified by the use the "TZID" property parameter to reference + the appropriate time zone definition. "TZID" is discussed in + detail in Section 3.2.19. + + Example: The following represents 8:30 AM in New York in winter, + five hours behind UTC, in each of the three formats: + + 083000 + 133000Z + TZID=America/New_York:083000 + + + + +Desruisseaux Standards Track [Page 48] + +RFC 5545 iCalendar September 2009 + + +3.3.13. URI + + Value Name: URI + + Purpose: This value type is used to identify values that contain a + uniform resource identifier (URI) type of reference to the + property value. + + Format Definition: This value type is defined by the following + notation: + + uri = <As defined in Section 3 of [RFC3986]> + + Description: This value type might be used to reference binary + information, for values that are large, or otherwise undesirable + to include directly in the iCalendar object. + + Property values with this value type MUST follow the generic URI + syntax defined in [RFC3986]. + + When a property parameter value is a URI value type, the URI MUST + be specified as a quoted-string value. + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + + Example: The following is a URI for a network file: + + http://example.com/my-report.txt + +3.3.14. UTC Offset + + Value Name: UTC-OFFSET + + Purpose: This value type is used to identify properties that contain + an offset from UTC to local time. + + Format Definition: This value type is defined by the following + notation: + + utc-offset = time-numzone + + time-numzone = ("+" / "-") time-hour time-minute [time-second] + + Description: The PLUS SIGN character MUST be specified for positive + UTC offsets (i.e., ahead of UTC). The HYPHEN-MINUS character MUST + be specified for negative UTC offsets (i.e., behind of UTC). The + + + + +Desruisseaux Standards Track [Page 49] + +RFC 5545 iCalendar September 2009 + + + value of "-0000" and "-000000" are not allowed. The time-second, + if present, MUST NOT be 60; if absent, it defaults to zero. + + No additional content value encoding (i.e., BACKSLASH character + encoding, see Section 3.3.11) is defined for this value type. + + Example: The following UTC offsets are given for standard time for + New York (five hours behind UTC) and Geneva (one hour ahead of + UTC): + + -0500 + + +0100 + +3.4. iCalendar Object + + The Calendaring and Scheduling Core Object is a collection of + calendaring and scheduling information. Typically, this information + will consist of an iCalendar stream with a single iCalendar object. + However, multiple iCalendar objects can be sequentially grouped + together in an iCalendar stream. The first line and last line of the + iCalendar object MUST contain a pair of iCalendar object delimiter + strings. The syntax for an iCalendar stream is as follows: + + icalstream = 1*icalobject + + icalobject = "BEGIN" ":" "VCALENDAR" CRLF + icalbody + "END" ":" "VCALENDAR" CRLF + + The following is a simple example of an iCalendar object: + + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//hacksw/handcal//NONSGML v1.0//EN + BEGIN:VEVENT + UID:19970610T172345Z-AF23B2@example.com + DTSTAMP:19970610T172345Z + DTSTART:19970714T170000Z + DTEND:19970715T040000Z + SUMMARY:Bastille Day Party + END:VEVENT + END:VCALENDAR + + + + + + + + +Desruisseaux Standards Track [Page 50] + +RFC 5545 iCalendar September 2009 + + +3.5. Property + + A property is the definition of an individual attribute describing a + calendar object or a calendar component. A property takes the form + defined by the "contentline" notation defined in Section 3.1. + + The following is an example of a property: + + DTSTART:19960415T133000Z + + This memo imposes no ordering of properties within an iCalendar + object. + + Property names, parameter names, and enumerated parameter values are + case-insensitive. For example, the property name "DUE" is the same + as "due" and "Due", DTSTART;TZID=America/New_York:19980714T120000 is + the same as DtStart;TzID=America/New_York:19980714T120000. + +3.6. Calendar Components + + The body of the iCalendar object consists of a sequence of calendar + properties and one or more calendar components. The calendar + properties are attributes that apply to the calendar object as a + whole. The calendar components are collections of properties that + express a particular calendar semantic. For example, the calendar + component can specify an event, a to-do, a journal entry, time zone + information, free/busy time information, or an alarm. + + The body of the iCalendar object is defined by the following + notation: + + icalbody = calprops component + + calprops = *( + ; + ; The following are REQUIRED, + ; but MUST NOT occur more than once. + ; + prodid / version / + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + calscale / method / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + + + +Desruisseaux Standards Track [Page 51] + +RFC 5545 iCalendar September 2009 + + + x-prop / iana-prop + ; + ) + + component = 1*(eventc / todoc / journalc / freebusyc / + timezonec / iana-comp / x-comp) + + iana-comp = "BEGIN" ":" iana-token CRLF + 1*contentline + "END" ":" iana-token CRLF + + x-comp = "BEGIN" ":" x-name CRLF + 1*contentline + "END" ":" x-name CRLF + + An iCalendar object MUST include the "PRODID" and "VERSION" calendar + properties. In addition, it MUST include at least one calendar + component. Special forms of iCalendar objects are possible to + publish just busy time (i.e., only a "VFREEBUSY" calendar component) + or time zone (i.e., only a "VTIMEZONE" calendar component) + information. In addition, a complex iCalendar object that is used to + capture a complete snapshot of the contents of a calendar is possible + (e.g., composite of many different calendar components). More + commonly, an iCalendar object will consist of just a single "VEVENT", + "VTODO", or "VJOURNAL" calendar component. Applications MUST ignore + x-comp and iana-comp values they don't recognize. Applications that + support importing iCalendar objects SHOULD support all of the + component types defined in this document, and SHOULD NOT silently + drop any components as that can lead to user data loss. + +3.6.1. Event Component + + Component Name: VEVENT + + Purpose: Provide a grouping of component properties that describe an + event. + + Format Definition: A "VEVENT" calendar component is defined by the + following notation: + + eventc = "BEGIN" ":" "VEVENT" CRLF + eventprop *alarmc + "END" ":" "VEVENT" CRLF + + eventprop = *( + ; + ; The following are REQUIRED, + ; but MUST NOT occur more than once. + + + +Desruisseaux Standards Track [Page 52] + +RFC 5545 iCalendar September 2009 + + + ; + dtstamp / uid / + ; + ; The following is REQUIRED if the component + ; appears in an iCalendar object that doesn't + ; specify the "METHOD" property; otherwise, it + ; is OPTIONAL; in any case, it MUST NOT occur + ; more than once. + ; + dtstart / + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + class / created / description / geo / + last-mod / location / organizer / priority / + seq / status / summary / transp / + url / recurid / + ; + ; The following is OPTIONAL, + ; but SHOULD NOT occur more than once. + ; + rrule / + ; + ; Either 'dtend' or 'duration' MAY appear in + ; a 'eventprop', but 'dtend' and 'duration' + ; MUST NOT occur in the same 'eventprop'. + ; + dtend / duration / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + attach / attendee / categories / comment / + contact / exdate / rstatus / related / + resources / rdate / x-prop / iana-prop + ; + ) + + Description: A "VEVENT" calendar component is a grouping of + component properties, possibly including "VALARM" calendar + components, that represents a scheduled amount of time on a + calendar. For example, it can be an activity; such as a one-hour + long, department meeting from 8:00 AM to 9:00 AM, tomorrow. + Generally, an event will take up time on an individual calendar. + Hence, the event will appear as an opaque interval in a search for + busy time. Alternately, the event can have its Time Transparency + + + + +Desruisseaux Standards Track [Page 53] + +RFC 5545 iCalendar September 2009 + + + set to "TRANSPARENT" in order to prevent blocking of the event in + searches for busy time. + + The "VEVENT" is also the calendar component used to specify an + anniversary or daily reminder within a calendar. These events + have a DATE value type for the "DTSTART" property instead of the + default value type of DATE-TIME. If such a "VEVENT" has a "DTEND" + property, it MUST be specified as a DATE value also. The + anniversary type of "VEVENT" can span more than one date (i.e., + "DTEND" property value is set to a calendar date after the + "DTSTART" property value). If such a "VEVENT" has a "DURATION" + property, it MUST be specified as a "dur-day" or "dur-week" value. + + The "DTSTART" property for a "VEVENT" specifies the inclusive + start of the event. For recurring events, it also specifies the + very first instance in the recurrence set. The "DTEND" property + for a "VEVENT" calendar component specifies the non-inclusive end + of the event. For cases where a "VEVENT" calendar component + specifies a "DTSTART" property with a DATE value type but no + "DTEND" nor "DURATION" property, the event's duration is taken to + be one day. For cases where a "VEVENT" calendar component + specifies a "DTSTART" property with a DATE-TIME value type but no + "DTEND" property, the event ends on the same calendar date and + time of day specified by the "DTSTART" property. + + The "VEVENT" calendar component cannot be nested within another + calendar component. However, "VEVENT" calendar components can be + related to each other or to a "VTODO" or to a "VJOURNAL" calendar + component with the "RELATED-TO" property. + + Example: The following is an example of the "VEVENT" calendar + component used to represent a meeting that will also be opaque to + searches for busy time: + + BEGIN:VEVENT + UID:19970901T130000Z-123401@example.com + DTSTAMP:19970901T130000Z + DTSTART:19970903T163000Z + DTEND:19970903T190000Z + SUMMARY:Annual Employee Review + CLASS:PRIVATE + CATEGORIES:BUSINESS,HUMAN RESOURCES + END:VEVENT + + The following is an example of the "VEVENT" calendar component + used to represent a reminder that will not be opaque, but rather + transparent, to searches for busy time: + + + + +Desruisseaux Standards Track [Page 54] + +RFC 5545 iCalendar September 2009 + + + BEGIN:VEVENT + UID:19970901T130000Z-123402@example.com + DTSTAMP:19970901T130000Z + DTSTART:19970401T163000Z + DTEND:19970402T010000Z + SUMMARY:Laurel is in sensitivity awareness class. + CLASS:PUBLIC + CATEGORIES:BUSINESS,HUMAN RESOURCES + TRANSP:TRANSPARENT + END:VEVENT + + The following is an example of the "VEVENT" calendar component + used to represent an anniversary that will occur annually: + + BEGIN:VEVENT + UID:19970901T130000Z-123403@example.com + DTSTAMP:19970901T130000Z + DTSTART;VALUE=DATE:19971102 + SUMMARY:Our Blissful Anniversary + TRANSP:TRANSPARENT + CLASS:CONFIDENTIAL + CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION + RRULE:FREQ=YEARLY + END:VEVENT + + The following is an example of the "VEVENT" calendar component + used to represent a multi-day event scheduled from June 28th, 2007 + to July 8th, 2007 inclusively. Note that the "DTEND" property is + set to July 9th, 2007, since the "DTEND" property specifies the + non-inclusive end of the event. + + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + DTEND;VALUE=DATE:20070709 + SUMMARY:Festival International de Jazz de Montreal + TRANSP:TRANSPARENT + END:VEVENT + +3.6.2. To-Do Component + + Component Name: VTODO + + Purpose: Provide a grouping of calendar properties that describe a + to-do. + + + + + +Desruisseaux Standards Track [Page 55] + +RFC 5545 iCalendar September 2009 + + + Format Definition: A "VTODO" calendar component is defined by the + following notation: + + todoc = "BEGIN" ":" "VTODO" CRLF + todoprop *alarmc + "END" ":" "VTODO" CRLF + + todoprop = *( + ; + ; The following are REQUIRED, + ; but MUST NOT occur more than once. + ; + dtstamp / uid / + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + class / completed / created / description / + dtstart / geo / last-mod / location / organizer / + percent / priority / recurid / seq / status / + summary / url / + ; + ; The following is OPTIONAL, + ; but SHOULD NOT occur more than once. + ; + rrule / + ; + ; Either 'due' or 'duration' MAY appear in + ; a 'todoprop', but 'due' and 'duration' + ; MUST NOT occur in the same 'todoprop'. + ; If 'duration' appear in a 'todoprop', + ; then 'dtstart' MUST also appear in + ; the same 'todoprop'. + ; + due / duration / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + attach / attendee / categories / comment / contact / + exdate / rstatus / related / resources / + rdate / x-prop / iana-prop + ; + ) + + Description: A "VTODO" calendar component is a grouping of component + properties and possibly "VALARM" calendar components that + represent an action-item or assignment. For example, it can be + + + +Desruisseaux Standards Track [Page 56] + +RFC 5545 iCalendar September 2009 + + + used to represent an item of work assigned to an individual; such + as "turn in travel expense today". + + The "VTODO" calendar component cannot be nested within another + calendar component. However, "VTODO" calendar components can be + related to each other or to a "VEVENT" or to a "VJOURNAL" calendar + component with the "RELATED-TO" property. + + A "VTODO" calendar component without the "DTSTART" and "DUE" (or + "DURATION") properties specifies a to-do that will be associated + with each successive calendar date, until it is completed. + + Examples: The following is an example of a "VTODO" calendar + component that needs to be completed before May 1st, 2007. On + midnight May 1st, 2007 this to-do would be considered overdue. + + BEGIN:VTODO + UID:20070313T123432Z-456553@example.com + DTSTAMP:20070313T123432Z + DUE;VALUE=DATE:20070501 + SUMMARY:Submit Quebec Income Tax Return for 2006 + CLASS:CONFIDENTIAL + CATEGORIES:FAMILY,FINANCE + STATUS:NEEDS-ACTION + END:VTODO + + The following is an example of a "VTODO" calendar component that + was due before 1:00 P.M. UTC on July 9th, 2007 and was completed + on July 7th, 2007 at 10:00 A.M. UTC. + + BEGIN:VTODO + UID:20070514T103211Z-123404@example.com + DTSTAMP:20070514T103211Z + DTSTART:20070514T110000Z + DUE:20070709T130000Z + COMPLETED:20070707T100000Z + SUMMARY:Submit Revised Internet-Draft + PRIORITY:1 + STATUS:NEEDS-ACTION + END:VTODO + +3.6.3. Journal Component + + Component Name: VJOURNAL + + Purpose: Provide a grouping of component properties that describe a + journal entry. + + + + +Desruisseaux Standards Track [Page 57] + +RFC 5545 iCalendar September 2009 + + + Format Definition: A "VJOURNAL" calendar component is defined by the + following notation: + + journalc = "BEGIN" ":" "VJOURNAL" CRLF + jourprop + "END" ":" "VJOURNAL" CRLF + + jourprop = *( + ; + ; The following are REQUIRED, + ; but MUST NOT occur more than once. + ; + dtstamp / uid / + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + class / created / dtstart / + last-mod / organizer / recurid / seq / + status / summary / url / + ; + ; The following is OPTIONAL, + ; but SHOULD NOT occur more than once. + ; + rrule / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + attach / attendee / categories / comment / + contact / description / exdate / related / rdate / + rstatus / x-prop / iana-prop + ; + ) + + Description: A "VJOURNAL" calendar component is a grouping of + component properties that represent one or more descriptive text + notes associated with a particular calendar date. The "DTSTART" + property is used to specify the calendar date with which the + journal entry is associated. Generally, it will have a DATE value + data type, but it can also be used to specify a DATE-TIME value + data type. Examples of a journal entry include a daily record of + a legislative body or a journal entry of individual telephone + contacts for the day or an ordered list of accomplishments for the + day. The "VJOURNAL" calendar component can also be used to + associate a document with a calendar date. + + + + + +Desruisseaux Standards Track [Page 58] + +RFC 5545 iCalendar September 2009 + + + The "VJOURNAL" calendar component does not take up time on a + calendar. Hence, it does not play a role in free or busy time + searches -- it is as though it has a time transparency value of + TRANSPARENT. It is transparent to any such searches. + + The "VJOURNAL" calendar component cannot be nested within another + calendar component. However, "VJOURNAL" calendar components can + be related to each other or to a "VEVENT" or to a "VTODO" calendar + component, with the "RELATED-TO" property. + + Example: The following is an example of the "VJOURNAL" calendar + component: + + BEGIN:VJOURNAL + UID:19970901T130000Z-123405@example.com + DTSTAMP:19970901T130000Z + DTSTART;VALUE=DATE:19970317 + SUMMARY:Staff meeting minutes + DESCRIPTION:1. Staff meeting: Participants include Joe\, + Lisa\, and Bob. Aurora project plans were reviewed. + There is currently no budget reserves for this project. + Lisa will escalate to management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative + called to discuss new printer. Promised to get us a demo by + Friday.\n3. Henry Miller (Handsoff Insurance): Car was + totaled by tree. Is looking into a loaner car. 555-2323 + (tel). + END:VJOURNAL + +3.6.4. Free/Busy Component + + Component Name: VFREEBUSY + + Purpose: Provide a grouping of component properties that describe + either a request for free/busy time, describe a response to a + request for free/busy time, or describe a published set of busy + time. + + Format Definition: A "VFREEBUSY" calendar component is defined by + the following notation: + + freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF + fbprop + "END" ":" "VFREEBUSY" CRLF + + fbprop = *( + ; + ; The following are REQUIRED, + + + +Desruisseaux Standards Track [Page 59] + +RFC 5545 iCalendar September 2009 + + + ; but MUST NOT occur more than once. + ; + dtstamp / uid / + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + contact / dtstart / dtend / + organizer / url / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + attendee / comment / freebusy / rstatus / x-prop / + iana-prop + ; + ) + + Description: A "VFREEBUSY" calendar component is a grouping of + component properties that represents either a request for free or + busy time information, a reply to a request for free or busy time + information, or a published set of busy time information. + + When used to request free/busy time information, the "ATTENDEE" + property specifies the calendar users whose free/busy time is + being requested; the "ORGANIZER" property specifies the calendar + user who is requesting the free/busy time; the "DTSTART" and + "DTEND" properties specify the window of time for which the free/ + busy time is being requested; the "UID" and "DTSTAMP" properties + are specified to assist in proper sequencing of multiple free/busy + time requests. + + When used to reply to a request for free/busy time, the "ATTENDEE" + property specifies the calendar user responding to the free/busy + time request; the "ORGANIZER" property specifies the calendar user + that originally requested the free/busy time; the "FREEBUSY" + property specifies the free/busy time information (if it exists); + and the "UID" and "DTSTAMP" properties are specified to assist in + proper sequencing of multiple free/busy time replies. + + When used to publish busy time, the "ORGANIZER" property specifies + the calendar user associated with the published busy time; the + "DTSTART" and "DTEND" properties specify an inclusive time window + that surrounds the busy time information; the "FREEBUSY" property + specifies the published busy time information; and the "DTSTAMP" + property specifies the DATE-TIME that iCalendar object was + created. + + + + +Desruisseaux Standards Track [Page 60] + +RFC 5545 iCalendar September 2009 + + + The "VFREEBUSY" calendar component cannot be nested within another + calendar component. Multiple "VFREEBUSY" calendar components can + be specified within an iCalendar object. This permits the + grouping of free/busy information into logical collections, such + as monthly groups of busy time information. + + The "VFREEBUSY" calendar component is intended for use in + iCalendar object methods involving requests for free time, + requests for busy time, requests for both free and busy, and the + associated replies. + + Free/Busy information is represented with the "FREEBUSY" property. + This property provides a terse representation of time periods. + One or more "FREEBUSY" properties can be specified in the + "VFREEBUSY" calendar component. + + When present in a "VFREEBUSY" calendar component, the "DTSTART" + and "DTEND" properties SHOULD be specified prior to any "FREEBUSY" + properties. + + The recurrence properties ("RRULE", "RDATE", "EXDATE") are not + permitted within a "VFREEBUSY" calendar component. Any recurring + events are resolved into their individual busy time periods using + the "FREEBUSY" property. + + Example: The following is an example of a "VFREEBUSY" calendar + component used to request free or busy time information: + + BEGIN:VFREEBUSY + UID:19970901T082949Z-FA43EF@example.com + ORGANIZER:mailto:jane_doe@example.com + ATTENDEE:mailto:john_public@example.com + DTSTART:19971015T050000Z + DTEND:19971016T050000Z + DTSTAMP:19970901T083000Z + END:VFREEBUSY + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 61] + +RFC 5545 iCalendar September 2009 + + + The following is an example of a "VFREEBUSY" calendar component + used to reply to the request with busy time information: + + BEGIN:VFREEBUSY + UID:19970901T095957Z-76A912@example.com + ORGANIZER:mailto:jane_doe@example.com + ATTENDEE:mailto:john_public@example.com + DTSTAMP:19970901T100000Z + FREEBUSY:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M + URL:http://example.com/pub/busy/jpublic-01.ifb + COMMENT:This iCalendar file contains busy time information for + the next three months. + END:VFREEBUSY + + The following is an example of a "VFREEBUSY" calendar component + used to publish busy time information: + + BEGIN:VFREEBUSY + UID:19970901T115957Z-76A912@example.com + DTSTAMP:19970901T120000Z + ORGANIZER:jsmith@example.com + DTSTART:19980313T141711Z + DTEND:19980410T141711Z + FREEBUSY:19980314T233000Z/19980315T003000Z + FREEBUSY:19980316T153000Z/19980316T163000Z + FREEBUSY:19980318T030000Z/19980318T040000Z + URL:http://www.example.com/calendar/busytime/jsmith.ifb + END:VFREEBUSY + +3.6.5. Time Zone Component + + Component Name: VTIMEZONE + + Purpose: Provide a grouping of component properties that defines a + time zone. + + Format Definition: A "VTIMEZONE" calendar component is defined by + the following notation: + + timezonec = "BEGIN" ":" "VTIMEZONE" CRLF + *( + ; + ; 'tzid' is REQUIRED, but MUST NOT occur more + ; than once. + ; + tzid / + ; + + + +Desruisseaux Standards Track [Page 62] + +RFC 5545 iCalendar September 2009 + + + ; 'last-mod' and 'tzurl' are OPTIONAL, + ; but MUST NOT occur more than once. + ; + last-mod / tzurl / + ; + ; One of 'standardc' or 'daylightc' MUST occur + ; and each MAY occur more than once. + ; + standardc / daylightc / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + x-prop / iana-prop + ; + ) + "END" ":" "VTIMEZONE" CRLF + + standardc = "BEGIN" ":" "STANDARD" CRLF + tzprop + "END" ":" "STANDARD" CRLF + + daylightc = "BEGIN" ":" "DAYLIGHT" CRLF + tzprop + "END" ":" "DAYLIGHT" CRLF + + tzprop = *( + ; + ; The following are REQUIRED, + ; but MUST NOT occur more than once. + ; + dtstart / tzoffsetto / tzoffsetfrom / + ; + ; The following is OPTIONAL, + ; but SHOULD NOT occur more than once. + ; + rrule / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + comment / rdate / tzname / x-prop / iana-prop + ; + ) + + Description: A time zone is unambiguously defined by the set of time + measurement rules determined by the governing body for a given + geographic area. These rules describe, at a minimum, the base + + + +Desruisseaux Standards Track [Page 63] + +RFC 5545 iCalendar September 2009 + + + offset from UTC for the time zone, often referred to as the + Standard Time offset. Many locations adjust their Standard Time + forward or backward by one hour, in order to accommodate seasonal + changes in number of daylight hours, often referred to as Daylight + Saving Time. Some locations adjust their time by a fraction of an + hour. Standard Time is also known as Winter Time. Daylight + Saving Time is also known as Advanced Time, Summer Time, or Legal + Time in certain countries. The following table shows the changes + in time zone rules in effect for New York City starting from 1967. + Each line represents a description or rule for a particular + observance. + + Effective Observance Rule + + +-----------+--------------------------+--------+--------------+ + | Date | (Date-Time) | Offset | Abbreviation | + +-----------+--------------------------+--------+--------------+ + | 1967-1973 | last Sun in Apr, 02:00 | -0400 | EDT | + | | | | | + | 1967-2006 | last Sun in Oct, 02:00 | -0500 | EST | + | | | | | + | 1974-1974 | Jan 6, 02:00 | -0400 | EDT | + | | | | | + | 1975-1975 | Feb 23, 02:00 | -0400 | EDT | + | | | | | + | 1976-1986 | last Sun in Apr, 02:00 | -0400 | EDT | + | | | | | + | 1987-2006 | first Sun in Apr, 02:00 | -0400 | EDT | + | | | | | + | 2007-* | second Sun in Mar, 02:00 | -0400 | EDT | + | | | | | + | 2007-* | first Sun in Nov, 02:00 | -0500 | EST | + +-----------+--------------------------+--------+--------------+ + + Note: The specification of a global time zone registry is not + addressed by this document and is left for future study. + However, implementers may find the TZ database [TZDB] a useful + reference. It is an informal, public-domain collection of time + zone information, which is currently being maintained by + volunteer Internet participants, and is used in several + operating systems. This database contains current and + historical time zone information for a wide variety of + locations around the globe; it provides a time zone identifier + for every unique time zone rule set in actual use since 1970, + with historical data going back to the introduction of standard + time. + + + + + +Desruisseaux Standards Track [Page 64] + +RFC 5545 iCalendar September 2009 + + + Interoperability between two calendaring and scheduling + applications, especially for recurring events, to-dos or journal + entries, is dependent on the ability to capture and convey date + and time information in an unambiguous format. The specification + of current time zone information is integral to this behavior. + + If present, the "VTIMEZONE" calendar component defines the set of + Standard Time and Daylight Saving Time observances (or rules) for + a particular time zone for a given interval of time. The + "VTIMEZONE" calendar component cannot be nested within other + calendar components. Multiple "VTIMEZONE" calendar components can + exist in an iCalendar object. In this situation, each "VTIMEZONE" + MUST represent a unique time zone definition. This is necessary + for some classes of events, such as airline flights, that start in + one time zone and end in another. + + The "VTIMEZONE" calendar component MUST include the "TZID" + property and at least one definition of a "STANDARD" or "DAYLIGHT" + sub-component. The "STANDARD" or "DAYLIGHT" sub-component MUST + include the "DTSTART", "TZOFFSETFROM", and "TZOFFSETTO" + properties. + + An individual "VTIMEZONE" calendar component MUST be specified for + each unique "TZID" parameter value specified in the iCalendar + object. In addition, a "VTIMEZONE" calendar component, referred + to by a recurring calendar component, MUST provide valid time zone + information for all recurrence instances. + + Each "VTIMEZONE" calendar component consists of a collection of + one or more sub-components that describe the rule for a particular + observance (either a Standard Time or a Daylight Saving Time + observance). The "STANDARD" sub-component consists of a + collection of properties that describe Standard Time. The + "DAYLIGHT" sub-component consists of a collection of properties + that describe Daylight Saving Time. In general, this collection + of properties consists of: + + * the first onset DATE-TIME for the observance; + + * the last onset DATE-TIME for the observance, if a last onset is + known; + + * the offset to be applied for the observance; + + * a rule that describes the day and time when the observance + takes effect; + + * an optional name for the observance. + + + +Desruisseaux Standards Track [Page 65] + +RFC 5545 iCalendar September 2009 + + + For a given time zone, there may be multiple unique definitions of + the observances over a period of time. Each observance is + described using either a "STANDARD" or "DAYLIGHT" sub-component. + The collection of these sub-components is used to describe the + time zone for a given period of time. The offset to apply at any + given time is found by locating the observance that has the last + onset date and time before the time in question, and using the + offset value from that observance. + + The top-level properties in a "VTIMEZONE" calendar component are: + + The mandatory "TZID" property is a text value that uniquely + identifies the "VTIMEZONE" calendar component within the scope of + an iCalendar object. + + The optional "LAST-MODIFIED" property is a UTC value that + specifies the date and time that this time zone definition was + last updated. + + The optional "TZURL" property is a url value that points to a + published "VTIMEZONE" definition. "TZURL" SHOULD refer to a + resource that is accessible by anyone who might need to interpret + the object. This SHOULD NOT normally be a "file" URL or other URL + that is not widely accessible. + + The collection of properties that are used to define the + "STANDARD" and "DAYLIGHT" sub-components include: + + The mandatory "DTSTART" property gives the effective onset date + and local time for the time zone sub-component definition. + "DTSTART" in this usage MUST be specified as a date with a local + time value. + + The mandatory "TZOFFSETFROM" property gives the UTC offset that is + in use when the onset of this time zone observance begins. + "TZOFFSETFROM" is combined with "DTSTART" to define the effective + onset for the time zone sub-component definition. For example, + the following represents the time at which the observance of + Standard Time took effect in Fall 1967 for New York City: + + DTSTART:19671029T020000 + + TZOFFSETFROM:-0400 + + The mandatory "TZOFFSETTO" property gives the UTC offset for the + time zone sub-component (Standard Time or Daylight Saving Time) + when this observance is in use. + + + + +Desruisseaux Standards Track [Page 66] + +RFC 5545 iCalendar September 2009 + + + The optional "TZNAME" property is the customary name for the time + zone. This could be used for displaying dates. + + The onset DATE-TIME values for the observance defined by the time + zone sub-component is defined by the "DTSTART", "RRULE", and + "RDATE" properties. + + The "RRULE" property defines the recurrence rule for the onset of + the observance defined by this time zone sub-component. Some + specific requirements for the usage of "RRULE" for this purpose + include: + + * If observance is known to have an effective end date, the + "UNTIL" recurrence rule parameter MUST be used to specify the + last valid onset of this observance (i.e., the UNTIL DATE-TIME + will be equal to the last instance generated by the recurrence + pattern). It MUST be specified in UTC time. + + * The "DTSTART" and the "TZOFFSETFROM" properties MUST be used + when generating the onset DATE-TIME values (instances) from the + "RRULE". + + The "RDATE" property can also be used to define the onset of the + observance by giving the individual onset date and times. "RDATE" + in this usage MUST be specified as a date with local time value, + relative to the UTC offset specified in the "TZOFFSETFROM" + property. + + The optional "COMMENT" property is also allowed for descriptive + explanatory text. + + Example: The following are examples of the "VTIMEZONE" calendar + component: + + This is an example showing all the time zone rules for New York + City since April 30, 1967 at 03:00:00 EDT. + + BEGIN:VTIMEZONE + TZID:America/New_York + LAST-MODIFIED:20050809T050000Z + BEGIN:DAYLIGHT + DTSTART:19670430T020000 + RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + BEGIN:STANDARD + + + +Desruisseaux Standards Track [Page 67] + +RFC 5545 iCalendar September 2009 + + + DTSTART:19671029T020000 + RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:EST + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:19740106T020000 + RDATE:19750223T020000 + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + BEGIN:DAYLIGHT + DTSTART:19760425T020000 + RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19860427T070000Z + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + BEGIN:DAYLIGHT + DTSTART:19870405T020000 + RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T070000Z + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + BEGIN:DAYLIGHT + DTSTART:20070311T020000 + RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20071104T020000 + RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:EST + END:STANDARD + END:VTIMEZONE + + This is an example showing time zone information for New York City + using only the "DTSTART" property. Note that this is only + suitable for a recurring event that starts on or later than March + 11, 2007 at 03:00:00 EDT (i.e., the earliest effective transition + date and time) and ends no later than March 9, 2008 at 01:59:59 + + + +Desruisseaux Standards Track [Page 68] + +RFC 5545 iCalendar September 2009 + + + EST (i.e., latest valid date and time for EST in this scenario). + For example, this can be used for a recurring event that occurs + every Friday, 8:00 A.M.-9:00 A.M., starting June 1, 2007, ending + December 31, 2007, + + BEGIN:VTIMEZONE + TZID:America/New_York + LAST-MODIFIED:20050809T050000Z + BEGIN:STANDARD + DTSTART:20071104T020000 + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:EST + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:20070311T020000 + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + END:VTIMEZONE + + This is a simple example showing the current time zone rules for + New York City using a "RRULE" recurrence pattern. Note that there + is no effective end date to either of the Standard Time or + Daylight Time rules. This information would be valid for a + recurring event starting today and continuing indefinitely. + + BEGIN:VTIMEZONE + TZID:America/New_York + LAST-MODIFIED:20050809T050000Z + TZURL:http://zones.example.com/tz/America-New_York.ics + BEGIN:STANDARD + DTSTART:20071104T020000 + RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:EST + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:20070311T020000 + RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + END:VTIMEZONE + + + + +Desruisseaux Standards Track [Page 69] + +RFC 5545 iCalendar September 2009 + + + This is an example showing a set of rules for a fictitious time + zone where the Daylight Time rule has an effective end date (i.e., + after that date, Daylight Time is no longer observed). + + BEGIN:VTIMEZONE + TZID:Fictitious + LAST-MODIFIED:19870101T000000Z + BEGIN:STANDARD + DTSTART:19671029T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:EST + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:19870405T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + END:VTIMEZONE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 70] + +RFC 5545 iCalendar September 2009 + + + This is an example showing a set of rules for a fictitious time + zone where the first Daylight Time rule has an effective end date. + There is a second Daylight Time rule that picks up where the other + left off. + + BEGIN:VTIMEZONE + TZID:Fictitious + LAST-MODIFIED:19870101T000000Z + BEGIN:STANDARD + DTSTART:19671029T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:EST + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:19870405T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + BEGIN:DAYLIGHT + DTSTART:19990424T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:EDT + END:DAYLIGHT + END:VTIMEZONE + +3.6.6. Alarm Component + + Component Name: VALARM + + Purpose: Provide a grouping of component properties that define an + alarm. + + Format Definition: A "VALARM" calendar component is defined by the + following notation: + + alarmc = "BEGIN" ":" "VALARM" CRLF + (audioprop / dispprop / emailprop) + "END" ":" "VALARM" CRLF + + audioprop = *( + ; + ; 'action' and 'trigger' are both REQUIRED, + + + +Desruisseaux Standards Track [Page 71] + +RFC 5545 iCalendar September 2009 + + + ; but MUST NOT occur more than once. + ; + action / trigger / + ; + ; 'duration' and 'repeat' are both OPTIONAL, + ; and MUST NOT occur more than once each; + ; but if one occurs, so MUST the other. + ; + duration / repeat / + ; + ; The following is OPTIONAL, + ; but MUST NOT occur more than once. + ; + attach / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + x-prop / iana-prop + ; + ) + + dispprop = *( + ; + ; The following are REQUIRED, + ; but MUST NOT occur more than once. + ; + action / description / trigger / + ; + ; 'duration' and 'repeat' are both OPTIONAL, + ; and MUST NOT occur more than once each; + ; but if one occurs, so MUST the other. + ; + duration / repeat / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + x-prop / iana-prop + ; + ) + + emailprop = *( + ; + ; The following are all REQUIRED, + ; but MUST NOT occur more than once. + ; + action / description / trigger / summary / + + + +Desruisseaux Standards Track [Page 72] + +RFC 5545 iCalendar September 2009 + + + ; + ; The following is REQUIRED, + ; and MAY occur more than once. + ; + attendee / + ; + ; 'duration' and 'repeat' are both OPTIONAL, + ; and MUST NOT occur more than once each; + ; but if one occurs, so MUST the other. + ; + duration / repeat / + ; + ; The following are OPTIONAL, + ; and MAY occur more than once. + ; + attach / x-prop / iana-prop + ; + ) + + Description: A "VALARM" calendar component is a grouping of + component properties that is a reminder or alarm for an event or a + to-do. For example, it may be used to define a reminder for a + pending event or an overdue to-do. + + The "VALARM" calendar component MUST include the "ACTION" and + "TRIGGER" properties. The "ACTION" property further constrains + the "VALARM" calendar component in the following ways: + + When the action is "AUDIO", the alarm can also include one and + only one "ATTACH" property, which MUST point to a sound resource, + which is rendered when the alarm is triggered. + + When the action is "DISPLAY", the alarm MUST also include a + "DESCRIPTION" property, which contains the text to be displayed + when the alarm is triggered. + + When the action is "EMAIL", the alarm MUST include a "DESCRIPTION" + property, which contains the text to be used as the message body, + a "SUMMARY" property, which contains the text to be used as the + message subject, and one or more "ATTENDEE" properties, which + contain the email address of attendees to receive the message. It + can also include one or more "ATTACH" properties, which are + intended to be sent as message attachments. When the alarm is + triggered, the email message is sent. + + The "VALARM" calendar component MUST only appear within either a + "VEVENT" or "VTODO" calendar component. "VALARM" calendar + components cannot be nested. Multiple mutually independent + + + +Desruisseaux Standards Track [Page 73] + +RFC 5545 iCalendar September 2009 + + + "VALARM" calendar components can be specified for a single + "VEVENT" or "VTODO" calendar component. + + The "TRIGGER" property specifies when the alarm will be triggered. + The "TRIGGER" property specifies a duration prior to the start of + an event or a to-do. The "TRIGGER" edge may be explicitly set to + be relative to the "START" or "END" of the event or to-do with the + "RELATED" parameter of the "TRIGGER" property. The "TRIGGER" + property value type can alternatively be set to an absolute + calendar date with UTC time. + + In an alarm set to trigger on the "START" of an event or to-do, + the "DTSTART" property MUST be present in the associated event or + to-do. In an alarm in a "VEVENT" calendar component set to + trigger on the "END" of the event, either the "DTEND" property + MUST be present, or the "DTSTART" and "DURATION" properties MUST + both be present. In an alarm in a "VTODO" calendar component set + to trigger on the "END" of the to-do, either the "DUE" property + MUST be present, or the "DTSTART" and "DURATION" properties MUST + both be present. + + The alarm can be defined such that it triggers repeatedly. A + definition of an alarm with a repeating trigger MUST include both + the "DURATION" and "REPEAT" properties. The "DURATION" property + specifies the delay period, after which the alarm will repeat. + The "REPEAT" property specifies the number of additional + repetitions that the alarm will be triggered. This repetition + count is in addition to the initial triggering of the alarm. Both + of these properties MUST be present in order to specify a + repeating alarm. If one of these two properties is absent, then + the alarm will not repeat beyond the initial trigger. + + The "ACTION" property is used within the "VALARM" calendar + component to specify the type of action invoked when the alarm is + triggered. The "VALARM" properties provide enough information for + a specific action to be invoked. It is typically the + responsibility of a "Calendar User Agent" (CUA) to deliver the + alarm in the specified fashion. An "ACTION" property value of + AUDIO specifies an alarm that causes a sound to be played to alert + the user; DISPLAY specifies an alarm that causes a text message to + be displayed to the user; and EMAIL specifies an alarm that causes + an electronic email message to be delivered to one or more email + addresses. + + In an AUDIO alarm, if the optional "ATTACH" property is included, + it MUST specify an audio sound resource. The intention is that + the sound will be played as the alarm effect. If an "ATTACH" + property is specified that does not refer to a sound resource, or + + + +Desruisseaux Standards Track [Page 74] + +RFC 5545 iCalendar September 2009 + + + if the specified sound resource cannot be rendered (because its + format is unsupported, or because it cannot be retrieved), then + the CUA or other entity responsible for playing the sound may + choose a fallback action, such as playing a built-in default + sound, or playing no sound at all. + + In a DISPLAY alarm, the intended alarm effect is for the text + value of the "DESCRIPTION" property to be displayed to the user. + + In an EMAIL alarm, the intended alarm effect is for an email + message to be composed and delivered to all the addresses + specified by the "ATTENDEE" properties in the "VALARM" calendar + component. The "DESCRIPTION" property of the "VALARM" calendar + component MUST be used as the body text of the message, and the + "SUMMARY" property MUST be used as the subject text. Any "ATTACH" + properties in the "VALARM" calendar component SHOULD be sent as + attachments to the message. + + Note: Implementations should carefully consider whether they + accept alarm components from untrusted sources, e.g., when + importing calendar objects from external sources. One + reasonable policy is to always ignore alarm components that the + calendar user has not set herself, or at least ask for + confirmation in such a case. + + Example: The following example is for a "VALARM" calendar component + that specifies an audio alarm that will sound at a precise time + and repeat 4 more times at 15-minute intervals: + + BEGIN:VALARM + TRIGGER;VALUE=DATE-TIME:19970317T133000Z + REPEAT:4 + DURATION:PT15M + ACTION:AUDIO + ATTACH;FMTTYPE=audio/basic:ftp://example.com/pub/ + sounds/bell-01.aud + END:VALARM + + The following example is for a "VALARM" calendar component that + specifies a display alarm that will trigger 30 minutes before the + scheduled start of the event or of the to-do it is associated with + and will repeat 2 more times at 15-minute intervals: + + + + + + + + + +Desruisseaux Standards Track [Page 75] + +RFC 5545 iCalendar September 2009 + + + BEGIN:VALARM + TRIGGER:-PT30M + REPEAT:2 + DURATION:PT15M + ACTION:DISPLAY + DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. + END:VALARM + + The following example is for a "VALARM" calendar component that + specifies an email alarm that will trigger 2 days before the + scheduled due DATE-TIME of a to-do with which it is associated. + It does not repeat. The email has a subject, body, and attachment + link. + + BEGIN:VALARM + TRIGGER;RELATED=END:-P2D + ACTION:EMAIL + ATTENDEE:mailto:john_doe@example.com + SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** + DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. + ATTACH;FMTTYPE=application/msword:http://example.com/ + templates/agenda.doc + END:VALARM + +3.7. Calendar Properties + + The Calendar Properties are attributes that apply to the iCalendar + object, as a whole. These properties do not appear within a calendar + component. They SHOULD be specified after the "BEGIN:VCALENDAR" + delimiter string and prior to any calendar component. + +3.7.1. Calendar Scale + + Property Name: CALSCALE + + Purpose: This property defines the calendar scale used for the + calendar information specified in the iCalendar object. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified once in an iCalendar + object. The default value is "GREGORIAN". + + + +Desruisseaux Standards Track [Page 76] + +RFC 5545 iCalendar September 2009 + + + Description: This memo is based on the Gregorian calendar scale. + The Gregorian calendar scale is assumed if this property is not + specified in the iCalendar object. It is expected that other + calendar scales will be defined in other specifications or by + future versions of this memo. + + Format Definition: This property is defined by the following + notation: + + calscale = "CALSCALE" calparam ":" calvalue CRLF + + calparam = *(";" other-param) + + calvalue = "GREGORIAN" + + Example: The following is an example of this property: + + CALSCALE:GREGORIAN + +3.7.2. Method + + Property Name: METHOD + + Purpose: This property defines the iCalendar object method + associated with the calendar object. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified once in an iCalendar + object. + + Description: When used in a MIME message entity, the value of this + property MUST be the same as the Content-Type "method" parameter + value. If either the "METHOD" property or the Content-Type + "method" parameter is specified, then the other MUST also be + specified. + + No methods are defined by this specification. This is the subject + of other specifications, such as the iCalendar Transport- + independent Interoperability Protocol (iTIP) defined by [2446bis]. + + If this property is not present in the iCalendar object, then a + scheduling transaction MUST NOT be assumed. In such cases, the + iCalendar object is merely being used to transport a snapshot of + + + + +Desruisseaux Standards Track [Page 77] + +RFC 5545 iCalendar September 2009 + + + some calendar information; without the intention of conveying a + scheduling semantic. + + Format Definition: This property is defined by the following + notation: + + method = "METHOD" metparam ":" metvalue CRLF + + metparam = *(";" other-param) + + metvalue = iana-token + + Example: The following is a hypothetical example of this property to + convey that the iCalendar object is a scheduling request: + + METHOD:REQUEST + +3.7.3. Product Identifier + + Property Name: PRODID + + Purpose: This property specifies the identifier for the product that + created the iCalendar object. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: The property MUST be specified once in an iCalendar + object. + + Description: The vendor of the implementation SHOULD assure that + this is a globally unique identifier; using some technique such as + an FPI value, as defined in [ISO.9070.1991]. + + 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. + + Format Definition: This property is defined by the following + notation: + + prodid = "PRODID" pidparam ":" pidvalue CRLF + + pidparam = *(";" other-param) + + + + +Desruisseaux Standards Track [Page 78] + +RFC 5545 iCalendar September 2009 + + + pidvalue = text + ;Any text that describes the product and version + ;and that is generally assured of being unique. + + Example: The following is an example of this property. It does not + imply that English is the default language. + + PRODID:-//ABC Corporation//NONSGML My Product//EN + +3.7.4. Version + + Property Name: VERSION + + Purpose: This property specifies the identifier corresponding to the + highest version number or the minimum and maximum range of the + iCalendar specification that is required in order to interpret the + iCalendar object. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property MUST be specified once in an iCalendar + object. + + Description: A value of "2.0" corresponds to this memo. + + Format Definition: This property is defined by the following + notation: + + version = "VERSION" verparam ":" vervalue CRLF + + verparam = *(";" other-param) + + vervalue = "2.0" ;This memo + / maxver + / (minver ";" maxver) + + minver = <A IANA-registered iCalendar version identifier> + ;Minimum iCalendar version needed to parse the iCalendar object. + + maxver = <A IANA-registered iCalendar version identifier> + ;Maximum iCalendar version needed to parse the iCalendar object. + + + + + + + +Desruisseaux Standards Track [Page 79] + +RFC 5545 iCalendar September 2009 + + + Example: The following is an example of this property: + + VERSION:2.0 + +3.8. Component Properties + + The following properties can appear within calendar components, as + specified by each component property definition. + +3.8.1. Descriptive Component Properties + + The following properties specify descriptive information about + calendar components. + +3.8.1.1. Attachment + + Property Name: ATTACH + + Purpose: This property provides the capability to associate a + document object with a calendar component. + + Value Type: The default value type for this property is URI. The + value type can also be set to BINARY to indicate inline binary + encoded content information. + + Property Parameters: IANA, non-standard, inline encoding, and value + data type property parameters can be specified on this property. + The format type parameter can be specified on this property and is + RECOMMENDED for inline binary encoded content information. + + Conformance: This property can be specified multiple times in a + "VEVENT", "VTODO", "VJOURNAL", or "VALARM" calendar component with + the exception of AUDIO alarm that only allows this property to + occur once. + + Description: This property is used in "VEVENT", "VTODO", and + "VJOURNAL" calendar components to associate a resource (e.g., + document) with the calendar component. This property is used in + "VALARM" calendar components to specify an audio sound resource or + an email message attachment. This property can be specified as a + URI pointing to a resource or as inline binary encoded content. + + When this property is specified as inline binary encoded content, + calendar applications MAY attempt to guess the media type of the + resource via inspection of its content if and only if the media + type of the resource is not given by the "FMTTYPE" parameter. If + the media type remains unknown, calendar applications SHOULD treat + it as type "application/octet-stream". + + + +Desruisseaux Standards Track [Page 80] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + attach = "ATTACH" attachparam ( ":" uri ) / + ( + ";" "ENCODING" "=" "BASE64" + ";" "VALUE" "=" "BINARY" + ":" binary + ) + CRLF + + attachparam = *( + ; + ; The following is OPTIONAL for a URI value, + ; RECOMMENDED for a BINARY value, + ; and MUST NOT occur more than once. + ; + (";" fmttypeparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following are examples of this property: + + ATTACH:CID:jsmith.part3.960817T083000.xyzMail@example.com + + ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/ + reports/r-960812.ps + +3.8.1.2. Categories + + Property Name: CATEGORIES + + Purpose: This property defines the categories for a calendar + component. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, and language property + parameters can be specified on this property. + + Conformance: The property can be specified within "VEVENT", "VTODO", + or "VJOURNAL" calendar components. + + + + +Desruisseaux Standards Track [Page 81] + +RFC 5545 iCalendar September 2009 + + + Description: This property is used to specify categories or subtypes + of the calendar component. The categories are useful in searching + for a calendar component of a particular type and category. + Within the "VEVENT", "VTODO", or "VJOURNAL" calendar components, + more than one category can be specified as a COMMA-separated list + of categories. + + Format Definition: This property is defined by the following + notation: + + categories = "CATEGORIES" catparam ":" text *("," text) + CRLF + + catparam = *( + ; + ; The following is OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" languageparam ) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following are examples of this property: + + CATEGORIES:APPOINTMENT,EDUCATION + + CATEGORIES:MEETING + +3.8.1.3. Classification + + Property Name: CLASS + + Purpose: This property defines the access classification for a + calendar component. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: The property can be specified once in a "VEVENT", + "VTODO", or "VJOURNAL" calendar components. + + + + +Desruisseaux Standards Track [Page 82] + +RFC 5545 iCalendar September 2009 + + + Description: An access classification is only one component of the + general security system within a calendar application. It + provides a method of capturing the scope of the access the + calendar owner intends for information within an individual + calendar entry. The access classification of an individual + iCalendar component is useful when measured along with the other + security components of a calendar system (e.g., calendar user + authentication, authorization, access rights, access role, etc.). + Hence, the semantics of the individual access classifications + cannot be completely defined by this memo alone. Additionally, + due to the "blind" nature of most exchange processes using this + memo, these access classifications cannot serve as an enforcement + statement for a system receiving an iCalendar object. Rather, + they provide a method for capturing the intention of the calendar + owner for the access to the calendar component. If not specified + in a component that allows this property, the default value is + PUBLIC. Applications MUST treat x-name and iana-token values they + don't recognize the same way as they would the PRIVATE value. + + Format Definition: This property is defined by the following + notation: + + class = "CLASS" classparam ":" classvalue CRLF + + classparam = *(";" other-param) + + classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token + / x-name + ;Default is PUBLIC + + Example: The following is an example of this property: + + CLASS:PUBLIC + +3.8.1.4. Comment + + Property Name: COMMENT + + Purpose: This property specifies non-processing information intended + to provide a comment to the calendar user. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, alternate text + representation, and language property parameters can be specified + on this property. + + + + + +Desruisseaux Standards Track [Page 83] + +RFC 5545 iCalendar September 2009 + + + Conformance: This property can be specified multiple times in + "VEVENT", "VTODO", "VJOURNAL", and "VFREEBUSY" calendar components + as well as in the "STANDARD" and "DAYLIGHT" sub-components. + + Description: This property is used to specify a comment to the + calendar user. + + Format Definition: This property is defined by the following + notation: + + comment = "COMMENT" commparam ":" text CRLF + + commparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" altrepparam) / (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following is an example of this property: + + COMMENT:The meeting really needs to include both ourselves + and the customer. We can't hold this meeting without them. + As a matter of fact\, the venue for the meeting ought to be at + their site. - - John + +3.8.1.5. Description + + Property Name: DESCRIPTION + + Purpose: This property provides a more complete description of the + calendar component than that provided by the "SUMMARY" property. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, alternate text + representation, and language property parameters can be specified + on this property. + + + + + + +Desruisseaux Standards Track [Page 84] + +RFC 5545 iCalendar September 2009 + + + Conformance: The property can be specified in the "VEVENT", "VTODO", + "VJOURNAL", or "VALARM" calendar components. The property can be + specified multiple times only within a "VJOURNAL" calendar + component. + + Description: This property is used in the "VEVENT" and "VTODO" to + capture lengthy textual descriptions associated with the activity. + + This property is used in the "VJOURNAL" calendar component to + capture one or more textual journal entries. + + This property is used in the "VALARM" calendar component to + capture the display text for a DISPLAY category of alarm, and to + capture the body text for an EMAIL category of alarm. + + Format Definition: This property is defined by the following + notation: + + description = "DESCRIPTION" descparam ":" text CRLF + + descparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" altrepparam) / (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following is an example of this property with formatted + line breaks in the property value: + + DESCRIPTION:Meeting to provide technical review for "Phoenix" + design.\nHappy Face Conference Room. Phoenix design team + MUST attend this meeting.\nRSVP to team leader. + +3.8.1.6. Geographic Position + + Property Name: GEO + + Purpose: This property specifies information related to the global + position for the activity specified by a calendar component. + + + + +Desruisseaux Standards Track [Page 85] + +RFC 5545 iCalendar September 2009 + + + Value Type: FLOAT. The value MUST be two SEMICOLON-separated FLOAT + values. + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified in "VEVENT" or "VTODO" + calendar components. + + Description: This property value specifies latitude and longitude, + in that order (i.e., "LAT LON" ordering). The longitude + represents the location east or west of the prime meridian as a + positive or negative real number, respectively. The longitude and + latitude values MAY be specified up to six decimal places, which + will allow for accuracy to within one meter of geographical + position. Receiving applications MUST accept values of this + precision and MAY truncate values of greater precision. + + Values for latitude and longitude shall be expressed as decimal + fractions of degrees. Whole degrees of latitude shall be + represented by a two-digit decimal number ranging from 0 through + 90. Whole degrees of longitude shall be represented by a decimal + number ranging from 0 through 180. When a decimal fraction of a + degree is specified, it shall be separated from the whole number + of degrees by a decimal point. + + Latitudes north of the equator shall be specified by a plus sign + (+), or by the absence of a minus sign (-), preceding the digits + designating degrees. Latitudes south of the Equator shall be + designated by a minus sign (-) preceding the digits designating + degrees. A point on the Equator shall be assigned to the Northern + Hemisphere. + + Longitudes east of the prime meridian shall be specified by a plus + sign (+), or by the absence of a minus sign (-), preceding the + digits designating degrees. Longitudes west of the meridian shall + be designated by minus sign (-) preceding the digits designating + degrees. A point on the prime meridian shall be assigned to the + Eastern Hemisphere. A point on the 180th meridian shall be + assigned to the Western Hemisphere. One exception to this last + convention is permitted. For the special condition of describing + a band of latitude around the earth, the East Bounding Coordinate + data element shall be assigned the value +180 (180) degrees. + + Any spatial address with a latitude of +90 (90) or -90 degrees + will specify the position at the North or South Pole, + respectively. The component for longitude may have any legal + value. + + + +Desruisseaux Standards Track [Page 86] + +RFC 5545 iCalendar September 2009 + + + With the exception of the special condition described above, this + form is specified in [ANSI INCITS 61-1986]. + + The simple formula for converting degrees-minutes-seconds into + decimal degrees is: + + decimal = degrees + minutes/60 + seconds/3600. + + Format Definition: This property is defined by the following + notation: + + geo = "GEO" geoparam ":" geovalue CRLF + + geoparam = *(";" other-param) + + geovalue = float ";" float + ;Latitude and Longitude components + + Example: The following is an example of this property: + + GEO:37.386013;-122.082932 + +3.8.1.7. Location + + Property Name: LOCATION + + Purpose: This property defines the intended venue for the activity + defined by a calendar component. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, alternate text + representation, and language property parameters can be specified + on this property. + + Conformance: This property can be specified in "VEVENT" or "VTODO" + calendar component. + + Description: Specific venues such as conference or meeting rooms may + be explicitly specified using this property. An alternate + representation may be specified that is a URI that points to + directory information with more structured specification of the + location. For example, the alternate representation may specify + either an LDAP URL [RFC4516] pointing to an LDAP server entry or a + CID URL [RFC2392] pointing to a MIME body part containing a + Virtual-Information Card (vCard) [RFC2426] for the location. + + + + + +Desruisseaux Standards Track [Page 87] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + location = "LOCATION" locparam ":" text CRLF + + locparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" altrepparam) / (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following are some examples of this property: + + LOCATION:Conference Room - F123\, Bldg. 002 + + LOCATION;ALTREP="http://xyzcorp.com/conf-rooms/f123.vcf": + Conference Room - F123\, Bldg. 002 + +3.8.1.8. Percent Complete + + Property Name: PERCENT-COMPLETE + + Purpose: This property is used by an assignee or delegatee of a + to-do to convey the percent completion of a to-do to the + "Organizer". + + Value Type: INTEGER + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified once in a "VTODO" + calendar component. + + Description: The property value is a positive integer between 0 and + 100. A value of "0" indicates the to-do has not yet been started. + A value of "100" indicates that the to-do has been completed. + Integer values in between indicate the percent partially complete. + + + + + +Desruisseaux Standards Track [Page 88] + +RFC 5545 iCalendar September 2009 + + + When a to-do is assigned to multiple individuals, the property + value indicates the percent complete for that portion of the to-do + assigned to the assignee or delegatee. For example, if a to-do is + assigned to both individuals "A" and "B". A reply from "A" with a + percent complete of "70" indicates that "A" has completed 70% of + the to-do assigned to them. A reply from "B" with a percent + complete of "50" indicates "B" has completed 50% of the to-do + assigned to them. + + Format Definition: This property is defined by the following + notation: + + percent = "PERCENT-COMPLETE" pctparam ":" integer CRLF + + pctparam = *(";" other-param) + + Example: The following is an example of this property to show 39% + completion: + + PERCENT-COMPLETE:39 + +3.8.1.9. Priority + + Property Name: PRIORITY + + Purpose: This property defines the relative priority for a calendar + component. + + Value Type: INTEGER + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified in "VEVENT" and "VTODO" + calendar components. + + Description: This priority is specified as an integer in the range 0 + to 9. A value of 0 specifies an undefined priority. A value of 1 + is the highest priority. A value of 2 is the second highest + priority. Subsequent numbers specify a decreasing ordinal + priority. A value of 9 is the lowest priority. + + A CUA with a three-level priority scheme of "HIGH", "MEDIUM", and + "LOW" is mapped into this property such that a property value in + the range of 1 to 4 specifies "HIGH" priority. A value of 5 is + the normal or "MEDIUM" priority. A value in the range of 6 to 9 + is "LOW" priority. + + + + +Desruisseaux Standards Track [Page 89] + +RFC 5545 iCalendar September 2009 + + + A CUA with a priority schema of "A1", "A2", "A3", "B1", "B2", ..., + "C3" is mapped into this property such that a property value of 1 + specifies "A1", a property value of 2 specifies "A2", a property + value of 3 specifies "A3", and so forth up to a property value of + 9 specifies "C3". + + Other integer values are reserved for future use. + + Within a "VEVENT" calendar component, this property specifies a + priority for the event. This property may be useful when more + than one event is scheduled for a given time period. + + Within a "VTODO" calendar component, this property specified a + priority for the to-do. This property is useful in prioritizing + multiple action items for a given time period. + + Format Definition: This property is defined by the following + notation: + + priority = "PRIORITY" prioparam ":" priovalue CRLF + ;Default is zero (i.e., undefined). + + prioparam = *(";" other-param) + + priovalue = integer ;Must be in the range [0..9] + ; All other values are reserved for future use. + + Example: The following is an example of a property with the highest + priority: + + PRIORITY:1 + + The following is an example of a property with a next highest + priority: + + PRIORITY:2 + + The following is an example of a property with no priority. This + is equivalent to not specifying the "PRIORITY" property: + + PRIORITY:0 + + + + + + + + + + +Desruisseaux Standards Track [Page 90] + +RFC 5545 iCalendar September 2009 + + +3.8.1.10. Resources + + Property Name: RESOURCES + + Purpose: This property defines the equipment or resources + anticipated for an activity specified by a calendar component. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, alternate text + representation, and language property parameters can be specified + on this property. + + Conformance: This property can be specified once in "VEVENT" or + "VTODO" calendar component. + + Description: The property value is an arbitrary text. More than one + resource can be specified as a COMMA-separated list of resources. + + Format Definition: This property is defined by the following + notation: + + resources = "RESOURCES" resrcparam ":" text *("," text) CRLF + + resrcparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" altrepparam) / (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following is an example of this property: + + RESOURCES:EASEL,PROJECTOR,VCR + + RESOURCES;LANGUAGE=fr:Nettoyeur haute pression + + + + + + + + +Desruisseaux Standards Track [Page 91] + +RFC 5545 iCalendar September 2009 + + +3.8.1.11. Status + + Property Name: STATUS + + Purpose: This property defines the overall status or confirmation + for the calendar component. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified once in "VEVENT", + "VTODO", or "VJOURNAL" calendar components. + + Description: In a group-scheduled calendar component, the property + is used by the "Organizer" to provide a confirmation of the event + to the "Attendees". For example in a "VEVENT" calendar component, + the "Organizer" can indicate that a meeting is tentative, + confirmed, or cancelled. In a "VTODO" calendar component, the + "Organizer" can indicate that an action item needs action, is + completed, is in process or being worked on, or has been + cancelled. In a "VJOURNAL" calendar component, the "Organizer" + can indicate that a journal entry is draft, final, or has been + cancelled or removed. + + Format Definition: This property is defined by the following + notation: + + status = "STATUS" statparam ":" statvalue CRLF + + statparam = *(";" other-param) + + statvalue = (statvalue-event + / statvalue-todo + / statvalue-jour) + + statvalue-event = "TENTATIVE" ;Indicates event is tentative. + / "CONFIRMED" ;Indicates event is definite. + / "CANCELLED" ;Indicates event was cancelled. + ;Status values for a "VEVENT" + + statvalue-todo = "NEEDS-ACTION" ;Indicates to-do needs action. + / "COMPLETED" ;Indicates to-do completed. + / "IN-PROCESS" ;Indicates to-do in process of. + / "CANCELLED" ;Indicates to-do was cancelled. + ;Status values for "VTODO". + + + + +Desruisseaux Standards Track [Page 92] + +RFC 5545 iCalendar September 2009 + + + statvalue-jour = "DRAFT" ;Indicates journal is draft. + / "FINAL" ;Indicates journal is final. + / "CANCELLED" ;Indicates journal is removed. + ;Status values for "VJOURNAL". + + Example: The following is an example of this property for a "VEVENT" + calendar component: + + STATUS:TENTATIVE + + The following is an example of this property for a "VTODO" + calendar component: + + STATUS:NEEDS-ACTION + + The following is an example of this property for a "VJOURNAL" + calendar component: + + STATUS:DRAFT + +3.8.1.12. Summary + + Property Name: SUMMARY + + Purpose: This property defines a short summary or subject for the + calendar component. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, alternate text + representation, and language property parameters can be specified + on this property. + + Conformance: The property can be specified in "VEVENT", "VTODO", + "VJOURNAL", or "VALARM" calendar components. + + Description: This property is used in the "VEVENT", "VTODO", and + "VJOURNAL" calendar components to capture a short, one-line + summary about the activity or journal entry. + + This property is used in the "VALARM" calendar component to + capture the subject of an EMAIL category of alarm. + + Format Definition: This property is defined by the following + notation: + + + + + + +Desruisseaux Standards Track [Page 93] + +RFC 5545 iCalendar September 2009 + + + summary = "SUMMARY" summparam ":" text CRLF + + summparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" altrepparam) / (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following is an example of this property: + + SUMMARY:Department Party + +3.8.2. Date and Time Component Properties + + The following properties specify date and time related information in + calendar components. + +3.8.2.1. Date-Time Completed + + Property Name: COMPLETED + + Purpose: This property defines the date and time that a to-do was + actually completed. + + Value Type: DATE-TIME + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: The property can be specified in a "VTODO" calendar + component. The value MUST be specified as a date with UTC time. + + Description: This property defines the date and time that a to-do + was actually completed. + + Format Definition: This property is defined by the following + notation: + + + + + + +Desruisseaux Standards Track [Page 94] + +RFC 5545 iCalendar September 2009 + + + completed = "COMPLETED" compparam ":" date-time CRLF + + compparam = *(";" other-param) + + Example: The following is an example of this property: + + COMPLETED:19960401T150000Z + +3.8.2.2. Date-Time End + + Property Name: DTEND + + Purpose: This property specifies the date and time that a calendar + component ends. + + Value Type: The default value type is DATE-TIME. The value type can + be set to a DATE value type. + + Property Parameters: IANA, non-standard, value data type, and time + zone identifier property parameters can be specified on this + property. + + Conformance: This property can be specified in "VEVENT" or + "VFREEBUSY" calendar components. + + Description: Within the "VEVENT" calendar component, this property + defines the date and time by which the event ends. The value type + of this property MUST be the same as the "DTSTART" property, and + its value MUST be later in time than the value of the "DTSTART" + property. Furthermore, this property MUST be specified as a date + with local time if and only if the "DTSTART" property is also + specified as a date with local time. + + Within the "VFREEBUSY" calendar component, this property defines + the end date and time for the free or busy time information. The + time MUST be specified in the UTC time format. The value MUST be + later in time than the value of the "DTSTART" property. + + Format Definition: This property is defined by the following + notation: + + + + + + + + + + + +Desruisseaux Standards Track [Page 95] + +RFC 5545 iCalendar September 2009 + + + dtend = "DTEND" dtendparam ":" dtendval CRLF + + dtendparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / + (";" tzidparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + dtendval = date-time / date + ;Value MUST match value type + + Example: The following is an example of this property: + + DTEND:19960401T150000Z + + DTEND;VALUE=DATE:19980704 + +3.8.2.3. Date-Time Due + + Property Name: DUE + + Purpose: This property defines the date and time that a to-do is + expected to be completed. + + Value Type: The default value type is DATE-TIME. The value type can + be set to a DATE value type. + + Property Parameters: IANA, non-standard, value data type, and time + zone identifier property parameters can be specified on this + property. + + Conformance: The property can be specified once in a "VTODO" + calendar component. + + Description: This property defines the date and time before which a + to-do is expected to be completed. For cases where this property + is specified in a "VTODO" calendar component that also specifies a + "DTSTART" property, the value type of this property MUST be the + same as the "DTSTART" property, and the value of this property + + + +Desruisseaux Standards Track [Page 96] + +RFC 5545 iCalendar September 2009 + + + MUST be later in time than the value of the "DTSTART" property. + Furthermore, this property MUST be specified as a date with local + time if and only if the "DTSTART" property is also specified as a + date with local time. + + Format Definition: This property is defined by the following + notation: + + due = "DUE" dueparam ":" dueval CRLF + + dueparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / + (";" tzidparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + dueval = date-time / date + ;Value MUST match value type + + Example: The following is an example of this property: + + DUE:19980430T000000Z + +3.8.2.4. Date-Time Start + + Property Name: DTSTART + + Purpose: This property specifies when the calendar component begins. + + Value Type: The default value type is DATE-TIME. The time value + MUST be one of the forms defined for the DATE-TIME value type. + The value type can be set to a DATE value type. + + Property Parameters: IANA, non-standard, value data type, and time + zone identifier property parameters can be specified on this + property. + + Conformance: This property can be specified once in the "VEVENT", + "VTODO", or "VFREEBUSY" calendar components as well as in the + + + +Desruisseaux Standards Track [Page 97] + +RFC 5545 iCalendar September 2009 + + + "STANDARD" and "DAYLIGHT" sub-components. This property is + REQUIRED in all types of recurring calendar components that + specify the "RRULE" property. This property is also REQUIRED in + "VEVENT" calendar components contained in iCalendar objects that + don't specify the "METHOD" property. + + Description: Within the "VEVENT" calendar component, this property + defines the start date and time for the event. + + Within the "VFREEBUSY" calendar component, this property defines + the start date and time for the free or busy time information. + The time MUST be specified in UTC time. + + Within the "STANDARD" and "DAYLIGHT" sub-components, this property + defines the effective start date and time for a time zone + specification. This property is REQUIRED within each "STANDARD" + and "DAYLIGHT" sub-components included in "VTIMEZONE" calendar + components and MUST be specified as a date with local time without + the "TZID" property parameter. + + Format Definition: This property is defined by the following + notation: + + dtstart = "DTSTART" dtstparam ":" dtstval CRLF + + dtstparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / + (";" tzidparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + dtstval = date-time / date + ;Value MUST match value type + + Example: The following is an example of this property: + + DTSTART:19980118T073000Z + + + + + +Desruisseaux Standards Track [Page 98] + +RFC 5545 iCalendar September 2009 + + +3.8.2.5. Duration + + Property Name: DURATION + + Purpose: This property specifies a positive duration of time. + + Value Type: DURATION + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified in "VEVENT", "VTODO", or + "VALARM" calendar components. + + Description: In a "VEVENT" calendar component the property may be + used to specify a duration of the event, instead of an explicit + end DATE-TIME. In a "VTODO" calendar component the property may + be used to specify a duration for the to-do, instead of an + explicit due DATE-TIME. In a "VALARM" calendar component the + property may be used to specify the delay period prior to + repeating an alarm. When the "DURATION" property relates to a + "DTSTART" property that is specified as a DATE value, then the + "DURATION" property MUST be specified as a "dur-day" or "dur-week" + value. + + Format Definition: This property is defined by the following + notation: + + duration = "DURATION" durparam ":" dur-value CRLF + ;consisting of a positive duration of time. + + durparam = *(";" other-param) + + Example: The following is an example of this property that specifies + an interval of time of one hour and zero minutes and zero seconds: + + DURATION:PT1H0M0S + + The following is an example of this property that specifies an + interval of time of 15 minutes. + + DURATION:PT15M + + + + + + + + + +Desruisseaux Standards Track [Page 99] + +RFC 5545 iCalendar September 2009 + + +3.8.2.6. Free/Busy Time + + Property Name: FREEBUSY + + Purpose: This property defines one or more free or busy time + intervals. + + Value Type: PERIOD + + Property Parameters: IANA, non-standard, and free/busy time type + property parameters can be specified on this property. + + Conformance: The property can be specified in a "VFREEBUSY" calendar + component. + + Description: These time periods can be specified as either a start + and end DATE-TIME or a start DATE-TIME and DURATION. The date and + time MUST be a UTC time format. + + "FREEBUSY" properties within the "VFREEBUSY" calendar component + SHOULD be sorted in ascending order, based on start time and then + end time, with the earliest periods first. + + The "FREEBUSY" property can specify more than one value, separated + by the COMMA character. In such cases, the "FREEBUSY" property + values MUST all be of the same "FBTYPE" property parameter type + (e.g., all values of a particular "FBTYPE" listed together in a + single property). + + Format Definition: This property is defined by the following + notation: + + freebusy = "FREEBUSY" fbparam ":" fbvalue CRLF + + fbparam = *( + ; + ; The following is OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" fbtypeparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + + + +Desruisseaux Standards Track [Page 100] + +RFC 5545 iCalendar September 2009 + + + fbvalue = period *("," period) + ;Time value MUST be in the UTC time format. + + Example: The following are some examples of this property: + + FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:19970308T160000Z/PT8H30M + + FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H + + FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H + ,19970308T230000Z/19970309T000000Z + +3.8.2.7. Time Transparency + + Property Name: TRANSP + + Purpose: This property defines whether or not an event is + transparent to busy time searches. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified once in a "VEVENT" + calendar component. + + Description: Time Transparency is the characteristic of an event + that determines whether it appears to consume time on a calendar. + Events that consume actual time for the individual or resource + associated with the calendar SHOULD be recorded as OPAQUE, + allowing them to be detected by free/busy time searches. Other + events, which do not take up the individual's (or resource's) time + SHOULD be recorded as TRANSPARENT, making them invisible to free/ + busy time searches. + + Format Definition: This property is defined by the following + notation: + + transp = "TRANSP" transparam ":" transvalue CRLF + + transparam = *(";" other-param) + + transvalue = "OPAQUE" + ;Blocks or opaque on busy time searches. + / "TRANSPARENT" + ;Transparent on busy time searches. + ;Default value is OPAQUE + + + +Desruisseaux Standards Track [Page 101] + +RFC 5545 iCalendar September 2009 + + + Example: The following is an example of this property for an event + that is transparent or does not block on free/busy time searches: + + TRANSP:TRANSPARENT + + The following is an example of this property for an event that is + opaque or blocks on free/busy time searches: + + TRANSP:OPAQUE + +3.8.3. Time Zone Component Properties + + The following properties specify time zone information in calendar + components. + +3.8.3.1. Time Zone Identifier + + Property Name: TZID + + Purpose: This property specifies the text value that uniquely + identifies the "VTIMEZONE" calendar component in the scope of an + iCalendar object. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property MUST be specified in a "VTIMEZONE" + calendar component. + + Description: This is the label by which a time zone calendar + component is referenced by any iCalendar properties whose value + type is either DATE-TIME or TIME and not intended to specify a UTC + or a "floating" time. The presence of the SOLIDUS character as a + prefix, indicates that this "TZID" represents an unique ID in a + globally defined time zone registry (when such registry is + defined). + + Note: This document does not define a naming convention for + time zone identifiers. Implementers may want to use the naming + conventions defined in existing time zone specifications such + as the public-domain TZ database [TZDB]. The specification of + globally unique time zone identifiers is not addressed by this + document and is left for future study. + + + + + + +Desruisseaux Standards Track [Page 102] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + tzid = "TZID" tzidpropparam ":" [tzidprefix] text CRLF + + tzidpropparam = *(";" other-param) + + ;tzidprefix = "/" + ; Defined previously. Just listed here for reader convenience. + + Example: The following are examples of non-globally unique time zone + identifiers: + + TZID:America/New_York + + TZID:America/Los_Angeles + + The following is an example of a fictitious globally unique time + zone identifier: + + TZID:/example.org/America/New_York + +3.8.3.2. Time Zone Name + + Property Name: TZNAME + + Purpose: This property specifies the customary designation for a + time zone description. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, and language property + parameters can be specified on this property. + + Conformance: This property can be specified in "STANDARD" and + "DAYLIGHT" sub-components. + + Description: This property specifies a customary name that can be + used when displaying dates that occur during the observance + defined by the time zone sub-component. + + Format Definition: This property is defined by the following + notation: + + + + + + + + +Desruisseaux Standards Track [Page 103] + +RFC 5545 iCalendar September 2009 + + + tzname = "TZNAME" tznparam ":" text CRLF + + tznparam = *( + ; + ; The following is OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following are examples of this property: + + TZNAME:EST + + TZNAME;LANGUAGE=fr-CA:HNE + +3.8.3.3. Time Zone Offset From + + Property Name: TZOFFSETFROM + + Purpose: This property specifies the offset that is in use prior to + this time zone observance. + + Value Type: UTC-OFFSET + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property MUST be specified in "STANDARD" and + "DAYLIGHT" sub-components. + + Description: This property specifies the offset that is in use prior + to this time observance. It is used to calculate the absolute + time at which the transition to a given observance takes place. + This property MUST only be specified in a "VTIMEZONE" calendar + component. A "VTIMEZONE" calendar component MUST include this + property. The property value is a signed numeric indicating the + number of hours and possibly minutes from UTC. Positive numbers + represent time zones east of the prime meridian, or ahead of UTC. + Negative numbers represent time zones west of the prime meridian, + or behind UTC. + + + + +Desruisseaux Standards Track [Page 104] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + tzoffsetfrom = "TZOFFSETFROM" frmparam ":" utc-offset + CRLF + + frmparam = *(";" other-param) + + Example: The following are examples of this property: + + TZOFFSETFROM:-0500 + + TZOFFSETFROM:+1345 + +3.8.3.4. Time Zone Offset To + + Property Name: TZOFFSETTO + + Purpose: This property specifies the offset that is in use in this + time zone observance. + + Value Type: UTC-OFFSET + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property MUST be specified in "STANDARD" and + "DAYLIGHT" sub-components. + + Description: This property specifies the offset that is in use in + this time zone observance. It is used to calculate the absolute + time for the new observance. The property value is a signed + numeric indicating the number of hours and possibly minutes from + UTC. Positive numbers represent time zones east of the prime + meridian, or ahead of UTC. Negative numbers represent time zones + west of the prime meridian, or behind UTC. + + Format Definition: This property is defined by the following + notation: + + tzoffsetto = "TZOFFSETTO" toparam ":" utc-offset CRLF + + toparam = *(";" other-param) + + + + + + + + +Desruisseaux Standards Track [Page 105] + +RFC 5545 iCalendar September 2009 + + + Example: The following are examples of this property: + + TZOFFSETTO:-0400 + + TZOFFSETTO:+1245 + +3.8.3.5. Time Zone URL + + Property Name: TZURL + + Purpose: This property provides a means for a "VTIMEZONE" component + to point to a network location that can be used to retrieve an up- + to-date version of itself. + + Value Type: URI + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified in a "VTIMEZONE" + calendar component. + + Description: This property provides a means for a "VTIMEZONE" + component to point to a network location that can be used to + retrieve an up-to-date version of itself. This provides a hook to + handle changes government bodies impose upon time zone + definitions. Retrieval of this resource results in an iCalendar + object containing a single "VTIMEZONE" component and a "METHOD" + property set to PUBLISH. + + Format Definition: This property is defined by the following + notation: + + tzurl = "TZURL" tzurlparam ":" uri CRLF + + tzurlparam = *(";" other-param) + + Example: The following is an example of this property: + + TZURL:http://timezones.example.org/tz/America-Los_Angeles.ics + +3.8.4. Relationship Component Properties + + The following properties specify relationship information in calendar + components. + + + + + + +Desruisseaux Standards Track [Page 106] + +RFC 5545 iCalendar September 2009 + + +3.8.4.1. Attendee + + Property Name: ATTENDEE + + Purpose: This property defines an "Attendee" within a calendar + component. + + Value Type: CAL-ADDRESS + + Property Parameters: IANA, non-standard, language, calendar user + type, group or list membership, participation role, participation + status, RSVP expectation, delegatee, delegator, sent by, common + name, or directory entry reference property parameters can be + specified on this property. + + Conformance: This property MUST be specified in an iCalendar object + that specifies a group-scheduled calendar entity. This property + MUST NOT be specified in an iCalendar object when publishing the + calendar information (e.g., NOT in an iCalendar object that + specifies the publication of a calendar user's busy time, event, + to-do, or journal). This property is not specified in an + iCalendar object that specifies only a time zone definition or + that defines calendar components that are not group-scheduled + components, but are components only on a single user's calendar. + + Description: This property MUST only be specified within calendar + components to specify participants, non-participants, and the + chair of a group-scheduled calendar entity. The property is + specified within an "EMAIL" category of the "VALARM" calendar + component to specify an email address that is to receive the email + type of iCalendar alarm. + + 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 + + + +Desruisseaux Standards Track [Page 107] + +RFC 5545 iCalendar September 2009 + + + "LANGUAGE" property parameter is specified, the identified + language applies to the "CN" parameter. + + A recipient delegated a request MUST inherit the "RSVP" and "ROLE" + values from the attendee that delegated the request to them. + + Multiple attendees can be specified by including multiple + "ATTENDEE" properties within the calendar component. + + Format Definition: This property is defined by the following + notation: + + attendee = "ATTENDEE" attparam ":" cal-address CRLF + + attparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" cutypeparam) / (";" memberparam) / + (";" roleparam) / (";" partstatparam) / + (";" rsvpparam) / (";" deltoparam) / + (";" delfromparam) / (";" sentbyparam) / + (";" cnparam) / (";" dirparam) / + (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following are examples of this property's use for a + to-do: + + ATTENDEE;MEMBER="mailto:DEV-GROUP@example.com": + mailto:joecool@example.com + ATTENDEE;DELEGATED-FROM="mailto:immud@example.com": + mailto:ildoit@example.com + + + + + + + + + + + +Desruisseaux Standards Track [Page 108] + +RFC 5545 iCalendar September 2009 + + + The following is an example of this property used for specifying + multiple attendees to an event: + + ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CN=Henry + Cabot:mailto:hcabot@example.com + ATTENDEE;ROLE=REQ-PARTICIPANT;DELEGATED-FROM="mailto:bob@ + example.com";PARTSTAT=ACCEPTED;CN=Jane Doe:mailto:jdoe@ + example.com + + The following is an example of this property with a URI to the + directory information associated with the attendee: + + ATTENDEE;CN=John Smith;DIR="ldap://example.com:6666/o=ABC% + 20Industries,c=US???(cn=Jim%20Dolittle)":mailto:jimdo@ + example.com + + The following is an example of this property with "delegatee" and + "delegator" information for an event: + + ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;DELEGATED-FROM= + "mailto:iamboss@example.com";CN=Henry Cabot:mailto:hcabot@ + example.com + ATTENDEE;ROLE=NON-PARTICIPANT;PARTSTAT=DELEGATED;DELEGATED-TO= + "mailto:hcabot@example.com";CN=The Big Cheese:mailto:iamboss + @example.com + ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Jane Doe + :mailto:jdoe@example.com + + Example: The following is an example of this property's use when + another calendar user is acting on behalf of the "Attendee": + + ATTENDEE;SENT-BY=mailto:jan_doe@example.com;CN=John Smith: + mailto:jsmith@example.com + +3.8.4.2. Contact + + Property Name: CONTACT + + Purpose: This property is used to represent contact information or + alternately a reference to contact information associated with the + calendar component. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, alternate text + representation, and language property parameters can be specified + on this property. + + + + +Desruisseaux Standards Track [Page 109] + +RFC 5545 iCalendar September 2009 + + + Conformance: This property can be specified in a "VEVENT", "VTODO", + "VJOURNAL", or "VFREEBUSY" calendar component. + + Description: The property value consists of textual contact + information. An alternative representation for the property value + can also be specified that refers to a URI pointing to an + alternate form, such as a vCard [RFC2426], for the contact + information. + + Format Definition: This property is defined by the following + notation: + + contact = "CONTACT" contparam ":" text CRLF + + contparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" altrepparam) / (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following is an example of this property referencing + textual contact information: + + CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234 + + The following is an example of this property with an alternate + representation of an LDAP URI to a directory entry containing the + contact information: + + CONTACT;ALTREP="ldap://example.com:6666/o=ABC%20Industries\, + c=US???(cn=Jim%20Dolittle)":Jim Dolittle\, ABC Industries\, + +1-919-555-1234 + + The following is an example of this property with an alternate + representation of a MIME body part containing the contact + information, such as a vCard [RFC2426] embedded in a text/ + directory media type [RFC2425]: + + CONTACT;ALTREP="CID:part3.msg970930T083000SILVER@example.com": + Jim Dolittle\, ABC Industries\, +1-919-555-1234 + + + +Desruisseaux Standards Track [Page 110] + +RFC 5545 iCalendar September 2009 + + + The following is an example of this property referencing a network + resource, such as a vCard [RFC2426] object containing the contact + information: + + CONTACT;ALTREP="http://example.com/pdi/jdoe.vcf":Jim + Dolittle\, ABC Industries\, +1-919-555-1234 + +3.8.4.3. Organizer + + Property Name: ORGANIZER + + Purpose: This property defines the organizer for a calendar + component. + + Value Type: CAL-ADDRESS + + Property Parameters: IANA, non-standard, language, common name, + directory entry reference, and sent-by property parameters can be + specified on this property. + + Conformance: This property MUST be specified in an iCalendar object + that specifies a group-scheduled calendar entity. This property + MUST be specified in an iCalendar object that specifies the + publication of a calendar user's busy time. This property MUST + NOT be specified in an iCalendar object that specifies only a time + zone definition or that defines calendar components that are not + group-scheduled components, but are components only on a single + user's calendar. + + Description: This property is specified within the "VEVENT", + "VTODO", and "VJOURNAL" calendar components to specify the + organizer of a group-scheduled calendar entity. The property is + specified within the "VFREEBUSY" calendar component to specify the + calendar user requesting the free or busy time. When publishing a + "VFREEBUSY" calendar component, the property is used to specify + the calendar that the published busy time came from. + + The property has the property parameters "CN", for specifying the + common or display name associated with the "Organizer", "DIR", for + specifying a pointer to the directory information associated with + the "Organizer", "SENT-BY", for specifying another calendar user + that is acting on behalf of the "Organizer". The non-standard + parameters may also be specified on this property. If the + "LANGUAGE" property parameter is specified, the identified + language applies to the "CN" parameter value. + + + + + + +Desruisseaux Standards Track [Page 111] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + organizer = "ORGANIZER" orgparam ":" + cal-address CRLF + + orgparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" cnparam) / (";" dirparam) / (";" sentbyparam) / + (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + Example: The following is an example of this property: + + ORGANIZER;CN=John Smith:mailto:jsmith@example.com + + The following is an example of this property with a pointer to the + directory information associated with the organizer: + + ORGANIZER;CN=JohnSmith;DIR="ldap://example.com:6666/o=DC%20Ass + ociates,c=US???(cn=John%20Smith)":mailto:jsmith@example.com + + The following is an example of this property used by another + calendar user who is acting on behalf of the organizer, with + responses intended to be sent back to the organizer, not the other + calendar user: + + ORGANIZER;SENT-BY="mailto:jane_doe@example.com": + mailto:jsmith@example.com + +3.8.4.4. Recurrence ID + + Property Name: RECURRENCE-ID + + Purpose: This property is used in conjunction with the "UID" and + "SEQUENCE" properties to identify a specific instance of a + recurring "VEVENT", "VTODO", or "VJOURNAL" calendar component. + The property value is the original value of the "DTSTART" property + of the recurrence instance. + + + +Desruisseaux Standards Track [Page 112] + +RFC 5545 iCalendar September 2009 + + + Value Type: The default value type is DATE-TIME. The value type can + be set to a DATE value type. This property MUST have the same + value type as the "DTSTART" property contained within the + recurring component. Furthermore, this property MUST be specified + as a date with local time if and only if the "DTSTART" property + contained within the recurring component is specified as a date + with local time. + + Property Parameters: IANA, non-standard, value data type, time zone + identifier, and recurrence identifier range parameters can be + specified on this property. + + Conformance: This property can be specified in an iCalendar object + containing a recurring calendar component. + + Description: The full range of calendar components specified by a + recurrence set is referenced by referring to just the "UID" + property value corresponding to the calendar component. The + "RECURRENCE-ID" property allows the reference to an individual + instance within the recurrence set. + + If the value of the "DTSTART" property is a DATE type value, then + the value MUST be the calendar date for the recurrence instance. + + The DATE-TIME value is set to the time when the original + recurrence instance would occur; meaning that if the intent is to + change a Friday meeting to Thursday, the DATE-TIME is still set to + the original Friday meeting. + + The "RECURRENCE-ID" property is used in conjunction with the "UID" + and "SEQUENCE" properties to identify a particular instance of a + recurring event, to-do, or journal. For a given pair of "UID" and + "SEQUENCE" property values, the "RECURRENCE-ID" value for a + recurrence instance is fixed. + + The "RANGE" parameter is used to specify the effective range of + recurrence instances from the instance specified by the + "RECURRENCE-ID" property value. The value for the range parameter + can only be "THISANDFUTURE" to indicate a range defined by the + given recurrence instance and all subsequent instances. + Subsequent instances are determined by their "RECURRENCE-ID" value + and not their current scheduled start time. Subsequent instances + defined in separate components are not impacted by the given + recurrence instance. When the given recurrence instance is + rescheduled, all subsequent instances are also rescheduled by the + same time difference. For instance, if the given recurrence + instance is rescheduled to start 2 hours later, then all + subsequent instances are also rescheduled 2 hours later. + + + +Desruisseaux Standards Track [Page 113] + +RFC 5545 iCalendar September 2009 + + + Similarly, if the duration of the given recurrence instance is + modified, then all subsequence instances are also modified to have + this same duration. + + Note: The "RANGE" parameter may not be appropriate to + reschedule specific subsequent instances of complex recurring + calendar component. Assuming an unbounded recurring calendar + component scheduled to occur on Mondays and Wednesdays, the + "RANGE" parameter could not be used to reschedule only the + future Monday instances to occur on Tuesday instead. In such + cases, the calendar application could simply truncate the + unbounded recurring calendar component (i.e., with the "COUNT" + or "UNTIL" rule parts), and create two new unbounded recurring + calendar components for the future instances. + + Format Definition: This property is defined by the following + notation: + + recurid = "RECURRENCE-ID" ridparam ":" ridval CRLF + + ridparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / + (";" tzidparam) / (";" rangeparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + ridval = date-time / date + ;Value MUST match value type + + Example: The following are examples of this property: + + RECURRENCE-ID;VALUE=DATE:19960401 + + RECURRENCE-ID;RANGE=THISANDFUTURE:19960120T120000Z + + + + + + + + +Desruisseaux Standards Track [Page 114] + +RFC 5545 iCalendar September 2009 + + +3.8.4.5. Related To + + Property Name: RELATED-TO + + Purpose: This property is used to represent a relationship or + reference between one calendar component and another. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, and relationship type + property parameters can be specified on this property. + + Conformance: This property can be specified in the "VEVENT", + "VTODO", and "VJOURNAL" calendar components. + + Description: The property value consists of the persistent, globally + unique identifier of another calendar component. This value would + be represented in a calendar component by the "UID" property. + + By default, the property value points to another calendar + component that has a PARENT relationship to the referencing + object. The "RELTYPE" property parameter is used to either + explicitly state the default PARENT relationship type to the + referenced calendar component or to override the default PARENT + relationship type and specify either a CHILD or SIBLING + relationship. The PARENT relationship indicates that the calendar + component is a subordinate of the referenced calendar component. + The CHILD relationship indicates that the calendar component is a + superior of the referenced calendar component. The SIBLING + relationship indicates that the calendar component is a peer of + the referenced calendar component. + + Changes to a calendar component referenced by this property can + have an implicit impact on the related calendar component. For + example, if a group event changes its start or end date or time, + then the related, dependent events will need to have their start + and end dates changed in a corresponding way. Similarly, if a + PARENT calendar component is cancelled or deleted, then there is + an implied impact to the related CHILD calendar components. This + property is intended only to provide information on the + relationship of calendar components. It is up to the target + calendar system to maintain any property implications of this + relationship. + + + + + + + + +Desruisseaux Standards Track [Page 115] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + related = "RELATED-TO" relparam ":" text CRLF + + relparam = *( + ; + ; The following is OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" reltypeparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + The following is an example of this property: + + RELATED-TO:jsmith.part7.19960817T083000.xyzMail@example.com + + RELATED-TO:19960401-080045-4000F192713-0052@example.com + +3.8.4.6. Uniform Resource Locator + + Property Name: URL + + Purpose: This property defines a Uniform Resource Locator (URL) + associated with the iCalendar object. + + Value Type: URI + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified once in the "VEVENT", + "VTODO", "VJOURNAL", or "VFREEBUSY" calendar components. + + Description: This property may be used in a calendar component to + convey a location where a more dynamic rendition of the calendar + information associated with the calendar component can be found. + This memo does not attempt to standardize the form of the URI, nor + the format of the resource pointed to by the property value. If + the URL property and Content-Location MIME header are both + specified, they MUST point to the same resource. + + + + +Desruisseaux Standards Track [Page 116] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + url = "URL" urlparam ":" uri CRLF + + urlparam = *(";" other-param) + + Example: The following is an example of this property: + + URL:http://example.com/pub/calendars/jsmith/mytime.ics + +3.8.4.7. Unique Identifier + + Property Name: UID + + Purpose: This property defines the persistent, globally unique + identifier for the calendar component. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: The property MUST be specified in the "VEVENT", + "VTODO", "VJOURNAL", or "VFREEBUSY" calendar components. + + Description: The "UID" itself MUST be a globally unique identifier. + The generator of the identifier MUST guarantee that the identifier + is unique. There are several algorithms that can be used to + accomplish this. A good method to assure uniqueness is to put the + domain name or a domain literal IP address of the host on which + the identifier was created on the right-hand side of an "@", and + on the left-hand side, put a combination of the current calendar + date and time of day (i.e., formatted in as a DATE-TIME value) + along with some other currently unique (perhaps sequential) + identifier available on the system (for example, a process id + number). Using a DATE-TIME value on the left-hand side and a + domain name or domain literal on the right-hand side makes it + possible to guarantee uniqueness since no two hosts should be + using the same domain name or IP address at the same time. Though + other algorithms will work, it is RECOMMENDED that the right-hand + side contain some domain identifier (either of the host itself or + otherwise) such that the generator of the message identifier can + guarantee the uniqueness of the left-hand side within the scope of + that domain. + + This is the method for correlating scheduling messages with the + referenced "VEVENT", "VTODO", or "VJOURNAL" calendar component. + + + +Desruisseaux Standards Track [Page 117] + +RFC 5545 iCalendar September 2009 + + + The full range of calendar components specified by a recurrence + set is referenced by referring to just the "UID" property value + corresponding to the calendar component. The "RECURRENCE-ID" + property allows the reference to an individual instance within the + recurrence set. + + This property is an important method for group-scheduling + applications to match requests with later replies, modifications, + or deletion requests. Calendaring and scheduling applications + MUST generate this property in "VEVENT", "VTODO", and "VJOURNAL" + calendar components to assure interoperability with other group- + scheduling applications. This identifier is created by the + calendar system that generates an iCalendar object. + + Implementations MUST be able to receive and persist values of at + least 255 octets for this property, but they MUST NOT truncate + values in the middle of a UTF-8 multi-octet sequence. + + Format Definition: This property is defined by the following + notation: + + uid = "UID" uidparam ":" text CRLF + + uidparam = *(";" other-param) + + Example: The following is an example of this property: + + UID:19960401T080045Z-4000F192713-0052@example.com + +3.8.5. Recurrence Component Properties + + The following properties specify recurrence information in calendar + components. + +3.8.5.1. Exception Date-Times + + Property Name: EXDATE + + Purpose: This property defines the list of DATE-TIME exceptions for + recurring events, to-dos, journal entries, or time zone + definitions. + + Value Type: The default value type for this property is DATE-TIME. + The value type can be set to DATE. + + Property Parameters: IANA, non-standard, value data type, and time + zone identifier property parameters can be specified on this + property. + + + +Desruisseaux Standards Track [Page 118] + +RFC 5545 iCalendar September 2009 + + + Conformance: This property can be specified in recurring "VEVENT", + "VTODO", and "VJOURNAL" calendar components as well as in the + "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE" + calendar component. + + Description: The exception dates, if specified, are used in + computing the recurrence set. The recurrence set is the complete + set of recurrence instances for a calendar component. The + recurrence set is generated by considering the initial "DTSTART" + property along with the "RRULE", "RDATE", and "EXDATE" properties + contained within the recurring component. The "DTSTART" property + defines the first instance in the recurrence set. The "DTSTART" + property value SHOULD match the pattern of the recurrence rule, if + specified. The recurrence set generated with a "DTSTART" property + value that doesn't match the pattern of the rule is undefined. + The final recurrence set is generated by gathering all of the + start DATE-TIME values generated by any of the specified "RRULE" + and "RDATE" properties, and then excluding any start DATE-TIME + values specified by "EXDATE" properties. This implies that start + DATE-TIME values specified by "EXDATE" properties take precedence + over those specified by inclusion properties (i.e., "RDATE" and + "RRULE"). When duplicate instances are generated by the "RRULE" + and "RDATE" properties, only one recurrence is considered. + Duplicate instances are ignored. + + The "EXDATE" property can be used to exclude the value specified + in "DTSTART". However, in such cases, the original "DTSTART" date + MUST still be maintained by the calendaring and scheduling system + because the original "DTSTART" value has inherent usage + dependencies by other properties such as the "RECURRENCE-ID". + + Format Definition: This property is defined by the following + notation: + + + + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 119] + +RFC 5545 iCalendar September 2009 + + + exdate = "EXDATE" exdtparam ":" exdtval *("," exdtval) CRLF + + exdtparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" ("DATE-TIME" / "DATE")) / + ; + (";" tzidparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + exdtval = date-time / date + ;Value MUST match value type + + Example: The following is an example of this property: + + EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z + +3.8.5.2. Recurrence Date-Times + + Property Name: RDATE + + Purpose: This property defines the list of DATE-TIME values for + recurring events, to-dos, journal entries, or time zone + definitions. + + Value Type: The default value type for this property is DATE-TIME. + The value type can be set to DATE or PERIOD. + + Property Parameters: IANA, non-standard, value data type, and time + zone identifier property parameters can be specified on this + property. + + Conformance: This property can be specified in recurring "VEVENT", + "VTODO", and "VJOURNAL" calendar components as well as in the + "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE" + calendar component. + + Description: This property can appear along with the "RRULE" + property to define an aggregate set of repeating occurrences. + When they both appear in a recurring component, the recurrence + + + +Desruisseaux Standards Track [Page 120] + +RFC 5545 iCalendar September 2009 + + + instances are defined by the union of occurrences defined by both + the "RDATE" and "RRULE". + + The recurrence dates, if specified, are used in computing the + recurrence set. The recurrence set is the complete set of + recurrence instances for a calendar component. The recurrence set + is generated by considering the initial "DTSTART" property along + with the "RRULE", "RDATE", and "EXDATE" properties contained + within the recurring component. The "DTSTART" property defines + the first instance in the recurrence set. The "DTSTART" property + value SHOULD match the pattern of the recurrence rule, if + specified. The recurrence set generated with a "DTSTART" property + value that doesn't match the pattern of the rule is undefined. + The final recurrence set is generated by gathering all of the + start DATE-TIME values generated by any of the specified "RRULE" + and "RDATE" properties, and then excluding any start DATE-TIME + values specified by "EXDATE" properties. This implies that start + DATE-TIME values specified by "EXDATE" properties take precedence + over those specified by inclusion properties (i.e., "RDATE" and + "RRULE"). Where duplicate instances are generated by the "RRULE" + and "RDATE" properties, only one recurrence is considered. + Duplicate instances are ignored. + + Format Definition: This property is defined by the following + notation: + + rdate = "RDATE" rdtparam ":" rdtval *("," rdtval) CRLF + + rdtparam = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" ("DATE-TIME" / "DATE" / "PERIOD")) / + (";" tzidparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + rdtval = date-time / date / period + ;Value MUST match value type + + + + + + +Desruisseaux Standards Track [Page 121] + +RFC 5545 iCalendar September 2009 + + + Example: The following are examples of this property: + + RDATE:19970714T123000Z + RDATE;TZID=America/New_York:19970714T083000 + + RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z, + 19960404T010000Z/PT3H + + RDATE;VALUE=DATE:19970101,19970120,19970217,19970421 + 19970526,19970704,19970901,19971014,19971128,19971129,19971225 + +3.8.5.3. Recurrence Rule + + Property Name: RRULE + + Purpose: This property defines a rule or repeating pattern for + recurring events, to-dos, journal entries, or time zone + definitions. + + Value Type: RECUR + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified in recurring "VEVENT", + "VTODO", and "VJOURNAL" calendar components as well as in the + "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE" + calendar component, but it SHOULD NOT be specified more than once. + The recurrence set generated with multiple "RRULE" properties is + undefined. + + Description: The recurrence rule, if specified, is used in computing + the recurrence set. The recurrence set is the complete set of + recurrence instances for a calendar component. The recurrence set + is generated by considering the initial "DTSTART" property along + with the "RRULE", "RDATE", and "EXDATE" properties contained + within the recurring component. The "DTSTART" property defines + the first instance in the recurrence set. The "DTSTART" property + value SHOULD be synchronized with the recurrence rule, if + specified. The recurrence set generated with a "DTSTART" property + value not synchronized with the recurrence rule is undefined. The + final recurrence set is generated by gathering all of the start + DATE-TIME values generated by any of the specified "RRULE" and + "RDATE" properties, and then excluding any start DATE-TIME values + specified by "EXDATE" properties. This implies that start DATE- + TIME values specified by "EXDATE" properties take precedence over + those specified by inclusion properties (i.e., "RDATE" and + "RRULE"). Where duplicate instances are generated by the "RRULE" + + + +Desruisseaux Standards Track [Page 122] + +RFC 5545 iCalendar September 2009 + + + and "RDATE" properties, only one recurrence is considered. + Duplicate instances are ignored. + + The "DTSTART" property specified within the iCalendar object + defines the first instance of the recurrence. In most cases, a + "DTSTART" property of DATE-TIME value type used with a recurrence + rule, should be specified as a date with local time and time zone + reference to make sure all the recurrence instances start at the + same local time regardless of time zone changes. + + If the duration of the recurring component is specified with the + "DTEND" or "DUE" property, then the same exact duration will apply + to all the members of the generated recurrence set. Else, if the + duration of the recurring component is specified with the + "DURATION" property, then the same nominal duration will apply to + all the members of the generated recurrence set and the exact + duration of each recurrence instance will depend on its specific + start time. For example, recurrence instances of a nominal + duration of one day will have an exact duration of more or less + than 24 hours on a day where a time zone shift occurs. The + duration of a specific recurrence may be modified in an exception + component or simply by using an "RDATE" property of PERIOD value + type. + + Format Definition: This property is defined by the following + notation: + + rrule = "RRULE" rrulparam ":" recur CRLF + + rrulparam = *(";" other-param) + + Example: All examples assume the Eastern United States time zone. + + Daily for 10 occurrences: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=DAILY;COUNT=10 + + ==> (1997 9:00 AM EDT) September 2-11 + + Daily until December 24, 1997: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=DAILY;UNTIL=19971224T000000Z + + ==> (1997 9:00 AM EDT) September 2-30;October 1-25 + (1997 9:00 AM EST) October 26-31;November 1-30;December 1-23 + + + + +Desruisseaux Standards Track [Page 123] + +RFC 5545 iCalendar September 2009 + + + Every other day - forever: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=DAILY;INTERVAL=2 + + ==> (1997 9:00 AM EDT) September 2,4,6,8...24,26,28,30; + October 2,4,6...20,22,24 + (1997 9:00 AM EST) October 26,28,30; + November 1,3,5,7...25,27,29; + December 1,3,... + + Every 10 days, 5 occurrences: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5 + + ==> (1997 9:00 AM EDT) September 2,12,22; + October 2,12 + + Every day in January, for 3 years: + + DTSTART;TZID=America/New_York:19980101T090000 + + RRULE:FREQ=YEARLY;UNTIL=20000131T140000Z; + BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA + or + RRULE:FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1 + + ==> (1998 9:00 AM EST)January 1-31 + (1999 9:00 AM EST)January 1-31 + (2000 9:00 AM EST)January 1-31 + + Weekly for 10 occurrences: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=WEEKLY;COUNT=10 + + ==> (1997 9:00 AM EDT) September 2,9,16,23,30;October 7,14,21 + (1997 9:00 AM EST) October 28;November 4 + + + + + + + + + + + + +Desruisseaux Standards Track [Page 124] + +RFC 5545 iCalendar September 2009 + + + Weekly until December 24, 1997: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z + + ==> (1997 9:00 AM EDT) September 2,9,16,23,30; + October 7,14,21 + (1997 9:00 AM EST) October 28; + November 4,11,18,25; + December 2,9,16,23 + + Every other week - forever: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU + + ==> (1997 9:00 AM EDT) September 2,16,30; + October 14 + (1997 9:00 AM EST) October 28; + November 11,25; + December 9,23 + (1998 9:00 AM EST) January 6,20; + February 3, 17 + ... + + Weekly on Tuesday and Thursday for five weeks: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH + + or + + RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH + + ==> (1997 9:00 AM EDT) September 2,4,9,11,16,18,23,25,30; + October 2 + + Every other week on Monday, Wednesday, and Friday until December + 24, 1997, starting on Monday, September 1, 1997: + + DTSTART;TZID=America/New_York:19970901T090000 + RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU; + BYDAY=MO,WE,FR + + ==> (1997 9:00 AM EDT) September 1,3,5,15,17,19,29; + October 1,3,13,15,17 + (1997 9:00 AM EST) October 27,29,31; + November 10,12,14,24,26,28; + + + +Desruisseaux Standards Track [Page 125] + +RFC 5545 iCalendar September 2009 + + + December 8,10,12,22 + + Every other week on Tuesday and Thursday, for 8 occurrences: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH + + ==> (1997 9:00 AM EDT) September 2,4,16,18,30; + October 2,14,16 + + Monthly on the first Friday for 10 occurrences: + + DTSTART;TZID=America/New_York:19970905T090000 + RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR + + ==> (1997 9:00 AM EDT) September 5;October 3 + (1997 9:00 AM EST) November 7;December 5 + (1998 9:00 AM EST) January 2;February 6;March 6;April 3 + (1998 9:00 AM EDT) May 1;June 5 + + Monthly on the first Friday until December 24, 1997: + + DTSTART;TZID=America/New_York:19970905T090000 + RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR + + ==> (1997 9:00 AM EDT) September 5; October 3 + (1997 9:00 AM EST) November 7; December 5 + + Every other month on the first and last Sunday of the month for 10 + occurrences: + + DTSTART;TZID=America/New_York:19970907T090000 + RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU + + ==> (1997 9:00 AM EDT) September 7,28 + (1997 9:00 AM EST) November 2,30 + (1998 9:00 AM EST) January 4,25;March 1,29 + (1998 9:00 AM EDT) May 3,31 + + Monthly on the second-to-last Monday of the month for 6 months: + + DTSTART;TZID=America/New_York:19970922T090000 + RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO + + ==> (1997 9:00 AM EDT) September 22;October 20 + (1997 9:00 AM EST) November 17;December 22 + (1998 9:00 AM EST) January 19;February 16 + + + + +Desruisseaux Standards Track [Page 126] + +RFC 5545 iCalendar September 2009 + + + Monthly on the third-to-the-last day of the month, forever: + + DTSTART;TZID=America/New_York:19970928T090000 + RRULE:FREQ=MONTHLY;BYMONTHDAY=-3 + + ==> (1997 9:00 AM EDT) September 28 + (1997 9:00 AM EST) October 29;November 28;December 29 + (1998 9:00 AM EST) January 29;February 26 + ... + + Monthly on the 2nd and 15th of the month for 10 occurrences: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15 + + ==> (1997 9:00 AM EDT) September 2,15;October 2,15 + (1997 9:00 AM EST) November 2,15;December 2,15 + (1998 9:00 AM EST) January 2,15 + + Monthly on the first and last day of the month for 10 occurrences: + + DTSTART;TZID=America/New_York:19970930T090000 + RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1 + + ==> (1997 9:00 AM EDT) September 30;October 1 + (1997 9:00 AM EST) October 31;November 1,30;December 1,31 + (1998 9:00 AM EST) January 1,31;February 1 + + Every 18 months on the 10th thru 15th of the month for 10 + occurrences: + + DTSTART;TZID=America/New_York:19970910T090000 + RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12, + 13,14,15 + + ==> (1997 9:00 AM EDT) September 10,11,12,13,14,15 + (1999 9:00 AM EST) March 10,11,12,13 + + Every Tuesday, every other month: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU + + ==> (1997 9:00 AM EDT) September 2,9,16,23,30 + (1997 9:00 AM EST) November 4,11,18,25 + (1998 9:00 AM EST) January 6,13,20,27;March 3,10,17,24,31 + ... + + + + +Desruisseaux Standards Track [Page 127] + +RFC 5545 iCalendar September 2009 + + + Yearly in June and July for 10 occurrences: + + DTSTART;TZID=America/New_York:19970610T090000 + RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7 + + ==> (1997 9:00 AM EDT) June 10;July 10 + (1998 9:00 AM EDT) June 10;July 10 + (1999 9:00 AM EDT) June 10;July 10 + (2000 9:00 AM EDT) June 10;July 10 + (2001 9:00 AM EDT) June 10;July 10 + + Note: Since none of the BYDAY, BYMONTHDAY, or BYYEARDAY + components are specified, the day is gotten from "DTSTART". + + Every other year on January, February, and March for 10 + occurrences: + + DTSTART;TZID=America/New_York:19970310T090000 + RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3 + + ==> (1997 9:00 AM EST) March 10 + (1999 9:00 AM EST) January 10;February 10;March 10 + (2001 9:00 AM EST) January 10;February 10;March 10 + (2003 9:00 AM EST) January 10;February 10;March 10 + + Every third year on the 1st, 100th, and 200th day for 10 + occurrences: + + DTSTART;TZID=America/New_York:19970101T090000 + RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200 + + ==> (1997 9:00 AM EST) January 1 + (1997 9:00 AM EDT) April 10;July 19 + (2000 9:00 AM EST) January 1 + (2000 9:00 AM EDT) April 9;July 18 + (2003 9:00 AM EST) January 1 + (2003 9:00 AM EDT) April 10;July 19 + (2006 9:00 AM EST) January 1 + + Every 20th Monday of the year, forever: + + DTSTART;TZID=America/New_York:19970519T090000 + RRULE:FREQ=YEARLY;BYDAY=20MO + + ==> (1997 9:00 AM EDT) May 19 + (1998 9:00 AM EDT) May 18 + (1999 9:00 AM EDT) May 17 + ... + + + +Desruisseaux Standards Track [Page 128] + +RFC 5545 iCalendar September 2009 + + + Monday of week number 20 (where the default start of the week is + Monday), forever: + + DTSTART;TZID=America/New_York:19970512T090000 + RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO + + ==> (1997 9:00 AM EDT) May 12 + (1998 9:00 AM EDT) May 11 + (1999 9:00 AM EDT) May 17 + ... + + Every Thursday in March, forever: + + DTSTART;TZID=America/New_York:19970313T090000 + RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH + + ==> (1997 9:00 AM EST) March 13,20,27 + (1998 9:00 AM EST) March 5,12,19,26 + (1999 9:00 AM EST) March 4,11,18,25 + ... + + Every Thursday, but only during June, July, and August, forever: + + DTSTART;TZID=America/New_York:19970605T090000 + RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8 + + ==> (1997 9:00 AM EDT) June 5,12,19,26;July 3,10,17,24,31; + August 7,14,21,28 + (1998 9:00 AM EDT) June 4,11,18,25;July 2,9,16,23,30; + August 6,13,20,27 + (1999 9:00 AM EDT) June 3,10,17,24;July 1,8,15,22,29; + August 5,12,19,26 + ... + + Every Friday the 13th, forever: + + DTSTART;TZID=America/New_York:19970902T090000 + EXDATE;TZID=America/New_York:19970902T090000 + RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13 + + ==> (1998 9:00 AM EST) February 13;March 13;November 13 + (1999 9:00 AM EDT) August 13 + (2000 9:00 AM EDT) October 13 + ... + + + + + + + +Desruisseaux Standards Track [Page 129] + +RFC 5545 iCalendar September 2009 + + + The first Saturday that follows the first Sunday of the month, + forever: + + DTSTART;TZID=America/New_York:19970913T090000 + RRULE:FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13 + + ==> (1997 9:00 AM EDT) September 13;October 11 + (1997 9:00 AM EST) November 8;December 13 + (1998 9:00 AM EST) January 10;February 7;March 7 + (1998 9:00 AM EDT) April 11;May 9;June 13... + ... + + Every 4 years, the first Tuesday after a Monday in November, + forever (U.S. Presidential Election day): + + DTSTART;TZID=America/New_York:19961105T090000 + RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU; + BYMONTHDAY=2,3,4,5,6,7,8 + + ==> (1996 9:00 AM EST) November 5 + (2000 9:00 AM EST) November 7 + (2004 9:00 AM EST) November 2 + ... + + The third instance into the month of one of Tuesday, Wednesday, or + Thursday, for the next 3 months: + + DTSTART;TZID=America/New_York:19970904T090000 + RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3 + + ==> (1997 9:00 AM EDT) September 4;October 7 + (1997 9:00 AM EST) November 6 + + The second-to-last weekday of the month: + + DTSTART;TZID=America/New_York:19970929T090000 + RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2 + + ==> (1997 9:00 AM EDT) September 29 + (1997 9:00 AM EST) October 30;November 27;December 30 + (1998 9:00 AM EST) January 29;February 26;March 30 + ... + + + + + + + + + +Desruisseaux Standards Track [Page 130] + +RFC 5545 iCalendar September 2009 + + + Every 3 hours from 9:00 AM to 5:00 PM on a specific day: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z + + ==> (September 2, 1997 EDT) 09:00,12:00,15:00 + + Every 15 minutes for 6 occurrences: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6 + + ==> (September 2, 1997 EDT) 09:00,09:15,09:30,09:45,10:00,10:15 + + Every hour and a half for 4 occurrences: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4 + + ==> (September 2, 1997 EDT) 09:00,10:30;12:00;13:30 + + Every 20 minutes from 9:00 AM to 4:40 PM every day: + + DTSTART;TZID=America/New_York:19970902T090000 + RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40 + or + RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16 + + ==> (September 2, 1997 EDT) 9:00,9:20,9:40,10:00,10:20, + ... 16:00,16:20,16:40 + (September 3, 1997 EDT) 9:00,9:20,9:40,10:00,10:20, + ...16:00,16:20,16:40 + ... + + An example where the days generated makes a difference because of + WKST: + + DTSTART;TZID=America/New_York:19970805T090000 + RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO + + ==> (1997 EDT) August 5,10,19,24 + + changing only WKST from MO to SU, yields different results... + + DTSTART;TZID=America/New_York:19970805T090000 + RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU + + ==> (1997 EDT) August 5,17,19,31 + + + +Desruisseaux Standards Track [Page 131] + +RFC 5545 iCalendar September 2009 + + + An example where an invalid date (i.e., February 30) is ignored. + + DTSTART;TZID=America/New_York:20070115T090000 + RRULE:FREQ=MONTHLY;BYMONTHDAY=15,30;COUNT=5 + + ==> (2007 EST) January 15,30 + (2007 EST) February 15 + (2007 EDT) March 15,30 + +3.8.6. Alarm Component Properties + + The following properties specify alarm information in calendar + components. + +3.8.6.1. Action + + Property Name: ACTION + + Purpose: This property defines the action to be invoked when an + alarm is triggered. + + Value Type: TEXT + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property MUST be specified once in a "VALARM" + calendar component. + + Description: Each "VALARM" calendar component has a particular type + of action with which it is associated. This property specifies + the type of action. Applications MUST ignore alarms with x-name + and iana-token values they don't recognize. + + Format Definition: This property is defined by the following + notation: + + action = "ACTION" actionparam ":" actionvalue CRLF + + actionparam = *(";" other-param) + + + actionvalue = "AUDIO" / "DISPLAY" / "EMAIL" + / iana-token / x-name + + Example: The following are examples of this property in a "VALARM" + calendar component: + + + + +Desruisseaux Standards Track [Page 132] + +RFC 5545 iCalendar September 2009 + + + ACTION:AUDIO + + ACTION:DISPLAY + +3.8.6.2. Repeat Count + + Property Name: REPEAT + + Purpose: This property defines the number of times the alarm should + be repeated, after the initial trigger. + + Value Type: INTEGER + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified in a "VALARM" calendar + component. + + Description: This property defines the number of times an alarm + should be repeated after its initial trigger. If the alarm + triggers more than once, then this property MUST be specified + along with the "DURATION" property. + + Format Definition: This property is defined by the following + notation: + + repeat = "REPEAT" repparam ":" integer CRLF + ;Default is "0", zero. + + repparam = *(";" other-param) + + Example: The following is an example of this property for an alarm + that repeats 4 additional times with a 5-minute delay after the + initial triggering of the alarm: + + REPEAT:4 + DURATION:PT5M + +3.8.6.3. Trigger + + Property Name: TRIGGER + + Purpose: This property specifies when an alarm will trigger. + + Value Type: The default value type is DURATION. The value type can + be set to a DATE-TIME value type, in which case the value MUST + specify a UTC-formatted DATE-TIME value. + + + +Desruisseaux Standards Track [Page 133] + +RFC 5545 iCalendar September 2009 + + + Property Parameters: IANA, non-standard, value data type, time zone + identifier, or trigger relationship property parameters can be + specified on this property. The trigger relationship property + parameter MUST only be specified when the value type is + "DURATION". + + Conformance: This property MUST be specified in the "VALARM" + calendar component. + + Description: This property defines when an alarm will trigger. The + default value type is DURATION, specifying a relative time for the + trigger of the alarm. The default duration is relative to the + start of an event or to-do with which the alarm is associated. + The duration can be explicitly set to trigger from either the end + or the start of the associated event or to-do with the "RELATED" + parameter. A value of START will set the alarm to trigger off the + start of the associated event or to-do. A value of END will set + the alarm to trigger off the end of the associated event or to-do. + + Either a positive or negative duration may be specified for the + "TRIGGER" property. An alarm with a positive duration is + triggered after the associated start or end of the event or to-do. + An alarm with a negative duration is triggered before the + associated start or end of the event or to-do. + + The "RELATED" property parameter is not valid if the value type of + the property is set to DATE-TIME (i.e., for an absolute date and + time alarm trigger). If a value type of DATE-TIME is specified, + then the property value MUST be specified in the UTC time format. + If an absolute trigger is specified on an alarm for a recurring + event or to-do, then the alarm will only trigger for the specified + absolute DATE-TIME, along with any specified repeating instances. + + If the trigger is set relative to START, then the "DTSTART" + property MUST be present in the associated "VEVENT" or "VTODO" + calendar component. If an alarm is specified for an event with + the trigger set relative to the END, then the "DTEND" property or + the "DTSTART" and "DURATION " properties MUST be present in the + associated "VEVENT" calendar component. If the alarm is specified + for a to-do with a trigger set relative to the END, then either + the "DUE" property or the "DTSTART" and "DURATION " properties + MUST be present in the associated "VTODO" calendar component. + + Alarms specified in an event or to-do that is defined in terms of + a DATE value type will be triggered relative to 00:00:00 of the + user's configured time zone on the specified date, or relative to + 00:00:00 UTC on the specified date if no configured time zone can + be found for the user. For example, if "DTSTART" is a DATE value + + + +Desruisseaux Standards Track [Page 134] + +RFC 5545 iCalendar September 2009 + + + set to 19980205 then the duration trigger will be relative to + 19980205T000000 America/New_York for a user configured with the + America/New_York time zone. + + Format Definition: This property is defined by the following + notation: + + trigger = "TRIGGER" (trigrel / trigabs) CRLF + + trigrel = *( + ; + ; The following are OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" "DURATION") / + (";" trigrelparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) ":" dur-value + + trigabs = *( + ; + ; The following is REQUIRED, + ; but MUST NOT occur more than once. + ; + (";" "VALUE" "=" "DATE-TIME") / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) ":" date-time + + Example: A trigger set 15 minutes prior to the start of the event or + to-do. + + TRIGGER:-PT15M + + A trigger set five minutes after the end of an event or the due + date of a to-do. + + TRIGGER;RELATED=END:PT5M + + + + +Desruisseaux Standards Track [Page 135] + +RFC 5545 iCalendar September 2009 + + + A trigger set to an absolute DATE-TIME. + + TRIGGER;VALUE=DATE-TIME:19980101T050000Z + +3.8.7. Change Management Component Properties + + The following properties specify change management information in + calendar components. + +3.8.7.1. Date-Time Created + + Property Name: CREATED + + Purpose: This property specifies the date and time that the calendar + information was created by the calendar user agent in the calendar + store. + + Note: This is analogous to the creation date and time for a + file in the file system. + + Value Type: DATE-TIME + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: The property can be specified once in "VEVENT", + "VTODO", or "VJOURNAL" calendar components. The value MUST be + specified as a date with UTC time. + + Description: This property specifies the date and time that the + calendar information was created by the calendar user agent in the + calendar store. + + Format Definition: This property is defined by the following + notation: + + created = "CREATED" creaparam ":" date-time CRLF + + creaparam = *(";" other-param) + + Example: The following is an example of this property: + + CREATED:19960329T133000Z + + + + + + + + +Desruisseaux Standards Track [Page 136] + +RFC 5545 iCalendar September 2009 + + +3.8.7.2. Date-Time Stamp + + Property Name: DTSTAMP + + Purpose: In the case of an iCalendar object that specifies a + "METHOD" property, this property specifies the date and time that + the instance of the iCalendar object was created. In the case of + an iCalendar object that doesn't specify a "METHOD" property, this + property specifies the date and time that the information + associated with the calendar component was last revised in the + calendar store. + + Value Type: DATE-TIME + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property MUST be included in the "VEVENT", + "VTODO", "VJOURNAL", or "VFREEBUSY" calendar components. + + Description: The value MUST be specified in the UTC time format. + + This property is also useful to protocols such as [2447bis] that + have inherent latency issues with the delivery of content. This + property will assist in the proper sequencing of messages + containing iCalendar objects. + + In the case of an iCalendar object that specifies a "METHOD" + property, this property differs from the "CREATED" and "LAST- + MODIFIED" properties. These two properties are used to specify + when the particular calendar data in the calendar store was + created and last modified. This is different than when the + iCalendar object representation of the calendar service + information was created or last modified. + + In the case of an iCalendar object that doesn't specify a "METHOD" + property, this property is equivalent to the "LAST-MODIFIED" + property. + + Format Definition: This property is defined by the following + notation: + + dtstamp = "DTSTAMP" stmparam ":" date-time CRLF + + stmparam = *(";" other-param) + + + + + + +Desruisseaux Standards Track [Page 137] + +RFC 5545 iCalendar September 2009 + + + Example: + + DTSTAMP:19971210T080000Z + +3.8.7.3. Last Modified + + Property Name: LAST-MODIFIED + + Purpose: This property specifies the date and time that the + information associated with the calendar component was last + revised in the calendar store. + + Note: This is analogous to the modification date and time for a + file in the file system. + + Value Type: DATE-TIME + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + Conformance: This property can be specified in the "VEVENT", + "VTODO", "VJOURNAL", or "VTIMEZONE" calendar components. + + Description: The property value MUST be specified in the UTC time + format. + + Format Definition: This property is defined by the following + notation: + + last-mod = "LAST-MODIFIED" lstparam ":" date-time CRLF + + lstparam = *(";" other-param) + + Example: The following is an example of this property: + + LAST-MODIFIED:19960817T133000Z + +3.8.7.4. Sequence Number + + Property Name: SEQUENCE + + Purpose: This property defines the revision sequence number of the + calendar component within a sequence of revisions. + + Value Type: INTEGER + + Property Parameters: IANA and non-standard property parameters can + be specified on this property. + + + +Desruisseaux Standards Track [Page 138] + +RFC 5545 iCalendar September 2009 + + + Conformance: The property can be specified in "VEVENT", "VTODO", or + "VJOURNAL" calendar component. + + Description: When a calendar component is created, its sequence + number is 0. It is monotonically incremented by the "Organizer's" + CUA each time the "Organizer" makes a significant revision to the + calendar component. + + The "Organizer" includes this property in an iCalendar object that + it sends to an "Attendee" to specify the current version of the + calendar component. + + The "Attendee" includes this property in an iCalendar object that + it sends to the "Organizer" to specify the version of the calendar + component to which the "Attendee" is referring. + + A change to the sequence number is not the mechanism that an + "Organizer" uses to request a response from the "Attendees". The + "RSVP" parameter on the "ATTENDEE" property is used by the + "Organizer" to indicate that a response from the "Attendees" is + requested. + + Recurrence instances of a recurring component MAY have different + sequence numbers. + + Format Definition: This property is defined by the following + notation: + + seq = "SEQUENCE" seqparam ":" integer CRLF + ; Default is "0" + + seqparam = *(";" other-param) + + Example: The following is an example of this property for a calendar + component that was just created by the "Organizer": + + SEQUENCE:0 + + The following is an example of this property for a calendar + component that has been revised two different times by the + "Organizer": + + SEQUENCE:2 + +3.8.8. Miscellaneous Component Properties + + The following properties specify information about a number of + miscellaneous features of calendar components. + + + +Desruisseaux Standards Track [Page 139] + +RFC 5545 iCalendar September 2009 + + +3.8.8.1. IANA Properties + + Property Name: An IANA-registered property name + + Value Type: The default value type is TEXT. The value type can be + set to any value type. + + Property Parameters: Any parameter can be specified on this + property. + + Description: This specification allows other properties registered + with IANA to be specified in any calendar components. Compliant + applications are expected to be able to parse these other IANA- + registered properties but can ignore them. + + Format Definition: This property is defined by the following + notation: + + iana-prop = iana-token *(";" icalparameter) ":" value CRLF + + Example: The following are examples of properties that might be + registered to IANA: + + DRESSCODE:CASUAL + + NON-SMOKING;VALUE=BOOLEAN:TRUE + +3.8.8.2. Non-Standard Properties + + Property Name: Any property name with a "X-" prefix + + Purpose: This class of property provides a framework for defining + non-standard properties. + + Value Type: The default value type is TEXT. The value type can be + set to any value type. + + Property Parameters: IANA, non-standard, and language property + parameters can be specified on this property. + + Conformance: This property can be specified in any calendar + component. + + Description: The MIME Calendaring and Scheduling Content Type + provides a "standard mechanism for doing non-standard things". + This extension support is provided for implementers to "push the + envelope" on the existing version of the memo. Extension + properties are specified by property and/or property parameter + + + +Desruisseaux Standards Track [Page 140] + +RFC 5545 iCalendar September 2009 + + + names that have the prefix text of "X-" (the two-character + sequence: LATIN CAPITAL LETTER X character followed by the HYPHEN- + MINUS character). It is recommended that vendors concatenate onto + this sentinel another short prefix text to identify the vendor. + This will facilitate readability of the extensions and minimize + possible collision of names between different vendors. User + agents that support this content type are expected to be able to + parse the extension properties and property parameters but can + ignore them. + + At present, there is no registration authority for names of + extension properties and property parameters. The value type for + this property is TEXT. Optionally, the value type can be any of + the other valid value types. + + Format Definition: This property is defined by the following + notation: + + x-prop = x-name *(";" icalparameter) ":" value CRLF + + Example: The following might be the ABC vendor's extension for an + audio-clip form of subject property: + + X-ABC-MMSUBJ;VALUE=URI;FMTTYPE=audio/basic:http://www.example. + org/mysubj.au + +3.8.8.3. Request Status + + Property Name: REQUEST-STATUS + + Purpose: This property defines the status code returned for a + scheduling request. + + Value Type: TEXT + + Property Parameters: IANA, non-standard, and language property + parameters can be specified on this property. + + Conformance: The property can be specified in the "VEVENT", "VTODO", + "VJOURNAL", or "VFREEBUSY" calendar component. + + Description: This property is used to return status code information + related to the processing of an associated iCalendar object. The + value type for this property is TEXT. + + + + + + + +Desruisseaux Standards Track [Page 141] + +RFC 5545 iCalendar September 2009 + + + The value consists of a short return status component, a longer + return status description component, and optionally a status- + specific data component. The components of the value are + separated by the SEMICOLON character. + + The short return status is a PERIOD character separated pair or + 3-tuple of integers. For example, "3.1" or "3.1.1". The + successive levels of integers provide for a successive level of + status code granularity. + + The following are initial classes for the return status code. + Individual iCalendar object methods will define specific return + status codes for these classes. In addition, other classes for + the return status code may be defined using the registration + process defined later in this memo. + + +--------+----------------------------------------------------------+ + | Short | Longer Return Status Description | + | Return | | + | Status | | + | Code | | + +--------+----------------------------------------------------------+ + | 1.xx | Preliminary success. This class of status code | + | | indicates that the request has been initially processed | + | | but that completion is pending. | + | | | + | 2.xx | Successful. This class of status code indicates that | + | | the request was completed successfully. However, the | + | | exact status code can indicate that a fallback has been | + | | taken. | + | | | + | 3.xx | Client Error. This class of status code indicates that | + | | the request was not successful. The error is the result | + | | of either a syntax or a semantic error in the client- | + | | formatted request. Request should not be retried until | + | | the condition in the request is corrected. | + | | | + | 4.xx | Scheduling Error. This class of status code indicates | + | | that the request was not successful. Some sort of error | + | | occurred within the calendaring and scheduling service, | + | | not directly related to the request itself. | + +--------+----------------------------------------------------------+ + + + + + + + + + +Desruisseaux Standards Track [Page 142] + +RFC 5545 iCalendar September 2009 + + + Format Definition: This property is defined by the following + notation: + + rstatus = "REQUEST-STATUS" rstatparam ":" + statcode ";" statdesc [";" extdata] + + rstatparam = *( + ; + ; The following is OPTIONAL, + ; but MUST NOT occur more than once. + ; + (";" languageparam) / + ; + ; The following is OPTIONAL, + ; and MAY occur more than once. + ; + (";" other-param) + ; + ) + + statcode = 1*DIGIT 1*2("." 1*DIGIT) + ;Hierarchical, numeric return status code + + statdesc = text + ;Textual status description + + extdata = text + ;Textual exception data. For example, the offending property + ;name and value or complete property line. + + Example: The following are some possible examples of this property. + + The COMMA and SEMICOLON separator characters in the property value + are BACKSLASH character escaped because they appear in a text + value. + + REQUEST-STATUS:2.0;Success + + REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01 + + REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled + as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2 + + REQUEST-STATUS:4.1;Event conflict. Date-time is busy. + + REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE: + mailto:jsmith@example.com + + + + +Desruisseaux Standards Track [Page 143] + +RFC 5545 iCalendar September 2009 + + +4. iCalendar Object Examples + + The following examples are provided as an informational source of + illustrative iCalendar objects consistent with this content type. + + The following example specifies a three-day conference that begins at + 2:30 P.M. UTC, September 18, 1996 and ends at 10:00 P.M. UTC, + September 20, 1996. + + BEGIN:VCALENDAR + PRODID:-//xyz Corp//NONSGML PDA Calendar Version 1.0//EN + VERSION:2.0 + BEGIN:VEVENT + DTSTAMP:19960704T120000Z + UID:uid1@example.com + ORGANIZER:mailto:jsmith@example.com + DTSTART:19960918T143000Z + DTEND:19960920T220000Z + STATUS:CONFIRMED + CATEGORIES:CONFERENCE + SUMMARY:Networld+Interop Conference + DESCRIPTION:Networld+Interop Conference + and Exhibit\nAtlanta World Congress Center\n + Atlanta\, Georgia + END:VEVENT + END:VCALENDAR + + The following example specifies a group-scheduled meeting that begins + at 8:30 AM EST on March 12, 1998 and ends at 9:30 AM EST on March 12, + 1998. The "Organizer" has scheduled the meeting with one or more + calendar users in a group. A time zone specification for Eastern + United States has been specified. + + BEGIN:VCALENDAR + PRODID:-//RDU Software//NONSGML HandCal//EN + VERSION:2.0 + BEGIN:VTIMEZONE + TZID:America/New_York + BEGIN:STANDARD + DTSTART:19981025T020000 + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:EST + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:19990404T020000 + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + + + +Desruisseaux Standards Track [Page 144] + +RFC 5545 iCalendar September 2009 + + + TZNAME:EDT + END:DAYLIGHT + END:VTIMEZONE + BEGIN:VEVENT + DTSTAMP:19980309T231000Z + UID:guid-1.example.com + ORGANIZER:mailto:mrbig@example.com + ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + mailto:employee-A@example.com + DESCRIPTION:Project XYZ Review Meeting + CATEGORIES:MEETING + CLASS:PUBLIC + CREATED:19980309T130000Z + SUMMARY:XYZ Project Review + DTSTART;TZID=America/New_York:19980312T083000 + DTEND;TZID=America/New_York:19980312T093000 + LOCATION:1CP Conference Room 4350 + END:VEVENT + END:VCALENDAR + + The following is an example of an iCalendar object passed in a MIME + message with a single body part consisting of a "text/calendar" + Content Type. + + TO:jsmith@example.com + FROM:jdoe@example.com + MIME-VERSION:1.0 + MESSAGE-ID:<id3@example.com> + CONTENT-TYPE:text/calendar; method="xyz"; component="VEVENT" + + BEGIN:VCALENDAR + METHOD:xyz + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + DTSTAMP:19970324T120000Z + SEQUENCE:0 + UID:uid3@example.com + ORGANIZER:mailto:jdoe@example.com + ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com + DTSTART:19970324T123000Z + DTEND:19970324T210000Z + CATEGORIES:MEETING,PROJECT + CLASS:PUBLIC + SUMMARY:Calendaring Interoperability Planning Meeting + DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. + LOCATION:LDB Lobby + + + +Desruisseaux Standards Track [Page 145] + +RFC 5545 iCalendar September 2009 + + + ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/ + conf/bkgrnd.ps + END:VEVENT + END:VCALENDAR + + The following is an example of a to-do due on April 15, 1998. An + audio alarm has been specified to remind the calendar user at noon, + the day before the to-do is expected to be completed and repeat + hourly, four additional times. The to-do definition has been + modified twice since it was initially created. + + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VTODO + DTSTAMP:19980130T134500Z + SEQUENCE:2 + UID:uid4@example.com + ORGANIZER:mailto:unclesam@example.com + ATTENDEE;PARTSTAT=ACCEPTED:mailto:jqpublic@example.com + DUE:19980415T000000 + STATUS:NEEDS-ACTION + SUMMARY:Submit Income Taxes + BEGIN:VALARM + ACTION:AUDIO + TRIGGER:19980403T120000Z + ATTACH;FMTTYPE=audio/basic:http://example.com/pub/audio- + files/ssbanner.aud + REPEAT:4 + DURATION:PT1H + END:VALARM + END:VTODO + END:VCALENDAR + + The following is an example of a journal entry: + + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VJOURNAL + DTSTAMP:19970324T120000Z + UID:uid5@example.com + ORGANIZER:mailto:jsmith@example.com + STATUS:DRAFT + CLASS:PUBLIC + CATEGORIES:Project Report,XYZ,Weekly Meeting + DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + + + +Desruisseaux Standards Track [Page 146] + +RFC 5545 iCalendar September 2009 + + + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. + END:VJOURNAL + END:VCALENDAR + + The following is an example of published busy time information. The + iCalendar object might be placed in the network resource + http://www.example.com/calendar/busytime/jsmith.ifb. + + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//RDU Software//NONSGML HandCal//EN + BEGIN:VFREEBUSY + ORGANIZER:mailto:jsmith@example.com + DTSTART:19980313T141711Z + DTEND:19980410T141711Z + FREEBUSY:19980314T233000Z/19980315T003000Z + FREEBUSY:19980316T153000Z/19980316T163000Z + FREEBUSY:19980318T030000Z/19980318T040000Z + URL:http://www.example.com/calendar/busytime/jsmith.ifb + END:VFREEBUSY + END:VCALENDAR + +5. Recommended Practices + + These recommended practices should be followed in order to assure + consistent handling of the following cases for an iCalendar object. + + 1. Content lines longer than 75 octets SHOULD be folded. + + 2. When the combination of the "RRULE" and "RDATE" properties in a + recurring component produces multiple instances having the same + start DATE-TIME value, they should be collapsed to, and + considered as, a single instance. If the "RDATE" property is + specified as a PERIOD value the duration of the recurrence + instance will be the one specified by the "RDATE" property, and + not the duration of the recurrence instance defined by the + "DTSTART" property. + + 3. When a calendar user receives multiple requests for the same + calendar component (e.g., REQUEST for a "VEVENT" calendar + + + +Desruisseaux Standards Track [Page 147] + +RFC 5545 iCalendar September 2009 + + + component) as a result of being on multiple mailing lists + specified by "ATTENDEE" properties in the request, they SHOULD + respond to only one of the requests. The calendar user SHOULD + also specify (using the "MEMBER" parameter of the "ATTENDEE" + property) of which mailing list they are a member. + + 4. An implementation can truncate a "SUMMARY" property value to 255 + octets, but it MUST NOT truncate the value in the middle of a + UTF-8 multi-octet sequence. + + 5. If seconds of the minute are not supported by an implementation, + then a value of "00" SHOULD be specified for the seconds + component in a time value. + + 6. "TZURL" values SHOULD NOT be specified as a file URI type. This + URI form can be useful within an organization, but is problematic + in the Internet. + + 7. Some possible English values for "CATEGORIES" property include: + "ANNIVERSARY", "APPOINTMENT", "BUSINESS", "EDUCATION", "HOLIDAY", + "MEETING", "MISCELLANEOUS", "NON-WORKING HOURS", "NOT IN OFFICE", + "PERSONAL", "PHONE CALL", "SICK DAY", "SPECIAL OCCASION", + "TRAVEL", "VACATION". Categories can be specified in any + registered language. + + 8. Some possible English values for the "RESOURCES" property + include: "CATERING", "CHAIRS", "COMPUTER PROJECTOR", "EASEL", + "OVERHEAD PROJECTOR", "SPEAKER PHONE", "TABLE", "TV", "VCR", + "VIDEO PHONE", "VEHICLE". Resources can be specified in any + registered language. + +6. Internationalization Considerations + + Applications MUST generate iCalendar streams in the UTF-8 charset and + MUST accept an iCalendar stream in the UTF-8 or US-ASCII charset. + +7. Security Considerations + + Because calendaring and scheduling information is very privacy- + sensitive, the protocol used for the transmission of calendaring and + scheduling information should have capabilities to protect the + information from possible threats, such as eavesdropping, replay, + message insertion, deletion, modification, and man-in-the-middle + attacks. + + As this document only defines the data format and media type of text/ + calendar that is independent of any calendar service or protocol, it + is up to the actual protocol specifications such as iTIP [2446bis], + + + +Desruisseaux Standards Track [Page 148] + +RFC 5545 iCalendar September 2009 + + + iMIP [2447bis], and "Calendaring Extensions to WebDAV (CalDAV)" + [RFC4791] to describe the threats that the above attacks present, as + well as ways in which to mitigate them. + +8. IANA Considerations + +8.1. iCalendar Media Type Registration + + The Calendaring and Scheduling Core Object Specification is intended + for use as a MIME content type. + + To: ietf-types@iana.org + + Subject: Registration of media type text/calendar + + Type name: text + + Subtype name: calendar + + Required parameters: none + + Optional parameters: charset, method, component, and optinfo + + The "charset" parameter is defined in [RFC2046] for subtypes of + the "text" media type. It is used to indicate the charset used in + the body part. The charset supported by this revision of + iCalendar is UTF-8. The use of any other charset is deprecated by + this revision of iCalendar; however, note that this revision + requires that compliant applications MUST accept iCalendar streams + using either the UTF-8 or US-ASCII charset. + + The "method" parameter is used to convey the iCalendar object + method or transaction semantics for the calendaring and scheduling + information. It also is an identifier for the restricted set of + properties and values of which the iCalendar object consists. The + parameter is to be used as a guide for applications interpreting + the information contained within the body part. It SHOULD NOT be + used to exclude or require particular pieces of information unless + the identified method definition specifically calls for this + behavior. Unless specifically forbidden by a particular method + definition, a text/calendar content type can contain any set of + properties permitted by the Calendaring and Scheduling Core Object + Specification. The "method" parameter MUST be specified and MUST + be set to the same value as the "METHOD" component property of the + iCalendar objects of the iCalendar stream if and only if the + iCalendar objects in the iCalendar stream all have a "METHOD" + component property set to the same value. + + + + +Desruisseaux Standards Track [Page 149] + +RFC 5545 iCalendar September 2009 + + + The value for the "method" parameter is defined as follows: + + method = 1*(ALPHA / DIGIT / "-") + ; IANA-registered iCalendar object method + + The "component" parameter conveys the type of iCalendar calendar + component within the body part. If the iCalendar object contains + more than one calendar component type, then multiple component + parameters MUST be specified. + + The value for the "component" parameter is defined as follows: + + component = "VEVENT" + / "VTODO" + / "VJOURNAL" + / "VFREEBUSY" + / "VTIMEZONE" + / iana-token + / x-name + + The "optinfo" parameter conveys optional information about the + iCalendar object within the body part. This parameter can only + specify semantics already specified by the iCalendar object and + that can be otherwise determined by parsing the body part. In + addition, the optional information specified by this parameter + MUST be consistent with that information specified by the + iCalendar object. For example, it can be used to convey the + "Attendee" response status to a meeting request. The parameter + value consists of a string value. + + The parameter can be specified multiple times. + + The value for the "optinfo" parameter is defined as follows: + + optinfo = infovalue / qinfovalue + + infovalue = iana-token / x-name + + qinfovalue = DQUOTE (infovalue) DQUOTE + + Encoding considerations: This media type can contain 8bit + characters, so the use of quoted-printable or base64 MIME Content- + Transfer-Encodings might be necessary when iCalendar objects are + transferred across protocols restricted to the 7bit repertoire. + Note that a text valued property in the content entity can also + have content encoding of special characters using a BACKSLASH + character escapement technique. This means that content values + can end up being encoded twice. + + + +Desruisseaux Standards Track [Page 150] + +RFC 5545 iCalendar September 2009 + + + Security considerations: See Section 7. + + Interoperability considerations: This media type is intended to + define a common format for conveying calendaring and scheduling + information between different systems. It is heavily based on the + earlier [VCAL] industry specification. + + Published specification: This specification. + + Applications that use this media type: This media type is designed + for widespread use by Internet calendaring and scheduling + applications. In addition, applications in the workflow and + document management area might find this content-type applicable. + The iTIP [2446bis], iMIP [2447bis], and CalDAV [RFC4791] Internet + protocols directly use this media type also. + + Additional information: + + Magic number(s): None. + + File extension(s): The file extension of "ics" is to be used to + designate a file containing (an arbitrary set of) calendaring + and scheduling information consistent with this MIME content + type. + + The file extension of "ifb" is to be used to designate a file + containing free or busy time information consistent with this + MIME content type. + + Macintosh file type code(s): The file type code of "iCal" is to + be used in Apple MacIntosh operating system environments to + designate a file containing calendaring and scheduling + information consistent with this MIME media type. + + The file type code of "iFBf" is to be used in Apple MacIntosh + operating system environments to designate a file containing + free or busy time information consistent with this MIME media + type. + + Person & email address to contact for further information: See the + "Author's Address" section of this document. + + Intended usage: COMMON + + Restrictions on usage: There are no restrictions on where this media + type can be used. + + Author: See the "Author's Address" section of this document. + + + +Desruisseaux Standards Track [Page 151] + +RFC 5545 iCalendar September 2009 + + + Change controller: IETF + +8.2. New iCalendar Elements Registration + + This section defines the process to register new or modified + iCalendar elements, that is, components, properties, parameters, + value data types, and values, with IANA. + +8.2.1. iCalendar Elements Registration Procedure + + The IETF will create a mailing list, icalendar@ietf.org, which can be + used for public discussion of iCalendar elements proposals prior to + registration. Use of the mailing list is strongly encouraged. The + IESG will appoint a designated expert who will monitor the + icalendar@ietf.org mailing list and review registrations. + + Registration of new iCalendar elements MUST be reviewed by the + designated expert and published in an RFC. A Standards Track RFC is + REQUIRED for the registration of new value data types that modify + existing properties, as well as for the registration of participation + status values to be used in "VEVENT" calendar components. A + Standards Track RFC is also REQUIRED for registration of iCalendar + elements that modify iCalendar elements previously documented in a + Standards Track RFC. + + The registration procedure begins when a completed registration + template, defined in the sections below, is sent to + icalendar@ietf.org and iana@iana.org. The designated expert is + expected to tell IANA and the submitter of the registration within + two weeks whether the registration is approved, approved with minor + changes, or rejected with cause. When a registration is rejected + with cause, it can be re-submitted if the concerns listed in the + cause are addressed. Decisions made by the designated expert can be + appealed to the IESG Applications Area Director, then to the IESG. + They follow the normal appeals procedure for IESG decisions. + +8.2.2. Registration Template for Components + + A component is defined by completing the following template. + + Component name: The name of the component. + + Purpose: The purpose of the component. Give a short but clear + description. + + Format definition: The ABNF for the component definition needs to be + specified. + + + + +Desruisseaux Standards Track [Page 152] + +RFC 5545 iCalendar September 2009 + + + Description: Any special notes about the component, how it is to be + used, etc. + + Example(s): One or more examples of instances of the component need + to be specified. + +8.2.3. Registration Template for Properties + + A property is defined by completing the following template. + + Property name: The name of the property. + + Purpose: The purpose of the property. Give a short but clear + description. + + Value type: Any of the valid value types for the property value need + to be specified. The default value type also needs to be + specified. + + Property parameters: Any of the valid property parameters for the + property MUST be specified. + + Conformance: The calendar components in which the property can + appear MUST be specified. + + Description: Any special notes about the property, how it is to be + used, etc. + + Format definition: The ABNF for the property definition needs to be + specified. + + Example(s): One or more examples of instances of the property need + to be specified. + +8.2.4. Registration Template for Parameters + + A parameter is defined by completing the following template. + + Parameter name: The name of the parameter. + + Purpose: The purpose of the parameter. Give a short but clear + description. + + Format definition: The ABNF for the parameter definition needs to be + specified. + + Description: Any special notes about the parameter, how it is to be + used, etc. + + + +Desruisseaux Standards Track [Page 153] + +RFC 5545 iCalendar September 2009 + + + Example(s): One or more examples of instances of the parameter need + to be specified. + +8.2.5. Registration Template for Value Data Types + + A value data type is defined by completing the following template. + + Value name: The name of the value type. + + Purpose: The purpose of the value type. Give a short but clear + description. + + Format definition: The ABNF for the value type definition needs to + be specified. + + Description: Any special notes about the value type, how it is to be + used, etc. + + Example(s): One or more examples of instances of the value type need + to be specified. + +8.2.6. Registration Template for Values + + A value is defined by completing the following template. + + Value: The value literal. + + Purpose: The purpose of the value. Give a short but clear + description. + + Conformance: The calendar properties and/or parameters that can take + this value need to be specified. + + Example(s): One or more examples of instances of the value need to + be specified. + + The following is a fictitious example of a registration of an + iCalendar value: + + Value: TOP-SECRET + + Purpose: This value is used to specify the access classification of + top-secret calendar components. + + Conformance: This value can be used with the "CLASS" property. + + + + + + +Desruisseaux Standards Track [Page 154] + +RFC 5545 iCalendar September 2009 + + + Example(s): The following is an example of this value used with the + "CLASS" property: + + CLASS:TOP-SECRET + +8.3. Initial iCalendar Elements Registries + + The IANA created and maintains the following registries for iCalendar + elements with pointers to appropriate reference documents. + +8.3.1. Components Registry + + The following table has been used to initialize the components + registry. + + +-----------+---------+-------------------------+ + | Component | Status | Reference | + +-----------+---------+-------------------------+ + | VCALENDAR | Current | RFC 5545, Section 3.4 | + | | | | + | VEVENT | Current | RFC 5545, Section 3.6.1 | + | | | | + | VTODO | Current | RFC 5545, Section 3.6.2 | + | | | | + | VJOURNAL | Current | RFC 5545, Section 3.6.3 | + | | | | + | VFREEBUSY | Current | RFC 5545, Section 3.6.4 | + | | | | + | VTIMEZONE | Current | RFC 5545, Section 3.6.5 | + | | | | + | VALARM | Current | RFC 5545, Section 3.6.6 | + | | | | + | STANDARD | Current | RFC 5545, Section 3.6.5 | + | | | | + | DAYLIGHT | Current | RFC 5545, Section 3.6.5 | + +-----------+---------+-------------------------+ + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 155] + +RFC 5545 iCalendar September 2009 + + +8.3.2. Properties Registry + + The following table is has been used to initialize the properties + registry. + + +------------------+------------+----------------------------+ + | Property | Status | Reference | + +------------------+------------+----------------------------+ + | CALSCALE | Current | RFC 5545, Section 3.7.1 | + | METHOD | Current | RFC 5545, Section 3.7.2 | + | | | | + | PRODID | Current | RFC 5545, Section 3.7.3 | + | | | | + | VERSION | Current | RFC 5545, Section 3.7.4 | + | | | | + | ATTACH | Current | RFC 5545, Section 3.8.1.1 | + | | | | + | CATEGORIES | Current | RFC 5545, Section 3.8.1.2 | + | | | | + | CLASS | Current | RFC 5545, Section 3.8.1.3 | + | | | | + | COMMENT | Current | RFC 5545, Section 3.8.1.4 | + | | | | + | DESCRIPTION | Current | RFC 5545, Section 3.8.1.5 | + | | | | + | GEO | Current | RFC 5545, Section 3.8.1.6 | + | | | | + | LOCATION | Current | RFC 5545, Section 3.8.1.7 | + | | | | + | PERCENT-COMPLETE | Current | RFC 5545, Section 3.8.1.8 | + | | | | + | PRIORITY | Current | RFC 5545, Section 3.8.1.9 | + | | | | + | RESOURCES | Current | RFC 5545, Section 3.8.1.10 | + | | | | + | STATUS | Current | RFC 5545, Section 3.8.1.11 | + | | | | + | SUMMARY | Current | RFC 5545, Section 3.8.1.12 | + | | | | + | COMPLETED | Current | RFC 5545, Section 3.8.2.1 | + | | | | + | DTEND | Current | RFC 5545, Section 3.8.2.2 | + | | | | + | DUE | Current | RFC 5545, Section 3.8.2.3 | + | | | | + | DTSTART | Current | RFC 5545, Section 3.8.2.4 | + | | | | + | DURATION | Current | RFC 5545, Section 3.8.2.5 | + + + +Desruisseaux Standards Track [Page 156] + +RFC 5545 iCalendar September 2009 + + + | | | | + | FREEBUSY | Current | RFC 5545, Section 3.8.2.6 | + | | | | + | TRANSP | Current | RFC 5545, Section 3.8.2.7 | + | | | | + | TZID | Current | RFC 5545, Section 3.8.3.1 | + | | | | + | TZNAME | Current | RFC 5545, Section 3.8.3.2 | + | | | | + | TZOFFSETFROM | Current | RFC 5545, Section 3.8.3.3 | + | | | | + | TZOFFSETTO | Current | RFC 5545, Section 3.8.3.4 | + | | | | + | TZURL | Current | RFC 5545, Section 3.8.3.5 | + | | | | + | ATTENDEE | Current | RFC 5545, Section 3.8.4.1 | + | | | | + | CONTACT | Current | RFC 5545, Section 3.8.4.2 | + | | | | + | ORGANIZER | Current | RFC 5545, Section 3.8.4.3 | + | | | | + | RECURRENCE-ID | Current | RFC 5545, Section 3.8.4.4 | + | | | | + | RELATED-TO | Current | RFC 5545, Section 3.8.4.5 | + | | | | + | URL | Current | RFC 5545, Section 3.8.4.6 | + | | | | + | UID | Current | RFC 5545, Section 3.8.4.7 | + | | | | + | EXDATE | Current | RFC 5545, Section 3.8.5.1 | + | | | | + | EXRULE | Deprecated | [RFC2445], Section 4.8.5.2 | + | | | | + | RDATE | Current | RFC 5545, Section 3.8.5.2 | + | | | | + | RRULE | Current | RFC 5545, Section 3.8.5.3 | + | | | | + | ACTION | Current | RFC 5545, Section 3.8.6.1 | + | | | | + | REPEAT | Current | RFC 5545, Section 3.8.6.2 | + | | | | + | TRIGGER | Current | RFC 5545, Section 3.8.6.3 | + | | | | + | CREATED | Current | RFC 5545, Section 3.8.7.1 | + | | | | + | DTSTAMP | Current | RFC 5545, Section 3.8.7.2 | + | | | | + | LAST-MODIFIED | Current | RFC 5545, Section 3.8.7.3 | + + + +Desruisseaux Standards Track [Page 157] + +RFC 5545 iCalendar September 2009 + + + | | | | + | SEQUENCE | Current | RFC 5545, Section 3.8.7.4 | + | | | | + | REQUEST-STATUS | Current | RFC 5545, Section 3.8.8.3 | + +------------------+------------+----------------------------+ + +8.3.3. Parameters Registry + + The following table has been used to initialize the parameters + registry. + + +----------------+---------+--------------------------+ + | Parameter | Status | Reference | + +----------------+---------+--------------------------+ + | ALTREP | Current | RFC 5545, Section 3.2.1 | + | | | | + | CN | Current | RFC 5545, Section 3.2.2 | + | | | | + | CUTYPE | Current | RFC 5545, Section 3.2.3 | + | | | | + | DELEGATED-FROM | Current | RFC 5545, Section 3.2.4 | + | | | | + | DELEGATED-TO | Current | RFC 5545, Section 3.2.5 | + | | | | + | DIR | Current | RFC 5545, Section 3.2.6 | + | | | | + | ENCODING | Current | RFC 5545, Section 3.2.7 | + | | | | + | FMTTYPE | Current | RFC 5545, Section 3.2.8 | + | | | | + | FBTYPE | Current | RFC 5545, Section 3.2.9 | + | | | | + | LANGUAGE | Current | RFC 5545, Section 3.2.10 | + | | | | + | MEMBER | Current | RFC 5545, Section 3.2.11 | + | | | | + | PARTSTAT | Current | RFC 5545, Section 3.2.12 | + | | | | + | RANGE | Current | RFC 5545, Section 3.2.13 | + | | | | + | RELATED | Current | RFC 5545, Section 3.2.14 | + | | | | + | RELTYPE | Current | RFC 5545, Section 3.2.15 | + | | | | + | ROLE | Current | RFC 5545, Section 3.2.16 | + | | | | + | RSVP | Current | RFC 5545, Section 3.2.17 | + | | | | + + + +Desruisseaux Standards Track [Page 158] + +RFC 5545 iCalendar September 2009 + + + | SENT-BY | Current | RFC 5545, Section 3.2.18 | + | | | | + | TZID | Current | RFC 5545, Section 3.2.19 | + | | | | + | VALUE | Current | RFC 5545, Section 3.2.20 | + +----------------+---------+--------------------------+ + +8.3.4. Value Data Types Registry + + The following table has been used to initialize the value data types + registry. + + +-----------------+---------+--------------------------+ + | Value Data Type | Status | Reference | + +-----------------+---------+--------------------------+ + | BINARY | Current | RFC 5545, Section 3.3.1 | + | | | | + | BOOLEAN | Current | RFC 5545, Section 3.3.2 | + | | | | + | CAL-ADDRESS | Current | RFC 5545, Section 3.3.3 | + | | | | + | DATE | Current | RFC 5545, Section 3.3.4 | + | | | | + | DATE-TIME | Current | RFC 5545, Section 3.3.5 | + | | | | + | DURATION | Current | RFC 5545, Section 3.3.6 | + | | | | + | FLOAT | Current | RFC 5545, Section 3.3.7 | + | | | | + | INTEGER | Current | RFC 5545, Section 3.3.8 | + | | | | + | PERIOD | Current | RFC 5545, Section 3.3.9 | + | | | | + | RECUR | Current | RFC 5545, Section 3.3.10 | + | | | | + | TEXT | Current | RFC 5545, Section 3.3.11 | + | | | | + | TIME | Current | RFC 5545, Section 3.3.12 | + | | | | + | URI | Current | RFC 5545, Section 3.3.13 | + | | | | + | UTC-OFFSET | Current | RFC 5545, Section 3.3.14 | + +-----------------+---------+--------------------------+ + + + + + + + + +Desruisseaux Standards Track [Page 159] + +RFC 5545 iCalendar September 2009 + + +8.3.5. Calendar User Types Registry + + The following table has been used to initialize the calendar user + types registry. + + +--------------------+---------+-------------------------+ + | Calendar User Type | Status | Reference | + +--------------------+---------+-------------------------+ + | INDIVIDUAL | Current | RFC 5545, Section 3.2.3 | + | | | | + | GROUP | Current | RFC 5545, Section 3.2.3 | + | | | | + | RESOURCE | Current | RFC 5545, Section 3.2.3 | + | | | | + | ROOM | Current | RFC 5545, Section 3.2.3 | + | | | | + | UNKNOWN | Current | RFC 5545, Section 3.2.3 | + +--------------------+---------+-------------------------+ + +8.3.6. Free/Busy Time Types Registry + + The following table has been used to initialize the free/busy time + types registry. + + +---------------------+---------+-------------------------+ + | Free/Busy Time Type | Status | Reference | + +---------------------+---------+-------------------------+ + | FREE | Current | RFC 5545, Section 3.2.9 | + | | | | + | BUSY | Current | RFC 5545, Section 3.2.9 | + | | | | + | BUSY-UNAVAILABLE | Current | RFC 5545, Section 3.2.9 | + | | | | + | BUSY-TENTATIVE | Current | RFC 5545, Section 3.2.9 | + +---------------------+---------+-------------------------+ + + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 160] + +RFC 5545 iCalendar September 2009 + + +8.3.7. Participation Statuses Registry + + The following table has been used to initialize the participation + statuses registry. + + +--------------------+---------+--------------------------+ + | Participant Status | Status | Reference | + +--------------------+---------+--------------------------+ + | NEEDS-ACTION | Current | RFC 5545, Section 3.2.12 | + | | | | + | ACCEPTED | Current | RFC 5545, Section 3.2.12 | + | | | | + | DECLINED | Current | RFC 5545, Section 3.2.12 | + | | | | + | TENTATIVE | Current | RFC 5545, Section 3.2.12 | + | | | | + | DELEGATED | Current | RFC 5545, Section 3.2.12 | + | | | | + | COMPLETED | Current | RFC 5545, Section 3.2.12 | + | | | | + | IN-PROCESS | Current | RFC 5545, Section 3.2.12 | + +--------------------+---------+--------------------------+ + +8.3.8. Relationship Types Registry + + The following table has been used to initialize the relationship + types registry. + + +-------------------+---------+--------------------------+ + | Relationship Type | Status | Reference | + +-------------------+---------+--------------------------+ + | CHILD | Current | RFC 5545, Section 3.2.15 | + | | | | + | PARENT | Current | RFC 5545, Section 3.2.15 | + | | | | + | SIBLING | Current | RFC 5545, Section 3.2.15 | + +-------------------+---------+--------------------------+ + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 161] + +RFC 5545 iCalendar September 2009 + + +8.3.9. Participation Roles Registry + + The following table has been used to initialize the participation + roles registry. + + +-----------------+---------+--------------------------+ + | Role Type | Status | Reference | + +-----------------+---------+--------------------------+ + | CHAIR | Current | RFC 5545, Section 3.2.16 | + | | | | + | REQ-PARTICIPANT | Current | RFC 5545, Section 3.2.16 | + | | | | + | OPT-PARTICIPANT | Current | RFC 5545, Section 3.2.16 | + | | | | + | NON-PARTICIPANT | Current | RFC 5545, Section 3.2.16 | + +-----------------+---------+--------------------------+ + +8.3.10. Actions Registry + + The following table has been used to initialize the actions registry. + + +-----------+------------+----------------------------+ + | Action | Status | Reference | + +-----------+------------+----------------------------+ + | AUDIO | Current | RFC 5545, Section 3.8.6.1 | + | | | | + | DISPLAY | Current | RFC 5545, Section 3.8.6.1 | + | | | | + | EMAIL | Current | RFC 5545, Section 3.8.6.1 | + | | | | + | PROCEDURE | Deprecated | [RFC2445], Section 4.8.6.1 | + +-----------+------------+----------------------------+ + +8.3.11. Classifications Registry + + The following table has been used to initialize the classifications + registry. + + +----------------+---------+---------------------------+ + | Classification | Status | Reference | + +----------------+---------+---------------------------+ + | PUBLIC | Current | RFC 5545, Section 3.8.1.3 | + | | | | + | PRIVATE | Current | RFC 5545, Section 3.8.1.3 | + | | | | + | CONFIDENTIAL | Current | RFC 5545, Section 3.8.1.3 | + +----------------+---------+---------------------------+ + + + + +Desruisseaux Standards Track [Page 162] + +RFC 5545 iCalendar September 2009 + + +8.3.12. Methods Registry + + No values are defined in this document for the "METHOD" property. + +9. Acknowledgments + + The editor of this document wishes to thank Frank Dawson and Derik + Stenerson, the original authors of RFC 2445, as well as the following + individuals who have participated in the drafting, review, and + discussion of this memo: + + Joe Abley, Hervey Allen, Steve Allen, Jay Batson, Oliver Block, + Stephane Bortzmeyer, Chris Bryant, Tantek Celik, Mark Crispin, Cyrus + Daboo, Mike Douglass, Andrew N. Dowden, Lisa Dusseault, Lars Eggert, + Gren Eliot, Pasi Eronen, Ben Fortuna, Ned Freed, Neal Gafter, Ted + Hardie, Tim Hare, Jeffrey Harris, Helge Hess, Paul B. Hill, Thomas + Hnetila, Russ Housley, Leif Johansson, Ciny Joy, Bruce Kahn, Reinhold + Kainhofer, Martin Kiff, Patrice Lapierre, Michiel van Leeuwen, + Jonathan Lennox, Jeff McCullough, Bill McQuillan, Alexey Melnikov, + John W. Noerenberg II, Chuck Norris, Mark Paterson, Simon Pilette, + Arnaud Quillaud, Robert Ransdell, Julian F. Reschke, Caleb + Richardson, Sam Roberts, Dan Romascanu, Mike Samuel, George Sexton, + Nigel Swinson, Clint Talbert, Simon Vaillancourt, Magnus Westerlund, + and Sandy Wills. + + A special thanks to the working group chairs Aki Niemi and Eliot Lear + for their support and guidance. + + The editor would also like to thank the Calendaring and Scheduling + Consortium for advice with this specification, and for organizing + interoperability testing events to help refine it. + + + + + + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 163] + +RFC 5545 iCalendar September 2009 + + +10. References + +10.1. Normative References + + [ISO.8601.2004] International Organization for + Standardization, "Data elements and + interchange formats -- Information interchange + -- Representation of dates and times", 2004. + + [ISO.9070.1991] International Organization for + Standardization, "Information Technology_SGML + Support Facilities -- Registration Procedures + for Public Text Owner Identifiers, Second + Edition", April 1991. + + [RFC2045] Freed, N. and N. Borenstein, "Multipurpose + Internet Mail Extensions (MIME) Part One: + Format of Internet Message Bodies", RFC 2045, + November 1996. + + [RFC2046] Freed, N. and N. Borenstein, "Multipurpose + Internet Mail Extensions (MIME) Part Two: + Media Types", RFC 2046, November 1996. + + [RFC2119] Bradner, S., "Key words for use in RFCs to + Indicate Requirement Levels", BCP 14, + RFC 2119, March 1997. + + [RFC2368] Hoffman, P., Masinter, L., and J. Zawinski, + "The mailto URL scheme", RFC 2368, July 1998. + + [RFC3629] Yergeau, F., "UTF-8, a transformation format + of ISO 10646", STD 63, RFC 3629, + November 2003. + + [RFC3986] Berners-Lee, T., Fielding, R., and L. + Masinter, "Uniform Resource Identifier (URI): + Generic Syntax", STD 66, RFC 3986, + January 2005. + + [RFC4288] Freed, N. and J. Klensin, "Media Type + Specifications and Registration Procedures", + BCP 13, RFC 4288, December 2005. + + [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 + Data Encodings", RFC 4648, October 2006. + + + + + +Desruisseaux Standards Track [Page 164] + +RFC 5545 iCalendar September 2009 + + + [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for + Syntax Specifications: ABNF", STD 68, + RFC 5234, January 2008. + + [RFC5646] Phillips, A., Ed., and M. Davis, Ed., "Tags + for Identifying Languages", BCP 47, RFC 5646, + September 2009. + + [US-ASCII] American National Standards Institute, "Coded + Character Set - 7-bit American Standard Code + for Information Interchange", ANSI X3.4, 1986. + +10.2. Informative References + + [2446bis] Daboo, C., "iCalendar Transport-Independent + Interoperability Protocol (iTIP)", Work + in Progress, April 2009. + + [2447bis] Melnikov, A., "iCalendar Message-Based + Interoperability Protocol (iMIP)", Work + in Progress, June 2008. + + [ANSI INCITS 61-1986] International Committee for Information + Technology, "Representation of Geographic + Point Locations for Information Interchange + (formerly ANSI X3.61-1986 (R1997))", ANSI + INCITS 61-1986 (R2007), 2007. + + [RFC1738] Berners-Lee, T., Masinter, L., and M. + McCahill, "Uniform Resource Locators (URL)", + RFC 1738, December 1994. + + [RFC2392] Levinson, E., "Content-ID and Message-ID + Uniform Resource Locators", RFC 2392, + August 1998. + + [RFC2397] Masinter, L., "The "data" URL scheme", + RFC 2397, August 1998. + + [RFC2425] Howes, T., Smith, M., and F. Dawson, "A MIME + Content-Type for Directory Information", + RFC 2425, September 1998. + + [RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory + Profile", RFC 2426, September 1998. + + + + + + +Desruisseaux Standards Track [Page 165] + +RFC 5545 iCalendar September 2009 + + + [RFC2445] Dawson, F. and Stenerson, D., "Internet + Calendaring and Scheduling Core Object + Specification (iCalendar)", RFC 2445, + November 1998. + + [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, + H., Masinter, L., Leach, P., and T. Berners- + Lee, "Hypertext Transfer Protocol -- + HTTP/1.1", RFC 2616, June 1999. + + [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, + May 2000. + + [RFC4516] Smith, M. and T. Howes, "Lightweight Directory + Access Protocol (LDAP): Uniform Resource + Locator", RFC 4516, June 2006. + + [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, + "Calendaring Extensions to WebDAV (CalDAV)", + RFC 4791, March 2007. + + [TZDB] Eggert, P. and A.D. Olson, "Sources for Time + Zone and Daylight Saving Time Data", + July 2009, + <http://www.twinsun.com/tz/tz-link.htm>. + + [VCAL] Internet Mail Consortium, "vCalendar: The + Electronic Calendaring and Scheduling Exchange + Format", September 1996, + <http://www.imc.org/pdi/vcal-10.txt>. + + + + + + + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 166] + +RFC 5545 iCalendar September 2009 + + +Appendix A. Differences from RFC 2445 + + This appendix contains a list of changes that have been made in the + Internet Calendaring and Scheduling Core Object Specification from + RFC 2445. + +A.1. New Restrictions + + 1. The "DTSTART" property SHOULD be synchronized with the recurrence + rule, if specified. + + 2. The "RRULE" property SHOULD NOT occur more than once in a + component. + + 3. The BYHOUR, BYMINUTE, and BYSECOND rule parts MUST NOT be + specified in the "RRULE" property when the "DTSTART" property is + specified as a DATE value. + + 4. The value type of the "DTEND" or "DUE" properties MUST match the + value type of "DTSTART" property. + + 5. The "DURATION" property can no longer appear in "VFREEBUSY" + components. + +A.2. Restrictions Removed + + 1. The "DTSTART" and "DTEND" properties are no longer required to be + specified as date with local time and time zone reference when + used with a recurrence rule. + +A.3. Deprecated Features + + 1. The "EXRULE" property can no longer be specified in a component. + + 2. The "THISANDPRIOR" value can no longer be used with the "RANGE" + parameter. + + 3. The "PROCEDURE" value can no longer be used with the "ACTION" + property. + + 4. The value type RECUR no longer allows multiple values to be + specified by a COMMA-separated list of values. + + 5. x-name rule parts can no longer be specified in properties of + RECUR value type (e.g., "RRULE"). x-param can be used on RECUR + value type properties instead. + + + + + +Desruisseaux Standards Track [Page 167] + +RFC 5545 iCalendar September 2009 + + +Author's Address + + Bernard Desruisseaux (editor) + Oracle Corporation + 600 blvd. de Maisonneuve West + Suite 1900 + Montreal, QC H3A 3J2 + CANADA + + EMail: bernard.desruisseaux@oracle.com + URI: http://www.oracle.com/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Desruisseaux Standards Track [Page 168] + DIR diff --git a/ics2txt b/ics2txt @@ -1,5 +1,4 @@ #!/usr/bin/awk -f - # handle ical agenda and display them in plain text function leap(yrs) DIR diff --git a/ics2txt.1 b/ics2txt.1 @@ -1,5 +1,5 @@ -.Dd $Mdocdate: February 23 2018$ -.Dt AGENDA 1 +.Dd $Mdocdate: May 21 2018$ +.Dt ICS2TXT 1 .Os . . @@ -74,6 +74,16 @@ Timezone to use for printing the dates. . .Xr calendar 1 , .Xr date 1 , +.Xr txt2ics 1 +. +.Sh STANDARDS +. +.Rs +.%A Desruisseaux +.%D September 2009 +.%T Internet Calendaring and Scheduling Core Object Specification (iCalendar) +.%R RFC 5545 +.Re . . .Sh AUTHORS DIR diff --git a/txt2ics b/txt2ics @@ -0,0 +1,84 @@ +#!/usr/bin/awk -f + +function prompt(msg) +{ + if (TTY) + printf("%s", msg) >"/dev/tty"; + if (!getline str) + exit(1); + return str; +} + +function parse_date(str, tm) +{ + if (length(str) == 5) { + "date +%Y/%m/%d" | getline date + str = date " " str ; + close("date +%Y/%m/%d"); + } + + if (length(str) != 16) { + print("invalid date length") >"/dev/stderr"; + return -1; + } + + tm["yrs"] = substr(str, 1, 4); + if (! match(tm["yrs"], "^[0-9]+$")) { + print("invalid year: " tm["yrs"]) >"/dev/stderr"; + return -1; + } + + tm["mth"] = substr(str, 6, 2); + if (! match(tm["mth"], "^[0-1][0-9]$")) { + print("invalid month: " tm["mth"]) >"/dev/stderr"; + return -1; + } + + tm["day"] = substr(str, 9, 2); + if (! match(tm["day"], "^[0-3][0-9]$")) { + print("invalid day: " tm["day"]) >"/dev/stderr"; + return -1; + } + + tm["hrs"] = substr(str, 12, 2); + if (! match(tm["hrs"], "^[0-2][0-9]$")) { + print("invalid hours: " tm["hrs"]) >"/dev/stderr"; + return -1; + } + + tm["min"] = substr(str, 15, 2); + if (! match(tm["min"], "^[0-6][0-9]$")) { + print("invalid minutes: " tm["min"]) >"/dev/stderr"; + return -1; + } + + return 0; +} + +BEGIN { + TTY = !system("tty >/dev/null"); + + do beg = prompt("Start [YYYY/MM/DD HH:MM] or [HH:MM] for today: "); + while (parse_date(beg, beg_tm) == -1); + + do end = prompt("End [YYYY/MM/DD HH:MM] or [HH:MM] for same day: "); + while (parse_date(end, end_tm) == -1); + + sum = prompt("Summary: "); + cat = prompt("Category: "); + loc = prompt("Location: "); + des = prompt("Description: "); + + print("BEGIN:VEVENT"); + print("DTSTART:" \ + tm_beg["yrs"] tm_beg["mth"] tm_beg["day"] "T" \ + tm_beg["hrs"] tm_beg["min"] "00"); + print("DTEND:" \ + tm_end["yrs"] tm_end["mth"] tm_end["day"] "T" \ + tm_end["hrs"] tm_end["min"] "00"); + if (cat) print("CATEGORIES:" cat); + if (sum) print("SUMMARY:" sum); + if (des) print("DESCRIPTION:" des); + if (loc) print("LOCATION:" loc); + print("END:VEVENT"); +} DIR diff --git a/txt2ics.1 b/txt2ics.1 @@ -0,0 +1,50 @@ +.Dd $Mdocdate: May 30 2018$ +.Dt TXT2ICS 1 +.Os +. +. +.Sh NAME +. +.Nm txt2ics +.Nd convert plain text to an ics file +. +. +.Sh SYNOPSIS +. +.Nm +. +. +.Sh DESCRIPTION +. +.Nm +prompts the user for event information and print them in the iCalendar format. +If stdin is ont a TTY, it will not print the prompt string and act as a +converter tool. +. +.Pp +It uses +.Dq floating events : +If it is 12:30, it will always be 12:30 of the country he resides in: if he moves +to another time zone, it will be 12:30 of this new time zone. +See this as the time zone where the event happen. +. +. +.Sh SEE ALSO +. +.Xr calendar 1 , +.Xr date 1 , +.Xr ics2txt 1 +. +.Sh STANDARDS +. +.Rs +.%A Desruisseaux +.%D September 2009 +.%T Internet Calendaring and Scheduling Core Object Specification (iCalendar) +.%R RFC 5545 +.Re +. +. +.Sh AUTHORS +. +.An Josuah Demangeon Aq Mt mail@josuah.net