view release on metacpan or search on metacpan
doc/rfc2445.txt view on Meta::CPAN
Network Working Group F. Dawson
Request for Comments: 2445 Lotus
Category: Standards Track D. Stenerson
Microsoft
November 1998
Internet Calendaring and Scheduling Core Object Specification
(iCalendar)
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
There is a clear need to provide and deploy interoperable calendaring
and scheduling services for the Internet. Current group scheduling
and Personal Information Management (PIM) products are being extended
for use across the Internet, today, in proprietary ways. This memo
has been defined to provide the definition of a common format for
openly exchanging calendaring and scheduling information across the
Internet.
This memo is formatted as a registration for a MIME media type per
[RFC 2048]. However, the format in this memo is equally applicable
for use outside of a MIME message content type.
The proposed media type value is 'text/calendar'. This string would
label a media type containing calendaring and scheduling information
encoded as text characters formatted in a manner outlined below.
This MIME media type provides a standard content type for capturing
calendar event, to-do and journal entry information. It also can be
used to convey free/busy time information. The content type is
suitable as a MIME message entity that can be transferred over MIME
based email systems, using HTTP or some other Internet transport. In
Dawson & Stenerson Standards Track [Page 1]
RFC 2445 iCalendar November 1998
addition, the content type is useful as an object for interactions
between desktop applications using the operating system clipboard,
drag/drop or file systems capabilities.
This memo is based on the earlier work of the vCalendar specification
for the exchange of personal calendaring and scheduling information.
In order to avoid confusion with this referenced work, this memo is
to be known as the iCalendar specification.
This memo defines the format for specifying iCalendar object methods.
An iCalendar object method is a set of usage constraints for the
iCalendar object. For example, these methods might define scheduling
messages that request an event be scheduled, reply to an event
request, send a cancellation notice for an event, modify or replace
the definition of an event, provide a counter proposal for an
original event request, delegate an event request to another
individual, request free or busy time, reply to a free or busy time
request, or provide similar scheduling messages for a to-do or
journal entry calendar component. The iCalendar Transport-indendent
Interoperability Protocol (iTIP) defined in [ITIP] is one such
scheduling protocol.
Table of Contents
1 Introduction.....................................................5
2 Basic Grammar and Conventions....................................6
2.1 Formatting Conventions .......................................7
2.2 Related Memos ................................................8
2.3 International Considerations .................................8
3 Registration Information.........................................8
3.1 Content Type .................................................8
3.2 Parameters ...................................................9
3.3 Content Header Fields .......................................10
3.4 Encoding Considerations .....................................10
3.5 Security Considerations .....................................10
3.6 Interoperability Considerations .............................11
3.7 Applications Which Use This Media Type ......................11
3.8 Additional Information ......................................11
3.9 Magic Numbers ...............................................11
3.10 File Extensions ............................................11
3.11 Contact for Further Information: ...........................12
3.12 Intended Usage .............................................12
3.13 Authors/Change Controllers .................................12
4 iCalendar Object Specification..................................13
4.1 Content Lines ...............................................13
4.1.1 List and Field Separators ................................16
4.1.2 Multiple Values ..........................................16
4.1.3 Binary Content ...........................................16
Dawson & Stenerson Standards Track [Page 2]
RFC 2445 iCalendar November 1998
4.1.4 Character Set ............................................17
4.2 Property Parameters .........................................17
4.2.1 Alternate Text Representation ............................18
4.2.2 Common Name ..............................................19
4.2.3 Calendar User Type .......................................20
4.2.4 Delegators ...............................................20
4.2.5 Delegatees ...............................................21
4.2.6 Directory Entry Reference ................................21
4.2.7 Inline Encoding ..........................................22
4.2.8 Format Type ..............................................23
4.2.9 Free/Busy Time Type ......................................23
4.2.10 Language ................................................24
4.2.11 Group or List Membership ................................25
4.2.12 Participation Status ....................................25
4.2.13 Recurrence Identifier Range .............................27
4.2.14 Alarm Trigger Relationship ..............................27
4.2.15 Relationship Type .......................................28
4.2.16 Participation Role ......................................29
4.2.17 RSVP Expectation ........................................29
4.2.18 Sent By .................................................30
4.2.19 Time Zone Identifier ....................................30
doc/rfc2445.txt view on Meta::CPAN
4.8.7.4 Sequence Number .....................................131
4.8.8 Miscellaneous Component Properties ......................133
4.8.8.1 Non-standard Properties .............................133
4.8.8.2 Request Status ......................................134
5 iCalendar Object Examples......................................136
6 Recommended Practices..........................................140
7 Registration of Content Type Elements..........................141
7.1 Registration of New and Modified iCalendar Object Methods ..141
7.2 Registration of New Properties .............................141
7.2.1 Define the property .....................................142
7.2.2 Post the Property definition ............................143
7.2.3 Allow a comment period ..................................143
7.2.4 Submit the property for approval ........................143
7.3 Property Change Control ....................................143
8 References.....................................................144
9 Acknowledgments................................................145
10 Authors' and Chairs' Addresses................................146
11 Full Copyright Statement......................................148
1 Introduction
The use of calendaring and scheduling has grown considerably in the
last decade. Enterprise and inter-enterprise business has become
dependent on rapid scheduling of events and actions using this
information technology. However, the longer term growth of
calendaring and scheduling, is currently limited by the lack of
Internet standards for the message content types that are central to
these knowledgeware applications. This memo is intended to progress
the level of interoperability possible between dissimilar calendaring
and scheduling applications. This memo defines a MIME content type
for exchanging electronic calendaring and scheduling information. The
Internet Calendaring and Scheduling Core Object Specification, or
iCalendar, allows for the capture and exchange of information
normally stored within a calendaring and scheduling application; such
as a Personal Information Manager (PIM) or a Group Scheduling
product.
The iCalendar format is suitable as an exchange format between
applications or systems. The format is defined in terms of a MIME
content type. This will enable the object to be exchanged using
several transports, including but not limited to SMTP, HTTP, a file
system, desktop interactive protocols such as the use of a memory-
based clipboard or drag/drop interactions, point-to-point
asynchronous communication, wired-network transport, or some form of
Dawson & Stenerson Standards Track [Page 5]
RFC 2445 iCalendar November 1998
unwired transport such as infrared might also be used.
The memo also provides for the definition of iCalendar object methods
that will map this content type to a set of messages for supporting
calendaring and scheduling operations such as requesting, replying
to, modifying, and canceling meetings or appointments, to-dos and
journal entries. The iCalendar object methods can be used to define
other calendaring and scheduling operations such a requesting for and
replying with free/busy time data. Such a scheduling protocol is
defined in the iCalendar Transport-independent Interoperability
Protocol (iTIP) defined in [ITIP].
The memo also includes a formal grammar for the content type based on
the Internet ABNF defined in [RFC 2234]. This ABNF is required for
the implementation of parsers and to serve as the definitive
reference when ambiguities or questions arise in interpreting the
descriptive prose definition of the memo.
2 Basic Grammar and Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" and
"OPTIONAL" in this document are to be interoperated as described in
[RFC 2119].
This memo makes use of both a descriptive prose and a more formal
notation for defining the calendaring and scheduling format.
The notation used in this memo is the ABNF notation of [RFC 2234].
Readers intending on implementing this format defined in this memo
should be familiar with this notation in order to properly interpret
the specifications of this memo.
All numeric and hexadecimal values used in this memo are given in
decimal notation.
All names of properties, property parameters, enumerated property
values and property parameter values are case-insensitive. However,
all other property values are case-sensitive, unless otherwise
stated.
Note: All indented editorial notes, such as this one, are
intended to provide the reader with additional information. The
information is not essential to the building of an
implementation conformant with this memo. The information is
provided to highlight a particular feature or characteristic of
the memo.
Dawson & Stenerson Standards Track [Page 6]
RFC 2445 iCalendar November 1998
The format for the iCalendar object is based on the syntax of the
[RFC 2425] content type. While the iCalendar object is not a profile
of the [RFC 2425] content type, it does reuse a number of the
elements from the [RFC 2425] specification.
2.1 Formatting Conventions
The mechanisms defined in this memo are defined in prose. Many of the
terms used to describe these have common usage that is different than
the standards usage of this memo. In order to reference within this
memo elements of the calendaring and scheduling model, core object
(this memo) or interoperability protocol [ITIP] some formatting
conventions have been used. Calendaring and scheduling roles are
doc/rfc2445.txt view on Meta::CPAN
RFC 2445 iCalendar November 1998
PROCEDURAL ALARMS - - An iCalendar object can be created that
contains a "VEVENT" and "VTODO" calendar component with "VALARM"
calendar components. The "VALARM" calendar component can be of type
PROCEDURE and can 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 might occur
as a result of executing the attachment.
ATTACHMENTS - - An iCalendar object can include references to Uniform
Resource Locators that can 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.
3.6 Interoperability Considerations
This MIME content type is intended to define a common format for
conveying calendaring and scheduling information between different
systems. It is heavily based on the earlier [VCAL] industry
specification.
3.7 Applications Which Use This Media Type
This content-type is designed for widespread use by Internet
calendaring and scheduling applications. In addition, applications in
the workflow and document management area might find this content-
type applicable. The [ITIP] and [IMIP] Internet protocols directly
use this content-type also. Future work on an Internet calendar
access protocol will utilize this content-type too.
3.8 Additional Information
This memo defines this content-type.
3.9 Magic Numbers
None.
3.10 File Extensions
The file extension of "ics" is to be used to designate a file
containing (an arbitrary set of) calendaring and scheduling
information consistent with this MIME content type.
Dawson & Stenerson Standards Track [Page 11]
RFC 2445 iCalendar November 1998
The file extension of "ifb" is to be used to designate a file
containing free or busy time information consistent with this MIME
content type.
Macintosh file type codes: The file type code of "iCal" is to be used
in Apple MacIntosh operating system environments to designate a file
containing calendaring and scheduling information consistent with
this MIME media type.
The file type code of "iFBf" is to be used in Apple MacIntosh
operating system environments to designate a file containing free or
busy time information consistent with this MIME media type.
3.11 Contact for Further Information:
Frank Dawson
6544 Battleford Drive
Raleigh, NC 27613-3502
919-676-9515 (Telephone)
919-676-9564 (Data/Facsimile)
Frank_Dawson@Lotus.com (Internet Mail)
Derik Stenerson
One Microsoft Way
Redmond, WA 98052-6399
425-936-5522 (Telephone)
425-936-7329 (Facsimile)
deriks@microsoft.com (Internet Mail)
3.12 Intended Usage
COMMON
3.13 Authors/Change Controllers
Frank Dawson
6544 Battleford Drive
Raleigh, NC 27613-3502
919-676-9515 (Telephone)
919-676-9564 (Data/Facsimile)
Frank_Dawson@Lotus.com (Internet Mail)
Derik Stenerson
One Microsoft Way
Redmond, WA 98052-6399
425-936-5522 (Telephone)
425-936-7329 (Facsimile)
deriks@microsoft.com (Internet Mail)
Dawson & Stenerson Standards Track [Page 12]
RFC 2445 iCalendar November 1998
4 iCalendar Object Specification
The following sections define the details of a Calendaring and
Scheduling Core Object Specification. This information is intended to
be an integral part of the MIME content type registration. In
addition, this information can be used independent of such content
registration. In particular, this memo has direct applicability for
use as a calendaring and scheduling exchange format in file-, memory-
or network-based transport mechanisms.
4.1 Content Lines
The iCalendar object is organized into individual lines of text,
called content lines. Content lines are delimited by a line break,
which is a CRLF sequence (US-ASCII decimal 13, followed by US-ASCII
decimal 10).
doc/rfc2445.txt view on Meta::CPAN
The following example specifies an "ATTACH" property with inline
binary encoded content information:
ATTACH;FMTTYPE=image/basic;ENCODING=BASE64;VALUE=BINARY:
MIICajCCAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1U
EBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIE
<...remainder of "BASE64" encoded binary data...>
4.1.4 Character Set
There is not a property parameter to declare the character set used
in a property value. The default character set for an iCalendar
object is UTF-8 as defined in [RFC 2279].
The "charset" Content-Type parameter can be used in MIME transports
to specify any other IANA registered character set.
4.2 Property Parameters
A property can have attributes associated with it. These "property
parameters" contain meta-information about the property or the
property value. Property parameters are provided to specify such
information as the location of an alternate text representation for a
property value, the language of a text property value, the data type
of the property value and other attributes.
Property parameter values that contain the COLON (US-ASCII decimal
58), SEMICOLON (US-ASCII decimal 59) or COMMA (US-ASCII decimal 44)
character separators MUST be specified as quoted-string text values.
Property parameter values MUST NOT contain the DOUBLE-QUOTE (US-ASCII
decimal 22) character. The DOUBLE-QUOTE (US-ASCII decimal 22)
character is used as a delimiter for parameter values that contain
restricted characters or URI text. For example:
Dawson & Stenerson Standards Track [Page 17]
RFC 2445 iCalendar November 1998
DESCRIPTION;ALTREP="http://www.wiz.org":The Fall'98 Wild Wizards
Conference - - Las Vegas, NV, USA
Property parameter values that are not in quoted strings are case
insensitive.
The general property parameters defined by this memo are defined by
the following notation:
parameter = altrepparam ; Alternate text representation
/ cnparam ; Common name
/ cutypeparam ; Calendar user type
/ delfromparam ; Delegator
/ deltoparam ; Delegatee
/ dirparam ; Directory entry
/ encodingparam ; Inline encoding
/ fmttypeparam ; Format type
/ fbtypeparam ; Free/busy time type
/ languageparam ; Language for text
/ memberparam ; Group or list membership
/ partstatparam ; Participation status
/ rangeparam ; Recurrence identifier range
/ trigrelparam ; Alarm trigger relationship
/ reltypeparam ; Relationship type
/ roleparam ; Participation role
/ rsvpparam ; RSVP expectation
/ sentbyparam ; Sent by
/ tzidparam ; Reference to time zone object
/ valuetypeparam ; Property value data type
/ ianaparam
; Some other IANA registered iCalendar parameter.
/ xparam
; A non-standard, experimental parameter.
ianaparam = iana-token "=" param-value *("," param-value)
xparam =x-name "=" param-value *("," param-value)
4.2.1 Alternate Text Representation
Parameter Name: ALTREP
Purpose: To specify an alternate text representation for the property
value.
Format Definition: The property parameter is defined by the following
notation:
Dawson & Stenerson Standards Track [Page 18]
RFC 2445 iCalendar November 1998
altrepparam = "ALTREP" "=" DQUOTE uri DQUOTE
Description: The parameter specifies a URI that points to an
alternate representation for a textual property value. A property
specifying this parameter MUST also include a value that reflects the
default representation of the text value. The individual URI
parameter values MUST each be specified in a quoted-string.
Example:
DESCRIPTION;ALTREP="CID:<part3.msg.970415T083000@host.com>":Project
XYZ Review Meeting will include the following agenda items: (a)
Market Overview, (b) Finances, (c) Project Management
The "ALTREP" property parameter value might point to a "text/html"
content portion.
Content-Type:text/html
Content-Id:<part3.msg.970415T083000@host.com>
<html><body>
<p><b>Project XYZ Review Meeting</b> will include the following
doc/rfc2445.txt view on Meta::CPAN
used in a property value. The default encoding is "8BIT",
corresponding to a property value consisting of text. The "BASE64"
encoding type corresponds to a property value encoded using the
"BASE64" encoding defined in [RFC 2045].
If the value type parameter is ";VALUE=BINARY", then the inline
encoding parameter MUST be specified with the value
";ENCODING=BASE64".
Dawson & Stenerson Standards Track [Page 22]
RFC 2445 iCalendar November 1998
Example:
ATTACH;FMTYPE=IMAGE/JPEG;ENCODING=BASE64;VALUE=BINARY:MIICajC
CAdOgAwIBAgICBEUwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDA
qBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMRw
<...remainder of "BASE64" encoded binary data...>
4.2.8 Format Type
Parameter Name: FMTTYPE
Purpose: To specify the content type of a referenced object.
Format Definition: The property parameter is defined by the following
notation:
fmttypeparam = "FMTTYPE" "=" iana-token
; A IANA registered content type
/ x-name
; A non-standard content type
Description: This parameter can be specified on properties that are
used to reference an object. The parameter specifies the content type
of the referenced object. For example, on the "ATTACH" property, a
FTP type URI value does not, by itself, necessarily convey the type
of content associated with the resource. The parameter value MUST be
the TEXT for either an IANA registered content type or a non-standard
content type.
Example:
ATTACH;FMTTYPE=application/binary:ftp://domain.com/pub/docs/
agenda.doc
4.2.9 Free/Busy Time Type
Parameter Name: FBTYPE
Purpose: To specify the free or busy time type.
Format Definition: The property parameter is defined by the following
notation:
fbtypeparam = "FBTYPE" "=" ("FREE" / "BUSY"
/ "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE"
/ x-name
; Some experimental iCalendar data type.
/ iana-token)
Dawson & Stenerson Standards Track [Page 23]
RFC 2445 iCalendar November 1998
; Some other IANA registered iCalendar data type.
Description: The parameter specifies the free or busy time type. The
value FREE indicates that the time interval is free for scheduling.
The value BUSY indicates that the time interval is busy because one
or more events have been scheduled for that interval. The value
BUSY-UNAVAILABLE indicates that the time interval is busy and that
the interval can not be scheduled. The value BUSY-TENTATIVE indicates
that the time interval is busy because one or more events have been
tentatively scheduled for that interval. If not specified on a
property that allows this parameter, the default is BUSY.
Example: The following is an example of this parameter on a FREEBUSY
property.
FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z
4.2.10 Language
Parameter Name: LANGUAGE
Purpose: To specify the language for text values in a property or
property parameter.
Format Definition: The property parameter is defined by the following
notation:
languageparam = "LANGUAGE" "=" language
language = <Text identifying a language, as defined in [RFC 1766]>
Description: This parameter can be specified on properties with a
text value type. The parameter identifies the language of the text in
the property or property parameter value. The value of the "language"
property parameter is that defined in [RFC 1766].
For transport in a MIME entity, the Content-Language header field can
be used to set the default language for the entire body part.
Otherwise, no default language is assumed.
Example:
SUMMARY;LANGUAGE=us-EN:Company Holiday Party
LOCATION;LANGUAGE=en:Germany
LOCATION;LANGUAGE=no:Tyskland
Dawson & Stenerson Standards Track [Page 24]
RFC 2445 iCalendar November 1998
The following example makes use of the Quoted-Printable encoding in
order to represent non-ASCII characters.
LOCATION;LANGUAGE=da:K=F8benhavn
LOCATION;LANGUAGE=en:Copenhagen
4.2.11 Group or List Membership
Parameter Name: MEMBER
Purpose: To specify the group or list membership of the calendar user
specified by the property.
doc/rfc2445.txt view on Meta::CPAN
the year, month and day component text.
No additional content value encoding (i.e., BACKSLASH character
encoding) is defined for this value type.
Example: The following represents July 14, 1997:
19970714
4.3.5 Date-Time
Value Name: DATE-TIME
Purpose: This value type is used to identify values that specify a
precise calendar date and time of day.
Formal Definition: The value type is defined by the following
notation:
date-time = date "T" time ;As specified in the date and time
;value definitions
Description: If the property permits, multiple "date-time" values are
specified as a COMMA character (US-ASCII decimal 44) separated list
of values. No additional content value encoding (i.e., BACKSLASH
character encoding) is defined for this value type.
The "DATE-TIME" data type is used to identify values that contain a
precise calendar date and time of day. The format is based on the
[ISO 8601] complete representation, basic format for a calendar date
and time of day. The text format is a concatenation of the "date",
followed by the LATIN CAPITAL LETTER T character (US-ASCII decimal
84) time designator, followed by the "time" format.
The "DATE-TIME" data type expresses time values in three forms:
The form of date and time with UTC offset MUST NOT be used. For
example, the following is not valid for a date-time value:
Dawson & Stenerson Standards Track [Page 35]
RFC 2445 iCalendar November 1998
DTSTART:19980119T230000-0800 ;Invalid time format
FORM #1: DATE WITH LOCAL TIME
The date with local time form is simply a date-time value that does
not contain the UTC designator nor does it reference a time zone. For
example, the following represents Janurary 18, 1998, at 11 PM:
DTSTART:19980118T230000
Date-time values of this type are said to be "floating" and are not
bound to any time zone in particular. They are used to represent the
same hour, minute, and second value regardless of which time zone is
currently being observed. For example, an event can be defined that
indicates that an individual will be busy from 11:00 AM to 1:00 PM
every day, no matter which time zone the person is in. In these
cases, a local time can be specified. The recipient of an iCalendar
object with a property value consisting of a local time, without any
relative time zone information, SHOULD interpret the value as being
fixed to whatever time zone the ATTENDEE is in at any given moment.
This means that two ATTENDEEs, in different time zones, receiving the
same event definition as a floating time, may be participating in the
event at different actual times. Floating time SHOULD only be used
where that is the reasonable behavior.
In most cases, a fixed time is desired. To properly communicate a
fixed time in a property value, either UTC time or local time with
time zone reference MUST be specified.
The use of local time in a DATE-TIME value without the TZID property
parameter is to be interpreted as floating time, regardless of the
existence of "VTIMEZONE" calendar components in the iCalendar object.
FORM #2: DATE WITH UTC TIME
The date with UTC time, or absolute time, is identified by a LATIN
CAPITAL LETTER Z suffix character (US-ASCII decimal 90), the UTC
designator, appended to the time value. For example, the following
represents January 19, 1998, at 0700 UTC:
DTSTART:19980119T070000Z
The TZID property parameter MUST NOT be applied to DATE-TIME
properties whose time values are specified in UTC.
FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE
Dawson & Stenerson Standards Track [Page 36]
RFC 2445 iCalendar November 1998
The date and local time with reference to time zone information is
identified by the use the TZID property parameter to reference the
appropriate time zone definition. TZID is discussed in detail in the
section on Time Zone. For example, the following represents 2 AM in
New York on Janurary 19, 1998:
DTSTART;TZID=US-Eastern:19980119T020000
Example: The following represents July 14, 1997, at 1:30 PM in New
York City in each of the three time formats, using the "DTSTART"
property.
DTSTART:19970714T133000 ;Local time
DTSTART:19970714T173000Z ;UTC time
DTSTART;TZID=US-Eastern:19970714T133000 ;Local time and time
; zone reference
A time value MUST ONLY specify 60 seconds when specifying the
periodic "leap second" in the time value. For example:
doc/rfc2445.txt view on Meta::CPAN
4.3.12 Time
Value Name: TIME
Purpose: This value type is used to identify values that contain a
time of day.
Formal Definition: The data type is defined by the following
notation:
time = time-hour time-minute time-second [time-utc]
time-hour = 2DIGIT ;00-23
time-minute = 2DIGIT ;00-59
time-second = 2DIGIT ;00-60
;The "60" value is used to account for "leap" seconds.
time-utc = "Z"
Description: If the property permits, multiple "time" values are
specified by a COMMA character (US-ASCII decimal 44) separated list
of values. No additional content value encoding (i.e., BACKSLASH
character encoding) is defined for this value type.
The "TIME" data type is used to identify values that contain a time
of day. The format is based on the [ISO 8601] complete
representation, basic format for a time of day. The text format
consists of a two-digit 24-hour of the day (i.e., values 0-23), two-
digit minute in the hour (i.e., values 0-59), and two-digit seconds
in the minute (i.e., values 0-60). The seconds value of 60 MUST only
to be used to account for "leap" seconds. Fractions of a second are
not supported by this format.
In parallel to the "DATE-TIME" definition above, the "TIME" data type
expresses time values in three forms:
The form of time with UTC offset MUST NOT be used. For example, the
following is NOT VALID for a time value:
230000-0800 ;Invalid time format
FORM #1 LOCAL TIME
The local time form is simply a time value that does not contain the
UTC designator nor does it reference a time zone. For example, 11:00
PM:
230000
Dawson & Stenerson Standards Track [Page 47]
RFC 2445 iCalendar November 1998
Time values of this type are said to be "floating" and are not bound
to any time zone in particular. They are used to represent the same
hour, minute, and second value regardless of which time zone is
currently being observed. For example, an event can be defined that
indicates that an individual will be busy from 11:00 AM to 1:00 PM
every day, no matter which time zone the person is in. In these
cases, a local time can be specified. The recipient of an iCalendar
object with a property value consisting of a local time, without any
relative time zone information, SHOULD interpret the value as being
fixed to whatever time zone the ATTENDEE is in at any given moment.
This means that two ATTENDEEs may participate in the same event at
different UTC times; floating time SHOULD only be used where that is
reasonable behavior.
In most cases, a fixed time is desired. To properly communicate a
fixed time in a property value, either UTC time or local time with
time zone reference MUST be specified.
The use of local time in a TIME value without the TZID property
parameter is to be interpreted as a local time value, regardless of
the existence of "VTIMEZONE" calendar components in the iCalendar
object.
FORM #2: UTC TIME
UTC time, or absolute time, is identified by a LATIN CAPITAL LETTER Z
suffix character (US-ASCII decimal 90), the UTC designator, appended
to the time value. For example, the following represents 07:00 AM
UTC:
070000Z
The TZID property parameter MUST NOT be applied to TIME properties
whose time values are specified in UTC.
FORM #3: LOCAL TIME AND TIME ZONE REFERENCE
The local time with reference to time zone information form is
identified by the use the TZID property parameter to reference the
appropriate time zone definition. TZID is discussed in detail in the
section on Time Zone.
Example: The following represents 8:30 AM in New York in Winter, five
hours behind UTC, in each of the three formats using the "X-
TIMEOFDAY" non-standard property:
Dawson & Stenerson Standards Track [Page 48]
RFC 2445 iCalendar November 1998
X-TIMEOFDAY:083000
X-TIMEOFDAY:133000Z
X-TIMEOFDAY;TZID=US-Eastern:083000
4.3.13 URI
Value Name: URI
doc/rfc2445.txt view on Meta::CPAN
The Calendaring and Scheduling Core Object is a collection of
calendaring and scheduling information. Typically, this information
will consist of a single iCalendar object. However, multiple
iCalendar objects can be sequentially grouped together. The first
line and last line of the iCalendar object MUST contain a pair of
iCalendar object delimiter strings. The syntax for an iCalendar
object is as follows:
icalobject = 1*("BEGIN" ":" "VCALENDAR" CRLF
icalbody
"END" ":" "VCALENDAR" CRLF)
The following is a simple example of an iCalendar object:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
Dawson & Stenerson Standards Track [Page 50]
RFC 2445 iCalendar November 1998
4.5 Property
A property is the definition of an individual attribute describing a
calendar or a calendar component. A property takes the form defined
by the "contentline" notation defined in section 4.1.1.
The following is an example of a property:
DTSTART:19960415T133000Z
This memo imposes no ordering of properties within an iCalendar
object.
Property names, parameter names and enumerated parameter values are
case insensitive. For example, the property name "DUE" is the same as
"due" and "Due", DTSTART;TZID=US-Eastern:19980714T120000 is the same
as DtStart;TzID=US-Eastern:19980714T120000.
4.6 Calendar Components
The body of the iCalendar object consists of a sequence of calendar
properties and one or more calendar components. The calendar
properties are attributes that apply to the calendar as a whole. The
calendar components are collections of properties that express a
particular calendar semantic. For example, the calendar component can
specify an event, a to-do, a journal entry, time zone information, or
free/busy time information, or an alarm.
The body of the iCalendar object is defined by the following
notation:
icalbody = calprops component
calprops = 2*(
; 'prodid' and 'version' are both REQUIRED,
; but MUST NOT occur more than once
prodid /version /
; 'calscale' and 'method' are optional,
; but MUST NOT occur more than once
calscale /
method /
x-prop
Dawson & Stenerson Standards Track [Page 51]
RFC 2445 iCalendar November 1998
)
component = 1*(eventc / todoc / journalc / freebusyc /
/ timezonec / iana-comp / x-comp)
iana-comp = "BEGIN" ":" iana-token CRLF
1*contentline
"END" ":" iana-token CRLF
x-comp = "BEGIN" ":" x-name CRLF
1*contentline
"END" ":" x-name CRLF
An iCalendar object MUST include the "PRODID" and "VERSION" calendar
properties. In addition, it MUST include at least one calendar
component. Special forms of iCalendar objects are possible to publish
just busy time (i.e., only a "VFREEBUSY" calendar component) or time
zone (i.e., only a "VTIMEZONE" calendar component) information. In
addition, a complex iCalendar object is possible that is used to
capture a complete snapshot of the contents of a calendar (e.g.,
composite of many different calendar components). More commonly, an
iCalendar object will consist of just a single "VEVENT", "VTODO" or
"VJOURNAL" calendar component.
4.6.1 Event Component
Component Name: "VEVENT"
Purpose: Provide a grouping of component properties that describe an
event.
Format Definition: A "VEVENT" calendar component is defined by the
following notation:
eventc = "BEGIN" ":" "VEVENT" CRLF
eventprop *alarmc
"END" ":" "VEVENT" CRLF
eventprop = *(
; the following are optional,
; but MUST NOT occur more than once
class / created / description / dtstart / geo /
Dawson & Stenerson Standards Track [Page 52]
RFC 2445 iCalendar November 1998
last-mod / location / organizer / priority /
dtstamp / seq / status / summary / transp /
uid / url / recurid /
; either 'dtend' or 'duration' may appear in
; a 'eventprop', but 'dtend' and 'duration'
; MUST NOT occur in the same 'eventprop'
dtend / duration /
; the following are optional,
; and MAY occur more than once
attach / attendee / categories / comment /
contact / exdate / exrule / rstatus / related /
resources / rdate / rrule / x-prop
)
Description: A "VEVENT" calendar component is a grouping of component
properties, and possibly including "VALARM" calendar components, that
represents a scheduled amount of time on a calendar. For example, it
can be an activity; such as a one-hour long, department meeting from
8:00 AM to 9:00 AM, tomorrow. Generally, an event will take up time
on an individual calendar. Hence, the event will appear as an opaque
interval in a search for busy time. Alternately, the event can have
its Time Transparency set to "TRANSPARENT" in order to prevent
blocking of the event in searches for busy time.
The "VEVENT" is also the calendar component used to specify an
anniversary or daily reminder within a calendar. These events have a
DATE value type for the "DTSTART" property instead of the default
data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it
MUST be specified as a DATE value also. The anniversary type of
"VEVENT" can span more than one date (i.e, "DTEND" property value is
set to a calendar date after the "DTSTART" property value).
The "DTSTART" property for a "VEVENT" specifies the inclusive start
of the event. For recurring events, it also specifies the very first
instance in the recurrence set. The "DTEND" property for a "VEVENT"
calendar component specifies the non-inclusive end of the event. For
cases where a "VEVENT" calendar component specifies a "DTSTART"
property with a DATE data type but no "DTEND" property, the events
non-inclusive end is the end of the calendar date specified by the
"DTSTART" property. For cases where a "VEVENT" calendar component
specifies a "DTSTART" property with a DATE-TIME data type but no
"DTEND" property, the event ends on the same calendar date and time
of day specified by the "DTSTART" property.
Dawson & Stenerson Standards Track [Page 53]
RFC 2445 iCalendar November 1998
The "VEVENT" calendar component cannot be nested within another
calendar component. However, "VEVENT" calendar components can be
related to each other or to a "VTODO" or to a "VJOURNAL" calendar
component with the "RELATED-TO" property.
Example: The following is an example of the "VEVENT" calendar
component used to represent a meeting that will also be opaque to
searches for busy time:
BEGIN:VEVENT
UID:19970901T130000Z-123401@host.com
DTSTAMP:19970901T1300Z
DTSTART:19970903T163000Z
DTEND:19970903T190000Z
SUMMARY:Annual Employee Review
CLASS:PRIVATE
CATEGORIES:BUSINESS,HUMAN RESOURCES
END:VEVENT
The following is an example of the "VEVENT" calendar component used
to represent a reminder that will not be opaque, but rather
transparent, to searches for busy time:
BEGIN:VEVENT
UID:19970901T130000Z-123402@host.com
DTSTAMP:19970901T1300Z
DTSTART:19970401T163000Z
DTEND:19970402T010000Z
SUMMARY:Laurel is in sensitivity awareness class.
CLASS:PUBLIC
CATEGORIES:BUSINESS,HUMAN RESOURCES
TRANSP:TRANSPARENT
END:VEVENT
The following is an example of the "VEVENT" calendar component used
to represent an anniversary that will occur annually. 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:
BEGIN:VEVENT
UID:19970901T130000Z-123403@host.com
DTSTAMP:19970901T1300Z
DTSTART:19971102
SUMMARY:Our Blissful Anniversary
CLASS:CONFIDENTIAL
CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
RRULE:FREQ=YEARLY
END:VEVENT
Dawson & Stenerson Standards Track [Page 54]
RFC 2445 iCalendar November 1998
4.6.2 To-do Component
Component Name: VTODO
Purpose: Provide a grouping of calendar properties that describe a
to-do.
Formal Definition: A "VTODO" calendar component is defined by the
following notation:
todoc = "BEGIN" ":" "VTODO" CRLF
todoprop *alarmc
"END" ":" "VTODO" CRLF
todoprop = *(
; the following are optional,
; but MUST NOT occur more than once
class / completed / created / description / dtstamp /
dtstart / geo / last-mod / location / organizer /
percent / priority / recurid / seq / status /
summary / uid / url /
; either 'due' or 'duration' may appear in
; a 'todoprop', but 'due' and 'duration'
; MUST NOT occur in the same 'todoprop'
due / duration /
; the following are optional,
; and MAY occur more than once
attach / attendee / categories / comment / contact /
exdate / exrule / rstatus / related / resources /
rdate / rrule / x-prop
)
Description: A "VTODO" calendar component is a grouping of component
properties and possibly "VALARM" calendar components that represent
an action-item or assignment. For example, it can be used to
doc/rfc2445.txt view on Meta::CPAN
SUMMARY:1996 Income Tax Preparation
CLASS:CONFIDENTIAL
CATEGORIES:FAMILY,FINANCE
PRIORITY:1
STATUS:NEEDS-ACTION
END:VTODO
4.6.3 Journal Component
Component Name: VJOURNAL
Purpose: Provide a grouping of component properties that describe a
journal entry.
Formal Definition: A "VJOURNAL" calendar component is defined by the
following notation:
journalc = "BEGIN" ":" "VJOURNAL" CRLF
jourprop
"END" ":" "VJOURNAL" CRLF
jourprop = *(
; the following are optional,
; but MUST NOT occur more than once
class / created / description / dtstart / dtstamp /
last-mod / organizer / recurid / seq / status /
summary / uid / url /
; the following are optional,
; and MAY occur more than once
attach / attendee / categories / comment /
contact / exdate / exrule / related / rdate /
rrule / rstatus / x-prop
Dawson & Stenerson Standards Track [Page 56]
RFC 2445 iCalendar November 1998
)
Description: A "VJOURNAL" calendar component is a grouping of
component properties that represent one or more descriptive text
notes associated with a particular calendar date. The "DTSTART"
property is used to specify the calendar date that the journal entry
is associated with. Generally, it will have a DATE value data type,
but it can also be used to specify a DATE-TIME value data type.
Examples of a journal entry include a daily record of a legislative
body or a journal entry of individual telephone contacts for the day
or an ordered list of accomplishments for the day. The "VJOURNAL"
calendar component can also be used to associate a document with a
calendar date.
The "VJOURNAL" calendar component does not take up time on a
calendar. Hence, it does not play a role in free or busy time
searches - - it is as though it has a time transparency value of
TRANSPARENT. It is transparent to any such searches.
The "VJOURNAL" calendar component cannot be nested within another
calendar component. However, "VJOURNAL" calendar components can be
related to each other or to a "VEVENT" or to a "VTODO" calendar
component, with the "RELATED-TO" property.
Example: The following is an example of the "VJOURNAL" calendar
component:
BEGIN:VJOURNAL
UID:19970901T130000Z-123405@host.com
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
no budget reserves for this project. Lisa will escalate to
management. Next meeting on Tuesday.\n
2. Telephone Conference: ABC Corp. sales representative called
to discuss new printer. Promised to get us a demo by Friday.\n
3. Henry Miller (Handsoff Insurance): Car was totaled by tree.
Is looking into a loaner car. 654-2323 (tel).
END:VJOURNAL
Dawson & Stenerson Standards Track [Page 57]
RFC 2445 iCalendar November 1998
4.6.4 Free/Busy Component
Component Name: VFREEBUSY
Purpose: Provide a grouping of component properties that describe
either a request for free/busy time, describe a response to a request
for free/busy time or describe a published set of busy time.
Formal Definition: A "VFREEBUSY" calendar component is defined by the
following notation:
freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF
fbprop
"END" ":" "VFREEBUSY" CRLF
fbprop = *(
; the following are optional,
; but MUST NOT occur more than once
contact / dtstart / dtend / duration / dtstamp /
organizer / uid / url /
; the following are optional,
; and MAY occur more than once
attendee / comment / freebusy / rstatus / x-prop
)
Description: A "VFREEBUSY" calendar component is a grouping of
component properties that represents either a request for, a reply to
a request for free or busy time information or a published set of
busy time information.
When used to request free/busy time information, the "ATTENDEE"
property specifies the calendar users whose free/busy time is being
requested; the "ORGANIZER" property specifies the calendar user who
is requesting the free/busy time; the "DTSTART" and "DTEND"
properties specify the window of time for which the free/busy time is
being requested; the "UID" and "DTSTAMP" properties are specified to
assist in proper sequencing of multiple free/busy time requests.
When used to reply to a request for free/busy time, the "ATTENDEE"
property specifies the calendar user responding to the free/busy time
request; the "ORGANIZER" property specifies the calendar user that
originally requested the free/busy time; the "FREEBUSY" property
specifies the free/busy time information (if it exists); and the
Dawson & Stenerson Standards Track [Page 58]
RFC 2445 iCalendar November 1998
"UID" and "DTSTAMP" properties are specified to assist in proper
sequencing of multiple free/busy time replies.
When used to publish busy time, the "ORGANIZER" property specifies
the calendar user associated with the published busy time; the
"DTSTART" and "DTEND" properties specify an inclusive time window
that surrounds the busy time information; the "FREEBUSY" property
specifies the published busy time information; and the "DTSTAMP"
property specifies the date/time that iCalendar object was created.
The "VFREEBUSY" calendar component cannot be nested within another
calendar component. Multiple "VFREEBUSY" calendar components can be
specified within an iCalendar object. This permits the grouping of
Free/Busy information into logical collections, such as monthly
groups of busy time information.
The "VFREEBUSY" calendar component is intended for use in iCalendar
object methods involving requests for free time, requests for busy
time, requests for both free and busy, and the associated replies.
Free/Busy information is represented with the "FREEBUSY" property.
This property provides a terse representation of time periods. One or
more "FREEBUSY" properties can be specified in the "VFREEBUSY"
calendar component.
When present in a "VFREEBUSY" calendar component, the "DTSTART" and
"DTEND" properties SHOULD be specified prior to any "FREEBUSY"
properties. In a free time request, these properties can be used in
combination with the "DURATION" property to represent a request for a
duration of free time within a specified 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.
Example: The following is an example of a "VFREEBUSY" calendar
component used to request free or busy time information:
BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jane_doe@host1.com
ATTENDEE:MAILTO:john_public@host2.com
DTSTART:19971015T050000Z
DTEND:19971016T050000Z
DTSTAMP:19970901T083000Z
END:VFREEBUSY
Dawson & Stenerson Standards Track [Page 59]
RFC 2445 iCalendar November 1998
The following is an example of a "VFREEBUSY" calendar component used
to reply to the request with busy time information:
BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jane_doe@host1.com
ATTENDEE:MAILTO:john_public@host2.com
DTSTAMP:19970901T100000Z
FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
URL:http://host2.com/pub/busy/jpublic-01.ifb
COMMENT:This iCalendar file contains busy time information for
the next three months.
END:VFREEBUSY
The following is an example of a "VFREEBUSY" calendar component used
to publish busy time information.
BEGIN:VFREEBUSY
ORGANIZER:jsmith@host.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.host.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
4.6.5 Time Zone Component
Component Name: VTIMEZONE
Purpose: Provide a grouping of component properties that defines a
time zone.
Formal Definition: A "VTIMEZONE" calendar component is defined by the
following notation:
timezonec = "BEGIN" ":" "VTIMEZONE" CRLF
2*(
; 'tzid' is required, but MUST NOT occur more
; than once
tzid /
; 'last-mod' and 'tzurl' are optional,
but MUST NOT occur more than once
Dawson & Stenerson Standards Track [Page 60]
RFC 2445 iCalendar November 1998
last-mod / tzurl /
; one of 'standardc' or 'daylightc' MUST occur
..; and each MAY occur more than once.
standardc / daylightc /
; the following is optional,
; and MAY occur more than once
x-prop
)
"END" ":" "VTIMEZONE" CRLF
standardc = "BEGIN" ":" "STANDARD" CRLF
tzprop
"END" ":" "STANDARD" CRLF
daylightc = "BEGIN" ":" "DAYLIGHT" CRLF
tzprop
"END" ":" "DAYLIGHT" CRLF
tzprop = 3*(
doc/rfc2445.txt view on Meta::CPAN
The following properties specify date and time related information in
calendar components.
4.8.2.1 Date/Time Completed
Property Name: COMPLETED
Purpose: This property defines the date and time that a to-do was
actually completed.
Value Type: DATE-TIME
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in a "VTODO" calendar
component.
Description: The date and time MUST be in a UTC format.
Format Definition: The property is defined by the following notation:
completed = "COMPLETED" compparam ":" date-time CRLF
Dawson & Stenerson Standards Track [Page 90]
RFC 2445 iCalendar November 1998
compparam = *(";" xparam)
Example: The following is an example of this property:
COMPLETED:19960401T235959Z
4.8.2.2 Date/Time End
Property Name: DTEND
Purpose: This property specifies the date and time that a calendar
component ends.
Value Type: The default value type is DATE-TIME. The value type can
be set to a DATE value type.
Property Parameters: Non-standard, value data type, time zone
identifier property parameters can be specified on this property.
Conformance: This property can be specified in "VEVENT" or
"VFREEBUSY" calendar components.
Description: Within the "VEVENT" calendar component, this property
defines the date and time by which the event ends. The value MUST be
later in time than the value of the "DTSTART" property.
Within the "VFREEBUSY" calendar component, this property defines the
end date and time for the free or busy time information. The time
MUST be specified in the UTC time format. The value MUST be later in
time than the value of the "DTSTART" property.
Format Definition: The property is defined by the following notation:
dtend = "DTEND" dtendparam":" dtendval CRLF
dtendparam = *(
; the following are optional,
; but MUST NOT occur more than once
(";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
(";" tzidparam) /
; the following is optional,
; and MAY occur more than once
Dawson & Stenerson Standards Track [Page 91]
RFC 2445 iCalendar November 1998
(";" xparam)
)
dtendval = date-time / date
;Value MUST match value type
Example: The following is an example of this property:
DTEND:19960401T235959Z
DTEND;VALUE=DATE:19980704
4.8.2.3 Date/Time Due
Property Name: DUE
Purpose: This property defines the date and time that a to-do is
expected to be completed.
Value Type: The default value type is DATE-TIME. The value type can
be set to a DATE value type.
Property Parameters: Non-standard, value data type, time zone
identifier property parameters can be specified on this property.
Conformance: The property can be specified once in a "VTODO" calendar
component.
Description: The value MUST be a date/time equal to or after the
DTSTART value, if specified.
Format Definition: The property is defined by the following notation:
due = "DUE" dueparam":" dueval CRLF
dueparam = *(
; the following are optional,
; but MUST NOT occur more than once
(";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
(";" tzidparam) /
; the following is optional,
; and MAY occur more than once
Dawson & Stenerson Standards Track [Page 92]
RFC 2445 iCalendar November 1998
*(";" xparam)
)
dueval = date-time / date
;Value MUST match value type
Example: The following is an example of this property:
DUE:19980430T235959Z
4.8.2.4 Date/Time Start
Property Name: DTSTART
Purpose: This property specifies when the calendar component begins.
Value Type: The default value type is DATE-TIME. The time value MUST
be one of the forms defined for the DATE-TIME value type. The value
type can be set to a DATE value type.
Property Parameters: Non-standard, value data type, time zone
identifier property parameters can be specified on this property.
Conformance: This property can be specified in the "VEVENT", "VTODO",
"VFREEBUSY", or "VTIMEZONE" calendar components.
Description: Within the "VEVENT" calendar component, this property
defines the start date and time for the event. The property is
REQUIRED in "VEVENT" calendar components. Events can have a start
date/time but no end date/time. In that case, the event does not take
up any time.
Within the "VFREEBUSY" calendar component, this property defines the
start date and time for the free or busy time information. The time
MUST be specified in UTC time.
Within the "VTIMEZONE" calendar component, this property defines the
effective start date and time for a time zone specification. This
property is REQUIRED within each STANDARD and DAYLIGHT part included
in "VTIMEZONE" calendar components and MUST be specified as a local
DATE-TIME without the "TZID" property parameter.
Format Definition: The property is defined by the following notation:
dtstart = "DTSTART" dtstparam ":" dtstval CRLF
Dawson & Stenerson Standards Track [Page 93]
RFC 2445 iCalendar November 1998
dtstparam = *(
; the following are optional,
; but MUST NOT occur more than once
(";" "VALUE" "=" ("DATE-TIME" / "DATE")) /
(";" tzidparam) /
; the following is optional,
; and MAY occur more than once
*(";" xparam)
)
dtstval = date-time / date
;Value MUST match value type
Example: The following is an example of this property:
DTSTART:19980118T073000Z
4.8.2.5 Duration
Property Name: DURATION
Purpose: The property specifies a positive duration of time.
Value Type: DURATION
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: The property can be specified in "VEVENT", "VTODO",
"VFREEBUSY" or "VALARM" calendar components.
Description: In a "VEVENT" calendar component the property may be
used to specify a duration of the event, instead of an explicit end
date/time. In a "VTODO" calendar component the property may be used
to specify a duration for the to-do, instead of an explicit due
date/time. In a "VFREEBUSY" calendar component the property may be
used to specify the interval of free time being requested. In a
"VALARM" calendar component the property may be used to specify the
delay period prior to repeating an alarm.
Format Definition: The property is defined by the following notation:
Dawson & Stenerson Standards Track [Page 94]
RFC 2445 iCalendar November 1998
duration = "DURATION" durparam ":" dur-value CRLF
;consisting of a positive duration of time.
durparam = *(";" xparam)
Example: The following is an example of this property that specifies
an interval of time of 1 hour and zero minutes and zero seconds:
DURATION:PT1H0M0S
The following is an example of this property that specifies an
interval of time of 15 minutes.
DURATION:PT15M
4.8.2.6 Free/Busy Time
Property Name: FREEBUSY
Purpose: The property defines one or more free or busy time
intervals.
Value Type: PERIOD. The date and time values MUST be in an UTC time
format.
Property Parameters: Non-standard or free/busy time type property
parameters can be specified on this property.
Conformance: The property can be specified in a "VFREEBUSY" calendar
component.
Property Parameter: "FBTYPE" and non-standard parameters can be
specified on this property.
Description: These time periods can be specified as either a start
and end date-time or a start date-time and duration. The date and
time MUST be a UTC time format.
"FREEBUSY" properties within the "VFREEBUSY" calendar component
SHOULD be sorted in ascending order, based on start time and then end
time, with the earliest periods first.
The "FREEBUSY" property can specify more than one value, separated by
the COMMA character (US-ASCII decimal 44). In such cases, the
"FREEBUSY" property values SHOULD all be of the same "FBTYPE"
property parameter type (e.g., all values of a particular "FBTYPE"
listed together in a single property).
Dawson & Stenerson Standards Track [Page 95]
RFC 2445 iCalendar November 1998
Format Definition: The property is defined by the following notation:
freebusy = "FREEBUSY" fbparam ":" fbvalue
CRLF
fbparam = *(
; the following is optional,
; but MUST NOT occur more than once
(";" fbtypeparam) /
; the following is optional,
; and MAY occur more than once
(";" xparam)
)
fbvalue = period *["," period]
;Time value MUST be in the UTC time format.
Example: The following are some examples of this property:
FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:19970308T160000Z/PT8H30M
FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H,
19970308T230000Z/19970309T000000Z
4.8.2.7 Time Transparency
Property Name: TRANSP
Purpose: This property defines whether an event is transparent or not
to busy time searches.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property can be specified once in a "VEVENT"
calendar component.
Description: Time Transparency is the characteristic of an event that
determines whether it appears to consume time on a calendar. Events
that consume actual time for the individual or resource associated
Dawson & Stenerson Standards Track [Page 96]
RFC 2445 iCalendar November 1998
with the calendar SHOULD be recorded as OPAQUE, allowing them to be
detected by free-busy time searches. Other events, which do not take
up the individual's (or resource's) time SHOULD be recorded as
TRANSPARENT, making them invisible to free-busy time searches.
Format Definition: The property is specified by the following
notation:
transp = "TRANSP" tranparam ":" transvalue CRLF
tranparam = *(";" xparam)
transvalue = "OPAQUE" ;Blocks or opaque on busy time searches.
/ "TRANSPARENT" ;Transparent on busy time searches.
;Default value is OPAQUE
Example: The following is an example of this property for an event
that is transparent or does not block on free/busy time searches:
TRANSP:TRANSPARENT
The following is an example of this property for an event that is
opaque or blocks on free/busy time searches:
TRANSP:OPAQUE
4.8.3 Time Zone Component Properties
The following properties specify time zone information in calendar
components.
4.8.3.1 Time Zone Identifier
Property Name: TZID
Purpose: This property specifies the text value that uniquely
identifies the "VTIMEZONE" calendar component.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property MUST be specified in a "VTIMEZONE"
calendar component.
Dawson & Stenerson Standards Track [Page 97]
RFC 2445 iCalendar November 1998
Description: This is the label by which a time zone calendar
component is referenced by any iCalendar properties whose data type
is either DATE-TIME or TIME and not intended to specify a UTC or a
"floating" time. The presence of the SOLIDUS character (US-ASCII
decimal 47) as a prefix, indicates that this TZID represents an
unique ID in a globally defined time zone registry (when such
registry is defined).
Note: This document does not define a naming convention for time
zone identifiers. Implementers may want to use the naming
conventions defined in existing time zone specifications such as
the public-domain Olson database [TZ]. The specification of
globally unique time zone identifiers is not addressed by this
document and is left for future study.
Format Definition: This property is defined by the following
notation:
tzid = "TZID" tzidpropparam ":" [tzidprefix] text CRLF
tzidpropparam = *(";" xparam)
;tzidprefix = "/"
; Defined previously. Just listed here for reader convenience.
Example: The following are examples of non-globally unique time zone
identifiers:
doc/rfc2445.txt view on Meta::CPAN
Value Type: URI
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property can be specified in a "VTIMEZONE" calendar
component.
Description: The TZURL provides a means for a VTIMEZONE component to
point to a network location that can be used to retrieve an up-to-
date version of itself. This provides a hook to handle changes
government bodies impose upon time zone definitions. Retrieval of
this resource results in an iCalendar object containing a single
VTIMEZONE component and a METHOD property set to PUBLISH.
Format Definition: The property is defined by the following notation:
tzurl = "TZURL" tzurlparam ":" uri CRLF
tzurlparam = *(";" xparam)
Example: The following is an example of this property:
TZURL:http://timezones.r.us.net/tz/US-California-Los_Angeles
Dawson & Stenerson Standards Track [Page 101]
RFC 2445 iCalendar November 1998
4.8.4 Relationship Component Properties
The following properties specify relationship information in calendar
components.
4.8.4.1 Attendee
Property Name: ATTENDEE
Purpose: The property defines an "Attendee" within a calendar
component.
Value Type: CAL-ADDRESS
Property Parameters: Non-standard, language, calendar user type,
group or list membership, participation role, participation status,
RSVP expectation, delegatee, delegator, sent by, common name or
directory entry reference property parameters can be specified on
this property.
Conformance: This property MUST be specified in an iCalendar object
that specifies a group scheduled calendar entity. This property MUST
NOT be specified in an iCalendar object when publishing the calendar
information (e.g., NOT in an iCalendar object that specifies the
publication of a calendar user's busy time, event, to-do or journal).
This property is not specified in an iCalendar object that specifies
only a time zone definition or that defines calendar entities that
are not group scheduled entities, but are entities only on a single
user's calendar.
Description: The property MUST only be specified within calendar
components to specify participants, non-participants and the chair of
a group scheduled calendar entity. The property is specified within
an "EMAIL" category of the "VALARM" calendar component to specify an
email address that is to receive the email type of iCalendar alarm.
The property parameter CN is for the common or displayable name
associated with the calendar address; ROLE, for the intended role
that the attendee will have in the calendar component; PARTSTAT, for
the status of the attendee's participation; RSVP, for indicating
whether the favor of a reply is requested; CUTYPE, to indicate the
type of calendar user; MEMBER, to indicate the groups that the
attendee belongs to; DELEGATED-TO, to indicate the calendar users
that the original request was delegated to; and DELEGATED-FROM, to
indicate whom the request was delegated from; SENT-BY, to indicate
whom is acting on behalf of the ATTENDEE; and DIR, to indicate the
URI that points to the directory information corresponding to the
attendee. These property parameters can be specified on an "ATTENDEE"
Dawson & Stenerson Standards Track [Page 102]
RFC 2445 iCalendar November 1998
property in either a "VEVENT", "VTODO" or "VJOURNAL" calendar
component. They MUST not be specified in an "ATTENDEE" property in a
"VFREEBUSY" or "VALARM" calendar component. If the LANGUAGE property
parameter is specified, the identified language applies to the CN
parameter.
A recipient delegated a request MUST inherit the RSVP and ROLE values
from the attendee that delegated the request to them.
Multiple attendees can be specified by including multiple "ATTENDEE"
properties within the calendar component.
Format Definition: The property is defined by the following notation:
attendee = "ATTENDEE" attparam ":" cal-address CRLF
attparam = *(
; the following are optional,
; but MUST NOT occur more than once
(";" cutypeparam) / (";"memberparam) /
(";" roleparam) / (";" partstatparam) /
(";" rsvpparam) / (";" deltoparam) /
(";" delfromparam) / (";" sentbyparam) /
(";"cnparam) / (";" dirparam) /
(";" languageparam) /
; the following is optional,
doc/rfc2445.txt view on Meta::CPAN
; the following is optional,
; and MAY occur more than once
(";" xparam)
)
Example: The following is an example of this property referencing
textual contact information:
CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234
The following is an example of this property with an alternate
representation of a LDAP URI to a directory entry containing the
contact information:
CONTACT;ALTREP="ldap://host.com:6666/o=3DABC%20Industries\,
c=3DUS??(cn=3DBJim%20Dolittle)":Jim Dolittle\, ABC Industries\,
+1-919-555-1234
The following is an example of this property with an alternate
representation of a MIME body part containing the contact
information, such as a vCard [RFC 2426] embedded in a [MIME-DIR]
content-type:
CONTACT;ALTREP="CID=<part3.msg970930T083000SILVER@host.com>":Jim
Dolittle\, ABC Industries\, +1-919-555-1234
The following is an example of this property referencing a network
resource, such as a vCard [RFC 2426] object containing the contact
information:
Dawson & Stenerson Standards Track [Page 105]
RFC 2445 iCalendar November 1998
CONTACT;ALTREP="http://host.com/pdi/jdoe.vcf":Jim
Dolittle\, ABC Industries\, +1-919-555-1234
4.8.4.3 Organizer
Property Name: ORGANIZER
Purpose: The property defines the organizer for a calendar component.
Value Type: CAL-ADDRESS
Property Parameters: Non-standard, language, common name, directory
entry reference, sent by property parameters can be specified on this
property.
Conformance: This property MUST be specified in an iCalendar object
that specifies a group scheduled calendar entity. This property MUST
be specified in an iCalendar object that specifies the publication of
a calendar user's busy time. This property MUST NOT be specified in
an iCalendar object that specifies only a time zone definition or
that defines calendar entities that are not group scheduled entities,
but are entities only on a single user's calendar.
Description: The property is specified within the "VEVENT", "VTODO",
"VJOURNAL calendar components to specify the organizer of a group
scheduled calendar entity. The property is specified within the
"VFREEBUSY" calendar component to specify the calendar user
requesting the free or busy time. When publishing a "VFREEBUSY"
calendar component, the property is used to specify the calendar that
the published busy time came from.
The property has the property parameters CN, for specifying the
common or display name associated with the "Organizer", DIR, for
specifying a pointer to the directory information associated with the
"Organizer", SENT-BY, for specifying another calendar user that is
acting on behalf of the "Organizer". The non-standard parameters may
also be specified on this property. If the LANGUAGE property
parameter is specified, the identified language applies to the CN
parameter value.
Format Definition: The property is defined by the following notation:
organizer = "ORGANIZER" orgparam ":"
cal-address CRLF
orgparam = *(
; the following are optional,
Dawson & Stenerson Standards Track [Page 106]
RFC 2445 iCalendar November 1998
; but MUST NOT occur more than once
(";" cnparam) / (";" dirparam) / (";" sentbyparam) /
(";" languageparam) /
; the following is optional,
; and MAY occur more than once
(";" xparam)
)
Example: The following is an example of this property:
ORGANIZER;CN=John Smith:MAILTO:jsmith@host1.com
The following is an example of this property with a pointer to the
directory information associated with the organizer:
ORGANIZER;CN=JohnSmith;DIR="ldap://host.com:6666/o=3DDC%20Associ
ates,c=3DUS??(cn=3DJohn%20Smith)":MAILTO:jsmith@host1.com
The following is an example of this property used by another calendar
user who is acting on behalf of the organizer, with responses
intended to be sent back to the organizer, not the other calendar
user:
ORGANIZER;SENT-BY="MAILTO:jane_doe@host.com":
MAILTO:jsmith@host1.com
4.8.4.4 Recurrence ID
Property Name: RECURRENCE-ID
doc/rfc2445.txt view on Meta::CPAN
| | 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. |
|==============+===============================================|
Format Definition: The property is defined by the following notation:
rstatus = "REQUEST-STATUS" rstatparam ":"
statcode ";" statdesc [";" extdata]
rstatparam = *(
; the following is optional,
; but MUST NOT occur more than once
Dawson & Stenerson Standards Track [Page 135]
RFC 2445 iCalendar November 1998
(";" languageparm) /
; the following is optional,
; and MAY occur more than once
(";" xparam)
)
statcode = 1*DIGIT *("." 1*DIGIT)
;Hierarchical, numeric return status code
statdesc = text
;Textual status description
extdata = text
;Textual exception data. For example, the offending property
;name and value or complete property line.
Example: The following are some possible examples of this property.
The COMMA and SEMICOLON separator characters in the property value
are BACKSLASH character escaped because they appear in a text value.
REQUEST-STATUS:2.0;Success
REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01
REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled
as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2
REQUEST-STATUS:4.1;Event conflict. Date/time is busy.
REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE:
MAILTO:jsmith@host.com
5 iCalendar Object Examples
The following examples are provided as an informational source of
illustrative iCalendar objects consistent with this content type.
The following example specifies a three-day conference that begins at
8:00 AM EDT, September 18, 1996 and end at 6:00 PM EDT, September 20,
1996.
BEGIN:VCALENDAR PRODID:-//xyz Corp//NONSGML PDA Calendar Verson
1.0//EN VERSION:2.0 BEGIN:VEVENT DTSTAMP:19960704T120000Z
UID:uid1@host.com ORGANIZER:MAILTO:jsmith@host.com
DTSTART:19960918T143000Z DTEND:19960920T220000Z STATUS:CONFIRMED
Dawson & Stenerson Standards Track [Page 136]
RFC 2445 iCalendar November 1998
CATEGORIES:CONFERENCE SUMMARY:Networld+Interop Conference
DESCRIPTION:Networld+Interop Conference
and Exhibit\nAtlanta World Congress Center\n
Atlanta, Georgia END:VEVENT END:VCALENDAR
The following example specifies a group scheduled meeting that begin
at 8:30 AM EST on March 12, 1998 and end at 9:30 AM EST on March 12,
1998. The "Organizer" has scheduled the meeting with one or more
calendar users in a group. A time zone specification for Eastern
United States has been specified.
BEGIN:VCALENDAR
PRODID:-//RDU Software//NONSGML HandCal//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:US-Eastern
BEGIN:STANDARD
DTSTART:19981025T020000
RDATE:19981025T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19990404T020000
RDATE:19990404T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:19980309T231000Z
UID:guid-1.host1.com
ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com
doc/rfc2445.txt view on Meta::CPAN
hourly, four additional times. The to-do definition has been modified
twice since it was initially created.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VTODO
DTSTAMP:19980130T134500Z
SEQUENCE:2
UID:uid4@host1.com
ORGANIZER:MAILTO:unclesam@us.gov
ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com
Dawson & Stenerson Standards Track [Page 138]
RFC 2445 iCalendar November 1998
DUE:19980415T235959
STATUS:NEEDS-ACTION
SUMMARY:Submit Income Taxes
BEGIN:VALARM
ACTION:AUDIO
TRIGGER:19980403T120000
ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio-
files/ssbanner.aud
REPEAT:4
DURATION:PT1H
END:VALARM
END:VTODO
END:VCALENDAR
The following is an example of a journal entry.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VJOURNAL
DTSTAMP:19970324T120000Z
UID:uid5@host1.com
ORGANIZER:MAILTO:jsmith@host.com
STATUS:DRAFT
CLASS:PUBLIC
CATEGORY:Project Report, XYZ, Weekly Meeting
DESCRIPTION:Project xyz Review Meeting Minutes\n
Agenda\n1. Review of project version 1.0 requirements.\n2.
Definition
of project processes.\n3. Review of project schedule.\n
Participants: John Smith, Jane Doe, Jim Dandy\n-It was
decided that the requirements need to be signed off by
product marketing.\n-Project processes were accepted.\n
-Project schedule needs to account for scheduled holidays
and employee vacation time. Check with HR for specific
dates.\n-New schedule will be distributed by Friday.\n-
Next weeks meeting is cancelled. No meeting until 3/23.
END:VJOURNAL
END:VCALENDAR
The following is an example of published busy time information. The
iCalendar object might be placed in the network resource
www.host.com/calendar/busytime/jsmith.ifb.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//RDU Software//NONSGML HandCal//EN
BEGIN:VFREEBUSY
Dawson & Stenerson Standards Track [Page 139]
RFC 2445 iCalendar November 1998
ORGANIZER:MAILTO:jsmith@host.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.host.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
END:VCALENDAR
6 Recommended Practices
These recommended practices should be followed in order to assure
consistent handling of the following cases for an iCalendar object.
1. Content lines longer than 75 octets SHOULD be folded.
2. A calendar entry with a "DTSTART" property but no "DTEND"
property does not take up any time. It is intended to represent
an event that is associated with a given calendar date and time
of day, such as an anniversary. Since the event does not take up
any time, it MUST NOT be used to record busy time no matter what
the value for the "TRANSP" property.
3. When the "DTSTART" and "DTEND", for "VEVENT", "VJOURNAL" and
"VFREEBUSY" calendar components, and "DTSTART" and "DUE", for
"VTODO" calendar components, have the same value data type (e.g.,
DATE-TIME), they SHOULD specify values in the same time format
(e.g., UTC time format).
4. When the combination of the "RRULE" and "RDATE" properties on an
iCalendar object produces multiple instances having the same
start date/time, they should be collapsed to, and considered as,
a single instance.
5. When a calendar user receives multiple requests for the same
calendar component (e.g., REQUEST for a "VEVENT" calendar
component) as a result of being on multiple mailing lists
specified by "ATTENDEE" properties in the request, they SHOULD
respond to only one of the requests. The calendar user SHOULD
also specify (using the "MEMBER" parameter of the "ATTENDEE"
property) which mailing list they are a member of.
6. An implementation can truncate a "SUMMARY" property value to 255
characters.
Dawson & Stenerson Standards Track [Page 140]
RFC 2445 iCalendar November 1998
7. If seconds of the minute are not supported by an implementation,
then a value of "00" SHOULD be specified for the seconds
component in a time value.
8. If the value type parameter (VALUE=) contains an unknown value
type, it SHOULD be treated as TEXT.
9. TZURL values SHOULD NOT be specified as a FILE URI type. This URI
form can be useful within an organization, but is problematic in
the Internet.
10. Some possible English values for CATEGORIES property include
"ANNIVERSARY", "APPOINTMENT", "BUSINESS", "EDUCATION",
"HOLIDAY", "MEETING", "MISCELLANEOUS", "NON-WORKING HOURS", "NOT
IN OFFICE", "PERSONAL", "PHONE CALL", "SICK DAY", "SPECIAL
OCCASION", "TRAVEL", "VACATION". Categories can be specified in
any registered language.
11. Some possible English values for RESOURCES property include
"CATERING", "CHAIRS", "COMPUTER PROJECTOR", "EASEL", "OVERHEAD
PROJECTOR", "SPEAKER PHONE", "TABLE", "TV", "VCR", "VIDEO
PHONE", "VEHICLE". Resources can be specified in any registered
language.
7 Registration of Content Type Elements