draft-ietf-calsch-ical-02.txt   draft-ietf-calsch-ical-03.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-02.txt> July 29, 1997 <draft-ietf-calsch-ical-03.txt> October 22, 1997
Expires January 1998 Expires Mary 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 document is an Internet-Draft. Internet-Drafts are working This memo is an Internet-Draft. Internet-Drafts are working documents
documents of the Internet Engineering Task Force (IETF), its areas, of the Internet Engineering Task Force (IETF), its areas, and its
and its working groups. Note that other groups may also distribute working groups. Note that other groups MAY also distribute working
working documents as Internet-Drafts. documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months. Internet-Drafts may be updated, replaced, or made obsolete by months. Internet-Drafts MAY be updated, replaced, or made obsolete by
other documents at any time. It is not appropriate to use Internet- other documents at any time. It is not appropriate to use Internet-
Drafts as reference material or to cite them other than as a "working Drafts as reference material or to cite them other than as a "working
draft" or "work in progress". draft" or "work in progress".
To learn the current status of any Internet-Draft, please check the To learn the current status of any Internet-Draft, please check the
1id-abstracts.txt listing contained in the Internet-Drafts Shadow 1id-abstracts.txt listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net (US East Coast), nic.nordu.net Directories on ds.internic.net (US East Coast), nic.nordu.net
(Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
Rim). Rim).
Distribution of this document is unlimited. Distribution of this memo is unlimited.
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 for use across the Internet, today, in proprietary ways. This memo
document has been defined to provide the a definition of a common has been defined to provide the a definition of a common format for
format for openly exchanging calendaring and scheduling information openly exchanging calendaring and scheduling information across the
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 and to-do information. It also can be used to convey
free/busy time information. The content type is suitable as a MIME free/busy time information. The content type is suitable as a MIME
message entity that can be transferred over MIME based email systems message entity that can be transferred over MIME based email systems
or using HTTP. In addition, the content type is useful as an object or using HTTP. In addition, the content type is useful as an object
Dawson/Stenerson 1 Expirs MAY 1998
for interactions between desktop applications using the operating for interactions between desktop applications using the operating
system clipboard, drag/drop or file systems capabilities. system clipboard, drag/drop or file systems capabilities.
Dawson/Stenerson 1 ExpiresJanuary 1998 This memo is based on the earlier work of the vCalendar specification
This document is based on the earlier work of the vCalendar for the exchange of personal calendaring and scheduling information.
specification for the exchange of personal calendaring and scheduling In order to avoid confusion with this referenced work, this memo is
information. In order to avoid confusion with this referenced work, to be known as the iCalendar specification. This memo is based on the
this document is to be known as the iCalendar specification. This calendaring and scheduling model defined in []. The document is also
document is based on the calendaring and scheduling model defined in the basis for the calendaring and scheduling interoperability
[ICMS]. The document is also the basis for the calendaring and protocol defined in [ITIP].
scheduling interoperability protocol defined in [ITIP-1], [ITIP-2]
and [ITIP-3].
This document also includes the format for defining content type This memo also includes the format for defining iCalendar object
profiles. A content type profile is a document that defines a set of methods. An iCalendar object method is a set of usage constraints for
usage constraints for the iCalendar object. For example, a profile the iCalendar object. For example, these methods might define
might be defined to specify how the iCalendar object can be used to scheduling messages that request an event be scheduled, reply to an
provide for a set of interpersonal scheduling messages. Such a event request, send a cancellation notice for an event, modify or
profile might define scheduling messages that request an event be replace the definition of an event, provide a counter proposal for an
scheduled, reply to an event request, send a cancellation notice for original event request, delegate an event request to another
an event, modify or replace the definition of an event, provide a individual, request free or busy time, reply to a free or busy time
counter proposal for an original event request, delegate an event request, or provide similar scheduling messages for a to-do or
request to another individual, request free or busy time, reply to a journal entry calendar component.
free or busy time request, or provide similar scheduling messages for
a to-do or journal entry calendar component.
Dawson/Stenerson 2 Expires January 1998 Dawson/Stenerson 2 Expires MAY 1998
Table of Contents Table of Contents
1. Introduction........................................................5 1......................................................................7
2. Basic Grammar and Conventions.......................................5 Introduction...........................................................8
3. Definitions.........................................................6 2. Basic Grammar and Conventions.......................................8
3.1 Alarm............................................................6 2.1 Formatting Conventions...........................................9
3.2 Busy Time........................................................6 2.2 Related Memos...................................................10
3.3 Calendar Component...............................................6 3. TEXT/CALENDAR Registration Information.............................10
3.4 Calendar Date....................................................6 4. iCalendar Object Specification.....................................12
3.5 Calendar Object..................................................7 4.1 Content Considerations..........................................13
3.6 Calendar Properties..............................................7 4.1.1 Content Lines................................................13
3.7 Calendar Scale...................................................7 4.1.2 List and Field Separators....................................14
3.8 Component Properties.............................................7 4.1.3 Multiple Values..............................................15
3.9 Coordinate Universal Time (UTC)..................................7 4.1.4 Binary Content...............................................15
3.10 Daylight Saving Time (DST)......................................7 4.1.5 Property Parameters..........................................15
3.11 Event...........................................................7 4.1.6 Alternate Text Representation................................16
3.12 Free Time.......................................................7 4.1.7 Character Set................................................17
3.13 Gregorian Calendar..............................................8 4.1.8 Language.....................................................17
3.14 Journal.........................................................8 4.1.9 Value Data Types.............................................17
3.15 Local Time......................................................8 4.2 iCalendar object................................................28
3.16 Period..........................................................8 4.3 Property........................................................28
3.17 Recurrence Rule.................................................8 4.4 Calendar Components.............................................29
3.18 Reminder........................................................8 4.4.1 Event Component..............................................29
3.19 Repeating Event or To-do........................................8 4.4.2 To-do Component..............................................31
3.20 Standard Time...................................................8 4.4.3 Journal Component............................................31
3.21 Time Zone.......................................................9 4.4.4 Free/Busy Component..........................................32
3.22 To-do...........................................................9 4.4.5 Alarm Component..............................................33
4. TEXT/CALENDAR Registration Information..............................9 4.4.6 Timezone Component...........................................34
5. iCalendar Object Specification.....................................11 4.5 Calendar Properties.............................................38
5.1 Syntax Considerations...........................................11 4.5.1 Calendar Scale...............................................38
5.1.1 Content Lines................................................13 4.5.2 Method.......................................................39
5.1.2 List and Field Separators....................................14 4.5.3 Product Identifier...........................................39
5.1.3 Multiple Values..............................................14 4.5.4 Source.......................................................40
5.1.4 Character Set................................................15 4.5.5 Source Name..................................................40
5.1.5 Language.....................................................15 4.5.6 Version......................................................41
5.1.6 Content Encoding.............................................15 4.6 Component Properties............................................41
5.1.7 Binary Content...............................................15 4.6.1 Attachment...................................................41
5.1.8 Recurrence Set...............................................15 4.6.2 Attendee.....................................................42
5.1.9 Data Types...................................................16 4.6.3 Categories...................................................44
5.2 iCalendar Object................................................21 4.6.4 Classification...............................................45
5.3 Property........................................................21 4.6.5 Comment......................................................46
5.4 Calendar Components.............................................22 4.6.6 Contact......................................................46
5.4.1 Event Component..............................................22 4.6.7 Date/Time Completed..........................................47
5.4.2 To-do Component..............................................23 4.6.8 Date/Time Created............................................47
5.4.3 Journal Component............................................23 4.6.9 Date/Time Due................................................47
5.4.4 Free/Busy Component..........................................24 4.6.10 Date/Time End...............................................48
5.4.5 Alarm Component..............................................25 4.6.11 Date/Time Stamp.............................................48
5.4.6 Timezone Component...........................................26 4.6.12 Date/Time Start.............................................49
5.5 Calendar Properties.............................................30 4.6.13 Daylight....................................................49
5.5.1 Calendar Scale...............................................30 4.6.14 Description.................................................50
5.5.2 Product Identifier...........................................30 4.6.15 Duration....................................................50
5.5.3 Profile......................................................31 4.6.16 Exception Date/Times........................................51
5.5.4 Profile Version..............................................31 4.6.17 Exception Rule..............................................52
5.5.5 Source.......................................................32
5.5.6 Source Name..................................................32
5.5.7 Version......................................................32
Dawson/Stenerson 3 Expires January 1998 Dawson/Stenerson 3 Expires MAY 1998
5.6 Component Properties............................................33 4.6.18 Free/Busy Time..............................................52
5.6.1 Attachment...................................................33 4.6.19 Geographic Position.........................................54
5.6.2 Attendee.....................................................33 4.6.20 Last Modified...............................................54
5.6.3 Categories...................................................36 4.6.21 Location....................................................54
5.6.4 Classification...............................................36 4.6.22 Percent Complete............................................55
5.6.5 Comment......................................................37 4.6.23 Priority....................................................56
5.6.6 Date/Time Completed..........................................37 4.6.24 Recurrence Date/Times.......................................56
5.6.7 Date/Time Created............................................38 4.6.25 Recurrence ID...............................................57
5.6.8 Date/Time Due................................................38 4.6.26 Recurrence Rule.............................................58
5.6.9 Date/Time End................................................38 4.6.27 Related To..................................................65
5.6.10 Date/Time Stamp.............................................39 4.6.28 Repeat Count................................................66
5.6.11 Date/Time Start.............................................39 4.6.29 Request Status..............................................66
5.6.12 Daylight....................................................40 4.6.30 Resources...................................................68
5.6.13 Description.................................................40 4.6.31 Sequence Number.............................................68
5.6.14 Duration....................................................41 4.6.32 Status......................................................69
5.6.15 Exception Date/Times........................................41 4.6.33 Summary.....................................................70
5.6.16 Exception Rule..............................................42 4.6.34 Time Transparency...........................................70
5.6.17 Free/Busy Time..............................................42 4.6.35 Time Zone Name..............................................71
5.6.18 Geographic Position.........................................43 4.6.36 Time Zone Offset............................................71
5.6.19 Last Modified...............................................44 4.6.37 Uniform Resource Locator....................................71
5.6.20 Location....................................................44 4.6.38 Unique Identifier...........................................72
5.6.21 Priority....................................................45 4.6.39 Non-standard Properties.....................................73
5.6.22 Recurrence Date/Times.......................................45 5. Recommended Practices..............................................73
5.6.23 Recurrence ID...............................................46 6. Registration of Content Type Elements..............................74
5.6.24 Recurrence Rule.............................................46 6.1 Registration of New and Modified iCalendar object Methods.......74
5.6.25 Related To..................................................52 6.2 Registration of New Properties..................................74
5.6.26 Repeat Count................................................53 6.2.1 Define the property..........................................74
5.6.27 Request Status..............................................53 6.2.2 Post the Property definition.................................75
5.6.28 Resources...................................................55 6.2.3 Allow a comment period.......................................75
5.6.29 Response Sequence Number....................................56 6.2.4 Submit the property for approval.............................75
5.6.30 Sequence Number.............................................56 6.3 Property Change Control.........................................76
5.6.31 Status......................................................57 7. File extension.....................................................76
5.6.32 Summary.....................................................57 8. Macintosh File Type Code...........................................76
5.6.33 Time Transparency...........................................58 9. References.........................................................76
5.6.34 Time Zone Name..............................................58 10. Acknowledgments...................................................78
5.6.35 Time Zone Offset............................................59 11. Copyright.........................................................78
5.6.36 Uniform Resource Locator....................................59 12. Author's Address..................................................78
5.6.37 Unique Identifier...........................................59 13. iCalendar object Examples.........................................79
5.6.38 Non-standard Properties.....................................60 14. Full Copyright Statement..........................................82
6. Recommended Practices..............................................60
7. Registration of Content Type Elements..............................61
7.1 Registration of New and ModifiedProfiles........................61
7.2 Registration of New Properties..................................61
7.2.1 Define the property..........................................61
7.2.2 Post the Property definition.................................62
7.2.3 Allow a comment period.......................................62
7.2.4 Submit the property for approval.............................62
7.3 Property Change Control.........................................63
8. File extension.....................................................63
9. Macintosh File Type Code...........................................63
10. References........................................................63
11. Acknowledgments...................................................65
12. Author's Address..................................................65
13. iCalendar Object Examples.........................................66
Dawson/Stenerson 4 Expires January 1998 1.
1. Introduction Dawson/Stenerson 4 Expires MAY 1998
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 specification is intended to these groupware applications. This memo is intended to progress the
progress the level of interoperability possible between dissimilar level of interoperability possible between dissimilar calendaring and
calendaring and scheduling applications. This specification defines a scheduling applications. This memo defines a MIME content type for
MIME content type for exchanging electronic calendaring and exchanging electronic calendaring and scheduling information. The
scheduling information. The Internet Calendaring and Scheduling Core Internet Calendaring and Scheduling Core Object Specification, or
Object Specification, or iCalendar, allows for the capture and iCalendar, allows for the capture and exchange of information
exchange of information normally stored within a calendaring and normally stored within a calendaring and scheduling application; such
scheduling application; such as a Personal Information Manager or a as a Personal Information Manager or a Group Scheduling product.
Group Scheduling product.
The calendaring and scheduling model implemented by this The calendaring and scheduling model implemented by this memo is
specification is defined in the [ICMS]. defined in the [ICMS].
The format is suitable as an exchange format between applications or The format is suitable as an exchange format between applications or
systems. The format is defined in terms of a MIME content type. This systems. The format is defined in terms of a MIME content type. This
will enable the object to be exchanged using several transports, will enable the object to be exchanged using several transports,
including but not limited to SMTP, HTTP, a file system, desktop including but not limited to SMTP, HTTP, a file system, desktop
interactive protocols such as the use of a memory-based clipboard or interactive protocols such as the use of a memory-based clipboard or
drag/drop interactions, point-to-point asynchronous communication, drag/drop interactions, point-to-point asynchronous communication,
wired-network transport, or some form of unwired transport such as wired-network transport, or some form of unwired transport such as
infrared might also be used. infrared might also be used.
The definition of a calendaring and scheduling interoperability The definition of a calendaring and scheduling interoperability
protocol is the subject of another specification [ITIP-1], [ITIP-2] protocol is the subject of another memo [ITIP].
and [ITIP-3].
The specification also provides for the definition of usage profiles 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 usage profiles can be used to define other journal entries. The iCalendar object methods can be used to define
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.
The specification also includes a formal grammar for the content type The memo also includes a formal grammar for the content type to aid
to aid in the implementation of parsers and to serve as the in the implementation of parsers and to serve as the definitive
definitive reference when ambiguities or questions arise in reference when ambiguities or questions arise in interpreting the
interpreting the descriptive prose definition of the specification. descriptive prose definition of the memo.
2. Basic Grammar and Conventions 2. Basic Grammar and Conventions
This document makes use of both a descriptive prose and a more formal The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
notation for defining the calendaring and scheduling format. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
document are to be interopreted as described in [RFC 2119].
The notation used in this document is the augmented BNF notation of This memo makes use of both a descriptive prose and a more formal
[RFC 822]. Readers intending on implementing this format defined in notation for defining the calendaring and scheduling format.
Dawson/Stenerson 5 Expires January 1998 Dawson/Stenerson 5 Expires MAY 1998
this document should be familiar with this notation in order to The notation used in this memo is the augmented BNF notation of [RFC
properly interpret the specifications of this document. 822]. Readers intending on implementing this format defined in this
memo should be familiar with this notation in order to properly
interpret the specifications of this memo.
All numeric and hexadecimal values used in this document 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
of the specifications of this document. The information is of the specifications of this memo. The information is provided
provided to highlight a particular feature or characteristic of to highlight a particular feature or characteristic of the
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.
3. Definitions 2.1 Formatting Conventions
EDITORS' NOTE: This section may be removed if this text is added to
the [ICSM].
Date and time, as well as, calendaring and scheduling terminology are
used in every day conversations. However, there are precise
definitions of many of these terms that are used by this memo.
3.1 Alarm
Also called a reminder. An activity that is an asynchronous mechanism
for providing feedback for a pending or past event or to-do.
3.2 Busy Time
A period of time on a calendar where there is already scheduled one
or more events or that is otherwise not available for scheduling.
3.3 Calendar Component
One of a number of entities that may be found within a calendar
object. In particular, a calendar may be composed of calendar
properties and event, to-do, journal, free/busy, time zone or alarm
calendar components. Calendar components are identified by unique
delimiters within a calendar object. Calendar components provide an
organized collection of component properties.
3.4 Calendar Date
A particular day of a calendar year identified by its position within
the year.
Dawson/Stenerson 6 Expires January 1998
3.5 Calendar Object
An entity consisting of an organized collection of calendar
properties and calendar components. The calendar object is identified
by unique delimiters.
3.6 Calendar Properties
Attributes that apply to the calendar object as a whole. For example,
the iCalendar version used to format the calendar object, an
identifier of the product that created the calendar object, the
calendar scale used to represent the calendar information and time
zone information.
3.7 Calendar Scale
The particular type of calendar in general use. For example,
Gregorian, Buddhist Era, Japanese Emperor Era, Chinese Lunar,
Islamic, and Jewish Calendars.
3.8 Component Properties
Attributes that can only appear within one or more calendar
components. For example, the due date can only appear within a to-do
calendar component. The start date and time applies to both the event
and the to-do component.
3.9 Coordinate Universal Time (UTC)
The time scale maintained by the Bureau International de l’Heure
(International Time Bureau) that forms the basis of a coordinated
dissemination of standard frequencies and time signals. UTC is often
incorrectly referred to as GMT.
3.10 Daylight Saving Time (DST)
An adjustment to local to accommodate annual changes in the number of
daylight hours. DST is also known as Advanced Time, Summer Time, or
Legal Time. Daylight saving time adjustments in the southern
hemisphere are opposite to those in the northern hemisphere.
3.11 Event
A calendar component that defines a scheduled activity, minimally
specified by a start and end calendar date and time of day and a
description.
3.12 Free Time
A period of time available on a calendar.
Dawson/Stenerson 7 Expires January 1998
3.13 Gregorian Calendar
A calendar scale in general use beginning in 1582. It was introduced
to correct an error in the Julian Calendar scale. The Gregorian
Calendar scale is based on a solar calendar consisting of common
years made up of 365 days and leap years made up of 366 days; both
divided into 12 sequential months.
Note: Initially, this memo addresses specification of calendar
information in terms of the Gregorian calendar scale.
3.14 Journal
A calendar component that defines a collection of information
intended for human presentation and is minimally specified by a
calendar date and one or more descriptions.
3.15 Local Time
The clock time in public use in a locale. Local time is often
referenced by the customary name for the time zone in which it is
located. The relationship between local time and UTC is based on the
offset that is in use for a particular time zone. In general, the
formula is as follows:
local time = UTC + (offset)
3.16 Period
A duration of time, specified as either a defined length of time or
by its beginning and end points.
3.17 Recurrence Rule
A notation used to represent repeating occurrences, or the exceptions
to such a repetition of an event or a to-do. The recurrence rule can
also be used in the specification of a time zone description. This
document defines a particular notation used in recurrence rules
within this specification.
3.18 Reminder
See Alarm.
3.19 Repeating Event or To-do The mechanisms defined in this memo are defined in propose. In order
to refer to elements of the calendaring and scheduling model, core
object or interoperability protocol defined in this memo, [ICMS] and
[ITIP], some formatting conventions have been used. Calendaring and
scheduling roles defined by [ICMS] are referred to in quoted-strings
of text with the first character of each word in upper case. For
example, "Organizer" refers to a role of a "Calendar User" within the
scheduling protocol defined by [ITIP] Calendar components defined by
this memo are referred to with capitalized, quoted-strings of text.
All calendar components start with the letter "V". For example,
"VEVENT" refers to the event calendar component, "VTODO" refers to
the to-do calendar component and "VJOURNAL" refers to the daily
journal calendar component. Scheduling methods defined by [ITIP] are
referred to with capitalized, quoted-strings of text. For example,
"REQUEST" refers to the method for requesting a scheduling calendar
component be created or modified, "REPLY" refers to the method a
recipient of a request uses to update their status with the
"Organizer" of the calendar component.
An event or to-do that repeats for one or more additional The properties defined by this memo are referred to with capitalized,
occurrences. The recurrence may be defined with discrete dates and quoted-strings of text, followed by the word "property". For example,
times and/or with a recurrence rule. "ATTENDEE" property refers to the iCalendar property used to convey
the calendar address of a calendar user. Property parameters defined
by this memo are referred to with lower case, quoted-strings of text,
followed by the word "parameter". For example, "value" parameter
refers to the iCalendar property parameter used to override the
default data type for a property value. Enumerated values defined by
3.20 Standard Time Dawson/Stenerson 6 Expires MAY 1998
this memo are referred to with capitalized text, either alone or
followed by the word "value".
Introduced by Sir Sanford Fleming and others around 1870, standard 2.2 Related Memos
time is a scheme for dividing the world into zones where the same
time would be kept. The original proposal was to divide the world
Dawson/Stenerson 8 Expires January 1998 Implementers will need to be familiar with several other memos that,
into 24 zones, each zone having a width of 15 degrees of longitude. along with this memo, form a framework for Internet calendaring and
The center zone was originally the meridian passing through scheduling standards. This memo, [ICAL], specifies a core
Greenwich, England, called Greenwich Mean Time (GMT). The time in the specification of objects, data types, properties and property
zones was decremented by one hour per zone going westwards and was parameters.
incremented by one hour per zone going eastwards from GMT. Changes
have been made to the original proposal to accommodate political
boundaries. In addition, some countries and regions specify 30 or 45
minute offsets, rather than the full 60 minute offset. Standard time
is also known as Winter Time in some regions.
GMT and UTC are generally equivalent. However, by international [ICMS] - specifies a common terminology and abstract;
agreement, the GMT term is discouraged in favor of the term UTC for
all general time keeping.
3.21 Time Zone [ITIP] - specifies an interoperability protocol for scheduling
between different implementations;
The particular time zone that time in a particular location is [IMIP] specifies an Internet email binding for [ITIP];
expressed in. A time zone is unambiguously defined by the set of time
measurement rules determined by the governing body for the given
location. These rules describe at a minimum the base offset from UTC,
often referred to as the Standard Time offset. Optionally, if
Daylight Savings Time is observed, the rules will specify the
Daylight Savings Time offset and either a set of rules describing the
transition to and from Daylight Savings Time or absolute dates
describing the movement in and out of Daylight Savings Time. It is
important to note that these rules are not static. Time zones may
also have a local customary name. However, not all time zones have a
special name for their time. The customary names for time zones are
often abbreviated. However, not all time zone abbreviations are
unique. For example, AST may mean Atlantic Standard Time, Alaska
Standard Time, and even Aleutian Standard Time. Each of these are
different offsets from UTC. Nevertheless, customary names for time
zones are in use in various parts of the world.
3.22 To-do [IRIP] - specifies an Internet real time protocol binding for [ITIP].
A calendar component that defines an action item and is minimally This memo does not attempt to repeat the specification of concepts or
specified by an effective calendar date and time of day, a due definitions from these other memos. Where possible, references are
calendar date and time of day, a priority and a description. made to the memo that provides for the specification of these
concepts or definitions.
4. 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
specification 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 specification as the The following text is intended to register this memo as the MIME
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
Dawson/Stenerson 9 Expires January 1998 Required parameters: method
Required parameters: profile
The "profile" parameter is used to convey the scheduling usage to The "method" parameter is used to convey the iCalendar object
which the calendaring and scheduling information pertains. It also method to which the calendaring and scheduling information
is an identifier for the set of properties that the iCalendar pertains. It also is an identifier for the set of properties that
object will consist of. The parameter is intended to be used as a the iCalendar object will consist of. The parameter is to be used
guide to applications interpreting the information contained within as a guide for applications interpreting the information contained
the body part. It should NOT be used to exclude or require within the body part. It should NOT be used to exclude or require
particular pieces of information unless the identified profile particular pieces of information unless the identified method
definition specifically calls for this behavior. Unless definition specifically calls for this behavior. Unless
specifically forbidden by a particular profile definition, a specifically forbidden by a particular method definition, a
text/calendar content type may contain any set of properties
Dawson/Stenerson 7 Expires MAY 1998
text/calendar content type MAY contain any set of properties
permitted by the Calendaring and Scheduling Core Object permitted by the Calendaring and Scheduling Core Object
Specification. Specification.
The value for the "profile" parameter is defined as follows: The value for the "method" parameter is defined as follows:
profile = component "-" usage method = <Identifier for any IANA registered iCalendar
object method>
component = "EVENT" / "event" / "TODO" / "todo" Optional parameters: charset, component
/ "JOURNAL" / "journal" / "FREEBUSY"
/ "freebusy" / x-token / iana-comp
usage = "REQUEST" / "request" / "REPLY" / "reply" The "charset" parameter is defined in [RFC 2046] for other body
/ "CANCEL" / "cancel" / x-token / iana-usage parts. It is used to identify the default character set used within
the body part.
The "component" parameter conveys the type of iCalendar calendar
component within the body part. If the iCalendar object contains
more than one calendar component, then the components are specified
as a comma-separated list of values.
The value for the "component" parameter is defined as follows:
component = "VEVENT" / "VTODO" / "VJOURNAL" / "VFREEBUSY"
/ x-token / iana-comp
x-token = <The two characters "X-" or "x-" followed, with x-token = <The two characters "X-" or "x-" followed, with
no intervening white space, by any atom, where no intervening white space, by any atom, where
atom is from section 3.3 of [RFC 822]> atom is from section 3.3 of [RFC 822]>
iana-comp = <A publicly defined extension component, iana-comp = <A publicly defined extension component,
registered with IANA, as specified by this registered with IANA, as specified by this
document> document>
iana-usage = <A publicly defined extension usage,
registered with IANA, as specified by this
document>
Optional parameters: charset
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.
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
transferrred across protocols restricted to the 7bit repertoire. transferrred across protocols restricted to the 7bit repertoire.
Note that each property in the content entity may also have an Note that each property in the content entity MAY also have special
inline encoding for the body part as a whole (i.e., inline encoding characters encoded using a BACKSLASH character (ASCII decimal 92)
is performed first, then Content-Transfer-Encoding is applied to escapement technique. This means that content values MAY end up
the entire body part). This means that content values may end up
encoded twice. encoded twice.
Dawson/Stenerson 10 Expires January 1998 Security considerations: SPOOFING - - In this memo, the "Organizer"
Security considerations: The calendaring and scheduling information is the only person authorized to make changes to an existing
based on this MIME content type may include references to Uniform "VEVENT", "VTODO", "VJOURNAL" calendar component and redistribute
Resource Locators that may be programmed resources. In addition, the updates to the "Attendees". An iCalendar object that
this information may contain direct references to executable maliciously changes or cancels an existing "VEVENT", "VTODO" or
programs intended to be used as procedure-based alarms for an event "VJOURNAL" or "VFREEBUSY" calendar component MAY be constructed by
or to-do. Implementers and users of this specification should be someone other than the "Organizer" and sent to the "Attendees". In
aware of the network security implications of accepting and parsing addition in this memo, an "Attendee" of a "VEVENT", "VTODO",
such information. In addition, the security considerations observed "VJOURNAL" calendar component is the only person authorized to
by implementations of electronic mail systems should be followed
for this specification. Dawson/Stenerson 8 Expires MAY 1998
update any parameter associated with their "ATTENDEE" property and
send it to the "Organizer". An iCalendar object that maliciously
changes the "ATTENDEE" parameters MAY be constructed by someone
other than the real "Attendee" and sent to the "Organizer".
PROCEDURAL ALARMS - - An iCalendar object can be created that
contains a "VEVENT" and "VTODO" calendar component with an "VALARM"
calendar components. The "VALARM" calendar component MAY be of type
PROCEDURE and MAY have an attachment containing some sort of
executable program. Implementations that incorporate these types of
alarms are subject to any virus or malicious attack that MAY occur
as a result of executing the attachment.
ATTACHMENTS - - An iCalendar object MAY include references to
Uniform Resource Locators that MAY be programmed resources.
Implementers and users of this memo should be aware of the network
security implications of accepting and parsing such information. In
addition, the security considerations observed by implementations
of electronic mail systems should be followed for this memo.
Interoperability considerations: This MIME content type is intended Interoperability considerations: This MIME content type is intended
to provide interoperability between calendaring and scheduling to define a common format for conveying calendaring and scheduling
products. It is heavily based on the earlier [VCAL] industry information between different systems. It is heavily based on the
specification. earlier [VCAL] industry specification.
Intended Usage: COMMON Intended Usage: COMMON
Published specification: This document. Published specification: This memo.
Author/Change controllers: Author/Change controllers:
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 (Facsimile) 919-676-9564 (Data/Facsimile)
fdawson@earthlink.net (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
206-936-5522 (Telephone) 425-936-5522 (Telephone)
206-936-7329 (Facsimile) 425-936-7329 (Facsimile)
deriks@microsoft.com (Internet Mail) deriks@microsoft.com (Internet Mail)
5. iCalendar Object Specification 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 specification has direct
applicability for use as a calendaring and scheduling exchange format
in file-, memory- or network-based transport mechanisms.
5.1 Syntax Considerations Dawson/Stenerson 9 Expires MAY 1998
registration. In particular, this memo has direct applicability for
use as a calendaring and scheduling exchange format in file-, memory-
or network-based transport mechanisms.
4.1 Content Considerations
The iCalendar object consists of lines of text. This section defines
how the content lines MUST be formatted.
4.1.1 Content Lines
The iCalendar object consists of individual lines of text, delimited
by a line break, which is a CRLF sequence (ASCII decimal 13, followed
by ASCII decimal 10). Line of text should not be longer than 76
characters, excluding the line break.
Long lines of text can be split into a multiple line representations
using a line "folding" technique. That is, a long line MAY be split
at any point by inserting a CRLF immediately followed by a single
LWSP character (i.e., SPACE, ASCII decimal 32 or HTAB, ASCII decimal
9). Any sequence of CRLF followed immediately by a single LWSP
character is ignored (i.e., removed) when processing the content
type.
For example the line:
DESCRIPTION:This is a long description that exists on a long line.
Can be represented as:
DESCRIPTION:This is a long description
that exists on a long line.
The process of moving from this folded multiple line representation
to its single line representation is called "unfolding". Unfolding is
accomplished by removing the CRLF character and the LWSP character
that immediately follows.
An intentional formatted text line break MAY only be included in a
property value by representing the line break with the character
sequence of BACKSLASH (ASCII decimal 92), followed by a LATIN SMALL
LETTER N (ASCII decimal 110) or a LATIN CAPITAL LETTER N (ASCII
decimal 78), that is "\n" or "\N".
For example a multiple line "DESCRIPTION" property value of:
Project XYZ Final Review
Conference Room - 3B
Come Prepared.
Could be represented as:
Dawson/Stenerson 10 Expires MAY 1998
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
lines in the following format: content lines as defined by the following notation:
contentline = name [";" paramlist] ":" value CRLF contentline = name [";" [ws] paramlist] ":" [ws] value CRLF
;Folding permitted on content lines. ;Folding permitted on content lines.
;Lines should be less than 76 characters, excluding CRLF.
Dawson/Stenerson 11 Expires January 1998
LWSP = SPACE / HTAB LWSP = SPACE / HTAB
SPACE = <ASCII Decimal 32> SPACE = <ASCII Decimal 32>
HTAB = <ASCII Decimal 9> HTAB = <ASCII Decimal 9>
name = x-name / iana-name ;An iCalendar attribute/property ws = SPACE / HTAB
x-name = <The two characters "X-" or "x-" followed, with no name = iana-name / x-name ;An iCalendar property
intervening white space, by any atom>
iana-name = <A publicly defined name, registered with IANA> iana-name = <One of the properties defined by this memo or
an IANA registered property, as defined by the
registration process in this memo.>
paramlist = parameter / paramlist ";" parameter x-name = <The two characters "X-" or "x-" followed, with no
intervening white space, by any atom. A non-standard
property name.>
parameter = encodingparm value = boolean / cal-address / date / date-time / duration
/ valuetypeparm ;If not present => inline value / float / integer / period / recur / text / time / url
/ languageparm / utc-offset / x-token
/ [parmtype "="] parmvalues
encodingparm = "encoding" "=" encodetype iana-value = <One of the property values defined by this memo
or an IANA registered property value as defined by
the registration process in this memo.>
encodetype = "8bit" ;From [RFC 2045] 4.1.2 List and Field Separators
/ "7bit" ;From [RFC 2045]
/ "q" ;From [RFC 2045]
/ "b" ;From [RFC 2045]
valuetypeparm = "value" "=" valuetype List of values MAY be specified for property values or property
parameter values. Each value in a list of values MUST be separated by
a COMMA character (ASCII decimal 44). A COMMA character in a property
value or a property parameter value MUST be escaped with a BACKSLASH
character (ASCII decimal 92).
valuetype = "url" Some property values are defined in terms of multiple components.
/ "text" These structured property values MUST have their components separated
/ "date" by a SEMICOLON character (ASCII decimal 59). A SEMICOLON character in
/ "time" a property value MUST be escaped with a BACKSLASH character (ASCII
/ "date-time" decimal 92).
/ "period"
/ "duration"
/ "boolean"
/ "integer"
/ "float"
/ "cal-address"
/ "utc-offset"
/ x-token
/ iana-value
iana-value = <A publicly defined extension value type, registered Dawson/Stenerson 11 Expires MAY 1998
with IANA, as specified by this document> Lists of property parameters MAY be specified for a property. Each
property parameter in a list of property parameters MUST be separated
by a SEMICOLON character (ASCII decimal 59). A SEMICOLON character in
a property parameter value MUST be escaped with a BACKSLASH character
(ASCII decimal 92).
languageparm = "language" "=" language A COLON character (ASCII decimal 58) in a property parameter value
;As defined in [RFC 1766] MUST be escaped with a BACKSLASH character (ASCII decimal 92). A
COLON character in a property value does not need to be escaped with
a BACKSLASH character.
parmtype = x-token / iana-ptype A BACKSLASH character (ASCII decimal 92) in a property value or a
property parameter value MUST be escaped with another BACKSLASH
character.
iana-ptype = <A publicly defined extension parameter type, For example, in the following properties a SEMICOLON is used to
registered with IANA, as specified by this document> separate property parameters and property value fields. A COMMA is
used to separate values.
parmvalues = parmvalue / parmvalues "," parmvalue ATTENDEE;RSVP=TRUE;ROLE=ATTENDEE:J.Smith <jsmith@host.com>
Dawson/Stenerson 12 Expires January 1998 RDATE;VALUE=DATE:19970304,19970504,19970704,19970904
parmvalue = x-name / iana-pvalue
iana-pvalue = <A publicly defined extension parameter value, 4.1.3 Multiple Values
registered with IANA, as specified by this document>
value = url / text / date / time / date-time / period / Each property defined in the iCalendar object MAY have multiple
/ duration / boolean / integer / float / cal-address values, if allowed in the definition of the specific property. The
/ utc-offset / x-token / iana-value general rule for encoding multi-valued items is to simply create a
new content line for each value; including the property name.
However, it should be noted that some properties support encoding
multiple values in a single property by separating the values with a
COMMA character (ASCII decimal 44).
iana-value = <A publicly defined property value data type, 4.1.4 Binary Content
registered with IANA, as defined in this document>
5.1.1 Content Lines There is no support for including binary content information, inline,
within an iCalendar object. Binary content information MUST be
referenced by a uniform resource locator (URL) type of property
value.
Individual lines within the iCalendar object are delimited by a line The following example specifies an "ATTACH" property with a reference
break, which is a CRLF sequence (ASCII decimal 13, followed by ASCII to an attachment consisting of a binary object:
decimal 10). Line should not be longer than 76 characters, excluding
the line break.
Long lines of text can be split into a multiple-line representations ATTACH:ftp://xyz.com/public/quarterly-report.doc
using a line "folding" technique. That is, a long line may be split
at any point by inserting a CRLF immediately followed by a single
LWSP character (i.e., SPACE, ASCII decimal 32 or HTAB, ASCII decimal
9). Any sequence of CRLF followed immediately by a single LWSP
character is ignored (i.e., removed) when processing the content
type.
For example the line: 4.1.5 Property Parameters
DESCRIPTION:This is a long description that exists on a long line. A property MAY have additional attributes associated with it. These
"property parameters" contain meta information about the property or
the property value. Property parameters MAY be used to specify the
location of an alternate text representation for a property value,
the content encoding used on a property value, the language of a text
property value or thedata type of the property value.
Can be represented as: Dawson/Stenerson 12 Expires MAY 1998
Property parameter values that contain the COLON, SEMICOLON, COMMA or
BACKSLASH character separators MUST be specified as quoted-string
text values. For example:
DESCRIPTION:This is a long description DESCRIPTION;ALTREP="http://www.wiz.org":The Fall'98 Wild Wizards
that exists on a long line. Conference - - Las Vegas, NV, USA
The process of moving from this folded multiple-line representation Property parameters are defined by the following notation:
to its single line representation is called "unfolding". Unfolding is
accomplished by removing the CRLF character and the LWSP character
that immediately follows.
An intentional formatted text line break in a property value must ( = parameter *(";" [ws] parameter)
also be specified by a (RFC 822) line break, which is a CRLF
sequence. However, since the CRLF sequence is used to delimit a line,
property values with imbedded formatted line breaks (i.e., hard line
breaks) must be encoded using an alternate encoding of either the "Q"
or "B" encodings, as defined in [RFC 2047]. These encodings are used
directly and without any of the additional syntax elements of [RFC
2047] encoded-words.
Since neither the "Q" nor the "B" encodings ever produce LWSP parameter = altrepparm ;Alterate text representation
characters (note that the "Q" encoding turns spaces into / languageparm ;Text language
underscores), or CRLF character sequences as output, LWSP characters / valuetypeparm ;Property value data type
and CRLF character sequences can be freely inserted into encoded / [parmtype "="] parmvalues ;Parameter extensions
material at any point to fold encoded field values. All LWSP
characters and CRLF character sequences should be ignored when
Dawson/Stenerson 13 Expires January 1998 parmtype = x-token / iana-ptype
decoding an encoded field value. The "Q" encoding of multiple lines
of formatted text are separated with a Q CRLF sequence of "=0D=0A".
The length restrictions [RFC 2047] imposes on encoded-words do not
apply in this context, but fields encoded with the "Q" or "B"
encodings must be folded into lines of no longer than 76 characters.
For example a multiple line DESCRIPTION property value of: iana-ptype = <A publicly defined extension parameter type,
registered with IANA, as specified in this memo>
Project XYZ Final Review parmvalues = parmvalue / parmvalue *("," [ws] parmvalue)
Conference Room - 3B
Come Prepared.
Could be represented in "Q" encoding as: parmvalue = x-name / iana-pvalue
DESCRIPTION;ENCODING=Q:Project_XYZ iana-pvalue = <A publicly defined extension parameter value,
_Final_Review=0D=0A registered with IANA, as specified in this memo>
Conference_Room_-_3B=0D=0A
Come_Prepared.
And in the "B" encoding as: 4.1.6 Alternate Text Representation
DESCRIPTION;ENCODING=UHJvamVjdCBYWVogRmluYWw The "ALTREP" property parameter is an OPTIONAL property parameter. It
gUmV2aWV3DQpDb25mZXJIbm NIIFJvb20gLSAzQg0KQ29tZ specifies the URL that points to an alternate representation for a
SBQcmVwYXJIZC4NCg = = 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.
5.1.2 List and Field Separators For example:
Where a property parameter value consists of a list of values, each DESCRIPTION;ALTREP="CID:<part3.msg.970415T083000@host.com>":Project
value must be separated by a COMMA character (ASCII decimal 44). A XYZ Review Meeting will include the following agenda items: (a)
COMMA character in a property parameter value must be escaped with a Market Overview, (b) Finances, (c) Project Management
BACKSLASH character (ASCII decimal 92).
Structured property values must have their components separated by a The "ALTREP" property parameter value might point to a "text/html"
SEMICOLON character (ASCII decimal 59). In addition, lists of content portion.
property parameters must be separated by a SEMICOLON character (ASCII
decimal 59). A SEMICOLON character in a property value or property
parameter value must be escaped with a BACKSLASH character (ASCII
decimal 92).
For example, in the following properties a SEMICOLON is used to Content-Type:text/html
separate property parameters and property value fields. A COMMA is Content-Id:<part3.msg.970415T083000@host.com>
used to separate values.
ATTENDEE;RSVP=TRUE;ROLE=ATTENDEE:"J.Smith" <jsmith@host.com) Dawson/Stenerson 13 Expires MAY 1998
RDATE;VALUE=DATE:19970304,19970504,19970704,19970904 <p><b>Project XYZ Review Meeting</b> will include the following
agenda items:<li>Market
Overview</li><li>Finances</li><li>Project Management</li></p>
5.1.3 Multiple Values The "ALTREP" property parameter is defined by the following notation:
Each attribute or property defined in the iCalendar object may have altrepparm = "altrep" "=" urltype
multiple values, if allowed in the definition of the specific
property. The general rule for encoding multi-valued items is to
simply create a new content line for each value; including the
property name. However, it should be noted that some properties
support encoding multiple values in a single property by separating
the values with a COMMA (ASCII decimal 44).
Dawson/Stenerson 14 Expires January 1998 urltype = <quoted-string text URL value>
5.1.4 Character Set 4.1.7 Character Set
The default character set is [UTF-8]. For transport in a MIME entity, There is not a property parameter to declare the character set used
the "charset" Content-Type parameter may be used to set the default in a property value. The default character set for an iCalendar
character set for the entire MIME body part. object is [UTF-8].
5.1.5 Language The "charset" Content-Type parameter MAY be used in MIME transports
to specify any other IANA registered character set.
The "language" property parameter should be used to identify data in 4.1.8 Language
alternate languages. The default language is "us-EN". The value of
the language property parameter is that defined in [RFC 1766]. The "LANGUAGE" property parameter MAY be used to identify the
language used in text values. The value of the "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.
5.1.6 Content Encoding The "LANGUAGE" property parameter is defined by the following
notation:
The "encoding" property parameter should be used to specify an languageparm = "language" "=" language
alternate encoding for a value. If the value contains a <CR>
character (ASCII decimal 10) or <LF> character (ASCII decimal 13), it
must be encoded using either "Q" or "B" encoding, since <CR><LF> is
used to separate lines in the iCalendar object itself.
5.1.7 Binary Content language = <Text identifying a language, as defined in [RFC 1766]>
There is no support for inline encoding of binary information in an 4.1.9 Value Data Types
iCalendar object. Binary information is associated with the iCalendar
object through the use of a uniform resource locator (URL) reference
to the binary information.
5.1.8 Recurrence Set The "VALUE" property parameter is an OPTIONAL property parameter. It
is used to identify the data type and format of the property value.
The values of a property MUST only be of a single data type. For
example, a "RDATE" property can not have a combination of DATE-TIME
and TIME values.
Recurring events and to-dos are supported by this specification. The The "VALUE" property parameter is defined by the following notation:
recurrence within the iCalendar object may be specified as either a
list of discrete date and time values or as a recurrence rule. The
full recurrence set is generated by considering the initial DTSTART
along with the RRULE, RDATE, EXDATE and EXRULE properties contained
within the iCalendar object. The DTSTART 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 specification, only one recurrence is considered.
Duplicate instances are ignored.
The recurrence rule used in the iCalendar object is defined in the valuetypeparm = "value" "=" valuetype
RRULE component property.
Dawson/Stenerson 15 Expires January 1998 valuetype = "boolean"
/ "cal-address"
/ "date"
/ "date-time"
/ "duration"
5.1.9 Data Types Dawson/Stenerson 14 Expires MAY 1998
/ "float"
/ "integer"
/ "period"
/ "recur"
/ "text"
/ "time"
/ "url"
/ "utc-offset"
/ x-token
/ iana-value
The "value" property parameter is an optional property parameter. It iana-value = <A publicly defined extension value type, registered
is used to identify the data type and format of the property value. with IANA, as specified by this memo>
The values of a given instance of a property must only be of a single
data type. For example, a RDATE property can not have a combination
of DATE-TIME and TIME values. The following data types are used by
the iCalendar object.
5.1.9.1 Boolean The following data types are defined by this memo.
The "boolean" data type is used to identify properties that contain 4.1.9.1 Boolean
The "BOOLEAN" data type is used to identify properties that contain
either a "true" or a "false" boolean value. These values are case either a "true" or a "false" boolean value. These values are case
insensitive. The data type is defined by the following notation: insensitive. The data type is defined by the following notation:
boolean = "TRUE" / "FALSE" boolean = "TRUE" / "FALSE"
For example, any of the following are equivalent: For example, any of the following are equivalent:
TRUE TRUE
true true
TrUe TrUe
5.1.9.2 Calendar User Address 4.1.9.2 Calendar User Address
The "cal-address" data type is used to identify properties that The "CAL-ADDRESS" data type is used to identify properties that
contain an address of a calendar user. The phrase component of the contain an address of a calendar user. The phrase component of the
address may be used to match an unknown address with an otherwise address MAY be used to match an unknown address with an otherwise
known individual, group, or resource. The data type is as defined by known individual, group, or resource. The data type is as defined by
the following notation: the following notation:
cal-address = addr-spec / [phrase] "<" addr-spec ">" cal-address = addr-spec / phrase "<" addr-spec ">"
addr-spec = local-part "@" domain ;RFC 822 style address addr-spec = local-part "@" domain ;RFC 822 style address
local-part = WORD *("." WORD) local-part = WORD *("." WORD)
domain = domain-ref *("." domain-ref) domain = domain-ref *("." domain-ref)
domain-ref = ATOM domain-ref = ATOM
phrase = 1*WORD phrase = 1*WORD
WORD = ATOM / quoted-string WORD = ATOM / quoted-string
quoted-string = <"> *(qtext/quoted-pair) <"> ; Regular qtext or quoted-string = <"> *(qtext/quoted-pair) <"> ; Regular qtext or
; quoted chars. ; quoted chars.
qtext = <any CHAR excepting <">, ; => may be folded qtext = <any CHAR excepting <">, ; => MAY be folded
"\" & CR, and including linear-white-space> "\" & CR, and including linear-
quoted-pair ="\" CHAR ; may quote any char white-space>
CHAR = <any a character from the selected character set> quoted-pair ="\" CHAR ; MAY quote any char
ATOM = 1*<any CHAR except specials, SPACE and CTLs>
5.1.9.3 Date Dawson/Stenerson 15 Expires MAY 1998
CHAR = <any a character from the
selected character set>
ATOM = 1*<any CHAR except specials,
SPACE and CTLs>
The "date" data type is used to identify values that contain a 4.1.9.3 Date
The "DATE" data type is used to identify values that contain a
calendar date. The format is expressed as the [ISO 8601] complete calendar date. The format is expressed as the [ISO 8601] complete
representation, basic format for a calendar date. The text format representation, basic format for a calendar date. The text format
specifies a four-digit year, two-digit month, and two-digit day of specifies a four-digit year, two-digit month, and two-digit day of
the month. There are no separator characters between the year, month the month. There are no separator characters between the year, month
Dawson/Stenerson 16 Expires January 1998
and day component text. The data type is defined by the following and day component text. The data type is defined by the following
notation: notation:
DIGIT =<any ASCII decimal digit> ;0-9 DIGIT =<any ASCII decimal digit> ;0-9
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 date = date-fullyear date-month date-mday
For example, the following represents July 14, 1997: For example, the following represents July 14, 1997:
19970714 19970714
5.1.9.4 Date-Time 4.1.9.4 Date-Time
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 expressed as 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 above. The time designator, followed by the "time" format defined above. The
data type is defined by the following notation: data type is defined by the following notation:
date-time = date "T" time ;As specified above in date and time date-time = date "T" time ;As specified above in date and time
The following represents July 14, 1997, at 1:30 PM in UTC and the The following represents July 14, 1997, at 1:30 PM in UTC and the
equivalent time in New York (five hours behind UTC), expressed as a equivalent time in New York (four hours behind UTC in DST), expressed
local time and local time with UTC offset: as a local time and local time with UTC offset:
19970714T133000Z 19970714T133000Z
19970714T083000 19970714T083000
19970714T083000-0500 19970714T083000-0400
5.1.9.5 Duration 4.1.9.5 Duration
The "duration" data type is used to identify properties that contain The "DURATION" data type is used to identify properties that contain
a duration of time. The format is expressed as the [ISO 8601] basic a duration of time. The format is expressed as the [ISO 8601] basic
format for the duration of time. The format can represent durations format for the duration of time. The format can represent durations
Dawson/Stenerson 16 Expires MAY 1998
in terms of years, months, days, hours, minutes, and seconds. The in terms of years, months, days, hours, minutes, and seconds. The
data type is defined by the following notation: data type is defined by the following notation:
DIGIT =<any ASCII decimal digit> ;0-9 DIGIT =<any ASCII decimal digit> ;0-9
dur-second = 1*DIGIT "S" dur-second = 1*DIGIT "S"
dur-minute = 1*DIGIT "M" [dur-second] dur-minute = 1*DIGIT "M" [dur-second]
dur-hour = 1*DIGIT "H" [dur-minute] dur-hour = 1*DIGIT "H" [dur-minute]
dur-time = "T" (dur-hour / dur-minute / dur-second) dur-time = "T" (dur-hour / dur-minute / dur-second)
dur-week = 1*DIGIT "W" dur-week = 1*DIGIT "W"
dur-day = 1*DIGIT "D" dur-day = 1*DIGIT "D"
dur-month = 1*DIGIT "M" [dur-day] dur-month = 1*DIGIT "M" [dur-day]
dur-year = 1*DIGIT "Y" [dur-month] dur-year = 1*DIGIT "Y" [dur-month]
dur-date = (dur-day / dur-month / dur-year) [dur-time] dur-date = (dur-day / dur-month / dur-year) [dur-time]
Dawson/Stenerson 17 Expires January 1998
duration = "P" (dur-date / dur-time / dur-week) duration = "P" (dur-date / dur-time / dur-week)
For example, a duration of 10 years, 3 months, 15 days, 5 hours, 30 For example, a duration of 10 years, 3 months, 15 days, 5 hours, 30
minutes and 20 seconds would be: minutes and 20 seconds would be:
P10Y3M15DT5H30M20S P10Y3M15DT5H30M20S
5.1.9.6 Float 4.1.9.6 Float
The "float" data type is used to identify properties that contain a The "FLOAT" data type is used to identify properties that contain a
real value number value. If the property permits, multiple "float" real value number value. If the property permits, multiple "float"
values may be specified using a COMMA character (ASCII decimal 44) values MAY be specified using a COMMA character (ASCII decimal 44)
separator character. The data type is defined by the following separator character. The data type is defined by the following
notation: notation:
DIGIT =<any ASCII decimal digit> ;0-9 DIGIT =<any ASCII decimal digit> ;0-9
float = ["+" / "-"] *DIGIT ["." *DIGIT] float = ["+" / "-"] *DIGIT ["." *DIGIT]
For example: For example:
1000000.0000001 1000000.0000001
1.333 1.333
-3.14 -3.14
5.1.9.7 Integer 4.1.9.7 Integer
The "integer" data type is used to identify properties that contain a The "INTEGER" data type is used to identify properties that contain a
signed integer value. The valid range for "integer" is -2147483648 to signed integer value. The valid range for "integer" is -2147483648 to
2147483647. If the sign is not specified, then the value is assumed 2147483647. If the sign is not specified, then the value is assumed
to be positive. If the property permits, multiple "integer" values to be positive. If the property permits, multiple "integer" values
may be specified using a COMMA character (ASCII decimal 44) separator MAY be specified using a COMMA character (ASCII decimal 44) separator
character. The data type is defined by the following notation: character. The data type is defined by the following notation:
DIGIT =<any ASCII decimal digit> ;0-9 DIGIT =<any ASCII decimal digit> ;0-9
integer = ["+" / "-"] *DIGIT integer = ["+" / "-"] *DIGIT
Dawson/Stenerson 17 Expires MAY 1998
For example: For example:
1234567890 1234567890
-1234567890 -1234567890
+1234567890 +1234567890
432109876 432109876
5.1.9.8 Period of Time 4.1.9.8 Period of Time
The "period" data type is used to identify values that contain a 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. precise period of time. There are two forms of a period of time.
A period of time may be identified by it start and its end. This A period of time MAY be identified by it start and its end. This
format is expressed as the [ISO 8601] complete representation, basic format is expressed as the [ISO 8601] complete representation, basic
format for "date-time" start of the period, followed by a SOLIDUS format for "DATE-TIME" start of the period, followed by a SOLIDUS
character (ASCII decimal 47), followed by the "date-time" of the end 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 of the period. For example, the period starting at 10 AM in Seattle
Dawson/Stenerson 18 Expires January 1998
(eight hours behind UTC) on January 1, 1997 and ending at 11 PM in (eight hours behind UTC) on January 1, 1997 and ending at 11 PM in
Seattle on January 1, 1997 would be: Seattle on January 1, 1997 would be:
19970101T100000-0800/19970101T230000-0800 19970101T100000-0800/19970101T230000-0800
A period of time may also be defined by a start and a duration of 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 time. The format is expressed as the [ISO 8601] complete
representation, basic format for the "date-time" start of the period, representation, basic format for the "DATE-TIME" start of the period,
followed by a SOLIDUS character (ASCII decimal 47), followed by the followed by a SOLIDUS character (ASCII decimal 47), followed by the
[ISO 8601] basic format for "duration" of the period. For example, [ISO 8601] basic format for "DURATION" of the period. For example,
the period start at 10 AM in Seattle (eight hours behind UTC) on 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: January 1, 1997 and lasting 5 hours and 30 minutes would be:
19970101T100000-0800/P5H30M 19970101T100000-0800/PT5H30M
The data type is defined by the following notation: 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.
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 period = period-explicit / period-start
5.1.9.9 Text 4.1.9.9 Recurrence Rule
The "text" data type is used to identify values that contain human The "RECUR" data type is used to identify properties that contain a
recurrence rule specification. The data 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.
Dawson/Stenerson 18 Expires MAY 1998
The FREQ component identifies the type of recurrence rule. This
component MUST be specified in the recurrence rule. Valid values
include MINUTELY, to specify repeating events based on an interval of
a minute or more; HOURLY, to specify repeating events based on an
interval of an hour or more; DAILY, to specify repeating events based
on an interval of a day or more; WEEKLY, to specify repeating events
based on an interval of a week or more; MONTHLY, to specify repeating
events based on an interval of a month or more; and YEARLY, to
specify repeating events based on an interval of a year or more.
The INTERVAL component contains a positive integer representing how
often the recurrence rule repeats. The default value is "1" or every
minute for a MINUTELY rule, every hour for a HOURLY rule, every day
for a DAILY rule, every week for a WEEKLY rule, every month for a
MONTHLY rule and every year for a YEARLY rule.
The UNTIL component defines a date-time value which bounds the
recurrence rule in an inclusive manner. If the value specified by
UNTIL is synchronized with the specified recurrence, this date-time
becomes the last instance of the recurrence. If not present, and the
COUNT component is also not present, the RRULE is considered to
repeat forever.
The COUNT component defines the number of occurrences at which to
range-bound the recurrence. This component is ignored if the "UNTIL"
component is also present.
The BYMINUTE component specifies a COMMA character (ASCII decimal 44)
separated list of minutes within an hour. Valid values are 0 to 60.
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)
separated list of hours of the day. Valid values are 0 to 24. Zero is
the start of the day and 24 is the start of the next day.
The BYDAY component specifies a COMMA character (ASCII decimal 44)
separated list of days of the week; MO, indicates Monday; TU,
indicates Tuesday; WE, indicates Wednesday; TH, indicates Thursday;
FR, indicates Friday; SA, indicates Saturday; SU, indicates Sunday.
Each BYDAY values MAY also be preceded by a positive (+n) or negative
(-n) integer. If present, this indicates the nth occurrence of the
specific day within the MONTHLY or YEARLY RRULE. For example, within
a MONTHLY rule, +1MO (or simply 1MO) represents the first Monday
within the month, whereas -1MO represents the last Monday of the
month. If an integer modifier is not present, it means all days of
this type within the specified frequency. For example, within a
MONTHLY rule, MO represents all Mondays within the month.
The BYMONTHDAY component specifies a COMMA character (ASCII decimal
44) separated list of days of the month. Valid values are 1 to 31 or
-31 to -1.
Dawson/Stenerson 19 Expires MAY 1998
Each BYMONTHDAY value MAY be preceeded by a postive (+n) or negative
(-n) integer. If present, this indicates the nth occurrence of the
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
specified frequency. For example, within a MONTHLY rule, -10
represents the tenth to the last day of the month.
The BYYEARDAY component specifies a COMMA character (ASCII decimal
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
(December 31st).
The BYWEEKNO component specifies a comma-separated list of weeks of
the year. Valid values are 1 to 53. This corresponds to weeks
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
and identified by its ordinal number within the year; the first
calendar week of the year is the one that includes the first Thursday
of that year." This component is only valid for YEARLY rules.
Each BYWEEKNO value MAY be preceded by a positive (+n) or negative (-
n) integer. If present, this indicates the nth occurrence of the
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
specified frequency. For example, within a YEARLY rule, 3 represents
the third week of the year.
The BYMONTH component specifies a comma separated list of months of
the year. Valid values are 1 to 12.
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
when a WEEKLY RRULE has an interval greater than 1, and a BYDAY
component is specified. The default value is MO.
The BYSETPOS component specifies a COMMA character (ASCII decimal 44)
separated list of values which corresponds to the nth occurrence
within the set of events specified by the rule. Valid values are 1 to
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
be represented as:
RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
If BYxxx component values are found which are beyond the available
scope (ie, BYMONTHDAY=-30 in February), they are simply ignored
Information, not contained in the rule, necessary to determine the
various recurrence instance start time and dates are derived from the
Start Time (DTSTART) entry attribute. For example,
‘ ‘FREQ=YEARLY;BYMONTH=1’ ’ doesn’t specify a specific day within the
month or a time. This information would be the same as what is
specified for DTSTART.
Dawson/Stenerson 20 Expires MAY 1998
BYxxx components modify the recurrence in some manner. BYxxx
components for a period of time which is the same or greater than the
frequency generally reduce or limit the number of occurrences of the
recurrence generated. For example, ‘ ‘FREQ=DAILY;BYMONTH=1’ ’ reduces
the number of recurrence instances from all days (if BYMONTH tag is
not present) to all days in January. BYxxx components for a period of
time less than the frequency generally increase or expand the number
of occurrences of the recurrence. For example,
‘ ‘FREQ=YEARLY;BYMONTH=1,2’ ’ increases the number of days within the
yearly recurrence set from 1 (if BYMONTH tag is not present) to 2.
If only one BYxxx component is specified in the recurrence rule, the
list of ‘ ‘n’ ’ unique values would cause ‘ ‘n’ ’ occurrences of the
recurrence within each specified frequency interval, where each
unique list value is substituted in the appropriate date position
within DTSTART for each such occurrence.
If multiple BYxxx components are specified, then the list of ‘ ‘n’ ’
unique values for each lower frequency BYxxx components is applied to
the list of ‘ ‘n’ ’ unique values for higher frequency BYxxx
components. 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.
‘ ‘FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30
’ ’
would first apply the ‘ ‘BYMINUTE=30’ ’ To ‘ ‘BYHOUR=8,9’ ’ to arrive at
‘ ‘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" "=" digits ";")]
["INTERVAL" "=" digits ";"]
["BYMINUTE" "=" byminlist ";"]
["BYHOUR" "=" byhrlist ";"]
["BYDAY" "=" bywdaylist ";"]
["BYMONTHDAY" "=" bymodaylist ";"]
["BYYEARDAY" "=" byyrdaylist ";"]
["BYWEEKNO" "=" bywknolist ";"]
["BYMONTH" "=" bymolist ";"]
Dawson/Stenerson 21 Expires MAY 1998
["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 = "MINUTELY’ ’ / "HOURLY" / "DAILY" / "WEEKLY" / "YEARLY"
enddate = date ;A UTC value
digits = 1*DIGIT
DIGIT =<any ASCII decimal digit> ;0-9
byminlist = minutes / ( minutes *(‘ ‘,’ ’ minutes) )
minutes = 1*2digits ;0 to 60
byhrlist = hour / ( hour *(‘ ‘,’ ’ hour) )
hour = 1*2 digits ;0 to 24
bywdaylist = weekdaynum / ( weekdaynum *(‘ ‘,’ ’ weekdaynum) )
weekdaynum = [([plus] ordwk / minus ordwk)] weekday
plus = "+"
minus = "-"
ordwk = 1*2digits ;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 = 1*2digits ;1 to 31
byyrdaylist = yeardaynum / ( yeardaynum *(‘ ‘,’ ’ yeardaynum) )
yeardaynum = ([plus] ordyrday) / (minus ordyrday)
ordyrday = 1*3digits ;1 to 366
bywknolist = weeknum / ( weeknum *(‘ ‘,’ ’ weeknum) )
weeknum = ([plus] ordwk) / (minus ordwk)
bymolist = monthnum / ( monthnum *(‘ ‘,’ ’ monthnum) )
Dawson/Stenerson 22 Expires MAY 1998
monthnum = 1*2digits ;1 to 12
bysplist = setposday / ( setposday *("," setposday) )
setposday = yeardaynum
For example, the following is a rule which specifies 10 meetings
which occur every other day:
FREQ=DAILY;COUNT=10;INTERVAL=2
There are other examples specified in the "RRULE" specification.
4.1.9.10 Text
The "TEXT" data type is used to identify values that contain human
readable text. The character set and language in which the text is readable text. The character set and language in which the text is
represented is controlled by the charset and language property represented is controlled by the "LANGUAGE" property parameters. The
parameters. The data type is defined by the following notation: data type is defined by the following notation:
CHAR = <Any character in the selected character set> text = <Any character in the selected character set, but
not including CRLF>
5.1.9.10 Time 4.1.9.11 Time
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 expressed as the [ISO 8601] complete
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). If seconds of the minute are not
supported by an implementation, then a value of "00" should be supported by an implementation, then a value of "00" should be
specified for the seconds component. Fractions of an hour, minute or specified for the seconds component. Fractions of an hour, minute or
second are not supported by this format. This format is used to second are not supported by this format. This format is used to
represent local time, local time with UTC offset and UTC time. UTC represent local time, local time with UTC offset and UTC time. UTC
time is identified by a LATIN CAPITAL LETTER Z suffix character time is identified by a LATIN CAPITAL LETTER Z suffix character
(ASCII decimal 90), the UTC designator, appended to the time. The (ASCII decimal 90), the UTC designator, appended to the time. The
local time with UTC offset is expressed as a local time, suffixed 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- 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 digit hours and 2-digit minutes difference from UTC. It is expressed
as positive, with an optional leading PLUS SIGN character (ASCII as positive, with an OPTIONAL leading PLUS SIGN character (ASCII
decimal 43), if the local time is ahead of UTC. It is expressed as a 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 negative, with a leading HYPEN-MINUS character (ASCII decimal 45), if
Dawson/Stenerson 19 Expires January 1998
the local time is behind UTC. Local time has neither the UTC the local time is behind UTC. Local time has neither the UTC
designator nor the UTC offset suffix text. The data type is defined designator nor the UTC offset suffix text. The data type is defined
by the following notation: by the following notation:
DIGIT =<any ASCII decimal digit> ;0-9 DIGIT =<any ASCII decimal digit> ;0-9
time-hour = 2DIGIT ;00-23 time-hour = 2DIGIT ;00-23
time-minute = 2DIGIT ;00-59 time-minute = 2DIGIT ;00-59
time-second = 2DIGIT ;00-59 time-second = 2DIGIT ;00-59
Dawson/Stenerson 23 Expires MAY 1998
time-numzone = ("+" / "-") time-hour time-minute time-numzone = ("+" / "-") time-hour time-minute
time-zone = "Z" / time-numzone time-zone = "Z" / time-numzone
time = time-hour time-minute time-second [time-zone] time = time-hour time-minute time-second [time-zone]
For example, the following represents 8:30 AM in New York, five hours For example, the following represents 8:30 AM in New York, five hours
behind UTC, in local time and local time with UTC offset. In behind UTC, in local time and local time with UTC offset. In
addition, 1:30 PM in UTC is illustrated: addition, 1:30 PM in UTC is illustrated:
083000 083000
083000-0500 083000-0500
133000Z 133000Z
There are cases when a floating time is intended within a property There are cases when a floating time is intended within a property
value. For example, an event may be defined that indicates that an value. 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. In these 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 cases, a local time MAY be specified. The recipient of an iCalendar
object with a property value consisting of a local time, without any 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 the recipient's locale and time zone. In most cases, a fixed
time is desired. To properly communicate a fixed time in a property time is desired. To properly communicate a fixed time in a property
value, either UTC, local time with UTC offset, or local time with a value, either UTC, local time with UTC offset, or local time with a
time zone calendar component must be specified. "VTIMEZONE" calendar component MUST be specified.
5.1.9.11 URL 4.1.9.12 URL
The "url" data type is used to identify values that contain a uniform The "URL" data type is used to identify values that contain a uniform
resource locator (URL) type of reference to the property value. This resource locator (URL) type of reference to the property value. This
data type might be used to reference binary information, for values data type might be used to reference binary information, for values
that are large, or otherwise undesirable to include directly in the that are large, or otherwise undesirable to include directly in the
iCalendar object. iCalendar object.
The URL value formats in RFC 1738, RFC 2111 and any other IETF The URL value formats in RFC 1738, RFC 2111 and any other IETF
registered value format may be specified. registered value format MAY be specified.
The data type is defined by the following notation: The data type is defined by the following notation:
url = <As defined by any IETF RFC> url = <As defined by any IETF RFC>
Any IANA registered URL type may be used. These include, but are not Any IANA registered URL type MAY be used. These include, but are not
limited to, those for FTP and HTTP protocols, file access, content limited to, those for FTP and HTTP protocols, file access, content
identifier and message identifier. identifier and message identifier.
For example, the following is an URL for a local file: For example, the following is an URL for a local file:
file:///my-report.txt file:///my-report.txt
Dawson/Stenerson 20 Expires January 1998 4.1.9.13 UTC Offset
text = <Any CHAR, including bare CR & bare LF but not
including CRLF>
5.1.9.12 UTC Offset
The "utc -offset" data type is used to identify properties that The "UTC-OFFSET" data type is used to identify properties that
contain an offset from UTC to local time. The data type is defined by contain an offset from UTC to local time. The data type is defined by
the following notation: the following notation:
Dawson/Stenerson 24 Expires MAY 1998
utc-offset = time-numzone ;As defined above in time data type utc-offset = time-numzone ;As defined above in time data type
For example, the following are UTC offsets for New York (five hours For example, the following are UTC offsets are given for standard
behind UTC) and Geneva (one hour ahead of UTC): time for New York (five hours behind UTC) and Geneva (one hour ahead
of UTC):
-0500 ;New York -0500
+0100 ;Geneva
5.2 iCalendar Object +0100
4.2 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" ":" "VCALENDAR" CRLF icalobject = "BEGIN" ":" [ws] "VCALENDAR" CRLF
icalbody icalbody
"END" ":" "VCALENDAR" CRLF [icalobject] "END" ":" [ws] "VCALENDAR" CRLF [icalobject]
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:19970714T120000-0500
DTEND:19970714T235959-0500 DTEND:19970714T235959-0500
DESCRIPTION:Bastille Day Party SUMMARY:Bastille Day Party
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
5.3 Property 4.3 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 calendar property or a calendar component. A property takes the
following form: following form:
property = propname [";" parmlist] ":" value CRLF property = propname [";" [ws] parmlist] ":" [ws] value CRLF
propname = <any properties defined in this document> propname = <any properties defined in this memo>
/ iana-prop / x-token / iana-prop / x-token
x-token = <The two characters "X-" or "x-" followed, with no x-token = <The two characters "X-" or "x-" followed, with no
intervening white space, by any atom> intervening white space, by any atom>
Dawson/Stenerson 21 Expires January 1998
iana-prop = <A publicly defined extension property, registered iana-prop = <A publicly defined extension property, registered
with IANA, as specified by this document> with IANA, as specified by this memo>
Dawson/Stenerson 25 Expires MAY 1998
The following is an example of a property: The following is an example of a property:
DTSTART:19960415T083000-05:00 DTSTART:19960415T083000-05:00
This document 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".
5.4 Calendar Components 4.4 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 with 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 a an event, a to-do, journal entry, time zone information, or
free/busy time information, or alarm. free/busy time information, or 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 [profile] [profile-version] calprops = [calscale] prodid method [source] [name] version
[source] [name] version
component = 1*(eventc / todoc / journalc / freebusyc / component = 1*(eventc / todoc / journalc / freebusyc /
/ timezonec) / timezonec)
5.4.1 Event Component 4.4.1 Event Component
An Event Calendar Component is a grouping of component properties and A "VEVENT" calendar component is a grouping of component properties
an optional alarm calendar component that represent a scheduled and an OPTIONAL "VALARM" calendar component that represent a
amount of time on a calendar. For example, it may be an activity; scheduled amount of time on a calendar. For example, it MAY be an
such as a one-hour, department meeting from 8:00 AM to 9:00 AM, activity; such as a one-hour, department meeting from 8:00 AM to 9:00
tomorrow. AM, tomorrow. Generally, these events will take up time on an
individual calendar. Hence, the event will appear as an opaque
interval in a search for busy time. Alternately, the event MAY have
its Time Transparency set to "TRANSPARENT" in order to prevent
blocking of the event in searches for busy time.
An Event Component is defined by the following notation: The "VEVENT" is also the calendar component used to specify an
anniversary or daily reminder within a calendar. These events have a
start time but no end time. The start time MAY also be specified as a
DATE value data type, instead of the default DATE-TIME.
eventc = "BEGIN" ":" "VEVENT" CRLF A "VEVENT" calendar component is defined by the following notation:
*eventprop *alarmc
"END" ":" "VEVENT" CRLF
eventprop = *attach *attendee *categories [class] [created] eventc = "BEGIN" ":" [ws] "VEVENT" CRLF
description [dtend] dtstart *exdate *exrule eventprop *alarmc
[geo] *last-mod [location] [priority] [rstatus] "END" ":" [ws] "VEVENT" CRLF
*related *resources *rdate *rrule dtstamp
[resp-seq] [seq] [status] [summary] [transp]
uid *url [recurid] *(comment)
Dawson/Stenerson 22 Expires January 1998 Dawson/Stenerson 26 Expires MAY 1998
The Event Component can not be nested within another Calendar eventprop = *attach *attendee *categories [class] *comment
Component. Event components may be related to each other or to a To- *contact [created] [description] [dtend / duration]
do or Journal Calendar Component with the RELATED-TO property. dtstart *exdate *exrule [geo] [last-mod] [location]
[priority] [rstatus] *related *resources *rdate
*rrule dtstamp [seq] [status] summary [transp] uid
*url [recurid]
The following is an example of the Event Calendar Component: The "VEVENT" calendar component can not be nested within another
calendar component. The "VEVENT" calendar components MAY be related
to each other or to a "VTODO" or "VJOURNAL" calendar component with
the "RELATED-TO" property.
The following is an example of the "VEVENT" calendar component used
to represent a meeting that will also be opaque to searches for busy
time:
BEGIN:VEVENT BEGIN:VEVENT
UID:19970901T130000Z-123401@host.com
DTSTAMP:19970901T1300Z
DTSTART:19970903T083000-0800 DTSTART:19970903T083000-0800
DTEND:19970903T110000-0800 DTEND:19970903T110000-0800
DESCRIPTION:Annual Employee Review SUMMARY:Annual Employee Review
CLASS:PRIVATE CLASS:PRIVATE
CATEGORIES:BUSINESS,HUMAN RESOURCES CATEGORIES:BUSINESS,HUMAN RESOURCES
END:VEVENT END:VEVENT
5.4.2 To-do Component The following is an example of the "VEVENT" calendar component used
to represent a reminder that will not be opaque, but rather
transparent, to searches for busy time:
A To-do Calendar Component is a grouping of component properties and BEGIN:VEVENT
an optional alarm calendar component that represent an action-item or UID:19970901T130000Z-123402@host.com
assignment. For example, it may be an item of work assigned to an DTSTAMP:19970901T1300Z DTSTART:19970401T083000-0800
individual; such as "turn in travel expense today". DTEND:19970401T170000-0800
SUMMARY:Laurel is in sensitivity awareness class.
CLASS:PUBLIC
CATEGORIES:BUSINESS,HUMAN RESOURCES
TRANSP:TRANSPARENT
END:VEVENT
A To-do Component is defined by the following notation: The following is an example of the "VEVENT" calendar component used
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;
no matter what the value of the "TRANSP" property indicates:
todoc = "BEGIN" ":" "VTODO" CRLF BEGIN:VEVENT
*todoprop *alarmc UID:19970901T130000Z-123403@host.com
"END" ":" "VTODO" CRLF DTSTAMP:19970901T1300Z
DTSTART:19971102
SUMMARY:Our Blissful Anniversary
CLASS:CONFIDENTIAL
CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
RRULE:FREQ=YEARLY
END:VEVENT
todoprop = *attach *attendee *categories [class] [completed] Dawson/Stenerson 27 Expires MAY 1998
[created] description dtstamp dtstart due *exdate
*exrule [geo] *last-mod [location] priority [rstatus]
*related *resources *rdate *rrule [resp-seq] [recurid]
[seq] [status] [summary] [transp] uid *url *(comment)
The To-do Component can not be nested within another Calendar 4.4.2 To-do Component
Component. If To-do components need to be related to each other or to
an Event or Journal Calendar Component, they can specify a
relationship with the RELATED-TO property.
The following is an example of a To-do Calendar Component: 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".
A "VTODO" calendar component is defined by the following notation:
todoc = "BEGIN" ":" [ws] "VTODO" CRLF
todoprop *alarmc
"END" ":" [ws] "VTODO" CRLF
todoprop = *attach *attendee *categories [class] *comment
[completed] *contact [created] [description] dtstamp
dtstart [due / duration] *exdate *exrule [geo]
[last-mod] [location] [percent] priority [rstatus]
*related *resources *rdate *rrule [recurid] [seq]
[status] summary uid *url
The "VTODO" calendar component can not be nested within another
calendar component. If "VTODO" calendar components need to be related
to each other or to a "VTODO" or "VJOURNAL" calendar component, they
can specify a relationship with the "RELATED-TO" property.
The following is an example of a "VTODO" calendar component:
BEGIN:VTODO BEGIN:VTODO
UID:19970901T130000Z-123404@host.com
DTSTAMP:19970901T1300Z
DTSTART:19970415T083000-0500 DTSTART:19970415T083000-0500
DUE:19970415T235959-0500 DUE:19970415T235959-0500
DESCRIPTION: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
5.4.3 Journal Component 4.4.3 Journal Component
A Journal Calendar Component is a grouping of component properties A "VJOURNAL" calendar component is a grouping of component properties
that represent one or more descriptive text on a particular calendar that represent one or more descriptive text notes on a particular
date. For example, it may be a journal entry of individual telephone 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.
Dawson/Stenerson 23 Expires January 1998 Dawson/Stenerson 28 Expires MAY 1998
contacts for the day or an ordered list of accomplishments for the The "VJOURNAL" calendar component does not take up time on a
day. 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.
A Journal Component is defined by the following notation: A "VJOURNAL" calendar component is defined by the following notation:
journalc = "BEGIN" ":" "VJOURNAL" CRLF journalc = "BEGIN" ":" [ws] "VJOURNAL" CRLF
*jourprop jourprop
"END" ":" "VJOURNAL" CRLF "END" ":" [ws] "VJOURNAL" CRLF
jourprop = *attach *attendee *categories [class] [created] jourprop = *attach *attendee *categories [class] *comment
description dtstart dtstamp *last-mod *related *contact [created] [description] dtstart dtstamp
[rdate] [rrule] [rstatus] [resp-seq] [seq] uid *url *exdate *exrule [last-mod] *related *rdate *rrule
[recurid] *(comment) [rstatus] [seq] summary uid *url [recurid]
The Journal Component can not be nested within another Calendar The "VJOURNAL" calendar component can not be nested within another
Component. If Journal Components need to be related to each other or calendar component. If "VJOURNAL" calendar components need to be
to an Event or To-Do Calendar Component, they can specify a related to each other or to a "VEVENT" or "VTODO" calendar component,
relationship with the RELATED-TO property. they can specify a relationship with the "RELATED-TO" property.
The following is an example of the Journal Calendar Component: The following is an example of the "VJOURNAL" calendar component:
BEGIN:VJOURNAL BEGIN:VJOURNAL
DTSTART:19970317T083000 UID:19970901T130000Z-123405@host.com
DESCRIPTION:1. Staff meeting: Participants include Joe, Lisa DTSTAMP:19970901T1300Z
DTSTART;VALUE=DATE:19970317
SUMMARY:Staff meeting minutes
DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa
and Bob. Aurora project plans were reviewed. There is currently 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
5.4.4 Free/Busy Component 4.4.4 Free/Busy Component
A Free/Busy Calendar Component is a grouping of component properties A "VFREEBUSY" calendar component is a grouping of component
that represent free or busy time information. Typically, this properties that represents either a request for, or a reply with,
component exists in an iCalendar object that is being used to either free or busy time information. Typically, this component exists in an
request or return free or busy time information. iCalendar object that is being used to either request or return free
or busy time information.
A Free/Busy Component is defined by the following notation: A "VFREEBUSY" calendar component is defined by the following
notation:
freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF freebusyc = "BEGIN" ":" [ws] "VFREEBUSY" CRLF
*fbprop fbprop
"END" ":" "VFREEBUSY" CRLF "END" ":" [ws] "VFREEBUSY" CRLF
fbprop = *attendee [created] [duration] [dtend] [dtstart] Dawson/Stenerson 29 Expires MAY 1998
dtstamp #freebusy *last-mod *related [rstatus] fbprop = fbrequest / fbreply
[resp-seq] [seq] uid *url *(comment)
The Free/Busy Component can not be nested within another Calendar fbrequest = *attendee dtstart dtend [duration] *comment dtstamp
Component. Free/Busy components may be related to each other with the [last-mod] *related [seq] uid
RELATED-TO property. Multiple Free/Busy Calendar Components may be ;This set of properties is used to for free/busy time request.
specified within a iCalendar object. This permits the grouping of
Free/Busy information into logical collections, such as monthly
groups of busy time information.
Dawson/Stenerson 24 Expires January 1998 fbreply = *attendee [created] *comment [dtstart dtend] dtstamp
The Free/Busy Calendar Component is intended for use in profiles *freebusy [last-mod] *related [rstatus] [seq] uid *url
involving requests for free time, requests for busy time, requests ;This set of properties is used for free/busy time reply.
for both free and busy, and the associated replies.
Free/Busy information can be expressed using the FREEBBUSY property. The "VFREEBUSY" calendar component can not be nested within another
This property provides a terse representation of time periods. One or calendar component. The "VFREEBUSY" calendar components MAY be
more FREEBUSY properties may be specified in the FREE/BUSY Calendar related to each other with the "RELATED-TO" property. Multiple
Component to describe the Free/Busy information. "VFREEBUSY" calendar components MAY be specified within a iCalendar
object. This permits the grouping of Free/Busy information into
logical collections, such as monthly groups of busy time information.
Optionally, the DTSTART and DTEND properties may be specified to The "VFREEBUSY" calendar component is intended for use in iCalendar
express the start and end date and time for Free/Busy information in object methods involving requests for free time, requests for busy
the Free/Busy Calendar Component. When present in a Free/Busy time, requests for both free and busy, and the associated replies.
Calendar Component, they should be specified prior to any FREEBUSY
properties. In a free time request, these properties may 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 not Free/Busy information can be expressed using the "FREEBBUSY"
permitted within a Free/Busy Calendar Component. Any recurring events property. This property provides a terse representation of time
are resolved into their individual busy time periods using the periods. One or more "FREEBUSY" properties MAY be specified in the
FREEBUSY property. "VFREEBUSY" calendar component to describe the Free/Busy information.
The following is an example of a Free/Busy Calendar Component: Optionally, the "DTSTART" and "DTEND" properties MAY be specified to
express the start and end date and time for all of the Free/Busy
information in the "VFREEBUSY"calendar component. When present in a
"VFREEBUSY" calendar component, they should be specified prior to any
"FREEBUSY" properties. In a free time request, these properties MAY
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
not permitted within a "VFREEBUSY" calendar component. Any recurring
events are resolved into their individual busy time periods using the
"FREEBUSY" property.
The following is an example of a "VFREEBUSY" calendar component:
BEGIN:VFREEBUSY BEGIN:VFREEBUSY
DTSTART:19971015T050000Z DTSTART:19971015T050000Z
DTEND:19971016T050000Z DTEND:19971016T050000Z
FREEBUSY;VALUE=PERIOD-START:19971015T050000Z/PT8H30M, FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
19971015T160000Z/PT5H30M, 19971015T223000Z/PT6H30M 19971015T160000Z/PT5H30M, 19971015T223000Z/PT6H30M
END:VFREEBUSY END:VFREEBUSY
5.4.5 Alarm Component 4.4.5 Alarm Component
An Alarm Calendar Component is a grouping of component properties A "VALARM" calendar component is a grouping of component properties
that is a reminder or alarm for an event or a to-do. The Alarm that is a reminder or alarm for an event or a to-do. The "VALARM"
Calendar Component may only be specified in an event or to-do calendar component MAY only be specified in a "VEVENT" or "VTODO"
calendar component. For example, it may define a reminder for a
Dawson/Stenerson 30 Expires MAY 1998
calendar component. For example, it MAY define a reminder for a
pending event or an overdue to-do. pending event or an overdue to-do.
The DTSTART property specifies the calendar date and time of day that The "DTSTART" property specifies the calendar date and time of day
the alarm will be triggered. The value may alternately be set to a that the alarm will be triggered. The value MAY alternately be set to
period of time, before or after the event or to-do, that the alarm a period of time, before or after the event or to-do, that the alarm
will be triggered. will be triggered.
An Alarm Component is defined by the following notation: A "VALARM" calendar component is defined by the following notation:
alarmc = "BEGIN" ":" "VALARM" CRLF alarmc = "BEGIN" ":" [ws] "VALARM" CRLF
*alarmprop alarmprop
"END" ":" "VALARM" CRLF "END" ":" [ws] "VALARM" CRLF
alarmprop = *attach [created] [description] dtstart duration alarmprop = *attach 1*categories *comment [description]
/ *last-mod *related repeat [summary] *(comment) dtstart duration *related repeat [summary]
The Alarm Component can only appear within either an Event or To-Do The "VALARM" calendar component can only appear within either a
Calendar Component. Alarm Components can not be nested. "VEVENT" or "VTODO" calendar component. The "VALARM" calendar
components can not be nested.
Dawson/Stenerson 25 Expires January 1998 The following is an example of the "VALARM" calendar component:
The following is an example of the Alarm Calendar Component:
BEGIN:VALARM BEGIN:VALARM
DTSTART:19970317T133000Z DTSTART:19970317T133000Z
REPEAT:4 REPEAT:4
DURATION:PT15M DURATION:PT15M
CATEGORIES:DISPLAY,AUDIO CATEGORIES:DISPLAY,AUDIO
ATTACH:file:///mmedia/sounds/bell1.wav ATTACH:file:///mmedia/sounds/bell1.wav
DESCRIPTION:Breakfast meeting with executive team at 8:30 AM DESCRIPTION:Breakfast meeting with executive team at 8:30 AM
END:VALARM END:VALARM
5.4.6 Timezone Component 4.4.6 Timezone Component
The "VTIMEZONE" calendar component is used to define a time zone.
A time zone is unambiguously defined by the set of time measurement A time zone is unambiguously defined by the set of time measurement
rules determined by the governing body for a given geographic area. rules determined by the governing body for a given geographic area.
These rules describe at a minimum the base offset from UTC for the These rules describe at a minimum the base offset from UTC for the
time zone, often referred to as the Standard Time offset. Many time zone, often referred to as the Standard Time offset. Many
locations adjust their Standard Time forward or backward by one hour, locations adjust their Standard Time forward or backward by one hour,
in order to accommodate seasonal changes in number of daylight hours, in order to accommodate seasonal changes in number of daylight hours,
often referred to as Daylight Saving Time. Some locations adjust often referred to as Daylight Saving Time. Some locations adjust
their time by a fraction of an hour. Standard Time is also known as 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, Winter Time. Daylight Saving Time is also known as Advanced Time,
Summer Time, or Legal Time in certain countries. The following table Summer Time, or Legal Time in certain countries. The following table
shows the changes in time zone rules for the eastern United States. shows the changes in time zone rules for the eastern United States.
Effective Transition Rule Effective Transition Rule
Date (Date/Time) Offset Abbreviation Date (Date/Time) Offset Abbreviation
1920-1920 last Sun in Mar, 02:00 -0400 EDT 1920-1920 last Sun in Mar, 02:00 -0400 EDT
Dawson/Stenerson 31 Expires MAY 1998
1920-1920 last Sun in Oct, 02:00 -0500 EST 1920-1920 last Sun in Oct, 02:00 -0500 EST
1921-1966 last Sun in Apr, 02:00 -0400 EDT 1921-1966 last Sun in Apr, 02:00 -0400 EDT
1921-1954 last Sun in Sep, 02:00 -0500 EST 1921-1954 last Sun in Sep, 02:00 -0500 EST
1955-1966 last Sun in Oct, 02:00 -0500 EST 1955-1966 last Sun in Oct, 02:00 -0500 EST
1967-* last Sun in Oct, 02:00 -0500 EST 1967-* last Sun in Oct, 02:00 -0500 EST
skipping to change at line 1446 skipping to change at line 1673
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
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 and to-dos, is dependent on the especially for recurring events, to-dos or journal entries, is
ability to capture and convey date and time information in an dependent on the ability to capture and convey date and time
unambiguous format. The specification of current time zone information in an unambiguous format. The specification of current
information is integral to this behavior. time zone information is integral to this behavior.
Dawson/Stenerson 26 Expires January 1998 The "VTIMEZONE" calendar component is a grouping of component
The Time Zone Calendar Component is a grouping of component
properties that define a time zone description. The time zone properties that define a time zone description. The time zone
description specifies the effective Standard Time or Daylight Savings description specifies the effective Standard Time or Daylight Savings
Time rules for a particular time zone. The Timezone Component can not Time rules for a particular time zone. The "VTIMEZONE" calendar
be nested within other Calendar Components. The Time Zone Component component can not be nested within other calendar components. The
may be specified multiple times. If the Time Zone Component is "VTIMEZONE" calendar component MAY be specified multiple times. If
missing, the recipient should assume all local times are relative to the "VTIMEZONE" calendar component is missing, the recipient should
the recipient's time zone. The Time Zone Component should be assume all local times are relative to the recipient's time zone. The
specified in the iCalendar object before any other Calendar "VTIMEZONE" calendar component should be specified in the iCalendar
Components. object before any other calendar components.
A Time Zone Component is defined by the following notation: A "VTIMEZONE" calendar component is defined by the following
notation:
timezonec = "BEGIN" ":" "VTIMEZONE" CRLF timezonec = "BEGIN" ":" [ws] "VTIMEZONE" CRLF
*tzprop tzprop
"END" ":" "VTIMEZONE" CRLF "END" ":" [ws] "VTIMEZONE" CRLF
tzprop = [created] [daylight] dtstart [rdate / rrule] tzprop = *comment [daylight] dtstart [rdate / rrule]
[tzname] tzoffset *(comment) [tzname] tzoffset
The Time Zone component is important for correct interpretation of The "VTIMEZONE" calendar component is important for correct
individual as well as recurring calendar components that span a time interpretation of individual as well as recurring calendar components
zone transition. For example, from EST to EDT. The exception to this that span a time zone transition. For example, from EST to EDT. The
are calendar components that are considered floating (i.e., occurs at exception to this are calendar components that are considered
a particular local time no matter what time zone you are in). If the floating (i.e., occurs at a particular local time no matter what time
iCalendar object contains a non-floating calendar component that has zone you are in). If the iCalendar object contains a non-floating
a recurring date pattern (i.e., includes the RRULE property) or a calendar component that has a recurring date pattern (i.e., includes
list of date and local time values (i.e., includes the RDATE
property), one or more Time Zone 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 Time Zone Calendar Component need be
present. If a time zone transition is crossed, then other Time Zone
Components are needed. Further, if there are known changes to the
rules for the time zone, even more Time Zone Components are needed.
Each Time Zone Component consists of several properties: Dawson/Stenerson 32 Expires MAY 1998
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.
The CREATED property is a DATE-TIME value that indicates when the Each "VTIMEZONE" calendar component consists of several properties:
time zone description was created.
The DAYLIGHT property is a BOOLEAN value indicating Standard Time The "DAYLIGHT" property is a BOOLEAN value indicating Standard Time
(FALSE) or Daylight Savings Time (TRUE). The default for DAYLIGHT is (FALSE) or Daylight Savings Time (TRUE). The default for DAYLIGHT is
FALSE or Standard Time. FALSE or Standard Time.
The DTSTART property in this usage is a fully specified DATE-TIME The "DTSTART" property in this usage is a fully specified DATE-TIME
value, including the UTC offset, indicating the effective start date value, including the UTC offset, indicating the effective start date
and time for the time zone information. For example, 19671029T020000- and time for the time zone information. For example, 19671029T020000-
0400 represents the time at which the transition to Standard Time 0400 represents the time at which the transition to Standard Time
took effect in 1967 for the eastern United States. took effect in 1967 for the eastern United States.
The TZOFFSET property is a UTC-OFFSET value indicating the UTC offset The "TZOFFSET" property is a UTC-OFFSET value indicating the UTC
for the time zone (Standard Time or Daylight Savings Time). offset for the time zone (Standard Time or Daylight Savings Time).
The TZNAME property is the customary name for the time zone. The "TZNAME" property is the customary name for the time zone.
Dawson/Stenerson 27 Expires January 1998 The "RRULE" property indicates the recurrence rule for the transition
The RRULE property is a TEXT property indicating the recurrence rule to this time zone. For example, in the United States, the transition
for the transition to this time zone. For example, in the United from Standard Time to Daylight Saving Time occurs on the first Sunday
States, the transition from Standard Time to Daylight Saving Time in April at 02:00. If a recurrence rule describing the transition is
occurs on the first Sunday in April at 02:00. If a recurrence rule known to have an effective end date, the UNTIL recurrence rule
describing the transition is known to have an effective end date, the parameter is used to specify that end date and time. If the
UNTIL recurrence rule parameter is used to specify that end date and recurrence rule for a particular observance (Daylight Saving Time) is
time. If the recurrence rule for a particular observance (Daylight changing, then the UNTIL of the first rule will be equal to the last
Saving Time) is changing, then the UNTIL of the first rule will be valid instance (the last date-time) of this particular rule. See
equal to the DTSTART for the replacement rule. See example below. example below.
Alternatively, the RDATE property can be used. The RDATE property is Alternatively, the "RDATE" property can be used. The "RDATE" property
a DATE-TIME property indicating the individual dates and times that is a property that indicates the individual dates and/or times that
the transition takes effect. The values supplied for RDATE for each the transition takes effect. The values supplied for "RDATE" property
Time Zone component must provide valid time zone information of all for each "VTIMEZONE" calendar component MUST provide valid time zone
instances of the recurrence specified for the calendar component to information of all instances of the recurrence specified for the
which this time zone information is to be applied. calendar component to which this time zone information is to be
applied.
The following are examples of the Time Zone Calendar Component: 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. Note that this is only suitable Eastern United States using "RDATE" property. Note that this is only
for a recurring event that starts on or later than 1997, April 6, at suitable for a recurring event that starts on or later than 1997,
02:00:00 EST (i.e., the earliest effective transition date and time) April 6, at 02:00:00 EST (i.e., the earliest effective transition
and ends no later than 1998, April 7, 02:00:00 EST (i.e., latest
valid date and time for EST in this scenario). For example, this can Dawson/Stenerson 33 Expires MAY 1998
be used for a recurring event that ocurrs every Friday, 8am-9am, date and time) and ends no later than 1998, April 7, 02:00:00 EST
starting June 1, 1997, ending Dec 31, 1997. (i.e., latest valid date and time for EST in this scenario). For
example, this can be used for a recurring event that ocurrs every
Friday, 8am-9am, starting June 1, 1997, ending Dec 31, 1997.
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:FALSE DAYLIGHT:FALSE
RDATE:19971026T020000-0400 RDATE:19971026T020000-0400
TZOFFSET:-0500 TZOFFSET:-0500
TZNAME:EST TZNAME:EST
END:VTIMEZONE END:VTIMEZONE
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:TRUE DAYLIGHT:TRUE
skipping to change at line 1563 skipping to change at line 1793
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
recurrening event starting today and continuing on into the known recurrening event starting today and continuing on into the known
future. future.
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:FALSE DAYLIGHT:FALSE
DTSTART:19671029T020000-0400 DTSTART:19671029T020000-0400
RRULE:BYDAY=-1SU;BYMONTH=10;FREQ=YEARLY RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSET:-0500 TZOFFSET:-0500
TZNAME:EST TZNAME:EST
END:VTIMEZONE END:VTIMEZONE
Dawson/Stenerson 28 Expires January 1998
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:TRUE DAYLIGHT:TRUE
DTSTART:19870405T020000-0500 DTSTART:19870405T020000-0500
RRULE:BYDAY=1SU;BYMONTH=4;FREQ=YEARLY RRULE: FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
TZOFFSET:-0400 TZOFFSET:-0400
TZNAME:EDT TZNAME:EDT
END:VTIMEZONE END:VTIMEZONE
This is an example showing a ficticious set of rules for the Eastern This is an example showing a ficticious 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 DAYLIGHT:FALSE
DTSTART:19671029T020000-0400 DTSTART:19671029T020000-0400
RRULE:BYDAY=-1SU;BYMONTH=10;FREQ=YEARLY RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSET:-0500 TZOFFSET:-0500
TZNAME:EST TZNAME:EST
END:VTIMEZONE END:VTIMEZONE
Dawson/Stenerson 34 Expires MAY 1998
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:TRUE DAYLIGHT:TRUE
DTSTART:19870405T020000-0500 DTSTART:19870405T020000-0500
RRULE:BYDAY=1SU;BYMONTH=4;FREQ=YEARLY;UNTIL=19981025T020000-0400 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T020000-0500
TZOFFSET:-0400 TZOFFSET:-0400
TZNAME:EDT TZNAME:EDT
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 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 DAYLIGHT:FALSE
DTSTART:19671029T020000-0400 DTSTART:19671029T020000-0400
RRULE:BYDAY=-1SU;BYMONTH=10;FREQ=YEARLY RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSET:-0500 TZOFFSET:-0500
TZNAME:EST TZNAME:EST
END:VTIMEZONE END:VTIMEZONE
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:TRUE DAYLIGHT:TRUE
DTSTART:19870405T020000-0500 DTSTART:19870405T020000-0500
RRULE:BYDAY=1SU;BYMONTH=4;FREQ=YEARLY;UNTIL=19990404T020000-0500 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T020000-0500
TZOFFSET:-0400 TZOFFSET:-0400
TZNAME:EDT TZNAME:EDT
END:VTIMEZONE END:VTIMEZONE
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
DAYLIGHT:TRUE DAYLIGHT:TRUE
DTSTART:19990404T020000-0500 DTSTART:19990327T020000-0500
RRULE:BYDAY=-1SU;BYMONTH=3;FREQ=YEARLY RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZOFFSET:-0400 TZOFFSET:-0400
TZNAME:EDT TZNAME:EDT
END:VTIMEZONE END:VTIMEZONE
Dawson/Stenerson 29 Expires January 1998 4.5 Calendar Properties
5.5 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"
properties and prior to any Calendar Component. property and prior to any calendar component.
5.5.1 Calendar Scale 4.5.1 Calendar Scale
This property is identified by the property name CALSCALE. This This property is identified by the property name CALSCALE. This
property defines the calendar scale used for the calendar information property defines the calendar scale used for the calendar information
specified in the iCalendar object. This specification is based on the specified in the iCalendar object. This memo is based on the
Gregorian calendar scale. The Gregorian calendar scale is assumed if Gregorian calendar scale. The Gregorian calendar scale is assumed if
this property is not specified in the iCalendar object. It is this property is not specified in the iCalendar object. It is
expected that other calendar scales will be defined in other expected that other calendar scales will be defined in other
specifications or by future versions of this specification. specifications or by future versions of this memo.
Dawson/Stenerson 35 Expires MAY 1998
The property is defined by the following notation: The property is defined by the following notation:
calscale = "CALSCALE" ":" calvalue CRLF calscale = "CALSCALE" ":" [ws] calvalue CRLF
calvalue = "GREGORIAN" / iana-scale calvalue = "GREGORIAN" / iana-scale
iana-scale = <Any other designator for a calendar scale iana-scale = <Any other designator for a calendar scale
registered with IANA> registered with IANA>
The following is an example of this property: The following is an example of this property:
CALSCALE:GREGORIAN CALSCALE:GREGORIAN
The data type for this property is TEXT. The data type for this property is TEXT.
5.5.2 Product Identifier 4.5.2 Method
This property is identified by the property name PRODID. This
property specifies the identifier for the product that created the
iCalendar object. 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 calendar property must be specified in the
iCalendar object but can only appear once.
The property is defined by the following notation:
prodid = "prodid" ":" pidvalue CRLF
pidvalue = text
;Any text that describes the product and version
;and that is generally assured of being unique.
The following is an example of this property:
PRODID:-//ABC Corporation//NONSGML My Product//EN
The data type for this property is TEXT.
Dawson/Stenerson 30 Expires January 1998
5.5.3 Profile
This property is identified by the property name PROFILE. This This property is identified by the property name METHOD. This
property defines the usage profile associated with the calendar property defines the iCalendar object method associated with the
object. When used in a MIME message entity, the value of this calendar object. When used in a MIME message entity, the value of
property must be the same as the Content-Type profile parameter 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.
The property is defined by the following notation: The property is defined by the following notation:
profile = "PROFILE" ": profvalue CRLF method = "METHOD" ": [ws] profvalue CRLF
profvalue = " component "-" action
component = "EVENT" / "TODO" / "JOURNAL" / "FREEBUSY"
/ iana-component / x-token
action = <Any IANA registered iCalendar action type.>
x-token = <The two characters "X-" or "x-" followed, with no
intervening white space, by any atom>
iana-component = <Any other component registered with IANA> profvalue = <Any IANA registered iCalendar object method.>
The following is an example of this property when the iCalendar The following is an example of this property when the iCalendar
object is used to request a meeting: object is used to request a meeting:
PROFILE:EVENT-REQUEST METHOD: REQUEST
In the event that this property is not specified, the usage profile
is undefined. The data type for this property is TEXT.
5.5.4 Profile Version
This property is identified by the property name PROFILE-VERSION. In the event that this property is not specified, the iCalendar
This property specifies the identifier corresponding to the highest object method is undefined. The data type for this property is TEXT.
version number or the minimum and maximum range of the usage profile
that was used in constructing the iCalendar object. Values for this
property are to be defined by registering an iCalendar usage
profiles.
The property is defined by the following notation: 4.5.3 Product Identifier
prof-version = "PROFILE-VERSION" ":" profvalue CRLF This property is identified by the property name PRODID. This
property specifies the identifier for the product that created the
iCalendar object. 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 calendar property MUST be specified in the
iCalendar object but can only appear once.
profvalue = iana-prfver This property should not be used to alter the interpretation of an
iCalendar object beyond the semantics specified in this memo. For
example, it is not to be used to further the understanding of non-
standard properties.
iana-prfver = max-prfver / (min-prfver ";" max-prfver) The property is defined by the following notation:
min-prfver = <A IANA registered iCalendar profile identifier> Dawson/Stenerson 36 Expires MAY 1998
prodid = "PRODID" ":" [ws] pidvalue CRLF
max-prfver = <A IANA registered iCalendar profile identifier> pidvalue = text
;Any text that describes the product and version
;and that is generally assured of being unique.
The following is an example of this property: The following is an example of this property:
Dawson/Stenerson 31 Expires January 1998 PRODID:-//ABC Corporation//NONSGML My Product//EN
PROFILE-VERSION:IPCS-1.0
The data type for this property is TEXT. The data type for this property is TEXT.
5.5.5 Source 4.5.4 Source
This property is identified by the property name SOURCE. This This property is identified by the property name SOURCE. This
property is defined by the [MIME DIR] specification. In this property is defined by the [MIME DIR] memo. In this memo, the
specification, the property identifies the URL for the source of the property identifies the URL for the source of the iCalendar object.
iCalendar object. The URL is useful for accessing the iCalendar The URL is useful for accessing the iCalendar object using a calendar
object using a calendar access protocol. access protocol.
The property is defined by the following notation: The property is defined by the following notation:
source = "SOURCE" ":" url CRLF source = "SOURCE" ":" [ws] url CRLF
The following are examples of this property: The following are examples of this property:
SOURCE:http://xyz.corp.com/corp-cals/1997-events.or4 SOURCE:http://xyz.corp.com/corp-cals/1997-events.or4
SOURCE:http://xyz.corp.com/calendars/~jdoe SOURCE:http://xyz.corp.com/calendars/~jdoe
The data type for this property is URL. The data type for this property is URL.
5.5.6 Source Name 4.5.5 Source Name
This property is identified by the property name NAME. This property This property is identified by the property name NAME. This property
is defined by the [MIME DIR] specification. The property identifies is defined by the [MIME DIR] memo. The property identifies the
the displayable, presentation name for the source of the iCalendar displayable, presentation name for the source of the iCalendar
object. The source name is a useful text to associate in the user- object. The source name is a useful text to associate in the user-
interface of an application with the value in the SOURCE property. interface of an application with the value in the SOURCE property.
The property is defined by the following notation: The property is defined by the following notation:
name = "NAME" ":" text CRLF name = "NAME" ":" [ws] text CRLF
The following is an example of this property: The following is an example of this property:
NAME:1997 Events Calendar for XYZ Corporation NAME:1997 Events Calendar for XYZ Corporation
The data type for this property is TEXT. The data type for this property is TEXT.
5.5.7 Version Dawson/Stenerson 37 Expires MAY 1998
4.5.6 Version
This property is identified by the property name VERSION. This This property is identified by the property name VERSION. This
property specifies the identifier corresponding to the highest property specifies the identifier corresponding to the highest
version number or the minimum and maximum range of the MIME version number or the minimum and maximum range of the MIME
Calendaring and Scheduling Content Type specification supported by Calendaring and Scheduling Content Type specification supported by
the implementation that created the iCalendar object. A value of the implementation that created the iCalendar object. A value of
"2.0" corresponds to this specification. This calendar property must "2.0" corresponds to this memo. This calendar property MUST appear
appear within the iCalendar object but can only appear once. within the iCalendar object but can only appear once.
The property is defined by the following notation: The property is defined by the following notation:
version = "VERSION" ":" vervalue CRLF version = "VERSION" ":" [ws] vervalue CRLF
Dawson/Stenerson 32 Expires January 1998 vervalue = "2.0" ;This memo
vervalue = "2.0" ;This specification
/ maxver / maxver
/ (minver ";" maxver) / (minver ";" [ws] maxver)
minver = <A IANA registered iCalendar profile 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 profile 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: The following is an example of this property:
VERSION:2.0 VERSION:2.0
The data type for this property is TEXT. The data type for this property is TEXT.
5.6 Component Properties 4.6 Component Properties
The following properties apply to either an event or to-do calendar The following properties MAY appear within calendar components, as
object component. specified by each component property definition.
5.6.1 Attachment 4.6.1 Attachment
This property is identified by the property name ATTACH. The property This property is identified by the property name ATTACH. The property
provides the capability to associate an external object with a provides the capability to associate an external object with a
calendar component. For example, a document to be reviewed at 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. scheduled event or the description of the process steps for a to-do.
The property may only be specified within event, to-do, or journal The property MAY only be specified within "VEVENT", "VTODO", or
calendar components. This property may be specified multiple times "VJOURNAL" calendar components. This property MAY be specified
within an iCalendar object. multiple times within an iCalendar object.
The property is defined by the following notation: The property is defined by the following notation:
attach = "ATTACH" ":" url CRLF attach = "ATTACH" ":" [ws] url CRLF
The following are examples of this property: The following are examples of this property:
ATTACH:CID:jsmith.part3.960817T083000.xyzMail@host1.com ATTACH:CID:jsmith.part3.960817T083000.xyzMail@host1.com
Dawson/Stenerson 38 Expires MAY 1998
ATTACH:FTP://xyzCorp.com/pub/reports/r-960812.ps ATTACH:FTP://xyzCorp.com/pub/reports/r-960812.ps
The data type for this property is URL. The data type for this property is URL.
5.6.2 Attendee 4.6.2 Attendee
This property is identified by the property name ATTENDEE. The This property is identified by the property name ATTENDEE. The
property defines an attendee within a calendar component. The property defines an attendee within a calendar component. The
property may only be specified within the event, to-do and free/busy property MAY only be specified within the "VEVENT", "VTODO",
calendar components. "VJOURNAL" and "VFREEBUSY" calendar components.
The property has the property parameters TYPE, for the type of The property has the property parameters TYPE, for the type of
attendee, ROLE, for the intended role of the attendee; STATUS, for attendee, ROLE, for the intended role of the attendee; STATUS, for
the status of the attendee’s participation; RSVP, for indicating the status of the attendee’s participation; RSVP, for indicating
whether the favor of a reply is requested; EXPECT, to indicate the whether the favor of a reply is requested; EXPECT, to indicate the
expectation of the attendee’s participation by the originator; expectation of the attendee’s participation by the originator;
MEMBER, to indicate the group that the attendee belongs to; MEMBER, to indicate the groups that the attendee belongs to;
DELEGATED-TO, to indicate the people that the original request was
Dawson/Stenerson 33 Expires January 1998
DELEGATED-TO, to indicate the person that the original request was
delegated to; and DELEGATED-FROM, to indicated whom the request was delegated to; and DELEGATED-FROM, to indicated whom the request was
delegated from. delegated from.
A recipient delegated a request MUST inherit the RSVP and EXPECT A recipient delegated a request MUST inherit the RSVP and EXPECT
values from the attendee that delegated the request to them. values from the attendee that delegated the request to them.
Multiple attendees may be specified by including multiple ATTENDEE Multiple attendees MAY be specified by including multiple "ATTENDEE"
properties within the MIME calendaring entity. properties within the MIME calendaring entity.
The property data type default is CAL-ADDRESS. The property data type The property data type default is CAL-ADDRESS. The property data type
may also be set to URL. This provides a useful mechanism to allow MAY also be set to URL. This provides a useful mechanism to allow
more than just the address of the attendee to be referenced. For more than just the address of the attendee to be referenced. If the
example, the property value may refer to a URL. value is a URL, then it MUST be able to be resolved to a calendar
address.
The property is defined by the following notation: The property is defined by the following notation:
attendee = "ATTENDEE" [";" attparamlist] ":" attendee = "ATTENDEE" [";" [ws] paramlist]
[";" [ws] attparamlist] ":" [ws]
(cal-address / URL) CRLF (cal-address / URL) CRLF
;Value must match default or explicit data type ;Value MUST match default or explicit data type
attparamlist = attparam / attparamlist ";" attparam attparamlist = (attparam *(";" attparam)
/ paramlist / paramlist ";" attparam
/ paramlist ";" attparamlist ";"
attparam
attparam = typeparm / roleparm / statusparm / rsvpparm attparam = typeparm / roleparm / statusparm / rsvpparm
/ expectparm / memberparm / deletoparm / delefromparm / expectparm / memberparm / deletoparm / delefromparm
typeparm = "TYPE" "=" typeparm = "TYPE" "="
("INDIVIDUAL" ; An individual ("INDIVIDUAL" ; An individual
/ "GROUP" ; A group of individuals / "GROUP" ; A group of individuals
/ "RESOURCE" ; A physical resource / "RESOURCE" ; A physical resource
/ "ROOM" ; A room resource / "ROOM" ; A room resource
/ "UNKNOWN") ; Otherwise not known / "UNKNOWN") ; Otherwise not known
;Default value is UNKNOWN ;Default value is INDIVIDUAL
Dawson/Stenerson 39 Expires MAY 1998
roleparm = "ROLE" "=" roleparm = "ROLE" "="
("ATTENDEE" ; Indicates a regular attendee ("ATTENDEE" ; Indicates a regular attendee
/ "OWNER" ; Indicates owner of event or to-do / "OWNER" ; Indicates owner of event or to-do
/ "ORGANIZER" ; Indicates organizer of event or to-do / "ORGANIZER" ; Indicates organizer of event or to-do
/ "DELEGATE") ; Indicates delegate to event or to-do / "DELEGATE") ; Indicates delegate to event or to-do
;Default is ATTENDEE ;Default is ATTENDEE
statusparm = "STATUS" "=" statusparm = "STATUS" "="
("NEEDS-ACTION" ; Indicates event or to-do needs action ("NEEDS-ACTION" ; Indicates event or to-do needs action
/ "ACCEPTED" ; Indicates event or to-do accepted / "ACCEPTED" ; Indicates event or to-do accepted
/ "DECLINED" ; Indicates event or to-do not accepted / "DECLINED" ; Indicates event or to-do not accepted
/ "TENTATIVE" ; Indicates event or to-do tentatively / "TENTATIVE" ; Indicates event or to-do tentatively
; accepted. Status may change in the future. ; accepted. Status MAY change in the future.
/ "COMPLETED" ; Indicates to-do was completed. / "COMPLETED" ; Indicates to-do was completed.
; COMPLETED property has date/time completed. ; COMPLETED property has date/time completed.
/ "IN-PROCESS" ;Indicates to-do is in the process of
; being completed.
/ "DELEGATED" ; Indicateds event or to-do delegated / "DELEGATED" ; Indicateds event or to-do delegated
; to another ATTENDEE ; to another ATTENDEE
/ "CANCELED") ; Indicates event or to-do canceled for / "CANCELLED") ; Indicates event or to-do cancelled for
; ATTENDEE ; ATTENDEE
;Default is NEEDS-ACTION ;Default is NEEDS-ACTION
Dawson/Stenerson 34 Expires January 1998
rsvpparm = "RSVP" "=" rsvpparm = "RSVP" "="
("TRUE" ; Indicates response requested ("TRUE" ; Indicates response requested
/ "FALSE") ; Indicates no response needed / "FALSE") ; Indicates no response needed
;Default is FALSE ;Default is FALSE
expectparm = "EXPECT" "=" expectparm = "EXPECT" "="
("FYI" ; Indicates request is for your info ("FYI" ; Indicates request is for your info
/ "REQUIRE" ; Indicates presence is required / "REQUIRE" ; Indicates presence is required
/ "REQUEST") ; Indicates presence is requested / "REQUEST") ; Indicates presence is requested
;Default is FYI ;Default is FYI
memberparm = "MEMBER" "=" cal-address memberparm = "MEMBER" "=" cal-address *("," cal-address)
; Indicates a group or mailing list ; Indicates a group or mailing list
deletoparm = "DELEGATED-TO" "=" cal-address deletoparm = "DELEGATED-TO" "=" cal-address *("," cal-address)
; Indicates who request delegated to ; Indicates who request delegated to
delefromparm = "DELEGATED-FROM" "=" cal-address delefromparm = "DELEGATED-FROM" "=" cal-address *("," cal-address)
;Indicates who request delegated from ;Indicates who request delegated from
The following are examples of this property’s use for a to-do: The following are examples of this property’s use for a to-do:
ATTENDEE;ROLE=OWNER;STATUS=COMPLETED:jsmith@host1.com ATTENDEE;ROLE=OWNER;STATUS=COMPLETED:jsmith@host1.com
ATTENDEE;MEMBER=DEV-GROUP:joecool@host2.com ATTENDEE;MEMBER=DEV-GROUP@host2.com:joecool@host2.com
ATTENDEE;DELEGATED-FROM=immud@host3.com:ildoit@host1.com ATTENDEE;DELEGATED-FROM=immud@host3.com:ildoit@host1.com
The following is an example of this property used for specifying The following is an example of this property used for specifying
multiple attendees to an event: multiple attendees to an event:
ATTENDEE;ROLE=OWNER;STATUS=CONFIRMED:John Smith <jsmith@host1.com> ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:John Smith <jsmith@host1.com>
ATTENDEE;ROLE=ATTENDEE;STATUS=TENTATIVE:Henry Cabot ATTENDEE;ROLE=ATTENDEE;STATUS=TENTATIVE:Henry Cabot
Dawson/Stenerson 40 Expires MAY 1998
<hcabot@host2.com> <hcabot@host2.com>
ATTENDEE;ROLE=DELEGATE;STATUS=CONFIRMED:Jane Doe <jdoe@host1.com> ATTENDEE;ROLE=DELEGATE;STATUS=ACCEPTED:Jane Doe <jdoe@host1.com>
The following is an example of this property with the value specified The following is an example of this property with the value specified
as an URL reference to a vCard that contains the information about as an URL reference to a vCard that contains the information about
the attendee: the attendee:
ATTENDEE;ROLE=ATTENDEE;STATUS=CONFIRMED;VALUE=URL: ATTENDEE;ROLE=ATTENDEE;STATUS=ACCEPTED;VALUE=URL:
http://www.xyz.com/~myvcard.vcf http://www.xyz.com/~myvcard.vcf
The following is an example of this property with "delegatee" The following is an example of this property with "delegatee"
and"delegator" information for an event: and"delegator" information for an event:
ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:John Smith <jsmith@host1.com> ATTENDEE;ROLE=OWNER;STATUS=ACCEPTED:John Smith <jsmith@host1.com>
ATTENDEE;ROLE=DELEGATE;STATUS=TENTATIVE;DELEGATED-FROM= ATTENDEE;ROLE=DELEGATE;STATUS=TENTATIVE;DELEGATED-FROM=
iamboss@host2.com:Henry Cabot<hcabot@host2.com> iamboss@host2.com:Henry Cabot<hcabot@host2.com>
ATTENDEE;ROLE=ATTENDEE;STATUS=DELEGATED;DELEGATED-TO= ATTENDEE;ROLE=ATTENDEE;STATUS=DELEGATED;DELEGATED-TO=
hcabot@host2.com=iamboss(The Big Cheese)@host2.com hcabot@host2.com=iamboss(The Big Cheese)@host2.com
ATTENDEE;ROLE=DELEGATE;STATUS=ACCEPTED:Jane Doe <jdoe@host1.com> ATTENDEE;ROLE=DELEGATE;STATUS=ACCEPTED:Jane Doe <jdoe@host1.com>
The default data type for this property is CAL-ADDRESS. The data type The default data type for this property is CAL-ADDRESS. The data type
may be reset to URL; in which case the value is a location or message MAY be reset to URL; in which case the value is a location or message
that contains the information that is to be used to specify the that contains the information that is to be used to specify the
attendee address. attendee address.
Dawson/Stenerson 35 Expires January 1998 4.6.3 Categories
5.6.3 Categories
This property is identified by the property name CATEGORIES. This This property is identified by the property name CATEGORIES. This
property defines the categories for a calendar component. The property defines the categories for a calendar component. The
property may be specified within the event, to-do or journal calendar property MAY be specified within the "VEVENT", "VTODO" or "VJOURNAL"
component with an arbitrary text value. The property may also be calendar component with an arbitrary text value. In the "VALARM"
specified within the alarm property with a value of the alarm calendar component the property MUST be specified to declare the
category. More than one category may be specified as a list of alarm category. More than one category MAY be specified as a list of
categories separated by the COMMA character (ASCII decimal 44). categories separated by the COMMA character (ASCII decimal 44).
The properties is defined by the following notation: The properties is defined by the following notation:
categories = "CATEGORIES" [";" paramlist] ":" categories = "CATEGORIES" [";" [ws] paramlist] ":" [ws]
catvalue CRLF catvalue CRLF
catvalue = cat1value *["," cat1value] catvalue = cat1value *["," [ws] cat1value]
/ cat2value *["," cat2value] / cat2value *["," [ws] cat2value]
cat1value = "APPOINTMENT" / "BUSINESS" / "EDUCATION" / "HOLIDAY" cat1value = "ANNIVERSARY" / "APPOINTMENT" / "BUSINESS"
/ "MEETING" / "MISCELLANEOUS" / "NON-WORKING HOURS" / "EDUCATION" / "HOLIDAY" / "MEETING" / "MISCELLANEOUS"
/ "NOT IN OFFICE" / "PERSONAL" / "PHONE CALL" / "NON-WORKING HOURS" / "NOT IN OFFICE" / "PERSONAL"
/ "SICK DAY" / "SPECIAL OCCASION" / "TRAVEL" / "PHONE CALL" / "SICK DAY" / "SPECIAL OCCASION"
/ "VACATION" / word / "TRAVEL" / "VACATION" / word
;Used in event and to-do components only ;Used only in "VEVENT", "VTODO" and "VJOURNAL" calendar components.
cat2value = "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE" cat2value = "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE"
/ x-token / iana-word / x-token / iana-word
;Used in alarm component only ;Used only in "VALARM" calendar component.
The following are examples of this property in an event, to-do or Dawson/Stenerson 41 Expires MAY 1998
journal 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 an alarm calendar The following are examples of this property in a "VALARM" calendar
component: component:
CATEGORIES:AUDIO,DISPLAY CATEGORIES:AUDIO,DISPLAY
CATEGORIES:PROCEDURE CATEGORIES:PROCEDURE
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.4 Classification 4.6.4 Classification
This property is identified by the property name CLASS. This property This property is identified by the property name CLASS. This property
defines the access classification for a calendar component. The defines the access classification for a calendar component. The
property may only be specified in an event, to-do or journal calendar property MAY only be specified in a "VEVENT", "VTODO" or "VJOURNAL"
component. The property may only be specified once. calendar component. The property MAY only be specified once.
An access classification is only one component of the general An access classification is only one component of the general
security system within a calendar application. It provides a method security system within a calendar application. It provides a method
of capturing the scope of the access the calendar owner intends for of capturing the scope of the access the calendar owner intends for
information within an individual calendar entry. The access information within an individual calendar entry. The access
Dawson/Stenerson 36 Expires January 1998
classification of an individual iCalendar component is useful when classification of an individual iCalendar component is useful when
measured along with the other security components of a calendar measured along with the other security components of a calendar
system (e.g., user authorization, access rights, access role, etc.). system (e.g., calendar user authentication, authorization, access
Hence, the semantics of the individual access classifications can not rights, access role, etc.). Hence, the semantics of the individual
be completely defined by this specification alone. Additionally, due access classifications can not be completely defined by this memo
to the "blind" nature of most exchange processes using this alone. Additionally, due to the "blind" nature of most exchange
specification, these access classifications can not serve as an processes using this memo, these access classifications can not serve
enforcement statement for a system receiving an iCalendar object . as an enforcement statement for a system receiving an iCalendar
Rather, they provide a method for capturing the intention of the object . Rather, they provide a method for capturing the intention of
calendar owner for the access to the calendar component. the calendar owner for the access to the calendar component. . The
[ICMS] provides a broader description of the security system within a
calendar application.
The property is defined by the following notation: The property is defined by the following notation:
class = "CLASS" [";" paramlist] ":" class = "CLASS" [";" [ws] paramlist] ":" [ws]
classvalue CRLF classvalue CRLF
classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / x-token classvalue = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / x-token
;Default is PUBLIC ;Default is PUBLIC
The following is an example of this property: The following is an example of this property:
CLASS:PUBLIC CLASS:PUBLIC
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.5 Comment Dawson/Stenerson 42 Expires MAY 1998
4.6.5 Comment
This property is identified by the property name COMMENT. This This property is identified by the property name COMMENT. This
property specifies non-processing information intended to provide a property specifies non-processing information intended to provide a
comment to the calendar user. The property may be specified in any of comment to the calendar user. The property MAY be specified in any of
the calendar components. The property may be specified multiple the calendar components. The property MAY be specified multiple
times. times.
The property is defined by the following notation: The property is defined by the following notation:
comment = "COMMENT" ":" text CRLF comment = "COMMENT" ":" [ws] text CRLF
The following is an example of this property: 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
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.
5.6.6 Date/Time Completed 4.6.6 Contact
This property is defined by the property name CONTACT. The property
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 URL to
the contact information.
The property is defined by the following notation:
contact = "CONTACT" [";" [ws] paramlist] ":" [ws]
text / url CRLF
The following is an example of this property referencing textual
contact information:
CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234
The following is an example of this property referencing a LDAP URL
to a directory entry containing the contact information:
CONTACT;VALUE=URL:"ldap://host.com:6666/o=3DABC%20Industries,
c=3DUS??(cn=3DBJim%20Dolittle)"
The following is an example of this property referencing a MIME body
part containing the contact information, such as a vCard embedded in
a [MIME-DIR] content-type:
CONTACT;VALUE=URL:<part3.msg970930T083000SILVER@host.com>
Dawson/Stenerson 43 Expires MAY 1998
The default data type for this property is TEXT. The data type MAY be
reset to URL in order to specify a reference to the contact
information.
4.6.7 Date/Time Completed
This property is identified by the property name COMPLETED. This This property is identified by the property name COMPLETED. This
property defines the date and time that a to-do was actually property defines the date and time that a to-do was actually
completed. The property may be specified once in a to-do component. completed. The property MAY be specified once in a "VTODO" component.
The date and time is a UTC value. The date and time is an UTC value.
The property is defined by the following notation: The property is defined by the following notation:
completed = "COMPLETED" ":" date-time CRLF completed = "COMPLETED" ":" [ws] date-time CRLF
Dawson/Stenerson 37 Expires January 1998
The following is an example of this property: The following is an example of this property:
COMPLETED:19960401T235959Z COMPLETED:19960401T235959Z
This property is optional for MIME entities conforming to this The data type for this property is DATE-TIME.
content type. The data type for this property is DATE-TIME.
5.6.7 Date/Time Created 4.6.8 Date/Time Created
This property is identified by the property name CREATED. This This property is identified by the property name CREATED. This
property specifies the date and time that the calendar information property specifies the date and time that the calendar information
was created. The property may be specified in any of the calendar was created by the Organizer. The property MAY be specified in any of
components. The property may only be specified once. The date and the calendar components. The property MAY only be specified once. The
time is an UTC value. date and time is an UTC value.
The property is defined by the following notation: The property is defined by the following notation:
created = "CREATED" ":" date-time CRLF created = "CREATED" ":" [ws] date-time CRLF
The following is an example of this property: The following is an example of this property:
CREATED:19960329T133000Z CREATED:19960329T133000Z
The data type for this property is DATE-TIME. The data type for this property is DATE-TIME.
5.6.8 Date/Time Due 4.6.9 Date/Time Due
This property is identified by the property name DUE. This property This property is identified by the property name DUE. This property
defines the date and time that a to-do is expected to be completed. defines the date and time that a to-do is expected to be completed.
The value must be later in time than the value for the DTSTART The time can either be in local time, local time with UTC offset or
property. The time can either be in local time, local time with UTC UTC time. The property MAY only be specified in a "VTODO" calendar
offset or UTC time. The property must be specified in a to-do component and only once. The value MUST be a date/time after the
calendar component, but may only be specified once. The DUE value DTSTART value, if specified.
must be a date/time after the DTSTART value.
The property is defined by the following notation: The property is defined by the following notation:
due = "DUE" ":" (date-time / duration) CRLF due = "DUE" ":" [ws] date-time CRLF
;Value data type must match the value
The following is an example of this property: The following is an example of this property:
Dawson/Stenerson 44 Expires MAY 1998
DUE:19960401T235959Z DUE:19960401T235959Z
The default data type for this property is DATE-TIME. The data type The type for this property is DATE-TIME.
may be reset to DURATION.
5.6.9 Date/Time End 4.6.10 Date/Time End
This property is identified by the property name DTEND. This property This property is identified by the property name DTEND. This property
may be specified within the event, free/busy, and time zone calendar MAY be specified within the "VEVENT", "VFREEBUSY", and "VTIMEZONE"
components. calendar components.
Within the event calendar component, this property defines the end Within the "VEVENT" calendar component, this property defines the end
date and time for the event. The property is required in event date and time for the event. The property is REQUIRED in "VEVENT"
calendar components. The time can either be in local time, local time calendar components. The time can either be in local time, local time
Dawson/Stenerson 38 Expires January 1998
with UTC offset or UTC time. The local time is only to be used to with UTC offset or UTC time. The local time is only to be used to
specify date and time values that do not need to be fixed. A 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 recipient MUST assume their own time zone for data and time values
that do not include time zone information. Events may have an end that do not include time zone information. The value MUST be later in
date/time but no start date/time. In that case, the event does not time than the value of the "DTSTART" property.
take up any time. The value must be later in time than the value of
the DTSTART property.
Within the free/busy calendar component, this property defines the Within the "VFREEBUSY" calendar component, this property defines the
end date and time for the free or busy time information. The time 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 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. value MUST be later in time than the value of the "DTSTART" property.
The property is defined by the following notation: The property is defined by the following notation:
dtend = "DTEND" ":" date-time CRLF dtend = "DTEND" ":" [ws] date-time CRLF
The following is an example of this property: The following is an example of this property:
DTEND:19960401T235959Z DTEND:19960401T235959Z
The data type for this property is DATE-TIME. The data type for this property is DATE-TIME.
5.6.10 Date/Time Stamp 4.6.11 Date/Time Stamp
This property is identified by the property name DTSTAMP. This This property is identified by the property name DTSTAMP. This
property specifies an UTC date/time stamp. The property indicates the property specifies an UTC date/time stamp. The property indicates the
date/time that the iCalendar object instance was created. This date/time that the iCalendar object instance was created. This
property SHOULD be included in every iCalendar object to permit the property MUST be included in "VEVENT", "VTODO", "VJOURNAL" and
recipient to know when the iCalendar object was created. "VFREEBUSY" calendar components to permit the recipient to know when
the iCalendar object was created.
This property is different than the CREATED and LAST-MODIFIED This property is also useful to protocols such as [IMIP] that have
inherent latency issues with the delivery of content. This property
will assist in the proper sequencing of messages containing iCalendar
objects.
This property is different than the "CREATED" and "LAST-MODIFIED"
properties. These two properties are used to specify when the properties. These two properties are used to specify when the
calendar service information was created and last modified. This is calendar service information was created and last modified. This is
different than when the iCalendar object representation of the different than when the iCalendar object representation of the
calendar service information was created or last modified. calendar service information was created or last modified.
Dawson/Stenerson 45 Expires MAY 1998
The property is defined by the following notation: The property is defined by the following notation:
dtstamp = "DTSTAMP" ":" date-time CRLF dtstamp = "DTSTAMP" ":" [ws] date-time CRLF
The value type for this property is DATE-TIME. The value must be a The value type for this property is DATE-TIME. The value MUST be a
UTC date/time value. UTC date/time value.
5.6.11 Date/Time Start 4.6.12 Date/Time Start
This property is identified by the property name DTSTART. This This property is identified by the property name DTSTART. This
property may be specified within the event, free/busy, and time zone property MAY be specified within the "VEVENT", "VFREEBUSY", and
calendar components. "VTIMEZONE" calendar components.
Within the event calendar component, this property defines the start
date and time for the event. The property is required in event
calendar components. The time can either be in local time, local time
with UTC offset or UTC time. The local time is only to be 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
Dawson/Stenerson 39 Expires January 1998 Within the "VEVENT" calendar component, this property defines the
that do not include time zone information. Events may have a start start date and time for the event. The property is REQUIRED in
"VEVENT" calendar components. The time can either be in local time,
local time with UTC offset or UTC time. The local time is only to be
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 date/time but no end date/time. In that case, the event does not take
up any time. up any time.
Within the free/busy calendar component, this property defines the Within the "VFREEBUSY" calendar component, this property defines the
start date and time for the free or busy time information. The time 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. MUST be specified in local time with UTC offset or UTC time.
Within the time zone calendar component, this property defines the Within the "VTIMEZONE" calendar component, this property defines the
effective start date and time for a time zone specification. This effective start date and time for a time zone specification. This
property is required within time zone calendar components. The time property is REQUIRED within "VTIMEZONE" calendar components. The time
must be specified as a UTC time. MUST be specified as a UTC time.
The property is defined by the following notation: The property is defined by the following notation:
dtstart = "DTSTART" ":" (date-time / date) CRLF dtstart = "DTSTART" [";" [ws] paramlist] ":" [ws] (date-time /
;Date data type only permitted on Journal calendar component. date) CRLF
The following is an example of this property: The following is an example of this property:
DTSTART:19960401T235959-0600 DTSTART:19960401T235959-0600
The default data type for this property is DATE-TIME. For Journal The default data type for this property is DATE-TIME. The data type
calendar components, the data type may be overriden to be DATE. MAY be overridden to be DATE.
5.6.12 Daylight 4.6.13 Daylight
This property is identified by the property name DAYLIGHT. This This property is identified by the property name DAYLIGHT. This
property may only be specified in a Time Zone Calendar Component. property MAY only be specified in a "VTIMEZONE" calendar component.
This property specifies whether Daylight Saving Time (i.e., value is This property specifies whether Daylight Saving Time (i.e., value is
TRUE) or Standard Time (i.e., value is FALSE) is in effect for the TRUE) or Standard Time (i.e., value is FALSE) is in effect for the
time zone. The default value is FALSE or Standard Time. time zone. The default value is FALSE or Standard Time.
The property is defined by the following notation: The property is defined by the following notation:
daylight = "DAYLIGHT" ":" boolean CRLF Dawson/Stenerson 46 Expires MAY 1998
daylight = "DAYLIGHT" ":" [ws] boolean CRLF
;Default value is FALSE ;Default value is FALSE
The following is an example of this property: The following is an example of this property:
DAYLIGHT:TRUE ;Specifies DST in effect in time zone DAYLIGHT:TRUE ;Specifies DST in effect in time zone
The data type for this property is BOOLEAN. The data type for this property is BOOLEAN.
5.6.13 Description 4.6.14 Description
This property is identified by the property name DESCRIPTION. This This property is identified by the property name DESCRIPTION. This
property provides a more complete description of the calendar property provides a more complete description of the calendar
component, than that provided by the SUMMARY property. The property component, than that provided by the "SUMMARY" property. The property
must be specified in the event, to-do and journal calendar MAY be specified in the "VEVENT", "VTODO" and "VJOURNAL" calendar
components. The property may be specified multiple times only within components. The property MAY be specified multiple times only within
a journal calendar component. a "VJOURNAL" calendar component.
The property is defined by the following notation: The property is defined by the following notation:
Dawson/Stenerson 40 Expires January 1998 Description = "DESCRIPTION" [";" [ws] paramlist] ":" [ws]
Description = "DESCRIPTION" [";" paramlist] ":"
text CRLF text CRLF
The following is an example of the property with formatted line The following is an example of the property with formatted line
breaks in the property value: breaks in the property value:
DESCRIPTION;ENCODING=Q:Meeting_to_provide_technical_ DESCRIPTION:Meeting to provide technical review for "Phoenix"
review_for_"Phoenix"_design.=0D=0A design.\n Happy Face Conference Room. Phoenix design team
Happy_Face_Conference_Room._Phoenix_design_team MUST attend this meeting.\n RSVP to team leader.
_must_attend_this_meeting._RSVP_to_team_leader.
The following is an example of the property with folding of long The following is an example of the property with folding of long
lines: lines:
DESCRIPTION:Last draft of the new novel is to be completed DESCRIPTION:Last draft of the new novel is to be completed
for the editor’s proof today. for the editor’s proof today.
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.14 Duration 4.6.15 Duration
This property is identified by the property name DURATION. The This property is identified by the property name DURATION. The
property specifies a duration of time. The property may be specified property specifies a duration of time. The property MAY be specified
in an event calendar component in order to specify a duration of the in a "VEVENT" calendar component in order to specify a duration of
event, instead of an explicit end date/time. The property may be the event, instead of an explicit end date/time. The property MAY be
specified in a free/busy calendar component in order to specify the specified in a "VTODO" calendar component in order to specify a
amount of free time being requested. The property may be specified in duration for the to-do. The property MAY be specified in a
an alarm calendar component in order to specify the period between "VFREEBUSY" calendar component in order to specify the amount of free
repeating alarms. 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: The property is defined by the following notation:
duration = "DURATION" ":" duration CRLF Dawson/Stenerson 47 Expires MAY 1998
duration = "DURATION" ":" [ws] duration CRLF
The following is an example of this property that specifies an The following is an example of this property that specifies an
interval of time of 1 hour and zero minutes and zero seconds: interval of time of 1 hour and zero minutes and zero seconds:
DURATION:PT1H0M0S DURATION:PT1H0M0S
The following is an example of this property that specifies an The following is an example of this property that specifies an
interval of time of 15 minutes. interval of time of 15 minutes.
DURATION:PT15M DURATION:PT15M
The data type for this property is DURATION. The data type for this property is DURATION.
5.6.15 Exception Date/Times 4.6.16 Exception Date/Times
This property is identified by the property name EXDATE. This This property is identified by the property name EXDATE. This
property defines the list of date/time exceptions for a recurring property defines the list of date/time exceptions for a recurring
event or to-do component. The times can either be in local time, "VEVENT", "VTODO" or "VJOURNAL" calendar component. The times can
local time with UTC offset or UTC time. either be in local time, local time with UTC offset or UTC time.
The exception dates, if specified, is used in computing the
recurrence set. The recurrence set is the complete set of recurrence
instances for a calendar component. The recurrence set is generated
by considering the initial "DTSTART" property along with the "RRULE",
"RDATE", "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 property is defined by the following notation: The property is defined by the following notation:
Dawson/Stenerson 41 Expires January 1998 exdate = "EXDATE" [";" [ws] paramlist] ":" [ws] [date-time /
exdate = "EXDATE" ":" date-time *["," date-time] date] *("," [ws] date-time/date) CRLF
CRLF ;Values MUST match the specified value type.
The following is an example of this property: The following is an example of this property:
EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z
The data type for this property is DATE-TIME. The data type for this property is DATE-TIME. The data type MAY be
reset to DATE.
5.6.16 Exception Rule Dawson/Stenerson 48 Expires MAY 1998
4.6.17 Exception Rule
This property is identified by the property name EXRULE. This This property is identified by the property name EXRULE. This
property defines a rule or repeating pattern for an exception to a property defines a rule or repeating pattern for an exception to a
recurring event or to-do. This property may only be specified in the recurrence set. This property MAY only be specified in the "VEVENT",
event and to-do calendar components. "VTODO" or "VJOURNAL" calendar components.
This property is defined by the same property values and parameters The exception rule, if specified, is used in computing the recurrence
as specified for the RRULE property. The property is defined by the set. The recurrence set is the complete set of recurrence instances
following notation: 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" 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.
exrule = "EXRULE" [";" paramlist] ":" rvalue CRLF The property is defined by the following notation:
exrule = "EXRULE" [";" [ws] paramlist] ":" [ws] recur CRLF
The following are examples of this property. Except every other week, The following are examples of this property. Except every other week,
on Tuesday and Thursday for 4 occurrences: on Tuesday and Thursday for 4 occurrences:
EXRULE:COUNT=4;INTERVAL=2;BYDAY=TU,TH;FREQ=WEEKLY EXRULE:FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,TH
Except daily for 10 occurrences: Except daily for 10 occurrences:
EXRULE:COUNT=10;FREQ=DAILY EXRULE:FREQ=DAILY;COUNT=10
Except yearly in June and July for 8 occurrences: Except yearly in June and July for 8 occurrences:
EXRULE:COUNT=8;BYMONTH=6,7;FREQ=YEARLY EXRULE:FREQ=YEARLY;COUNT=8;BYMONTH=6,7
The data type for this property is TEXT. The data type for this property is RECUR.
5.6.17 Free/Busy Time 4.6.18 Free/Busy Time
This property is identified by the property name FREEBUSY. The This property is identified by the property name FREEBUSY. The
property defines one or more free or busy time intervals. These time 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 periods MAY be specified as either a start and end date-time or a
start date-time and duration. start date-time and duration.
Dawson/Stenerson 49 Expires MAY 1998
The date and time is either local time with UTC offset or a UTC The date and time is either local time with UTC offset or a UTC
value. value.
The FREEBUSY property may include the TYPE property parameter to The "FREEBUSY" property MAY include the "TYPE" property parameter to
specify the information defines a free or busy time interval. The specify whether the information defines a free or busy time interval.
property may also include the STATUS property parameter to specify The default "TYPE" property parameter value is BUSY. The property MAY
the type of busy time. The STATUS parameter may be utilized by the also include the "STATUS" property parameter to provide added
application reading the busy time information in order to provide a information about the busy time. For example, if the busy time is
richer view of the information. associated with a time interval that would be unavailable for
scheduling - - in any case - - or busy time that has been tentatively
The property is defined by the following notation: scheduled. The default "STATUS" property parameter value is BUSY. The
property is defined by the following notation:
Dawson/Stenerson 42 Expires January 1998 freebusy = "FREEBUSY" [";" [ws] paramlist] [";" [ws] fbparmlist]
freebusy = "FREEBUSY" [";" fbparmlist] ":" fbvalue ":" [ws] fbvalue CRLF
CRLF
fbparmlist = fbparam / paramlist ";" fbparam fbparmlist = fbparam *(";" [ws] fbparam)
/ fbparam ";" fbparmlist
fbparam = fbtype / fbstatus fbparam = fbtype / fbstatus
fbtype = "TYPE" "=" ("FREE" or "BUSY") fbtype = "TYPE" "=" ("FREE" or "BUSY")
;Default is BUSY ;Default is BUSY
fbstatus = "STATUS" "=" fbstatus = "STATUS" "="
"BUSY" ;Represents busy time interval "BUSY" ;Represents busy time interval.
/ "OUT" ;Represents out-of-office, non-working / "UNAVAILABLE" ;Represents busy, but unavailable
;hours, or other unavailable interval ;interval for cheduling; such as
/ "PRIVATE" ;Represents private unavailable time ;out-of-office or non-working hours.
/ "CONFIDENTIAL" ;Represents confidential unavailable / "TENTATIVE" ;Represents busy, but tentatively
;time ;scheduled interval.
;Default is BUSY ;Default is BUSY
fbvalue = period *["," period] fbvalue = period *["," [ws] period]
;Value must match default or explicit data type ;Value MUST match default or explicit data type
The following are some examples of this property: The following are some examples of this property:
FREEBUSY;STATUS=OUT:19970308T160000Z/PT8H30M FREEBUSY;STATUS=UNAVAILABLE:19970308T160000Z/PT8H30M
FREEBUSY;TYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H FREEBUSY;TYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
FREEBUSY properties within the Free/Busy Calendar Component should be "FREEBUSY" properties within the "VFREEBUSY" calendar component
sorted in ascending order, based on start time and then end time, should be sorted in ascending order, based on start time and then end
with the earliest periods first. time, with the earliest periods first.
The FREEBUSY property may specify more than one value, separated by The "FREEBUSY" property MAY specify more than one value, separated by
the COMMA character (ASCII decimal 44). In such cases, the FREEBUSY the COMMA character (ASCII decimal 44). In such cases, the "FREEBUSY"
property values should all be of the same STATUS (e.g., all values of property values should all be of the same "STATUS" property parameter
a particular STATUS listed together in a single property). type (e.g., all values of a particular "STATUS" listed together in a
single property).
The data type for this property is PERIOD. The data type for this property is PERIOD.
5.6.18 Geographic Position Dawson/Stenerson 50 Expires MAY 1998
4.6.19 Geographic Position
This property is identified by the property name GEO. This property This property is identified by the property name GEO. This property
specifies information related to the global position for an event or specifies information related to the global position for a "VEVENT"
to-do calendar component. The property value specifies latitude and or "VTODO" calendar component. The property value specifies latitude
longitude, in that order (i.e., "LAT LON" ordering). The longitude and longitude, in that order (i.e., "LAT LON" ordering). The
represents the location east and west of the prime meridian as a longitude represents the location east and west of the prime meridian
positive or negative real number, respectively. The latitude as a positive or negative real number, respectively. The latitude
represents the location north and south of the equator as a positive represents the location north and south of the equator as a positive
or negative real number, respectively. The longitude and latitude or negative real number, respectively. The longitude and latitude
values must be specified as decimal degrees and should be specified values MUST be specified as decimal degrees and should be specified
to six decimal places. This will allow for granularity within a meter to six decimal places. This will allow for granularity within a meter
of the geographical position. The simple formula for converting of the geographical position. The simple formula for converting
degrees-minutes-seconds into decimal degrees is: degrees-minutes-seconds into decimal degrees is:
decimal = degrees + minutes/60 + seconds/3600. decimal = degrees + minutes/60 + seconds/3600.
Dawson/Stenerson 43 Expires January 1998
The property is defined by the following notation: The property is defined by the following notation:
geo = "GEO" ":" geovalue CRLF geo = "GEO" ":" [ws] geovalue CRLF
geovalue = float ";" float geovalue = float ";" [ws] float
;Latitude and Longitude components ;Latitude and Longitude components
The following is an example of this property: The following is an example of this property:
GEO:37.386013;-122.082932 GEO:37.386013;-122.082932
The default data type for this property is FLOAT. The default data type for this property is FLOAT.
5.6.19 Last Modified 4.6.20 Last Modified
This property is identified by the property name LAST-MODIFIED. The This property is identified by the property name LAST-MODIFIED. The
property specifies the date and time that the calendar information property specifies the date and time that the calendar information
was last revised. The property value may include multiple "date-time" was last revised. This property MAY be specified in the "VEVENT",
values in order to capture the sequence of modifications made to the "VTODO", "VJOURNAL" or "VFREEBUSY" calendar components. The data and
calendar information. This property may be specified in the event, time MUST be a UTC value.
to-do, journal or free/busy calendar components. The data and time
must be a UTC value.
The property is defined by the following notation: The property is defined by the following notation:
last-mod = "LAST-MODIFIED" ":" date-time ["," date-time] last-mod = "LAST-MODIFIED" ":" [ws] date-time CRLF
CRLF
The following is are examples of this property: The following is are examples of this property:
LAST-MODIFIED:19960817T133000Z LAST-MODIFIED:19960817T133000Z
LAST-MODIFIED:19970104T083000-0500,19970403T090000-0500,
19970901T133000-0400
The data type for this property is DATE-TIME. The data type for this property is DATE-TIME.
5.6.20 Location 4.6.21 Location
This property is identified by the property name LOCATION. The This property is identified by the property name LOCATION. The
property defines the intended location for the event or to-do property defines the intended location for the "VEVENT" or "VTODO"
calendar component. The property may only be specified within an
event or to-do calendar component. Dawson/Stenerson 51 Expires MAY 1998
calendar component. The property MAY only be specified within a
"VEVENT" or "VTODO" calendar component.
The property is defined by the following notation: The property is defined by the following notation:
location = "LOCATION [";" paramlist] ":" locavalue location = "LOCATION [";" [ws] paramlist] ":" [ws] locavalue
CRLF CRLF
locavalue = text / url ;The value must be the same type as the locavalue = text / url ;The value MUST be the same type as the
;default or explicit data type. ;default or explicit data type.
The following are some examples of this property: The following are some examples of this property:
LOCATION:Conference Room - F123, Bldg. 002 LOCATION:Conference Room - F123, Bldg. 002
Dawson/Stenerson 44 Expires January 1998
LOCATION;VALUE=URL:http://www.xyzcorp.com/~jsmith.vcf LOCATION;VALUE=URL:http://www.xyzcorp.com/~jsmith.vcf
The default data type for this property is TEXT. The data type may be The default data type for this property is TEXT. The data type MAY be
reset to URL. In the case of the data type being URL, the property reset to URL. In the case of the data type being URL, the property
value may reference a vCard object. This provides a useful mechanism value MAY reference a vCard object. This provides a useful mechanism
to specify a location in terms of its electronic business card. to specify a location in terms of its electronic business card.
5.6.21 Priority 4.6.22 Percent Complete
This property is identified by the property name PERCENT-COMPLETE.
This property is used by an assignee or delegatee of a to-do to
convey the percent completion of a to-do to the Organizer. The
property MAY only be specified once and within a "VTODO" calendar
component. The property value is an 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.
When a to-do is assigned to multiple individuals, the property value
indicates the percent complete for that portion of the to-do assigned
to the assignee or delegatee. For example, if a to-do is assigned to
both individuals "A" and "B". A reply from "A" with a percent
complete of "70" indicates that "A" has completed 70% of the to-do
assigned to them. A reply from "B" with a percent complete of "50"
indicates "B" has completed 50% of the to-do assigned to them.
The property is defined by the following notation:
percent = "PERCENT-COMPLETE" ":" [ws] integer CRLF
The following is an example of this property to show 39% completion:
PERCENT-COMPLETE:39
The data type for this property is INTEGER.
Dawson/Stenerson 52 Expires MAY 1998
4.6.23 Priority
This property is identified by the property name PRIORITY. The This property is identified by the property name PRIORITY. The
property defines the priority for event or to-do. The property may property defines the priority for event or to-do. The property MAY
only be specified within an event or to-do calendar component. The only be specified within a "VEVENT" or "VTODO" calendar component.
value is an integer. A value of zero (ASCII decimal 48) specifies an The value is an integer. A value of zero (ASCII decimal 48) specifies
undefined priority. A value of one (ASCII decimal 49) is the highest an undefined priority. A value of one (ASCII decimal 49) is the
priority. A value of two (ASCII decimal 50) is the second highest highest priority. A value of two (ASCII decimal 50) is the second
priority. Subsequent numbers specify a decreasing ordinal priority. highest priority. Subsequent numbers specify a decreasing ordinal
priority.
The property is specified by the following notation: The property is specified by the following notation:
priority = "PRIORITY" ":" integer CRLF priority = "PRIORITY" ":" [ws] integer CRLF
;Default is zero ;Default is zero
The following is an example of this property: The following is an example of this property:
PRIORITY:2 PRIORITY:2
The data type for this property is INTEGER. The data type for this property is INTEGER.
5.6.22 Recurrence Date/Times 4.6.24 Recurrence Date/Times
This property is identified by the property name RDATE. This property This property is identified by the property name RDATE. This property
defines the list of date/times for a recurring event, to-do or time defines the list of date/times for a recurrence set. The property MAY
zone calendar component. This property may appear along with the only appear within the "VEVENT", "VTODO", "VJOURNAL" or "VTIMEZONE"
RRULE property to define an aggregate set of repeating occurrences. calendar components. This property MAY appear along with the "RRULE"
When they both appear in an iCalendar object, the recurring events property to define an aggregate set of repeating occurrences. When
are defined by the union of occurrences defined by both the RDATE and they both appear in an iCalendar object, the recurring events are
RRULE. The times can either be in local time, local time with UTC defined by the union of occurrences defined by both the "RDATE" and
offset or UTC based time. If local time is used, the TIMEZONE "RRULE". The times can either be in local time, local time with UTC
component must be included in the iCalendar object, otherwise the offset or UTC based time. If local time is used, the "VTIMEZONE"
local time value will be interpreted relative to the time zone of the calendar component MUST be included in the iCalendar object,
recipient. The period values for RDATE are specified using a specific otherwise the local time value will be interpreted relative to the
start and a specific end basic format (period-explicit) or the period time zone of the recipient. The period values for "RDATE" property
with a specific start and a specific duration basic format (period- are specified using a specific start and a specific end basic format
start). (period-explicit) or the period with a specific start and a specific
duration basic format (period-start).
The recurrence dates, if specified, is used in computing the
recurrence set. The recurrence set is the complete set of recurrence
instances for a calendar component. The recurrence set is generated
by considering the initial "DTSTART" property along with the "RRULE",
"RDATE", "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
Dawson/Stenerson 53 Expires MAY 1998
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 property is defined by the following notation: The property is defined by the following notation:
rdate = "RDATE" ":" rdvalue *["," rdvalue] CRLF rdate = "RDATE" [";" [ws] paramlist] ":" [ws] rdvalue
*("," [ws] rdvalue) CRLF
rdvalue = date-time / period rdvalue = date-time / date / period
;Value must match the default or explicit data type ;Value MUST match the specified data type
The following are examples of this property: The following are examples of this property:
RDATE:19970714T083000-0400 RDATE:19970714T083000-0400
Dawson/Stenerson 45 Expires January 1998
RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z, RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,
19960404T010000Z/PT3H 19960404T010000Z/PT3H
RDATE;VALUE=DATE:19970101,19970120,19970217,19970421 RDATE;VALUE=DATE:19970101,19970120,19970217,19970421
19970526,19970704,19970901,19971014,19971128,19971129,19971225 19970526,19970704,19970901,19971014,19971128,19971129,19971225
The default data type for this property is DATE-TIME. The value may The default data type for this property is DATE-TIME. The data type
be reset to DATE or PERIOD. MAY be reset to DATE or PERIOD.
5.6.23 Recurrence ID 4.6.25 Recurrence ID
This property is identified by the property name RECURRENCE-ID. This This property is identified by the property name RECURRENCE-ID. This
property identifies a specific instance of a recurring event, to-do property identifies a specific instance of a recurring "VEVENT",
or journal calendar component. The property value is the effective "VTODO" or "VJOURNAL" calendar component. The property value is the
DTSTART value of the recurrence instance. The time of day component effective value of the "DTSTART" property of the recurrence instance.
for the value must be either an UTC or a local time with UTC offset The time of day component for the value MUST be either an UTC or a
time format, unless the original calendar object was expressed as a local time with UTC offset time format, unless the original calendar
‘ ‘floating’ ’ calendar object; that is in local time with no timezone object was expressed as a ‘ ‘floating’ ’ calendar object; that is in
calendar component specified.. local time with no time zone calendar component specified. If the
value of the "DTSTART" property is a DATE type value, then the value
MUST be the calendar date for the recurrence instance.
The date/time value is set to the time when the original recurrence The date/time value is set to the time when the original recurrence
instance would occur - - meaning that if the intent is to change a instance would occur - - meaning that if the intent is to change a
Friday meeting to Thursday, the date/time is still set to the Friday meeting to Thursday, the date/time is still set to the
original Friday meeting. original Friday meeting.
Recurrence ID is used in conjunction with the UID property to The "RECURRENCE-ID" property is used in conjunction with the "UID"
identify a particular instance of a recurring event, to-do or property to identify a particular instance of a recurring event, to-
journal. do or journal.
The property is defined by the following notation: The property is defined by the following notation:
recurid = "RECURRENCE-ID" [";" rangeparm] ":" date-time recurid = "RECURRENCE-ID" [";" [ws] rangeparm] [";" [ws]
paramlist] ":" [ws] [date-time / date]
Dawson/Stenerson 54 Expires MAY 1998
rangeparm = "RANGE" "=" ("THISANDPRIOR" / "THISANDFUTURE") rangeparm = "RANGE" "=" ("THISANDPRIOR" / "THISANDFUTURE")
The default value for the range parameter is the single recurrence The default value for the range parameter is the single recurrence
instance only. instance only.
The following are examples of this property: The following are examples of this property:
RECURRENCE-ID:19960401T235959Z RECURRENCE-ID:19960401T235959Z
RECURRENCE-ID;RANGE=THISANDFUTURE:19960120T120000Z RECURRENCE-ID;RANGE=THISANDFUTURE:19960120T120000Z
5.6.24 Recurrence Rule This default data type for this property is DATE-TIME. The data type
MAY be reset to DATE.
4.6.26 Recurrence Rule
This property is identified by the property name RRULE. This property This property is identified by the property name RRULE. This property
defines a rule or repeating pattern for a recurring events, to-dos, defines a rule or repeating pattern for a recurring events, to-dos,
or time zone definitions. The property may be specified in the event, or time zone definitions. The property MAY be specified in the
to-do, or time zone calendar components. "VEVENT", "VTODO", "VJOURNAL" or "VTIMEZONE" calendar components. The
data type for this property is RECUR.
The property value is a structured value consisting of a list of one The recurring rule, if specified, is used in computing the recurrence
or more recurrence grammar components. Each component is defined by a set. The recurrence set is the complete set of recurrence instances
NAME=VALUE pair. The components are separated from each other by the for a calendar component. The recurrence set is generated by
SEMICOLON character (ASCII decimal 59). 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.
Dawson/Stenerson 46 Expires January 1998 The "DTSTART" and "DTEND" property pair or "DTSTART" and "DURATION"
The FREQ component identifies the type of recurrence rule. This property pair, specified within the iCalendar object defines the
component must be specified in the recurrence rule. Valid values first instance of the recurrence. When used with a recurrence rule,
include HOURLY, to specify repeating events based on an interval of the "DTSTART" and "DTEND" properties MUST be specified in local time
an hour or more; DAILY, to specify repeating events based on an and the appropriate set of "VTIMEZONE" calendar components MUST be
interval of a day or more; WEEKLY, to specify repeating events based included. For detail on the usage of the "VTIMEZONE" calendar
on an interval of a week or more; MONTHLY, to specify repeating component, see the "VTIMEZONE" calendar component definition.
events based on an interval of a month or more; and YEARLY, to
specify repeating events based on an interval of a year or more.
The INTERVAL component contains a positive integer representing how Any duration associated with the iCalendar object applies to all
often the RRULE repeats. The default value is "1" or every hour for a members of the generated recurrence. Any modified duration for
HOURLY rule, every day for a DAILY rule, every week for a WEEKLY specific recurrences would have to be explicitly specified using the
rule, every month for a MONTHLY rule and every year for a YEARLY "RDATE" property.
rule. For a HOURLY rule, the value may also be expressed as a
duration value, specifying hours and minutes for the repeat interval.
For example, PT1H30M, would represent a 1 hour and 30 minute repeat
interval.
The UNTIL component defines a date-time value which bounds the RRULE. Dawson/Stenerson 55 Expires MAY 1998
If not present, and the COUNT component is also not present, the This property is defined by the following notation:
RRULE is considered to repeat forever.
The COUNT component defines the number of occurrences at which to rrule = "RRULE" [";" [ws] paramlist] ":" [ws] recur CRLF
bound the RRULE. This component is ignored if the UNTIL property
parameter is also present.
The BYDAY component specifies a COMMA character (ASCII decimal 44) Examples of this property include the following. All examples assume
separated list of days of the week; MO, indicates Monday; TU, the Eastern United States time zone.
indicates Tuesday; WE, indicates Wednesday; TH, indicates Thursday;
FR, indicates Friday; SA, indicates Saturday; SU, indicates Sunday.
Each of these values may also be preceded by a positive (+n) or Daily for 10 occurrences:
negative (-n) integer. If present, this indicates the nth occurrence
of the specific day within the MONTHLY or YEARLY RRULE. For example,
within a MONTHLY rule, +1MO (or simply 1MO) represents the first
Monday within the month, whereas -1MO represents the last Monday of
the month.
The BYMONTHDAY component specifies a COMMA character (ASCII decimal DTSTART:19970902T090000-0400
44) separated list of days of the month. Valid values are 1 to 31 or RRULE:FREQ=DAILY;COUNT=10
-31 to -1.
The BYYEARDAY component specifies a COMMA character (ASCII decimal ==> (1997 9AM EDT)September 2-11
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
(December 31st).
The BYSETPOS component specifies a COMMA character (ASCII decimal 44) Daily until 12/24/97:
separated list of values which corresponds to the nth occurrence
within the set of events specified by the rule. Valid values are 1 to
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
be represented as:
RRULE:BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1;FREQ=MONTHLY DTSTART:19970902T090000-0400
RRULE:FREQ=DAILY;UNTIL=19971224T000000Z
Dawson/Stenerson 47 Expires January 1998 ==> (1997 9AM EDT)September 2-30;October 1-25
The BYWEEKNO component specifies a comma separated list of weeks of (1997 9AM EST)October 26-31;November 1-30;December 1-24
the year. Valid values are 1 to 52. This corresponds to weeks
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
and identified by its ordinal number within the year; the first
calendar week of the year is the one that includes the first Thursday
of that year." This property parameter is only valid for YEARLY
rules.
The BYMONTH component specifies a comma separated list of months of Every other day - forever:
the year. Valid values are 1 to 12.
The WKST property parameter specifies the day on which the workweek DTSTART:19970902T090000-0400
starts. Valid values are MO, TU, WE, TH, FR, SA and SU. This is RRULE:FREQ=DAILY;INTERVAL=2
significant when a WEEKLY RRULE has an interval greater than 1. The ==> (1997 9AM EDT)September2,4,6,8...24,26,28,30;
default value is MO. October 2,4,6...20,22,24
(1997 9AM EST)October 26,28,30;November 1,3,5,7...25,27,29;
Dec 1,3,...
If two different Byxxx components are specified within the RRULE, the Every 10 days, 5 occurrences:
recurrence occurrence must meet both criteria.
If Byxxx component values are found which are beyond the available DTSTART:19970902T090000-0400
scope (ie, BYMONTHDAY=-30 in February), they are simply ignored. If a RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5
positive range limit is beyond the available scope, it will be
interpreted as -1. Likewise, if a negative range limits beyond the
available scope, it will be interpreted as +1.
The RRULE property requires referencing the DTSTART, DTEND or ==> (1997 9AM EDT)September 2,12,22;October 2,12
DURATION properties in the iCalendar object to calculate the Event or
To-do instances.
The DTSTART and DTEND pair or DTSTART and DURATION pair, specified Everyday in January, for 3 years:
within the iCalendar object defines the first instance of the
recurrence. When used with a recurrence rule, the DTSTART and DTEND
properties must be specified in local time and the appropriate set of
TIMEZONE components must be included. For detail on the usage of the
TIMEZONE component, see the Time Zone Calendar Component definition.
Any duration associated with the iCalendar object applies to all DTSTART:19980101T090000-0400
members of the generated recurrence. Any modified duration for RRULE:FREQ=YEARLY;UNTIL:20000131T090000-0400;BYMONTH=1;BYDAY=SU,
specific recurrences would have to be explicitly specified using the MO,TU,WE,TH,FR,SA
RDATE property. or
RRULE:FREQ=DAILY;UNTIL:20000131T090000-0400;BYMONTH=1
This property is defined by the following notation: ==> (1998 9AM EDT)January 1-31
(1999 9AM EDT)January 1-31
(2000 9AM EDT)January 1-31
rrule = "RRULE" [paramlist] ":" rvalue CRLF Weekly for 10 occurrences
paramlist = param / paramlist ";" param DTSTART:19970902T090000-0400
RRULE:FREQ=WEEKLY;COUNT=10
rvalue = "FREQ" = freq Dawson/Stenerson 56 Expires MAY 1998
*("UNTIL" "=" enddate ==> (1997 9AM EDT)September 2,9,16,23,30;October 7,14,21
/ "COUNT" "=" interval (1997 9AM EST)October 28;November 4
/ "INTERVAL" "=" rinterval
/ "BYDAY" "=" bdweekdaylist
/ "BYMONTHDAY" "=" bmdaylist
/ "BYYEARDAY" "=" bydaylist
/ "BYSETPOS" "=" bsplist
/ "BYWEEKNO" "=" bwdaylist
Dawson/Stenerson 48 Expires January 1998 Weekly until 12/24/94
/ "BYMONTH" "=" bmlist
/ "WKST" "=" weekday
/ "X-" word "=" word)
freq = "HOURLY" / "DAILY" / "WEEKLY" / "YEARLY" DTSTART:19970902T090000-0400
RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z
rinterval = interval ; For any rvalue ==> (1997 9AM EDT)September 2,9,16,23,30;October 7,14,21
/ duration ; Only for rvalue = HOURLY (1997 9AM EST)October 28;November 4,11,18,25;
December 2,9,16,23,24
DIGIT =<any ASCII decimal digit> ;0-9 Every other week - forever:
digits = 1*DIGIT DTSTART:19970902T090000-0400
RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU
interval = digits ==> (1997 9AM EDT)September 2,16,30;October 14
(1997 9AM EST)October 28;November 11,25;December 9,23
(1998 9AM EST)January 6,20;February
...
enddate = date ;A UTC value Weekly on Tuesday and Thursday for 5 weeks:
plus = "+" DTSTART:19970902T090000-0400
RRULE:FREQ=WEEKLY;UNTIL=19971007T000000-0400;WKST=SU;BYDAY=TU,TH
or
RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH
minus = "-" ==> (1997 9AM EDT)September 2,4,9,11,16,18,23,25,30;October 2
ordmoday = 1*2digits ;1 to 31 Every other week on Monday, Wednesday and Friday until 12/24/97, but
starting on Tuesday, 9/2/97:
ordwk = 1*2digits ;1 to 52 DTSTART:19970902T090000-0400
RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000-0400;WKST=SU;
BYDAY=MO,WE,FR
==> (1997 9AM EDT)September 2,3,5,15,17,19,29;October 1,3,13,15,17
(1997 9AM EST)October 27,29,31;November 10,12,14,24,26,28;
December 8,10,12,22,24
ordyrday = 1*3digits ;1 to 366 Every other week on Tuesday and Thursday, for 8 occurrences:
daynumber = (plus / minus) ordmoday DTSTART:19970902T090000-0400
RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH
weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" ==> (1997 9AM EDT)September 2,4,16,18,30;October 2,14,16
;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
;FRIDAY, SATURDAY and SUNDAY days of the week.
bdweekdaynum = [daynumber] weekday Monthly on the 1st Friday for ten occurrences:
bdweekdaylist = bdweekdaynum / bdweekdaynum "," DTSTART:19970905T090000-0400
*(bdweekdaynum) RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
bmposday = [plus] ordmoday Dawson/Stenerson 57 Expires MAY 1998
==> (1997 9AM EDT)September 5;October 3
(1997 9AM EST)November 7;Dec 5
(1998 9AM EST)January 2;February 6;March 6;April 3
(1998 9AM EDT)MAY 1;June 5
bmnegday = minus ordmoday Monthly on the 1st Friday until 12/24/94:
bmdaylist = bmposday *("," bmposday / bmnegday) DTSTART:19970905T090000-0400
/ bmnegday *("," bmnegday / bmposday) RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR
byposday = [plus] ordyrday ==> (1997 9AM EDT)September 5;October 3
(1997 9AM EST)November 7;December 5
bynegday = minus ordyrday Every other month on the 1st and last Sunday of the month for 10
occurrences:
bydaylist = byposday *("," byposday / bynegday) DTSTART:19970907T090000-0400
/ bynegday *("," bynegday / byposday) RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU
bsplist = byposday *("," byposday / bynegday) ==> (1997 9AM EDT)September 7,28
/ bynegday *("," bynegday / byposday) (1997 9AM EST)November 2,30
(1998 9AM EST)January 4,25;March 1,29
(1998 9AM EDT)MAY 3,31
bwposday = [plus] ordwk Monthly on the second to last Monday of the month for 6 months:
Dawson/Stenerson 49 Expires January 1998 DTSTART:19970922T090000-0400
bwnegday = minus ordwk RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO
bwdaylist = bwposday *("," bwposday / bwnegday) ==> (1997 9AM EDT)September 22;October 20
/ bwnegday *("," bwnegday / bwposday) (1997 9AM EST)November 17;December 22
(1998 9AM EST)January 19;February 16
bmposmon = 1*2digits ;1 to 12 Monthly on the third to the last day of the month, forever:
bmlist = bmposmon *("," bmposmon) DTSTART:19970928T090000-0400
RRULE:FREQ=MONTHLY;BYMONTHDAY=-3
Examples of this property include the following. Daily for 10 ==> (1997 9AM EDT)September 28
occurrences: (1997 9AM EST)October 29;November 28;December 29
(1998 9AM EDT)January 29;February 26
...
RRULE:COUNT=10;FREQ=DAILY Monthly on the 2nd and 15th of the month for 10 occurrences:
Daily until 12/24/94: DTSTART:19970902T090000-0400
RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15
RRULE:UNTIL=19941224T000000Z;FREQ=DAILY ==> (1997 9AM EDT)September 2,15;October 2,15
(1997 9AM EST)November 2,15;December 2,15
(1998 9AM EST)January 2,15
Every other day - forever: Monthly on the first and last day of the month for 10 occurrences:
RRULE:INTERVAL=2;FREQ=DAILY Dawson/Stenerson 58 Expires MAY 1998
DTSTART:19970930T090000-0400
RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1
Every 10 days, 5 occurrences: ==> (1997 9AM EDT)September 30;October 1
(1997 9AM EST)October 31;November 1,30;December 1,31
(1998 9AM EST)January 1,31;February 1
RRULE:COUNT=5;INTERVAL=10;FREQ=DAILY Every 18 months on the 10th thru 15th of the month for 10
occurrences:
Weekly for 10 occurrences DTSTART:19970910T090000-0400
RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,
15
RRULE:COUNT=10;FREQ=WEEKLY ==> (1997 9AM EDT)September 10,11,12,13,14,15
(1999 9AM EST)March 10,11,12,13
Weekly until 12/24/94 Every Tuesday, every other month:
RRULE:UNTIL=19941224T000000Z;FREQ=WEEKLY DTSTART:19970902T090000-0400
RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU
Every other week - forever: ==> (1997 9AM EDT)September 2,9,16,23,30
(1997 9AM EST)November 4,11,18,25
(1998 9AM EST)January 6,13,20,27;March 3,10,17,24,31
...
RRULE:INTERVAL=2;WKST=SU;FREQ=WEEKLY Yearly in June and July for 10 occurrences:
Weekly on Tuesday and Thursday for 5 weeks: DTSTART:19970610T090000-0400
RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7
RRULE:INTERVAL=5;WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY ==> (1997 9AM EDT)June 10;July 10
(1998 9AM EDT)June 10;July 10
(1999 9AM EDT)June 10;July 10
(2000 9AM EDT)June 10;July 10
(2001 9AM EDT)June 10;July 10
Note: Since none of the BYDAY, BYMONTHDAY or BYYEARDAY components
are specified, the day is gotten from DTSTART
Every other week on Monday, Wednesday and Friday until 12/24/94: Every other year on January, February, and March for 10 occurrences:
RRULE:INTERVAL=2;WKST=SU;BYDAY=MO,WE,FR;=UNTIL=19941224T000000Z; DTSTART:19970310T090000-0400
FREQ=WEEKLY RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3
Every other week on Tuesday and Thursday, for 8 occurrences: ==> (1997 9AM EST)March 10
(1999 9AM EST)January 10;February 10;March 10
(2001 9AM EST)January 10;February 10;March 10
(2003 9AM EST)January 10;February 10;March 10
RRULE:INTERVAL=2;WKST=SU;COUNT=8;BYDAY=TU,TH;FREQ=WEEKLY Every 3rd year on the 1st, 100th and 200th day for 10 occurrences:
Monthly on the 1st Friday for ten occurrences: DTSTART:19970101T090000-0400
RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200
RRULE:COUNT=10;BYDAY=1FR;FREQ=MONTHLY Dawson/Stenerson 59 Expires MAY 1998
==> (1997 9AM EST)January 1
(1997 9AM EDT)April 10;July 19
(2000 9AM EST)January 1
(2000 9AM EDT)April 9;July 18
(2003 9AM EST)January 1
(2003 9AM EDT)April 10;July 19
(2006 9AM EST)January 1
Monthly on the 1st Friday until 12/24/94: Every 20th Monday of the year, forever:
Dawson/Stenerson 50 Expires January 1998 DTSTART:19970519T090000-0400
RRULE:UNTIL=19941224T000000Z;BYDAY=1FR;FREQ=MONTHLY RRULE:FREQ=YEARLY;BYDAY=20MO
Every other month on the 1st and last Sunday of the month for ==> (1997 9AM EDT)MAY 19
10occurrences: (1998 9AM EDT)MAY 18
(1999 9AM EDT)MAY 17
...
RRULE:COUNT=10;BYDAY=1SU,-1SU;FREQ=MONTHLY Monday of Week No. 20, forever:
Monthly on the second to last Monday of the month for 6 months: DTSTART:19970512T090000-0400
RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO
RRULE:COUNT=6;BYDAY=-2MO;FREQ=MONTHLY ==> (1997 9AM EDT)MAY 12
(1998 9AM EDT)MAY 11
(1999 9AM EDT)MAY 17
...
Monthly on the third to the last day of the month, forever: Every Thursday in March, forever:
RRULE:BYMONTHDAY=-3;FREQ=MONTHLY DTSTART:19970313T090000-0400
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH
Monthly on the 2nd and 15th of the month for 10 occurrences: ==> (1997 9AM EST)March 13,20,27
(1998 9AM EST)March 5,12,19,26
(1999 9AM EST)March 4,11,18,25
...
RRULE:COUNT=10;BYMONTHDAY=2,15;FREQ=MONTHLY Every Thursday, but only during summer months, forever:
Monthly on the first and last day of the month for 10 occurrences: DTSTART:19970605T090000-0400
RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8
RRULE:COUNT=10;BYMONTHDAY=1,-1;FREQ=MONTHLY ==> (1997 9AM EDT)June 5,12,19,26;July 3,10,17,24,31;
August 7,14,21,28
(1998 9AM EDT)June 4,11,18,25;July 2,9,16,23,30;
August 6,13,20,27
(1999 9AM EDT)June 3,10,17,24;July 1,8,15,22,29;
August 5,12,19,26
...
Every 18 months on the 10th thru 15th of the month for 10 Every Friday the 13th, forever:
occurrences:
RRULE:COUNT=10;INTERVAL=18;BYMONTHDAY=10,11,12,13,14,15; Dawson/Stenerson 60 Expires MAY 1998
FREQ=MONTHLY DTSTART:19970902T090000-0400
EXDATE:19970902T090000-0400
RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13
Monthly on the second to the last day for 5 months. So, if the start ==> (1998 9AM EST)February 13;March 13;November 13
date is August 1996, the event would repeat on 8/30/96, 9/29/96, (1999 9AM EDT)August 13
10/30/96, 11/29/96, and 12/30/96: (2000 9AM EDT)October 13
...
RRULE:COUNT=5;BYMONTHDAY=-2;FREQ=MONTHLY The first Saturday that follows the first Sunday of the month,
forever:
Yearly in June and July for 10 occurrences: DTSTART:19970913T090000-0400
RRULE:FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13
RRULE:COUNT=10;BYMONTH=6,7;FREQ=YEARLY ==> (1997 9AM EDT)September 13;October 11
(1997 9AM EST)November 8;December 13
(1998 9AM EST)January 10;February 7;March 7
(1998 9AM EDT)April 11;MAY 9;June 13...
...
Every other year on January, February, and March for 10 occurrences: Every four years, the first Tuesday after a Monday in November,
forever (U.S. Presidential Election day):
RRULE:COUNT=10;INTERVAL=2;BYMONTH=1,2,3;FREQ=YEARLY DTSTART:19961105T090000-0400
RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,
5,6,7,8
Every 3rd year on the 1st, 100th and 200th day for 10 occurrences: ==> (1996 9AM EST)November 5
(2000 9AM EST)November 7
(2004 9AM EST)November 2
...
RRULE:COUNT=10;INTERVAL=3;BYYEARDAY=1,100,200;FREQ=YEARLY The 3rd instance into the month of one of Tuesday, Wednesday or
Thursday, for the next 3 months:
Every 20th Monday of the year, forever: DTSTART:19970904T090000-0400
RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3
RRULE:BYDAY=20MO;FREQ=YEARLY ==> (1997 9AM EDT)September 4;October 7
(1997 9AM EST)November 5
Monday of Week No. 20, forever: The 2nd to last weekday of the month:
RRULE:BYWEEKNO=20;BYDAY=MO;FREQ=YEARLY DTSTART:19970929T090000-0400
RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2
Every Thursday in March, forever: ==> (1997 9AM EDT)September 29
(1997 9AM EST)October 30;November 27;December 30
(1998 9AM EST)January 29;February 26;March 30
...
Dawson/Stenerson 51 Expires January 1998 Every 3 hours from 9AM to 5PM on a specific day:
RRULE:BYDAY=TH;BYMONTH=3;FREQ=YEARLY
Every Thursday, but only in the summer, forever: Dawson/Stenerson 61 Expires MAY 1998
DTSTART:19970902T090000-0400
RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000-0400
RRULE:BYDAY=TH;BYMONTH=6,7,8;FREQ=YEARLY ==> (September 2, 1997 EDT)09:00,12:00,15:00
Every Friday the 13th, forever: Every 15 minutes for 6 occurrences:
RRULE:BYDAY=FR;BYMONTHDAY=13;FREQ=MONTHLY DTSTART:19970902T090000-0400
RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6
The first Saturday that follows the first Sunday of the month, ==> (September 2, 1997 EDT)09:00,09:15,09:30,09:45,10:00,10:15
forever:
RRULE:BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13;FREQ=MONTHLY Every hour and a half for 4 occurrences:
Every four years, the first Tuesday after a Monday in November, DTSTART:19970902T090000-0400
forever (U.S. Election day): RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4
RRULE:INTERVAL=4;BYDAY=TU;BYMONTHDAY=7,8,9,10,11,12,13; ==> (September 2, 1997 EDT)09:00,10:30;12:00;13:30
FREQ=YEARLY
The 3rd instance into the month of any of Tuesday, Wednesday or Every 20 minutes from 9AM to 4:40PM every day:
Thursday, for the next 3 months:
RRULE:COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3;FREQ=MONTHLY DTSTART:19970902T090000-0400
RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40
or
RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16
The 2nd to last weekday of the month" ==> (September 2, 1997 EDT)9:00,9:20,9:40,10:00,10:20,
... 16:00,16:20,16:40
(September 3 1997 EDT)9:00,9:20,9:40,10:00,10:20,
...16:00,16:20,16:40
...
RRULE:BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2;FREQ=MONTHLY An example where the days generated makes a difference because of
WKST:
The data type for this property is TEXT. DTSTART:19970805T090000-0400
RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO
5.6.25 Related To ==> (1997 EDT)Aug 5,10,19,24
changing only WKST from MO to SU, yields different reults...
DTSTART:19970805T090000-0400
RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU
==> (1997 EDT)August 5,17,19,31
4.6.27 Related To
This property is identified by the property name RELATED-TO. The This property is identified by the property name RELATED-TO. The
property is used to represent relationships or references between one property is used to represent relationships or references between one
calendar component and another. The property may only be specified in calendar component and another. The property MAY only be specified in
the event, to-do and journal calendar components. The property value the "VEVENT", "VTODO", "VJOURNAL" or "VFREEBUSY" calendar components.
consists of the persistent, globally unique identifier of another The property value consists of the persistent, globally unique
MIME calendar component. This value would be represented in a MIME
calendar component by the UID property. Dawson/Stenerson 62 Expires MAY 1998
identifier of another calendar component. This value would be
represented in a calendar component by the "UID" property. The
property value always points to another calendar component that has a
"parent" relationship to the referencing object.
A linked relationship can be specified by a series of components that A linked relationship can be specified by a series of components that
each, in turn, refer to their parent component. A group relationship each, in turn, refer to their parent component. A group relationship
can be specified by a number of components that all refer to one can be specified by a number of components that all refer to one
common parent component. common parent component.
Changes to a calendar component referenced by this property may Changes to a calendar component referenced by this property MAY
impact the related calendar component. For example, if a group event impact the related calendar component. For example, if a group event
changes its start or end date or time, then the related, dependent changes its start or end date or time, then the related, dependent
events will need to have their start and end dates changed in a events will need to have their start and end dates changed in a
corresponding way. This property is intended only to provide corresponding way. This property is intended only to provide
information on the relationship of calendar components. It is up to information on the relationship of calendar components. It is up to
the target calendar system to maintain any property implications of the target calendar system to maintain any property implications of
this relationship. this relationship.
Dawson/Stenerson 52 Expires January 1998
The property is defined by the following notation: The property is defined by the following notation:
related = "RELATED-TO" [";" paramlist] ":" relvalue related = "RELATED-TO" [";" [ws] paramlist] ":" [ws] uid CRLF
CRLF
relvalue = text
The following is an example of this property: The following is an example of this property:
RELATED-TO:<jsmith.part7.19960817T083000.xyzMail@host3.com> RELATED-TO:<jsmith.part7.19960817T083000.xyzMail@host3.com>
RELATED-TO:19960401-080045-4000F192713-0052 RELATED-TO:<19960401-080045-4000F192713-0052@host1.com>
The data type for this property is TEXT. The data type for this property is UID.
5.6.26 Repeat Count 4.6.28 Repeat Count
This property is identified by the property name REPEAT. This This property is identified by the property name REPEAT. This
property defines the number of repetitions for an alarm. property defines the number of repetitions for an alarm.
The property is defined by the following notation: The property is defined by the following notation:
repeatcnt = "REPEAT" ":" integer CRLF repeatcnt = "REPEAT" ":" [ws] integer CRLF
;Default is "1". ;Default is "1".
The following is an example of this property: The following is an example of this property:
REPEAT:4 REPEAT:4
The data type for the property is INTEGER. The data type for the property is INTEGER.
5.6.27 Request Status 4.6.29 Request Status
This property is identified by the property name REQUEST-STATUS. This This property is identified by the property name REQUEST-STATUS. This
property defines the status code returned for a scheduling request. property defines the status code returned for a scheduling request.
This property is used to return status code information related to This property is used to return status code information related to
Dawson/Stenerson 63 Expires MAY 1998
the processing of an associated iCalendar object. The data type for the processing of an associated iCalendar object. The data type for
this property is TEXT. this property is TEXT.
The value consists of a short return status, a longer return status The value consists of a short return status, a longer return status
description, and optionally the offending data. The components of the description, and optionally the offending data. The components of the
value are separated by the SEMICOLON character (ASCII decimal 59). value are separated by the SEMICOLON character (ASCII decimal 59).
The short return status is a PERIOD character (ASCII decimal xx)
separated set of integers. For example, "3.1.1". The successive
levels of integers provide for a successive level of status code
granularity.
The property is defined by the following notation: The property is defined by the following notation:
Rstatus = "REQUEST-STATUS" ":" statcode ";" Rstatus = "REQUEST-STATUS" ":" [ws] statcode ";" [ws]
statdesc [";" extdata] statdesc [";" [ws] extdata]
Statcode = 3*DIGIT Statcode = 1*DIGIT *("." 1*DIGIT)
;Numeric return status code ;Hierarchical, numeric return status code
Statdesc = *WORD Statdesc = *WORD
;Textual status description ;Textual status description
Dawson/Stenerson 53 Expires January 1998
Extdata = *WORD Extdata = *WORD
;Textual exception data. For example, the offending property ;Textual exception data. For example, the offending property
;name and value or complete property line. ;name and value or complete property line.
The following are some examples of this property: The following are some possible examples of this property (Note: The
BACKSLASH character escapement of separator characters in a property
value):
REQUEST-STATUS:200;Success REQUEST-STATUS:2.0;Success
REQUEST-STATUS:301;Invalid property value;DTSTART\:96-Apr-01 REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01
;Note escapement of the colon character in property value.
REQUEST-STATUS:208; Success, repeating event ignored. Scheduled REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled
as a single event.;RRULE:INTERVAL=2;FREQ=WEEKLY as a single event.;RRULE\:FREQ=WEEKLY\;INTERVAL=2
REQUEST-STATUS:401;Event conflict. Date/time is busy. REQUEST-STATUS:4.1;Event conflict. Date/time is busy.
REQUEST-STATUS:307;Invalid calendar user;ATTENDEE: REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE\:
jsmith@host.com jsmith@host.com
The following are valid classes for the return status code. The following are valid classes for the return status code.
Individual iCalendar profiles will define specific return status Individual iCalendar object methods will define specific return
codes for these classes. status codes for these classes.
Dawson/Stenerson 54 Expires January 1998
Short Return Status Code Longer Return Status
Description
1xx Preliminary success. This
class of status code
indicates that the request
has been initially
processed, but that
completion is pending.
2xx Successful. This class of
status code indicates that
the request was completed
successfully. However, the
exact status code my
indicate that a fallback has
been taken.
3xx Client Error. This class of
status code indicates that
the request was not
successful. The error is the
result of either a syntax or
a semantic error in the
client formatted request.
Request should not be
retried until the condition
in the request is corrected.
4xx Scheduling Error. This class |==============+===============================================|
of status code indicates | Short Return | Longer Return Status Description |
that the request was not | Status Code | |
successful. The error is the |==============+===============================================|
result of a scheduling | 1.xx | Preliminary success. This class of status |
conflict with the | | of status code indicates that the request has |
information in the | | request has been initially processed but that |
associated calendar.
5xx Service Error. This class of Dawson/Stenerson 64 Expires MAY 1998
status code indicates that | | completion is pending. |
the request was not |==============+===============================================|
successful. Some sort of | 2.xx | Successful. This class of status code |
error occurred within the | | indicates that the request was completed |
calendaring and scheduling | | successfuly. However, the exact status code |
service, not directly | | MAY indicate that a fallback has been taken. |
related to the request |==============+===============================================|
itself. | 3.xx | Client Error. This class of status code |
| | indicates that the request was not successful.|
| | The error is the result of either a syntax or |
| | a semantic error in the client formatted |
| | request. Request should not be retried until |
| | the condition in the request is corrected. |
|==============+===============================================|
| 4.xx | Scheduling Error. This class of status code |
| | indicates that the request was not successful.|
| | Some sort of error occurred within the |
| | calendaring and scheduling service, not |
| | directly related to the request itself. |
|==============+===============================================|
5.6.28 Resources 4.6.30 Resources
This property is identified by the property name RESOURCES. This This property is identified by the property name RESOURCES. This
property defines the equipment or resources needed for the event or property defines the equipment or resources needed for the event or
to-do. The property value is an arbitrary text. The property may only to-do. The property value is an arbitrary text. The property MAY only
be specified in the "VEVENT" or "VTODO" calendar component. More than
Dawson/Stenerson 55 Expires January 1998 one resource MAY be specified as a list of resources separated by the
be specified in the event or to-do calendar component. More than one
resource may be specified as a list of resources separated by the
COMMA character (ASCII decimal 44). COMMA character (ASCII decimal 44).
The property is defined by the following notation: The property is defined by the following notation:
resource = "RESOURCES" [";" paramlist] ":" resource = "RESOURCES" [";" [ws] paramlist] ":" [ws]
resvalist CRLF resvalist CRLF
resvalist = resvalue / resvalue "," resvalist resvalist = resvalue / resvalue "," [ws] resvalist
resvalue = "CATERING" / "CHAIRS" / "COMPUTER PROJECTOR" resvalue = "CATERING" / "CHAIRS" / "COMPUTER PROJECTOR"
/ "EASEL" / "OVERHEAD PROJECTOR" / "SPEAKER PHONE" / "EASEL" / "OVERHEAD PROJECTOR" / "SPEAKER PHONE"
/ "TABLE" / "TV" / "VCR" / "VIDEO PHONE" / "VEHICLE" / "TABLE" / "TV" / "VCR" / "VIDEO PHONE" / "VEHICLE"
/ word / word
The following is an example of this property: The following is an example of this property:
RESOURCES:EASEL,PROJECTOR,VCR RESOURCES:EASEL,PROJECTOR,VCR
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.29 Response Sequence Number 4.6.31 Sequence Number
This property is identified by the property name RESPONSE-SEQUENCE.
This property defines the revision sequence of the calendar
component. The property may only be specified in an event, to-do,
journal or free/busy calendar component. This property is needed to
properly handle the receipt and processing of a sequence of MIME
calendar components that have been delivered out of order. Such is
the case for store-and-forward based transports. The first response
to an a request is created with response sequence number of "0"
(ASCII decimal 48). If the value is non-zero, it must be specified.
It is incremented each time another reply is sent.
The property is defined by the following notation:
respseq = "RESPONSE-SEQUENCE" ":" integer CRLF
;Default is "0".
The following is an example of this property:
RESPONSE-SEQUENCE:1
The data type for this property is INTEGER.
5.6.30 Sequence Number
This property is identified by the property name SEQUENCE. This This property is identified by the property name SEQUENCE. This
property defines the revision sequence of the calendar component used property defines the revision sequence of the calendar component used
in a request. The property may only be specified in an event, to-do, in a request. The property MAY only be specified in a "VEVENT",
journal or free/busy calendar component. This property is needed to
properly handle the receipt and processing of a sequence of MIME Dawson/Stenerson 65 Expires MAY 1998
calendar components that have been delivered out of order. Such is "VTODO", "VJOURNAL" or "VFREEBUSY" calendar component. This property
is needed to properly handle the receipt and processing of a sequence
of calendar components that have been delivered out of order. Such is
the case for store-and-forward based transports. The first request is the case for store-and-forward based transports. The first request is
created with a sequence number of "0" (ASCII decimal 48). It is created with a sequence number of "0" (ASCII decimal 48). It is
Dawson/Stenerson 56 Expires January 1998
incremented each time the ORGANIZER or OWNER issues a revision to the incremented each time the ORGANIZER or OWNER issues a revision to the
request. A monotonic increment to the sequence number is caused by a request. The sequence number MUST be monotonically incremented when
change to one of the following properties by the Organizer or Owner: one of the following properties in a calendar component is changed:
· DTSTART · "DTSTART"
· DTEND · "DTEND"
· LOCATION · "DUE"
· DUE · "RDATE"
· "RRULE"
· "EXDATE"
· "EXRULE"
The property is defined by the following notation: The property is defined by the following notation:
sequence = "SEQUENCE" ":" integer CRLF sequence = "SEQUENCE" ":" [ws] integer CRLF
;Default is "0". ;Default is "0".
The following is an example of this property: The following is an example of this property:
SEQUENCE:1 SEQUENCE:1
The data type for this property is INTEGER. The data type for this property is INTEGER.
5.6.31 Status 4.6.32 Status
This property is identified by the property name STATUS. This This property is identified by the property name STATUS. This
property defines the orignator's view of the overall status for the property defines the orignator's view of the overall status for the
calendar component. This property may only be specified in the event calendar component. This property MAY only be specified in the
and to-do calendar components. When specified in an event calendar "VEVENT", "VTODO", "VJOURNAL" calendar components. The property is
component, the property is used to specify the originator's view of used to specify the originator's view of the general consensus for
the general consensus for the meeting. When specified in a group the event or the to-do. In addition, when specified in a group
scheduled to-do, the property is used to specify the originator's scheduled to-do the property is used to specify the originator's view
view of the completion status for the to-do. of the completion status for the to-do. The property MAY also specify
whether the event or to-do has been cancelled.
The property is defined by the following notation: The property is defined by the following notation:
status = "STATUS" [";" paramlist] ":" statvalue CRLF status = "STATUS" [";" [ws] paramlist] ":" [ws] statvalue CRLF
statvalue = "NEEDS ACTION" ;Indicates to-do needs action. statvalue = "NEEDS-ACTION" ;Indicates to-do needs action.
/ "COMPLETED" ;Indicates to-do completed / "COMPLETED" ;Indicates to-do completed.
/ "TENTATIVE" ;Indicates event is being / "IN-PROCESS" ;Indicates to-do in process of
;tentatively scheduled ;being completed.
/ "CONFIRMED" ;Indicates event is definite / "TENTATIVE" ;Indicates event or to-do is
/ "CANCELLED" ;Indicates event was canceled ;tentative.
/ "CONFIRMED" ;Indicates event or to-do is
;definite.
Dawson/Stenerson 66 Expires MAY 1998
/ "CANCELLED" ;Indicates event or to-do was
;cancelled.
The following is an example of this property: The following is an example of this property:
STATUS:TENTATIVE STATUS:TENTATIVE
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.32 Summary 4.6.33 Summary
This property is identified by the property name SUMMARY. This This property is identified by the property name SUMMARY. This
property defines a short summary or subject for the calendar property defines a short summary or subject for the calendar
component. The property may only be specified in the event, to-do and component. The property MUST be specified in the "VEVENT", "VTODO"
alarm calendar component. and "VJOURNAL" calendar components. In addition, it MAY appear in the
"VALARM" calendar component.
The property is defined by the following notation: The property is defined by the following notation:
Dawson/Stenerson 57 Expires January 1998 summary = "SUMMARY" [";" [ws] paramlist] ":" [ws] text CRLF
summary = "SUMMARY" [";" paramlist] ":" text CRLF
The following is an example of this property: The following is an example of this property:
SUMMARY:Department Party SUMMARY:Department Party
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.33 Time Transparency 4.6.34 Time Transparency
This property is identified by the property name TRANSP. This This property is identified by the property name TRANSP. This
property defines whether an event is transparent or not to free/busy property defines whether an event is transparent or not to busy time
time searches. This property may only be specified in an event searches. This property MAY only be specified in a "VEVENT" calendar
calendar component. component.
The property is specified by the following notation: The property is specified by the following notation:
transp = "TRANSP" [";" paramlist] ":" transvalue transp = "TRANSP" [";" [ws] paramlist] ":" [ws] transvalue CRLF
CRLF
transvalue = "BUSY" ;Opaque/blocks on free/busy searches transvalue = "OPAQUE" ;Blocks or opaque on busy time searches.
;Default value is BUSY / "TRANSPARENT" ;Transparent on busy time searches.
/ "OUT" ;Opaque/blocks on free/busy searches
/ "PRIVATE" ;Opaque/blocks on free/busy searches ;Default value is OPAQUE
/ "CONFIDENTIAL" ;Opaque/blocks on free/busy searches
/ "TRANSPARENT" ;Transparent on free/time searches
The following is an example of this property for an event that is The following is an example of this property for an event that is
transparent or does not block on free/busy time searches: transparent or does not block on free/busy time searches:
TRANSP:TRANSPARENT TRANSP:TRANSPARENT
The following is an example of this property for an event that is The following is an example of this property for an event that is
opaque or blocks on free/busy time searches: opaque or blocks on free/busy time searches:
TRANSP:BUSY TRANSP:OPAQUE
Dawson/Stenerson 67 Expires MAY 1998
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.34 Time Zone Name 4.6.35 Time Zone Name
This property is identified by the property name TZNAME. This This property is identified by the property name TZNAME. This
property specifies the customary designation for a time zone property specifies the customary designation for a time zone
descripiton. This property may only be specified in the Time Zone description. This property MAY only be specified in the "VTIMEZONE"
Calendar Component. calendar component.
This property is defined by the following notation: This property is defined by the following notation:
tzname = "TZNAME" [";" paramlist] ":" text CRLF tzname = "TZNAME" [";" [ws] paramlist] ":" [ws] text CRLF
The following are examples of this property: The following are examples of this property:
TZNAME: EST TZNAME: EST
TZNAME: PDT TZNAME: PDT
Dawson/Stenerson 58 Expires January 1998
The data type for this property is TEXT. The data type for this property is TEXT.
5.6.35 Time Zone Offset 4.6.36 Time Zone Offset
This property is identified by the property name TZOFFSET. This This property is identified by the property name TZOFFSET. This
property specifies the offset from UTC for a time zone. This property property specifies the offset from UTC for a time zone. This property
may only be specified in a Time Zone Calendar Component. A Time Zone MAY only be specified in a "VTIMEZONE" calendar component. A
Calendar Component must include this property. The property value is "VTIMEZONE" calendar component MUST include this property. The
a signed numeric indicating the number of hours and possibly minutes property value is a signed numeric indicating the number of hours and
from UTC. Positive numbers represents time zones east, or ahead of possibly minutes from UTC. Positive numbers represents time zones
UTC. Negative numbers represents time zones west of, or behind UTC. east, or ahead of UTC. Negative numbers represents time zones west
of, or behind UTC.
The property is defined by the following notation: The property is defined by the following notation:
tzoffset = "TZOFFSET" ":" utc-offset CRLF tzoffset = "TZOFFSET" ":" [ws] utc-offset CRLF
The following are examples of this property: The following are examples of this property:
TZOFFSET:-0500 TZOFFSET:-0500
TZOFFSET:+0530 TZOFFSET:+0530
The data type for this property is UTC-OFFSET. The data type for this property is UTC-OFFSET.
5.6.36 Uniform Resource Locator 4.6.37 Uniform Resource Locator
This property is identified by the property name URL. This property This property is identified by the property name URL. This property
defines a Uniform Resource Locator (URL) associated with the defines a Uniform Resource Locator (URL) associated with the
iCalendar object. This property may be specified in the event, to-do, iCalendar object. This property MAY be specified in the "VEVENT",
journal, free/busy, and alarm calendar components. "VTODO", "VJOURNAL", "VFREEBUSY", and "VALARM" calendar components.
The property is defined by the following notation: The property is defined by the following notation:
url = "URL" ":" url CRLF Dawson/Stenerson 68 Expires MAY 1998
url = "URL" ":" [ws] url CRLF
The following is an example of this property: The following is an example of this property:
URL:http://abc.com/pub/calendars/jsmith/mytime.or3 URL:http://abc.com/pub/calendars/jsmith/mytime.or3
The data type for this property is URL. The data type for this property is URL.
5.6.37 Unique Identifier 4.6.38 Unique Identifier
This property is identified by the property name UID. This property This property is identified by the property name UID. This property
defines the persistent, globally unique identifier for the calendar defines the persistent, globally unique identifier for the calendar
component. The property must be specified in the event, to-do and component. The property MUST be specified in the "VEVENT", "VTODO"
journal calendar components. and "VJOURNAL" calendar components.
The UID itself MUST be a globally unique identifier. The generator of
the identifier MUST guarantee that the identifier is unique. There
are several algorithms that can be used to accomplish this. The
identifier is RECOMMENDED to be the identical syntax to the [RFC 822]
addr-spec. A good method to assure uniqueness is to put the domain
name or a domain literal IP address of the host on which the
identifier was created on the right hand side of the "@", and on the
left hand side, put a combination of the current calendar date and
time of day (i.e., formatted in as a DATE-TIME value) along with some
other currently unique (perhaps sequential) identifier available on