Network Working Group Frank Dawson, Lotus Internet Draft Derik Stenerson, Microsoft October 22, 1997 Expires Mary 1998 Internet Calendaring and Scheduling Core Object Specification (iCalendar) Status of this Memo This memo is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups MAY also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months. Internet-Drafts MAY be updated, replaced, or made obsolete by other documents at any time. It is not appropriate to use Internet- Drafts as reference material or to cite them other than as a "working draft" or "work in progress". To learn the current status of any Internet-Draft, please check the 1id-abstracts.txt listing contained in the Internet-Drafts Shadow Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). Distribution of this memo is unlimited. Copyright (C) The Internet Society 1997. All Rights Reserved. Abstract There is a clear need to provide and deploy interoperable calendaring and scheduling services for the Internet. Current group scheduling and Personal Information Management (PIM) products are being extended for use across the Internet, today, in proprietary ways. This memo has been defined to provide the a definition of a common format for openly exchanging calendaring and scheduling information across the Internet. This memo is formatted as a registration for a MIME media type per [RFC 2048]. However, the format in this memo is equally applicable for use outside of a MIME message content type. The proposed media type value is ''TEXT/CALENDAR''. This string would label a media type containing calendaring and scheduling information encoded as text characters formatted in a manner outlined below. This MIME media type provides a standard content type for capturing calendar event and to-do information. It also can be used to convey free/busy time information. The content type is suitable as a MIME message entity that can be transferred over MIME based email systems or using HTTP. In addition, the content type is useful as an object Dawson/Stenerson 1 Expirs MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 for interactions between desktop applications using the operating system clipboard, drag/drop or file systems capabilities. This memo is based on the earlier work of the vCalendar specification for the exchange of personal calendaring and scheduling information. In order to avoid confusion with this referenced work, this memo is to be known as the iCalendar specification. This memo is based on the calendaring and scheduling model defined in []. The document is also the basis for the calendaring and scheduling interoperability protocol defined in [ITIP]. This memo also includes the format for defining iCalendar object methods. An iCalendar object method is a set of usage constraints for the iCalendar object. For example, these methods might define scheduling messages that request an event be scheduled, reply to an event request, send a cancellation notice for an event, modify or replace the definition of an event, provide a counter proposal for an original event request, delegate an event request to another individual, request free or busy time, reply to a free or busy time request, or provide similar scheduling messages for a to-do or journal entry calendar component. Dawson/Stenerson 2 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 Table of Contents 1......................................................................7 Introduction...........................................................8 2. Basic Grammar and Conventions.......................................8 2.1 Formatting Conventions...........................................9 2.2 Related Memos...................................................10 3. TEXT/CALENDAR Registration Information.............................10 4. iCalendar Object Specification.....................................12 4.1 Content Considerations..........................................13 4.1.1 Content Lines................................................13 4.1.2 List and Field Separators....................................14 4.1.3 Multiple Values..............................................15 4.1.4 Binary Content...............................................15 4.1.5 Property Parameters..........................................15 4.1.6 Alternate Text Representation................................16 4.1.7 Character Set................................................17 4.1.8 Language.....................................................17 4.1.9 Value Data Types.............................................17 4.2 iCalendar object................................................28 4.3 Property........................................................28 4.4 Calendar Components.............................................29 4.4.1 Event Component..............................................29 4.4.2 To-do Component..............................................31 4.4.3 Journal Component............................................31 4.4.4 Free/Busy Component..........................................32 4.4.5 Alarm Component..............................................33 4.4.6 Timezone Component...........................................34 4.5 Calendar Properties.............................................38 4.5.1 Calendar Scale...............................................38 4.5.2 Method.......................................................39 4.5.3 Product Identifier...........................................39 4.5.4 Source.......................................................40 4.5.5 Source Name..................................................40 4.5.6 Version......................................................41 4.6 Component Properties............................................41 4.6.1 Attachment...................................................41 4.6.2 Attendee.....................................................42 4.6.3 Categories...................................................44 4.6.4 Classification...............................................45 4.6.5 Comment......................................................46 4.6.6 Contact......................................................46 4.6.7 Date/Time Completed..........................................47 4.6.8 Date/Time Created............................................47 4.6.9 Date/Time Due................................................47 4.6.10 Date/Time End...............................................48 4.6.11 Date/Time Stamp.............................................48 4.6.12 Date/Time Start.............................................49 4.6.13 Daylight....................................................49 4.6.14 Description.................................................50 4.6.15 Duration....................................................50 4.6.16 Exception Date/Times........................................51 4.6.17 Exception Rule..............................................52 Dawson/Stenerson 3 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 4.6.18 Free/Busy Time..............................................52 4.6.19 Geographic Position.........................................54 4.6.20 Last Modified...............................................54 4.6.21 Location....................................................54 4.6.22 Percent Complete............................................55 4.6.23 Priority....................................................56 4.6.24 Recurrence Date/Times.......................................56 4.6.25 Recurrence ID...............................................57 4.6.26 Recurrence Rule.............................................58 4.6.27 Related To..................................................65 4.6.28 Repeat Count................................................66 4.6.29 Request Status..............................................66 4.6.30 Resources...................................................68 4.6.31 Sequence Number.............................................68 4.6.32 Status......................................................69 4.6.33 Summary.....................................................70 4.6.34 Time Transparency...........................................70 4.6.35 Time Zone Name..............................................71 4.6.36 Time Zone Offset............................................71 4.6.37 Uniform Resource Locator....................................71 4.6.38 Unique Identifier...........................................72 4.6.39 Non-standard Properties.....................................73 5. Recommended Practices..............................................73 6. Registration of Content Type Elements..............................74 6.1 Registration of New and Modified iCalendar object Methods.......74 6.2 Registration of New Properties..................................74 6.2.1 Define the property..........................................74 6.2.2 Post the Property definition.................................75 6.2.3 Allow a comment period.......................................75 6.2.4 Submit the property for approval.............................75 6.3 Property Change Control.........................................76 7. File extension.....................................................76 8. Macintosh File Type Code...........................................76 9. References.........................................................76 10. Acknowledgments...................................................78 11. Copyright.........................................................78 12. Author's Address..................................................78 13. iCalendar object Examples.........................................79 14. Full Copyright Statement..........................................82 1. Dawson/Stenerson 4 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 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. However, the longer term growth of calendaring and scheduling, is currently limited by the lack of Internet standards for the message content types that are central to these groupware applications. 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 or a Group Scheduling product. The calendaring and scheduling model implemented by this memo is defined in the [ICMS]. The 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 might also be used. The definition of a calendaring and scheduling interoperability protocol is the subject of another memo [ITIP]. 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 a requesting for and replying with free/busy time data. The memo also includes a formal grammar for the content type to aid in 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. 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 interopreted as described in [RFC 2119]. This memo makes use of both a descriptive prose and a more formal notation for defining the calendaring and scheduling format. Dawson/Stenerson 5 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 The notation used in this memo is the augmented BNF notation of [RFC 822]. Readers intending on implementing this format defined in this memo should be familiar with this notation in order to properly interpret the specifications of this memo. All numeric and hexadecimal 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 that is not essential to the building of a conformant implementation of the specifications of this memo. The information is provided to highlight a particular feature or characteristic of the specifications. The format for the iCalendar object is based on the syntax of the [MIME DIR] content type. While the iCalendar object is not a profile of the [MIME DIR] content type, it does reuse a number of the elements from the [MIME DIR] specification. 2.1 Formatting Conventions The mechanisms defined in this memo are defined in propose. In order to refer to elements of the calendaring and scheduling model, core object or interoperability protocol defined in this memo, [ICMS] and [ITIP], some formatting conventions have been used. Calendaring and scheduling roles defined by [ICMS] are referred to in quoted-strings of text with the first character of each word in upper case. For example, "Organizer" refers to a role of a "Calendar User" within the scheduling protocol defined by [ITIP] Calendar components defined by this memo are referred to 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] 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, "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 lower case, quoted-strings of text, followed by the word "parameter". For example, "value" parameter refers to the iCalendar property parameter used to override the default data type for a property value. Enumerated values defined by Dawson/Stenerson 6 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 this memo are referred to with capitalized text, either alone or followed by the word "value". 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, [ICAL], specifies a core specification of objects, data types, properties and property parameters. [ICMS] - specifies a common terminology and abstract; [ITIP] - specifies an interoperability protocol for scheduling between different implementations; [IMIP] specifies an Internet email binding for [ITIP]; [IRIP] - specifies an Internet real time protocol binding for [ITIP]. 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. TEXT/CALENDAR Registration Information The Calendaring and Scheduling Core Object Specification is intended for use as a MIME content type. However, the implementation of the memo is in no way limited solely as a MIME content type. The following text is intended to register this memo as the MIME content type "text/calendar". To: ietf-types@uninett.no Subject: Registration of MIME content type text/calendar. MIME media type name: text MIME subtype name: calendar Required parameters: method The "method" parameter is used to convey the iCalendar object method to which the calendaring and scheduling information pertains. It also is an identifier for the set of properties that the iCalendar object will consist of. 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 Dawson/Stenerson 7 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 text/calendar content type MAY contain any set of properties permitted by the Calendaring and Scheduling Core Object Specification. The value for the "method" parameter is defined as follows: method = Optional parameters: charset, component The "charset" parameter is defined in [RFC 2046] for other body parts. It is used to identify the default character set used within the body part. The "component" parameter conveys the type of iCalendar calendar component within the body part. If the iCalendar object contains more than one calendar component, then the components are specified as a comma-separated list of values. The value for the "component" parameter is defined as follows: component = "VEVENT" / "VTODO" / "VJOURNAL" / "VFREEBUSY" / x-token / iana-comp x-token = iana-comp = Optional content header fields: Any header fields defined by [RFC 2045]. Encoding considerations: This MIME content type can contain 8bit characters, so the use of quoted-printable or base64 MIME content- transfer-encodings MAY be necessary when iCalendar objects are transferrred across protocols restricted to the 7bit repertoire. Note that each property in the content entity MAY also have special characters encoded using a BACKSLASH character (ASCII decimal 92) escapement technique. This means that content values MAY end up encoded twice. Security considerations: SPOOFING - - In this memo, the "Organizer" is the only person authorized to make changes to an existing "VEVENT", "VTODO", "VJOURNAL" calendar component and redistribute the updates to the "Attendees". An iCalendar object that maliciously changes or cancels an existing "VEVENT", "VTODO" or "VJOURNAL" or "VFREEBUSY" calendar component MAY be constructed by someone other than the "Organizer" and sent to the "Attendees". In addition in this memo, an "Attendee" of a "VEVENT", "VTODO", "VJOURNAL" calendar component is the only person authorized to Dawson/Stenerson 8 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 update any parameter associated with their "ATTENDEE" property and send it to the "Organizer". An iCalendar object that maliciously changes the "ATTENDEE" parameters MAY be constructed by someone other than the real "Attendee" and sent to the "Organizer". PROCEDURAL ALARMS - - An iCalendar object can be created that contains a "VEVENT" and "VTODO" calendar component with an "VALARM" calendar components. The "VALARM" calendar component MAY be of type PROCEDURE and MAY have an attachment containing some sort of executable program. Implementations that incorporate these types of alarms are subject to any virus or malicious attack that MAY occur as a result of executing the attachment. ATTACHMENTS - - An iCalendar object MAY include references to Uniform Resource Locators that MAY be programmed resources. Implementers and users of this memo should be aware of the network security implications of accepting and parsing such information. In addition, the security considerations observed by implementations of electronic mail systems should be followed for this memo. Interoperability considerations: This MIME content 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. Intended Usage: COMMON Published specification: This memo. Author/Change controllers: Frank Dawson 6544 Battleford Drive Raleigh, NC 27613-3502 919-676-9515 (Telephone) 919-676-9564 (Data/Facsimile) Frank_Dawson@Lotus.com (Internet Mail) Derik Stenerson One Microsoft Way Redmond, WA 98052-6399 425-936-5522 (Telephone) 425-936-7329 (Facsimile) deriks@microsoft.com (Internet Mail) 4. iCalendar Object Specification The following sections define the details of a Calendaring and Scheduling Core Object Specification. This information is intended to be an integral part of the MIME content type registration. In addition, this information MAY be used independent of such content Dawson/Stenerson 9 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 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. 4.1 Content Considerations The iCalendar object consists of lines of text. This section defines how the content lines MUST be formatted. 4.1.1 Content Lines The iCalendar object consists of individual lines of text, delimited by a line break, which is a CRLF sequence (ASCII decimal 13, followed by ASCII decimal 10). Line of text should not be longer than 76 characters, excluding the line break. Long lines of text can be split into a multiple line representations using a line "folding" technique. That is, a long line MAY be split at any point by inserting a CRLF immediately followed by a single LWSP character (i.e., SPACE, ASCII decimal 32 or HTAB, ASCII decimal 9). Any sequence of CRLF followed immediately by a single LWSP 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 long 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 character and the LWSP character that immediately follows. An intentional formatted text line break MAY only be included in a property value by representing the line break with the character sequence of BACKSLASH (ASCII decimal 92), followed by a LATIN SMALL LETTER N (ASCII decimal 110) or a LATIN CAPITAL LETTER N (ASCII decimal 78), that is "\n" or "\N". For example a multiple line "DESCRIPTION" property value of: Project XYZ Final Review Conference Room - 3B Come Prepared. Could be represented as: Dawson/Stenerson 10 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 DESCRIPTION:Project_XYZ Final_Review\n Conference Room - 3B\nCome_Prepared. The content information associated with an iCalendar object is formatted using a syntax similar to that defined by [MIME DIR]. That is, the content information consists of one or more CRLF-separated content lines as defined by the following notation: contentline = name [";" [ws] paramlist] ":" [ws] value CRLF ;Folding permitted on content lines. ;Lines should be less than 76 characters, excluding CRLF. LWSP = SPACE / HTAB SPACE = HTAB = ws = SPACE / HTAB name = iana-name / x-name ;An iCalendar property iana-name = x-name = value = boolean / cal-address / date / date-time / duration / float / integer / period / recur / text / time / url / utc-offset / x-token iana-value = 4.1.2 List and Field Separators List of values MAY be specified for property values or property parameter values. Each value in a list of values MUST be separated by a COMMA character (ASCII decimal 44). A COMMA character in a property value or a property parameter value MUST be escaped with a BACKSLASH character (ASCII decimal 92). Some property values are defined in terms of multiple components. These structured property values MUST have their components separated by a SEMICOLON character (ASCII decimal 59). A SEMICOLON character in a property value MUST be escaped with a BACKSLASH character (ASCII decimal 92). Dawson/Stenerson 11 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 Lists of property parameters MAY be specified for a property. Each property parameter in a list of property parameters MUST be separated by a SEMICOLON character (ASCII decimal 59). A SEMICOLON character in a property parameter value MUST be escaped with a BACKSLASH character (ASCII decimal 92). A COLON character (ASCII decimal 58) in a property parameter value MUST be escaped with a BACKSLASH character (ASCII decimal 92). A COLON character in a property value does not need to be escaped with a BACKSLASH character. A BACKSLASH character (ASCII decimal 92) in a property value or a property parameter value MUST be escaped with another BACKSLASH character. For example, in the following properties a SEMICOLON is used to separate property parameters and property value fields. A COMMA is used to separate values. ATTENDEE;RSVP=TRUE;ROLE=ATTENDEE:J.Smith RDATE;VALUE=DATE:19970304,19970504,19970704,19970904 4.1.3 Multiple Values Each property defined in the iCalendar object MAY have multiple values, if allowed in the definition of the specific property. 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 (ASCII decimal 44). 4.1.4 Binary Content There is no support for including binary content information, inline, within an iCalendar object. Binary content information MUST be referenced by a uniform resource locator (URL) type of property value. The following example specifies an "ATTACH" property with a reference to an attachment consisting of a binary object: ATTACH:ftp://xyz.com/public/quarterly-report.doc 4.1.5 Property Parameters A property MAY have additional attributes associated with it. These "property parameters" contain meta information about the property or the property value. Property parameters MAY be used to specify the location of an alternate text representation for a property value, the content encoding used on a property value, the language of a text property value or thedata type of the property value. Dawson/Stenerson 12 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 Property parameter values that contain the COLON, SEMICOLON, COMMA or BACKSLASH character separators MUST be specified as quoted-string text values. For example: DESCRIPTION;ALTREP="http://www.wiz.org":The Fall'98 Wild Wizards Conference - - Las Vegas, NV, USA Property parameters are defined by the following notation: ( = parameter *(";" [ws] parameter) parameter = altrepparm ;Alterate text representation / languageparm ;Text language / valuetypeparm ;Property value data type / [parmtype "="] parmvalues ;Parameter extensions parmtype = x-token / iana-ptype iana-ptype = parmvalues = parmvalue / parmvalue *("," [ws] parmvalue) parmvalue = x-name / iana-pvalue iana-pvalue = 4.1.6 Alternate Text Representation The "ALTREP" property parameter is an OPTIONAL property parameter. It specifies the URL that points to an alternate representation for a textual property value. The property MUST include a value that reflects the default representation. This property parameter MAY include multiple values, separated by the COMMA character (ASCII decimal 44). The property parameter MAY only be specified in the "COMMENT", "CONTACT", "DESCRIPTION", "LOCATION" and "SUMMARY" properties. For example: DESCRIPTION;ALTREP="CID:":Project XYZ Review Meeting will include the following agenda items: (a) Market Overview, (b) Finances, (c) Project Management The "ALTREP" property parameter value might point to a "text/html" content portion. Content-Type:text/html Content-Id: Dawson/Stenerson 13 Expires MAY 1998 Internet Draft C&S Core Object Specification October 22, 1997 Project XYZ Review Meeting will include the following agenda items:Market OverviewFinancesProject Management
Project XYZ Review Meeting will include the following agenda items: