iCalendar is a computer file format that allows Internet users to send meeting requests and tasks to other Internet users by sharing or sending files in this format through various methods. Files typically have .ics
extensions. With support software, such as an email reader or a calendar application, the iCalendar data file recipient can respond easily to the sender or against-suggest another date/time of the meeting. The file format is specified in the proposed internet standard (RFC 5545) for calendar data exchange.
iCalendar is used and supported by a large number of products, including Google Calendar, Apple Calendar (formerly iCal), IBM Notes (formerly Lotus Notes), Yahoo! Calendars, Evolution (software), eM Clients, Lightning extensions for Mozilla Thunderbird and SeaMonkey, and in part by Microsoft Outlook and Novell GroupWise.
iCalendar is designed not to rely on transport protocols. For example, certain events can be sent by traditional email or an entire calendar file can be shared and edited using the WebDav server, or SyncML. Simple web servers (HTTP protocol only) are often used to distribute iCalendar data about an event and to publish an individual busy time. Publishers can embed iCalendar data in web pages using hCalendar, a 1: 1 microformat representation of iCalendar in semantic (X) HTML.
Video ICalendar
History and design
iCalendar was first created in 1998 by the Working Group on Calendar and Scheduling of the Internet Engineering Working Group, chaired by Anik Ganguly of Open Text Corporation, and written by Frank Dawson of Lotus Development Corporation and Derik Stenerson of Microsoft Corporation. iCalendar relies heavily on previous vCalendar by Internet Mail Consortium (IMC). ICalendar data files are plain text files with .ics
or .ifb
extensions (for files with availability information only). RFC 5545 replaced RFC 2445 in September 2009 and now defines standards.
ICalendar data has MIME text/calendar content type.
The file name extension ics
will be used for files containing calendar and scheduling information, ifb
for files with free or busy time information consistent with this MIME content type. The equivalent file type code in the Apple Macintosh operating system environment is iCal
and iFBf
.
By default, iCalendar uses the UTF-8 character set; different character sets can be specified using the MIME "charset" parameter (if the transport method used supports MIME, such as Email or HTTP).
Each line is terminated by CR LF (in hexadecimal: 0D0A). Lines must be limited to 75 octets (not characters) long. Where data items are too long to fit on a single line can proceed on the following line by starting the line with a space character (in hex: 20) or tab character (in hex: 09).
The actual row feed in the data item is encoded as a backslash followed by the letter n or N (byte 5C 6E or 5C 4E in UTF-8).
Maps ICalendar
Limits and future
The iCalendar format is designed to deliver calendar-based data, such as events, and deliberately does not describe what to do with the data. Thus, other programming may be needed to negotiate what to do with this data.
iCalendar is intended to "provide a common format definition to openly exchange calendar and scheduling information on the Internet". Although the most frequently used features of the user are widely supported by iCalendar, some of the more advanced capabilities have issues. For example, most vendors do not support Journals (VJOURNAL). VTODOs has conversion issues too.
The iCalendar calendar is also incompatible with some non-Gregorian calendars such as the lunar calendar used in Israel and Saudi Arabia.
The "Calendar Access Protocol" memo (RFC 4324) is an early attempt at a universal system for creating real-time calendars. This protocol was eventually abandoned, probably because of its excessive complexity. Regardless, iCalendar-based codes like GroupDAV and CalDAV are now used more frequently in both client and server software packages.
The IETF "Working Group on Calendaring and Scheduling" (ietf-calsify WG) has published additional proposed revisions to the iCalendar standard (as RFC-draft/"Proposed"), but by January 2011, the group has 'ended'. Jobs taken by the "Calendar Extensions Working Group" (ietf-calext WG).
Technical specifications
The core object
The top level elements in iCalendar are Calendaring and Core Object Scheduling, a collection of calendar and scheduling information. Typically, this information will consist of a single iCalendar object. However, some iCalendar objects can be grouped together.
The first line must be BEGIN: VCALENDAR
, and the last line should be END: VCALENDAR
; the content between these lines is called "icalbody".
The second line VERSION: 2.0
indicates that the data is in iCalendar format. VERSION: 1.0
is used to specify that the data is in the old vCalendar format.
The body of the iCalendar object (icalbody) consists of a list of calendar properties and one or more calendar components. Calendar properties apply to all calendars. A calendar component is some calendar property that creates a calendar schematic (design). For example, the calendar component may specify an event, a to-do list, a journal entry, a time zone information, or a free/busy time information, or an alarm. Empty lines are not allowed in some versions of use (Google calendar).
Here is a simple example of iCalendar object, "Bastille Day Party" event that occurred July 14, 1997 17:00 (UTC) to 15 July 1997 03:59:59 (UTC):
BEGIN: VCALENDAR VERSION: 2.0 PRODID: -//hacksw/handcal//NONSGML v1.0//EN BEGIN: VEVENT UID: uid1@example.com DTSTAMP: 19970714T170000Z ORGANIZER: CN = John Doe: MAILTO: john.doe@example.com DTSTART: 19970714T170000Z DTEND: 19970715T035959Z SUMMARY: Bastille Day party END: VEVENT END: VCALENDAR
There are many types of components that can be used in iCalendar, as described below.
Events (VEVENT)
VEVENT
describes an event, which has a scheduled amount of time on a calendar. Usually, when a user receives a calendar event, this will cause the time to be considered busy. A VEVENT
might include VALARM
that allows an alarm. Such an event has DTSTART
that specifies the start time, and DTEND
that specifies the end time. If the calendar event recurs, DTSTART
prepares the start of the first event.
VALARM code (1 day reminder):
BEGIN: VALARM TRIGGER: -PT1440M ACTION: DISPLAY DESCRIPTION: Reminder END: VALARM
VEVENT
is also used for calendar events with no specific time, such as anniversaries and daily reminders. If the user needs to send a cancellation for an event, the UID must be the same as the initial event, and the component property must be set to cancel Ex.
METHOD: CANCEL STATUS: CANCELED
To send UPDATE
for an event, UID
must be the same as the original UID
. Other component properties to be set are:
SEQUENCE: & lt; Num of Update & gt;
Yes, for the first update:
SEQUENCE: 1
In Microsoft Outlook, SUMMARY
matches the "Subject" entry in the "Appointment" form, and DESCRIPTION
to the descriptive text underneath. Additionally, Outlook 2002 and Outlook 2003 require UID
and DTSTAMP
.
Organizer (VTODO)
VTODO describes items to do, that is, action items or tasks.
Not all calendar apps recognize VTODO items. Specifically, Outlook does not export Tasks as a VTODO item, and ignores VTODO items in the imported calendar.
The following is an example of an agenda to be performed on April 15, 1998. Audio alarms have been determined to remind calendar users during the day, the day before the agenda is expected to finish and repeat hourly, four additional times. The SEQUENCE element shows this agenda been modified twice since it was first created.
BEGIN: VCALENDAR VERSION: 2.0 PRODID: -//ABC Corporation//NONSGML My Products//EN BEGIN: VTODO DTSTAMP: 19980130T134500Z SEQUENCE: 2 UID: uid4@example.com LIMIT: 19980415T235959 STATUS: NEEDS SUMMARY: Submit Income Tax BEGIN: VALARM ACTION: AUDIO TRIGGER: 19980414T120000 ATTACH; FMTTYPE = audio/basics: http://example.com/pub/audio- Ã file/ssbanner.aud REPEAT: 4 DURATION: PT1H END: VALARM END: VTODO END: VCALENDAR
Journal entries (VJOURNAL)
VJOURNAL is a journal entry. They attach descriptive text to a specific calendar date, can be used to record activity diaries or achievements, or describe progress with related to-do entries. The "VJOURNAL" calendar component does not take time on the calendar, so it does not affect free or busy (like TRANSPARENT entry). In practice, some programs support VJOURNAL entries, although there are examples: Plum Canary's Chirp software uses VTODO and VJOURNAL together. Also KOrganizer from KDE and Evolution desktops from the GNOME desktop supports VJOURNAL.
The following is an example of a journal entry:
BEGIN: VCALENDAR VERSION: 2.0 PRODID: -//ABC Corporation//NONSGML My Products//EN BEGIN: VJOURNAL DTSTAMP: 19970324T120000Z UID: uid5@example.com ORGANIZER: MAILTO: jsmith@example.com STATUS: DRAFT CLASS: PUBLIC CATEGORIES: Project Reports, XYZ, Weekly Meetings DESCRIPTION: Project xyz Review Meeting Minutes \ n Agenda \ n1. Review the project version 1.0 requirements. \ N2. à Definitions à project process. \ n3. Review the project schedule. \ N à Participants: John Smith, Jane Doe, Jim Dandy \ n-That à à decide that the terms must be signed by à à product marketing. \ n- The project process is accepted. \ n à -The project schedule needs to take into account scheduled holidays à à and employee vacation time. Check with HR for specific à à date. \ n-The new schedule will be distributed on Fridays. \ n- The next week's meeting was canceled. No meetings until 3/23. END: VJOURNAL END: VCALENDAR
(Note: This example is taken from RFC 2445 with the correction changing the word 'CATEGORY' to 'CATEGORIES', which is an error in the original RFC)
Free/busy (VFREEBUSY)
VFREEBUSY is a request for free/busy time, is a response to a request, or a series of busy times are published.
Here is an example of busy time information published:
BEGIN: VCALENDAR VERSION: 2.0 PRODID: -//RDU Software//NONSGML HandCal//EN BEGIN: VFREEBUSY DTSTAMP: 20151013T080000Z UID: uid6@example.com ORGANIZER: MAILTO: jsmith@example.com DTSTART: 19980313T141711Z DTEND: 19980410T141711Z FREEBUSY: 19980314T233000Z/19980315T003000Z FREEBUSY: 19980316T153000Z/19980316T163000Z FREEBUSY: 19980318T030000Z/19980318T040000Z URL: http://www.example.com/calendar/busytime/jsmith.ifb END: VFREEBUSY END: VCALENDAR
Other component types
Other component types include VTIMEZONE (time zone) and VALARM (alarm). Some components may include other components (VALARM is often included in other components).
Distribute updates
The UID field distributes updates when the scheduled event is changed. When the event was first generated, a unique global identifier was created. If the next event is distributed with the same UID, it replaces the original.
Calendar extension
vCalendar and iCalendar support personal software extensions, with the prefix "X-", a number of commonly used.
Some of them include:
- X-RECURRENCE-ID - a vCalendar 1.0 extension that mimics iCalendar 2.0 RECURRENCE-ID (Nokia S60 3rd Edition)
- X-EPOCAGENDAENTRYTYPE - defines client calendar type
- X-FUNAMBOL-AALARMOPTIONS
- X-FUNAMBOL-ALLDAY - All Day event flags
- X-MICROSOFT-CDO-ALLDAYEVENT - Microsoft Outlook flags all day event
- X-MICROSOFT-CDO-BUSYSTATUS - Microsoft Outlook status information
- X-MICROSOFT-CDO-INTENDEDSTATUS
- X-WR-CALNAME - Calendar display name
- X-WR-CALDESC - Description of calendar
- X-WR-RELCALID - Unique global identifier for calendar
- X-WR-TIMEZONE
- X-PUBLISHED-TTL - Recommended update interval to subscribe to calendar
- X-ALT-DESC - Used to include HTML markup in the event description. The default DESCRIPTION tag must contain a non-HTML version.
vCalendar 1.0
The iCalendar design is based on the previous file format vCalendar created by the Internet Mail Consortium (IMC).
Here is an example of information in vCalendar format:
BEGIN: VCALENDAR VERSION: 1.0 BEGIN: VEVENT CATEGORIES: MEETINGS STATUS: TENTATIF DTSTART: 19960401T033000Z DTEND: 19960401T043000Z SUMMARY: Your Proposal Review INFORMATION: Steve and John to review the latest proposal materials CLASS: PRIVATE END: VEVENT END: VCALENDAR
It has the.vcs file extension. After iCalendar was released, Internet Mail Consortium stated that "hope all vCalendar developers take advantage of this new open standard and make their software compatible with vCalendar 1.0 and iCalendar."
Representation
xCal
xCal is the XML representation of the iCalendar data, as defined in RFC 6321.
jCal
jCal is a JSON representation of iCalendar data, as defined in RFC 7265.
See also
- List of apps with iCalendar support
- CalDAV
- GroupDAV
- hCalendar
- OSID scheduling provides software interface abstraction for using the calendar protocol
- vCard
- xCal
- Webcal - Unofficial Uniform Resource Identifier (URI) scheme
- The zip file
Note
External links
- RFC 5545 Internet Details and Scheduling Core Object Specification (iCalendar) (replacing RFC 2445)
- RFC 5546 iCalendar Transport-Independent Interoperability Protocol (iTIP) (replacing RFC 2446)
- Message-based Interoperability Protocol RFC 6047 iCalendar (iMIP) (replacing RFC 2447)
- RFC 6321 xCal: XML Format for iCalendar (iCalendar XML Representation)
- RFC 6868: update data formats to include certain characters, prohibited by existing specifications, in parameter values ââ
- RFCÃ, 7265 jCal: JSON format for iCalendar
- RFC 7986 New Property for iCalendar (additional properties for the iCalendar specification)
- "Introduction to Internet Breakdown and Scheduling". CalConnect. 2011-10-20.
- "Exchange of Personal Data - vCard and vCalendar". Internet Email Consortium. Archived from the original in 2017-02-27. Ã, - This explains the vCard, vCalendar, and iCalendar relationships, and includes IMC requests for implementers to support both vCalendar and iCalendar.
- "iCalendar Resources". - List of resources for iCalendar and related standards.
Source of the article : Wikipedia