Network Working Group
INTERNET-DRAFT                                                H. Sugano
                                                            S. Fujimoto
                                                                Fujitsu


Expires: February 2002                                      August 2001


                 CPIM Presence Information Data Format
                   <draft-ietf-impp-cpim-pidf-00.txt>

Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet- Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   Please send comments to the authors or to the impp@iastate.edu
   discussion list.


Copyright Notice

   Copyright (C) The Internet Society (2001).  All Rights Reserved.

Abstract

   This memo proposes a common presence format specification for
   discussion in the IMPP WG.  It also contains a list of issues raised
   in the IMPP mailing list so far to accelerate the discussions.





Sugano et al.                                                   [Page 1]


INTERNET DRAFT            CPIM Presence Format               August 2001


1.     Introduction

   The IMPP working group has been trying to build CPIM specifications
   to achieve interoperability of IM and Presence services between
   different protocol domains.  In particular, The work on CPIM Message
   Format [CPIM-MSG] defines a common format for instant messages, which
   enables secure end-to-end IM exchange.  For the presence service,
   although the group has agreed that there should be a common format
   for presence informantion, there has been very little discussion on
   the concrete format for that.

   This memo proposes a CPIM common presence format specification for
   discussion in the group.  It also contains a list of issues raised in
   the IMPP mailing list so far to accelerate the discussions.


2.     Assumptions and design decisions

   We took the starting point of our consideration from the minutes of
   the discussion in the IETF50 IMPP meeting. Thus, the payload content
   for (common) presence information should include:

       presentity URL
       list of contact URLs
            status (open,closed)
            timestamp
            human readable comment
            relative priority
       presentity human readable comment - independent of any contact

   Note that extensibility is required to the format and that it was
   also agreed in the IETF50 meeting that XML should be used for the
   payload format.

   Then, we took the following assumptions for the design.

     (a) A presence payload should be able to be transported securely from
         presentity to watchers.
     (b) A presence server may add some metadata and it may sign or
         encrypt the presence payload.
     (c) Presence tuples from different sources (presentities) may be
         transported in a single NOTIFY message.

   Based on these assumptions, we adopted our overall design decisions
   as follows:

     (1) A presence payload is in XML [XML]. This follows the agreement
         in the IETF50 meeting.



Sugano et al.                                                   [Page 2]


INTERNET DRAFT            CPIM Presence Format               August 2001


     (2) A presence payload is accompanied with RFC822 style headers for
         metadata [RFC822].
     (3) Multiple presence payloads can be enclosed using MIME multipart
         [MIME].


3.     Overall Presence Information Data Structure

   For an overall presence information data format, we propose to reuse
   "message/cpim" content type defined by the CPIM message format
   document [CPIM-MSG] and define some new headers for content-related
   metadata and an XML payload format for presence information.  Note
   that this content can optionally be signed or encrypted using MIME
   security multiparts in conjunction with an appropriate security
   scheme.

   Thus, the complete presence information data looks like this:

      m: Content-type: message/cpim
      s:
      h: (message-metadata-headers)
      s:
      e: (encapsulated MIME entity containing presence payload)

   where, "m:", "s:", "h:", "e:" have the same meaning as defined in the
   CPIM-MSGFMT document and only used to indicate the different parts of
   the presence data.

   Message metadata used for presence information is a subset of those
   defined by the MSGFMT document.


3.1.   Content Part

   The content part of this object, the e: part of the above schema,
   further contains presence payloads with the content headers.  The
   content header part includes the Content-type header, whose value
   indicates whether it contains a single presence payload or multiple
   presence payloads.

   This memo defines a new content type "application/cpim-pidf+xml" for
   an XML-encoded presence payload.  The Content-type header has the
   value application/cpim-pidf+xml when the content part contains a
   single presence payload.

   If the content part contains multiple presence payloads, the value of
   the Content-type header MUST be multipart/mixed.  Each part of the
   multipart entity itself will be an application/cpim-pidf+xml type



Sugano et al.                                                   [Page 3]


INTERNET DRAFT            CPIM Presence Format               August 2001


   object and each part contains content headers for its payload.  It
   can optionally be a signed or encrypted MIME entity using the MIME
   security multiparts in conjunction with an appropriate security
   scheme.


4.     XML-encoded Presence Data Format

   This section defines an XML-encoded presence data format of the
   content type application/cpim-pidf+xml for presence payloads. A
   presence payload of this type is expected to be produced by the
   presentity (the source of the presence information) and transported
   to the watchers by the presence servers or gateways without any
   interpretation or modification.

4.1.   General Design

   The format is designed to align with the agreement in the IMPP group
   so far described in the section 2.   A single payload contains a list
   of presence tuples and other information related to the presentity.

4.2.   XML Format Definitions

   An application/cpim-pidf+xml object is a well formed XML document.

4.2.1. The <presence> element

   The root element of the application/cpim-pidf+xml object is defined
   as <presence>.  This element contains one or more <tuple> elements
   and an optional <timestamp> element.  The reason that the <timestamp>
   is optional is that it is sometimes needed to hide the timestamp of
   the presence information change.

   The <presence> element SHOULD contain an 'xmlns' attribute to
   indicate the namespace of this version of presence payloads.

4.2.2. The <tuple> element

   The <tuple> element is used to carry a piece of presence information
   defined as PRESENCE TUPLE in RFC2778.  Thus, it contains a mandatory
   <status> element and optional <contact>, and <note> elements.

   The <tuple> element MUST contain a 'name' attribute which is used to
   distinguish this tuple from other tuples of the same presentity.  The
   value of 'name' attribute MUST be unique in a single presentity.

4.2.3. The <status> element




Sugano et al.                                                   [Page 4]


INTERNET DRAFT            CPIM Presence Format               August 2001


   The <status> element contains a mandatory <value> element and an
   optional <detail> element.

4.2.4. The <value> element

   The <value> element contains a CDATA value, which is either "open" or
   "closed".   The value "open" means the availability of the contact
   means in a general sense and "closed" means it is unavailable.

4.2.5. The <detail> element

   The <detail> element contains a CDATA value which describes the
   detailed status of the contact means.  This element has a mandatory
   attribute 'type' and an optional attribute 'schema'.  The 'type'
   attribute indicates the type of this tuple and the values of the
   <detail> element varies dependent on the type value.  The optional
   its possible values, which is usually a DTD.

4.2.6. The <contact> element

   The <contact> element contains a URL of the contact address.  It
   optionally has a 'priority' attribute, whose value means a relative
   priority of this contact address over the others.  The value of the
   attribute MUST be an integer ranged from 0 to 255 and the smaller
   integer means the higher priority.

4.2.7. The <note> element

   The <note> element contains a CDATA value, which is usually used for
   a human readable comment related to this tuple.

4.2.8. The <timestamp> element

   The <timestamp> element contains a CDATA value which is a string
   indicating the date and time of the status change of this tuple.  The
   value of this element MUST follow the IMPP datetime format [?].


4.3.   Example

   <presence xmlns="http://www.ietf.org/ns/cpim-pidf-xml-1.0">
     <tuple name="im-1">
       <status>
         <value>open</value>
         <detail type="im"
          schema="http://www.ietf.org/dtd/im-type-im.dtd">away</detail>
       </status>
       <contact priority="2">im:shingo@jp.fujitsu.com</contact>



Sugano et al.                                                   [Page 5]


INTERNET DRAFT            CPIM Presence Format               August 2001


       <note>I'll be in Tokyo tomorrow</note>
     </tuple>
     <tuple name="email">
       <status>
         <value>open</value>
       </status>
       <contact priority="1">mailto:shingo@jp.fujitsu.com</contact>
     </tuple>
   </presence>


4.4.   DTD

   Data Type Definition of the application/cpim-pidf+xml format.

   <!ENTITY % URL         "CDATA">
   <!ENTITY % URI         "CDATA">
   <!ENTITY % DATETIME    "CDATA">
   <!ENTITY % DETAILTYPE  "CDATA">
   <!ENTITY % DETAILVALUE "CDATA">
   <!ENTITY % NOTE        "CDATA">

   <!ELEMENT presence ((tuple+),timestamp?)>
   <!ATTLIST presence
               xmlns     %URI;     #IMPLIED
   >

   <!ELEMENT tuple (status,contact?,note?)>
   <!ATTLIST tuple
               name %TUPLENAME #REQUIRED
   >

   <!ELEMENT status (value,detail?)>

   <!ELEMENT value ("open"|"closed")>

   <!ELEMENT detail %DETAILVALUE>
   <!ATTLIST detail
               type   %DETAILTYPE; #REQUIRED
               schema %URI;        #IMPLIED
   >

   <!ELEMENT contact %URL;>
   <!ATTLIST contact
               priority %PRIORITY; #IMPLIED
   >

   <!ELEMENT note %NOTE;>



Sugano et al.                                                   [Page 6]


INTERNET DRAFT            CPIM Presence Format               August 2001


   <!ELEMENT timestamp %DATETIME;>



5.     Header Definitions

   This section defines a set of headers which are used to convey the
   metadata.  All the metadata, both message and content headers, are
   produced by the presence server.

5.1.   Message Headers

   Among the headers defined by the CPIM message format document [CPIM-
   MSG], we use the following headers to convey the presence
   information.

5.1.1. The 'From' header

   The 'From' header contains the address (pres: URL) of the presentity.
   This header is mandatory.

5.1.2. The 'To' header

   The 'To' header contains the address (pres: URL) of the watcher.
   This header is optional.

5.1.3. The 'DateTime' header

   The 'DateTime' header contains a character string of the format
   defined as IMPP datetime format [DateTime].  This value indicates the
   date and time at which the content part is created.

5.1.4. The 'NS' header

   The "NS" header is used to declare a local namespace prefix as
   defined by [CPIM-MSG].

5.1.5. The 'Require' header

   The "Require" header is used to specify a header or feature that must
   be implemented by the receiver, as defined by [CPIM-MSG].


5.2.   Content Headers

5.2.1. The 'Content-Type' header

   The 'Content-Type' header contains the type of the content.



Sugano et al.                                                   [Page 7]


INTERNET DRAFT            CPIM Presence Format               August 2001


5.2.2. The 'Presence-Data-ID' header

   The 'Presence-Data-ID' header contains the label for the unit of
   update.  This header will be used for indicating the part is
   replacement of the part which contained in previous NOTIFICATION with
   same 'Presence-Data-ID' value.

5.2.3. The 'Presence-Modified' header

   The 'Presence-Modified' header has no value.  This header MAY be used
   only in the NOTIFICATION message if it contains the multipart
   presence payloads.  The existence of this header indicates that this
   part has caused the notification.


6.     Examples

   The following exapmle is the message/cpim object containing two
   presence payload.  It is supposed that the first block is published
   by a PC and the second block is published by a mobile phone, and the
   second block has caused the notification message conveying this
   multipart content.


     Content-Type: message/cpim

     From: pres:shingo_fujimoto@jp.fujitsu.com
     To: pres:suga@flab.fujitsu.co.jp
     DateTime: 2001-06-01T08:35:44+09:00

     Content-Type: multipart/mixed; boundary="PRESENCE-BLOCKS"

     --PRESENCE-BLOCKS
     Content-Type: application/cpim-pidf+xml
     Presence-Data-ID: part1

     <presence>
       <tuple name="im-1">
         <status>
           <value>open</value>
           <detail type="im"
            schema="http://foo.bar.org/dtd/im-type-im.dtd">away</detail>
         </status>
         <contact priority="2">im:shingo@jp.fujitsu.com</contact>
         <note>I'll be in Tokyo tomorrow</note>
       </tuple>
       <tuple name="email">
         <status>



Sugano et al.                                                   [Page 8]


INTERNET DRAFT            CPIM Presence Format               August 2001


           <value>open</value>
         </status>
         <contact
           priority="1">mailto:shingo@jp.fujitsu.com</contact>
       </tuple>
     </presence>
     --PRESENCE-BLOCKS
     Content-Type: application/cpim-pidf+xml
     Presence-Data-ID: part2
     Presence-Modified:

     <presence>
       <tuple name="mobile-phone">
         <status>
           <value>open</value>
         </status>
         <contact priority="9">tel:09012345678</contact>
       </tuple>
       <tuple name="mobile-im">
         <status>
           <value>open</value>
         </status>
         <contact priority="1">im:shingo@mobilecarrier.ne.jp</contact>
       </tuple>
     </presence>
     --PRESENCE-BLOCKS--


7.     Security Considerations

   The proposed format for conveying presence information is so designed
   that it could be adaptable in circumstances under various security
   requirements.

   As a typical case, a user publishing his/her presence information may
   want to sign the data to prevent from being corrupted or tampered.
   This will ensure the integrity of presence information in an end-to-
   end manner.  This proposal enables it by allowing MIME multipart
   security framework, such as usage of the multipart/signed data type.

   Another possible scenario is that of third party signing.  If the
   computing power of the terminal device of the publishing user is
   restricted, the server side signing would be sometimes desirable to
   enhance the level of security in distributing presence information.
   This enables to prevent from so-called "the man in the middle"
   attacks when the presence notifications are distributed through the
   proxies or gateways.




Sugano et al.                                                   [Page 9]


INTERNET DRAFT            CPIM Presence Format               August 2001


8.     Discussions

   The authors understand that there are some issues in our proposal to
   be discussed and agreed on for the common presence format. Those
   could be listed as follows;

   (a) Should such server generated metadata as From, To, DateTime in
   this draft be defined as a part of common presence data format?

     This draft proposes to use several headers as server generated
     metadata as a part of common presence data format.  This is because
     it would be necessary to convey these information to the end system
     (UA) as it is.  It would also be desirable to allow server-side
     third party signing for such data.  So, this may induce another
     relating question; is the third party signing on the presence
     service necessary?

   (b) If the answer to (a) is yes , the next issue is what is the best
   format for the metadata (message/cpim or any other?).

     We have adopted the message/cpim format because it can be reused
     with no difficulty to contain such metadata and it is RFC822 based.
     The reason to prefer an RFC822 based format is that it can nicely
     fit with MIME security framework which could be utilized when the
     user agents sign the presence data.

   (c) Extension framework

     In the earlier idea stage, we thought it preferable that local
     extensions could be confined within a special element (<ext>).
     There have been several objections to it which argue XML is
     naturally extensible and we have no need to such an element. We
     have agreed with their arguments and cut this element out.

   (d) XML format

     We need to agree on the details of the XML format itself. In fact,
     there has been proposed an idea to contain multiple contact
     elements in a single tuple element.  Further discussions are
     needed.



9.     References

   [CPIM] D. Crocker et al., "A Common Profile for Instant Messaging
   (CPIM)", draft-ietf-impp-cpim-01.txt, Work in Progress.




Sugano et al.                                                  [Page 10]


INTERNET DRAFT            CPIM Presence Format               August 2001


   [CPIM-MSG] D. Atkins and G. Klyne, "Common Presence and Instant
   Messaging Message Format", draft-ietf-impp-cpim-msgfmt-03.txt,
   Work in Progress.

   [XML] Extensible Markup Language (XML) 1.0 (Second Edition).
   http://www.w3.org/TR/2000/REC-xml-20001006, A W3C recommendation,
   October 2000.

   [RFC822] D. Crocker, "Standard for the format of ARPA Internet text
   messages", RFC 822, STD 11, Aug 1982.

   [MIME] Multipurpose Internet Mail Extensions.  See RFC 822, RFC 2045,
   RFC 2046, RFC 2047, RFC 2048, and RFC 2049.

   [RFC2778] M. Day, J. Rosenberg, H. Sugano, "A Model for Presence and
   Instant Messaging", RFC 2778, February 2000.

   [RFC2779] M.Day, S.Aggarwal, G.Mohr, and J.Vincent, "Instant
   Messaging / Presence Protocol Requirements", RFC 2779, February 2000.

   [SMIME] P. Hoffman, Ed, "S/MIME Version 3 Message Specification",
   RFC2633, June 1999.

   [DateTime] G. Klyne and C.Newman, "Date and Time on the Internet:
   Timestamps", draft-ietf-impp-datetime-04.txt, Work in Progress.


10.     Author's Addresses

   H. Sugano
   suga@flab.fujitsu.co.jp
   Fujitsu Laboratories Ltd.
   64, Nishiwaki
   Ohkubo-cho
   Akashi 674
   Japan

   S. Fujimoto
   shingo@flab.fujitsu.co.jp
   Fujitsu Laboratories Ltd.
   64, Nishiwaki
   Ohkubo-cho
   Akashi 674
   Japan



11.     Full Copyright Statement



Sugano et al.                                                  [Page 11]


INTERNET DRAFT            CPIM Presence Format               August 2001


   Copyright (C) The Internet Society (2001).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


























Sugano et al.                                                  [Page 12]