RFC 4482
CIPID: Contact Information for the Presence Information Data Format
Network Working Group RFC 4482 ๐
okay bestie, RFC 4482 is giving CIPID: Contact Information for the Presence Information Data Format ๐โจ. It was written by H. Schulzrinne from Columbia U. and published in July 2006 ๐ . It's a Standards Track document, so it's an actual Internet protocol spec ๐. It doesn't obsolete or update any other RFCs, since the title block doesn't list any. ๐
Status of This Memo ๐
This is an Internet standards track protocol for the Internet community, and the authors are asking for discussion and suggestions for improvements ๐ซถ. If you want to know where it stands in standardization, check the current edition of "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited ๐ธ.
Copyright Notice ยฉ๏ธ
Copyright (C) The Internet Society (2006).
Abstract ๐ฆ
The Presence Information Data Format (PIDF) is a basic XML format for showing presence info about a presentity ๐. CIPID is an extension that adds elements to PIDF so you can share extra contact details about a presentity and its contacts, like references to address book entries and icons ๐ง.
Table of Contents ๐
1. Introduction ....................................................2
2. Terminology and Conventions .....................................3
3. CIPID Elements ..................................................3
3.1. Card Element ...............................................3
3.2. Display-Name Element .......................................3
3.3. Homepage Element ...........................................3
3.4. Icon Element ...............................................4
3.5. Map Element ................................................4
3.6. Sound Element ..............................................4
4. Example .........................................................4
5. The XML Schema Definition .......................................6
6. IANA Considerations .............................................7
6.1. URN Sub-Namespace Registration for .........................7
'urn:ietf:params:xml:ns:pidf:cipid'
6.2. Schema Registration for Schema
'urn:ietf:params:xml:ns:pidf:cipid' ........................7
7. Internationalization Considerations .............................8
8. Security Considerations .........................................8
9. References ......................................................9
9.1. Normative References .......................................9
9.2. Informative References ....................................10
1. Introduction ๐
okay so presence info is basically what makes communication flow, and it gets even better when you add basic info about a presentity or contact ๐ . This spec defines a small set of info elements so a watcher can look up more details about a presentity or contact ๐ฅ.
This spec extends the PIDF [9] document format, which is built on Extensible Markup Language [7][8][10] (XML) ๐.
We've got elements for a "business card", links to the homepage, map, and representative sound, plus the display name and an icon โจ. This extra presence info can be used in PIDF [9] documents alongside Rich Presence Information Data format [11] (RPID), future-status [12], and other PIDF extensions ๐ฆ.
All elements extend the <person> element or, less commonly, the <tuple> element in the presence data model [13] ๐. The <tuple> element only gets CIPID elements if the info describes a service that refers to another person, marked by an RPID <relationship> element with a value other than 'self' ๐. Every element in this doc is optional, periodt ๐.
RPID and CIPID both do "rich" presence, which goes way beyond the basic 'open' and 'closed' status in PIDF ๐. You can supply their info independently, though in practice they'll often show up in the same PIDF document ๐ซถ. CIPID covers the more static stuff about someone's presence, while RPID is for stuff that'll likely change throughout the day โญ. So CIPID info can often be set once by the user through the GUI of a presence client, which is less likely to be enough for RPID ๐.
The namespace URI for these elements is a URN [2], using the namespace identifier 'ietf' defined by [4] and extended by [6] ๐ง:
urn:ietf:params:xml:ns:pidf:cipid
2. Terminology and Conventions ๐
The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this document are to be interpreted as described in BCP 14, RFC 2119 [1] ๐. These are the official rule words, so read them carefully bestie ๐ฅ.
3. CIPID Elements ๐
Unless otherwise noted below, each element may only appear at most once ๐.
3.1. Card Element ๐ผ
The <card> element includes a URI pointing to a business card, e.g., in LDAP Data Interchange Format [15] (LDIF) or vCard [14] format ๐ฆ.
3.2. Display-Name Element ๐ธ
The <display-name> element includes the name identifying the tuple or person that the presentity suggests should be shown by the watcher user interface โจ. It's up to the watcher user interface design to decide whether to heed that suggestion or use some other suitable string ๐ซถ. The CIPID info MAY contain multiple display names, but only if they're labeled with different xml:lang attributes ๐. This lets a Korean-speaking presentity show its display name in different languages, like Latin and Hangul ๐ฐ๐ท๐.
3.3. Homepage Element ๐
The <homepage> element provides a URI pointing to general info about the tuple or person, typically a web home page ๐.
3.4. Icon Element ๐ผ๏ธ
The <icon> element provides a URI pointing to an image (icon) that represents the tuple or person ๐. The watcher can use it to represent the tuple or person in a graphical user interface โจ. Presentities SHOULD provide images in sizes and aspect ratios that are appropriate for rendering as an icon ๐. Support for JPEG, PNG, and GIF formats is REQUIRED ๐ฅ.
3.5. Map Element ๐บ๏ธ
The <map> element provides a URI pointing to a map related to the tuple or person ๐ง. The watcher can use it to represent the tuple or person in a graphical user interface ๐
. The map can be an image, an HTML client-side image map, or a geographical information system (GIS) document, e.g., encoded as GML ๐ฆ. Support for images formatted as PNG and GIF is REQUIRED ๐.
3.6. Sound Element ๐
The <sound> element provides a URI pointing to a sound related to the tuple or person ๐ถ. The watcher MAY use the sound object, such as a MIDI or MP3 file referenced by the URL, to let the watcher know the presentity has assumed the status OPEN ๐. Implementors are advised to build user interfaces that give the watcher the chance to choose whether to play those sounds ๐. Support for sounds coded as MPEG-2 Layer 3 (MP3) is RECOMMENDED ๐. The sound object might also be used to show how to pronounce the presentity's name ๐ซถ.
4. Example ๐ง
Here's an example using CIPID only โจ:
<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf"
xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model"
xmlns:c="urn:ietf:params:xml:ns:pidf:cipid"
entity="pres:someone@example.com">
<tuple id="bs35r9">
<status>
<basic>open</basic>
</status>
<contact priority="0.8">im:alice@example.net</contact>
<timestamp>2005-11-21T16:14:29Z</timestamp>
</tuple>
<dm:person id="p1">
<c:card>http://example.com/~alice/card.vcd</c:card>
<c:display-name>Alice Lewis</c:card>
<c:homepage>http://example.com/~alice</c:homepage>
<c:icon>http://example.com/~alice/me.png</c:icon>
<c:map>http://example.com/~alice/gml-map.xml</c:map>
<c:sound>http://example.com/~alice/hello.wav</c:sound>
<dm:timestamp>2005-11-21T09:00:00+05:00</dm:timestamp>
</dm:person>
</presence>
๐ spotted it: in that example, the<c:display-name>element closes with</c:card>. The code is shown exactly as the original has it.
And here's one combining RPID and CIPID ๐ :
<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model"
xmlns:c="urn:ietf:params:xml:ns:pidf:cipid"
xmlns:r="urn:ietf:params:xml:ns:pidf:rpid"
xsi:schemaLocation="urn:ietf:params:xml:ns:pidf pidf.xsd
urn:ietf:params:xml:ns:pidf:data-model data-model.xsd
urn:ietf:params:xml:ns:pidf:cipid cipid.xsd
urn:ietf:params:xml:ns:pidf:rpid rpid.xsd"
entity="pres:someone@example.com">
<tuple id="bs35r9">
<status>
<basic>open</basic>
</status>
<contact priority="0.8">im:someone@mobile.example.net</contact>
<timestamp>2005-05-30T22:00:29Z</timestamp>
</tuple>
<tuple id="bs78">
<status>
<basic>closed</basic>
</status>
<r:relationship><r:assistant/></r:relationship>
<c:card>http://example.com/~assistant/card.vcd</c:card>
<c:homepage>http://example.com/~assistant</c:homepage>
<contact priority="0.1">im:assistant@example.com</contact>
<timestamp>2005-05-30T22:00:29Z</timestamp>
</tuple>
<dm:person id="p1">
<c:card>http://example.com/~someone/card.vcd</c:card>
<c:homepage>http://example.com/~someone</c:homepage>
<c:icon>http://example.com/~someone/icon.gif</c:icon>
<c:map>http://example.com/~someone/gml-map.xml</c:map>
<c:sound>http://example.com/~someone/whoosh.wav</c:sound>
<dm:timestamp>2005-05-30T22:02:44+05:00</dm:timestamp>
</dm:person>
</presence>
Up next: the schema, Section 5 ๐งโจ
6.1. URN Sub-Namespace Registration for 'urn:ietf:params:xml:ns:pidf:cipid' ๐
okay so this is where we ask IANA to register the namespace, aka the official "this XML belongs to us" stamp ๐ Here's the registry entry:
URI: urn:ietf:params:xml:ns:pidf:cipid
Description: This is the XML namespace for XML elements defined by
RFC 4482 to describe contact information presence information
extensions for the status element in the PIDF presence document
format in the application/pidf+xml content type.
Registrant Contact: IETF, SIMPLE working group, simple@ietf.org;
Henning Schulzrinne, hgs@cs.columbia.edu
XML:
And here's the registration XML page itself, which is basically a tiny XHTML landing page ๐ธ
BEGIN
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml
<head>
<meta http-equiv="content-type"
content="text/html;charset=iso-8859-1"/>
<title>CIPID: Contact Information for the Presence Information
Data Format</title>
</head>
<body>
<h1>Namespace for contact information presence extension
(status)</h1>
<h2>urn:ietf:params:xml:ns:pidf:cipid</h2>
<p>See <a href="http://www.rfc-editor.org/rfc/rfc4482.txt">
RFC4482</a>.</p>
</body>
</html>
END
6.2. Schema Registration for Schema 'urn:ietf:params:xml:ns:pidf:cipid' ๐
Same name, different registry ๐ง This one is for the schema itself, so the registrant is the IESG and the XML is the schema shown in Figure 1.
URI: urn:ietf:params:xml:ns:pidf:cipid
Registrant Contact: IESG
XML: See Figure 1
7. Internationalization Considerations ๐
okay this part is lowkey important bestie ๐ซถ CIPID only delivers URLs, except for the <display-name> element. Resolving those URLs can negotiate the right language and character sets, but that happens inside whatever URL-designated protocol you're using, not in CIPID itself.
For the display name, and for handling Internationalized Resource Identifiers (IRIs) [16], CIPID is written in XML, which means it has native support for the Unicode character set and its more compact forms, including UTF-8 ๐ฆ Conformant XML processors recognize both UTF-8 and UTF-16. XML also lets you name other character encodings with an "encoding" attribute in an <?xml?> declaration, but use of UTF-8 is RECOMMENDED in environments where parser encoding support incompatibility exists. Slay the simple option ๐
The xml:lang attribute can tag the language and script of the <display-name> element. You're allowed to have multiple <display-name> elements, so a presentity can show its name in several scripts and languages at once ๐ If there's no xml:lang attribute, the default value is "i-default" [3].
8. Security Considerations ๐
the security stuff is giving "same energy as RPID" ๐ญ The issues are similar to those for RPID [11]. Watchers need to restrict which content types of content pointed to by <icon>, <homepage>, <map>, <sound>, and <vcard> elements they render. Not everything is safe to open, bestie ๐
Also, when a watcher accesses these URIs, the presentity may deduce that the watcher is currently using the presence application. So a presence app that's worried about leaking this may want to cache these objects for later use. (A presentity could easily customize the URLs for each watcher, so that it can tell who is referencing the objects.) Caching can make the info go stale and out of sync with the current data until the cache is refreshed. Fortunately, the elements in CIPID are expected to keep the same content for periods measured in days, so privacy-minded apps may well decide to cache over durations that reveal little current activity information ๐ฅ Presentities need to remember that clients may cache the content referenced by URIs for long periods while they build presence documents with this extension. If the referenced content needs to change often, the presentity could, for example, update the presence document with a new URI to get clients to notice ๐
Icons and other URIs in this document could be used as a covert channel to send messages to the watcher, outside the content monitoring that might be in place for instant messages or other communications channels ๐ So entities that worry about that may want to prohibit URLs pointing to resources outside their domain, for example.
Implementors must take care to adhere to the mechanisms for verifying the identity in the referenced server's certificate against the URI. For instance, if the URI scheme is https, the requirements of RFC 2818 [5], section 3.1, must be met. In particular, the domain represented in the URI must match the subjectAltName in the certificate presented by the referenced server. If this identity check fails, the referenced content SHOULD NOT be retrieved and MUST NOT be used. Non-negotiable, periodt ๐ซโจ
9. References ๐
9.1. Normative References
- [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [2] Moats, R., "URN Syntax", RFC 2141, May 1997.
- [3] Alvestrand, H., "IETF Policy on Character Sets and Languages", BCP 18, RFC 2277, January 1998.
- [4] Moats, R., "A URN Namespace for IETF Documents", RFC 2648, August 1999.
- [5] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
- [6] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January 2004.
- [7] Maloney, M., Beech, D., Thompson, H., and N. Mendelsohn, "XML Schema Part 1: Structures Second Edition", W3C REC REC-xmlschema-1-20041028, October 2004.
- [8] Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes Second Edition", W3C REC REC-xmlschema-2-20041028, October 2004.
- [9] Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W., and J. Peterson, "Presence Information Data Format (PIDF)", RFC 3863, August 2004.
- [10] Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T., and E. Maler, "Extensible Markup Language (XML) 1.0 (Third Edition)", W3C REC REC-xml-20040204, February 2004.
9.2. Informative References
- [11] Schulzrinne, H., Gurbani, V., Kyzivat, P., and J. Rosenberg, "RPID: Rich Presence Extensions to the Presence Information Data Format (PIDF)", RFC 4480, July 2006.
- [12] Schulzrinne, H., "Timed Presence Extensions to the Presence Information Data Format (PIDF) to Indicate Status Information for Past and Future Time Intervals", RFC 4481, July 2006.
- [13] Rosenberg, J., "A Data Model for Presence", RFC 4479, July 2006.
- [14] Dawson, F. and T. Howes, "vCard MIME Directory Profile", RFC 2426, September 1998.
- [15] Good, G., "The LDAP Data Interchange Format (LDIF) - Technical Specification", RFC 2849, June 2000.
- [16] Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC 3987, January 2005.
Acknowledgements ๐ซถ
this doc is based on discussions within the IETF SIMPLE working group, and a bunch of legends gave helpful comments: Spencer Dawkins, Vijay Gurbani, Avshalom Houri, Hisham Khartabil, Paul Kyzivat, Eva Leppanen, Mikko Lonnfors, Aki Niemi, Jon Peterson, Jonathan Rosenberg, and Robert Sparks ๐
Author's Address ๐ฎ
Henning Schulzrinne
Columbia University
Department of Computer Science
450 Computer Science Building
New York, NY 10027
US
Phone: +1 212 939 7004
EMail: hgs+simple@cs.columbia.edu
URI: http://www.cs.columbia.edu
Full Copyright Statement ยฉ
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property ๐ก
the IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to implementing or using the technology described in this document, or on whether any license under those rights might or might not be available. It also doesn't claim to have made any independent effort to identify such rights. Info on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the results of an attempt to get a general license or permission for the use of such proprietary rights by implementers or users of this specification can be found in the IETF online IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org ๐ฆ
Acknowledgement โจ
Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA). ๐
๐ฆ where this page comes from
- ietf: rfc4482 2006-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms