XEP-0091: Delayed Delivery

This specification provides canonical documentation of the jabber:x:delay namespace currently used within the Jabber community.


NOTICE: This Historical specification provides canonical documentation of a protocol that is in use within the Jabber/XMPP community. This document is not a standards-track specification within the XMPP Standards Foundation's standards process; however, it may be converted to standards-track in the future or may be obsoleted by a more modern protocol.


Document Information

Series: XEP
Number: 0091
Publisher: XMPP Standards Foundation
Status: Active
Type: Historical
Version: 1.2
Last Updated: 2004-08-17
Approving Body: XMPP Council
Dependencies: XMPP Core
Supersedes: None
Superseded By: None
Short Name: x-delay
Schema: <http://www.xmpp.org/schemas/x-delay.xsd>
Wiki Page: <http://wiki.jabber.org/index.php/Delayed Delivery (XEP-0091)>

Author Information

Peter Saint-Andre

Email: stpeter@jabber.org
JabberID: stpeter@jabber.org

Legal Notice

This XMPP Extension Protocol is copyright 1999 - 2007 by the XMPP Standards Foundation (XSF) and is in full conformance with the XSF's Intellectual Property Rights Policy <http://www.xmpp.org/extensions/ipr-policy.shtml>. This material may be distributed only subject to the terms and conditions set forth in the Creative Commons Attribution License (<http://creativecommons.org/licenses/by/2.5/>).

Discussion Venue

The preferred venue for discussion of this document is the Standards discussion list: <http://mail.jabber.org/mailman/listinfo/standards>.

Relation to XMPP

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.

Conformance Terms

The following 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".


Table of Contents


1. Introduction
2. Protocol Definition
3. Examples
4. A Note on Time Formats
5. Security Considerations
6. IANA Considerations
7. XMPP Registrar Considerations
8. XML Schema
Notes
Revision History


1. Introduction

The Jabber protocols have long included a method for indicating that a message or presence stanza was delayed in being delivered (e.g., because it was stored offline). This method makes use of the 'jabber:x:delay' namespace and has been documented variously in Internet-Drafts and elsewhere. Because this protocol is not required by RFC 2779 [1], the 'jabber:x:delay' namespace was removed from XMPP IM [2]. This specification fills the void for canonical documentation.

2. Protocol Definition

The 'jabber:x:delay' namespace is used to provide timestamp information about data stored for later delivery. The most common uses of this namespace are to stamp:

Information about the delivery delay is communicated by adding to the <message/> or <presence/> stanza one and only one <x/> child qualified by the 'jabber:x:delay' namespace. This information is added by the server or component that delivers the information. The following attributes are allowed on the <x/> element:

In addition, the <x/> element MAY contain XML character data that provides a natural-language description of the reason for the delay.

3. Examples

Example 1. Receiving a Message Sent While Offline

<message
    from='romeo@montague.net/orchard'
    to='juliet@capulet.com'
    type='chat'>
  <body>
    O blessed, blessed night! I am afeard.
    Being in night, all this is but a dream,
    Too flattering-sweet to be substantial.
  </body>
  <x xmlns='jabber:x:delay'
     from='capulet.com'
     stamp='20020910T23:08:25'>
    Offline Storage
  </x>
</message>
  

Example 2. Receiving the Last Presence Update of Another Entity

<presence from='juliet@capulet.com/balcony' to='romeo@montague.net'>
  <status>anon!</status>
  <show>xa</show>
  <priority>1</priority>
  <x xmlns='jabber:x:delay'
     from='juliet@capulet.com/balcony'
     stamp='20020910T23:41:07'/>
</presence>
  

Example 3. Receiving Cached Messages from a Conference Room

<message
    from='coven@macbeth.shakespeare.lit/secondwitch'
    to='macbeth@shakespeare.lit/laptop'
    type='groupchat'>
  <body>
    By the pricking of my thumbs,
    Something wicked this way comes.
    Open, locks,
    Whoever knocks!
  </body>
  <x xmlns='jabber:x:delay'
     from='coven@macbeth.shakespeare.lit'
     stamp='20020910T23:05:37'/>
</message>
  

4. A Note on Time Formats

XMPP Date and Time Profiles [3] defines the lexical representation of dates, times, and datetimes in Jabber protocols. Unfortunately, the 'jabber:x:delay' namespace predates that definition, and uses a datetime format ("CCYYMMDDThh:mm:ss") that is inconsistent with XEP-0082 and XML Schema Part 2 [4]. Because a large base of deployed software uses the old format, this document specifies that applications using 'jabber:x:delay' SHOULD use the old format, not the format defined in XEP-0082. The timezone is be understood as UTC.

5. Security Considerations

Data qualified by the 'jabber:x:delay' can expose information about the sender's presence on the network at some time in the past. However, this introduces no new vulnerabilities, since the same information would have been available in real time.

6. IANA Considerations

This document requires no interaction with the Internet Assigned Numbers Authority (IANA) [5].

7. XMPP Registrar Considerations

The 'jabber:x:delay' namespace is included in the protocol namespaces registry maintained by the XMPP Registrar [6].

8. XML Schema

<?xml version='1.0' encoding='UTF-8'?>

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

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

  <xs:element name='x'>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base='xs:string'>
          <xs:attribute name='from' type='xs:string' use='optional'/>
          <xs:attribute name='stamp' type='xs:string' use='required'/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

</xs:schema>
  

Notes

1. RFC 2779: A Model for Presence and Instant Messaging <http://tools.ietf.org/html/rfc2779>.

2. RFC 3921: Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence <http://tools.ietf.org/html/rfc3921>.

3. XEP-0082: XMPP Date and Time Profiles <http://www.xmpp.org/extensions/xep-0082.html>.

4. XML Schema Part 2: Datatypes <http://www.w3.org/TR/xmlschema-2/>.

5. 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/>.

6. 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://www.xmpp.org/registrar/>.


Revision History

Version 1.2 (2004-08-17)

Specified that the timezone is to be understood as UTC; specified security considerations; corrected several small textual errors. (psa)

Version 1.1 (2004-02-24)

Corrected several small textual errors. (psa)

Version 1.0 (2003-10-08)

Per a vote of the Jabber Council, changed status to Active. (psa)

Version 0.1 (2003-05-22)

Initial version. (psa)

END