<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xep SYSTEM 'xep.dtd' [
  <!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
  <title>Agent Information</title>
  <abstract>This specification provides canonical documentation of the obsolete Agent Information namespace. Note: This document has been superseded by XEP-0030: Service Discovery.</abstract>
  &LEGALNOTICE;
  <number>0094</number>
  <status>Obsolete</status>
  <type>Historical</type>
  <sig>Standards</sig>
  <dependencies>
    <spec>XMPP Core</spec>
  </dependencies>
  <supersedes/>
  <supersededby>
    <spec>XEP-0030</spec>
  </supersededby>
  <shortname>iq-agents</shortname>
  &stpeter;
  <revision>
    <version>0.3</version>
    <date>2003-10-08</date>
    <initials>psa</initials>
    <remark>Per a vote of the Jabber Council, changed status to Obsolete. The protocol described herein is accurately defined but actively deprecated in favor of Service Discovery (XEP-0030).</remark>
  </revision>
  <revision>
    <version>0.2</version>
    <date>2003-09-24</date>
    <initials>psa</initials>
    <remark>Added 'irc' to the values for the &lt;service/&gt; element; made several small textual changes.</remark>
  </revision>
  <revision>
    <version>0.1</version>
    <date>2003-05-23</date>
    <initials>psa</initials>
    <remark>Initial version.</remark>
  </revision>
</header>
<section1 topic='Introduction'>
  <p>Over the years there have been three different protocols used in the Jabber community to discover information about other entities on the network. The most recent protocol, and the only one that is standards-track, is &xep0030;. The protocol prior to Service Discovery was &xep0011;. Before Jabber Browsing, there was the 'jabber:iq:agents' namespace. This specification provides historical documentation for the Agent Information protocol.</p>
  <p>Note well that the Agent Information protocol is deprecated; applications desiring such functionality SHOULD implement Service Discovery. This specification is provided only in order to ensure complete documentation of earlier protocols.</p>
</section1>
<section1 topic='Definition'>
  <p>The 'jabber:iq:agents' namespace was used to obtain a list of entities associated with another Jabber Entity; most commonly, the list of trusted services associated with a specific host.</p>
  <p>When 'jabber:iq:agents' is used, information about available agents properties is contained within a &lt;query/&gt; element that is scoped by the 'jabber:iq:agents' namespace. The reply to a request of type "get" in the 'jabber:iq:agents' namespace contains zero or more &lt;agent/&gt; elements. The &lt;agent/&gt; element has a required 'jid' attribute that contains the Jabber Identifier of each agent. The &lt;agent/&gt; element in turn may contain the following children:</p>
  <ul>
    <li>name - a natural-language name for the service</li>
    <li>description - a short phrase describing the service</li>
    <li>transport - inclusion of this empty element signals that the service is a gateway to a non-Jabber instant messaging system</li>
    <li>groupchat - inclusion of this empty element signals that the service is multi-user chat service</li>
    <li>service - the CDATA of this element specifies the type of gateway (aim, icq, irc, msn, yahoo), the type of conferencing service (public or private), or user directory (jud); these values were never standardized and are not registered with the XMPP Registrar</li>
    <li>register - inclusion of this empty element signals that the service supports registration</li>
    <li>search - inclusion of this empty element signals that the service supports searching</li>
  </ul>
</section1>
<section1 topic='Examples'>
  <example caption='Request for Agents List'><![CDATA[
<iq id='agents1' type='get' to='shakespeare.lit'>
  <query xmlns='jabber:iq:agents'/>
</iq>
  ]]></example>
  <example caption='Reply Containing Agents List'><![CDATA[
<iq
    to='juliet@capulet.com/balcony'
    from='shakespeare.lit'
    type='result'
    id='agents1'>
  <query xmlns='jabber:iq:agents'>
    <agent jid='users.shakespeare.lit'>
      <name>Jabber User Directory</name>
      <service>jud</service>
      <search/>
      <register/>
    </agent>
    <agent jid='chat.shakespeare.lit'>
      <name>Conferencing Service</name>
      <service>public</service>
      <groupchat/>
    </agent>
  </query>
</iq>
  ]]></example>
</section1>
<section1 topic='Security Considerations'>
  <p>There are no security features or concerns related to this proposal.</p>
</section1>
<section1 topic='IANA Considerations'>
  <p>This document requires no interaction with &IANA;.</p>
</section1>
<section1 topic='XMPP Registrar Considerations'>
  <p>No action on the part of the &REGISTRAR; is necessary as a result of this document, since 'jabber:iq:agents' is already a registered namespace.</p>
</section1>
<section1 topic='XML Schema'>
  <code><![CDATA[
<?xml version='1.0' encoding='UTF-8'?>

<xs:schema
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
    targetNamespace='jabber:iq:agents'
    xmlns='jabber:iq:agents'
    elementFormDefault='qualified'>

  <xs:element name='query'>
    <xs:complexType>
      <xs:sequence minOccurs='0'>
        <xs:element ref='agent' minOccurs='0' maxOccurs='unbounded'/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name='agent'>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref='name' minOccurs='0' maxOccurs='1'/>
        <xs:element ref='description' minOccurs='0' maxOccurs='1'/>
        <xs:element ref='transport' minOccurs='0' maxOccurs='1'/>
        <xs:element ref='groupchat' minOccurs='0' maxOccurs='1'/>
        <xs:element ref='service' minOccurs='0' maxOccurs='1'/>
        <xs:element ref='register' minOccurs='0' maxOccurs='1'/>
        <xs:element ref='search' minOccurs='0' maxOccurs='1'/>
      </xs:sequence>
      <xs:attribute name='jid' type='xs:string' use='required'/>
    </xs:complexType>
  </xs:element>

  <xs:element name='name' type='xs:string'/>
  <xs:element name='description' type='xs:string'/>
  <xs:element name='transport'/>
  <xs:element name='groupchat'/>
  <xs:element name='service' type='xs:string'/>
  <xs:element name='register'/>
  <xs:element name='search'/>

</xs:schema>
  ]]></code>
</section1>
</xep>
