RFC 2739
Calendar Attributes for vCard and LDAP
RFC 2739: Calendar Attributes for vCard and LDAP ๐
Network Working Group ๐ Request for Comments: 2739 (that's this RFC's number, bestie) Authors: T. Small (XpertSite.Com), D. Hennessy (ISOCOR), and F. Dawson (Lotus) ๐ซถ Category: Standards Track โจ (so it's a real protocol spec, not just a chill note) Date: January 2000 ๐ฆ Obsoletes / Updates: the header doesn't list anything it obsoletes or updates ๐
Status of This Memo โจ
Okay so this document is an Internet standards track protocol for the Internet community, and it's asking everyone for discussion and suggestions for improvements ๐. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐. Distribution of this memo is unlimited ๐.
Copyright Notice ๐ธ
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract ๐ง
When you're scheduling a calendar entity, like an event, you NEED the calendar address of every attendee you're inviting. That's just a prerequisite, no cap ๐ . Plus, being able to see an attendee's current "busy time" gives you an a priori indication of whether they'll be free to show up ๐ธ.
So a calendar user agent (CUA) needs a way to locate (URI) an individual user's calendar and free/busy time. Iconic behaviour, honestly ๐.
This memo defines three mechanisms for getting a URI to a user's calendar and free/busy time:
- Manual transfer of the information ๐;
- Personal data exchange using the vCard format ๐; and
- Directory lookup using the LDAP protocol ๐.
Table of Contents ๐
1 CALENDARING AND SCHEDULING URIS...................................3
1.1 FREE/BUSY URI (FBURL) .........................................3
1.2 CALENDAR ACCESS URI (CAPURI) ..................................4
1.3 CALENDAR URI (CALURI) .........................................4
1.4 DEFAULT URIS ..................................................4
2 DISTRIBUTION......................................................4
2.1 MANUAL TRANSFER ...............................................5
2.2 PERSONAL DATA EXCHANGE USING A VCARD ..........................5
2.3 VCARD SCHEMA EXTENSIONS .......................................5
2.3.1 FBURL Property IANA Registration ...........................6
2.3.2 CALADRURI Property IANA Registration .......................7
2.3.3 CAPURI Property IANA Registration ......................... 8
2.3.4 CALURI Property IANA Registration ......................... 8
2.4 DIRECTORY LOOKUP USING THE LDAP V3 PROTOCOL .................. 9
2.4.1 LDAP Schema Extensions .................................... 9
2.4.2 Notation ..................................................10
2.4.3 Object Definitions ........................................10
2.4.3.1 calEntry ..............................................10
2.4.4 Attribute Definitions .....................................10
2.4.4.1 calCalURI .............................................10
2.4.4.2 calFBURL ..............................................10
2.4.4.3 calCAPURI .............................................11
2.4.4.4 calCalAdrURI ..........................................11
2.4.4.5 calOtherCalURIs .......................................11
2.4.4.6 calOtherFBURLs ........................................11
2.4.4.7 calOtherCAPURIs .......................................12
2.4.4.8 calOtherCalAdrURIs ....................................12
3 IANA Considerations..............................................12
4 Security Considerations..........................................12
5 Acknowledgments..................................................13
6 Authors' Addresses...............................................13
7 Bibliography.....................................................15
8 Full Copyright Statement.........................................16
1. Calendaring and Scheduling URIs ๐
This memo defines four classes of URIs. URIs are way more useful once you know what they point to, so here's a quick rundown ๐.
1.1. Free/Busy URI (FBURL) โฐ
The free/busy URI is a transport independent location where a client can find out when a user is busy ๐ฆ. Right now this URI only points to busy time data. Future revisions of this spec might add publishing of free time data too ๐ฎ.
If a calendaring and scheduling client (i.e., CUA) grabs data from this location over FTP or HTTP, it gets back an iCalendar object [4] containing one or more "VFREEBUSY" calendar components ๐. If a MIME transport is in use, the response lives inside a "text/calendar" MIME body part, as the iCalendar specification [4] describes. Here's an example:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
METHOD:PUBLISH
BEGIN:VFREEBUSY
ATTENDEE:MAILTO:jane_doe@host1.com
DTSTART:19971013T050000Z
DTEND:19971124T050000Z
DTSTAMP:19970901T083000Z
FREEBUSY:19971015T133000Z/19971015T180000Z
FREEBUSY:19971015T190000Z/19971015T220000Z
FBURL:http://www.host.com/calendar/busy/jdoe.ifb
END:VFREEBUSY
END:VCALENDAR
The amount of busy time data behind the FBURL is usually pre-determined, like one month's worth ๐. As a guideline, it is recommended that the previous six weeks of busy time data get published at the location tied to the FBURL ๐ธ. If this URI points to a file resource, it is recommended that the file extension be "ifb", so it's easy to tell apart from an arbitrary iCalendar object (for example, one with the "ics" file extension) ๐๏ธ.
1.2. Calendar Access URI (CAPURI) ๐
The Calendar Access URI is a protocol independent location where a calendaring and scheduling client (i.e., CUA) can talk to a user's entire calendar ๐ฌ.
The semantics for using this URI as an access protocol locator haven't been defined yet. The IETF CALSCH Working Group is handling that, and it'll be covered in the "Calendar Access Protocol" specification ๐ซถ.
1.3. Calendar URI (CALURI) ๐
The Calendar URI is a protocol independent location where a calendaring and scheduling client (i.e. CUA) can grab a complete copy of a user's calendar โจ. Retrieving data from this URI gets you a published "snapshot" of the user's calendar ๐ธ.
HTTP URI: if the URI is an HTTP URI, the content returned by a GET should be a "text/calendar" MIME body part containing one or more iCalendar objects ๐.
FTP URI: if the URI is an FTP URI, the resource it points to should be a file with an "ics" file extension containing one or more iCalendar objects ๐.
1.4. Default URIs ๐
Sometimes a user has more than one calendar. In that case, the user can have multiple URIs, each one pointing to a calendar or to free/busy data ๐.
To make life simpler for clients with multiple calendars, the concept of a "default" calendar is introduced ๐ . A "default" calendar is the one the user has marked as the calendar other users should look at when they access the user's calendar or retrieve the user's free/busy time ๐ซถ.
The default calendar may actually include rolled-up information from all of the user's other calendars ๐ง. The other calendars might only exist for organizational purposes ๐๏ธ.
2. Distribution ๐
These four URIs are super valuable pointers to calendaring and scheduling data, which other users need in order to know when to schedule meetings and stuff ๐ . There are a few ways users can pass these URIs along to each other, and the following section walks through how ๐ฆ.
2.1. Manual Transfer ๐
The simplest way to get these URIs is for a user to share them through some out-of-band mechanism, like saying them out loud, sending them in an e-mail message, or printing them on a paper business card ๐ณ.
With this approach, the user gets the URIs through an out-of-band mechanism and then types them into their calendaring software by hand ๐.
2.2. Personal Data Exchange Using A vCard ๐
A more sophisticated way to get these URIs is for users to publish vCards that contain them ๐. A vCard object can be passed between users ๐. Lots of e-mail clients let a user automatically attach a vCard to every message they send, so this is a simple, transparent way to share calendaring and scheduling URIs ๐ธ.
On the receiving end, an e-mail client with an integrated vCard database can offer a way to look up calendaring URIs for users whose vCards are stored locally ๐.
2.3. vCard Schema Extensions ๐งฉ
The vCard [3] specification doesn't say how to encode calendaring URIs in a vCard, so this section extends vCard and spells out how to do exactly that ๐ .
Inside a vCard object, four new properties are defined: "CALURI", "CAPURI", "CALADRURI", and "FBURL", as defined above ๐.
Any vCard can have one or more of these properties, and each one represents a calendar or free/busy time associated with the user ๐ .
You can mark one of these properties as the "default" by adding the "PREF" parameter โญ.
Here's a simple example of a vCard with an "FBURL" and a "CALURI" ๐:
BEGIN:VCARD
VERSION:3.0
N:Dun;Alec
FN:Alec Dun
ORG:Microsoft Corporation
ADR;WORK;POSTAL;PARCEL:;;One Microsoft Way;
Redmond;WA;98052-6399;USA
TEL;WORK;MSG:+1-206-936-4544
TEL;WORK;FAX:+1-206-936-7329
EMAIL;INTERNET:user@host1.com
CALADRURI;PREF:mailto:user@host1.com
CALURI;PREF:http://cal.host1.com/user/cal.ics
FBURL;PREF:http://cal.host1.com/user/fb.ifb
CALURI:http://cal.company.com/projectA/pjtA.ics
FBURL:http://cal.company.com/projectA/pjtAfb.ifb
END:VCARD
2.3.1. FBURL Property IANA Registration ๐
Here's the registration form, with the fields kept exactly as written. ๐
To: ietf-mime-directory@imc.org
Subject: Registration of FBURL type for text/directory MIME type vCard profile.
Type name: FBURL
Type purpose: To specify the URI for a user's busy time in a vCard object ๐ฆ.
Type encoding: 8bit
Type value: A single URI value.
Type special notes: When there are multiple FBURL properties, the default FBURL property is marked with the PREF parameter ๐. An FTP or HTTP URI points to an iCalendar object that holds a snapshot of the user's busy time data for the last six weeks ๐ธ. If the iCalendar object is stored as a file or document, its file type should be "ifb" ๐๏ธ.
Intended usage: Refer to section 1.1.
Type examples:
FBURL;PREF:http://www.host1.com/busy/janedoe
FBURL:FTP://ftp.host.com/busy/project-a.ifb
2.3.2. CALADRURI Property IANA Registration ๐ฌ
Next up is the CALADRURI registration, and it's giving very similar energy ๐ .
To: ietf-mime-directory@imc.org
Subject: Registration of CALADRURI type for application/directory MIME type vCard profile.
Type name: CALADRURI
Type purpose: To specify the location where an event request should be sent for the user ๐ง.
Type encoding: 8bit
Type value: A single URI value.
Type special notes: When there are multiple CALADRURI properties, the default CALADRURI property is marked with the PREF parameter ๐ธ.
Intended usage: Refer to section 1.2.
Type examples:
CALADRURI;PREF:mailto:janedoe@host.com
Part 1 is a wrap, but there's way more to come, so stay tuned, bestie ๐ฆ๐โจ
2.3.3 CAPURI Property IANA Registration โจ
Okay bestie, this one is the CAPURI registration ๐ It's the template that goes to the MIME registration agent, so I'm keeping it exactly as written:
To: ietf-mime-directory@imc.org
Subject: Registration of CAPURI type for application/directory MIME
type vCard profile.
Type name: CAPURI
Type purpose: To specify a protocol independent location from which a
calendaring and scheduling client (i.e., CUA) can communicate with a
user's entire calendar.
Type encoding: 8bit
Type value: A single URI value.
Type special notes: Where multiple CAPURI properties are specified,
the default CAPURI property is indicated with the PREF parameter.
Intended usage: Refer to section 1.3.
2.3.4 CALURI Property IANA Registration ๐ฆ
Next up is CALURI, and it's giving calendar-snapshot energy ๐ Same deal, here's the template verbatim:
To: ietf-mime-directory@imc.org
Subject: Registration of CALURI type for text/directory MIME type
vCard profile.
Type name: CALURI
Type purpose: To specify the URI for a user's calendar in a vCard
object.
Type encoding: 8bit
Type value type: A single URI value.
Type special notes: Where multiple CALURI properties are specified,
the default CALURI property is indicated with the PREF parameter. The
property should contain a URI pointing to an iCalendar object
associated with a snapshot of the user's calendar store. If the
iCalendar object is represented as a file or document, it's file type
should be "ics".
Intended usage: Refer to section 1.4.
Type examples:
CALURI;PREF:http://cal.host1.com/calA
CALURI:ftp://ftp.host1.com/calA.ics
2.4 Directory Lookup Using The LDAP v3 Protocol ๐
Okay so there's another way to grab these URIs, and it's literally just looking them up in a directory with LDAP [1] ๐ง No drama.
If you can find a user's URIs through directory lookup (you're searching for one of the LDAP schema extensions down below), they should, in general, be considered "more up-to-date" than the URIs sitting in any vCards stored locally ๐ Directory data is the fresh tea โ
2.4.1 LDAP Schema Extensions ๐ธ
To encode the calendaring URIs in the directory, these are the things that get defined:
- One object class:
- calEntry
- Eight attributes:
- calCalURI
- calFBURL
- calCAPURI
- calCalAdrURI
- calOtherCalURIs
- calOtherFBURLs
- calOtherCAPURIs
- calOtherCalAdrURIs
So, the vibes for each one: calCalURI holds the URI to a snapshot of the user's entire default calendar. calFBURL holds the URI to the user's default busy time data. calCAPURI holds a URI you can use to talk to the user's calendar. calCalAdrURI holds a URI pointing to where event requests should be sent for that user ๐ฌ
The multi-valued ones are the "other" crew ๐ฏโโ๏ธ calOtherCalURIs has URIs to other calendar snapshots the user might have. calOtherFBURLs has URIs to other free/busy data. calOtherCAPURIs has URIs to other calendars the user might have. calOtherCalAdrURIs has URIs to other places the user might want event requests sent to.
There's no predetermined order to the values in either multi-valued property ๐ฒ Any order is valid, no cap.
2.4.2 Notation ๐
The notation in this memo is the same as the notation used in [2].
2.4.3 Object Definitions ๐ง
2.4.3.1 calEntry ๐
The Calendar Entry is a class derived from "TOP" [2], and it's the one that holds the four calendaring attributes (plus the rest of the crew in its MAY list) ๐
(1.2.840.113556.1.5.87
NAME 'calEntry'
TOP
AUXILIARY
MAY (calCalURI calFBURL calOtherCalURIs calOtherFBURLs calCAPURI
calOtherCAPURLs)
)
2.4.4 Attribute Definitions ๐
2.4.4.1 calCalURI โจ
(1.2.840.113556.1.4.478
NAME 'calCalURI'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
USAGE userApplications
)
2.4.4.2 calFBURL โจ
(1.2.840.113556.1.4.479
NAME 'calFBURL'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
USAGE userApplications
)
2.4.4.3 calCAPURI โจ
(1.2.840.113556.1.4.480
NAME 'calCAPURI'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
USAGE userApplications
)
2.4.4.4 calCalAdrURI โจ
(1.2.840.113556.1.4.481
NAME 'calCalAdrURI'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
USAGE userApplications
)
2.4.4.5 calOtherCalURIs โจ
(1.2.840.113556.1.4.482
NAME 'calOtherCalURIs'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
MULTI-VALUE
USAGE userApplications
)
2.4.4.6 calOtherFBURLs โจ
(1.2.840.113556.1.4.483
NAME 'calOtherFBURLs'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
MULTI-VALUE
USAGE userApplications
)
2.4.4.7 calOtherCAPURIs โจ
(1.2.840.113556.1.4.484
NAME 'calOtherCAPURIs'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
MULTI-VALUE
USAGE userApplications
)
2.4.4.8 calOtherCalAdrURIs โจ
(1.2.840.113556.1.4.485
NAME 'calOtherCalAdrURIs'
EQUALITY caseIgnoreMatch
SUBSTRING caseIgnoreMatch
SYNTAX 'IA5String'
MULTI-VALUE
USAGE userApplications
)
3. IANA Considerations ๐
This memo defines IANA registered extensions to the attributes defined by LDAP [1] and vCard [3].
IANA registration proposals for vCard are to be emailed to the registration agent for the "text/directory" MIME content-type, <MAILTO: ietf-mime-directory@imc.org>, using the format defined in [3] ๐ง
4. Security Considerations ๐จ
Okay, this section is serious business, so please read it carefully bestie ๐
Standard vCard and LDAP security rules and support apply for the extensions described in this document, and there are no special security issues for these extensions.
Please note, though, that LDAP servers may permit anonymous clients to refresh entries which they did not create. Servers are also permitted to control a refresh access to an entry by requiring clients to bind before issuing a RefreshRequest. This will have implications on the server performance and scalability.
Please also note, though, that vCard objects may have been created by an entity other than that represented by the vCard. Recipients should be certain of the source that generated the vCard.
Also, care should be taken in making use of information obtained from directory servers that has been supplied by client, as it may now be out of date. In many networks, for example, IP addresses are automatically assigned when a host connects to the network, and may be reassigned if that host later disconnects. An IP address obtained from the directory may no longer be assigned to the host that placed the address in the directory. This issue is not specific to LDAP or dynamic directories.
5. Acknowledgments ๐ซถ
The authors wish to acknowledge the work of Alec Dun, who acted as an author for the early drafts of this memo. In addition, this document received input from the various participants in the IETF CALSCH Working Group discussions.
6. Authors' Addresses ๐
The following address information is provided in a vCard v3.0 [3], Electronic Business Card, format.
BEGIN:VCARD
VERSION:3.0
N:Small;Tony
FN:Tony Small
ORG:XpertSite.Com
ADR;TYPE=WORK,POSTAL,PARCEL:;;4700 42nd Ave. SW, Suite 440;
Seattle;WA;98116;USA
TEL;TYPE=WORK,MSG:+1-206-937-9972
TEL;TYPE=WORK,FAX:+1-206-936-7329
EMAIL;TYPE=INTERNET:tony@xpertsite.com
CALADRURI:MAILTO:tony@xpertsite.com
END:VCARD
BEGIN:VCARD
VERSION:3.0
N:Hennessy;Denis
FN:Denis Hennessy
ORG:ISOCOR
ADR;TYPE=WORK,POSTAL,PARCEL:;;42-47 Lower Mount St;
Dublin 2;Ireland
TEL;TYPE=WORK,MSG:+353-1-676-0366
TEL;TYPE=WORK,FAX:+353-1-676-0856
EMAIL;TYPE=INTERNET:denis.hennessy@isocor.com
CALADRURI:MAILTO:denis.hennessy@isocor.com
END:VCARD
BEGIN:VCARD
VERSION:3.0
N:Dawson;Frank
FN:Frank Dawson
ORG:Lotus Development Corporation
ADR;TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford Drive;
Raleigh;NC;27613-3502;USA
TEL;TYPE=WORK,PREF:+1-617-693-8728
TEL;TYPE=WORK,MSG:+1-919-676-9515
TEL;TYPE=FAX:+1-617-693-8728
EMAIL;TYPE=INTERNET,PREF:Frank_Dawson@Lotus.com
EMAIL;TYPE=INTERNET:fdawson@earthlink.net
CALADRURI;TYPE=PREF:MAILTO:Frank_Dawson@Lotus.com
CALADRURI:MAILTO:fdawson@earthlink.net
URL:http://home.earthlink.net/~fdawson
END:VCARD
This memo is a result of the work of the Internet Engineering Task Force Calendaring and scheduling Working Group. The chairman of that working group is:
BEGIN:VCARD
VERSION:3.0
N:Egen;Pat
FN:Pat Egen
ORG:Engan Consulting
ADR;TYPE=WORK:;;803 Creek Overlook;Chattanooga;TN;37415;USA
TEL;TYPE=WORK,VOICE:423.875.2652
TEL;TYPE=WORK,FAX:423.875.2017
EMAIL:pregen@egenconsulting.com
URL:http://www.egenconsulting.com
CALADRURI:MAILTO:pregen@egenconsulting.com
END:VCARD
7. Bibliography ๐
[1] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access Protocol (v3)", RFC 2251, December 1997.
[2] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions", RFC 2252, December 1997.
[3] Dawson, F. and T. Howes, "vCard MIME Directory Profile", RFC 2426, September 1998.
[4] Dawson, F. and D. Stenerson, "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 2445, November 1997.
[5] Dawson, F. and S. Mansour, "iCalendar Message-Based Interopability Protocal (iMIP)", RFC 2447, November 1997.
8. Full Copyright Statement โญ
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement ๐ท
Funding for the RFC Editor function is currently provided by the Internet Society ๐
๐ฆ where this page comes from
- ietf: rfc2739 2000-01
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms