<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep xmlns="">
<header>
  <title>Extended Presence Protocol Suite</title>
  <abstract>This document specifies a set of XMPP extensions that provide support for extended presence information.</abstract>
  
<legal>
<copyright>This XMPP Extension Protocol is copyright © 1999 – 2024 by the <link url="https://xmpp.org/">XMPP Standards Foundation</link> (XSF).</copyright>
<permissions>Permission is hereby granted, free of charge, to any person obtaining a copy of this specification (the "Specification"), to make use of the Specification without restriction, including without limitation the rights to implement the Specification in a software program, deploy the Specification in a network service, and copy, modify, merge, publish, translate, distribute, sublicense, or sell copies of the Specification, and to permit persons to whom the Specification is furnished to do so, subject to the condition that the foregoing copyright notice and this permission notice shall be included in all copies or substantial portions of the Specification. Unless separate permission is granted, modified works that are redistributed shall not contain misleading information regarding the authors, title, number, or publisher of the Specification, and shall not claim endorsement of the modified works by the authors, any organization or project to which the authors belong, or the XMPP Standards Foundation.</permissions>
<warranty>## NOTE WELL: This Specification is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. ##</warranty>
<liability>In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall the XMPP Standards Foundation or any author of this Specification be liable for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising from, out of, or in connection with the Specification or the implementation, deployment, or other use of the Specification (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if the XMPP Standards Foundation or such author has been advised of the possibility of such damages.</liability>
<conformance>This XMPP Extension Protocol has been contributed in full conformance with the XSF's Intellectual Property Rights Policy (a copy of which can be found at &lt;<link url="https://xmpp.org/about/xsf/ipr-policy">https://xmpp.org/about/xsf/ipr-policy</link>&gt; or obtained by writing to XMPP Standards Foundation, P.O. Box 787, Parker, CO 80134 USA).</conformance>
</legal>
  <number>0119</number>
  <status>Retracted</status>
  <type>Standards Track</type>
  <sig>Standards</sig>
  <approver>Council</approver>
  <dependencies>
    <spec>XMPP Core</spec>
    <spec>XMPP IM</spec>
    <spec>XEP-0060</spec>
    <spec>XEP-0073</spec>
    <spec>XEP-0080</spec>
    <spec>XEP-0084</spec>
    <spec>XEP-0107</spec>
    <spec>XEP-0108</spec>
    <spec>XEP-0112</spec>
    <spec>XEP-0163</spec>
  </dependencies>
  <supersedes/>
  <supersededby>
    <spec>XEP-0163</spec>
  </supersededby>
  <shortname>N/A</shortname>
  
  <author>
    <firstname>Peter</firstname>
    <surname>Saint-Andre</surname>
    <email>stpeter@stpeter.im</email>
    <jid>stpeter@jabber.org</jid>
    <uri>https://stpeter.im/</uri>
  </author>

  <revision>
    <version>0.8</version>
    <date>2006-08-08</date>
    <initials>psa</initials>
    <remark><p>Retracted: superseded by Personal Eventing via Pubsub (XEP-0163).</p></remark>
  </revision>
  <revision>
    <version>0.7</version>
    <date>2006-01-19</date>
    <initials>psa</initials>
    <remark><p>Updated to reflect Personal Eventing via Pubsub (XEP-0163).</p></remark>
  </revision>
  <revision>
    <version>0.6</version>
    <date>2005-03-28</date>
    <initials>psa</initials>
    <remark><p>Added avatar support to required protocols.</p></remark>
  </revision>
  <revision>
    <version>0.5</version>
    <date>2004-07-22</date>
    <initials>psa</initials>
    <remark><p>Further defined the pubsub/disco interaction.</p></remark>
  </revision>
  <revision>
    <version>0.4</version>
    <date>2004-05-12</date>
    <initials>psa</initials>
    <remark><p>Removed text on auto-subscribe functionality.</p></remark>
  </revision>
  <revision>
    <version>0.3</version>
    <date>2004-05-11</date>
    <initials>psa</initials>
    <remark><p>Added introduction and background; defined well-known service discovery node for extended presence information; described auto-subscribe functionality.</p></remark>
  </revision>
  <revision>
    <version>0.2</version>
    <date>2003-11-24</date>
    <initials>psa</initials>
    <remark><p>Status changed to Deferred.</p></remark>
  </revision>
  <revision>
    <version>0.1</version>
    <date>2003-09-08</date>
    <initials>psa</initials>
    <remark><p>Initial version.</p></remark>
  </revision>
</header>
<section1 topic="Introduction" anchor="intro">
  <p>A number of network services enable the exchange of information about an entity's availability for communications over the network. This information is usually called "presence". Examples include a person's availability to talk over a traditional or mobile telephony network, chat over an instant messaging (IM) network, or participate in a video conference. In this core sense, presence is a boolean, "on/off" indicator of network availability.</p>
  <p>Over time, this core notion of presence has been extended to include other information about the entity that either (1) changes quickly or (2) affects the entity's interest in or ability to engage in communications. Examples of such "extended presence" include a person's proximity to or interaction with a user agent (e.g., "away" or "do not disturb"), activity (e.g., "driving"), ambient environment (e.g., "noisy"), and mood (e.g., "grumpy"). Related information includes data about the person's available devices (e.g., "phone" or "IM"), current contact modes or address, and date/time ranges for availability. Because extended presence information can change quite often (e.g., several times in the course of a typical IM session), it is distinct from more stable information about the individual (such as is captured in a vCard or other user profile).</p>
  <p>This document describes a unified approach to the provision and communication of extended presence information using the Extensible Messaging and Presence Protocol (XMPP), in the form of a "protocol suite" that incorporates by reference a number of existing XMPP extensions.</p>
</section1>
<section1 topic="Background" anchor="background">
  <p>XMPP began life as a dedicated instant messaging and presence protocol within the Jabber community. The needs of this community were not advanced (simple IM and presence), and the presence model designed by that community mainly takes account of basic presence only (i.e., on/off availability on an IM network). Within this model (and using the terminology of <span class="ref"><link url="http://tools.ietf.org/html/rfc2778">RFC 2778</link></span> <note>RFC 2778: A Model for Presence and Instant Messaging &lt;<link url="http://tools.ietf.org/html/rfc2778">http://tools.ietf.org/html/rfc2778</link>&gt;.</note>), the only watchers are those in the principal's contact list (in XMPP called a "roster"). In addition, authorization to receive basic presence broadcasts is handled by the principal through a combination of roster management and basic presence subscriptions as defined in <span class="ref"><link url="http://tools.ietf.org/html/rfc6121">XMPP IM</link></span> <note>RFC 6121: Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence &lt;<link url="http://tools.ietf.org/html/rfc6121">http://tools.ietf.org/html/rfc6121</link>&gt;.</note>. The presence service is tied to the principal's session with a server, and the server's internal session manager handles both presence and instant messaging functionality (although IM and presence can be separated in system configuration or "on the fly" via negative presence priorities).</p>
  <p>This basic presence model was not designed for the more advanced world of extended presence. While some existing IM clients publish extended presence information as XML extensions to the XMPP &lt;presence/&gt; stanza, that model does not scale well, does not respect the bandwidth restrictions of many clients on the network, and does not provide for more granular control over information access (anyone who receives presence will also receive geolocation data and the like). However, there is a more advanced protocol that is specially designed to fully implement the publish-subscribe design pattern on top of XMPP, specified in <strong>XEP-0060:</strong> <span class="ref"><link url="https://xmpp.org/extensions/xep-0060.html">Publish-Subscribe (XEP-0060)</link></span> <note>XEP-0060: Publish-Subscribe &lt;<link url="https://xmpp.org/extensions/xep-0060.html">https://xmpp.org/extensions/xep-0060.html</link>&gt;.</note>. The publish-subscribe protocol can be used to create a service that provides full control over each type of extended presence data, sending that data only to those specifically authorized to receive it and those who have an active interest in each extension. In particular, for extended presence related to IM users, we specify the use of the personal eventing subset of <span class="ref"><link url="https://xmpp.org/extensions/xep-0060.html">Publish-Subscribe (XEP-0060)</link></span> <note>XEP-0060: Publish-Subscribe &lt;<link url="https://xmpp.org/extensions/xep-0060.html">https://xmpp.org/extensions/xep-0060.html</link>&gt;.</note>, as defined in <cite>XEP-0163</cite>.</p>
  <p>The provision and communication of extended presence information follows the classic publish-subscribe design pattern: an individual publishes information such as geographical location data, and the data is broadcasted to all subscribers who are authorized to receive that data. (Alternatively, the data can be published on behalf of the individual, such as by a mobile telephony service that has knowledge of the individual's geographical location and authorization to act as a publisher of that data.) In general, the relationship between the publisher and subscriber is mediated by a service that receives publication requests, broadcasts data to subscribers, and enables the individual to manage lists of entities that are authorized to publish or subscribe to the data. This model makes it possible to deploy highly flexible extended presence services within the context of XMPP.</p>
  <p>The following diagram provides a schematic representation of such a service.</p>
<code>

Mobile                                     XMPP
Telephony          Principal               Session
Service                |                   Manager
   |__________ ________|_________  __________|
             | |   | |   |   |   | |
             |1| |2| |3| |4| |5| |6|
           +-------------------------+
           |                         |
           |    Extended Presence    |
	   |         Service         |
           |                         |
           +-------------------------+
             |1| |2| |3| |4| |5| |6|
             |___| |_|   | _______|_
               |    |    ||   |    |
              Sub  Sub  Sub  Sub  Sub
</code>
  <p>In this example, there are six different extended presence nodes (these might be, for example, geographical location, avatar, activity, mood, network availability, etc.). The principal is authorized to publish to all six, a Mobile Telephony Service is also authorized to publish to Node 1 (e.g., geolocation), and an XMPP Session Manager is also authorized to publish to Node 6 (e.g., network availability). There are five subscribers: Subscriber 1 is authorized to receive data from Node 1 and Node 2, Subscriber 2 is authorized to Node 2 and Node 3, Subscriber 3 is authorized to receive data from Node 4 and Node 6, and Subscribers 4 and 5 are authorized to receive data from Node 6 only.</p>
</section1>
<section1 topic="Requirements" anchor="reqs">
  <p>This document follows the same approach as <span class="ref"><link url="https://xmpp.org/extensions/xep-0073.html">Basic IM Protocol Suite (XEP-0073)</link></span> <note>XEP-0073: Basic IM Protocol Suite &lt;<link url="https://xmpp.org/extensions/xep-0073.html">https://xmpp.org/extensions/xep-0073.html</link>&gt;.</note>. By design, the Basic IM Protocol Suite does not include more advanced functionality related to "extended presence"; the present document fills the need for a protocol suite that addresses such functionality.</p>
  <p>A protocol is deemed worthy of inclusion in this protocol suite if:</p>
  <ul>
    <li>It addresses "extended presence" data that is defined in other presence services or protocols (e.g., Wireless Village or SIMPLE), or that is felt to be needed within the Jabber/XMPP community.</li>
    <li>It has achieved a status of at least Draft within the XMPP Standards Foundation's standards process (as defined in <span class="ref"><link url="https://xmpp.org/extensions/xep-0001.html">XMPP Extension Protocols (XEP-0001)</link></span> <note>XEP-0001: XMPP Extension Protocols &lt;<link url="https://xmpp.org/extensions/xep-0001.html">https://xmpp.org/extensions/xep-0001.html</link>&gt;.</note>).</li>
  </ul>
</section1>
<section1 topic="Extended Presence Protocol Suite" anchor="suite">
  <p>We define the Extended Presence Protocol Suite as follows:</p>
  <table caption="Required and Recommended Specifications">
    <tr>
      <th>Specification</th>
      <th>Requirement Level</th>
    </tr>
    <tr>
      <td><strong>XEP-0073: Basic IM Protocol Suite</strong></td>
      <td>REQUIRED (prerequisite)</td>
    </tr>
    <tr>
      <td><strong>XEP-0163: Personal Eventing via Pubsub</strong></td>
      <td>REQUIRED (prerequisite)</td>
    </tr>
    <tr>
      <td><span class="ref"><link url="https://xmpp.org/extensions/xep-0080.html">User Geolocation (XEP-0080)</link></span> <note>XEP-0080: User Geolocation &lt;<link url="https://xmpp.org/extensions/xep-0080.html">https://xmpp.org/extensions/xep-0080.html</link>&gt;.</note></td>
      <td>REQUIRED</td>
    </tr>
    <tr>
      <td><span class="ref"><link url="https://xmpp.org/extensions/xep-0112.html">User Physical Location (XEP-0112)</link></span> <note>XEP-0112: User Physical Location &lt;<link url="https://xmpp.org/extensions/xep-0112.html">https://xmpp.org/extensions/xep-0112.html</link>&gt;.</note></td>
      <td>REQUIRED</td>
    </tr>
    <tr>
      <td><span class="ref"><link url="https://xmpp.org/extensions/xep-0108.html">User Activity (XEP-0108)</link></span> <note>XEP-0108: User Activity &lt;<link url="https://xmpp.org/extensions/xep-0108.html">https://xmpp.org/extensions/xep-0108.html</link>&gt;.</note></td>
      <td>REQUIRED</td>
    </tr>
    <tr>
      <td><span class="ref"><link url="https://xmpp.org/extensions/xep-0107.html">User Mood (XEP-0107)</link></span> <note>XEP-0107: User Mood &lt;<link url="https://xmpp.org/extensions/xep-0107.html">https://xmpp.org/extensions/xep-0107.html</link>&gt;.</note></td>
      <td>REQUIRED</td>
    </tr>
    <tr>
      <td><span class="ref"><link url="https://xmpp.org/extensions/xep-0084.html">User Avatar (XEP-0084)</link></span> <note>XEP-0084: User Avatar &lt;<link url="https://xmpp.org/extensions/xep-0084.html">https://xmpp.org/extensions/xep-0084.html</link>&gt;.</note></td>
      <td>REQUIRED *</td>
    </tr>
  </table>
  <p>* <em>Note:</em> The User Avatar specification (<span class="ref"><link url="https://xmpp.org/extensions/xep-0084.html">User Avatar (XEP-0084)</link></span> <note>XEP-0084: User Avatar &lt;<link url="https://xmpp.org/extensions/xep-0084.html">https://xmpp.org/extensions/xep-0084.html</link>&gt;.</note>) has not yet advanced to a status of Draft within the XSF's standards process, and the Extended Presence Protocol Suite will not be submitted for approval until it does so.</p>
</section1>
<section1 topic="Node Discovery" anchor="discovery">
  <p>Discovery of extended presence pubsub nodes is expedited through the use of <cite>Personal Eventing via Pubsub</cite> (PEP), since in PEP services there is a one-to-one relationship between payload types and NodeIDs. The NodeIDs MUST be as follows:</p>
  <ul>
    <li>Activity: http://jabber.org/protocol/activity</li>
    <li>Avatar: http://jabber.org/protocol/avatar#metadata</li>
    <li>Geolocation: http://jabber.org/protocol/geoloc</li>
    <li>Mood: http://jabber.org/protocol/mood</li>
    <li>Physical Location: http://jabber.org/protocol/physloc</li>
  </ul>
  <p>These nodes SHOULD have an access model of either "presence" or "roster".</p>
</section1>
<section1 topic="Security Considerations" anchor="security">
  <p>This document introduces no new security considerations above and beyond those defined in the documents on which it depends. Because publicly exposing some forms of extended presence information (e.g., geolocation information) may lead to unnecessary risks, care should be taken in setting the access model for the relevant pubsub nodes (minimally, an access model of "presence" to take advantage of the bidirectional authorization scheme inherent in XMPP presence subscriptions).</p>
</section1>
<section1 topic="IANA Considerations" anchor="iana">
  <p>This document requires no interaction with the <span class="ref"><link url="http://www.iana.org/">Internet Assigned Numbers Authority (IANA)</link></span> <note>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 &lt;<link url="http://www.iana.org/">http://www.iana.org/</link>&gt;.</note>.</p>
</section1>
<section1 topic="XMPP Registrar Considerations" anchor="registrar">
  <p>This document requires no interaction with the <span class="ref"><link url="https://xmpp.org/registrar/">XMPP Registrar</link></span> <note>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 &lt;<link url="https://xmpp.org/registrar/">https://xmpp.org/registrar/</link>&gt;.</note>.</p>
</section1>
</xep>
