| Abstract: | This document specifies a mechanism for requesting specific sections of a vCard. |
| Author: | Daniel Henninger |
| Copyright: | © 1999 - 2011 XMPP Standards Foundation. SEE LEGAL NOTICES. |
| Status: | Deferred |
| Type: | Standards Track |
| Version: | 0.1 |
| Last Updated: | 2005-11-16 |
WARNING: Consideration of this document has been Deferred by the XMPP Standards Foundation. Implementation of the protocol described herein is not recommended.
1. Introduction
2. Requirements
3. Use Cases
3.1. Retrieving Another User's vCard Without The JABBERID Element
4. Security Considerations
5. IANA Considerations
6. XMPP Registrar Considerations
7. XML Schema
Appendices
A: Document Information
B: Author Information
C: Legal Notices
D: Relation to XMPP
E: Discussion Venue
F: Requirements Conformance
G: Notes
H: Revision History
Because XML vCards (see vcard-temp [1]) are now actively used for storing avatars (see vCard-Based Avatars [2]), the ability to retrieve only portions of a vCard has become desirable. This protocol can eliminate unnecessary bandwidth usage when larger elements of a vCard are not needed.
Any entity supporting this extension MUST be prepared to accept more fields than were requested, in case the target does not support this extension. A compliant target SHOULD exclude any fields listed in the filter element. In the event that the filter element does not exist or is empty, the target MUST return the entire vCard as it would without this extension.
To illustrate the functionality of this protocol, we will first request a standard vCard. As shown in XEP-0054, a user may view another user's vCard by sending an IQ of type "get" to the other user's bare JID. A compliant server MUST return the vCard to the requestor and not forward the IQ to the requestee's connected resource.
Example 1. Requesting Another User's vCard
<iq to='jer@jabber.org'
from='stpeter@jabber.org/home'
type='get'
id='v1'>
<vCard xmlns='vcard-temp'/>
</iq>
The server should then return the other user's vCard to the requestor:
Example 2. Receiving Another User's vCard
<iq from='jer@jabber.org'
to='stpeter@jabber.org/home'
type='result'
id='v1'>
<vCard xmlns='vcard-temp'>
<FN>Jeremie Miller</FN>
<N>
<GIVEN>Jeremie</GIVEN>
<FAMILY>Miller</FAMILY>
<MIDDLE/>
</N>
<NICKNAME>jer</NICKNAME>
<EMAIL><INTERNET/><PREF/><USERID>jeremie@jabber.org</USERID></EMAIL>
<JABBERID>jer@jabber.org</JABBERID>
</vCard>
</iq>
A user may request that specific portions of another user's vCard be excluded by including the requested field(s) inside a filter element qualified by the 'vcard-temp-filter' namespace, inside the vCard element.
Example 3. Requesting Another User's vCard Without the JABBERID Element
<iq to='jer@jabber.org'
from='stpeter@jabber.org/home'
type='get'
id='v2'>
<vCard xmlns='vcard-temp'>
<filter xmlns='vcard-temp-filter'>
<JABBERID/>
</filter>
</vCard>
</iq>
The server should then return all available fields from the other user's vCard except for those listed in the filter stanza:
Example 4. Receiving Fields From Another User's vCard
<iq from='jer@jabber.org'
to='stpeter@jabber.org/home'
type='result'
id='v2'>
<vCard xmlns='vcard-temp'>
<FN>JeremieMiller</FN>
<N>
<GIVEN>Jeremie</GIVEN>
<FAMILY>Miller</FAMILY>
<MIDDLE/>
</N>
<NICKNAME>jer</NICKNAME>
<EMAIL><INTERNET/><PREF/><USERID>jeremie@jabber.org</USERID></EMAIL>
</vCard>
</iq>
This document introduces no new security concerns beyond those already involved in implementation and deployment of the 'vcard-temp' protocol.
This document requires no interaction with the Internet Assigned Numbers Authority (IANA) [3].
The XMPP Registrar [4] shall add 'vcard-temp-filter' to its registry of official namespaces.
The schema for the 'vcard-temp-filter' namespace re-uses the element names from the DTD described in XEP-0054.
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='vcard-temp-filter'
xmlns='vcard-temp-filter'
elementFormDefault='qualified'>
<xs:element name='filter'>
<xs:complexType>
<xs:sequence>
<xs:element name='VERSION' type='empty'/>
<xs:element name='FN' type='empty'/>
<xs:element name='N' type='empty'/>
<xs:element name='NICKNAME' type='empty'/>
<xs:element name='PHOTO' type='empty'/>
<xs:element name='BDAY' type='empty'/>
<xs:element name='ADR' type='empty'/>
<xs:element name='LABEL' type='empty'/>
<xs:element name='TEL' type='empty'/>
<xs:element name='EMAIL' type='empty'/>
<xs:element name='JABBERID' type='empty'/>
<xs:element name='MAILER' type='empty'/>
<xs:element name='TZ' type='empty'/>
<xs:element name='GEO' type='empty'/>
<xs:element name='TITLE' type='empty'/>
<xs:element name='ROLE' type='empty'/>
<xs:element name='LOGO' type='empty'/>
<xs:element name='AGENT' type='empty'/>
<xs:element name='ORG' type='empty'/>
<xs:element name='CATEGORIES' type='empty'/>
<xs:element name='NOTE' type='empty'/>
<xs:element name='PRODID' type='empty'/>
<xs:element name='REV' type='empty'/>
<xs:element name='SORT-STRING' type='empty'/>
<xs:element name='SOUND' type='empty'/>
<xs:element name='UID' type='empty'/>
<xs:element name='URL' type='empty'/>
<xs:element name='CLASS' type='empty'/>
<xs:element name='KEY' type='empty'/>
<xs:element name='DESC' type='empty'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name='empty'>
<xs:restriction base='xs:string'>
<xs:enumeration value=''/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Series: XEP
Number: 0164
Publisher: XMPP Standards Foundation
Status:
Deferred
Type:
Standards Track
Version: 0.1
Last Updated: 2005-11-16
Approving Body: XMPP Council
Dependencies: XMPP Core, XEP-0054
Supersedes: None
Superseded By: None
Short Name: vcard-temp-filter
Source Control:
HTML
This document in other formats:
XML
PDF
Email:
jadestorm@nc.rr.com
JabberID:
daniel@jabber.vorpalcloud.org
The Extensible Messaging and Presence Protocol (XMPP) is defined in the XMPP Core (RFC 3920) and XMPP IM (RFC 3921) specifications contributed by the XMPP Standards Foundation to the Internet Standards Process, which is managed by the Internet Engineering Task Force in accordance with RFC 2026. Any protocol defined in this document has been developed outside the Internet Standards Process and is to be understood as an extension to XMPP rather than as an evolution, development, or modification of XMPP itself.
The primary venue for discussion of XMPP Extension Protocols is the <standards@xmpp.org> discussion list.
Discussion on other xmpp.org discussion lists might also be appropriate; see <http://xmpp.org/about/discuss.shtml> for a complete list.
Errata can be sent to <editor@xmpp.org>.
The following requirements keywords as used in this document are to be interpreted as described in RFC 2119: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".
1. XEP-0054: vcard-temp <http://xmpp.org/extensions/xep-0054.html>.
2. XEP-0153: vCard-Based Avatars <http://xmpp.org/extensions/xep-0153.html>.
3. The Internet Assigned Numbers Authority (IANA) is the central coordinator for the assignment of unique parameter values for Internet protocols, such as port numbers and URI schemes. For further information, see <http://www.iana.org/>.
4. The XMPP Registrar maintains a list of reserved protocol namespaces as well as registries of parameters used in the context of XMPP extension protocols approved by the XMPP Standards Foundation. For further information, see <http://xmpp.org/registrar/>.
Note: Older versions of this specification might be available at http://xmpp.org/extensions/attic/
END