summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc4826.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc4826.txt')
-rw-r--r--doc/rfc/rfc4826.txt1739
1 files changed, 1739 insertions, 0 deletions
diff --git a/doc/rfc/rfc4826.txt b/doc/rfc/rfc4826.txt
new file mode 100644
index 0000000..671ffd4
--- /dev/null
+++ b/doc/rfc/rfc4826.txt
@@ -0,0 +1,1739 @@
+
+
+
+
+
+
+Network Working Group J. Rosenberg
+Request for Comments: 4826 Cisco
+Category: Standards Track May 2007
+
+
+ Extensible Markup Language (XML)
+ Formats for Representing Resource Lists
+
+Status of This Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The IETF Trust (2007).
+
+Abstract
+
+ In multimedia communications, presence, and instant messaging
+ systems, there is a need to define Uniform Resource Identifiers
+ (URIs) that represent services that are associated with a group of
+ users. One example is a resource list service. If a user sends a
+ Session Initiation Protocol (SIP) SUBSCRIBE message to the URI
+ representing the resource list service, the server will obtain the
+ state of the users in the associated group, and provide it to the
+ sender. To facilitate definition of these services, this
+ specification defines two Extensible Markup Language (XML) documents.
+ One document contains service URIs, along with their service
+ definition and a reference to the associated group of users. The
+ second document contains the user lists that are referenced from the
+ first. This list of users can be utilized by other applications and
+ services. Both documents can be created and managed with the XML
+ Configuration Access Protocol (XCAP).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 1]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 3. Resource Lists Documents . . . . . . . . . . . . . . . . . . . 4
+ 3.1. Structure . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 3.2. Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 8
+ 3.3. Example Document . . . . . . . . . . . . . . . . . . . . . 9
+ 3.4. Usage with XCAP . . . . . . . . . . . . . . . . . . . . . 10
+ 3.4.1. Application Unique ID . . . . . . . . . . . . . . . . 10
+ 3.4.2. MIME Type . . . . . . . . . . . . . . . . . . . . . . 10
+ 3.4.3. XML Schema . . . . . . . . . . . . . . . . . . . . . . 10
+ 3.4.4. Default Namespace . . . . . . . . . . . . . . . . . . 10
+ 3.4.5. Additional Constraints . . . . . . . . . . . . . . . . 11
+ 3.4.6. Data Semantics . . . . . . . . . . . . . . . . . . . . 11
+ 3.4.7. Naming Conventions . . . . . . . . . . . . . . . . . . 11
+ 3.4.8. Resource Interdependencies . . . . . . . . . . . . . . 12
+ 3.4.9. Authorization Policies . . . . . . . . . . . . . . . . 12
+ 4. RLS Services Documents . . . . . . . . . . . . . . . . . . . . 13
+ 4.1. Structure . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 4.2. Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 14
+ 4.3. Example Document . . . . . . . . . . . . . . . . . . . . . 15
+ 4.4. Usage with XCAP . . . . . . . . . . . . . . . . . . . . . 16
+ 4.4.1. Application Unique ID . . . . . . . . . . . . . . . . 16
+ 4.4.2. MIME Type . . . . . . . . . . . . . . . . . . . . . . 16
+ 4.4.3. XML Schema . . . . . . . . . . . . . . . . . . . . . . 16
+ 4.4.4. Default Namespace . . . . . . . . . . . . . . . . . . 16
+ 4.4.5. Additional Constraints . . . . . . . . . . . . . . . . 16
+ 4.4.6. Data Semantics . . . . . . . . . . . . . . . . . . . . 17
+ 4.4.7. Naming Conventions . . . . . . . . . . . . . . . . . . 17
+ 4.4.8. Resource Interdependencies . . . . . . . . . . . . . . 18
+ 4.4.9. Authorization Policies . . . . . . . . . . . . . . . . 20
+ 4.5. Usage of an RLS Services Document by an RLS . . . . . . . 20
+ 5. SIP URI Canonicalization . . . . . . . . . . . . . . . . . . . 22
+ 6. Extensibility . . . . . . . . . . . . . . . . . . . . . . . . 23
+ 7. Security Considerations . . . . . . . . . . . . . . . . . . . 24
+ 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24
+ 8.1. XCAP Application Unique IDs . . . . . . . . . . . . . . . 24
+ 8.1.1. resource-lists . . . . . . . . . . . . . . . . . . . . 24
+ 8.1.2. rls-services . . . . . . . . . . . . . . . . . . . . . 24
+ 8.2. MIME Type Registrations . . . . . . . . . . . . . . . . . 25
+ 8.2.1. application/resource-lists+xml . . . . . . . . . . . . 25
+ 8.2.2. application/rls-services+xml . . . . . . . . . . . . . 26
+ 8.3. URN Sub-Namespace Registrations . . . . . . . . . . . . . 27
+ 8.3.1. urn:ietf:params:xml:ns:resource-lists . . . . . . . . 27
+ 8.3.2. urn:ietf:params:xml:ns:rls-services . . . . . . . . . 28
+ 8.4. Schema Registrations . . . . . . . . . . . . . . . . . . . 28
+ 8.4.1. urn:ietf:params:xml:schema:resource-lists . . . . . . 28
+
+
+
+Rosenberg Standards Track [Page 2]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ 8.4.2. urn:ietf:params:xml:schema:rls-services . . . . . . . 29
+ 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 29
+ 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29
+ 10.1. Normative References . . . . . . . . . . . . . . . . . . . 29
+ 10.2. Informative References . . . . . . . . . . . . . . . . . . 30
+
+1. Introduction
+
+ The Session Initiation Protocol (SIP) [4] defines the SIP Uniform
+ Resource Identifier (URI) as any resource to which a SIP request can
+ be generated for the purposes of establishing some form of
+ communications operation. These URIs can represent users (for
+ example, sip:joe@example.com). The SIP URI can also represent a
+ service, such as voicemail, conferencing, or a presence list. A
+ common pattern across such SIP services is that the service is
+ defined, and associated with a URI. In order to operate, that
+ service needs to make use of a list of users (or, more generally, a
+ list of resources). When a SIP request is sent to the service URI,
+ the server providing the service reads that list, and then performs
+ some kind of operation against each resource on the list. This is
+ shown in Figure 1.
+
+ /---\
+ | |
+ \---/ Resource
+ +----| | List
+ | | |
+ | \---/
+ |
+ |
+ |
+ |
+ V
+ +-------------+
+ | | -------->
+ | SIP |
+ ---------------> | Service | -------->
+ service | |
+ URI | | -------->
+ +-------------+
+
+ Figure 1
+
+ One important example of such a service is a presence [11] list
+ service. A presence list service allows a client to generate a SIP
+ SUBSCRIBE request to ask for presence information for a list of
+ users. The presence list server obtains the presence for the users
+ on the list and provides them back to the client. A presence list
+
+
+
+Rosenberg Standards Track [Page 3]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ server is a specific case of a resource list server (RLS) [14], which
+ allows a client to generate a SIP SUBSCRIBE request to ask for
+ notifications of SIP events for a list of resources.
+
+ Another example of such a service is an instant conference service.
+ If a client sends a SIP INVITE request to the URI representing the
+ instance conference service, the conference server will create a
+ conference call containing the client and the associated group of
+ users.
+
+ It is very useful for a user of these systems to define the groups of
+ users or resources (generally called a resource list) separately from
+ the services that access those resource lists. Indeed, there are
+ usages for resource lists even in the absence of any associated
+ network-based service. As an example, rather than use a presence
+ list service, a client might generate individual SUBSCRIBE requests
+ to obtain the presence of each user in a locally stored presence
+ list. In such a case, there is a need for a format for storing the
+ list locally on disk. Furthermore, the user might wish to share the
+ list with friends, and desire to email it to those friends. This
+ also requires a standardized format for the resource list.
+
+ As such, this document defines two Extensible Markup Language (XML)
+ document formats. The first is used to represent resource lists,
+ independent of any particular service. The second is used to define
+ service URIs for an RLS, and to associate a resource list with the
+ service URI. This document also defines an XML Configuration Access
+ Protocol (XCAP) [10] application usage for managing each of these two
+ documents.
+
+2. Terminology
+
+ In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+ "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+ and "OPTIONAL" are to be interpreted as described in RFC 2119 [1] and
+ indicate requirement levels for compliant implementations.
+
+3. Resource Lists Documents
+
+3.1. Structure
+
+ A resource lists document is an XML [2] document that MUST be well-
+ formed and MUST be valid according to schemas, including extension
+ schemas, available to the validater and applicable to the XML
+ document. Resource lists documents MUST be based on XML 1.0 and MUST
+ be encoded using UTF-8. This specification makes use of XML
+ namespaces for identifying resource lists documents and document
+ fragments. The namespace URI for elements defined by this
+
+
+
+Rosenberg Standards Track [Page 4]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ specification is a URN [3] that uses the namespace identifier 'ietf'
+ defined by RFC 2648 [6] and extended by RFC 3688 [8]. This URN is:
+
+ urn:ietf:params:xml:ns:resource-lists
+
+ A resource lists document has the <resource-lists> element as the
+ root element of the document. This element has no attributes. Its
+ content is a sequence of zero or more <list> elements, each of which
+ defines a single resource list.
+
+ Each <list> element can contain an optional "name" attribute. This
+ attribute is a handle for the list. When present, it MUST be unique
+ amongst all other <list> elements within the same parent element.
+ The <list> element may also contain attributes from other namespaces,
+ for the purposes of extensibility.
+
+ Each <list> element is composed of an optional display name, a
+ sequence of zero or more elements, each of which may be an <entry>
+ element, a <list> element, an <entry-ref> element, or an <external>
+ element, followed by any number of elements from other namespaces,
+ for the purposes of extensibility. The ability of a <list> element
+ to contain other <list> elements means that a resource list can be
+ hierarchically structured. The <display-name> then allows for a
+ human-friendly name to be associated with each level in the
+ hierarchy. An <entry> element describes a single resource, defined
+ by a URI, that is part of the list. An <entry-ref> element allows an
+ entry in a document within the same XCAP root to be included by
+ reference, rather than by value. An <external> element contains a
+ reference to a list stored on this or another server.
+
+ The <entry> element describes a single resource. The <entry> element
+ has a single mandatory attribute, "uri". This attribute is equal to
+ the URI that is used to access the resource. The resource list
+ format itself does not constrain the type of URI that can be used.
+ However, the service making use of the resource list may require
+ specific URI schemes. For example, RLS services will require URIs
+ that represent subscribeable resources. This includes the SIP and
+ pres [15] URIs. The "uri" attribute MUST be unique amongst all other
+ "uri" attributes in <entry> elements within the same parent.
+ Uniqueness is determined by case-sensitive string comparisons. As
+ such, it is possible that two "uri" attributes will have the same URI
+ when compared using the functional equality rules defined for that
+ URI scheme, but different ones when compared using case sensitive
+ string comparison. The <entry> element can also contain attributes
+ from other namespaces for the purposes of extensibility.
+
+ The <entry> element contains a sequence of elements that provide
+ information about the entry. Only one such element is defined at
+
+
+
+Rosenberg Standards Track [Page 5]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ this time, which is <display-name>. This element provides a UTF-8-
+ encoded string, meant for consumption by a human user, that describes
+ the resource. Unlike the "name" attribute of the <entry> element,
+ the <display-name> has no uniqueness requirements. The <display-
+ name> element can contain the "xml:lang" attribute, which provides
+ the language of the display name. The <entry> element can contain
+ other elements from other namespaces. This is meant to support the
+ inclusion of other information about the entry, such as a phone
+ number or postal address.
+
+ The <entry-ref> element allows an entry to be included in the list by
+ reference, rather than by value. This element is only meaningful
+ when the document was obtained through XCAP. In such a case, the
+ referenced entry has to exist within the same XCAP root. The <entry>
+ element has a single mandatory attribute, "ref". The "ref" attribute
+ MUST be unique amongst all other "ref" attributes in <entry-ref>
+ elements within the same parent. Uniqueness is determined by case
+ sensitive string comparisons. The <entry-ref> element also allows
+ attributes from other namespaces, for the purposes of extensibility.
+ The content of an <entry-ref> element is an optional display name,
+ followed by any number of elements from other namespaces, for the
+ purposes of extensibility. The display name is useful for providing
+ a localized nickname as an alternative to the name defined in the
+ <entry> to which the <entry-ref> refers.
+
+ The content of the "ref" attribute is a relative HTTP URI [7].
+ Specifically, it MUST be a relative path reference, where the base
+ URI is equal to the XCAP root URI of the document in which the
+ <entry-ref> appears. This relative URI, if resolved into an absolute
+ URI according to the procedures in RFC 3986, MUST resolve to an
+ <entry> element within a resource-lists document. For example,
+ suppose that an <entry> element within a specific XCAP root was
+ identified by the following HTTP URI:
+
+ http://xcap.example.com/resource-lists/users/sip:bill@example.com/
+ index/~~/resource-lists/list%5b@name=%22list1%22%5d/
+ entry%5b@uri=%22sip:petri@example.com%22%5d
+
+ If http://xcap.example.com is the XCAP root URI, then an <entry-ref>
+ element pointing to this entry would have the following form:
+
+ <entry-ref ref="resource-lists/users/sip:bill@example.com/
+ index/~~/resource-lists/list%5b@name=%22list1%22%5d/
+ entry%5b@uri=%22sip:petri@example.com%22%5d"/>
+
+ Note that line folding within the HTTP URI and XML attribute above
+ are for the purposes of readability only. Also note that, as
+ described in RFC 3986, the relative path URI does not begin with the
+
+
+
+Rosenberg Standards Track [Page 6]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ "/". Since the relative URI used within the "ref" attribute must be
+ a relative path URI, the "/" will never be present as the first
+ character within the content of a "ref" attribute. Since the content
+ of the "ref" attribute is a valid HTTP URI, it must be percent-
+ encoded within the XML document.
+
+ The <external> element is similar to the <entry-ref> element. Like
+ <entry-ref>, it is only meaningful in documents obtained from an XCAP
+ server. It too is a reference to content stored elsewhere. However,
+ it refers to an entire list, and furthermore, it allows that list to
+ be present on another server. The <external> element has a single
+ mandatory attribute, "anchor", which specifies the external list by
+ means of an absolute HTTP URI. The "anchor" attribute MUST be unique
+ amongst all other "anchor" attributes in <external> elements within
+ the same parent. Uniqueness is determined by case-sensitive string
+ comparisons. The <external> element can also contain attributes from
+ other namespaces, for the purposes of extensibility. The content of
+ an <external> element is an optional <display-name> followed by any
+ number of elements from another namespace, for the purposes of
+ extensibility. The value of the "anchor" attribute MUST be an
+ absolute HTTP URI. This URI MUST identify an XCAP resource, and in
+ particular, it MUST represent a <list> element within a resource
+ lists document. The URI MUST be percent-encoded.
+
+ For both the <entry-ref> and <external> elements, the responsibility
+ of resolving their references falls upon the entity that is making
+ use of the document. When the document is used in conjunction with
+ XCAP, this means that the burden falls on the XCAP client. If the
+ XCAP client is a PC-based application using the resource-lists
+ document as a presence list, the references would likely be resolved
+ upon explicit request by the user. They can, of course, be resolved
+ at any time. If the XCAP client is an RLS itself, the references
+ would be resolved when the RLS receives a SUBSCRIBE request for an
+ RLS service associated with a resource list that contains one of
+ these references (see below). An XCAP server defined by this
+ specification will not attempt to resolve the references before
+ returning the document to the client. Similarly, if, due to network
+ errors or some other problem, the references cannot be resolved, the
+ handling is specific to the usage of the document. For resource
+ lists being used by RLS services, the handling is discussed below.
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 7]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+3.2. Schema
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <xs:schema targetNamespace="urn:ietf:params:xml:ns:resource-lists"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:ietf:params:xml:ns:resource-lists"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+ <xs:complexType name="listType">
+ <xs:sequence>
+ <xs:element name="display-name" type="display-nameType"
+ minOccurs="0"/>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:choice>
+ <xs:element name="list">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="listType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="external" type="externalType"/>
+ <xs:element name="entry" type="entryType"/>
+ <xs:element name="entry-ref" type="entry-refType"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <xs:complexType name="entryType">
+ <xs:sequence>
+ <xs:element name="display-name" minOccurs="0">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="display-nameType"/>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="uri" type="xs:anyURI" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+
+
+Rosenberg Standards Track [Page 8]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ <xs:complexType name="entry-refType">
+ <xs:sequence>
+ <xs:element name="display-name" type="display-nameType"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ref" type="xs:anyURI" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <xs:complexType name="externalType">
+ <xs:sequence>
+ <xs:element name="display-name" type="display-nameType"
+ minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="anchor" type="xs:anyURI"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <xs:element name="resource-lists">
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="list" type="listType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="display-nameType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute ref="xml:lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:schema>
+
+3.3. Example Document
+
+ The following is an example of a document compliant to the schema.
+ All line feeds within element content are for display purposes only.
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <list name="friends">
+ <entry uri="sip:bill@example.com">
+ <display-name>Bill Doe</display-name>
+ </entry>
+
+
+
+Rosenberg Standards Track [Page 9]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ <entry-ref ref="resource-lists/users/sip:bill@example.com/index/~~/
+ resource-lists/list%5b@name=%22list1%22%5d/entry%5b@uri=%22sip:pet
+ ri@example.com%22%5d"/>
+ <list name="close-friends">
+ <display-name>Close Friends</display-name>
+ <entry uri="sip:joe@example.com">
+ <display-name>Joe Smith</display-name>
+ </entry>
+ <entry uri="sip:nancy@example.com">
+ <display-name>Nancy Gross</display-name>
+ </entry>
+ <external anchor="http://xcap.example.org/resource-lists/users/
+ sip:a@example.org/index/~~/resource-lists/list%5b@name=%22mkti
+ ng%22%5d">
+ <display-name>Marketing</display-name>
+ </external>
+ </list>
+ </list>
+ </resource-lists>
+
+3.4. Usage with XCAP
+
+ Resource lists documents can be manipulated with XCAP. This section
+ provides the details necessary for such a usage.
+
+3.4.1. Application Unique ID
+
+ XCAP requires application usages to define an application unique ID
+ (AUID) in either the IETF tree or a vendor tree. This specification
+ defines the "resource-lists" AUID within the IETF tree, via the IANA
+ registration in Section 8.
+
+3.4.2. MIME Type
+
+ The MIME type for this document is "application/resource-lists+xml".
+
+3.4.3. XML Schema
+
+ The XML Schema for this document is defined as the sole content of
+ Section 3.2.
+
+3.4.4. Default Namespace
+
+ The default namespace used in expanding URIs is
+ urn:ietf:params:xml:ns:resource-lists.
+
+
+
+
+
+
+Rosenberg Standards Track [Page 10]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+3.4.5. Additional Constraints
+
+ In addition to the schema, there are constraints on the values
+ present in the "name" attribute of the <list> element, the "uri"
+ attribute of the <external> element, the "ref" attribute of the
+ <entry-ref> element, and the "anchor" attribute of the <external>
+ element. These constraints are defined in Section 3.1. Some of
+ these constraints are enforced by the XCAP server. Those constraints
+ are:
+
+ o The "name" attribute in a <list> element MUST be unique amongst
+ all other "name" attributes of <list> elements within the same
+ parent element. Uniqueness is determined by case-sensitive string
+ comparison.
+
+ o The "uri" attribute in a <entry> element MUST be unique amongst
+ all other "uri" attributes of <entry> elements within the same
+ parent element. Uniqueness is determined by case-sensitive string
+ comparison.
+
+ o The URI in the "ref" attribute of the <entry-ref> element MUST be
+ unique amongst all other "ref" attributes of <entry-ref> elements
+ within the same parent element. Uniqueness is determined by case-
+ sensitive string comparison. The value of the attribute MUST be a
+ relative path reference. Note that the server is not responsible
+ for verifying that the reference resolves to an <entry> element in
+ a document within the same XCAP root.
+
+ o The URI in the "anchor" attribute of the <external> element MUST
+ be unique amongst all other "anchor" attributes of <external>
+ elements within the same parent element. Uniqueness is determined
+ by case-sensitive string comparison. The value of the attribute
+ MUST be an absolute HTTP URI. Note that the server is not
+ responsible for verifying that the URI resolves to a <list>
+ element in a document. Indeed, since the URI may reference a
+ server in another domain, referential integrity cannot be
+ guaranteed without adding substantial complexity to the system.
+
+3.4.6. Data Semantics
+
+ Semantics for the document content are provided in Section 3.1.
+
+3.4.7. Naming Conventions
+
+ Resource lists documents are usually identified as references from
+ other application usages. For example, an RLS services document
+ contains a reference to the resource list it uses.
+
+
+
+
+Rosenberg Standards Track [Page 11]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ Frequently, an XCAP client will wish to insert or remove an <entry>,
+ <entry-ref>, or <external> element from a document without having a
+ cached copy of that document. In such a case, the "uri" attribute of
+ the <entry> element, the "ref" attribute of the <entry-ref> element,
+ or the "anchor" attribute of the <external> element is used as an
+ index to select the element to operate upon. The XCAP server will
+ determine uniqueness by case-sensitive string comparison. However,
+ each of these attributes contain URIs, and the URI equality rules for
+ their schemes may allow two URIs to be the same, even if they are
+ different by case sensitive string comparison. As such, it is
+ possible that a client will attempt a PUT or DELETE in an attempt to
+ modify or remove an existing element. Instead, the PUT ends up
+ inserting a new element, or the DELETE ends up returning an error
+ response.
+
+ If the XCAP client cannot determine whether the user intent is to
+ create or replace, the client SHOULD canonicalize the URI before
+ performing the operation. For a SIP URI (often present in the "uri"
+ attribute of the <entry> element), this canonicalization procedure is
+ defined in Section 5. We expect that the SIP URIs that will be
+ placed into resource lists documents will usually be of the form
+ sip:user@domain, and possibly include a user parameter. The
+ canonicalization rules work perfectly for these URIs.
+
+ For HTTP URIs, a basic canonicalization algorithm is as follows. If
+ the port in the URI is equal to the default port (80 for http URIs),
+ then the port is removed. The hostname is converted to all
+ lowercase. Any percent-encoding in the URI for characters which do
+ not need to be percent-encoded is removed. A character needs to be
+ percent-encoded when it is not permitted in that part of the URI
+ based on the grammar for that part of the URI.
+
+3.4.8. Resource Interdependencies
+
+ There are no resource interdependencies identified by this
+ application usage.
+
+3.4.9. Authorization Policies
+
+ This application usage does not modify the default XCAP authorization
+ policy, which is that only a user can read, write, or modify their
+ own documents. A server can allow privileged users to modify
+ documents that they don't own, but the establishment and indication
+ of such policies is outside the scope of this document. It is
+ anticipated that a future application usage will define which users
+ are allowed to modify a list resource.
+
+
+
+
+
+Rosenberg Standards Track [Page 12]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+4. RLS Services Documents
+
+4.1. Structure
+
+ An RLS services document is used to define URIs that represent
+ services provided by a Resource List Server (RLS) as defined in [14].
+ An RLS services document is an XML [2] document that MUST be well-
+ formed and MUST be valid according to schemas, including extension
+ schemas, available to the validater and applicable to the XML
+ document. RLS services documents MUST be based on XML 1.0 and MUST
+ be encoded using UTF-8. This specification makes use of XML
+ namespaces for identifying RLS services documents and document
+ fragments. The namespace URI for elements defined by this
+ specification is a URN [3] that uses the namespace identifier 'ietf'
+ defined by RFC 2648 [6] and extended by RFC 3688 [8]. This URN is:
+
+ urn:ietf:params:xml:ns:rls-services
+
+ The root element of an rls-services document is <rls-services>. It
+ contains a sequence of <service> elements, each of which defines a
+ service available at an RLS.
+
+ Each <service> element has a single mandatory attribute, "uri". This
+ URI defines the resource associated with the service. That is, if a
+ client subscribes to that URI, they will obtain the service defined
+ by the corresponding <service> element. The <service> element can
+ also contain attributes from other namespaces, for the purposes of
+ extensibility. The <service> element contains child elements that
+ define the service. For an RLS service, very little service
+ definition is needed: just the resource list to which the server will
+ perform virtual subscriptions [14] and the set of event packages that
+ the service supports. The former can be conveyed in one of two ways.
+ There can be a <resource-list> element, which points to a <list>
+ element in a resource-lists document, or there can be a <list>
+ element, which includes the resource list directly. The supported
+ packages are contained in the <packages> element. The <service>
+ element can also contain elements from other namespaces, for the
+ purposes of extensibility.
+
+ By including the contents of the resource list directly, a user can
+ create lists and add members to them with a single XCAP operation.
+ However, the resulting list becomes "hidden" within the RLS service
+ definition, and is not usable by other application usages. For this
+ reason, the <resource-list> element exists as an alternative. It can
+ reference a <list> element in a resource-lists document. Since the
+ list is separated from the service definition, it can be easily
+ reused by other application usages.
+
+
+
+
+Rosenberg Standards Track [Page 13]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ The <list> element is of the list type defined by the schema for
+ resource lists. It is discussed in Section 3.1.
+
+ The <resource-list> element contains a URI. This element is only
+ meaningful when the document was obtained through XCAP. The URI MUST
+ be an absolute HTTP URI representing an XCAP element resource. Its
+ XCAP root MUST be the same as the XCAP root of the RLS services
+ document. When the RLS services document is present in a user's home
+ directory, the HTTP URI MUST exist underneath that user's home
+ directory in the resource-lists application usage. When the RLS
+ services document is in the global directory, the HTTP URI MUST exist
+ underneath any user's home directory in the resource-lists
+ application usage. In either case, the element referenced by the URI
+ MUST be a <list> element within a resource-lists document. All of
+ these constraints except for the latter one (which is a referential
+ integrity constraint) will be enforced by the XCAP server.
+
+ The <packages> element contains a sequence of <package> elements.
+ The content of each <package> element is the name of a SIP event
+ package [13]. The <packages> element may also contain elements from
+ additional namespaces, for the purposes of extensibility. The
+ <packages> element is optional. When it is not present, it means
+ that the RLS service will accept subscriptions for any event package.
+
+4.2. Schema
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <xs:schema targetNamespace="urn:ietf:params:xml:ns:rls-services"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:ietf:params:xml:ns:rls-services"
+ xmlns:rl="urn:ietf:params:xml:ns:resource-lists"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:element name="rls-services">
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="service" type="serviceType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="serviceType">
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="resource-list" type="xs:anyURI"/>
+ <xs:element name="list" type="rl:listType"/>
+ </xs:choice>
+ <xs:element name="packages" type="packagesType" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+
+
+
+Rosenberg Standards Track [Page 14]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ </xs:sequence>
+ <xs:attribute name="uri" type="xs:anyURI" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ <xs:complexType name="packagesType">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="package" type="packageType"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="packageType">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ </xs:schema>
+
+4.3. Example Document
+
+ This document shows two services. One is sip:mybuddies@example.com,
+ and the other is sip:marketing@example.com. The former service
+ references a resource list in a resource-lists document, and the
+ latter one includes a list locally. Both services are for the
+ presence event package only.
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <rls-services xmlns="urn:ietf:params:xml:ns:rls-services"
+ xmlns:rl="urn:ietf:params:xml:ns:resource-lists"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <service uri="sip:mybuddies@example.com">
+ <resource-list>http://xcap.example.com/resource-lists/user
+ s/sip:joe@example.com/index/~~/resource-lists/list%5b@nam
+ e=%22l1%22%5d</resource-list>
+ <packages>
+ <package>presence</package>
+ </packages>
+ </service>
+ <service uri="sip:marketing@example.com">
+ <list name="marketing">
+ <rl:entry uri="sip:joe@example.com"/>
+ <rl:entry uri="sip:sudhir@example.com"/>
+ </list>
+ <packages>
+ <package>presence</package>
+ </packages>
+ </service>
+ </rls-services>
+
+
+
+
+
+Rosenberg Standards Track [Page 15]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+4.4. Usage with XCAP
+
+ RLS services documents can be manipulated with XCAP. This section
+ provides the details necessary for such a usage.
+
+4.4.1. Application Unique ID
+
+ XCAP requires application usages to define an application unique ID
+ ID (AUID) in either the IETF tree or a vendor tree. This
+ specification defines the "rls-services" AUID within the IETF tree,
+ via the IANA registration in Section 8.
+
+4.4.2. MIME Type
+
+ The MIME type for this document is "application/rls-services+xml".
+
+4.4.3. XML Schema
+
+ The XML Schema for this document is defined as the sole content of
+ Section 4.2.
+
+4.4.4. Default Namespace
+
+ The default namespace used in expanding URIs is
+ urn:ietf:params:xml:ns:rls-services.
+
+4.4.5. Additional Constraints
+
+ In addition to the schema, there are constraints on the URIs present
+ in the <service> and <resource-list> elements. These constraints are
+ defined in Section 3.1. Some of these constraints are enforced by
+ the XCAP server. Those constraints are:
+
+ o The URI in the "uri" attribute of the <service> element MUST be
+ unique amongst all other URIs in "uri" elements in any <service>
+ element in any document on a particular server. This uniqueness
+ constraint spans across XCAP roots. Furthermore, the URI MUST NOT
+ correspond to an existing resource within the domain of the URI.
+ If a server is asked to set the URI to something that already
+ exists, the server MUST reject the request with a 409, and use the
+ mechanisms defined in [10] to suggest alternate URIs that have not
+ yet been allocated.
+
+ o The URI in a <resource-list> element MUST be an absolute URI. The
+ server MUST verify that the URI path contains "resource-lists" in
+ the path segment corresponding to the AUID. If the RLS services
+ document is within the XCAP user tree (as opposed to the global
+ tree), the server MUST verify that the XUI in the path is the same
+
+
+
+Rosenberg Standards Track [Page 16]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ as the XUI in the URI of to the RLS services document. These
+ checks are made by examining the URI value, as opposed to
+ dereferencing the URI. The server is not responsible for
+ verifying that the URI actually points to a <list> element within
+ a valid resource lists document.
+
+ o In addition, an RLS services document can contain a <list>
+ element, which in turn can contain <entry>, <entry-ref>, <list>,
+ and <external> elements. The constraints defined for these
+ elements in Section 3.4.7 MUST be enforced.
+
+ o In some cases, an XCAP client will wish to create a new RLS
+ service, and wish to assign it a "vanity URI", such as
+ sip:friends@example.com. However, the client does not know
+ whether this URI meets the uniqueness constraints defined above.
+ In that case, it can simply attempt the creation operation, and if
+ the result is a 409 that contains a detailed conflict report with
+ the <uniqueness-failure> element, the client knows that the URI
+ could not be assigned. It can then retry with a different vanity
+ URI, or use one of the suggestions in the detailed conflict
+ report.
+
+ o If the client wishes to create a new RLS service, and it doesn't
+ care what the URI is, the client creates a random one, and
+ attempts the creation operation. As discussed in [10], if this
+ should fail with a uniqueness conflict, the client can retry with
+ different URIs with increasing randomness.
+
+4.4.6. Data Semantics
+
+ Semantics for the document content are provided in Section 4.1.
+
+4.4.7. Naming Conventions
+
+ Typically, there are two distinct XCAP clients that access RLS
+ services documents. The first is a client acting on behalf of the
+ end user in the system. This client edits and writes both resource
+ lists and RLS services documents as they are created or modified by
+ the end user. The other XCAP client is the RLS itself, which reads
+ the RLS services documents in order to process SUBSCRIBE requests.
+
+ To make it easier for an RLS to find the <service> element for a
+ particular URI, the XCAP server maintains, within the global tree, a
+ single RLS services document representing the union of all the
+ <service> elements across all documents created by all users within
+ the same XCAP root. There is a single instance of this document, and
+ its name is "index". Thus, if the root services URI is
+
+
+
+
+Rosenberg Standards Track [Page 17]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ http://xcap.example.com, the following is the URI that an RLS would
+ use to fetch this index:
+
+ http://xcap.example.com/rls-services/global/index
+
+ As discussed below, this index is created from all the documents in
+ the user tree that have the name "index" as well. An implication of
+ this is that a client operating on behalf of a user SHOULD define its
+ RLS services within the document named "index". If the root services
+ URI is http://xcap.example.com, for user "sip:joe@example.com" the
+ URI for this document would be:
+
+ http://xcap.example.com/rls-services/users/sip:joe@example.com/index
+
+ If a client elects to define RLS services in a different document,
+ this document will not be "picked up" in the global index, and
+ therefore, will not be used as an RLS service.
+
+4.4.8. Resource Interdependencies
+
+ As with other application usages, the XML schema and the XCAP
+ resource naming conventions describe most of the resource
+ interdependencies applicable to this application usage.
+
+ This application usage defines an additional resource interdependence
+ between a single document in the global tree and all documents in the
+ user tree with the name "index". This global document is formed as
+ the union of all of the index documents for all users within the same
+ XCAP root. In this case, the union operation implies that each
+ <service> element in a user document will also be present as a
+ <service> element in the global document. The inverse is true as
+ well. Every <service> element in the global document exists within a
+ user document within the same XCAP root.
+
+ As an example, consider the RLS services document for user
+ sip:joe@example.com:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <rls-services>
+ <service uri="sip:mybuddies@example.com">
+ <resource-list>http://xcap.example.com/resource-lists/users/si
+ p:joe@example.com/index/~~/resource-lists/list%5b@name=%22l1%
+ 22%5d</resource-list>
+ <packages>
+ <package>presence</package>
+ </packages>
+ </service>
+ </rls-services>
+
+
+
+Rosenberg Standards Track [Page 18]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ And consider the RLS services document for user bob:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <rls-services>
+ <service uri="sip:marketing@example.com">
+ <list name="marketing">
+ <rl:entry uri="sip:joe@example.com"/>
+ <rl:entry uri="sip:sudhir@example.com"/>
+ </list>
+ <packages>
+ <package>presence</package>
+ </packages>
+ </service>
+ </rls-services>
+
+ The global document at
+ http://xcap.example.com/rls-services/global/index would look like
+ this:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <rls-services xmlns="urn:ietf:params:xml:ns:rls-services"
+ xmlns:rl="urn:ietf:params:xml:ns:resource-lists"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <service uri="sip:mybuddies@example.com">
+ <resource-list>http://xcap.example.com/resource-lists/user
+ s/sip:joe@example.com/index/~~/resource-lists/list%5b@nam
+ e=%22l1%22%5d</resource-list>
+ <packages>
+ <package>presence</package>
+ </packages>
+ </service>
+ <service uri="sip:marketing@example.com">
+ <list name="marketing">
+ <rl:entry uri="sip:joe@example.com"/>
+ <rl:entry uri="sip:sudhir@example.com"/>
+ </list>
+ <packages>
+ <package>presence</package>
+ </packages>
+ </service>
+ </rls-services>
+
+ Requests made against the global document MUST generate responses
+ that reflect the most recent state of all the relevant user
+ documents. This requirement does not imply that the server must
+ actually store this global document. It is anticipated that most
+ systems will dynamically construct the responses to any particular
+ request against the document resource.
+
+
+
+Rosenberg Standards Track [Page 19]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ The uniqueness constraint on the "uri" attribute of <service> will
+ ensure that no two <service> elements in the global document have the
+ same value of that attribute.
+
+4.4.9. Authorization Policies
+
+ This application usage does not modify the default XCAP authorization
+ policy, which is that only a user can read, write, or modify their
+ own documents. A server can allow privileged users to modify
+ documents that they don't own, but the establishment and indication
+ of such policies are outside the scope of this document. It is
+ anticipated that a future application usage will define which users
+ are allowed to modify an RLS services document.
+
+ The index document maintained in the global tree represents sensitive
+ information, as it contains the union of all the information for all
+ users on the server. As such, its access MUST be restricted to
+ trusted elements within domain of the server. Typically, this would
+ be limited to the RLSs that need access to this document.
+
+4.5. Usage of an RLS Services Document by an RLS
+
+ This section discusses how an RLS, on receipt of a SUBSCRIBE request,
+ uses XCAP and the RLS services document to guide its operation.
+
+ When an RLS receives a SUBSCRIBE request for a URI (present in the
+ Request URI), it obtains the <service> element whose uri attribute
+ matches (based on URI equality) the URI in the SUBSCRIBE request.
+ This document makes no normative statements on how this might be
+ accomplished. The following paragraph provides one possible
+ approach.
+
+ The RLS canonicalizes the Request URI as described in Section 5. It
+ then performs an XCAP GET operation against the URI formed by
+ combining the XCAP root with the document selector of the global
+ index with a node selector of the form "rls-services/
+ service[@uri=<canonical-uri>]", where <canonical-uri> is the
+ canonicalized version of the Request URI. If the response is a 200
+ OK, it will contain the service definition for that URI.
+
+ Once the <service> element has been obtained, it is examined. If the
+ <packages> element is present, and the event package in the SUBSCRIBE
+ request is not amongst those listed in the <package> elements within
+ <packages>, the request MUST be rejected with a 489 (Bad Event)
+ response code, as described in [13]. Otherwise, it SHOULD be
+ processed. The next step is to authorize that the client is allowed
+ to subscribe to the resource. This can be done using the data
+ defined in [12], for example. Assuming the subscriber is authorized
+
+
+
+Rosenberg Standards Track [Page 20]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ to subscribe to that resource, the subscription is processed
+ according to the procedures defined in [14]. This processing
+ requires the RLS to compute a flat list of URIs that are to be
+ subscribed to. If the <service> element had a <list> element, it is
+ extracted. If the <service> element had a <resource-list> element,
+ its URI content is dereferenced. The result should be a <list>
+ element. If it is not, the request SHOULD be rejected with a 502
+ (Bad Gateway). Otherwise, that <list> element is extracted.
+
+ At this point, the RLS has a <list> element in its possession. The
+ next step is to obtain a flat list of URIs from this element. To do
+ that, it traverses the tree of elements rooted in the <list> element.
+ Before traversal begins, the RLS initializes two lists: the "flat
+ list", which will contain the flat list of the URI after traversal,
+ and the "traversed list", which contains a list of HTTP URIs in
+ <external> elements that have already been visited. Both lists are
+ initially empty. Next, tree traversal begins. A server can use any
+ tree-traversal ordering it likes, such as depth-first search or
+ breadth-first search. The processing at each element in the tree
+ depends on the name of the element:
+
+ o If the element is <entry>, the URI in the "uri" attribute of the
+ element is added to the flat list if it is not already present
+ (based on case-sensitive string equality) in that list, and the
+ URI scheme represents one that can be used to service
+ subscriptions, such as SIP [4] and pres [15].
+
+ o If the element is an <entry-ref>, the relative path reference
+ making up the value of the "ref" attribute is resolved into an
+ absolute URI. This is done using the procedures defined in
+ Section 5.2 of RFC 3986 [7], using the XCAP root of the RLS
+ services document as the base URI. This absolute URI is resolved.
+ If the result is not a 200 OK containing a <entry> element, the
+ SUBSCRIBE request SHOULD be rejected with a 502 (Bad Gateway).
+ Otherwise, the <entry> element returned is processed as described
+ in the previous step.
+
+ o If the element is an <external> element, the absolute URI making
+ up the value of the "anchor" attribute of the element is examined.
+ If the URI is on the traversed list, the server MUST cease
+ traversing the tree, and SHOULD reject the SUBSCRIBE request with
+ a 502 (Bad Gateway). If the URI is not on the traversed list, the
+ server adds the URI to the traversed list, and dereferences the
+ URI. If the result is not a 200 OK containing a <list> element,
+ the SUBSCRIBE request SHOULD be rejected with a 502 (Bad Gateway).
+ Otherwise, the RLS replaces the <external> element in its local
+ copy of the tree with the <list> element that was returned, and
+ tree traversal continues.
+
+
+
+Rosenberg Standards Track [Page 21]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ Because the <external> element is used to dynamically construct the
+ tree, there is a possibility of recursive evaluation of references.
+ The traversed list is used to prevent this from happening.
+
+ Once the tree has been traversed, the RLS can create virtual
+ subscriptions to each URI in the flat list, as defined in [14]. In
+ the processing steps outlined above, when an <entry-ref> or
+ <external> element contains a reference that cannot be resolved,
+ failing the request is at SHOULD strength. In some cases, an RLS may
+ provide better service by creating virtual subscriptions to the URIs
+ in the flat list that could be obtained, omitting those that could
+ not. Only in those cases should the SHOULD recommendation be
+ ignored.
+
+5. SIP URI Canonicalization
+
+ This section provides a technique for URI canonicalization. This
+ canonicalization produces a URI that, in most cases, is equal to the
+ original URI (where equality is based on the URI comparison rules in
+ RFC 3261). Furthermore, the canonicalized URI will usually be
+ lexically equivalent to the canonicalized version of any other URI
+ equal to the original.
+
+ To canonicalize the URI, the following steps are followed:
+
+ 1. First, the domain part of the URI is converted into all
+ lowercase, and any tokens (such as "user" or "transport" or
+ "udp") are converted to all lowercase.
+
+ 2. Secondly, any percent-encoding in the URI for characters which do
+ not need to be percent-encoded is removed. A character needs to
+ be percent-encoded when it is not permitted in that part of the
+ URI based on the grammar for that part of the URI. For example,
+ if a SIP URI is sip:%6aoe%20smith@example.com, it is changed to
+ sip:joe%20smith@example.com. In the original URI, the character
+ 'j' was percent-encoded. This is allowed, but not required,
+ since the grammar allows a 'j' to appear in the user part. As a
+ result, it appears as 'j' after this step of canonicalization.
+
+ 3. Thirdly, any URI parameters are reordered so that they appear in
+ lexical order based on parameter name. The ordering of a
+ character is determined by the US-ASCII numerical value of that
+ character, with smaller numbers coming first. Parameters are
+ ordered with the leftmost character as most significant. For
+ parameters that contain only letters, this is equivalent to an
+ alphabetical ordering.
+
+
+
+
+
+Rosenberg Standards Track [Page 22]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ 4. Finally, any header parameters are discarded. This canonicalized
+ URI is used instead of the original URI.
+
+ If two URIs, A and B, are functionally equal (meaning that they are
+ equal according to the URI comparison rules in RFC 3261), their
+ canonicalized URIs are equal under case-sensitive string comparison
+ if the following are true:
+
+ o Neither URI contains header parameters.
+
+ o If one of the URI contains a URI parameter not defined in RFC
+ 3261, the other does as well.
+
+6. Extensibility
+
+ Resource-lists and RLS services documents are meant to be extended.
+ An extension takes place by defining a new set of elements in a new
+ namespace, governed by a new schema. Every extension MUST have an
+ appropriate XML namespace assigned to it. The XML namespace of the
+ extension MUST be different from the namespaces defined in this
+ specification. The extension MUST NOT change the syntax or semantics
+ of the schemas defined in this document. All XML tags and attributes
+ that are part of the extension MUST be appropriately qualified so as
+ to place them within that namespace.
+
+ This specification defines explicit places where new elements or
+ attributes from an extension can be placed. These are explicitly
+ indicated in the schemas by the <any> and <anyAttribute> elements.
+ Extensions to this specification MUST specify where their elements
+ can be placed within the document.
+
+ As a result, a document that contains extensions will require
+ multiple schemas in order to determine its validity: a schema defined
+ in this document, along with those defined by extensions present in
+ the document. Because extensions occur by adding new elements and
+ attributes governed by new schemas, the schemas defined in this
+ document are fixed and would only be changed by a revision to this
+ specification. Such a revision, should it take place, would endeavor
+ to allow documents compliant to the previous schema to remain
+ compliant to the new one. As a result, the schemas defined here
+ don't provide explicit schema versions, as this is not expected to be
+ needed.
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 23]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+7. Security Considerations
+
+ The information contained in rls-services and resource-lists
+ documents are particularly sensitive. It represents the principle
+ set of people with whom a user would like to communicate. As a
+ result, clients SHOULD use TLS when contacting servers in order to
+ fetch this information. Note that this does not represent a change
+ in requirement strength from XCAP.
+
+8. IANA Considerations
+
+ There are several IANA considerations associated with this
+ specification.
+
+8.1. XCAP Application Unique IDs
+
+ This section registers two new XCAP Application Unique IDs (AUIDs)
+ according to the IANA procedures defined in [10].
+
+8.1.1. resource-lists
+
+ Name of the AUID: resource-lists
+
+ Description: A resource lists application is any application that
+ needs access to a list of resources, identified by a URI, to which
+ operations, such as subscriptions, can be applied.
+
+8.1.2. rls-services
+
+ Name of the AUID: rls-services
+
+ Description: A Resource List Server (RLS) services application is a
+ Session Initiation Protocol (SIP) application whereby a server
+ receives SIP SUBSCRIBE requests for resource, and generates
+ subscriptions towards a resource list.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 24]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+8.2. MIME Type Registrations
+
+ This specification requests the registration of two new MIME types
+ according to the procedures of RFC 4288 [9] and guidelines in RFC
+ 3023 [5].
+
+8.2.1. application/resource-lists+xml
+
+ MIME media type name: application
+
+ MIME subtype name: resource-lists+xml
+
+ Mandatory parameters: none
+
+ Optional parameters: Same as charset parameter application/xml as
+ specified in RFC 3023 [5].
+
+ Encoding considerations: Same as encoding considerations of
+ application/xml as specified in RFC 3023 [5].
+
+ Security considerations: See Section 10 of RFC 3023 [5] and
+ Section 7 of RFC 4826.
+
+ Interoperability considerations: none
+
+ Published specification: RFC 4826
+
+ Applications that use this media type: This document type has been
+ used to support subscriptions to lists of users [14] for SIP-based
+ presence [11].
+
+ Additional Information:
+
+ Magic Number: none
+
+ File Extension: .rl
+
+ Macintosh file type code: "TEXT"
+
+ Personal and email address for further information:
+ Jonathan Rosenberg, jdrosen@jdrosen.net
+
+ Intended usage: COMMON
+
+ Author/Change controller: The IETF.
+
+
+
+
+
+
+Rosenberg Standards Track [Page 25]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+8.2.2. application/rls-services+xml
+
+ MIME media type name: application
+
+ MIME subtype name: rls-services+xml
+
+ Mandatory parameters: none
+
+ Optional parameters: Same as charset parameter application/xml as
+ specified in RFC 3023 [5].
+
+ Encoding considerations: Same as encoding considerations of
+ application/xml as specified in RFC 3023 [5].
+
+ Security considerations: See Section 10 of RFC 3023 [5] and
+ Section 7 of RFC 4826.
+
+ Interoperability considerations: none
+
+ Published specification: RFC 4826
+
+ Applications that use this media type: This document type has been
+ used to support subscriptions to lists of users [14] for SIP-based
+ presence [11].
+
+ Additional Information:
+
+ Magic Number: none
+
+ File Extension: .rs
+
+ Macintosh file type code: "TEXT"
+
+ Personal and email address for further information:
+ Jonathan Rosenberg, jdrosen@jdrosen.net
+
+ Intended usage: COMMON
+
+ Author/Change controller: The IETF.
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 26]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+8.3. URN Sub-Namespace Registrations
+
+ This section registers two new XML namespaces, as per the guidelines
+ in RFC 3688 [8].
+
+8.3.1. urn:ietf:params:xml:ns:resource-lists
+
+ URI: The URI for this namespace is
+ urn:ietf:params:xml:ns:resource-lists.
+
+ Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org),
+ Jonathan Rosenberg (jdrosen@jdrosen.net).
+
+
+ XML:
+ BEGIN
+ <?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+ "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="content-type"
+ content="text/html;charset=iso-8859-1"/>
+ <title>Resource Lists Namespace</title>
+ </head>
+ <body>
+ <h1>Namespace for Resource Lists</h1>
+ <h2>urn:ietf:params:xml:ns:resource-lists</h2>
+ <p>See <a href="http://www.rfc-editor.org/rfc/rfc4826.txt">
+ RFC4826</a>.</p>
+ </body>
+ </html>
+ END
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 27]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+8.3.2. urn:ietf:params:xml:ns:rls-services
+
+ URI: The URI for this namespace is
+ urn:ietf:params:xml:ns:rls-services.
+
+ Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org),
+ Jonathan Rosenberg (jdrosen@jdrosen.net).
+
+
+ XML:
+ BEGIN
+ <?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+ "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="content-type"
+ content="text/html;charset=iso-8859-1"/>
+ <title>Resource List Server (RLS) Services Namespace</title>
+ </head>
+ <body>
+ <h1>Namespace for Resource List Server (RLS) Services</h1>
+ <h2>urn:ietf:params:xml:ns:rls-services</h2>
+ <p>See <a href="http://www.rfc-editor.org/rfc/rfc4826.txt">
+ RFC4826</a>.</p>
+ </body>
+ </html>
+ END
+
+8.4. Schema Registrations
+
+ This section registers two XML schemas per the procedures in [8].
+
+8.4.1. urn:ietf:params:xml:schema:resource-lists
+
+ URI: urn:ietf:params:xml:schema:resource-lists
+
+ Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org),
+ Jonathan Rosenberg (jdrosen@jdrosen.net).
+
+ The XML for this schema can be found as the sole content of
+ Section 3.2.
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 28]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+8.4.2. urn:ietf:params:xml:schema:rls-services
+
+ URI: urn:ietf:params:xml:schema:rls-services
+
+ Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org),
+ Jonathan Rosenberg (jdrosen@jdrosen.net).
+
+ The XML for this schema can be found as the sole content of
+ Section 4.2.
+
+9. Acknowledgements
+
+ The authors would like to thank Hisham Khartabil, Jari Urpalainen,
+ and Spencer Dawkins for their comments and input. Thanks to Ted
+ Hardie for his encouragement and support of this work.
+
+10. References
+
+10.1. Normative References
+
+ [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+ [2] Paoli, J., Maler, E., Bray, T., and C. Sperberg-McQueen,
+ "Extensible Markup Language (XML) 1.0 (Second Edition)", World
+ Wide Web Consortium FirstEdition REC-xml-20001006,
+ October 2000, <http://www.w3.org/TR/2000/REC-xml-20001006>.
+
+ [3] Moats, R., "URN Syntax", RFC 2141, May 1997.
+
+ [4] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
+ Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
+ Session Initiation Protocol", RFC 3261, June 2002.
+
+ [5] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types",
+ RFC 3023, January 2001.
+
+ [6] Moats, R., "A URN Namespace for IETF Documents", RFC 2648,
+ August 1999.
+
+ [7] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+ Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986,
+ January 2005.
+
+ [8] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ January 2004.
+
+
+
+
+
+Rosenberg Standards Track [Page 29]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+ [9] Freed, N. and J. Klensin, "Media Type Specifications and
+ Registration Procedures", BCP 13, RFC 4288, December 2005.
+
+ [10] Rosenberg, J., "The Extensible Markup Language (XML)
+ Configuration Access Protocol (XCAP)", RFC 4825, May 2007.
+
+10.2. Informative References
+
+ [11] Rosenberg, J., "A Presence Event Package for the Session
+ Initiation Protocol (SIP)", RFC 3856, August 2004.
+
+ [12] Rosenberg, J., "Presence Authorization Rules", Work
+ in Progress, October 2006.
+
+ [13] Roach, A., "Session Initiation Protocol (SIP)-Specific Event
+ Notification", RFC 3265, June 2002.
+
+ [14] Roach, A., Rosenberg, J., and B. Campbell, "A Session
+ Initiation Protocol (SIP) Event Notification Extension for
+ Resource Lists", RFC 4662, January 2005.
+
+ [15] Peterson, J., "Common Profile for Presence (CPP)", RFC 3859,
+ August 2004.
+
+Author's Address
+
+ Jonathan Rosenberg
+ Cisco
+ Edison, NJ
+ US
+
+ EMail: jdrosen@cisco.com
+ URI: http://www.jdrosen.net
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 30]
+
+RFC 4826 XML Resource Lists May 2007
+
+
+Full Copyright Statement
+
+ Copyright (C) The IETF Trust (2007).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
+ THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at
+ ietf-ipr@ietf.org.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+Rosenberg Standards Track [Page 31]
+