%ents; ]>
XMPP URI Scheme Query Components This document defines a registry of query components to be used in the context of XMPP IRIs/URIs and also specifies an initial submission of values to that registry. &LEGALNOTICE; 0147 Active Informational Standards JIG Council XMPP Core RFC 4622 JEP-0053 querytypes &stpeter; 1.2 2006-09-13 psa

Removed probe action.

1.1 2006-06-19 psa

Added actions for roster removal, presence unsubscription, and cancellation of registration; moved querytypes related to XMPP extensions from this document to the relevant JEPs.

1.0 2006-03-23 psa

Per a vote of the Jabber Council, advanced to Active.

0.7 2006-03-16 psa

Added actions for ad-hoc commands and vCard retrieval; clarified some explanatory text.

0.6 2005-12-01 psa

Updated to reflect RFC 4622-03; modified file transfer query operations to handle both send and receive use cases.

0.5 2005-09-05 psa

Updated to reflect RFC 4622-01; added file querytype for file transfer.

0.4 2005-06-06 psa

Updated to reflect RFC 4622-00.

0.3 2005-02-28 psa

Updated to reflect draft-saintandre-xmpp-uri-08 and subsequent XMPP WG discussion; removed use cases for editing roster items, removing roster items, leaving chatrooms, unsubscribing, and unregistering (these make more sense from within a dedicated client); added use case for simultaneously joining a room and inviting other participants; further specified security considerations.

0.2 2004-11-17 psa

Updated to reflect draft-saintandre-xmpp-uri-07; specified Service Discovery usage.

0.1 2004-11-12 psa

Initial version.

&rfc4622; defines a Uniform Resource Identifier (URI) scheme for use in forming URIs and Internationalized Resource Identifiers (IRIs) On the difference between IRIs and URIs, see RFC 3987. from the addresses of entities that can communicate using the Extensible Messaging and Presence Protocol (see &xmppcore;). Such identifiers enable identification of and interaction with XMPP entities by non-native applications such as databases and web browsers.

However, RFC 4622 intentionally leaves the potential values of the query component open-ended, does not provide a list of common "actions" for queries (e.g., send message or join chatroom), and does not specify recommended "key-value" pairs to be used in the context of such actions. Therefore, this document defines a registry of such actions and key-value pairs (to be maintained by the ®ISTRAR;) and specifies a set of initial values for that registry.

This document is organized as follows:

Note: The format of the XMPP URI scheme, including the format of the query component, is fully specified and formally defined in RFC 4622; this document does not modify the xmpp URI scheme in any way and assumes that the reader is familiar with all aspects of RFC 4622.

This document inherits terminology from &rfc3986;, &rfc3987;, and RFC 4622.

The range of actions that might be triggered by interaction with an XMPP entity by means of an XMPP IRI/URI is potentially as wide as the range of extensions to XMPP. This document does not seek to exhaustively define all such potential actions. However, the following actions might be of general interest:

  1. Sending a message.
  2. Adding or removing a roster item.
  3. Subscribing to or unsubscribing from an entity's presence information.
  4. Probing for current presence information.
  5. Determining &jep0030; information about an entity.
  6. Joining a groupchat room (see &jep0045;).
  7. Requesting initiation of &jep0050; associated with an entity.
  8. Retrieving the &jep0054; data associated with an entity.
  9. Subscribing to or unsubscribing from a &jep0060; node.
  10. Registering with another entity via &jep0077;.
  11. Initiating a file transfer with another entity (see &jep0096;).

For each such action, the Jabber Registrar maintains a RECOMMENDED "querytype" (this can be thought of as an action name or "verb"; see RFC 4622 for syntax and semantics) as well as an OPTIONAL list of keys to be used in key-value pairs if appropriate.

The querytypes and key-value pairs related to RFC 3920 and RFC 3921 are defined herein; the querytypes and key-value pairs related to protocols defined in the JSF's JEP series are defined in the relevant JEPs.

It may desirable for an XMPP IRI/URI to trigger a specialized interface for sending an XMPP message stanza. The RECOMMENDED querytype for this action is "message". If no key-value pair is provided, interacting with an XMPP IRI/URI that contains a querytype of "message" SHOULD trigger an interface that enables the user to input the text of an XMPP message and other relevant parameters (e.g., a message subject or &jep0071; markup).

A query component whose querytype is "message" MAY specify various key-value pairs. The following three keys are associated with the child elements of the &MESSAGE; stanza specified in the XML schema for the 'jabber:client' namespace as defined in &xmppim;:

  1. subject
  2. body
  3. thread

In addition, the following three keys are associated with the attributes of the &MESSAGE; stanza specified in the XML schema for the 'jabber:client' namespace (the 'to' attribute is unnecessary, since it is provided by the XMPP address included in the IRI/URI):

  1. from
  2. id
  3. type

Other keys MAY be registered with the Jabber Registrar but are not specified herein.

Test Message Here's a test message. ]]>

The 'jabber:iq:roster' namespace provides a mechanism for managing an XMPP roster (also called a "contact list"). This namespace is defined in RFC 3921. The following actions are defined.

The registered querytype for adding items to the roster or editing items in the roster is "roster" (effectively there is no difference between adding and editing). An XMPP IRI/URI containing a "roster" querytype MAY also include at most one "name" key whose value maps to the 'name' attribute of the <item/> element within the 'jabber:iq:roster' namespace, and MAY contain one "group" key whose value maps to the character data of the <group/> child element of <item/>.

]]> ]]> Friends ]]>

Note: Methods (if any) for including more than one group are yet to be determined.

The 'jabber:iq:roster' namespace includes a mechanism for removing an XMPP roster item. The registered querytype for removing an item from the roster is "remove".

]]>

Closely coupled with roster management is presence subscription management. In XMPP, subscription management is handled via special values of the &PRESENCE; stanza, as described in RFC 3921. The following actions are defined

When an entity subscribes to another entity's presence by means of an XMPP IRI/URI, the invoked XMPP application SHOULD first send a roster add stanza as shown below (this is consistent with the recommendations in RFC 3921).

]]>

XMPP includes a mechanism for unsubscribing from an entity. The registered querytype for doing so is "unsubscribe".

]]>

Internationalization considerations for XMPP IRIs/URIs are specified in RFC 4622; the reader is referred to that document for a complete discussion of the relevant issues.

Localization of application-specific data presented to a human user (e.g., as encapsulated in key-value pairs) is the responsibility of the using protocol.

Security considerations for XMPP IRIs/URIs are specified in RFC 4622.

Completion of some of the actions defined herein will cause changes to an entity's account, subscriptions to information, registration with services, communication with other entities, completion of ad-hoc commands, and the like. Naturally, such changes, information, services, and communications are potentially undesirable (e.g., joining a chatroom whose discussion topic is not of interest to, or even patently offensive to, the joining user). The invoked application SHOULD appropriately warn a human user regarding the potential consequences of the action about to be completed.

This document requires no interaction with &IANA;. If in the future the IANA should wish to maintain a registry of XMPP URI/IRI query components, the Jabber Registrar will cooperate with efforts to migrate the registry from the Jabber Registrar to the IANA.

The Jabber Registrar maintains a registry of querytype values (see &QUERYTYPES;).

®PROCESS; the name of the querytype (e.g., "pubsub") the namespace of associated protocol output (e.g., "http://jabber.org/protocol/pubsub") a natural-language description of the querytype the document in which the querytype is specified the name of the key (e.g., "action") a natural-language description of the key the name of a value (e.g., "subscribe") a natural-language description of the value ]]>

Note: Within the <querytype/> element, the <keys/> child element is OPTIONAL; within any given <key/> element, the <values/> child element is also OPTIONAL.

The registrant may register more than one querytype at a time, each contained in a separate <querytype/> element.

The following submission registers parameters related to the XMPP RFCs. For submissions related to XMPP extensions, refer to the relevant JEPs.

message jabber:client enables sending of an XMPP message stanza JEP-0147 subject a subject for the message per the "jabber:client" schema body a body for the message per the "jabber:client" schema thread a Thread ID for the message per the "jabber:client" schema from a from address for the message per the "jabber:client" schema id an ID for the message per the "jabber:client" schema type the message type per the "jabber:client" schema chat a message of type "chat" groupchat a message of type "groupchat" headline a message of type "headline" normal a message of type "normal" probe jabber:client enables probing for a contact's current presence information JEP-0147 remove jabber:iq:roster enables removing a roster item JEP-0147 roster jabber:iq:roster enables adding or editing a roster item JEP-0147 group the user-assigned group for the roster item name the user-assigned name for the roster item subscribe jabber:client enables sending a presence subscription request JEP-0147 unsubscribe jabber:client enables unsubscribing from an entity's presence JEP-0147 ]]>