<?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>User Time Zone</title>
  <abstract>This specification defines a payload format for communicating information about a user's time zone. The payload format is typically transported using the personal eventing protocol, a profile of XMPP publish-subscribe specified in XEP-0163.</abstract>
  &LEGALNOTICE;
  <number>xxxx</number>
  <status>ProtoXEP</status>
  <type>Standards Track</type>
  <sig>Standards</sig>
  <dependencies>
    <spec>XMPP Core</spec>
    <spec>XEP-0082</spec>
    <spec>XEP-0163</spec>
  </dependencies>
  <supersedes/>
  <supersededby/>
  <shortname>NOT_YET_ASSIGNED</shortname>
  <author>
    <firstname>Lance</firstname>
    <surname>Stout</surname>
    <email>lance@lance.im</email>
    <jid>lance@lance.im</jid>
  </author>
  <revision>
    <version>0.1</version>
    <date>2013-10-28</date>
    <initials>lance</initials>
    <remark><p>Initial version.</p></remark>
  </revision>
</header>
<section1 topic='Introduction' anchor='intro'>
  <p>&xep0060; and &xep0163; can be used to publish a wide variety of "extended presence" information about users. This document specifies an extended presence payload format that communicates information about a user's time zone. For example, this information may be of interest to a user's contacts for displaying notices advising against starting a chat at 4am in the user's local time.</p>
  <p>Time zone information can also be obtained through &xep0202; by directly querying a full JID for a user. However, given that some clients are chiefly concerned with the time zone offset, and in the interest of reducing floods of IQ requests, we define a way to expose the time zone offset via PEP.</p>
</section1>
<section1 topic='Protocol' anchor='protocol'>
  <section2 topic='TZO Element' anchor='protocol-elements'>
    <p>The numeric time zone offset from UTC for the user is expressed as the textual content of the &lt;tzo/&gt; element qualified by the 'urn:xmpp:timezone:0' namespace. <note>While &xep0202; defines its own &lt;tzo/&gt; element, the schema allows for neither its reuse as a standalone element nor for the use of the &lt;time/&gt; element without a &lt;utc/&gt; element.</note> The format MUST conform to the Time Zone Definition (TZD) specified in &xep0082;.</p>
  </section2>
  <section2 topic='Transport Mechanism' anchor='protocol-transport'>
    <p>When a user wishes to share time zone information, its client may publish that fact to a PEP node whose NodeID is "urn:xmpp:timezone:0" &NSNOTE;. Because time zone information is not pure presence information and can change independently of the user's availability, it SHOULD NOT be provided as an extension to the &PRESENCE; stanza type.</p>
    <example caption='User Publishes Time Zone Offset'><![CDATA[
<iq type='set' from='juliet@capulet.example/balcony' id='tzo1'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <publish node='urn:xmpp:timezone:0'>
      <item>
        <tzo xmlns='urn:xmpp:timezone:0'>-07:00</tzo>
      </item>
    </publish>
  </pubsub>
</iq>
    ]]></example>
    <p>The time zone offset is then delivered to all subscribers:</p>
    <example caption='Time Zone Offset is Delivered to All Subscribers'><![CDATA[
<message from='juliet@capulet.example' to='romeo@montague.example'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='urn:xmpp:timezone:0'>
      <item id='1feea9cceec2537e1b561e66d45bc566e276f22f'>
        <tzo xmlns='urn:xmpp:timezone:0'>-07:00</tzo>
      </item>
    </items>
  </event>
</message>
    ]]></example>
    <p>When the user wishes to stop broadcasting its time zone offset, the user's client SHOULD send an empty &lt;tzo/&gt; element with the same ItemID:</p>
    <example caption='User Publishes Stop Information'><![CDATA[
<iq type='set' from='juliet@capulet.example/balcony' id='tzo2'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <publish node='urn:xmpp:timezone:0'>
      <item id='1feea9cceec2537e1b561e66d45bc566e276f22f'>
        <tzo xmlns='urn:xmpp:timezone:0'/>
      </item>
    </publish>
  </pubsub>
</iq>
    ]]></example>
    <example caption='Stop Information is Delivered to All Subscribers'><![CDATA[
<message from='juliet@capulet.example' to='romeo@montague.example'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='urn:xmpp:timezone:0'>
      <item id='1feea9cceec2537e1b561e66d45bc566e276f22f'>
        <tzo xmlns='urn:xmpp:timezone:0'/>
      </item>
    </items>
  </event>
</message>
    ]]></example>
  </section2>
</section1>
<section1 topic='Security Considerations' anchor='security'>
  <p>Revealing an entity's numeric time zone offset may leak limited information about the entity's current location. If the entity's understanding of UTC is far off from actual UTC, revealing that discrepancy may make it possible for an attacker to send XML stanzas that appear to be in the past or future even though they are not; therefore an entity should use the Network Time Protocol (&rfc0958;) or a similar technology to stay synchronized with actual UTC.</p>
</section1>
<section1 topic='IANA Considerations' anchor='iana'>
  <p>This document requires no interaction with &IANA;.</p>
</section1>
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
  <section2 topic='Protocol Namespaces' anchor='ns'>
    <p>The &REGISTRAR; includes 'urn:xmpp:timezone:0' in its registry of protocol namespaces (see &NAMESPACES;).</p>
    <ul>
      <li>urn:xmpp:timezone:0</li>
    </ul>
  </section2>
  <section2 topic='Protocol Versioning' anchor='registrar-versioning'>
    &NSVER;
  </section2>
</section1>
<section1 topic='XML Schema' anchor='schema'>
  <code><![CDATA[
<?xml version='1.0' encoding='UTF-8'?>

<xs:schema
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
    targetNamespace='urn:xmpp:timezone:0'
    xmlns='urn:xmpp:timezone:0'
    elementFormDefault='qualified'>

  <xs:annotation>
    <xs:documentation>
      The protocol documented by this schema is defined in
      XEP-xxxx: http://www.xmpp.org/extensions/xep-xxxx.html
    </xs:documentation>
  </xs:annotation>

  <xs:element name='tzo' type='xs:string'/>

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