draft-ietf-calsch-ical-05.txt   draft-ietf-calsch-ical-06.txt 
Network Working Group Frank Dawson, Lotus Network Working Group Frank Dawson, Lotus
Internet Draft Derik Stenerson, Microsoft Internet Draft Derik Stenerson, Microsoft
<ietf-calsch-ical-05.txt> November 21, 1997 <ietf-calsch-ical-06.txt> March 13, 1998
Expires September 1998
Internet Calendaring and Scheduling Core Object Specification Internet Calendaring and Scheduling Core Object Specification
(iCalendar) (iCalendar)
Status of this Memo Status of this Memo
This memo is an Internet-Draft. Internet-Drafts are working documents This memo is an Internet-Draft. Internet-Drafts are working documents
of the Internet Engineering Task Force (IETF), its areas, and its of the Internet Engineering Task Force (IETF), its areas, and its
working groups. Note that other groups MAY also distribute working working groups. Note that other groups MAY also distribute working
documents as Internet-Drafts. documents as Internet-Drafts.
skipping to change at line 37 skipping to change at line 39
Distribution of this memo is unlimited. Distribution of this memo is unlimited.
Copyright (C) The Internet Society 1997. All Rights Reserved. Copyright (C) The Internet Society 1997. All Rights Reserved.
Abstract Abstract
There is a clear need to provide and deploy interoperable calendaring There is a clear need to provide and deploy interoperable calendaring
and scheduling services for the Internet. Current group scheduling and scheduling services for the Internet. Current group scheduling
and Personal Information Management (PIM) products are being extended and Personal Information Management (PIM) products are being extended
for use across the Internet, today, in proprietary ways. This memo for use across the Internet, today, in proprietary ways. This memo
has been defined to provide the a definition of a common format for has been defined to provide the definition of a common format for
openly exchanging calendaring and scheduling information across the openly exchanging calendaring and scheduling information across the
Internet. Internet.
This memo is formatted as a registration for a MIME media type per This memo is formatted as a registration for a MIME media type per
[RFC 2048]. However, the format in this memo is equally applicable [RFC 2048]. However, the format in this memo is equally applicable
for use outside of a MIME message content type. for use outside of a MIME message content type.
The proposed media type value is ''TEXT/CALENDAR''. This string would The proposed media type value is ''text/calendar''. This string would
label a media type containing calendaring and scheduling information label a media type containing calendaring and scheduling information
encoded as text characters formatted in a manner outlined below. encoded as text characters formatted in a manner outlined below.
This MIME media type provides a standard content type for capturing This MIME media type provides a standard content type for capturing
calendar event and to-do information. It also can be used to convey calendar event, to-do and journal entry information. It also can be
free/busy time information. The content type is suitable as a MIME used to convey free/busy time information. The content type is
message entity that can be transferred over MIME based email systems suitable as a MIME message entity that can be transferred over MIME
or using HTTP. In addition, the content type is useful as an object based email systems, using HTTP or some other Internet transport. In
Dawson/Stenerson 1 Expires MAY 1998 Dawson/Stenerson 1 Expires September 1998
for interactions between desktop applications using the operating addition, the content type is useful as an object for interactions
system clipboard, drag/drop or file systems capabilities. 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 This memo is based on the earlier work of the vCalendar specification
for the exchange of personal calendaring and scheduling information. for the exchange of personal calendaring and scheduling information.
In order to avoid confusion with this referenced work, this memo is 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 to be known as the iCalendar specification.
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 Readers may also wish to refer to the calendaring and scheduling
methods. An iCalendar object method is a set of usage constraints for model defined in [] for a description of this Internet application.
the iCalendar object. For example, these methods might define
scheduling messages that request an event be scheduled, reply to an This memo defines the format for specifying iCalendar object methods.
event request, send a cancellation notice for an event, modify or An iCalendar object method is a set of usage constraints for the
replace the definition of an event, provide a counter proposal for an 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 original event request, delegate an event request to another
individual, request free or busy time, reply to a free or busy time individual, request free or busy time, reply to a free or busy time
request, or provide similar scheduling messages for a to-do or request, or provide similar scheduling messages for a to-do or
journal entry calendar component. journal entry calendar component. The iCalendar Transport-indendent
Interoperability Protocol (iTIP) defined in [ITIP] is one such
scheduling protocol.
Dawson/Stenerson 2 Expires MAY 1998 Dawson/Stenerson 2 Expires September 1998
Table of Contents Table of Contents
1. Introduction........................................................5 1 Introduction.........................................................8
2. Basic Grammar and Conventions.......................................5 2 Basic Grammar and Conventions........................................8
2.1 Formatting Conventions ...........................................6 2.1 Formatting Conventions ...........................................9
2.2 Related Memos ....................................................7 2.2 Related Memos ...................................................10
3. TEXT/CALENDAR Registration Information..............................7 3 TEXT/CALENDAR Registration Information..............................10
4. iCalendar Object Specification......................................9 4 iCalendar Object Specification......................................13
4.1 Content Considerations ...........................................9 4.1 Content Lines ...................................................13
4.1.1 Content Lines ................................................10 4.1.1 List and Field Separators ....................................16
4.1.2 List and Field Separators ....................................12 4.1.2 Multiple Values ..............................................16
4.1.3 Multiple Values ..............................................13 4.1.3 Binary Content ...............................................17
4.1.4 Binary Content ...............................................13 4.1.4 Character Set ................................................17
4.1.5 Property Parameters ..........................................13 4.2 Property Parameters .............................................17
4.1.6 Alternate Text Representation ................................14 4.2.1 Alternate Text Representation ................................18
4.1.7 Character Set ................................................14 4.2.2 Inline Encoding ..............................................19
4.1.8 Inline Encoding ..............................................15 4.2.3 Language .....................................................19
4.1.9 Language .....................................................15 4.2.4 Time Zone Identifier .........................................20
4.1.10 Value Data Types ............................................15 4.2.5 Value Data Types .............................................21
4.2 iCalendar object ................................................25 4.3 Property Value Data Types .......................................21
4.3 Property ........................................................26 4.3.1 Binary .......................................................22
4.4 Calendar Components .............................................26 4.3.2 Boolean ......................................................22
4.4.1 Event Component ..............................................26 4.3.3 Calendar User Address ........................................23
4.4.2 To-do Component ..............................................28 4.3.4 Date .........................................................23
4.4.3 Journal Component ............................................29 4.3.5 Date-Time ....................................................24
4.4.4 Free/Busy Component ..........................................30 4.3.6 Duration .....................................................25
4.4.5 Alarm Component ..............................................31 4.3.7 Float ........................................................26
4.4.6 Timezone Component ...........................................33 4.3.8 Integer ......................................................27
4.5 Calendar Properties .............................................37 4.3.9 Period of Time ...............................................27
4.5.1 Calendar Scale ...............................................37 4.3.10 Recurrence Rule .............................................28
4.5.2 Method .......................................................37 4.3.11 Text ........................................................33
4.5.3 Product Identifier ...........................................38 4.3.12 Time ........................................................34
4.5.4 Source .......................................................38 4.3.13 URI .........................................................36
4.5.5 Source Name ..................................................39 4.3.14 UTC Offset ..................................................36
4.5.6 Version ......................................................39 4.4 iCalendar Object ................................................37
4.6 Component Properties ............................................40 4.5 Property ........................................................38
4.6.1 Attachment ...................................................40 4.6 Calendar Components .............................................38
4.6.2 Attendee .....................................................40 4.6.1 Event Component ..............................................38
4.6.3 Categories ...................................................43 4.6.2 To-do Component ..............................................40
4.6.4 Classification ...............................................44 4.6.3 Journal Component ............................................41
4.6.5 Comment ......................................................44 4.6.4 Free/Busy Component ..........................................43
4.6.6 Contact ......................................................45 4.6.5 Timezone Component ...........................................45
4.6.7 Date/Time Completed ..........................................45 4.6.6 Alarm Component ..............................................50
4.6.8 Date/Time Created ............................................46 4.7 Calendar Properties .............................................53
4.6.9 Date/Time Due ................................................46 4.7.1 Calendar Scale ...............................................54
4.6.10 Date/Time End ...............................................46 4.7.2 Method .......................................................54
4.6.11 Date/Time Stamp .............................................47 4.7.3 Product Identifier ...........................................55
4.6.12 Date/Time Start .............................................47 4.7.4 Version ......................................................56
4.6.13 Daylight ....................................................48 4.8 Component Properties ............................................56
4.6.14 Description .................................................48 4.8.1 Descriptive Component Properties .............................56
4.6.15 Duration ....................................................49 4.8.1.1 Attachment ...............................................56
4.6.16 Exception Date/Times ........................................50 4.8.1.2 Categories ...............................................57
4.6.17 Exception Rule ..............................................50
Dawson/Stenerson 3 Expires MAY 1998 Dawson/Stenerson 3 Expires September 1998
4.6.18 Free/Busy Time ..............................................51 4.8.1.3 Classification ...........................................58
4.6.19 Geographic Position .........................................52 4.8.1.4 Comment ..................................................59
4.6.20 Last Modified ...............................................53 4.8.1.5 Description ..............................................59
4.6.21 Location ....................................................53 4.8.1.6 Geographic Position ......................................60
4.6.22 Percent Complete ............................................54 4.8.1.7 Location .................................................61
4.6.23 Priority ....................................................54 4.8.1.8 Percent Complete .........................................61
4.6.24 Recurrence Date/Times .......................................55 4.8.1.9 Priority .................................................62
4.6.25 Recurrence ID ...............................................56 4.8.1.10 Resources ...............................................63
4.6.26 Recurrence Rule .............................................57 4.8.1.11 Status ..................................................64
4.6.27 Related To ..................................................64 4.8.1.12 Summary .................................................65
4.6.28 Repeat Count ................................................65 4.8.2 Date and Time Component Properties ...........................66
4.6.29 Request Status ..............................................66 4.8.2.1 Date/Time Completed ......................................66
4.6.30 Resources ...................................................67 4.8.2.2 Date/Time End ............................................66
4.6.31 Sequence Number .............................................68 4.8.2.3 Date/Time Due ............................................67
4.6.32 Status ......................................................68 4.8.2.4 Date/Time Start ..........................................68
4.6.33 Summary .....................................................69 4.8.2.5 Duration .................................................69
4.6.34 Time Transparency ...........................................69 4.8.2.6 Free/Busy Time ...........................................69
4.6.35 Time Zone Name ..............................................70 4.8.2.7 Time Transparency ........................................71
4.6.36 Time Zone Offset ............................................70 4.8.3 Time Zone Component Properties ...............................72
4.6.37 Uniform Resource Locator ....................................70 4.8.3.1 Time Zone Identifier .....................................72
4.6.38 Unique Identifier ...........................................71 4.8.3.2 Time Zone Name ...........................................72
4.6.39 Non-standard Properties .....................................72 4.8.3.3 Time Zone Offset From ....................................73
5. Recommended Practices..............................................72 4.8.3.4 Time Zone Offset To ......................................74
6. Registration of Content Type Elements..............................73 4.8.3.5 Time Zone URL ............................................74
6.1 Registration of New and Modified iCalendar object Methods .......73 4.8.4 Relationship Component Properties ............................75
6.2 Registration of New Properties ..................................73 4.8.4.1 Attendee .................................................75
6.2.1 Define the property ..........................................73 4.8.4.2 Contact ..................................................78
6.2.2 Post the Property definition .................................74 4.8.4.3 Organizer ................................................79
6.2.3 Allow a comment period .......................................74 4.8.4.4 Recurrence ID ............................................80
6.2.4 Submit the property for approval .............................74 4.8.4.5 Related To ...............................................81
6.3 Property Change Control .........................................75 4.8.4.6 Uniform Resource Locator .................................82
7. File extension.....................................................75 4.8.4.7 Unique Identifier ........................................83
8. Macintosh File Type Code...........................................75 4.8.5 Recurrence Component Properties ..............................84
9. References.........................................................75 4.8.5.1 Exception Date/Times .....................................84
10. Acknowledgments...................................................77 4.8.5.2 Exception Rule ...........................................85
11. Author's Address..................................................77 4.8.5.3 Recurrence Date/Times ....................................86
12. iCalendar object Examples.........................................78 4.8.5.4 Recurrence Rule ..........................................88
13. Full Copyright Statement..........................................80 4.8.6 Alarm Component Properties ...................................95
4.8.6.1 Alarm Type ...............................................96
4.8.6.2 Repeat Count .............................................96
4.8.6.3 Trigger ..................................................97
4.8.7 Change Management Component Properties .......................98
4.8.7.1 Date/Time Created ........................................98
4.8.7.2 Date/Time Stamp ..........................................99
4.8.7.3 Last Modified ............................................99
4.8.7.4 Sequence Number .........................................100
4.8.8 Miscellaneous Component Properties ..........................101
4.8.8.1 Non-standard Properties .................................101
4.8.8.2 Request Status ..........................................102
5 iCalendar Object Examples..........................................103
6 Recommended Practices..............................................107
7 Registration of Content Type Elements..............................107
7.1 Registration of New and Modified iCalendar Object Methods ......107
7.2 Registration of New Properties .................................108
Dawson/Stenerson 4 Expires MAY 1998 Dawson/Stenerson 4 Expires September 1998
7.2.1 Define the property .........................................108
7.2.2 Post the Property definition ................................109
7.2.3 Allow a comment period ......................................109
7.2.4 Submit the property for approval ............................109
7.3 Property Change Control ........................................109
8 References.........................................................109
9 Acknowledgments....................................................111
10 Author's Address..................................................111
11 Full Copyright Statement..........................................112
1. Introduction Dawson/Stenerson 5 Expires September 1998
1 Introduction
The use of calendaring and scheduling has grown considerably in the The use of calendaring and scheduling has grown considerably in the
last decade. Enterprise and inter-enterprise business has become last decade. Enterprise and inter-enterprise business has become
dependent on rapid scheduling of events and actions using this dependent on rapid scheduling of events and actions using this
information technology. However, the longer term growth of information technology. However, the longer term growth of
calendaring and scheduling, is currently limited by the lack of calendaring and scheduling, is currently limited by the lack of
Internet standards for the message content types that are central to Internet standards for the message content types that are central to
these groupware applications. This memo is intended to progress the these knowledgeware applications. This memo is intended to progress
level of interoperability possible between dissimilar calendaring and the level of interoperability possible between dissimilar calendaring
scheduling applications. This memo defines a MIME content type for and scheduling applications. This memo defines a MIME content type
exchanging electronic calendaring and scheduling information. The for exchanging electronic calendaring and scheduling information. The
Internet Calendaring and Scheduling Core Object Specification, or Internet Calendaring and Scheduling Core Object Specification, or
iCalendar, allows for the capture and exchange of information iCalendar, allows for the capture and exchange of information
normally stored within a calendaring and scheduling application; such normally stored within a calendaring and scheduling application; such
as a Personal Information Manager or a Group Scheduling product. as a Personal Information Manager (PIM) 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 The calendaring and scheduling model, defined in the [ICMS], is a
systems. The format is defined in terms of a MIME content type. This useful reference to terms and the general framework of this Internet
will enable the object to be exchanged using several transports, application.
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 The iCalendar format is suitable as an exchange format between
protocol is the subject of another memo [ITIP]. 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 memo also provides for the definition of iCalendar object methods The memo also provides for the definition of iCalendar object methods
that will map this content type to a set of messages for supporting that will map this content type to a set of messages for supporting
calendaring and scheduling operations such as requesting, replying calendaring and scheduling operations such as requesting, replying
to, modifying, and canceling meetings or appointments, to-dos and to, modifying, and canceling meetings or appointments, to-dos and
journal entries. The iCalendar object methods can be used to define journal entries. The iCalendar object methods can be used to define
other calendaring and scheduling operations such a requesting for and other calendaring and scheduling operations such a requesting for and
replying with free/busy time data. replying with free/busy time data. Such a scheduling protocol is
defined in the iCalendar Transport-independent Interoperability
Protocol (iTIP) defined in [ITIP].
The memo also includes a formal grammar for the content type to aid The memo also includes a formal grammar for the content type based on
in the implementation of parsers and to serve as the definitive the Internet ABNF defined in [RFC 2234]. This ABNF is required for
the implementation of parsers and to serve as the definitive
reference when ambiguities or questions arise in interpreting the reference when ambiguities or questions arise in interpreting the
descriptive prose definition of the memo. descriptive prose definition of the memo.
2. Basic Grammar and Conventions 2 Basic Grammar and Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
document are to be interoperated as described in [RFC 2119]. document are to be interoperated as described in [RFC 2119].
Dawson/Stenerson 6 Expires September 1998
This memo makes use of both a descriptive prose and a more formal This memo makes use of both a descriptive prose and a more formal
notation for defining the calendaring and scheduling format. notation for defining the calendaring and scheduling format.
Dawson/Stenerson 5 Expires MAY 1998 The notation used in this memo is the ABNF notation of [RFC 2234].
The notation used in this memo is the augmented BNF notation of [RFC Readers intending on implementing this format defined in this memo
822]. Readers intending on implementing this format defined in this should be familiar with this notation in order to properly interpret
memo should be familiar with this notation in order to properly the specifications of this memo.
interpret the specifications of this memo.
All numeric and hexadecimal values used in this memo are given in All numeric and hexadecimal values used in this memo are given in
decimal notation. All names of properties, property parameters, decimal notation. All names of properties, property parameters,
enumerated property values and property parameter values are case- enumerated property values and property parameter values are case-
insensitive. However, all other property values are case-sensitive, insensitive. However, all other property values are case-sensitive,
unless otherwise stated. unless otherwise stated.
Note: All indented editorial notes, such as this one, are Note: All indented editorial notes, such as this one, are
intended to provide the reader with additional information that intended to provide the reader with additional information that
is not essential to the building of a conformant implementation is not essential to the building of a conformant implementation
skipping to change at line 255 skipping to change at line 288
to highlight a particular feature or characteristic of the to highlight a particular feature or characteristic of the
specifications. specifications.
The format for the iCalendar object is based on the syntax of the 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 [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 of the [MIME DIR] content type, it does reuse a number of the
elements from the [MIME DIR] specification. elements from the [MIME DIR] specification.
2.1 Formatting Conventions 2.1 Formatting Conventions
The mechanisms defined in this memo are defined in propose. In order The mechanisms defined in this memo are defined in propose. Many of
to refer to elements of the calendaring and scheduling model [ICMS], the terms used to describe these have common usage that is different
core object (this memo) or interoperability protocol [ITIP] in this than the standards usage of this memo. In order to reference within
memo some formatting conventions have been used. Calendaring and this memo elements of the calendaring and scheduling model [ICMS],
scheduling roles defined by [ICMS] are referred to in quoted-strings core object (this memo) or interoperability protocol [ITIP] some
of text with the first character of each word in upper case. For formatting conventions have been used. Calendaring and scheduling
example, "Organizer" refers to a role of a "Calendar User" within the 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 scheduling protocol defined by [ITIP] Calendar components defined by
this memo are referred to with capitalized, quoted-strings of text. this memo are referred to with capitalized, quoted-strings of text.
All calendar components start with the letter "V". For example, All calendar components start with the letter "V". For example,
"VEVENT" refers to the event calendar component, "VTODO" refers to "VEVENT" refers to the event calendar component, "VTODO" refers to
the to-do calendar component and "VJOURNAL" refers to the daily the to-do calendar component and "VJOURNAL" refers to the daily
journal calendar component. Scheduling methods defined by [ITIP] are journal calendar component. Scheduling methods defined by [ITIP] are
referred to with capitalized, quoted-strings of text. For example, referred to with capitalized, quoted-strings of text. For example,
"REQUEST" refers to the method for requesting a scheduling calendar "REQUEST" refers to the method for requesting a scheduling calendar
component be created or modified, "REPLY" refers to the method a component be created or modified, "REPLY" refers to the method a
recipient of a request uses to update their status with the recipient of a request uses to update their status with the
"Organizer" of the calendar component. "Organizer" of the calendar component.
The properties defined by this memo are referred to with capitalized, The properties defined by this memo are referred to with capitalized,
quoted-strings of text, followed by the word "property". For example, quoted-strings of text, followed by the word "property". For example,
"ATTENDEE" property refers to the iCalendar property used to convey "ATTENDEE" property refers to the iCalendar property used to convey
the calendar address of a calendar user. Property parameters defined the calendar address of a calendar user. Property parameters defined
by this memo are referred to with lower case, quoted-strings of text, by this memo are referred to with lower case, quoted-strings of text,
Dawson/Stenerson 7 Expires September 1998
followed by the word "parameter". For example, "value" parameter followed by the word "parameter". For example, "value" parameter
refers to the iCalendar property parameter used to override the refers to the iCalendar property parameter used to override the
default data type for a property value. Enumerated values defined by default data type for a property value. Enumerated values defined by
this memo are referred to with capitalized text, either alone or this memo are referred to with capitalized text, either alone or
followed by the word "value". For example, the "MINUTELY" value can followed by the word "value". For example, the "MINUTELY" value can
Dawson/Stenerson 6 Expires MAY 1998
be used with the "FREQ" component of the "RECUR" data type to specify be used with the "FREQ" component of the "RECUR" data type to specify
repeating components based on an interval of one minute or more. repeating components based on an interval of one minute or more.
2.2 Related Memos 2.2 Related Memos
Implementers will need to be familiar with several other memos that, Implementers will need to be familiar with several other memos that,
along with this memo, form a framework for Internet calendaring and along with this memo, form a framework for Internet calendaring and
scheduling standards. This memo, [ICAL], specifies a core scheduling standards. This memo, [ICAL], specifies a core
specification of objects, data types, properties and property specification of objects, data types, properties and property
parameters. parameters.
[ICMS] - specifies a common terminology and abstract; [ICMS] - specifies a common terminology and abstract model;
[ITIP] - specifies an interoperability protocol for scheduling [ITIP] - specifies an interoperability protocol for scheduling
between different implementations; between different implementations;
[IMIP] specifies an Internet email binding for [ITIP]; [IMIP] specifies an Internet email binding for [ITIP];
[IRIP] - specifies an Internet real time protocol 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 This memo does not attempt to repeat the specification of concepts or
definitions from these other memos. Where possible, references are definitions from these other memos. Where possible, references are
made to the memo that provides for the specification of these made to the memo that provides for the specification of these
concepts or definitions. concepts or definitions.
3. TEXT/CALENDAR Registration Information 3 TEXT/CALENDAR Registration Information
The Calendaring and Scheduling Core Object Specification is intended The Calendaring and Scheduling Core Object Specification is intended
for use as a MIME content type. However, the implementation of the for use as a MIME content type. However, the implementation of the
memo is in no way limited solely as a MIME content type. memo is in no way limited solely as a MIME content type.
The following text is intended to register this memo as the MIME The following text is intended to register this memo as the MIME
content type "text/calendar". content type "text/calendar".
To: ietf-types@uninett.no To: ietf-types@uninett.no
Subject: Registration of MIME content type text/calendar. Subject: Registration of MIME content type text/calendar.
MIME media type name: text MIME media type name: text
MIME subtype name: calendar MIME subtype name: calendar
Required parameters: method Required parameters: none
The "method" parameter is used to convey the iCalendar object Optional parameters: charset, method and component
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
text/calendar content type MAY contain any set of properties
Dawson/Stenerson 7 Expires MAY 1998 The "charset" parameter is defined in [RFC 2046] for other body
permitted by the Calendaring and Scheduling Core Object parts. It is used to identify the default character set used within
Specification. the body part.
Dawson/Stenerson 8 Expires September 1998
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 that the iCalendar object consists 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 text/calendar content type MAY contain any set of
properties permitted by the Calendaring and Scheduling Core Object
Specification. The "method" parameter MUST be the same value as
that specified in the "METHOD" component property in the iCalendar
object. If one is present, the other must also be present.
The value for the "method" parameter is defined as follows: The value for the "method" parameter is defined as follows:
method = 1*(ALPHA / DIGIT / "-") method = 1*(ALPHA / DIGIT / "-")
; IANA registered iCalendar object method ; IANA registered iCalendar object 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 The "component" parameter conveys the type of iCalendar calendar
component within the body part. If the iCalendar object contains component within the body part. If the iCalendar object contains
more than one calendar component, then the components are specified more than one calendar component, then different components are
as a comma-separated list of values. each specified once in a comma-separated list of values.
The value for the "component" parameter is defined as follows: The value for the "component" parameter is defined as follows:
component = "VEVENT" / "VTODO" / "VJOURNAL" / "VFREEBUSY" component = ("VEVENT" / "VTODO" / "VJOURNAL" / "VFREEBUSY"
/ x-name / iana-token / "VTIMEZONE" / x-name / iana-token) ["," [WSP]
component]
Optional content header fields: Any header fields defined by [RFC Optional content header fields: Any header fields defined by [RFC
2045]. 2045].
Encoding considerations: This MIME content type can contain 8bit Encoding considerations: This MIME content type can contain 8bit
characters, so the use of quoted-printable or base64 MIME content- characters, so the use of quoted-printable or base64 MIME content-
transfer-encodings MAY be necessary when iCalendar objects are transfer-encodings MAY be necessary when iCalendar objects are
transferred across protocols restricted to the 7bit repertoire. transferred across protocols restricted to the 7bit repertoire.
Note that each property in the content entity MAY also have special Note that a text valued property in the content entity MAY also
characters encoded using a BACKSLASH character (ASCII decimal 92) have content encoding of special characters using a BACKSLASH
escapement technique. This means that content values MAY end up character (ASCII decimal 92) escapement technique. This means that
encoded twice. content values MAY end up encoded twice.
Security considerations: SPOOFING - - In this memo, the "Organizer" Security considerations: SPOOFING - - In this memo, the "Organizer"
is the only person authorized to make changes to an existing is the only person authorized to make changes to an existing
"VEVENT", "VTODO", "VJOURNAL" calendar component and redistribute "VEVENT", "VTODO", "VJOURNAL" calendar component and redistribute
the updates to the "Attendees". An iCalendar object that the updates to the "Attendees". An iCalendar object that
maliciously changes or cancels an existing "VEVENT", "VTODO" or maliciously changes or cancels an existing "VEVENT", "VTODO" or
"VJOURNAL" or "VFREEBUSY" calendar component MAY be constructed by "VJOURNAL" or "VFREEBUSY" calendar component MAY be constructed by
someone other than the "Organizer" and sent to the "Attendees". In someone other than the "Organizer" and sent to the "Attendees". In
addition in this memo, an "Attendee" of a "VEVENT", "VTODO", addition in this memo, other than the "Organizer", an "Attendee" of
"VJOURNAL" calendar component is the only person authorized to a "VEVENT", "VTODO", "VJOURNAL" calendar component is the only
update any parameter associated with their "ATTENDEE" property and other person authorized to update any parameter associated with
send it to the "Organizer". An iCalendar object that maliciously their "ATTENDEE" property and send it to the "Organizer". An
changes the "ATTENDEE" parameters MAY be constructed by someone
other than the real "Attendee" and sent to the "Organizer". Dawson/Stenerson 9 Expires September 1998
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 PROCEDURAL ALARMS - - An iCalendar object can be created that
contains a "VEVENT" and "VTODO" calendar component with an "VALARM" contains a "VEVENT" and "VTODO" calendar component with an "VALARM"
calendar components. The "VALARM" calendar component MAY be of type calendar components. The "VALARM" calendar component MAY be of type
PROCEDURE and MAY have an attachment containing some sort of PROCEDURE and MAY have an attachment containing some sort of
Dawson/Stenerson 8 Expires MAY 1998
executable program. Implementations that incorporate these types of executable program. Implementations that incorporate these types of
alarms are subject to any virus or malicious attack that MAY occur alarms are subject to any virus or malicious attack that MAY occur
as a result of executing the attachment. as a result of executing the attachment.
ATTACHMENTS - - An iCalendar object MAY include references to ATTACHMENTS - - An iCalendar object MAY include references to
Uniform Resource Locators that MAY be programmed resources. Uniform Resource Locators that MAY be programmed resources.
Implementers and users of this memo should be aware of the network Implementers and users of this memo should be aware of the network
security implications of accepting and parsing such information. In security implications of accepting and parsing such information. In
addition, the security considerations observed by implementations addition, the security considerations observed by implementations
of electronic mail systems should be followed for this memo. of electronic mail systems should be followed for this memo.
Interoperability considerations: This MIME content type is intended Interoperability considerations: This MIME content type is intended
to define a common format for conveying calendaring and scheduling to define a common format for conveying calendaring and scheduling
information between different systems. It is heavily based on the information between different systems. It is heavily based on the
earlier [VCAL] industry specification. earlier [VCAL] industry specification.
Intended Usage: COMMON Applications which use this media type: This content-type is
designed for widespread use by Internet calendaring and scheduling
applications. In addition, applications in the workflow and
document management area may find this content-type applicable. The
[ITIP], [IMIP] and [IRIP] Internet protocols directly use this
content-type also. Future work on an Internet calendar access
protocol will utilize this content-type too.
Published specification: This memo. Additional information: This memo defines this content-type.
Author/Change controllers: Magic numbers: None.
File extensions: 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 codes: 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 "ifb" 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.
Dawson/Stenerson 10 Expires September 1998
Person & email address to contact for further information:
Frank Dawson Frank Dawson
6544 Battleford Drive 6544 Battleford Drive
Raleigh, NC 27613-3502 Raleigh, NC 27613-3502
919-676-9515 (Telephone) 919-676-9515 (Telephone)
919-676-9564 (Data/Facsimile) 919-676-9564 (Data/Facsimile)
Frank_Dawson@Lotus.com (Internet Mail) Frank_Dawson@Lotus.com (Internet Mail)
Derik Stenerson Derik Stenerson
One Microsoft Way One Microsoft Way
Redmond, WA 98052-6399 Redmond, WA 98052-6399
425-936-5522 (Telephone) 425-936-5522 (Telephone)
425-936-7329 (Facsimile) 425-936-7329 (Facsimile)
deriks@microsoft.com (Internet Mail) deriks@microsoft.com (Internet Mail)
4. iCalendar Object Specification Intended usage: COMMON
Author/change controller:
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 The following sections define the details of a Calendaring and
Scheduling Core Object Specification. This information is intended to Scheduling Core Object Specification. This information is intended to
be an integral part of the MIME content type registration. In be an integral part of the MIME content type registration. In
addition, this information MAY be used independent of such content addition, this information MAY be used independent of such content
registration. In particular, this memo has direct applicability for registration. In particular, this memo has direct applicability for
use as a calendaring and scheduling exchange format in file-, memory- use as a calendaring and scheduling exchange format in file-, memory-
or network-based transport mechanisms. or network-based transport mechanisms.
4.1 Content Considerations 4.1 Content Lines
The iCalendar object consists of lines of text. This section defines
how the content lines MUST be formatted.
Dawson/Stenerson 9 Expires MAY 1998
4.1.1 Content Lines
The iCalendar object consists of individual lines of text, delimited The iCalendar object is organized into individual lines of text,
by a line break, which is a CRLF sequence (ASCII decimal 13, followed called content lines. Content lines are delimited by a line break,
by ASCII decimal 10). Lines of text should not be longer than 76 which is a CRLF sequence (ASCII decimal 13, followed by ASCII decimal
characters, excluding the line break. 10).
Long lines of text can be split into a multiple line representations Dawson/Stenerson 11 Expires September 1998
using a line "folding" technique. That is, a long line MAY be split Lines of text SHOULD NOT be longer than 75 characters, excluding the
at any point by inserting a CRLF immediately followed by a single line break. Long content lines SHOULD be split into a multiple line
linear white space character (i.e., SPACE, ASCII decimal 32 or HTAB, representations using a line "folding" technique. That is, a long
ASCII decimal 9). Any sequence of CRLF followed immediately by a line MAY be split at any point by inserting a CRLF immediately
single linear white space character is ignored (i.e., removed) when followed by a single linear white space character (i.e., SPACE, ASCII
processing the content type. decimal 32 or HTAB, ASCII decimal 9). 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: For example the line:
DESCRIPTION:This is a long description that exists on a long line. DESCRIPTION:This is a long description that exists on a long line.
Can be represented as: Can be represented as:
DESCRIPTION:This is a long description DESCRIPTION:This is a lo
ng description
that exists on a long line. that exists on a long line.
The process of moving from this folded multiple line representation The process of moving from this folded multiple line representation
to its single line representation is called "unfolding". Unfolding is to its single line representation is called "unfolding". Unfolding is
accomplished by removing the CRLF character and the linear white accomplished by removing the CRLF character and the linear white
space character that immediately follows. space character that immediately follows.
An intentional formatted text line break MAY only be included in a When parsing a content line, folded lines must first be unfolded
property value by representing the line break with the character according to the unfolding procedure described above. When generating
sequence of BACKSLASH (ASCII decimal 92), followed by a LATIN SMALL a content line, lines longer than 75 characters SHOULD be folded
LETTER N (ASCII decimal 110) or a LATIN CAPITAL LETTER N (ASCII according to the folding procedure described above.
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:
DESCRIPTION:Project_XYZ Final_Review\n
Conference Room - 3B\nCome_Prepared.
The content information associated with an iCalendar object is The content information associated with an iCalendar object is
formatted using a syntax similar to that defined by [MIME DIR]. That formatted using a syntax similar to that defined by [MIME DIR]. That
is, the content information consists of one or more CRLF-separated is, the content information consists of one or more CRLF-separated
content lines as defined by the following notation: content lines.
contentline = name *(";" [WSP] param ) ":" [WSP] value-list CRLF
; Lines longer than 75 characters should be folded
Dawson/Stenerson 10 Expires MAY 1998
name = iana-token / x-name
x-name = "X-" 1*(ALPHA / DIGIT / "-")
;Reservered for experimental use.
param = param-name "=" param-value *("," param-value)
param-name = iana-token
param-value = quoted-string / text The following notation defines the defines the lines of content in an
iCalendar object:
value-list = value-struct *([FOLD] "," value-struct) contentline = name *(";" [WSP] param ) ":" value CRLF
; permitted values are restricted by valuetype ; This ABNF is just a general definition for an initial parsing
; of the content line into its property name, parameter list,
; and value string
value-struct = value-elem *([FOLD] ";" value-elem) ; 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 characters SHOULD be folded according to
; the folding procedure described above.
value-elem = folded-text / folded-b name = x-name / iana-token
; encoding determined by encoding parameter
iana-token = 1*(ALPHA / DIGIT / "-") iana-token = 1*(ALPHA / DIGIT / "-")
; iCalendar identifier registered with IANA ; iCalendar identifier registered with IANA
text = *SAFE-CHAR Dawson/Stenerson 12 Expires September 1998
x-name = "X-" 1*(ALPHA / DIGIT / "-")
; Reservered for experimental use. Not intended for use in
; released products.
quoted-string = DQUOTE *(QSAFE-CHAR / QUOTED-CHAR) DQUOTE 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.
folded-text = *([FOLD] (SAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR)) param-name = iana-token
folded-base64 = *([FOLD] 4B-CHAR) [[FOLD] b-end] param-value = paramtext / quoted-string
base64-end = (2B-CHAR "==") / (3B-CHAR "=") paramtext = *SAFE-CHAR
ESCAPED-CHAR = "\" ("\" / DQUOTE / ";" / "," / "N" / "n") value = *VALUE-CHAR
; \\ encodes \, \" encodes ", \N or \n encodes newline
; \; encodes ;, \, encodes ,
B-CHAR = ALPHA / DIGIT / "+" / "/" quoted-string = DQUOTE *qtext DQUOTE
FOLD = CRLF WSP qtext = QSAFE-CHAR / QUOTED-CHAR
; not considered part of the value
NON-ASCII = %x80-FF NON-ASCII = %x80-FF
; use restricted by charset parameter ; Use restricted by charset parameter
; on outer MIME object ; on outer MIME object (UTF-8 preferred)
QSAFE-CHAR = %x20-21 / %x23-5B / %x5D-7E / NON-ASCII QSAFE-CHAR = WSP / %x21 / %x23-5B / %x5D-7E / NON-ASCII
; Any character except CTLs, DQUOTE, or "\" ; Any character except CTLs, DQUOTE, or "\"
QUOTED-CHAR = "\" ("\" / DQUOTE) QUOTED-CHAR = "\" ("\" / "," / DQUOTE)
; \\ encodes \, \" encodes " ; \\ encodes \, \" encodes "
SAFE-CHAR = %x20-21 / %x23-2B / %x2D-39 / %x3C-5B SAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E
%x5D-7E / NON-ASCII / NON-ASCII
; Any character except CTLs, DQUOTE, ";", ":", "\", "," ; Any character except CTLs, DQUOTE, ";", ":", ","
Dawson/Stenerson 11 Expires MAY 1998
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
BIT = "0" / "1" VALUE-CHAR = WSP / VCHAR / NON-ASCII
; Any textual character
CHAR = %x01-7F VCHAR = %x21-7E
; any 7-bit US-ASCII character, excluding NUL ; visible (printing) characters
CR = %x0D CR = %x0D
; carriage return ; carriage return
LF = %x0A
CRLF = CR LF CRLF = CR LF
; Internet standard newline ; Internet standard newline
CTL = %x00-1F / %x7F CTL = %x00-1F / %x7F
; controls ; Controls
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
Dawson/Stenerson 13 Expires September 1998
DIGIT = %x30-39 DIGIT = %x30-39
; 0-9DQUOTE = %x22 ; 0-9
DQUOTE = %x22
; Quotation Mark
WSP = SPACE / HTAB WSP = SPACE / HTAB
SPACE = %x20 SPACE = %x20
HTAB = %x09 HTAB = %x09
4.1.2 List and Field Separators 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.
4.1.1 List and Field Separators
List of values MAY be specified for property values or property List of values MAY be specified for property values or property
parameter values. Each value in a list of values MUST be separated by parameter values. Each value in a list of values MUST be separated by
a COMMA character (ASCII decimal 44). a COMMA character (ASCII decimal 44).
Some property values are defined in terms of multiple components. Some property values are defined in terms of multiple components.
These structured property values MUST have their components separated These structured property values MUST have their components separated
by a SEMICOLON character (ASCII decimal 59). by a SEMICOLON character (ASCII decimal 59).
Lists of property parameters MAY be specified for a property. Each Lists of property parameters MAY be specified for a property. Each
property parameter in a list of property parameters MUST be separated property parameter in a list of property parameters MUST be separated
by a SEMICOLON character (ASCII decimal 59). by a SEMICOLON character (ASCII decimal 59).
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 MUST be
escaped with another BACKSLASH character. A COMMA character in a
property value MUST be escaped with a BACKSLASH character (ASCII
decimal 92). A SEMICOLON character in a property value MUST be
escaped with a BACKSLASH character (ASCII decimal 92).
Property parameters with values containing a COLON, a SEMICOLON or a Property parameters with values containing a COLON, a SEMICOLON or a
COMMA character must be placed in quoted text string. COMMA character must be placed in quoted text string.
For example, in the following properties a SEMICOLON is used to For example, in the following properties a SEMICOLON is used to
separate property parameters and property value fields. A COMMA is separate property parameters and property value fields. A COMMA is
used to separate values. used to separate values.
Dawson/Stenerson 12 Expires MAY 1998 ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:MAILTO:
ATTENDEE;RSVP=TRUE;ROLE=ATTENDEE:MAILTO:J.Smith <jsmith@host.com> jsmith@host.com
RDATE;VALUE=DATE:19970304,19970504,19970704,19970904 RDATE;VALUE=DATE:19970304,19970504,19970704,19970904
4.1.3 Multiple Values 4.1.2 Multiple Values
Each property defined in the iCalendar object MAY have multiple Some properties defined in the iCalendar object MAY have multiple
values, if allowed in the definition of the specific property. The values. The general rule for encoding multi-valued items is to simply
general rule for encoding multi-valued items is to simply create a create a new content line for each value; including the property
new content line for each value; including the property name. name. However, it should be noted that some properties support
However, it should be noted that some properties support encoding encoding multiple values in a single property by separating the
multiple values in a single property by separating the values with a values with a COMMA character (ASCII decimal 44).
COMMA character (ASCII decimal 44).
4.1.4 Binary Content Dawson/Stenerson 14 Expires September 1998
4.1.3 Binary Content
Binary content information in an iCalendar object SHOULD be Binary content information in an iCalendar object SHOULD be
referenced using a URI within a property value. That is the binary referenced using a URI within a property value. That is the binary
content information SHOULD be placed in an external MIME entity that content information SHOULD be placed in an external MIME entity that
can be referenced by a URI from within the iCalendar object. In can be referenced by a URI from within the iCalendar object. In
addition, binary content information MAY be included within an applications where this is not feasible, binary content information
iCalendar object, but only after first encoding it into text using MAY be included within an iCalendar object, but only after first
the "B" encoding method defined in [RFC 2047]. Support for inline encoding it into text using the "B" encoding method defined in [RFC
binary content SHOULD be restricted to those applications 2047]. Support for inline binary content SHOULD be restricted to
requirements that necessitate conveying the complete calendaring and those applications requirements that necessitate conveying the
scheduling information within a single iCalendar object. A property complete calendaring and scheduling information within a single
containing inline binary content information MUST specify the iCalendar object. A property containing inline binary content
"ENCODING" property parameter. Binary content information placed information MUST specify the "ENCODING" property parameter. Binary
external to the iCalendar object MUST be referenced by a uniform content information placed external to the iCalendar object MUST be
resource identifier (URI). referenced by a uniform resource identifier (URI).
The following example specifies an "ATTACH" property that references The following example specifies an "ATTACH" property that references
an attachment external to the iCalendar object with a URI reference: an attachment external to the iCalendar object with a URI reference:
ATTACH:http://xyz.com/public/quarterly-report.doc ATTACH:http://xyz.com/public/quarterly-report.doc
The following example specifies an "ATTACH" property with inline The following example specifies an "ATTACH" property with inline
binary encoded content information: binary encoded content information:
ATTACH;ENCODING=b;VALUE=text:MIICajCCAdOgAwIBAgICBEUwDQYJKoZI ATTACH;ENCODING=b;VALUE=binary:MIICajCCAdOgAwIBAgICBEUwDQYJKoZI
hvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENv hvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENv
bW11bmljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlv bW11bmljYXRpb25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlv
biBTeXN0 <...remainder of "B" encoded binary data...> biBTeXN0 <...remainder of "B" encoded binary data...>
4.1.5 Property Parameters 4.1.4 Character Set
There is not a property parameter to declare the character set used
in a property value. The default character set for an iCalendar
object is [UTF-8].
The "charset" Content-Type parameter MAY be used in MIME transports
to specify any other IANA registered character set.
4.2 Property Parameters
A property MAY have additional attributes associated with it. These A property MAY have additional attributes associated with it. These
"property parameters" contain meta information about the property or "property parameters" contain meta information about the property or
the property value. Property parameters MAY be used to specify the the property value. Property parameters MAY be used to specify the
location of an alternate text representation for a property value, location of an alternate text representation for a property value,
the language of a text property value or the data type of the the language of a text property value or the data type of the
property value. property value. In addition, individual properties MAY define
property-specific parameters that apply only to that property.
Dawson/Stenerson 13 Expires MAY 1998
Property parameter values that contain the COLON, SEMICOLON, COMMA or Property parameter values that contain the COLON, SEMICOLON, COMMA or
BACKSLASH character separators MUST be specified as quoted-string BACKSLASH character separators MUST be specified as quoted-string
text values. For example: text values. For example:
Dawson/Stenerson 15 Expires September 1998
DESCRIPTION;ALTREP="http://www.wiz.org":The Fall'98 Wild Wizards DESCRIPTION;ALTREP="http://www.wiz.org":The Fall'98 Wild Wizards
Conference - - Las Vegas, NV, USA 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 specified The general property parameters defined by this memo are specified
the following notation: the following notation:
parameter = altrepparm ;Alternate text representation parameter = altrepparm ;Alternate text representation
/ encodingparm ;Inline encoding / encodingparm ;Inline encoding
/ languageparm ;Text language / languageparm ;National language for text
/ tzidparm ;Reference to time zone object
/ valuetypeparm ;Property value data type / valuetypeparm ;Property value data type
/ iana-token
;Some other IANA registered iCalendar parameter, such as those
;defined by an individual property.
/ x-name
;A non-standard, experimental parameter
4.1.6 Alternate Text Representation 4.2.1 Alternate Text Representation
The "ALTREP" property parameter is an OPTIONAL property parameter. It Parameter Name: ALTREP
specifies the URI 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: Purpose: To specify an alternate text representation for the property
value.
Conformance: Optional
Format Definition: The property parameter is defined by the following
notation:
altrepparm = "altrep" "=" DQUOTE uri DQUOTE
Description: The 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 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.
Example:
DESCRIPTION;ALTREP="CID:<part3.msg.970415T083000@host.com>":Project DESCRIPTION;ALTREP="CID:<part3.msg.970415T083000@host.com>":Project
XYZ Review Meeting will include the following agenda items: (a) XYZ Review Meeting will include the following agenda items: (a)
Market Overview, (b) Finances, (c) Project Management Market Overview, (b) Finances, (c) Project Management
The "ALTREP" property parameter value might point to a "text/html" The "ALTREP" property parameter value might point to a "text/html"
content portion. content portion.
Dawson/Stenerson 16 Expires September 1998
Content-Type:text/html Content-Type:text/html
Content-Id:<part3.msg.970415T083000@host.com> Content-Id:<part3.msg.970415T083000@host.com>
<p><b>Project XYZ Review Meeting</b> will include the following <p><b>Project XYZ Review Meeting</b> will include the following
agenda items:<li>Market agenda items:<li>Market
Overview</li><li>Finances</li><li>Project Management</li></p> Overview</li><li>Finances</li><li>Project Management</li></p>
The "ALTREP" property parameter is defined by the following notation: 4.2.2 Inline Encoding
altrepparm = "altrep" "=" uri
4.1.7 Character Set
There is not a property parameter to declare the character set used
in a property value. The default character set for an iCalendar
object is [UTF-8].
The "charset" Content-Type parameter MAY be used in MIME transports
to specify any other IANA registered character set.
Dawson/Stenerson 14 Expires MAY 1998 Parameter Name: ENCODING
4.1.8 Inline Encoding Purpose: To specify an alternate inline encoding for the property
value.
The "ENCODING property parameter is an OPTIONAL property parameter. Conformance: Required, if the inline encoding is not "8bit".
It identifies the inline encoding used in a property value. The
default encoding type is "8bit", corresponding to a property value
consisting of text. The "b" encoding type corresponds to a property
value encoded using the "B" encoding defined in [RFC 2047].
The "ENCODING" property parameter is defined by the following Format Definition: The property parameter is defined by the following
notation: notation:
encodingparam = "encoding" "=" "8bit" / "b" / iana-token encodingparm = "encoding" "=" "8bit"
/ x-name
;"8bit" text encoding is defined in [RFC 2045] ;"8bit" text encoding is defined in [RFC 2045]
/ "b"
;"b" binary encoding format is defined in [RFC 2047] ;"b" binary encoding format is defined in [RFC 2047]
/ iana-token
;Some other IANA registered iCalendar encoding type ;Some other IANA registered iCalendar encoding type
/ x-name
;A non-standard, experimental encoding type ;A non-standard, experimental encoding type
4.1.9 Language Description: The "ENCODING property parameter is an OPTIONAL property
parameter. It identifies the inline encoding used in a property
value. The default encoding type is "8bit", corresponding to a
property value consisting of text. The "b" encoding type corresponds
to a property value encoded using the "B" encoding defined in [RFC
2047].
The "LANGUAGE" property parameter is an OPTIONAL property parameter. If the value type parameter is ";VALUE=BINARY", then the inline
It identifies the language used in text values. The value of the encoding parameter MUST be specified with the value ";ENCODING=B".
4.2.3 Language
Parameter Name: LANGUAGE
Purpose: To specify the national language for text values in a
property or property parameter.
Conformance: Optional. There is no default national language for a
text value.
Format Definition: The property parameter is defined by the following
notation:
languageparm = "language" "=" language
language = <Text identifying a language, as defined in [RFC 1766]>
Dawson/Stenerson 17 Expires September 1998
Description: The parameter identifies the national language of the
text in the property or property parameter value. The value of the
"language" property parameter is that defined in [RFC 1766]. "language" property parameter is that defined in [RFC 1766].
Note: For transport in a MIME entity, the Content-Language Note: For transport in a MIME entity, the Content-Language
header field MAY be used to set the default language for the header field MAY be used to set the default language for the
entire body part. entire body part.
The "LANGUAGE" property parameter is defined by the following Example:
notation:
languageparm = "language" "=" language SUMMARY;LANGUAGE=us-EN:Company Holiday Party
language = <Text identifying a language, as defined in [RFC 1766]> ATTENDEE;CN=Henri Weisz;LANGUAGE=ca-FR:hweisz@host.com
4.1.10 Value Data Types 4.2.4 Time Zone Identifier
The "VALUE" property parameter is an OPTIONAL property parameter. It Parameter Name: TZID
is used to identify the data type and format of the property value.
The values of a property MUST be of a single data type. For example,
a "RDATE" property cannot have a combination of DATE-TIME and TIME
values.
The "VALUE" property parameter is defined by the following notation: Purpose: To specify the identifier for the time zone definition for a
time value.
Conformance: Optional
Format Definition: This property parameter is defined by the
following notation:
tzidparm = "TZID" "=" [tzidprefix] paramtext CRLF
tzidprefix = "/"
Description: The parameter MAY only be used on the "DTSTART",
"DTEND", "DUE", "EXDATE" and "RDATE " properties when either a DATE-
TIME or TIME value type is specified. This property parameter
specifies a text value which uniquely identifies the "VTIMEZONE"
calendar component to be used when evalating 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 "TIMEZONE" object.
The presence of the SOLIDUS character (ASCII decimal 47) as a prefix,
indicates that this TZID represents a unique ID in a globally defined
time zone registry (when such registry is defined).
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-TIME nor 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 a local time value,
regardless of the existence of "VTIMEZONE" calendar components in the
iCalendar object.
Dawson/Stenerson 18 Expires September 1998
For more information see the sections on the data types DATE-TIME and
TIME.
4.2.5 Value Data Types
Parameter Name: VALUE
Purpose: To explicitly specify the data type format for a property
value.
Conformance: Optional if using the default value type in a property
value. Otherwise, it is required.
Format Definition: The "VALUE" property parameter is defined by the
following notation:
valuetypeparm = "value" "=" valuetype valuetypeparm = "value" "=" valuetype
valuetype = "boolean" valuetype = "binary"
/ "boolean"
/ "cal-address" / "cal-address"
/ "date" / "date"
/ "date-time" / "date-time"
/ "duration" / "duration"
/ "float" / "float"
/ "integer" / "integer"
Dawson/Stenerson 15 Expires MAY 1998
/ "period" / "period"
/ "recur" / "recur"
/ "text" / "text"
/ "time" / "time"
/ "uri" / "uri"
/ "utc-offset" / "utc-offset"
/ x-name / x-name
;Some experimental iCalendar data type. ;Some experimental iCalendar data type.
/ iana-token / iana-token
;Some other IANA registered iCalendar data type. ;Some other IANA registered iCalendar data type.
The following data types are defined by this memo. Description: The parameter is used to identify the data 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.
4.1.10.1 Boolean 4.3 Property Value Data Types
The "BOOLEAN" data type is used to identify properties that contain The properties in an iCalendar object are strongly typed. The
either a "true" or a "false" boolean value. These values are case definition of each property restricts the value to be one of the
insensitive. The data type is defined by the following notation: 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.
Dawson/Stenerson 19 Expires September 1998
4.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 an object code MAY BE included in an iCalendar object.
Formal Definition: The value type is defined by the following
notation:
binary = *(4b-char) [b-end]
; A "B" encoded character string, as defined by [RFC 2047].
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=B". That is, all
inline binary data MUST first be character encoded using the "B"
encoding method defined in [RFC 2047]. No additional content value
encoding (i.e., BACKSLASH character encoding) is defined for this
value type.
Example: The following is an abridged example of a "B" encoded binary
value data.
ATTACH;VALUE=BINARY:MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQA
wdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb
25zIENvcnBvcmF0aW9uMRwwGgYDVQQLExNJbmZvcm1hdGlvbiBTeXN0
<...remainder of "B" encoded binary data...>
4.3.2 Boolean
Value Name: BOOLEAN
Purpose: This value type is used to identify properties that contain
either a "true" or "false" boolean value.
Formal Definition: The value type is defind by the following
notation:
boolean = "TRUE" / "FALSE" boolean = "TRUE" / "FALSE"
For example, any of the following are equivalent: Description: These values are case insensitive text. No additional
content value encoding (i.e., BACKSLASH character encoding) is
defined for this value type.
TRUE Example: For example, any of the following are equivalent:
true
TrUe
4.1.10.2 Calendar User Address TRANSP;VALUE=BOOLEAN:TRUE
TRANSP;VALUE=BOOLEAN:true
TRANSP;VALUE=BOOLEAN:TrUe
The "CAL-ADDRESS" data type is used to identify properties that Dawson/Stenerson 20 Expires September 1998
contain an address of a calendar user. The value is a URI as defined
by [RFC 1738] or any other IANA registered form for a URI. When used 4.3.3 Calendar User Address
to address an Internet email transport address for a calendar user,
the value MUST be a MAILTO URI, as defined by [RFC 1738]. The data Value Name: CAL-ADDRESS
type is as defined by the following notation:
Purpose: This value type is used to identify properties that contain
a calendar user address.
Formal Definition: The value type is as defined by the following
notation:
cal-address = uri cal-address = uri
4.1.10.3 Date Description: The value is a URI as defined by [RFC 1738] or any other
IANA registered form for a URI. When used to address an Internet
email transport address for a calendar user, the value MUST be a
MAILTO URI, as defined by [RFC 1738].No additional content value
encoding (i.e., BACKSLASH character encoding) is defined for this
value type.
The "DATE" data type is used to identify values that contain a Example:
calendar date. The format is expressed as the [ISO 8601] complete
representation, basic format for a calendar date. The text format ATTENDEE;VALUE=CAL-ADDRESS:MAILTO:jane_doe@host.com
specifies a four-digit year, two-digit month, and two-digit day of
the month. There are no separator characters between the year, month 4.3.4 Date
and day component text. The data type is defined by the following
Value Name: DATE
Purpose: This value type is used to identify values that contain a
calendar date.
Formal Definition: The value type is defined by the following
notation: notation:
date = date-value *("," [WSP] date-value)
date-value = date-fullyear date-month date-mday
date-fullyear = 4DIGIT date-fullyear = 4DIGIT
date-month = 2DIGIT ;01-12 date-month = 2DIGIT ;01-12
date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31 date-mday = 2DIGIT ;01-28, 01-29, 01-30, 01-31
;based on month/year ;based on month/year
date = date-fullyear date-month date-mday Description: If the property permits, multiple "date" values MAY be
specified using a COMMA character (ASCII decimal 44) separator
character.The format for the value type is expressed as the [ISO
8601] 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.
Dawson/Stenerson 16 Expires MAY 1998 No additional content value encoding (i.e., BACKSLASH character
For example, the following represents July 14, 1997: encoding) is defined for this value type.
Example: The following represents July 14, 1997:
Dawson/Stenerson 21 Expires September 1998
19970714 19970714
4.1.10.4 Date-Time 4.3.5 Date-Time
Value Name: DATE-TIME
Purpose: This value type is used to identify values that specify a
precise calendar data and time of day.
Formal Definition: The value type is defined by the following
notation:
date-time = dt-value *("," [WSP] dt-value)
dt-value = date "T" time ;As specified above in date and time
Description: If the property permits, multiple "date-time" values MAY
be specified using a COMMA character (ASCII decimal 44) separator
character. No additional content value encoding (i.e., BACKSLASH
character encoding) is defined for this value type.
The "DATE-TIME" data type is used to identify values that contain a The "DATE-TIME" data type is used to identify values that contain a
precise calendar date and time of day. The format is expressed as the precise calendar date and time of day. The format is based on the
[ISO 8601] complete representation, basic format for a calendar date [ISO 8601] complete representation, basic format for a calendar date
and time of day. The text format is a concatenation of the "date", and time of day. The text format is a concatenation of the "date",
followed by the LATIN CAPITAL LETTER T character (ASCII decimal 84) followed by the LATIN CAPITAL LETTER T character (ASCII decimal 84)
time designator, followed by the "time" format defined below. The time designator, followed by the "time" format.
data type is defined by the following notation:
date-time = date "T" time ;As specified above in date and time The "DATE-TIME" data type expresses time values in three forms:
The following represents July 14, 1997, at 1:30 PM in UTC and the The form of date and time with UTC offset MUST NOT be used. For
equivalent time in New York (four hours behind UTC in DST), expressed example, the following is not valid for a date-time value:
as a local time and local time with UTC offset:
19970714T133000Z DTSTART:19980119T230000-0800
19970714T083000
19970714T083000-0400
4.1.10.5 Duration FORM #1: DATE WITH LOCAL TIME
The "DURATION" data type is used to identify properties that contain The date with local time form is simply a date-time value that does
a duration of time. The format is expressed as the [ISO 8601] basic not contain the UTC designator nor does it reference a time zone. For
format for the duration of time. The format can represent durations example, the following represents Janurary 18, 1998, at 11 PM:
in terms of years, months, days, hours, minutes, and seconds. The
data type is defined by the following notation:
dur-second = 1*DIGIT "S" DTSTART:19980118T230000
dur-minute = 1*DIGIT "M" [dur-second]
dur-hour = 1*DIGIT "H" [dur-minute] Date-time values of this type are said to be "floating" and are not
dur-time = "T" (dur-hour / dur-minute / dur-second) 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 MAY be defined that
indicates that an individual will be busy from 11:00 AM to 1:00 PM
every day, no matter which timezone the person is in. In these cases,
a local time MAY 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 timezone the ATTENDEE is in at any given moment.
This means that two ATTENDEEs may participate in the same event at
Dawson/Stenerson 22 Expires September 1998
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 DATE-TIME value without the TZID property
parameter is to be interpreted as a local time value, 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 (ASCII decimal 90), the UTC
designator, appended to the time value. For example, the following
represents January 19, 1998, at 0700 UTC:
DTSTART: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 the
section on Time Zone. For example, the following represents 2 AM in
New York on Janurary 19, 1998:
DTSTART;TZID=America-New_York:19980119T020000
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:19970714T153000Z ;UTC time
DTSTART;TZID=America-NYC:19970714T133000 ;Local time and time
; zone reference
4.3.6 Duration
Value Name: DURATION
Purpose: This value type is used to identify properties that contain
a duration of time.
Formal Definition: The value type is defined by the following
notation:
duration = dur-value *("," [WSP] dur-value)
Dawson/Stenerson 23 Expires September 1998
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-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" dur-day = 1*DIGIT "D"
dur-month = 1*DIGIT "M" [dur-day]
dur-year = 1*DIGIT "Y" [dur-month]
dur-date = (dur-day / dur-month / dur-year) [dur-time]
duration = (["+"] / "-") "P" (dur-date / dur-time / dur-week) Description: If the property permits, multiple "duration" values MAY
be specified using a COMMA character (ASCII decimal 44) separator
character.The format is expressed as the [ISO 8601] basic format for
the duration of time. The format can represent durations in terms of
years, months, days, hours, minutes, and seconds.
For example, a duration of 10 years, 3 months, 15 days, 5 hours, 30 No additional content value encoding (i.e., BACKSLASH character
minutes and 20 seconds would be: encoding) are defined for this value type.
P10Y3M15DT5H30M20S Example: A duration of 15 days, 5 hours, 30 minutes and 20 seconds
would be:
4.1.10.6 Float P15DT5H30M20S
The "FLOAT" data type is used to identify properties that contain a A duration of 7 weeks would be:
real value number value. If the property permits, multiple "float"
Dawson/Stenerson 17 Expires MAY 1998 P15DT5H30M20S
values MAY be specified using a COMMA character (ASCII decimal 44)
separator character. The data type is defined by the following 4.3.7 Float
Value Name: FLOAT
Purpose: This value type is used to identify properties that contain
a real value number value.
Formal Definition: The value type is defined by the following
notation: notation:
float = (["+"] / "-") 1*DIGIT ["." 1*DIGIT] float = float-value *("," [WSP] float-value)
For example: float-value = (["+"] / "-") 1*DIGIT ["." 1*DIGIT]
Description: If the property permits, multiple "float" values MAY be
specified using a COMMA character (ASCII decimal 44) separator
character.
No additional content value encoding (i.e., BACKSLASH character
encoding) is defined for this value type.
Example:
Dawson/Stenerson 24 Expires September 1998
1000000.0000001 1000000.0000001
1.333 1.333
-3.14 -3.14
4.1.10.7 Integer 4.3.8 Integer
The "INTEGER" data type is used to identify properties that contain a Value Name:INTEGER
signed integer value. The valid range for "integer" is -2147483648 to
2147483647. If the sign is not specified, then the value is assumed
to be positive. If the property permits, multiple "integer" values
MAY be specified using a COMMA character (ASCII decimal 44) separator
character. The data type is defined by the following notation:
integer = (["+"] / "-") *DIGIT Purpose: This value type is used to identify properties that contain
a signed integer value.
For example: Formal Definition: The value type is defined by the following
notation:
integer = integer-value *("," [WSP] integer-value)
integer-value = (["+"] / "-") *DIGIT
Description: If the property permits, multiple "integer" values MAY
be specified using a COMMA character (ASCII decimal 44) separator
character.The valid range for "integer" is -2147483648 to 2147483647.
If the sign is not specified, then the value is assumed to be
positive. If the property permits, multiple "integer" values MAY be
specified using a COMMA character (ASCII decimal 44) separator
character.
No additional content value encoding (i.e., BACKSLASH character
encoding) is defined for this value type.
Example:
1234567890 1234567890
-1234567890 -1234567890
+1234567890 +1234567890
432109876 432109876
4.1.10.8 Period of Time 4.3.9 Period of Time
The "PERIOD" data type is used to identify values that contain a
precise period of time. There are two forms of a period of time.
A period of time MAY be identified by it's start and it's end. This Value Name: PERIOD
format is expressed as the [ISO 8601] complete representation, basic
format for "DATE-TIME" start of the period, followed by a SOLIDUS
character (ASCII decimal 47), followed by the "DATE-TIME" of the end
of the period. For example, the period starting at 10 AM in Seattle
(eight hours behind UTC) on January 1, 1997 and ending at 11 PM in
Seattle on January 1, 1997 would be:
19970101T100000-0800/19970101T230000-0800 Purpose: This value type is used to identify values that contain a
precise period of time.
A period of time MAY also be defined by a start and a duration of Formal Definition: The data type is defined by the following
time. The format is expressed as the [ISO 8601] complete notation:
representation, basic format for the "DATE-TIME" start of the period,
followed by a SOLIDUS character (ASCII decimal 47), followed by the
[ISO 8601] basic format for "DURATION" of the period. For example,
the period start at 10 AM in Seattle (eight hours behind UTC) on
January 1, 1997 and lasting 5 hours and 30 minutes would be:
19970101T100000-0800/PT5H30M period = period-value *("," [WSP] period-value)
Dawson/Stenerson 18 Expires MAY 1998 period-value = period-explicit / period-start
The data type is defined by the following notation:
period-explicit = date-time "/" date-time period-explicit = date-time "/" date-time
;ISO 8601 complete representation basic format for a period of time ;ISO 8601 complete representation basic format for a period of time
;consisting of a start and end. The start MUST be before the end. ;consisting of a start and end. The start MUST be before the end.
Dawson/Stenerson 25 Expires September 1998
period-start = date-time "/" duration period-start = date-time "/" duration
;ISO 8601 complete representation basic format for a period of time ;ISO 8601 complete representation basic format for a period of time
;consisting of a start and duration of time. ;consisting of a start and duration of time.
period = period-explicit / period-start Description: If the property permits, multiple "period" values MAY be
specified using a COMMA character (ASCII decimal 44) separator
character. There are two forms of a period of time. A period of time
MAY be identified by it's start and it's end. This format is
expressed as the [ISO 8601] complete representation, basic format for
"DATE-TIME" start of the period, followed by a SOLIDUS character
(ASCII decimal 47), followed by the "DATE-TIME" of the end of the
period. A period of time MAY also be defined by a start and a
duration of time. The format is expressed as the [ISO 8601] complete
representation, basic format for the "DATE-TIME" start of the period,
followed by a SOLIDUS character (ASCII decimal 47), followed by the
[ISO 8601] basic format for "DURATION" of the period.
4.1.10.9 Recurrence Rule 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:
The "RECUR" data type is used to identify properties that contain a 19970101T180000Z/19970102T070000Z
recurrence rule specification. The data type is a structured value
consisting of a list of one or more recurrence grammar components. The period start at 18:00:00 on January 1, 1997 and lasting 5 hours
Each component is defined by a NAME=VALUE pair. The components are and 30 minutes would be:
separated from each other by the SEMICOLON character (ASCII decimal
59). The components are not ordered in any particular sequence. 19970101T180000Z/PT5H30M
Individual components MAY only be specified once.
No additional content value encoding (i.e., BACKSLASH character
encoding) is defined for this value type.
4.3.10 Recurrence Rule
Value Name: RECURR
Purpose: This value type is used to identify properties that contain
a recurrence rule specification.
Formal Definition: The value type is defined by the following
notation:
recur = recur-value *("," [WSP] recur-value)
recur-value = "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 ";"]
Dawson/Stenerson 26 Expires September 1998
["WKST" "=" weekday ";")]
*(x-name "=" text) ";"
;Individual components MAY only be specified once.
;Rule components need not be specified in particular any order.
freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY"
/ "WEEKLY" / "MONTHLY" / "YEARLY"
enddate = date
enddate =/ date-time ;A UTC value
byseclist = seconds / ( seconds *("," seconds) )
seconds = 1DIGIT / 2DIGIT ;0 to 59
byminlist = minutes / ( minutes *("," minutes) )
minutes = 1DIGIT / 2DIGIT ;0 to 59
byhrlist = hour / ( hour *("," hour) )
hour = 1DIGIT / 2DIGIT ;0 to 23
bywdaylist = weekdaynum / ( weekdaynum *("," weekdaynum) )
weekdaynum = [([plus] ordwk / minus ordwk)] weekday
plus = "+"
minus = "-"
ordwk = 1DIGIT / 2DIGIT ;1 to 53
weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA"
;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
;FRIDAY, SATURDAY and SUNDAY days of the week.
bymodaylist = monthdaynum / ( monthdaynum *("," monthdaynum) )
monthdaynum = ([plus] ordmoday) / (minus ordmoday)
ordmoday = 1DIGIT / 2DIGIT ;1 to 31
byyrdaylist = yeardaynum / ( yeardaynum *("," yeardaynum) )
yeardaynum = ([plus] ordyrday) / (minus ordyrday)
ordyrday = 1DIGIT / 2DIGIT / 3DIGIT ;1 to 366
bywknolist = weeknum / ( weeknum *("," weeknum) )
weeknum = ([plus] ordwk) / (minus ordwk)
bymolist = monthnum / ( monthnum *("," monthnum) )
Dawson/Stenerson 27 Expires September 1998
monthnum = 1DIGIT / 2DIGIT ;1 to 12
bysplist = setposday / ( setposday *("," setposday) )
setposday = yeardaynum
Description: If the property permits, multiple "recur" values MAY be
specified using a COMMA character (ASCII decimal 44) separator
character. The value type is a structured value consisting of a list
of one or more recurrence grammar components. Each component is
defined by a NAME=VALUE pair. The components are separated from each
other by the SEMICOLON character (ASCII decimal 59). The components
are not ordered in any particular sequence. Individual components MAY
only be specified once.
The FREQ component identifies the type of recurrence rule. This The FREQ component identifies the type of recurrence rule. This
component MUST be specified in the recurrence rule. Valid values component MUST be specified in the recurrence rule. Valid values
include SECONDLY, to specify repeating events based on an interval of include SECONDLY, to specify repeating events based on an interval of
a second or more; MINUTELY, to specify repeating events based on an a second or more; MINUTELY, to specify repeating events based on an
interval of a minute or more; HOURLY, to specify repeating events interval of a minute or more; HOURLY, to specify repeating events
based on an interval of an hour or more; DAILY, to specify repeating 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 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 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 specify repeating events based on an interval of a month or more; and
skipping to change at line 1006 skipping to change at line 1462
UNTIL is synchronized with the specified recurrence, this date-time UNTIL is synchronized with the specified recurrence, this date-time
becomes the last instance of the recurrence. If not present, and the becomes the last instance of the recurrence. If not present, and the
COUNT component is also not present, the RRULE is considered to COUNT component is also not present, the RRULE is considered to
repeat forever. repeat forever.
The COUNT component defines the number of occurrences at which to The COUNT component defines the number of occurrences at which to
range-bound the recurrence. This component is ignored if the "UNTIL" range-bound the recurrence. This component is ignored if the "UNTIL"
component is also present. component is also present.
The BYSECOND component specifies a COMMA character (ASCII decimal 44) The BYSECOND component specifies a COMMA character (ASCII decimal 44)
separated list of seconds within a minute. Valid values are 0 to 60. separated list of seconds within a minute. Valid values are 0 to 59.
Dawson/Stenerson 19 Expires MAY 1998
Zero is the beginning of the minute and 60 is the beginning of the
next minute.
The BYMINUTE component specifies a COMMA character (ASCII decimal 44) The BYMINUTE component specifies a COMMA character (ASCII decimal 44)
separated list of minutes within an hour. Valid values are 0 to 60. separated list of minutes within an hour. Valid values are 0 to 59.
Zero is the beginning of the hour and 60 is the beginning of the next
hour.
The BYHOUR component specifies a COMMA character (ASCII decimal 44) The BYHOUR component specifies a COMMA character (ASCII decimal 44)
separated list of hours of the day. Valid values are 0 to 24. Zero is separated list of hours of the day. Valid values are 0 to 23.
the start of the day and 24 is the start of the next day.
The BYDAY component specifies a COMMA character (ASCII decimal 44) The BYDAY component specifies a COMMA character (ASCII decimal 44)
separated list of days of the week; MO, indicates Monday; TU, separated list of days of the week; MO, indicates Monday; TU,
Dawson/Stenerson 28 Expires September 1998
indicates Tuesday; WE, indicates Wednesday; TH, indicates Thursday; indicates Tuesday; WE, indicates Wednesday; TH, indicates Thursday;
FR, indicates Friday; SA, indicates Saturday; SU, indicates Sunday. FR, indicates Friday; SA, indicates Saturday; SU, indicates Sunday.
Each BYDAY value MAY also be preceded by a positive (+n) or negative Each BYDAY value MAY also be preceded by a positive (+n) or negative
(-n) integer. If present, this indicates the nth occurrence of the (-n) integer. If present, this indicates the nth occurrence of the
specific day within the MONTHLY or YEARLY RRULE. For example, within specific day within the MONTHLY or YEARLY RRULE. For example, within
a MONTHLY rule, +1MO (or simply 1MO) represents the first Monday a MONTHLY rule, +1MO (or simply 1MO) represents the first Monday
within the month, whereas -1MO represents the last Monday of the within the month, whereas -1MO represents the last Monday of the
month. If an integer modifier is not present, it means all days of month. If an integer modifier is not present, it means all days of
this type within the specified frequency. For example, within a this type within the specified frequency. For example, within a
MONTHLY rule, MO represents all Mondays within the month. MONTHLY rule, MO represents all Mondays within the month.
The BYMONTHDAY component specifies a COMMA character (ASCII decimal The BYMONTHDAY component specifies a COMMA character (ASCII decimal
44) separated list of days of the month. Valid values are 1 to 31 or 44) separated list of days of the month. Valid values are 1 to 31 or
-31 to -1. -31 to -1.
Each BYMONTHDAY value MAY include a postive (+n) or negative (-n) Each BYMONTHDAY value MAY include a positive (+n) or negative (-n)
integer. If present, this indicates the nth occurrence of the integer. If present, this indicates the nth occurrence of the
specific day of the month within the MONTHLY rule. If an integer specific day of the month within the MONTHLY rule. If an integer
modifier is not present, it means all days of this type within the modifier is not present, it means all days of this type within the
specified frequency. For example, within a MONTHLY rule, -10 specified frequency. For example, within a MONTHLY rule, -10
represents the tenth to the last day of the month. represents the tenth to the last day of the month.
The BYYEARDAY component specifies a COMMA character (ASCII decimal The BYYEARDAY component specifies a COMMA character (ASCII decimal
44) separated list of days of the year. Valid values are 1 to 366 or 44) 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 -366 to -1. For example, -1 represents the last day of the year
(December 31st). (December 31st).
skipping to change at line 1063 skipping to change at line 1512
according to week numbering as defined in [ISO 8601]. That is, a week according to week numbering as defined in [ISO 8601]. That is, a week
as "A seven day period within a calendar year, starting on a Monday as "A seven day period within a calendar year, starting on a Monday
and identified by its ordinal number within the year; the first and identified by its ordinal number within the year; the first
calendar week of the year is the one that includes the first Thursday calendar week of the year is the one that includes the first Thursday
of that year." This component is only valid for YEARLY rules. of that year." This component is only valid for YEARLY rules.
Each BYWEEKNO value MAY include a positive (+n) or negative (-n) Each BYWEEKNO value MAY include a positive (+n) or negative (-n)
integer. If present, this indicates the nth occurrence of the integer. If present, this indicates the nth occurrence of the
specific week of the year within the YEARLY rule. If an integer specific week of the year within the YEARLY rule. If an integer
modifier is not present, it means all days of this type within the modifier is not present, it means all days of this type within the
Dawson/Stenerson 20 Expires MAY 1998
specified frequency. For example, within a YEARLY rule, 3 represents specified frequency. For example, within a YEARLY rule, 3 represents
the third week of the year. the third week of the year.
The BYMONTH component specifies a comma separated list of months of The BYMONTH component specifies a comma separated list of months of
the year. Valid values are 1 to 12. the year. Valid values are 1 to 12.
The WKST component specifies the day on which the workweek starts. The WKST component specifies the day on which the workweek starts.
Valid values are MO, TU, WE, TH, FR, SA and SU. This is significant Valid values are MO, TU, WE, TH, FR, SA and SU. This is significant
when a WEEKLY RRULE has an interval greater than 1, and a BYDAY when a WEEKLY RRULE has an interval greater than 1, and a BYDAY
component is specified. The default value is MO. component is specified. The default value is MO.
The BYSETPOS component specifies a COMMA character (ASCII decimal 44) The BYSETPOS component specifies a COMMA character (ASCII decimal 44)
separated list of values which corresponds to the nth occurrence separated list of values which corresponds to the nth occurrence
within the set of events specified by the rule. Valid values are 1 to within the set of events specified by the rule. Valid values are 1 to
Dawson/Stenerson 29 Expires September 1998
366 or -366 to -1. It MUST only be used in conjunction with another 366 or -366 to -1. It MUST only be used in conjunction with another
Byxxx component. For example "the last work day of the month" could Byxxx component. For example "the last work day of the month" could
be represented as: be represented as:
RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
Each BYSETPOS value MAY include a positive (+n) or negative (-n) Each BYSETPOS value MAY include a positive (+n) or negative (-n)
integer. If present, this indicates the nth occurrence of the integer. If present, this indicates the nth occurrence of the
specific occurrence within the set of events specified by the rule. specific occurrence within the set of events specified by the rule.
skipping to change at line 1116 skipping to change at line 1565
of occurrences of the recurrence. For example, of occurrences of the recurrence. For example,
"FREQ=YEARLY;BYMONTH=1,2" increases the number of days within the "FREQ=YEARLY;BYMONTH=1,2" increases the number of days within the
yearly recurrence set from 1 (if BYMONTH tag is not present) to 2. yearly recurrence set from 1 (if BYMONTH tag is not present) to 2.
If only one BYxxx component is specified in the recurrence rule, the If only one BYxxx component is specified in the recurrence rule, the
list of "n" unique values would cause "n" occurrences of the list of "n" unique values would cause "n" occurrences of the
recurrence within each specified frequency interval, where each recurrence within each specified frequency interval, where each
unique list value is substituted in the appropriate date position unique list value is substituted in the appropriate date position
within DTSTART for each such occurrence. within DTSTART for each such occurrence.
If multiple BYxxx components are specified, then the list of "n" If multiple BYxxx components are specified, then after evaluating the
unique values for each lower frequency BYxxx components is applied to specified FREQ and INTERVAL components, the BYxxx components are
the list of "n" unique values for higher frequency BYxxx components. applied to the current set of evaluated occurrences in the following
order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR,
Dawson/Stenerson 21 Expires MAY 1998 BYMINUTE, BYSECOND and BYSETPOS.
This process will not always increase the set of occurrences. If a
higher component is inconsistent with what was generated for lower
components, it would reduce the set. The ordering of BYxxx components
from lower frequency to higher frequency is as follows: BYMINUTE,
BYHOUR, BYDAY, BYMONTHDAY, BYYEARDAY, BYWEEKNO, BYMONTH, BYSETPOS.
Here is an example of evaluating multiple BYxxx components. Here is an example of evaluating multiple BYxxx components.
"FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30" DTSTART;TZID=EST=19970105T083000
RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;
would first apply the "BYMINUTE=30" To "BYHOUR=8,9" to arrive at BYMINUTE=30
"every 8:30AM and 9:30AM". This in turn would be applied to
"BYDAY=SU" to arrive at "every Sunday at 8:30AM and 9:30AM". This
would be applied to "BYMONTH=1" to arrive at "every Sunday in January
at 8:30AM and 9:30AM". Considering the FREQUENCY and INTERVAL, this
would become "Every Sunday in January at 8:30AM and 9:30AM, every
other year". If the BYMINUTE, BYDAY, BYMONTHDAY, BYYEARDAY, BYHOUR or
BYMONTH component was missing, the appropriate mintues, hour, day or
month would have been retrieved from DTSTART.
The data type is defined by the following notation:
recur = "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 ";")]
*("X-" word "=" word) ";"
;Individual components MAY only be specified once.
;Rule components need not be specified in particular any order.
freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY"
/ "WEEKLY" / "MONTHLY" / "YEARLY"
enddate = date ;A UTC value
byseclist = seconds / ( seconds *("," seconds) ) 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
seconds = 1DIGIT / 2DIGIT ;0 to 60 Dawson/Stenerson 30 Expires September 1998
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". Similarly, if the BYMINUTE, BYHOUR,
BYDAY, BYMONTHDAY or BYMONTH component were missing, the appropriate
minute, hour, day or month would have been retrieved from the
"DTSTART" property.
byminlist = minutes / ( minutes *("," minutes) ) No additional content value encoding (i.e., BACKSLASH character
encoding) is defined for this value type.
minutes = 1DIGIT / 2DIGIT ;0 to 60 Example: The following is a rule which specifies 10 meetings which
occur every other day:
byhrlist = hour / ( hour *("," hour) ) FREQ=DAILY;COUNT=10;INTERVAL=2
Dawson/Stenerson 22 Expires MAY 1998 There are other examples specified in the "RRULE" specification.
hour = 1DIGIT / 2DIGIT ;0 to 24
bywdaylist = weekdaynum / ( weekdaynum *("," weekdaynum) ) 4.3.11 Text
weekdaynum = [([plus] ordwk / minus ordwk)] weekday Value Name: TEXT
plus = "+" Purpose This value type is used to identify values that contain human
readable text.
minus = "-" Formal Definition: The value type is defined by the following
notation:
ordwk = 1DIGIT / 2DIGIT ;1 to 53 text = text-value *("," text-value)
; Folded according to folded-value syntax above or
; encoded according to param-value syntax above.
weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" text-value = *(SAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR)
;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
;FRIDAY, SATURDAY and SUNDAY days of the week.
bymodaylist = monthdaynum / ( monthdaynum *("," monthdaynum) ) ESCAPED-CHAR = "\\" / "\;" / "\," / "\N" / "\n")
; \\ encodes \, \N or \n encodes newline
; \; encodes ;, \, encodes ,
monthdaynum = ([plus] ordmoday) / (minus ordmoday) NON-ASCII = %x80-FF
; use restricted by charset parameter
; on outer MIME object
ordmoday = 1DIGIT / 2DIGIT ;1 to 31 SAFE-CHAR = %x20-21 / %x23-2B / %x2D-39 / %x3C-5B
%x5D-7E / NON-ASCII
; Any character except CTLs, DQUOTE, ";", ":", "\", ","
byyrdaylist = yeardaynum / ( yeardaynum *("," yeardaynum) ) Description: If the property permits, multiple "text" values MAY be
specified using a COMMA character (ASCII decimal 44) separator
character. The character set and language in which the text is
represented is controlled by the "LANGUAGE" property parameters.
yeardaynum = ([plus] ordyrday) / (minus ordyrday) An intentional formatted text line break MAY only be included in a
"TEXT" property value by representing the line break with the
character sequence of BACKSLASH (ASCII decimal 92), followed by a
ordyrday = 1DIGIT / 2DIGIT / 3DIGIT ;1 to 366 Dawson/Stenerson 31 Expires September 1998
LATIN SMALL LETTER N (ASCII decimal 110) or a LATIN CAPITAL LETTER N
(ASCII decimal 78), that is "\n" or "\N".
bywknolist = weeknum / ( weeknum *("," weeknum) ) 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 need to be escaped with a BACKSLASH character. A
BACKSLASH character (ASCII decimal 92) 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
(ASCII decimal 92). A SEMICOLON character in a "TEXT" property value
MUST be escaped with a BACKSLASH character (ASCII decimal 92).
However, a COLON character in a "TEXT" property value SHALL NOT be
escaped with a BACKSLASH character.Example: A multiple line value of:
weeknum = ([plus] ordwk) / (minus ordwk) Project XYZ Final Review
Conference Room - 3B
Come Prepared.
bymolist = monthnum / ( monthnum *("," monthnum) ) would be represented as:
monthnum = 1DIGIT / 2DIGIT ;1 to 12 Project XYZ Final Review\n Conference Room - 3B\nCome Prepared.
bysplist = setposday / ( setposday *("," setposday) ) 4.3.12 Time
setposday = yeardaynum Value Name: TIME
For example, the following is a rule which specifies 10 meetings Purpose: This value type is used to identify values that contain a
which occur every other day: time of day.
FREQ=DAILY;COUNT=10;INTERVAL=2 Formal Definition: The data type is defined by the following
notation:
There are other examples specified in the "RRULE" specification. time = time-value *("," [WSP] time-value)
4.1.10.10 Text time-value = time-hour time-minute time-second [time-utc]
The "TEXT" data type is used to identify values that contain human time-hour = 2DIGIT ;00-23
readable text. The character set and language in which the text is time-minute = 2DIGIT ;00-59
represented is controlled by the "LANGUAGE" property parameters. The time-second = 2DIGIT ;00-60
data type is defined by the ABNF for "text" in section 4.1.1. ;The "60" value is used to account for years with "leap" seconds.
Dawson/Stenerson 23 Expires MAY 1998 time-utc = "Z"
4.1.10.11 Time Description: If the property permits, multiple "time" values MAY be
specified using a COMMA character (ASCII decimal 44) separator
character. No additional content value encoding (i.e., BACKSLASH
character encoding) is defined for this value type.
The "TIME" data type is used to identify values that contain a time The "TIME" data type is used to identify values that contain a time
of day. The format is expressed as the [ISO 8601] complete of day. The format is based on the [ISO 8601] complete
Dawson/Stenerson 32 Expires September 1998
representation, basic format for a time of day. The text format representation, basic format for a time of day. The text format
consists of a two-digit 24-hour of the day (i.e., values 0-23), two- consists of a two-digit 24-hour of the day (i.e., values 0-23), two-
digit minute in the hour (i.e., values 0-59), and two-digit seconds digit minute in the hour (i.e., values 0-59), and two-digit seconds
in the minute (i.e., values 0-59). If seconds of the minute are not in the minute (i.e., values 0-59). Fractions of a second are not
supported by an implementation, then a value of "00" should be supported by this format.
specified for the seconds component. Fractions of an hour, minute or
second are not supported by this format. This format is used to
represent local time, local time with UTC offset and UTC time. UTC
time is identified by a LATIN CAPITAL LETTER Z suffix character
(ASCII decimal 90), the UTC designator, appended to the time. The
local time with UTC offset is expressed as a local time, suffixed
with the signed offset from UTC. The UTC offset is express as the 2-
digit hours and 2-digit minutes difference from UTC. It is expressed
as positive, with a leading PLUS SIGN character (ASCII decimal 43),
if the local time is ahead of UTC. It is expressed as a negative,
with a leading HYPEN-MINUS character (ASCII decimal 45), if the local
time is behind UTC. Local time has neither the UTC designator nor the
UTC offset suffix text. The data type is defined by the following
notation:
time-hour = 2DIGIT ;00-23 In parallel to the "DATE-TIME" definition above, the "TIME" data type
time-minute = 2DIGIT ;00-59 expresses time values in three forms:
time-second = 2DIGIT ;00-60
;The "60" value is used to account for years with "leap" seconds.
time-numzone = ("+" / "-") time-hour time-minute
time-zone = "Z" / time-numzone
time = time-hour time-minute time-second [time-zone] Note: The form of time with UTC offset MUST NOT be used. For example,
the following is NOT VALID for a time value:
For example, the following represents 8:30 AM in New York, five hours 230000-0800
behind UTC, in local time and local time with UTC offset. In
addition, 1:30 PM in UTC is illustrated:
083000 FORM #1 LOCAL TIME
083000-0500
133000Z
There are cases when a floating time is intended within a property The local time form is simply a time value that does not contain the
value. For example, an event MAY be defined that indicates that an UTC designator nor does it reference a time zone. For example, 11 PM:
individual will be busy from 11:00 AM to 1:00 PM every day. In these
cases, a local time MAY be specified. The recipient of an iCalendar 230000
object with a property value consisting of a local time, without any
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 MAY be defined that
indicates that an individual will be busy from 11:00 AM to 1:00 PM
every day, no matter which timezone the person is in. In these cases,
a local time MAY 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 relative time zone information, should interpret the value as being
fixed to the recipient's locale and time zone. In most cases, a fixed fixed to whatever timezone the ATTENDEE is in at any given moment.
time is desired. To properly communicate a fixed time in a property This means that two ATTENDEEs may participate in the same event at
value, either UTC, local time with UTC offset, or local time with a different UTC times; floating time should only be used where that is
"VTIMEZONE" calendar component MUST be specified. reasonable behavior.
Dawson/Stenerson 24 Expires MAY 1998 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.
4.1.10.12 URI The use of local time in a TIME value without the TZID property
parameter is to be interpreted as a local time value, regardless of
the existence of "VTIMEZONE" calendar components in the iCalendar
object.
The "URI" data type is used to identify values that contain a uniform FORM #2: DATE WITH UTC TIME
resource identifier (URI) type of reference to the property value.
This data type might be used to reference binary information, for
values that are large, or otherwise undesirable to include directly
in the iCalendar object.
The URI value formats in RFC 1738, RFC 2111 and any other IETF UTC time, or absolute time, is identified by a LATIN CAPITAL LETTER Z
registered value format MAY be specified. suffix character (ASCII decimal 90), the UTC designator, appended to
the time value. For example, the following represents 0700 UTC:
The data type is defined by the following notation: 070000Z
The TZID property parameter MUST NOT be applied to TIME properties
whose time values are specified in UTC.
Dawson/Stenerson 33 Expires September 1998
FORM #3: DATE WITH 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 the
section on Time Zone.
Example: The following represents 8:30 AM in New York, five hours
behind UTC, in each of the three formats using the "DTSTART"
property:
DTSTART:19980312T083000
DTSTART:19980312T133000Z
DTSTART;TZID=America-New York:19980312T083000
4.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.
Formal Definition: The data type is defined by the following
notation:
uri = <As defined by any IETF RFC> uri = <As defined by any IETF RFC>
Description: This data type might be used to reference binary
information, for values that are large, or otherwise undesirable to
include directly in the iCalendar object.
The URI value formats in RFC 1738, RFC 2111 and any other IETF
registered value format MAY be specified.
Any IANA registered URI format MAY be used. These include, but are Any IANA registered URI format MAY be used. These include, but are
not limited to, those defined in RFC 1738 and RFC 2111. not limited to, those defined in RFC 1738 and RFC 2111.
For example, the following is a URI for a network file: 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) is defined for this value type.
Example: The following is a URI for a network file:
http://host1.com/my-report.txt http://host1.com/my-report.txt
4.1.10.13 UTC Offset 4.3.14 UTC Offset
The "UTC-OFFSET" data type is used to identify properties that Value Name: UTC-OFFSET
contain an offset from UTC to local time. The data type is defined by
the following notation:
utc-offset = time-numzone ;As defined above in time data type Dawson/Stenerson 34 Expires September 1998
Purpose: This value type is used to identify properties that contain
an offset from UTC to local time.
Formal Definition: The data type is defined by the following
notation:
utc-offset = time-numzone ;As defined above in time data
type
Description:
The PLUS SIGN character MUST be specified for positive UTC offsets. The PLUS SIGN character MUST be specified for positive UTC offsets.
For example, the following are UTC offsets are given for standard No additional content value encoding (i.e., BACKSLASH character
time for New York (five hours behind UTC) and Geneva (one hour ahead encoding) is defined for this value type.
of UTC):
Example: The following are UTC offsets are given for standard time
for New York (five hours behind UTC) and Geneva (one hour ahead of
UTC):
-0500 -0500
+0100 +0100
4.2 iCalendar object 4.4 iCalendar Object
The Calendaring and Scheduling Core Object is a collection of The Calendaring and Scheduling Core Object is a collection of
calendaring and scheduling information. Typically, this information calendaring and scheduling information. Typically, this information
will consist of a single iCalendar object. However, multiple will consist of a single iCalendar object. However, multiple
iCalendar objects MAY be sequentially, grouped together. The first iCalendar objects MAY be sequentially grouped together. The first
line and last line of the iCalendar object MUST contain a pair of line and last line of the iCalendar object MUST contain a pair of
iCalendar object delimiter strings. The syntax for an iCalendar iCalendar object delimiter strings. The syntax for an iCalendar
object is as follows: object is as follows:
icalobject = "BEGIN" ":" [WSP] "VCALENDAR" CRLF icalobject = "BEGIN" ":" [WSP] "VCALENDAR" CRLF
icalbody icalbody
"END" ":" [WSP] "VCALENDAR" CRLF [icalobject] "END" ":" [WSP] "VCALENDAR" CRLF [icalobject]
Dawson/Stenerson 25 Expires MAY 1998
The following is a simple example of an iCalendar object: The following is a simple example of an iCalendar object:
BEGIN:VCALENDAR BEGIN:VCALENDAR
VERSION:2.0 VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT BEGIN:VEVENT
DTSTART:19970714T120000-0500 DTSTART:19970714T170000Z
DTEND:19970714T235959-0500 DTEND:19970715T045959Z
SUMMARY:Bastille Day Party SUMMARY:Bastille Day Party
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
4.3 Property Dawson/Stenerson 35 Expires September 1998
4.5 Property
A property is the definition of an individual attribute describing a A property is the definition of an individual attribute describing a
calendar property or a calendar component. A property takes the form calendar property or a calendar component. A property takes the form
defined by the "contentline" notation defined in section 4.1.1. defined by the "contentline" notation defined in section 4.1.1.
The following is an example of a property: The following is an example of a property:
DTSTART:19960415T083000-05:00 DTSTART:19960415T133000Z
This memo places no imposed ordering of properties within an This memo places no imposed ordering of properties within an
iCalendar object. iCalendar object.
Property names, parameter names and parameter values (i.e., Property names, parameter names and parameter values (i.e.,
everything to the left of the ":" on a line) are case insensitive. everything to the left of the ":" on a line) are case insensitive.
For example, the property name "DUE" is the same as "due" and "Due". For example, the property name "DUE" is the same as "due" and "Due".
4.4 Calendar Components 4.6 Calendar Components
The body of the iCalendar object consists of a sequence of calendar The body of the iCalendar object consists of a sequence of calendar
properties and one or more calendar components. The calendar properties and one or more calendar components. The calendar
properties are attributes that apply to the calendar as a whole. The properties are attributes that apply to the calendar as a whole. The
calendar components are collections of properties that with a calendar components are collections of properties that express a
particular calendar semantic. For example, the calendar component MAY particular calendar semantic. For example, the calendar component MAY
specify a an event, a to-do, journal entry, time zone information, or specify an event, a to-do, a journal entry, time zone information, or
free/busy time information, or alarm. free/busy time information, or an alarm.
The body of the iCalenar Object is defined by the following notation: The body of the iCalenar object is defined by the following notation:
icalbody = calprops 1*component icalbody = calprops 1*component
calprops = [calscale] prodid method [source] [name] version calprops = [calscale] [method] prodid version
component = 1*(eventc / todoc / journalc / freebusyc / component = 1*(eventc / todoc / journalc / freebusyc /
/ timezonec) / timezonec / x-name / iana-token)
4.4.1 Event Component 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 is possible that is used to
capture a complete snapshot of the contents of a calendar (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.
A "VEVENT" calendar component is a grouping of component properties 4.6.1 Event Component
and an OPTIONAL "VALARM" calendar component that represent a
scheduled amount of time on a calendar. For example, it MAY be an
activity; such as a one-hour, department meeting from 8:00 AM to 9:00
Dawson/Stenerson 26 Expires MAY 1998 Component Name: "VEVENT"
Purpose: Provide a grouping of component properties that describe an
event.
Dawson/Stenerson 36 Expires September 1998
Format Definition: A "VEVENT" calendar component is defined by the
following notation:
eventc = "BEGIN" ":" [WSP] "VEVENT" CRLF
eventprop *alarmc
"END" ":" [WSP] "VEVENT" CRLF
eventprop = *attach *attendee *categories [class] *comment
*contact [created] [description] [dtend / duration]
dtstart *exdate *exrule [geo] [last-mod] [location]
[organizer] [priority] [rstatus] *related *resources
*rdate *rrule dtstamp [seq] [status] summary
[transp] uid [url] [recurid]
Description: A "VEVENT" calendar component is a grouping of component
properties and an OPTIONAL "VALARM" calendar component that represent
a scheduled amount of time on a calendar. For example, it MAY be an
activity; such as a one-hour, department meeting from 8:00 AM to 9:00
AM, tomorrow. Generally, these events will take up time on an AM, tomorrow. Generally, these events will take up time on an
individual calendar. Hence, the event will appear as an opaque individual calendar. Hence, the event will appear as an opaque
interval in a search for busy time. Alternately, the event MAY have interval in a search for busy time. Alternately, the event MAY have
its Time Transparency set to "TRANSPARENT" in order to prevent its Time Transparency set to "TRANSPARENT" in order to prevent
blocking of the event in searches for busy time. blocking of the event in searches for busy time.
The "VEVENT" is also the calendar component used to specify an The "VEVENT" is also the calendar component used to specify an
anniversary or daily reminder within a calendar. These events have a anniversary or daily reminder within a calendar. These events have a
DATE value type for the "DTSTART" and "DTEND" properties instead of DATE value type for the "DTSTART" and "DTEND" properties instead of
the default data type of DATE-TIME. If such a "VEVENT" has an end the default data type of DATE-TIME. If such a "VEVENT" has an end
skipping to change at line 1423 skipping to change at line 1955
instance in the recurrence set. The "DTEND" property for a "VEVENT" instance in the recurrence set. The "DTEND" property for a "VEVENT"
calendar component specifies the non-inclusive end of the event. For calendar component specifies the non-inclusive end of the event. For
cases where a "VEVENT" calendar component specifies a "DTSTART" cases where a "VEVENT" calendar component specifies a "DTSTART"
property with a DATE data type but no "DTEND" property, the events property with a DATE data type but no "DTEND" property, the events
non-inclusive end is the end of the calendar date specified by the non-inclusive end is the end of the calendar date specified by the
"DTSTART" property. For cases where a "VEVENT" calendar component "DTSTART" property. For cases where a "VEVENT" calendar component
specifies a "DTSTART" property with a DATE-TIME data type but no specifies a "DTSTART" property with a DATE-TIME data type but no
"DTEND" property, the event ends on the same calendar date and time "DTEND" property, the event ends on the same calendar date and time
of day specified by the "DTSTART" property. of day specified by the "DTSTART" property.
A "VEVENT" calendar component is defined by the following notation: The "VEVENT" calendar component MUST include the "DTSTAMP",
"DTSTART", "SUMMARY" and "UID" properties. In addition, it MUST
eventc = "BEGIN" ":" [WSP] "VEVENT" CRLF include the "SEQUENCE" property, if it's value is greater than zero.
eventprop *alarmc
"END" ":" [WSP] "VEVENT" CRLF
eventprop = *attach *attendee *categories [class] *comment
*contact [created] [description] [dtend / duration]
dtstart *exdate *exrule [geo] [last-mod] [location]
[priority] [rstatus] [related] *resources *rdate
*rrule dtstamp [seq] [status] summary [transp] uid
[url] [recurid]
The "VEVENT" calendar component cannot be nested within another The "VEVENT" calendar component cannot be nested within another
calendar component. The "VEVENT" calendar components MAY be related calendar component. The "VEVENT" calendar components MAY be related
to each other or to a "VTODO" or "VJOURNAL" calendar component with to each other or to a "VTODO" or "VJOURNAL" calendar component with
the "RELATED-TO" property. the "RELATED-TO" property.
The following is an example of the "VEVENT" calendar component used Dawson/Stenerson 37 Expires September 1998
to represent a meeting that will also be opaque to searches for busy Example: The following is an example of the "VEVENT" calendar
time: component used to represent a meeting that will also be opaque to
searches for busy time:
BEGIN:VEVENT BEGIN:VEVENT
UID:19970901T130000Z-123401@host.com UID:19970901T130000Z-123401@host.com
DTSTAMP:19970901T1300Z DTSTAMP:19970901T1300Z
DTSTART:19970903T083000-0800 DTSTART:19970903T163000Z
DTEND:19970903T110000-0800 DTEND:19970903T190000Z
SUMMARY:Annual Employee Review SUMMARY:Annual Employee Review
Dawson/Stenerson 27 Expires MAY 1998
CLASS:PRIVATE CLASS:PRIVATE
CATEGORIES:BUSINESS,HUMAN RESOURCES CATEGORIES:BUSINESS,HUMAN RESOURCES
END:VEVENT END:VEVENT
The following is an example of the "VEVENT" calendar component used The following is an example of the "VEVENT" calendar component used
to represent a reminder that will not be opaque, but rather to represent a reminder that will not be opaque, but rather
transparent, to searches for busy time: transparent, to searches for busy time:
BEGIN:VEVENT BEGIN:VEVENT
UID:19970901T130000Z-123402@host.com UID:19970901T130000Z-123402@host.com
DTSTAMP:19970901T1300Z DTSTART:19970401T083000-0800 DTSTAMP:19970901T1300Z
DTEND:19970401T170000-0800 DTSTART:19970401T163000Z
DTEND:19970402T010000Z
SUMMARY:Laurel is in sensitivity awareness class. SUMMARY:Laurel is in sensitivity awareness class.
CLASS:PUBLIC CLASS:PUBLIC
CATEGORIES:BUSINESS,HUMAN RESOURCES CATEGORIES:BUSINESS,HUMAN RESOURCES
TRANSP:TRANSPARENT TRANSP:TRANSPARENT
END:VEVENT END:VEVENT
The following is an example of the "VEVENT" calendar component used The following is an example of the "VEVENT" calendar component used
to represent an anniversary that will occur annually. Since it takes to represent an anniversary that will occur annually. Since it takes
up no time, it will not appear as opaque in a search for busy time; up no time, it will not appear as opaque in a search for busy time;
no matter what the value of the "TRANSP" property indicates: no matter what the value of the "TRANSP" property indicates:
skipping to change at line 1486 skipping to change at line 2009
BEGIN:VEVENT BEGIN:VEVENT
UID:19970901T130000Z-123403@host.com UID:19970901T130000Z-123403@host.com
DTSTAMP:19970901T1300Z DTSTAMP:19970901T1300Z
DTSTART:19971102 DTSTART:19971102
SUMMARY:Our Blissful Anniversary SUMMARY:Our Blissful Anniversary
CLASS:CONFIDENTIAL CLASS:CONFIDENTIAL
CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
RRULE:FREQ=YEARLY RRULE:FREQ=YEARLY
END:VEVENT END:VEVENT
4.4.2 To-do Component 4.6.2 To-do Component
A "VTODO" calendar component is a grouping of component properties Component Name: VTODO
and an OPTIONAL "VALARM" calendar component that represent an action-
item or assignment. For example, it MAY be an item of work assigned
to an individual; such as "turn in travel expense today".
A "VTODO" calendar component is defined by the following notation: Purpose: Provide a grouping of calendar properties that describe a
to-do.
Formal Definition: A "VTODO" calendar component is defined by the
following notation:
Dawson/Stenerson 38 Expires September 1998
todoc = "BEGIN" ":" [WSP] "VTODO" CRLF todoc = "BEGIN" ":" [WSP] "VTODO" CRLF
todoprop *alarmc todoprop *alarmc
"END" ":" [WSP] "VTODO" CRLF "END" ":" [WSP] "VTODO" CRLF
todoprop = *attach *attendee *categories [class] *comment todoprop = *attach *attendee *categories [class] *comment
[completed] *contact [created] [description] dtstamp [completed] *contact [created] [description] dtstamp
dtstart [due / duration] *exdate *exrule [geo] [dtstart] [due / duration] *exdate *exrule [geo]
[last-mod] [location] [percent] priority [rstatus] [last-mod] [location] [organizer] [percent] priority
[related] *resources *rdate *rrule [recurid] [seq] [rstatus] *related *resources *rdate *rrule
[status] summary uid [url] [recurid] [seq] [status] summary uid [url]
Description: A "VTODO" calendar component is a grouping of component
properties and an OPTIONAL "VALARM" calendar component that represent
an action-item or assignment. For example, it MAY be an item of work
assigned to an individual; such as "turn in travel expense today".
The "VTODO" calendar component MUST include the "DTSTAMP",
"PRIORITY", "SUMMARY" and "UID" properties. In addition, it MUST
include the "SEQUENCE" property, if it's value is greater than zero.
Dawson/Stenerson 28 Expires MAY 1998
The "VTODO" calendar component cannot be nested within another The "VTODO" calendar component cannot be nested within another
calendar component. If "VTODO" calendar components need to be related calendar component. If "VTODO" calendar components need to be related
to each other or to a "VTODO" or "VJOURNAL" calendar component, they to each other or to a "VTODO" or "VJOURNAL" calendar component, they
can specify a relationship with the "RELATED-TO" property. can specify a relationship with the "RELATED-TO" property.
The following is an example of a "VTODO" calendar component: A "VTODO" calendar component without the "DTSTART" and "DUE" (or
"DURATION") properties specifies a to-do that is associated with each
successive calendar dates, until it is completed.
Example: The following is an example of a "VTODO" calendar component:
BEGIN:VTODO BEGIN:VTODO
UID:19970901T130000Z-123404@host.com UID:19970901T130000Z-123404@host.com
DTSTAMP:19970901T1300Z DTSTAMP:19970901T1300Z
DTSTART:19970415T083000-0500 DTSTART:19970415T133000Z
DUE:19970415T235959-0500 DUE:19970416T045959Z
SUMMARY:1996 Income Tax Preparation SUMMARY:1996 Income Tax Preparation
CLASS:CONFIDENTIAL CLASS:CONFIDENTIAL
CATEGORIES:FAMILY,FINANCE CATEGORIES:FAMILY,FINANCE
PRIORITY:1 PRIORITY:1
STATUS:NEEDS-ACTION STATUS:NEEDS-ACTION
END:VEVENT END:VEVENT
4.4.3 Journal Component 4.6.3 Journal Component
A "VJOURNAL" calendar component is a grouping of component properties Component Name: VJOURNAL
that represent one or more descriptive text notes on a particular
calendar date. The "DTSTART" property is used to specify the calendar
date that the journal entry is associated with. Generally, it will
have a DATE value data type, but it MAY 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 calendar component can also be used to associate a
document with a calendar date.
The "VJOURNAL" calendar component does not take up time on a Purpose: Provide a grouping of component properties that describe a
calendar. Hence, it does not play a role in free or busy time journal entry.
searches - - it is as though it has a time transparency value of
TRANSPARENT. It is transparent to any such searches.
A "VJOURNAL" calendar component is defined by the following notation: Formal Definition: A "VJOURNAL" calendar component is defined by the
following notation:
Dawson/Stenerson 39 Expires September 1998
journalc = "BEGIN" ":" [WSP] "VJOURNAL" CRLF journalc = "BEGIN" ":" [WSP] "VJOURNAL" CRLF
jourprop jourprop
"END" ":" [WSP] "VJOURNAL" CRLF "END" ":" [WSP] "VJOURNAL" CRLF
jourprop = *attach *attendee *categories [class] *comment jourprop = *attach *attendee *categories [class] *comment
*contact [created] [description] dtstart dtstamp *contact [created] description dtstart dtstamp
*exdate *exrule [last-mod] [related] *rdate *rrule *exdate *exrule [last-mod] [organizer] [recurid]
[rstatus] [seq] summary uid [url] [recurid] *related *rdate *rrule [rstatus] [seq] summary
uid [url]
Description: A "VJOURNAL" calendar component is a grouping of
component properties that represent one or more descriptive text
notes on a particular calendar date. The "DTSTART" property is used
to specify the calendar date that the journal entry is associated
with. Generally, it will have a DATE value data type, but it MAY 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.
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 MUST include the "DTSTAMP",
"DTSTART", "DESCRIPTION", "SUMMARY" an "UID" properties. In addition,
it MUST include the "SEQUENCE" property, if it's value is greater
than zero.
The "VJOURNAL" calendar component cannot be nested within another The "VJOURNAL" calendar component cannot be nested within another
calendar component. If "VJOURNAL" calendar components need to be calendar component. If "VJOURNAL" calendar components need to be
related to each other or to a "VEVENT" or "VTODO" calendar component, related to each other or to a "VEVENT" or "VTODO" calendar component,
they can specify a relationship with the "RELATED-TO" property. they can specify a relationship with the "RELATED-TO" property.
The following is an example of the "VJOURNAL" calendar component: Example: The following is an example of the "VJOURNAL" calendar
component:
Dawson/Stenerson 29 Expires MAY 1998
BEGIN:VJOURNAL BEGIN:VJOURNAL
UID:19970901T130000Z-123405@host.com UID:19970901T130000Z-123405@host.com
DTSTAMP:19970901T1300Z DTSTAMP:19970901T1300Z
DTSTART;VALUE=DATE:19970317 DTSTART;VALUE=DATE:19970317
SUMMARY:Staff meeting minutes SUMMARY:Staff meeting minutes
DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa
and Bob. Aurora project plans were reviewed. There is currently and Bob. Aurora project plans were reviewed. There is currently
no budget reserves for this project. Lisa will escalate to no budget reserves for this project. Lisa will escalate to
management. Next meeting on Tuesday. management. Next meeting on Tuesday.
2. Telephone Conference: ABC Corp. sales representative called 2. Telephone Conference: ABC Corp. sales representative called
to discuss new printer. Promised to get us a demo by Friday. to discuss new printer. Promised to get us a demo by Friday.
3. Henry Miller (Handsoff Insurance): Car was totaled by tree. 3. Henry Miller (Handsoff Insurance): Car was totaled by tree.
Is looking into a loaner car. 654-2323 (tel). Is looking into a loaner car. 654-2323 (tel).
END:VJOURNAL END:VJOURNAL
4.4.4 Free/Busy Component Dawson/Stenerson 40 Expires September 1998
A "VFREEBUSY" calendar component is a grouping of component 4.6.4 Free/Busy Component
properties that represents either a request for, or a reply with,
free or busy time information. Typically, this component exists in an
iCalendar object that is being used to either request or return free
or busy time information.
A "VFREEBUSY" calendar component is defined by the following Component Name: VFREEBUSY
notation:
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.
Formal Definition: A "VFREEBUSY" calendar component is defined by the
following notation:
freebusyc = "BEGIN" ":" [WSP] "VFREEBUSY" CRLF freebusyc = "BEGIN" ":" [WSP] "VFREEBUSY" CRLF
fbprop fbprop
"END" ":" [WSP] "VFREEBUSY" CRLF "END" ":" [WSP] "VFREEBUSY" CRLF
fbprop = fbrequest / fbreply fbprop = fbrequest / fbreply / busytime
fbrequest = 1*attendee dtstart dtend [duration] *comment dtstamp fbrequest = 1*attendee dtstart dtend [duration] *comment dtstamp
[last-mod] *related [seq] uid [last-mod] [seq] uid
;This set of properties is used for free/busy time request. ;This set of properties is used for free/busy time request.
fbreply = 1*attendee [created] *comment [dtstart dtend] dtstamp fbreply = 1*attendee [created] *comment [dtstart dtend] dtstamp
*freebusy [last-mod] [related] [rstatus] [seq] uid 1*freebusy [last-mod] [rstatus] [seq] uid
[url] [url]
;This set of properties is used for free/busy time reply. ;This set of properties is used for free/busy time reply.
busytime = attendee dtstamp dtstart dtend *comment 1*freebusy
[url]
Description: A "VFREEBUSY" calendar component is a grouping of
component properties that represents either a request for, 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 "VFREEBUSY"
calendar component MUST include the "ATTENDEE", "DTSTAMP", "DTSTART",
"DTEND", and "UID" properties. In addition, it MUST include the
"SEQUENCE" property, if it's value is greater than zero.
When used to reply to a request for free/busy time, the "VFREEBUSY"
calendar component MUST include the "ATTENDEE", "DTSTAMP",
"FREEBUSY", and "UID" properties. In addition, it MUST include the
"SEQUENCE" property, if it's value is greater than zero.
When used to publish busy time, the "VFREEBUSY" calendar component
MUST include the "ATTENDEE", "DTSTAMP", "DTSTART", "DTEND",
"FREEBUSY" properties.
The "VFREEBUSY" calendar component cannot be nested within another The "VFREEBUSY" calendar component cannot be nested within another
calendar component. The "VFREEBUSY" calendar components MAY be calendar component. Multiple "VFREEBUSY" calendar components MAY be
related to each other with the "RELATED-TO" property. Multiple specified within an iCalendar object. This permits the grouping of
"VFREEBUSY" calendar components MAY be specified within a iCalendar Free/Busy information into logical collections, such as monthly
object. This permits the grouping of Free/Busy information into groups of busy time information.
logical collections, such as monthly groups of busy time information.
Dawson/Stenerson 41 Expires September 1998
The "VFREEBUSY" calendar component is intended for use in iCalendar The "VFREEBUSY" calendar component is intended for use in iCalendar
object methods involving requests for free time, requests for busy object methods involving requests for free time, requests for busy
time, requests for both free and busy, and the associated replies. time, requests for both free and busy, and the associated replies.
Free/Busy information can be expressed using the "FREEBBUSY" Free/Busy information can be expressed using the "FREEBBUSY"
property. This property provides a terse representation of time property. This property provides a terse representation of time
Dawson/Stenerson 30 Expires MAY 1998
periods. One or more "FREEBUSY" properties MAY be specified in the periods. One or more "FREEBUSY" properties MAY be specified in the
"VFREEBUSY" calendar component to describe the Free/Busy information. "VFREEBUSY" calendar component to describe the Free/Busy information.
Optionally, the "DTSTART" and "DTEND" properties MAY be specified to When present in a "VFREEBUSY" calendar component, the "DTSTART" and
express the start and end date and time for all of the Free/Busy "DTEND" properties SHOULD be specified prior to any "FREEBUSY"
information in the "VFREEBUSY" calendar component. When present in a properties. In a free time request, these properties MAY be used in
"VFREEBUSY" calendar component, they should be specified prior to any combination with the "DURATION" property to express a request for a
"FREEBUSY" properties. In a free time request, these properties MAY duration of free time within a given window of time.
be used in combination with the "DURATION" property to express a
request for a duration of free time within a given window of time.
The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are
not permitted within a "VFREEBUSY" calendar component. Any recurring not permitted within a "VFREEBUSY" calendar component. Any recurring
events are resolved into their individual busy time periods using the events are resolved into their individual busy time periods using the
"FREEBUSY" property. "FREEBUSY" property.
The following is an example of a "VFREEBUSY" calendar component used Example: The following is an example of a "VFREEBUSY" calendar
to request free or busy time information: component used to request free or busy time information:
BEGIN:VFREEBUSY BEGIN:VFREEBUSY
ATTENDEE;ROLE=ORGANIZER:MAILTO:jane_doe@host1.com ORGANIZER:MAILTO:jane_doe@host1.com
ATTENDEE:MAILTO:john_public@host2.com ATTENDEE:MAILTO:john_public@host2.com
DTSTART:19971015T050000Z DTSTART:19971015T050000Z
DTEND:19971016T050000Z DTEND:19971016T050000Z
DTSTAMP:19970901T083000Z DTSTAMP:19970901T083000Z
SEQUENCE:0 SEQUENCE:0
UID:19970901T0830000-uid1@host1.com UID:19970901T0830000-uid1@host1.com
END:VFREEBUSY END:VFREEBUSY
The following is an example of a "VFREEBUSY" calendar component used The following is an example of a "VFREEBUSY" calendar component used
to reply to the request with busy time information: to reply to the request with busy time information:
skipping to change at line 1663 skipping to change at line 2233
DTSTAMP:19970901T100000Z DTSTAMP:19970901T100000Z
SEQUENCE:0 SEQUENCE:0
UID:19970901T0830000-uid1@host1.com UID:19970901T0830000-uid1@host1.com
FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
URL:http://host2.com/pub/busy/jpublic-01.vcs URL:http://host2.com/pub/busy/jpublic-01.vcs
COMMENT:This iCalendar file contains busy time information for COMMENT:This iCalendar file contains busy time information for
the next three months. the next three months.
END:VFREEBUSY END:VFREEBUSY
4.4.5 Alarm Component The following is an example of a "VFREEBUSY" calendar component used
to published busy time information.
A "VALARM" calendar component is a grouping of component properties
that is a reminder or alarm for an event or a to-do. The "VALARM"
calendar component MAY only be specified in a "VEVENT" or "VTODO"
calendar component. For example, it MAY define a reminder for a
pending event or an overdue to-do.
The "DTSTART" property specifies the calendar date and time of day
that the alarm will be triggered. The value MAY alternately be set to
Dawson/Stenerson 31 Expires MAY 1998
a DURATION, before or after the event or to-do, that the alarm will
be triggered.
A "VALARM" calendar component is defined by the following notation:
alarmc = "BEGIN" ":" [WSP] "VALARM" CRLF BEGIN:VFREEBUSY
alarmprop ATTENDEE:jsmith@host.com
"END" ":" [WSP] "VALARM" CRLF DTSTART:19980313T141711Z
alarmprop = *attendee *attach 1*categories *comment [description] Dawson/Stenerson 42 Expires September 1998
dtstart duration *related repeat [summary] DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.host.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
The "VALARM" calendar component can only appear within either a 4.6.5 Timezone Component
"VEVENT" or "VTODO" calendar component. The "VALARM" calendar
components cannot be nested.
The "CATEGORIES" property within the "VALARM" calendar component Component Name: VTIMEZONE
specifies the type or combination of types of the alarm. The
"CATEGORIES" property value of AUDIO specifies an alarm that triggers
with an audio sound; a value of DISPLAY specifies an alarm that
triggers with the "Calendar User Agent" displaying text; the value of
EMAIL specifies an alarm that triggers the posting of an electronic
email message to one or more email addresses; and the value of
PROCEDURE specifies an alarm that triggers the execution of a
procedure.
In an AUDIO category of alarm, the first "ATTACH" property in the Purpose: Provide a grouping of component properties that defines a
"VALARM" calendar component that specifies an audio sound file is time zone.
intended to be rendered as the alarm effect. If an "ATTACH" property
is specified that does not refer to an audio sound file, then it is
not used by this category of alarm. In addition, any "ATTENDEE",
"DESCRIPTION" or "SUMMARY" properties are not used by this category
of alarm.
In a DISPLAY category of alarm, the "SUMMARY" property in the Formal Definition: A "VTIMEZONE" calendar component is defined by the
"VALARM" calendar component is intended to be displayed as the alarm following notation:
effect. Any "ATTACH", "ATTENDEE" or "DESCRIPTION" properties in the
"VALARM" calendar component are not used by this category of alarm.
In an EMAIL category of alarm, the intended alarm effect is to use timezonec = "BEGIN" ":" [WSP] "VTIMEZONE" CRLF
the "DESCRIPTION" property in the "VALARM" calendar component as the
body text of an email message that is to be sent to the addresses
specified by any "ATTENDEE" properties present in the "VALARM"
calendar component. The "SUMMARY" property in the "VALARM" calendar
component is intended to be used as the subject text for the email.
Any "ATTACH" properties are not used by this category of alarm.
In a PROCEDURE category of alarm, the first "ATTACH" property in the tzid [last-mod] [tzurl] 1*(standardc / daylightc)
"VALARM" calendar component that specifies a procedure or program is
intended to be invoked as the alarm effect. Any "ATTACH" properties
that do not refer to a procedure or program, then it is not used by
this category of alarm. In addition, the "ATTENDEE", "DESCRIPTION"
and "SUMMARY" properties are not used by this category of alarm.
"Calendar User Agents" that receive an iCalendar object with this
Dawson/Stenerson 32 Expires MAY 1998 "END" ":" [WSP] "VTIMEZONE" CRLF
category of alarm, should allow the "Calendar User" to disable or
otherwise ignore this category of alarm. While a very useful alarm
capability, the PROCEDURE category of alarm should be treated by the
"Calendar User Agent" as a potential security risk.
The following is an example of the "VALARM" calendar component: standardc = "BEGIN" ":" [WSP] "STANDARD" CRLF
BEGIN:VALARM tzprop
DTSTART:19970317T133000Z
REPEAT:4
DURATION:PT15M
CATEGORIES:DISPLAY,AUDIO
ATTACH:ftp://host.com/pub/sounds/bell-01.wav
SUMMARY:Breakfast meeting with executive team at 8:30 AM
END:VALARM
4.4.6 Timezone Component "END" ":" [WSP] "STANDARD" CRLF
The "VTIMEZONE" calendar component is used to define a time zone. daylightc = "BEGIN" ":" [WSP] "DAYLIGHT" CRLF
A time zone is unambiguously defined by the set of time measurement tzprop
rules determined by the governing body for a given geographic area.
These rules describe at a minimum the base 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 for the eastern United States.
Effective Transition Rule "END" ":" [WSP] "DAYLIGHT" CRLF
Date (Date/Time) Offset Abbreviation
1920-1920 last Sun in Mar, 02:00 _0400 EDT tzprop = *comment dtstart [rdate / rrule]
1920-1920 last Sun in Oct, 02:00 _0500 EST *tzname tzoffsetto tzoffsetfrom
1921-1966 last Sun in Apr, 02:00 _0400 EDT 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 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
for the eastern United States starting from 1967. Each line
represents a description or rule for a particular observance.
1921-1954 last Sun in Sep, 02:00 _0500 EST Effective Observance Rule
1955-1966 last Sun in Oct, 02:00 _0500 EST Dawson/Stenerson 43 Expires September 1998
Date (Date/Time) Offset Abbreviation
1967-* last Sun in Oct, 02:00 _0500 EST 1967-* lastSun in Oct, 02:00 -0500 EST
1967-1973 last Sun in Apr, 02:00 _0400 EDT 1967-1973 last Sun in Apr, 02:00 -0400 EDT
1974-1974 Jan 6, 02:00 -0400 EDT 1974-1974 Jan 6, 02:00 -0400 EDT
1975-1975 Feb 23, 02:00 -0400 EDT 1975-1975 Feb 23, 02:00 -0400 EDT
1976-1986 last Sun in Apr, 02:00 _0400 EDT 1976-1986 last Sun in Apr, 02:00 -0400 EDT
Dawson/Stenerson 33 Expires MAY 1998 1987-* first Sun in Apr, 02:00 -0400 EDT
1987-* first Sun in Apr, 02:00 _0400 EDT
Interoperability between two calendaring and scheduling applications, Interoperability between two calendaring and scheduling applications,
especially for recurring events, to-dos or journal entries, is especially for recurring events, to-dos or journal entries, is
dependent on the ability to capture and convey date and time dependent on the ability to capture and convey date and time
information in an unambiguous format. The specification of current information in an unambiguous format. The specification of current
time zone information is integral to this behavior. time zone information is integral to this behavior.
The "VTIMEZONE" calendar component is a grouping of component If present, the "VTIMEZONE" calendar component defines the set of
properties that define a time zone description. The time zone Standard Time and Daylight Saving Time observances (or rules) for a
description specifies the effective Standard Time or Daylight Savings particular time zone for a given interval of time. The "VTIMEZONE"
Time rules for a particular time zone. The "VTIMEZONE" calendar calendar component cannot be nested within other calendar components.
component cannot be nested within other calendar components. The Multiple "VTIMEZONE" calendar components MAY exist in an iCalendar
"VTIMEZONE" calendar component MAY be specified multiple times. If object. In this situation, each "VTIMEZONE" MUST represent a unique
the "VTIMEZONE" calendar component is missing, the recipient should time zone definition. This is necessary for some classes of events,
assume all local times are relative to the recipient's time zone. The such as airline flights, that start in one time zone and end in
"VTIMEZONE" calendar component should be specified in the iCalendar another.
object before any other calendar components.
A "VTIMEZONE" calendar component is defined by the following The "VTIMEZONE" calendar component MUST be present if the iCalendar
notation: object contains an RRULE that generates dates on both sides of a time
zone shift (e.g. both in Standard Time and Daylight Saving Time)
UNLESS the iCalendar object intends to convey a floating time (See
the section "4.1.10.11 Time" for proper interpretation of floating
time). It MAY be present if the iCalendar object does not contain
such a RRULE. In addition, if a RRULE is present, there must be valid
time zone information for all recurrence instances.
timezonec = "BEGIN" ":" [WSP] "VTIMEZONE" CRLF The "VTIMEZONE" calendar component MUST include the "TZID" property
tzprop and at least one definition of a standard or daylight component. The
"END" ":" [WSP] "VTIMEZONE" CRLF standard or daylight component MUST include the "DTSTART",
"TZOFFSETFROM" and "TZOFFSETTO" properties.
tzprop = *comment [daylight] dtstart [rdate / rrule] Each "VTIMEZONE" calendar component consists of a collection of one
[tzname] tzoffset 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 "VTIMEZONE" calendar component is important for correct - the first onset date-time for the observance
interpretation of individual as well as recurring calendar components
that span a time zone transition. For example, from EST to EDT. The
exception to this are calendar components that are considered
floating (i.e., occurs at a particular local time no matter what time
zone you are in). If the iCalendar object contains a non-floating
calendar component that has a recurring date pattern (i.e., includes
the "RRULE" property) or a list of date and local time values (i.e.,
includes the "RDATE" property), one or more "VTIMEZONE" calendar
components MUST be specified, such that for the given range of the
recurrence (i.e., the earliest instance to latest instance), there is
valid time zone information for all instances. In other words, if all
of the instances of the pattern is entirely within one offset
observance, (e.g., all are in Standard Time), only one "VTIMEZONE"
calendar component need be present. If a time zone transition is
crossed, then other "VTIMEZONE" calendar components are needed.
Further, if there are known changes to the rules for the time zone,
even more "VTIMEZONE" calendar components are needed.
Each "VTIMEZONE" calendar component consists of several properties: Dawson/Stenerson 44 Expires September 1998
- the last onset date-time for the observance, if a last onset
is known.
The "DAYLIGHT" property is a BOOLEAN value indicating Standard Time - the offset to be applied for the observance
(FALSE) or Daylight Savings Time (TRUE). The default for DAYLIGHT is
FALSE or Standard Time.
Dawson/Stenerson 34 Expires MAY 1998 - a rule that describes the day and time when the observance
The "DTSTART" property in this usage is a fully specified DATE-TIME takes effect
value, including the UTC offset, indicating the effective start date
and time for the time zone information. For example, 19671029T020000-
0400 represents the time at which the transition to Standard Time
took effect in 1967 for the eastern United States.
The "TZOFFSET" property is a UTC-OFFSET value indicating the UTC - an optional name for the observance
offset for the time zone (Standard Time or Daylight Savings Time).
The "TZNAME" property is the customary name for the time zone. 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 "RRULE" property indicates the recurrence rule for the transition The top-level properties in a "VTIMEZONE" calendar component are:
to this time zone. For example, in the United States, the transition
from Standard Time to Daylight Saving Time occurs on the first Sunday
in April at 02:00. If a recurrence rule describing the transition is
known to have an effective end date, the UNTIL recurrence rule
parameter is used to specify that end date and time. If the
recurrence rule for a particular observance (Daylight Saving Time) is
changing, then the UNTIL of the first rule will be equal to the last
valid instance (the last date-time) of this particular rule. See
example below.
Alternatively, the "RDATE" property can be used. The "RDATE" property The mandatory "TZID" property is a text value that uniquely
is a property that indicates the individual dates and/or times that identifies the VTIMZONE calendar component within the scope of an
the transition takes effect. The values supplied for "RDATE" property iCalendar object.
for each "VTIMEZONE" calendar component MUST provide valid time zone
information of all instances of the recurrence specified for the
calendar component to which this time zone information is to be
applied.
The following are examples of the "VTIMEZONE" calendar component: 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 url value that points to a published
VTIMEZONE definition.
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 local DATE-TIME value.
The mandatory "TZOFFSETFROM" property gives the UTC offset which 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 1967 for the eastern United States:
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.
Dawson/Stenerson 45 Expires September 1998
The optional "TZNAME" property is the customary name for the time
zone. It may be specified multiple times, to allow for specifying
multiple language variants of the time zone names. This could be used
for displaying dates.
If specified, the onset for the observance defined by the time zone
sub-component is defined by either the "RRULE" or "RDATE" property.
If neither are specified, only one sub-component can be specified in
the "VTIMEZONE" calendar component and it is assumed that the single
observance specified is always in effect.
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:
- 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 as a full DATE-TIME value, using
local time plus the UTC offset.
- The local time and UTC offset values provided in the "DTSTART"
property for the given observance MUST be used when generating
the onset date-time values (instances) from the RRULE. This
interpretation of the "DTSTART" UTC offset value is specific to
"RRULE" usage in the "VTIMEZONE" specification.
Alternatively, the "RDATE" property MAY 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 local DATE-TIME value
with UTC offset.
The optional "COMMENT" property is also allowed for descriptive
explanatory text.
Example: The following are examples of the "VTIMEZONE" calendar
component:
This is a simple example showing time zone information for the This is a simple example showing time zone information for the
Eastern United States using "RDATE" property. Note that this is only Eastern United States using "RDATE" property. Note that this is only
suitable for a recurring event that starts on or later than 1997, suitable for a recurring event that starts on or later than April 6,
April 6, at 02:00:00 EST (i.e., the earliest effective transition 1997 at 02:00:00 EST (i.e., the earliest effective transition date
date and time) and ends no later than 1998, April 7, 02:00:00 EST and time) and ends no later than April 7, 1998 02:00:00 EST (i.e.,
(i.e., latest valid date and time for EST in this scenario). For latest valid date and time for EST in this scenario). For example,
example, this can be used for a recurring event that ocurrs every this can be used for a recurring event that occurs every Friday,
Friday, 8am-9am, starting June 1, 1997, ending Dec 31, 1997. 8am-9am, starting June 1, 1997, ending December 31, 1997.
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:FALSE TZID:America-New_York
RDATE:19971026T020000-0400 LAST-MODIFIED:19870101T000000Z
TZOFFSET:-0500 BEGIN:STANDARD
TZNAME:EST DTSTART:19971026T020000
END:VTIMEZONE RDATE:19971026T020000
BEGIN:VTIMEZONE Dawson/Stenerson 46 Expires September 1998
DAYLIGHT:TRUE TZOFFSETFROM:-0400
RDATE:19970406T020000-0500 TZOFFSETTO:-0500
TZOFFSET:-0400 TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19971026T020000
RDATE:19970406T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE END:VTIMEZONE
Dawson/Stenerson 35 Expires MAY 1998
This is a simple example showing the current time zone rules for the This is a simple example showing the current time zone rules for the
Eastern United States using a RRULE recurrence pattern. Note that Eastern United States using a RRULE recurrence pattern. Note that
there is no effective end date to either of the Standard Time or there is no effective end date to either of the Standard Time or
Daylight Time rules. This information would be valid for a Daylight Time rules. This information would be valid for a recurring
recurrening event starting today and continuing on into the known event starting today and continuing on into the known future.
future.
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:FALSE TZID:America-New_York
DTSTART:19671029T020000-0400 LAST-MODIFIED:19870101T000000Z
TZURL:http://zones.stds_r_us.net/tz/America-New_York
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSET:-0500 TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST TZNAME:EST
END:VTIMEZONE END:STANDARD
BEGIN:DAYLIGHT
BEGIN:VTIMEZONE DTSTART:19870405T020000
DAYLIGHT:TRUE
DTSTART:19870405T020000-0500
RRULE: FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 RRULE: FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
TZOFFSET:-0400 TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE END:VTIMEZONE
This is an example showing a ficticious set of rules for the Eastern This is an example showing a fictitious set of rules for the Eastern
United States, where the Daylight Time rule has an effective end date United States, where the Daylight Time rule has an effective end date
(i.e., after that date, Daylight Time is no longer observed). (i.e., after that date, Daylight Time is no longer observed).
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:FALSE TZID:America-New_York
DTSTART:19671029T020000-0400 LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSET:-0500 TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST TZNAME:EST
END:VTIMEZONE END:STANDARD
BEGIN:DAYLIGHT
BEGIN:VTIMEZONE Dawson/Stenerson 47 Expires September 1998
DAYLIGHT:TRUE DTSTART:19870405T020000
DTSTART:19870405T020000-0500 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T020000-0500 TZOFFSETFROM:-0500
TZOFFSET:-0400 TZOFFSETTO:-0400
TZNAME:EDT TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE END:VTIMEZONE
This is an example showing a fictitious set of rules for the Eastern This is an example showing a fictitious set of rules for the Eastern
United States, where the first Daylight Time rule has an effective United States, where the first Daylight Time rule has an effective
end date. There is a second Daylight Time rule that picks up where end date. There is a second Daylight Time rule that picks up where
the other left off. the other left off.
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:FALSE TZID:America-New_York
DTSTART:19671029T020000-0400 LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSET:-0500 TZOFFSETFROM:-0400
TZOFFSETTO:-0500
Dawson/Stenerson 36 Expires MAY 1998
TZNAME:EST TZNAME:EST
END:VTIMEZONE END:STANDARD
BEGIN:DAYLIGHT
BEGIN:VTIMEZONE DTSTART:19870405T020000
DAYLIGHT:TRUE RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000
DTSTART:19870405T020000-0500 TZOFFSETFROM:-0500
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T020000-0500 TZOFFSETTO:-0400
TZOFFSET:-0400
TZNAME:EDT TZNAME:EDT
END:VTIMEZONE END:DAYLIGHT
BEGIN:DAYLIGHT
BEGIN:VTIMEZONE DTSTART:19990424T020000
DAYLIGHT:TRUE RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4
DTSTART:19990327T020000-0500 TZOFFSETFROM:-0500
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 TZOFFSETTO:-0400
TZOFFSET:-0400
TZNAME:EDT TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE END:VTIMEZONE
4.5 Calendar Properties 4.6.6 Alarm Component
Component Name: VALARM
Purpose: Provide a grouping of component properties that define an
alarm.
Formal Definition: A "VALARM" calendar component is defined by the
following notation:
alarmc = "BEGIN" ":" [WSP] "VALARM" CRLF
(audioprop / dispprop / emailprop
/ procprop)
"END" ":" [WSP] "VALARM" CRLF
Dawson/Stenerson 48 Expires September 1998
audioprop = alarmtype trigger [duration repeat] attach
dispprop = alarmtype description trigger [duration
repeat]
emailprop = alarmtype 1*attendee *attach description
trigger [duration repeat] summary
procprop = alarmtype attach [description] trigger [duration
repeat]
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 "ALARM-TYPE" and
"TRIGGER" properties. In addition, an AUDIO type of alarm MUST
include the "ATTACH" property to point to a digital sound resource to
be played. The DISPLAY type of alarm MUST include the "DESCRIPTION"
property. The EMAIL type of alarm MUST include the "ATTENDEE",
"DESCRIPTION" and "SUMMARY" properties. The PROCEDURE type of alarm
MUST include the "ATTACH" property to point to a procedure resource
to be invoked.
The "VALARM" calendar component MUST only appear within either a
"VEVENT" or "VTODO" calendar component. The "VALARM" calendar
components cannot be nested. Multiple "VALARM" calendar components
MAY be specified.
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 MAY alternately be set to an absolute calendar date and
time of day value.
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, the "DTEND" or "DTSTART" and "DURATION"
properties MUST be present. In an alarm in a "VTODO" calendar
component set to trigger on the "END" of the to-do, the "DUE" or
"DTSTART" and "DURATION" properties MUST be present.
The alarm MAY be defined such that it triggers repetitively. 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 triggered. This 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
Dawson/Stenerson 49 Expires September 1998
are absent, then the alarm will not repeat beyond the initial
trigger.
The "ALARM-TYPE" property is used within the "VALARM" calendar
component to specify the type of the alarm. The "ALARM-TYPE" property
value of AUDIO specifies an alarm that triggers with an audio sound;
a value of DISPLAY specifies an alarm that triggers with the
"Calendar User Agent" displaying text; the value of EMAIL specifies
an alarm that triggers the posting of an electronic email message to
one or more email addresses; and the value of PROCEDURE specifies an
alarm that triggers the execution of a procedure. The "ALARM-TYPE"
property MUST specify just one of these valid values. Multiple
categories of alarms MAY BE specified by defining more than one,
different categories of "VALARM" calendar components within a
"VEVENT" or "VTODO" calendar component.
In an AUDIO type of alarm, the "ATTACH" property in the "VALARM"
calendar component MUST specify an audio sound file that is intended
to be rendered as the alarm effect. If an "ATTACH" property is
specified that does not refer to a digital sound resource, then no
audio alarm will be sounded. If the digital sound resource is in a
format that cannot be rendered, then no audio alarm will be sounded.
In a DISPLAY type of alarm, the "DESCRIPTION" property in the
"VALARM" calendar component is intended to be displayed as the alarm
effect. In an EMAIL category of alarm, the intended alarm effect is
to use the "DESCRIPTION" property in the "VALARM" calendar component
as the body text of an email message that is to be sent to the
addresses specified by any "ATTENDEE" properties present in the
"VALARM" calendar component. The "SUMMARY" property in the "VALARM"
calendar component is intended to be used as the subject text for the
email. Any "ATTACH" properties are sent as email attachments.
In a PROCEDURE type of alarm, the "ATTACH" property in the "VALARM"
calendar component MUST specify a procedure or program that is
intended to be invoked as the alarm effect. If the procedure or
program is in a format that cannot be rendered, then no procedure
alarm will be invoked. If the "DESCRIPTION" property is present, its
value specifies the argument string to be passed to the procedure or
program. "Calendar User Agents" that receive an iCalendar object with
this category of alarm, should allow the "Calendar User" to disable
or otherwise ignore this type of alarm. While a very useful alarm
capability, the PROCEDURE type of alarm should be treated by the
"Calendar User Agent" as a potential security risk.
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
ALARM-TYPE: AUDIO
Dawson/Stenerson 50 Expires September 1998
ATTACH:ftp://host.com/pub/sounds/bell-01.wav
END:VALARM
The following example is for a "VALARM" calendar component that
specifies a display alarm that will trigger 15 minutes before the
scheduled start of the event or the due date/time of the to-do it is
associated with and will repeat 2 more times at 15 minute intervals:
BEGIN:VALARM
TRIGGER:PT30M
REPEAT:2
DURATION:PT15M
ALARM-TYPE: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 it is associated with. It does not
repeat. The email has a subject, body and attachment link.
BEGIN:VALARM
TRIGGER:P2D
ALARM-TYPE:EMAIL
ATTENDEE:MAILTO:john_doe@host.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:http://host.com/templates/agenda.doc
END:VALARM
The following example is for a "VALARM" calendar component that
specifies a procedural alarm that will trigger at a precise date/time
and will repeat 23 more times at one hour intervals. The alarm will
invoke a procedure file.
BEGIN:VALARM
TRIGGER;VALUE=DATE-TIME:19980101T050000Z
REPEAT:23
DURATION:PT1H
ALARM-TYPE:PROCEDURE
ATTACH:ftp://host.com/novo-procs/felizano.exe
END:VALARM
4.7 Calendar Properties
The Calendar Properties are attributes that apply to the iCalendar The Calendar Properties are attributes that apply to the iCalendar
object, as a whole. These properties do not appear within a calendar object, as a whole. These properties do not appear within a calendar
component. They should be specified after the "BEGIN:VCALENDAR" component. They should be specified after the "BEGIN:VCALENDAR"
property and prior to any calendar component. property and prior to any calendar component.
4.5.1 Calendar Scale Dawson/Stenerson 51 Expires September 1998
This property is identified by the property name CALSCALE. This 4.7.1 Calendar Scale
property defines the calendar scale used for the calendar information
specified in the iCalendar object. 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.
The property is defined by the following notation: Property Name: CALSCALE
Purpose: This property defines the calendar scale used for the
calendar information specified in the iCalendar object.
Value Type: TEXT
Conformance: Property MAY be specified in an iCalendar object. The
default value is "GREGORIAN".
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.
No property parameters MAY be specified on this property.
Format Definition: The property is defined by the following notation:
calscale = "CALSCALE" ":" [WSP] calvalue CRLF calscale = "CALSCALE" ":" [WSP] calvalue CRLF
calvalue = "GREGORIAN" / iana-token calvalue = "GREGORIAN" / iana-token
The following is an example of this property: Example: The following is an example of this property:
CALSCALE:GREGORIAN CALSCALE:GREGORIAN
The data type for this property is TEXT. 4.7.2 Method
4.5.2 Method Property Name: METHOD
This property is identified by the property name METHOD. This Purpose: This property defines the iCalendar object method associated
property defines the iCalendar object method associated with the with the calendar object.
calendar object. When used in a MIME message entity, the value of
this property MUST be the same as the Content-Type "method" parameter
Dawson/Stenerson 37 Expires MAY 1998 Value Type: TEXT
Conformance: The property MAY be specified 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. This property can only appear once within the iCalendar value. This property can only appear once within the iCalendar
object. object. If either the "METHOD" property or the Content-Type "method"
parameter is specified, then the other must also be specified.
The property is defined by the following notation: 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 [ITIP].
method = "METHOD" ":" [WSP] profvalue CRLF Dawson/Stenerson 52 Expires September 1998
If this property is not present in the iCalendar object, then no
scheduling transaction MAY be assumed. In such cases, the iCalendar
object is merely being used to transport a snapshot of some calendar
information; without the intention of conveying a scheduling
semantic.
profvalue = <Any IANA registered iCalendar object method.> No property parameters MAY be specified on this property.
The following is an example of this property when the iCalendar Format Definition: The property is defined by the following notation:
object is used to request a meeting:
method = "METHOD" ":" [WSP] method-value CRLF
method-value = iana-token
Example: The following is a hypothetical example of this property to
convey that the iCalendar object is a request for a meeting:
METHOD: REQUEST METHOD: REQUEST
The data type for this property is TEXT. 4.7.3 Product Identifier
4.5.3 Product Identifier Property Name: PRODID
This property is identified by the property name PRODID. This Purpose: This property specifies the identifier for the product that
property specifies the identifier for the product that created the created the iCalendar object.
iCalendar object. The vendor of the implementation should assure that
this is a globally unique identifier; using some technique such as an Value Type: TEXT
ISO 9070 FPI value. This calendar property MUST be specified in the
iCalendar object but can only appear once. Conformance: The property MUST be specified in an iCalendar object
but can only appear once.
Description: The vendor of the implementation should assure that this
is a globally unique identifier; using some technique such as an ISO
9070 FPI value.
This property should not be used to alter the interpretation of an This property should not be used to alter the interpretation of an
iCalendar object beyond the semantics specified in this memo. For iCalendar object beyond the semantics specified in this memo. For
example, it is not to be used to further the understanding of non- example, it is not to be used to further the understanding of non-
standard properties. standard properties.
The property is defined by the following notation: No property parameters MAY be specified on this property.
Format Definition: The property is defined by the following notation:
prodid = "PRODID" ":" [WSP] pidvalue CRLF prodid = "PRODID" ":" [WSP] pidvalue CRLF
pidvalue = text pidvalue = text
;Any text that describes the product and version ;Any text that describes the product and version
;and that is generally assured of being unique. ;and that is generally assured of being unique.
The following is an example of this property: Example: The following is an example of this property:
PRODID:-//ABC Corporation//NONSGML My Product//EN PRODID:-//ABC Corporation//NONSGML My Product//EN
The data type for this property is TEXT. Dawson/Stenerson 53 Expires September 1998
4.5.4 Source
This property is identified by the property name SOURCE. This
property is defined by the [MIME DIR] memo. In this memo, the
property identifies the URI for the source of the iCalendar object.
The URI is useful for accessing the iCalendar object using a calendar
access protocol.
The property is defined by the following notation:
Dawson/Stenerson 38 Expires MAY 1998
source = "SOURCE" ":" [WSP] uri CRLF
The following are examples of this property:
SOURCE:http://xyz.corp.com/corp-cals/1997-events.or4
SOURCE:http://xyz.corp.com/calendars/~jdoe
The data type for this property is URI.
4.5.5 Source Name
This property is identified by the property name NAME. This property
is defined by the [MIME DIR] memo. The property identifies the
displayable, presentation name for the source of the iCalendar
object. The source name is a useful text to associate in the user-
interface of an application with the value in the SOURCE property.
The property is defined by the following notation: 4.7.4 Version
name = "NAME" ":" [WSP] text CRLF Property Name: VERSION
The following is an example of this property: 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.
NAME:1997 Events Calendar for XYZ Corporation Value Type: TEXT
The data type for this property is TEXT. Conformance: This property MUST be specified by in an iCalendar
object, but MAY only be specified once.
4.5.6 Version Description: A value of "2.0" corresponds to this memo.
This property is identified by the property name VERSION. This No property parameters MAY be specified on this property.
property specifies the identifier corresponding to the highest
version number or the minimum and maximum range of the MIME
Calendaring and Scheduling Content Type specification supported by
the implementation that created the iCalendar object. A value of
"2.0" corresponds to this memo. This calendar property MUST appear
within the iCalendar object but can only appear once.
The property is defined by the following notation: Format Definition: The property is defined by the following notation:
version = "VERSION" ":" [WSP] vervalue CRLF version = "VERSION" ":" [WSP] vervalue CRLF
vervalue = "2.0" ;This memo vervalue = "2.0" ;This memo
/ maxver / maxver
/ (minver ";" [WSP] maxver) / (minver ";" [WSP] maxver)
minver = <A IANA registered iCalendar version identifier> minver = <A IANA registered iCalendar version identifier>
;Minimum iCalendar version used to create the iCalendar object ;Minimum iCalendar version used to create the iCalendar object
maxver = <A IANA registered iCalendar version identifier> maxver = <A IANA registered iCalendar version identifier>
;Maximum iCalendar version used to create the iCalendar object ;Maximum iCalendar version used to create the iCalendar object
The following is an example of this property: Example: The following is an example of this property:
Dawson/Stenerson 39 Expires MAY 1998
VERSION:2.0 VERSION:2.0
The data type for this property is TEXT. 4.8 Component Properties
4.6 Component Properties
The following properties MAY appear within calendar components, as The following properties MAY appear within calendar components, as
specified by each component property definition. specified by each component property definition.
4.6.1 Attachment 4.8.1 Descriptive Component Properties
This property is identified by the property name ATTACH. The property
provides the capability to associate an external object with a
calendar component. For example, a document to be reviewed at a
scheduled event or the description of the process steps for a to-do.
The property MAY only be specified within "VEVENT", "VTODO",
"VJOURNAL", or "VALARM" calendar components. This property MAY be
specified multiple times within an iCalendar object.
The property is defined by the following notation:
attach = ("ATTACH" ":" [WSP] uri CRLF) /
("ATTACH" ";" [WSP] "ENCODING" "=" "b" ";" [WSP]
"VALUE" "=" "text" ":" [WSP] folded-b
The following are examples of this property:
ATTACH:CID:jsmith.part3.960817T083000.xyzMail@host1.com
ATTACH:FTP://xyzCorp.com/pub/reports/r-960812.ps
The default data type for this property is URI. The data type MAY
also be reset to TEXT in order to include inline binary encoded
content information.
4.6.2 Attendee
This property is identified by the property name ATTENDEE. The
property defines an attendee within a calendar component. The
property MAY only be specified within the "VEVENT", "VTODO",
"VJOURNAL", "VFREEBUSY" and "VALARM" calendar components.
The property has the property parameters TYPE, for the type of
attendee, ROLE, for the intended role of the attendee; STATUS, for
the status of the attendee's participation; RSVP, for indicating
whether the favor of a reply is requested; EXPECT, to indicate the
expectation of the attendee's participation by the originator;
MEMBER, to indicate the groups that the attendee belongs to;
DELEGATED-TO, to indicate the people that the original request was
delegated to; and DELEGATED-FROM, to indicated whom the request was
delegated from.
A recipient delegated a request MUST inherit the RSVP and EXPECT
values from the attendee that delegated the request to them.
Dawson/Stenerson 40 Expires MAY 1998
Multiple attendees MAY be specified by including multiple "ATTENDEE"
properties within the MIME calendaring entity.
The property data type default is CAL-ADDRESS. The property data type
MAY also be set to URI. This provides a useful mechanism to allow
more than just the address of the attendee to be referenced. If the
value is a URI, then it MUST be able to be resolved to a calendar
address.
The property is defined by the following notation:
attendee = "ATTENDEE" *(";" [WSP] parameter)
*(";" [WSP] attparam) ":" [WSP]
(cal-address / uri) CRLF
;Value MUST match default or explicit data type
attparam = typeparm / roleparm / statusparm / rsvpparm
/ expectparm / memberparm / deletoparm / delefromparm
typeparm = "TYPE" "="
("INDIVIDUAL" ; An individual
/ "GROUP" ; A group of individuals
/ "RESOURCE" ; A physical resource
/ "ROOM" ; A room resource
/ "UNKNOWN") ; Otherwise not known
;Default value is INDIVIDUAL
roleparm = "ROLE" "=" The following properties specify descriptive information about
("ATTENDEE" ; Indicates a regular attendee calendar components.
/ "OWNER" ; Indicates owner of event or to-do
/ "ORGANIZER" ; Indicates organizer of event or to-do
/ "DELEGATE") ; Indicates delegate to event or to-do
;Default is ATTENDEE
statusparm = "STATUS" "=" 4.8.1.1 Attachment
("NEEDS-ACTION" ; Indicates event or to-do needs action
/ "ACCEPTED" ; Indicates event or to-do accepted
/ "DECLINED" ; Indicates event or to-do not accepted
/ "TENTATIVE" ; Indicates event or to-do tentatively
; accepted. Status MAY change in the future.
/ "COMPLETED" ; Indicates to-do was completed.
; COMPLETED property has date/time completed.
/ "IN-PROCESS" ;Indicates to-do is in the process of
; being completed.
/ "DELEGATED" ; Indicates event or to-do delegated
; to another ATTENDEE
/ "CANCELLED") ; Indicates event or to-do cancelled for
; ATTENDEE
;Default is NEEDS-ACTION
rsvpparm = "RSVP" "=" Property Name: ATTACH
("TRUE" ; Indicates response requested
/ "FALSE") ; Indicates no response needed
;Default is FALSE
Dawson/Stenerson 41 Expires MAY 1998 Purpose: The property provides the capability to associate a document
expectparm = "EXPECT" "=" object with a calendar component.
("FYI" ; Indicates request is for your info
/ "REQUIRE" ; Indicates presence is required
/ "REQUEST") ; Indicates presence is requested
;Default is FYI
memberparm = "MEMBER" "=" cal-address *("," [WSP] cal-address) Dawson/Stenerson 54 Expires September 1998
; Indicates a group or mailing list Value Type: The default value type for this property is URI. The
value type MAY also be reset to BINARY in order to include inline
binary encoded content information.
deletoparm = "DELEGATED-TO" "=" cal-address *("," [WSP] Conformance: The property MAY be specified in an iCalendar object.
cal-address)
; Indicates who the request is delegated to
delefromparm = "DELEGATED-FROM" "=" cal-address *("," [WSP] Description: The property MAY only be specified within "VEVENT",
cal-address) "VTODO", "VJOURNAL", or "VALARM" calendar components. This property
;Indicates who the request is delegated from MAY be specified multiple times within an iCalendar object.
The following are examples of this property's use for a to-do: Only the "ENCODING" and "VALUE", property parameters MAY be specified
on this property.
ATTENDEE;ROLE=OWNER;STATUS=COMPLETED:MAILTO:jsmith@host1.com Format Definition: The property is defined by the following notation:
ATTENDEE;MEMBER="MAILTO:DEV-GROUP@host2.com":
MAILTO:joecool@host2.com
ATTENDEE;DELEGATED-FROM="MAILTO:immud@host3.com":
MAILTO:ildoit@host1.com
The following is an example of this property used for specifying attach = ("ATTACH" ":" [WSP] uri CRLF)
multiple attendees to an event:
ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED: MAILTO:John Smith attach =/ ("ATTACH" ";" [WSP] "ENCODING" "=" "b" ";" [WSP]
<jsmith@host1.com> "VALUE" "=" "text" ":" [WSP] binary
ATTENDEE;ROLE=ATTENDEE;STATUS=TENTATIVE:MAILTO:Henry Cabot
<hcabot@host2.com>
ATTENDEE;ROLE=DELEGATE;STATUS=ACCEPTED:MAILTOJane Doe
<jdoe@host1.com>
The following is an example of this property with the value specified Example: The following are examples of this property:
as an URI reference to a vCard that contains the information about
the attendee:
ATTENDEE;ROLE=ATTENDEE;STATUS=ACCEPTED;VALUE=URI: ATTACH:CID:jsmith.part3.960817T083000.xyzMail@host1.com
http://www.xyz.com/~myvcard.vcf
The following is an example of this property with "delegatee" and ATTACH:FTP://xyzCorp.com/pub/reports/r-960812.ps
"delegator" information for an event:
ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:MAILTO:John Smith 4.8.1.2 Categories
<jsmith@host1.com>
ATTENDEE;ROLE=DELEGATE;STATUS=TENTATIVE;DELEGATED-FROM= Property Name: CATEGORIES
"MAILTO:iamboss@host2.com":MAILTO:Henry Cabot<hcabot@host2.com>
ATTENDEE;ROLE=ATTENDEE;STATUS=DELEGATED;DELEGATED-TO= Purpose: This property defines the categories for a calendar
"MAILTO:hcabot@host2.com:MAILTO:iamboss(The Big Cheese)@host2.com component.
Dawson/Stenerson 42 Expires MAY 1998 Value Type: TEXT
ATTENDEE;ROLE=DELEGATE;STATUS=ACCEPTED:MAILTO:Jane Doe
<jdoe@host1.com>
The default data type for this property is CAL-ADDRESS. The data type Conformance: The property MAY only be specified within "VEVENT",
MAY be reset to URI; in which case the value is a location or message "VTODO" or "VJOURNAL" calendar components.
that contains the information that is to be used to specify the
attendee address.
4.6.3 Categories 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 MAY be specified as a list of categories separated by the
COMMA character (ASCII decimal 44).
This property is identified by the property name CATEGORIES. This Only the "LANGUAGE" property parameters MAY be specified on this
property defines the categories for a calendar component. The property.
property MAY be specified within the "VEVENT", "VTODO" or "VJOURNAL"
calendar component with an arbitrary text value. In the "VALARM"
calendar component the property MUST be specified to declare the
alarm category. More than one category MAY be specified as a list of
categories separated by the COMMA character (ASCII decimal 44).
The properties is defined by the following notation: Format Definition: The property is defined by the following notation:
categories = "CATEGORIES" *(";" [WSP] parameter) ":" [WSP] categories = "CATEGORIES" [catparam] ":" [WSP] catvalue CRLF
catvalue CRLF
catvalue = cat1value *["," [WSP] cat1value] catparam = ";" [WSP] languageparm
/ cat2value *["," [WSP] cat2value]
cat1value = "ANNIVERSARY" / "APPOINTMENT" / "BUSINESS" Dawson/Stenerson 55 Expires September 1998
catvalue = "ANNIVERSARY" / "APPOINTMENT" / "BUSINESS"
/ "EDUCATION" / "HOLIDAY" / "MEETING" / "MISCELLANEOUS" / "EDUCATION" / "HOLIDAY" / "MEETING" / "MISCELLANEOUS"
/ "NON-WORKING HOURS" / "NOT IN OFFICE" / "PERSONAL" / "NON-WORKING HOURS" / "NOT IN OFFICE" / "PERSONAL"
/ "PHONE CALL" / "SICK DAY" / "SPECIAL OCCASION" / "PHONE CALL" / "SICK DAY" / "SPECIAL OCCASION"
/ "TRAVEL" / "VACATION" / word / "TRAVEL" / "VACATION" / text
;These are just examples
;Used only in "VEVENT", "VTODO" and "VJOURNAL" calendar components. ;Used only in "VEVENT", "VTODO" and "VJOURNAL" calendar components.
cat2value = "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE" Example: The following are examples of this property:
/ iana-token / x-name
;Used only in "VALARM" calendar component.
The following are examples of this property in a "VEVENT", "VTODO" or
"VJOURNAL" calendar component:
CATEGORIES:APPOINTMENT,EDUCATION CATEGORIES:APPOINTMENT,EDUCATION
CATEGORIES:MEETING CATEGORIES:MEETING
The following are examples of this property in a "VALARM" calendar 4.8.1.3 Classification
component:
CATEGORIES:AUDIO,DISPLAY
CATEGORIES:PROCEDURE
The data type for this property is TEXT. Property Name: CLASS
Dawson/Stenerson 43 Expires MAY 1998 Purpose: This property defines the access classification for a
calendar component.
4.6.4 Classification Value Type: TEXT
This property is identified by the property name CLASS. This property Conformance: The property MAY only be specified in a "VEVENT",
defines the access classification for a calendar component. The "VTODO" or "VJOURNAL" calendar components. The property MAY only be
property MAY only be specified in a "VEVENT", "VTODO" or "VJOURNAL" specified once.
calendar component. The property MAY only be specified once.
An access classification is only one component of the general Description: An access classification is only one component of the
security system within a calendar application. It provides a method general security system within a calendar application. It provides a
of capturing the scope of the access the calendar owner intends for method of capturing the scope of the access the calendar owner
information within an individual calendar entry. The access intends for information within an individual calendar entry. The
classification of an individual iCalendar component is useful when access classification of an individual iCalendar component is useful
measured along with the other security components of a calendar when measured along with the other security components of a calendar
system (e.g., calendar user authentication, authorization, access system (e.g., calendar user authentication, authorization, access
rights, access role, etc.). Hence, the semantics of the individual rights, access role, etc.). Hence, the semantics of the individual
access classifications cannot be completely defined by this memo access classifications cannot be completely defined by this memo
alone. Additionally, due to the "blind" nature of most exchange alone. Additionally, due to the "blind" nature of most exchange
processes using this memo, these access classifications cannot serve processes using this memo, these access classifications cannot serve
as an enforcement statement for a system receiving an iCalendar as an enforcement statement for a system receiving an iCalendar
object. Rather, they provide a method for capturing the intention of object. Rather, they provide a method for capturing the intention of
the calendar owner for the access to the calendar component. The the calendar owner for the access to the calendar component. The
[ICMS] provides a broader description of the security system within a [ICMS] provides a broader description of the security system within a
calendar application. calendar application.
The property is defined by the following notation: No property parameters MAY be specified on this property.
Format Definition: The property is defined by the following notation:
class = "CLASS" ":" [WSP] classvalue CRLF class = "CLASS" ":" [WSP] classvalue CRLF
classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token
/ x-name / x-name
;Default is PUBLIC ;Default is PUBLIC
The following is an example of this property: Dawson/Stenerson 56 Expires September 1998
Example: The following is an example of this property:
CLASS:PUBLIC CLASS:PUBLIC
The data type for this property is TEXT. 4.8.1.4 Comment
4.6.5 Comment Property Name: COMMENT
This property is identified by the property name COMMENT. This Purpose: This property specifies non-processing information intended
property specifies non-processing information intended to provide a to provide a comment to the calendar user.
comment to the calendar user. The property MAY be specified in any of
the calendar components. The property MAY be specified multiple
times.
The property is defined by the following notation: Value Type: TEXT
comment = "COMMENT" ":" [WSP] text CRLF Conformance: This property may be specified in an iCalendar object.
The following is an example of this property: Description: The property MAY be specified multiple times.
Only the "ALTREP" or "LANGUAGE" property parameters MAY be specified
on this property.
Format Definition: The property is defined by the following notation:
The property MAY be specified in any of the calendar components.
comment = "COMMENT" [commparam] ":" [WSP] text CRLF
commparam = [";" [WSP] altrepparm ] [";" [WSP] languageparm]
Example: The following is an example of this property:
COMMENT:The meeting really needs to include both ourselves COMMENT:The meeting really needs to include both ourselves
and the customer. We can't hold this meeting without them and the customer. We can't hold this meeting without them
Dawson/Stenerson 44 Expires MAY 1998
As a matter of fact\, the venue for the meeting ought to be at As a matter of fact\, the venue for the meeting ought to be at
their site. - - John their site. - - John
The data type for this property is TEXT. The data type for this property is TEXT.
4.6.6 Contact 4.8.1.5 Description
This property is defined by the property name CONTACT. The property Property Name: DESCRIPTION
is used to represent contact information or alternately a reference
to contact information associated with the calendar component. The
property MAY only be specified in the "VEVENT", "VTODO" and
"VJOURNAL" calendar components. The property value consists of
textual contact information. Alternately, the value type for the
property can be reset such that the property references the URI to
the contact information.
The property is defined by the following notation: Purpose: This property provides a more complete description of the
calendar component, than that provided by the "SUMMARY" property.
contact = "CONTACT" *(";" [WSP] parameter) ":" [WSP] Value Type: TEXT
text / uri CRLF
The following is an example of this property referencing textual Conformance: The property MAY be specified in the "VEVENT", "VTODO"
contact information: and "VJOURNAL" calendar components. The property MAY be specified
multiple times only within a "VJOURNAL" calendar component. The
property MAY be specified in "VALARM" calendar component.
CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234 Description: This property is used in the "VEVENT" and "VTODO" to
capture lengthy textual decriptions associated with the activity.
The following is an example of this property referencing a LDAP URI Dawson/Stenerson 57 Expires September 1998
to a directory entry containing the contact information: This property is used in the "VJOURNAL" calendar component to capture
one more textual journal entries.
CONTACT;VALUE=URI:ldap://host.com:6666/o=3DABC%20Industries\, This property is used in the "VALARM" calendar component to capture
c=3DUS??(cn=3DBJim%20Dolittle) the display text for a DISPLAY category of alarm, to capture the body
text for an EMAIL category of alarm and to capture the arguement
string for a PROCEDURE category of alarm.
The following is an example of this property referencing a MIME body Only the "ALTREP" or "LANGUAGE" property parameters MAY be specified
part containing the contact information, such as a vCard embedded in on this property.
a [MIME-DIR] content-type:
CONTACT;VALUE=URI:<part3.msg970930T083000SILVER@host.com> Format Definition: The property is defined by the following notation:
The default data type for this property is TEXT. The data type MAY be description = "DESCRIPTION" [descparam] ":" [WSP] text CRLF
reset to URI in order to specify a reference to the contact
information.
4.6.7 Date/Time Completed descparam = [";" [WSP] altrepparm] [";" [WSP] languageparm]
This property is identified by the property name COMPLETED. This Example: The following is an example of the property with formatted
property defines the date and time that a to-do was actually line breaks in the property value:
completed. The property MAY be specified once in a "VTODO" component.
The date and time is an UTC value.
The property is defined by the following notation: DESCRIPTION:Meeting to provide technical review for "Phoenix"
design.\n Happy Face Conference Room. Phoenix design team
MUST attend this meeting.\n RSVP to team leader.
completed = "COMPLETED" ":" [WSP] date-time CRLF The following is an example of the property with folding of long
lines:
The following is an example of this property: DESCRIPTION:Last draft of the new novel is to be completed
for the editor's proof today.
Dawson/Stenerson 45 Expires MAY 1998 4.8.1.6 Geographic Position
COMPLETED:19960401T235959Z
The data type for this property is DATE-TIME. Property Name: GEO
4.6.8 Date/Time Created Purpose: This property specifies information related to the global
position for the activity specified by a calendar component.
This property is identified by the property name CREATED. This Value Type: Two FLOAT values.
property specifies the date and time that the calendar information
was created by the Organizer. The property MAY be specified in any of
the calendar components. The property MAY only be specified once. The
date and time is an UTC value.
The property is defined by the following notation: Conformance: This property MAY be specified in an iCalendar object.
created = "CREATED" ":" [WSP] date-time CRLF Description: The property value specifies latitude and longitude, in
that order (i.e., "LAT LON" ordering). The longitude represents the
location east and west of the prime meridian as a positive or
negative real number, respectively. The latitude represents the
location north and south of the equator as a positive or negative
real number, respectively. The longitude and latitude values MUST be
specified as decimal degrees and should be specified to six decimal
places. This will allow for granularity within a meter of the
geographical position. The simple formula for converting degrees-
minutes-seconds into decimal degrees is:
The following is an example of this property: decimal = degrees + minutes/60 + seconds/3600.
CREATED:19960329T133000Z Dawson/Stenerson 58 Expires September 1998
No property parameters MAY be specified on this property.
The data type for this property is DATE-TIME. Format Definition: The property is defined by the following notation:
4.6.9 Date/Time Due geo = "GEO" ":" [WSP] geovalue CRLF
This property is identified by the property name DUE. This property geovalue = float ";" [WSP] float
defines the date and time that a to-do is expected to be completed. ;Latitude and Longitude components
The time can either be in local time, local time with UTC offset or
UTC time. The property MAY only be specified in a "VTODO" calendar
component and only once. The value MUST be a date/time after the
DTSTART value, if specified.
The property is defined by the following notation: Example: The following is an example of this property:
due = "DUE" ":" [WSP] date-time CRLF GEO:37.386013;-122.082932
The following is an example of this property: 4.8.1.7 Location
DUE:19960401T235959Z Property Name: LOCATION
The type for this property is DATE-TIME. Purpose: The property defines the intended venue for the activity
defined by a calendar component.
4.6.10 Date/Time End Value Type: TEXT
This property is identified by the property name DTEND. This property Conformance: This property MAY be specified in the "VEVENT" or
MAY be specified within the "VEVENT", "VFREEBUSY", and "VTIMEZONE" "VTODO" calendar component.
calendar components.
Within the "VEVENT" calendar component, this property defines the end Description: Specific venues such as conference or meeting rooms may
date and time for the event. The property is REQUIRED in "VEVENT" be explicitly specified using this property. An alternate
calendar components. The time can either be in local time, local time representation may be specified that is a URI that points to
with UTC offset or UTC time. The local time is only to be used to directory information with more structured specification of the
specify date and time values that do not need to be fixed. A location. For example, the alternate representation may specify
recipient MUST assume their own time zone for data and time values either an LDAP URI pointing to an LDAP server entry or a CID URI
pointing to a MIME body part containing a vCard for the location.
Dawson/Stenerson 46 Expires MAY 1998 Only the "ALTREP" or "LANGUAGE" property parameters MAY be specified
that do not include time zone information. The value MUST be later in on this property.
time than the value of the "DTSTART" property.
Within the "VFREEBUSY" calendar component, this property defines the Format Definition: The property is defined by the following notation:
end date and time for the free or busy time information. The time
MUST be specified in local time with UTC offset or UTC time. The
value MUST be later in time than the value of the "DTSTART" property.
The property is defined by the following notation: location = "LOCATION [locparam] ":" [WSP] text CRLF
dtend = "DTEND" ":" [WSP] date-time CRLF locparam = [";" [WSP] altrepparm] [";" [WSP] languageparm]
The following is an example of this property: Example: The following are some examples of this property:
DTEND:19960401T235959Z LOCATION:Conference Room - F123, Bldg. 002
The data type for this property is DATE-TIME. LOCATION;ALTREP="http://xyzcorp.com/conf-rooms/f123.vcf":
Conference Room - F123, Bldg. 002
4.6.11 Date/Time Stamp 4.8.1.8 Percent Complete
This property is identified by the property name DTSTAMP. This Property Name: PERCENT-COMPLETE
property specifies an UTC date/time stamp. The property indicates the
date/time that the iCalendar object instance was created. This
property MUST be included in "VEVENT", "VTODO", "VJOURNAL" and
"VFREEBUSY" calendar components to permit the recipient to know when
the iCalendar object was created.
This property is also useful to protocols such as [IMIP] that have Dawson/Stenerson 59 Expires September 1998
inherent latency issues with the delivery of content. This property Purpose: This property is used by an assignee or delegatee of a to-do
will assist in the proper sequencing of messages containing iCalendar to convey the percent completion of a to-do to the Organizer.
objects.
This property is different than the "CREATED" and "LAST-MODIFIED" Value Type: INTEGER
properties. These two properties are used to specify when the
calendar service information was created and last modified. This is
different than when the iCalendar object representation of the
calendar service information was created or last modified.
The property is defined by the following notation: Conformance: This property MAY only be specified in a "VTODO"
calendar component.
dtstamp = "DTSTAMP" ":" [WSP] date-time CRLF Description: The property value is a postive integer between zero and
one hundred. 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.
The value type for this property is DATE-TIME. The value MUST be a When a to-do is assigned to multiple individuals, the property value
UTC date/time 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.
4.6.12 Date/Time Start No property parameters MAY be specified on this property.
This property is identified by the property name DTSTART. This Format Definition: The property is defined by the following notation:
property MAY be specified within the "VEVENT", "VTODO", "VFREEBUSY",
and "VTIMEZONE" calendar components.
Within the "VEVENT" calendar component, this property defines the percent = "PERCENT-COMPLETE" ":" [WSP] integer CRLF
start date and time for the event. The property is REQUIRED in
"VEVENT" calendar components. The time can either be in local time,
Dawson/Stenerson 47 Expires MAY 1998 Example: The following is an example of this property to show 39%
local time with UTC offset or UTC time. The local time is only to be completion:
used to specify date and time values that do not need to be fixed. A
recipient MUST assume their own time zone for data and time values
that do not include time zone information. Events MAY have a start
date/time but no end date/time. In that case, the event does not take
up any time.
Within the "VFREEBUSY" calendar component, this property defines the PERCENT-COMPLETE:39
start date and time for the free or busy time information. The time
MUST be specified in local time with UTC offset or UTC time.
Within the "VTIMEZONE" calendar component, this property defines the 4.8.1.9 Priority
effective start date and time for a time zone specification. This
property is REQUIRED within "VTIMEZONE" calendar components. The time
MUST be specified as a UTC time.
The property is defined by the following notation: Property Name: PRIORITY
dtstart = "DTSTART" *(";" [WSP] parameter) ":" [WSP] (date-time Purpose: The property defines the relative priority for a calendar
/ date) CRLF component.
The following is an example of this property: Value Type: INTEGER
DTSTART:19960401T235959-0600 Conformance: The property MAY only be specified in a "VEVENT" or
"VTODO" calendar component.
The default data type for this property is DATE-TIME. The data type Description: The priority is specified as an integer in the range
MAY be overridden to be DATE. zero to nine. A value of zero (ASCII decimal 48) specifies an
undefined priority. A value of one (ASCII decimal 49) is the highest
priority. A value of two (ASCII decimal 50) is the second highest
priority. Subsequent numbers specify a decreasing ordinal priority. A
value of nine (ASCII decimal 58) is the lowest priority.
4.6.13 Daylight 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
This property is identified by the property name DAYLIGHT. This Dawson/Stenerson 60 Expires September 1998
property MAY only be specified in a "VTIMEZONE" calendar component. range of one (ASCII decimal 49) to four (ASCII decimal 52) specifies
This property specifies whether Daylight Saving Time (i.e., value is "HIGH" priority. A value of five (ASCII decimal 53) is the normal or
TRUE) or Standard Time (i.e., value is FALSE) is in effect for the "MEDIUM" priority. A value in the range of six (ASCII decimal 54) to
time zone. The default value is FALSE or Standard Time. nine (ASCII decimal 58) is "LOW" priority.
The property is defined by the following notation: A CUA with a priority schema of "A1", "A2", "A3", "B1", "B2", ...,
"C3" is mapped into this property such that a property value of one
(ASCII decimal 49) specifies "A1", a property value of two (ASCII
decimal 50) specifies "A2", a property value of three (ASCII decimal
51) specifies "A3", and so forth up to a property value of 9 (ASCII
decimal 58) specifies "C3".
daylight = "DAYLIGHT" ":" [WSP] boolean CRLF Other integer values are reserved for future use.
;Default value is FALSE
The following is an example of this property: 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.
DAYLIGHT:TRUE ;Specifies DST in effect in time zone 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.
The data type for this property is BOOLEAN. No property parameters MAY be specified on this property.
4.6.14 Description Format Definition: The property is specified by the following
notation:
This property is identified by the property name DESCRIPTION. This priority = "PRIORITY" ":" [WSP] privalue CRLF
property provides a more complete description of the calendar ;Default is zero
component, than that provided by the "SUMMARY" property. The property
MAY be specified in the "VEVENT", "VTODO" and "VJOURNAL" calendar
Dawson/Stenerson 48 Expires MAY 1998 privalue = integer ;Must be in the range [0..9]
components. The property MAY be specified multiple times only within ; All other values are reserved for future use
a "VJOURNAL" calendar component.
The property is defined by the following notation: The following is an example of a property with the highest priority:
description = "DESCRIPTION" *(";" [WSP] parameter) ":" [WSP] PRIORITY:1
text CRLF
The following is an example of the property with formatted line The following is an example of a property with a next highest
breaks in the property value: priority:
DESCRIPTION:Meeting to provide technical review for "Phoenix" PRIORITY:2
design.\n Happy Face Conference Room. Phoenix design team
MUST attend this meeting.\n RSVP to team leader.
The following is an example of the property with folding of long Example: The following is an example of a property with no priority.
lines: This is equivalent to not specifying the "PRIORITY" property.:
DESCRIPTION:Last draft of the new novel is to be completed PRIORITY:0
for the editor's proof today.
The data type for this property is TEXT. 4.8.1.10 Resources
4.6.15 Duration Property Name: RESOURCES
This property is identified by the property name DURATION. The Purpose: This property defines the equipment or resources anticipated
property specifies a duration of time. The property MAY be specified for an activity specified by a calendar entity..
in a "VEVENT" calendar component in order to specify a duration of
the event, instead of an explicit end date/time. The property MAY be
specified in a "VTODO" calendar component in order to specify a
duration for the to-do. The property MAY be specified in a
"VFREEBUSY" calendar component in order to specify the amount of free
time being requested. The property MAY be specified in an "VALARM"
calendar component in order to specify the period between repeating
alarms.
The property is defined by the following notation: Dawson/Stenerson 61 Expires September 1998
Value Type: TEXT
duration = "DURATION" ":" [WSP] duration CRLF Conformance: This property MAY be specified in a "VEVENT" or "VTODO"
calendar component.
The following is an example of this property that specifies an Description: The property value is an arbitrary text. More than one
interval of time of 1 hour and zero minutes and zero seconds: resource MAY be specified as a list of resources separated by the
COMMA character (ASCII decimal 44).
DURATION:PT1H0M0S Only the "LANGUAGE" property parameter MAY be specified on this
property.
The following is an example of this property that specifies an Format Definition: The property is defined by the following notation:
interval of time of 15 minutes.
DURATION:PT15M resources = "RESOURCES" [resrcparam] ":" [WSP] resvalist CRLF
The data type for this property is DURATION. resrcparam = ";" [WSP] languageparm
Dawson/Stenerson 49 Expires MAY 1998 resvalist = resvalue / resvalue "," [WSP] resvalist
4.6.16 Exception Date/Times resvalue = "CATERING" / "CHAIRS" / "COMPUTER PROJECTOR"
/ "EASEL" / "OVERHEAD PROJECTOR" / "SPEAKER PHONE"
/ "TABLE" / "TV" / "VCR" / "VIDEO PHONE" / "VEHICLE"
/ text
;These are just examples.
This property is identified by the property name EXDATE. This Example: The following is an example of this property:
property defines the list of date/time exceptions for a recurring
"VEVENT", "VTODO" or "VJOURNAL" calendar component. The times can
either be in local time, local time with UTC offset or UTC time.
The exception dates, if specified, is used in computing the RESOURCES:EASEL,PROJECTOR,VCR
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", "EXDATE" and "EXRULE" properties contained within the
iCalendar object. The "DTSTART" property defines the first instance
in the recurrence set. Multiple instances of the "RRULE" and "EXRULE"
properties MAY also be specified to define more sophisticated
recurrence sets. The final recurrence set is generated by gathering
all of the start date-times generated by any of the specified "RRULE"
and "RDATE" properties, and excluding any start date and times which
fall within the union of start date and times generated by any
specified "EXRULE" and "EXDATE" properties. This implies that start
date and times within exclusion related properties (i.e., "EXDATE"
and "EXRULE") 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.
The "EXDATE" property MAY be used to exclude the value specified in 4.8.1.11 Status
"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".
The property is defined by the following notation: Property Name: STATUS
exdate = "EXDATE" *(";" [WSP] parameter) ":" [WSP] [date-time / Purpose: This property defines the overall status or confirmation for
date] *("," [WSP] date-time/date) CRLF the calendar component.
;Values MUST match the specified value type.
The following is an example of this property: Value Type: TEXT
EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z Conformance: This property MAY only be specified in the "VEVENT",
"VTODO", "VJOURNAL" calendar components.
The data type for this property is DATE-TIME. The data type MAY be Description: In a group scheduled calendar component, the property is
reset to DATE. 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.
4.6.17 Exception Rule No property parameter MAY be specified on this property.
This property is identified by the property name EXRULE. This Dawson/Stenerson 62 Expires September 1998
property defines a rule or repeating pattern for an exception to a Format Definition: The property is defined by the following notation:
recurrence set. This property MAY only be specified in the "VEVENT",
"VTODO" or "VJOURNAL" calendar components.
The exception rule, if specified, is used in computing the recurrence status = "STATUS" ":" [WSP] statvalue CRLF
set. The recurrence set is the complete set of recurrence instances
Dawson/Stenerson 50 Expires MAY 1998 statvalue = "TENTATIVE" ;Indicates event is
for a calendar component. The recurrence set is generated by ;tentative.
considering the initial "DTSTART" property along with the "RRULE", / "CONFIRMED" ;Indicates event is
"RDATE", "EXDATE" and "EXRULE" properties contained within the ;definite.
iCalendar object. The "DTSTART" defines the first instance in the / "CANCELLED" ;Indicates event was
recurrence set. Multiple instances of the "RRULE" and "EXRULE" ;cancelled.
properties MAY also be specified to define more sophisticated ;Status values for a "VEVENT"
recurrence sets. The final recurrence set is generated by gathering
all of the start date-times generated by any of the specified "RRULE"
and "RDATE" properties, and excluding any start date and times which
fall within the union of start date and times generated by any
specified "EXRULE" and "EXDATE" properties. This implies that start
date and times within exclusion related properties (i.e., "EXDATE"
and "EXRULE") 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.
The "EXRULE" property MAY be used to exclude the value specified in statvalue =/ "NEEDS-ACTION" ;Indicates to-do needs action.
"DTSTART". However, in such cases the original "DTSTART" date MUST / "COMPLETED" ;Indicates to-do completed.
still be maintained by the calendaring and scheduling system because / "IN-PROCESS" ;Indicates to-do in process of
the original "DTSTART" value has inherent usage dependencies by other / "CANCELLED" ;Indicates to-do was cancelled.
properties such as the "RECURRENCE-ID". ;Status values for "VTODO".
The property is defined by the following notation: statvalue =/ "DRAFT" ;Indicates journal is draft.
/ "FINAL" ;Indicates journal is final.
/ "CANCELLED" ;Indicates journal is removed.
;Status values for "VJOURNAL".
exrule = "EXRULE" ":" [WSP] recur CRLF Example: The following is an example of this property for a "VEVENT"
calendar component:
The following are examples of this property. Except every other week, STATUS:TENTATIVE
on Tuesday and Thursday for 4 occurrences:
EXRULE:FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,TH The following is an example of this property for a "VTODO" calendar
component:
Except daily for 10 occurrences: STATUS:NEEDS-ACTION
EXRULE:FREQ=DAILY;COUNT=10 The following is an example of this property for a "VJOURNAL"
calendar component:
Except yearly in June and July for 8 occurrences: STATUS:DRAFT
EXRULE:FREQ=YEARLY;COUNT=8;BYMONTH=6,7 4.8.1.12 Summary
The data type for this property is RECUR. Property Name: SUMMARY
4.6.18 Free/Busy Time Purpose: This property defines a short summary or subject for the
calendar component.
This property is identified by the property name FREEBUSY. The Value Type: TEXT
property defines one or more free or busy time intervals. These time
periods MAY be specified as either a start and end date-time or a
start date-time and duration.
The date and time is either local time with UTC offset or a UTC Conformance: The property MUST be specified in the "VEVENT", "VTODO"
value. and "VJOURNAL" calendar components. In addition, it MAY appear in the
"VALARM" calendar component.
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.
Dawson/Stenerson 63 Expires September 1998
This property is used in the "VALARM" calendar component to capture
the subject of an EMAIL category of alarm.
Only the "ALTREP" and "LANGUAGE" property parameters MAY be specified
on this property.
Format Definition: The property is defined by the following notation:
summary = "SUMMARY" [summparam] ":" [WSP] text CRLF
summparam = [";" [WSP] altrepparm] [";" [WSP] languageparm]
Example: The following is an example of this property:
SUMMARY:Department Party
4.8.2 Date and Time Component Properties
The following properties specify date and time related information in
calendar components.
4.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
Conformance: The property MAY only be specified in a "VTODO"
component in an iCalendar object.
Description: The date and time must be in a UTC format.
No property parameters MAY be specified on this property.
Format Definition: The property is defined by the following notation:
completed = "COMPLETED" ":" [WSP] date-time CRLF
Example: The following is an example of this property:
COMPLETED:19960401T235959Z
4.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 MAY
BE reset to a DATE value type.
Dawson/Stenerson 64 Expires September 1998
Conformance: This property MAY only be specified within the "VEVENT",
"VFREEBUSY", and "VTIMEZONE" calendar components.
Description: Within the "VEVENT" calendar component, this property
defines the date and time by which the event ends. The value MUST be
later in time than the value of the "DTSTART" property.
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 as in the UTC time format. The value MUST be later
in time than the value of the "DTSTART" property.
Only the "VALUE" and "TZID" property parameters MAY be specified on
this property. The "TZID" property parameter MAY only be specified
when the value type is DATE-TIME.
Format Definition: The property is defined by the following notation:
dtend = "DTEND" [dtendparam]":" [WSP] dtendval CRLF
dtendparam = [";" [WSP] "VALUE" "=" "DATE-TIME"]
[";" [WSP] "TZID" "=" paramtext
dtendparam =/ ";" [WSP] "VALUE" "=" "DATE"
dtendval = date-time / date
;Value MUST match value type
Example: The following is an example of this property:
DTEND:19960401T235959Z
DTEND;VALUE=DATE:19980704
4.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 MAY
BE reset to a DATE value type.
Conformance: The property MAY only be specified in a "VTODO" calendar
component and only once.
Description: The value MUST be a date/time equal to or after the
DTSTART value, if specified.
Only the "VALUE" and "TZID" property parameters MAY be specified on
this property. The "TZID" property parameter MAY only be specified
when the value type is DATE-TIME.
Dawson/Stenerson 65 Expires September 1998
Format Definition: The property is defined by the following notation:
due = "DUE" [dueparam]":" [WSP] dueval CRLF
dueparam = [";" [WSP] "VALUE" "=" "DATE-TIME"]
[";" [WSP] "TZID" "=" paramtext
dueparam =/ ";" [WSP] "VALUE" "=" "DATE"
dueval = date-time / date
;Value MUST match value type
Example: The following is an example of this property:
DUE:19960401T235959Z
4.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 DATE-TYPE value
will be one of the forms defined for the DATE-TIME value type. The
value type MAY BE reset to a DATE value type.
Conformance: This property MAY be specified within the "VEVENT",
"VTODO", "VFREEBUSY", and "VTIMEZONE" calendar components.
Description: Within the "VEVENT" calendar component, this property
defines the start date and time for the event. The property is
REQUIRED in "VEVENT" calendar components. Events MAY have a start
date/time but no end date/time. In that case, the event does not take
up any time.
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 "VTIMEZONE" calendar component, this property defines the
effective start date and time for a time zone specification. This
property is REQUIRED within "VTIMEZONE" calendar components. The time
MUST be specified in the UTC time format.
Only the "VALUE" and "TZID" property parameters MAY be specified on
this property. The "TZID" property parameter MAY only be specified
when the value type is DATE-TIME.
Format Definition: The property is defined by the following notation:
dtstart = "DTSTART" [dtstparam] ":" [WSP] dtstval CRLF
dtstparam = [";" [WSP] "VALUE" "=" "DATE-TIME"]
[";" [WSP] "TZID" "=" paramtext]
Dawson/Stenerson 66 Expires September 1998
dtstparam =/ ";" [WSP] "VALUE" "=" "DATE"
dtstval = date-time / date
;Value MUST match value type
Example: The following is an example of this property:
DTSTART:19980118T073000Z
4.8.2.5 Duration
Property Name: DURATION
Purpose: The property specifies a duration of time .
Value Type: DURATION
Conformance: The property MAY be specified in a "VEVENT", "VTODO",
"VFREEBUSY" 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 "VFREEBUSY" calendar component the property may be
used to specify the interval of free time being requested. In a
"VALARM" calendar component the property may be used to specify the
delay period prior to repeating an alarm.
No property parameters MAY be specified on this property.
Format Definition: The property is defined by the following notation:
duration = "DURATION" ":" [WSP] duration CRLF
Example: The following is an example of this property that specifies
an interval of time of 1 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
4.8.2.6 Free/Busy Time
Property Name: FREEBUSY
Purpose: The property defines one or more free or busy time
intervals.
Value Type: PERIOD. The data and time value MUST be in a UTC time
format.
Dawson/Stenerson 67 Expires September 1998
Conformance: The property MAY only be specified in a "VFREEBUSY"
calendar component.
Description: These time periods MAY 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.
The "FREEBUSY" property MAY include the "TYPE" property parameter to The "FREEBUSY" property MAY include the "TYPE" property parameter to
specify whether the information defines a free or busy time interval. specify whether the information defines a FREE or BUSY time interval.
The default "TYPE" property parameter value is BUSY.
Dawson/Stenerson 51 Expires MAY 1998 If the "TYPE" property parameter is set to "BUSY", then the property
The default "TYPE" property parameter value is BUSY. The property MAY MAY also include the "BSTAT" property parameter to provide added
also include the "STATUS" property parameter to provide added
information about the busy time. For example, if the busy time is information about the busy time. For example, if the busy time is
associated with a time interval that would be unavailable for associated with a time interval that would be unavailable for
scheduling - - in any case - - or busy time that has been tentatively scheduling in any case the parameter MAY BE set to UNAVAILABLE or if
scheduled. The default "STATUS" property parameter value is BUSY. The the busy time that has been tentatively scheduled the parameter MAY
property is defined by the following notation: BE set to TENTATIVE. The default "BSTAT" property parameter value is
BUSY, providing no additional busy status information.
freebusy = "FREEBUSY" *(";" [WSP] parameter) [";" [WSP] "FREEBUSY" properties within the "VFREEBUSY" calendar component
fbparmlist] ":" [WSP] fbvalue CRLF should be sorted in ascending order, based on start time and then end
time, with the earliest periods first.
fbparmlist = fbparam *(";" [WSP] fbparam) The "FREEBUSY" property MAY specify more than one value, separated by
the COMMA character (ASCII decimal 44). In such cases, the "FREEBUSY"
property values should all be of the same "TYPE" and "BSTAT" property
parameter type (e.g., all values of a particular "TYPE" and "BSTAT"
listed together in a single property).
fbparam = fbtype / fbstatus No property parameters other than the property specific "TYPE" and
"BSTAT" parameters MAY be specified on this property.
fbtype = "TYPE" "=" ("FREE" or "BUSY") Format Definition: The property is defined by the following notation:
freebusy = "FREEBUSY" [";" [WSP] fbparmlist] ":" [WSP] fbvalue
CRLF
fbparmlist = fb-free / fb-busy
fb-free = "TYPE" "=" "FREE"
fb-busy = ["TYPE" "=" "BUSY"] [";" [WSP] fbstatus]
;Default is BUSY ;Default is BUSY
fbstatus = "STATUS" "=" fbstatus = "BSTAT" "="
"BUSY" ;Represents busy time interval. "BUSY" ;Represents busy time interval.
/ "UNAVAILABLE" ;Represents busy, but unavailable / "UNAVAILABLE" ;Represents busy, but unavailable
;interval for cheduling; such as ;interval for cheduling; such as
;out-of-office or non-working hours. ;out-of-office or non-working hours.
/ "TENTATIVE" ;Represents busy, but tentatively / "TENTATIVE" ;Represents busy, but only tentatively
;scheduled interval. ;scheduled interval.
/ iana-token ;Represents other registered busy status
Dawson/Stenerson 68 Expires September 1998
/ x-name ;Represents experimental busy status
;Default is BUSY ;Default is BUSY
fbvalue = period *["," [WSP] period] fbvalue = period *["," [WSP] period]
;Value MUST match default or explicit data type ;Time value MUST be in the UTC time format.
The following are some examples of this property: Example: The following are some examples of this property:
FREEBUSY;STATUS=UNAVAILABLE:19970308T160000Z/PT8H30M FREEBUSY;BSTAT=UNAVAILABLE:19970308T160000Z/PT8H30M
FREEBUSY;TYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H FREEBUSY;TYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
"FREEBUSY" properties within the "VFREEBUSY" calendar component 4.8.2.7 Time Transparency
should be sorted in ascending order, based on start time and then end
time, with the earliest periods first.
The "FREEBUSY" property MAY specify more than one value, separated by Property Name: TRANSP
the COMMA character (ASCII decimal 44). In such cases, the "FREEBUSY"
property values should all be of the same "STATUS" property parameter
type (e.g., all values of a particular "STATUS" listed together in a
single property).
The data type for this property is PERIOD. Purpose: This property defines whether an event is transparent or not
to busy time searches.
4.6.19 Geographic Position Value Type: TEXT
This property is identified by the property name GEO. This property Conformance: This property MAY only be specified in a "VEVENT"
specifies information related to the global position for a "VEVENT" calendar component.
or "VTODO" calendar component. The property value specifies latitude
and longitude, in that order (i.e., "LAT LON" ordering). The
Dawson/Stenerson 52 Expires MAY 1998 Description: Transparency is the state that determines whether an
longitude represents the location east and west of the prime meridian event takes up time on a calendar, and with be reflected as "busy
as a positive or negative real number, respectively. The latitude time", or is just "penciled in" to the calendar, and will not be
represents the location north and south of the equator as a positive reflected as "busy time". If the event is transparent, then other
or negative real number, respectively. The longitude and latitude events can be scheduled in the same time period without there being a
values MUST be specified as decimal degrees and should be specified time period conflict. If not specified, the default state is OPAQUE.