<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
        <!ENTITY rfc2119 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <!ENTITY rfc3688 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml">
        <!ENTITY rfc5486 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5486.xml">
         <!ENTITY rfc5246 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5246.xml">
        <!ENTITY rfc2617 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2617.xml">
        <!ENTITY rfc2616 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
        <!ENTITY rfc2818 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2818.xml">
        <!ENTITY rfc5321 PUBLIC ""
          "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5321.xml">
]>


<rfc category="std" docName="draft-marrache-drinks-spp-protocol-rest-02"  ipr="trust200902">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>

<front>
    <title abbrev="draft-marrache-drinks-spp-protocol-rest">Session Peering Provisioning (SPP) Protocol over REST</title>
    <author initials='M.M.' surname="Marrache" fullname="Mickael Marrache">
      <organization>Jerusalem College of Technology</organization>
      <address>
        <postal>
          <street>Havaad Haleumi St. 21</street>
          <city>Jerusalem</city> 
		  <region></region> 
          <code>91160</code>
          <country>Israel</country>
        </postal>
      <email>mickaelmarrache@gmail.com</email>
    </address>
  </author>
  <author initials="D.S." surname="Schwartz" fullname="David Schwartz">
    <organization>XConnect</organization>
	<address>
	  <postal>
	    <street>316 Regents Park Road</street>
		<city>London</city>
		<region> </region>
		<code>N3 2XJ</code>
		<country>United Kingdom</country>
       </postal>
	   <email>dschwartz@xconnect.net</email>
	  </address>
	</author>
  <author initials="S.A." surname="Ali" fullname="Syed Wasim Ali">
   <organization>NeuStar</organization>
   <address>
    <postal>
     <street>46000 Center Oak Plaza</street>
     <city>Sterling</city>
     <region>VA</region>
     <code>20166</code>
     <country>USA</country>
    </postal>
    <email>syed.ali@neustar.biz</email>
   </address>
  </author>

    <date year="2013" month="April"/>

    <area>Real-time Applications and Infrastructure Area</area>

    <workgroup>DRINKS</workgroup>
    
    <abstract>
      <t>
	  The Session Peering Provisioning Framework (SPPF) is a framework 
	  that exists to enable the provisioning of session establishment data into  
	  Session Data Registries or SIP Service Provider data stores. This SPP Protocol
	  implementation follows the REST architectural principles over HTTP to allow efficient provisioning of session establishment data. 
	  The benefits include inter alia better performances under high loads through the use of HTTP caches and proxies and less coupling between clients and servers.
	  This document describes the specification of a protocol for transporting SPPF structures over HTTP(s) following REST architectural principles.
	  </t>
    </abstract>
</front>

<middle>
	<section title="Introduction">
      <t>
	  TBD
	  </t>
	</section>
  
    <section anchor="Terminology" title="Terminology">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref target="RFC2119"/>.</t>
    </section>

	<section anchor="ProtocolArchitecture" title="Protocol Architecture">
	  <t>The following figure illustrates the technical architecture of the RESTful SPP Protocol:</t>
	  <figure anchor="TechnicalArchitectureofSPPP" 
	    title="Layering and Technical Architecture of the RESTful SPP Protocol">
        <artwork align="left"><![CDATA[
                    +-------------+
                (1) |  Transport  |Example:
                    |   Protocol  |  TCP, TLS, BEEP, etc.
                    +-------------+
                           |
                           V
                    +-------------+
                    |     HTTP    |
                    |             |
                    +-------------+
            (2)            |
               +-----------------------+
               |                       |
               V                       V
      +----------------+       +----------------+
      | HTTP Request   |   OR  | HTTP Response  |
      |                |       |                |
      +----------------+       +----------------+
       Carries |               Carries  |
               V                        V
        +-------------+          +-------------+
 (3)    |    SPPF     |          |    SPPF     |
        |    Types    |          |    Types    |
        +-------------+          +-------------+
        ]]></artwork>
     </figure>
	 
	 <t>RESTful SPP Protocol is supported by different technologies accross multiple layers as follows:</t>
	 
	 <t>
	 <list style="empty">
       <t>Layer 3: This is the data layer in which are defined the SPPF objects transported by the protocol between the involved components. These objects are defined in <xref target="I-D.draft-ietf-drinks-spp-framework"/>.</t>
	   <t>Layer 2: The application protocol layer uses HTTP to allow clients perform the operations defined in the framework document. These operations are mostly provisioning operations. A client initiates an operation by sending an HTTP request to a server. Then, an HTTP response indicating the results of the operation is sent back by the server to the client. SPPF objects defined in the layer above are eventually carried by these HTTP messages.</t>
	   <t>Layer 1: The transport protocol layer represents the
       communication mechanism between the client and server. SPPF can
       be layered over any transport protocol that provides a set of
       basic requirements defined in the "Transport Protocol Requirements"
       section. But this document specifies the required mechanism.</t>
	 </list>
	 </t>
	 
	 <t>SPPF is a request/reply framework that allows a client application to submit 
	  provisioning data and query requests to a server. The SPPF data structures are designed
      to be protocol agnostic. Concerns regarding encryption, non-repudiation, and authentication
	  are beyond the scope of this document. For more details, please refer to the
      "Transport Protocol Requirements" section in the framework document.</t>
	</section>
	
	<section anchor="ArchPrinciples" title="Architectural Principles">
	  <section anchor="HTTP" title="Use of HTTP">
	    <t>HTTP(s) is the application protocol used by RESTful web services.
	    HTTP 1.1 includes the &quot;persistent connection&quot; feature, 
	    which allows multiple HTTP request/response pairs to be transported 
        across a single HTTP connection.  This is an important performance 
        optimization feature, particularly when the connection is an HTTPS 
        connection where the relatively time consuming SSL handshake has occurred.  
        Persistent connections SHOULD be used for the SPPF HTTP connections.</t> 
	    <t>HTTP 1.1 <xref target="RFC2616"/> or higher SHOULD be used.</t>
	  </section>
	  
	  <section anchor="SPPFObjectsAsResources" title="SPPF Objects as Resources">
	    <t>As mentioned in the previous section, the application protocol used by this protocol implementation is HTTP. Since HTTP has been conceived to operate on resources exposed on the web, the SPPF objects need to be exposed as resources. The SPPF objects then become available to clients for performing operations defined in the framework document.</t>
		<t>Each resource exposed on the web is identified by a Uniform Resource Identifier (URI). Therefore, a URI is defined for each SPPF object. In order to be able to identify uniquely an SPPF object, the corresponding URI must include the attributes of a candidate key for this SPPF object. The attributes that form the key of each SPPF object are specified in the framework document. These attributes are included in the URI as path parameters.</t>
		
		<section anchor="BaseURI" title="Base URI">
		 <t>In the next sections, the concept of base URI will be used. It is the root URI where the RESTful service is located. All the URI defined by the following sections are relative to the base URI.</t>
		</section>
		
		<section anchor="ResourcesUri" title="Resources URI">
		
		<t>In the following sub-sections, for each type of resource, two URI are defined: the URI that identifies the resource type and the URI that uniquely identifies an instance of this resource type. In order to provide a URI for each SPPF object, a URI template is defined for each one of them. The URI templates defined in the following sub-sections are relative to the base URI defined in the Base URI section.</t>
		
		<t>Each URI template defined in the following sub-sections starts with the version. It allows maintaining multiple versions of the same interface. The client specifies the version of the interface to use through the URI.</t>
		
		<section anchor="dguri" title="Destination Group">
	      <t>As mentioned in the framework document, a destination group is uniquely identified by the following 
          attributes: the registrant and the destination group's name. Therefore, the destination group resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/DG/{name}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the destination group.</t>
			  <t>name: destination group's name.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/DG</t>
	    </section>
		
		<section anchor="tnuri" title="Telephone Number">
	      <t>As mentioned in the framework document, a telephone number (TN) is uniquely identified by the following 
          attributes: the registrant and the telephone
		  number. Therefore, the telephone number resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/TN/{tn}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the telephone number.</t>
			  <t>tn: telephone number.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/TN</t>
	    </section>
		
		<section anchor="tnpuri" title="Telephone Number Prefix">
	      <t>As mentioned in the framework document, a telephone number prefix (TNP) is uniquely identified by the following 
          attributes: the registrant and the telephone
		  number prefix. Therefore, the telephone number prefix resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/TNP/{prefix}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the telephone number prefix.</t>
			  <t>prefix: telephone number prefix.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/TNP</t>
	    </section>
		
		<section anchor="tnruri" title="Telephone Number Range">
	      <t>As mentioned in the framework document, a telephone number range (TNR) is uniquely identified by the following 
          attributes: the registrant, the telephone number
		  that starts the range and the telephone number that ends the range. Therefore, the telephone number range resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/TNR/start/{startTn}/end/{endTn}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the telephone number range.</t>
			  <t>startTn: first telephone number of the range.</t>
			  <t>endTn: last telephone number of the range.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/TNR</t>
	    </section>
		
		<section anchor="rnuri" title="Routing Number">
	      <t>As mentioned in the framework document, a routing number is uniquely identified by the following 
          attributes: the registrant and the routing
		  number. Therefore, the routing number resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/RN/{rn}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the routing number.</t>
			  <t>rn: routing number.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/RN</t>
	    </section>
		
		<section anchor="uripubiduri" title="URI Public Identifier">
	      <t>As mentioned in the framework document, a public identifier URI is uniquely identified by the following 
          attributes: the registrant and the URI. Therefore, the public identifier URI resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/URI/{uri}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the public identifier URI.</t>
			  <t>uri: URI.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/URI</t>
	    </section>
		
		<section anchor="sedgrpuri" title="SED Group">
	      <t>As mentioned in the framework document, a SED Group is uniquely identified by the following 
          attributes: the registrant and the SED Group's name. Therefore, the SED Group resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/SG/{name}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the SED Group.</t>
			  <t>name: SED Group's name.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/SG</t>
	    </section>
		
		<section anchor="sedrecuri" title="SED Record">
	      <t>As mentioned in the framework document, a SED Record is uniquely identified by the following 
          attributes: the registrant and the SED Record's name. Therefore, the SED Record resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/SR/{name}</t>
		
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the SED Record.</t>
			  <t>name: SED Record's name.</t>
			</list>
		  </t>
		  
		  <t>Unlike public identifiers types, there is no need to define one URI template for each subtype of SED Record (e.g. NAPTR) since a SED Record instance is identified by attributes that are defined at the SED Record level(i.e. rant and name).</t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/SR</t>
	    </section>
		
		<section anchor="egrroute" title="Egress Route">
	      <t>As mentioned in the framework document, an Egress route is uniquely identified by the following 
          attributes: the registrant and the Egress route's name. Therefore, the Egress route resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/ER/{name}</t>
		
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: registrant organization of the Egress route.</t>
			  <t>name: Egress route's name.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/ER</t>
	    </section>
		
		<section anchor="sedgrpofferuri" title="SED Group Offer">
	      <t>As mentioned in the framework document, a SED Group Offer is uniquely identified by the following 
          attributes: the offering registrant (i.e. the registrant of the offered SED Group), the name of the offered SED Group and the organization to which the SED Group is offered. Therefore, the SED Group Offer resources are identified by the following URI template:</t>
		
		  <t>/${version}/rant/{rant}/SG/{sedGrpName}/offer/{offeredTo}</t>
		  
		  <t>where:</t>
		  <t>
		    <list style="symbols">
			  <t>rant: offering registrant organization.</t>
			  <t>sedGrpName: offered SED Group's name. This parameter along with the rant parameter uniquely identifies the offered SED Group.</t>
			  <t>offeredTo: organization to which the SED Group is offered.</t>
			</list>
		  </t>
		  
		  <t>The corresponding resource type URI is:</t>
		  <t>/${version}/rant/{rant}/SG/{sedGrpName}/offer</t>
	    </section>
		
		<section anchor="sgofferaccept" title="SED Group Offer Acceptance">
		  <t>As defined by the framework document, a SED Group Offer may be accepted by the organization to which the SED Group has been offered. The acceptance of a SED Group Offer is performed through the use of an accept resource. The accept resources are identified by the following URI template:</t>
		  
		  <t>/${version}/rant/{rant}/SG/{sedGrpName}/accept/{offeredTo}</t>
		  
		  <t>where the parameters are defined as for the SED Group Offer resources.</t>
		</section>
		
		<section anchor="sgofferreject" title="SED Group Offer Rejection">
		  <t>As defined by the framework document, a SED Group Offer may be rejected by the organization to which the SED Group has been offered. The rejection of a SED Group Offer is performed through the use of a reject resource. The reject resources are identified by the following URI template:</t>
		  
		  <t>/${version}/rant/{rant}/SG/{sedGrpName}/reject/{offeredTo}</t>
		  
		  <t>where the parameters are defined as for the SED Group Offer resources.</t>
		</section>
		
		<section anchor="serverstatusuri" title="Server Status">
	      <t>The Server Status is exposed as a singleton resource. Therefore, a single URI is need to identify this resource:</t>
		
		  <t>/${version}/ServerStatus</t>
		
		  <t>This resource contains information about the server as described later.</t>
	    </section>
		</section>
		
		<section anchor="ResourcesRepr" title="Resources Representations">
	      <t>For some operations defined by SPPF, resource representations may be present in the HTTP messages. When this is the case, the resource representation is carried in the HTTP message's body. A resource may have many available representations where each one may use a specific format (e.g. XML, JSON).</t>
		  <t>Therefore, HTTP messages that carry resource representations MUST have their Content-Type HTTP header set to the appropriate media type.</t>
	    </section>
	  </section>
	  
	  <section anchor="httpverbs" title="HTTP methods and operations mapping">
		  <t>Most operations exposed by this protocol implementation are regular CRUD operations on resources. As mentioned earlier, an operation on a resource is initiated by a client when he sends an HTTP request that targets the URI that identifies the resource. In order to indicate the desired operation to perform on a given resource, a client selects one of the following HTTP methods:</t>
		  
		  <section anchor="httpget" title="GET">
			<t>A client uses the HTTP GET method to retrieve a representation of a resource. The URI present in the HTTP request MUST be a full URI that identifies the particular resource to retrieve. In order to specify which representation formats are accepted, a client SHOULD include a Accept-Type header.</t>
			
			<t>This HTTP method may be used for all the resources defined in the "Resources URI" section.</t>
		  </section>
		  
		  <section anchor="httppost" title="POST">
			<t>A client uses the HTTP POST method to create a resource.</t>
			
			<t>The nature of the URI present in an HTTP POST request depends on which type of resource the request targets.</t>
			
			<t>When an HTTP POST request targets a resource of the following types</t>
			<t>Destination Group, URI, TN, TNP, TNR, RN, SED Group, SED Record, Egress Route, SED Group Offer</t>
			<t>the URI present in the request MUST be the corresponding resource type URI as defined in the "Resources URI" section. An HTTP POST request targetting a resource of the types above MUST carry a representation of the resource in its entity. The representation format of the resource MUST be specified using the Content-Type header.</t>
			
			<t>When an HTTP POST request targets a resource of the following types</t>
			<t>SED Group Offer Acceptance, SED Group Offer Rejection</t>
			<t>the URI present in the request MUST be the URI that identifies the particular SED Group Offer Acceptance or SED Group Offer Rejection. This URI identifies the particular SED Group Offer to accept or reject. However, in this case, the entity of the HTTP request MUST be empty since all the information required to perform the acceptance/rejection operation is present in the URI.</t>
		  </section>
		  
		  <section anchor="httpput" title="PUT">
			<t>The primary purpose of the HTTP PUT method is to allow a client to update the resource identified by the targetted URI. However, in some cases, the HTTP PUT method may also be used to create a resource.</t>
			
			<t>Regardless the nature of the desired operation (i.e. update or create), the URI present in an HTTP PUT request MUST always be a full URI that identifies the particular resource targetted by the operation. Also, an HTTP PUT request MUST carry a representation of the resource to update or create in its entity. The representation format of the resource MUST be specified using the Content-Type header.</t>
			
			<t>If the URI present in the HTTP PUT request corresponds to an existing resource, the server will replace the current resource representation by the representation carried in the request's entity. Otherwise, the server will create the resource based on the representation carried in the request's entity.</t>
			
			<t>This HTTP method may be used for the following resources (defined in the "Resources URI" section): Destination Group, URI, TN, TNP, TNR, RN, SED Group, SED Record, Egress Route, SED Group Offer.</t>			
		  </section>
		  
		  <section anchor="httpdelete" title="DELETE">
			<t>A client uses the HTTP DELETE method to delete a resource. The URI present in the HTTP request MUST be a full URI that identifies the particular resource to delete.</t>
			
			<t>This HTTP method may be used for the following resources (defined in the "Resources URI" section): Destination Group, URI, TN, TNP, TNR, RN, SED Group, SED Record, Egress Route, SED Group Offer.</t>
		  </section>
		</section>
	</section>
	
    <section anchor="AuthenticationSessionManagement" title="Authentication and Session Management">
      <t>To achieve integrity and privacy, conforming SPP Protocol Clients and Servers MUST support HTTP over TLS <xref target="RFC5246"/> as the secure transport mechanism.  This combination of HTTP and TLS is referred to as HTTPS.  And to accomplish authentication, conforming SPPF Clients and Servers MUST use HTTP Digest Authentication as defined in <xref target="RFC2617"/>.  As a result, the communication session is established through the initial HTTP connection setup, the digest authentication, and the TLS handshake.  When the HTTP connection is broken down, the communication session ends.</t>
    </section>
       
    <section anchor="requestandresponse" title="Operation Request and Response Structures">
      <t> An SPPF client interacts with an SPPF server by using one of the supported transport 
	  mechanisms to send one or more requests to the server and receive corresponding replies from
      the server.  The basic set of operations that an SPPF client can submit to an SPPF server and 
	  the semantics of those operations are defined in the "Framework Operations" section of the 
	  framework document.  The following sub-sections describe how these operations should be performed
	  in the context of this protocol implementation.</t>
         
      <section anchor="addoperation" title="Add Operation Structure">
        <t>In order to add an object to the registry, an authorized
		entity sends an add request to the registry. This request consists of an HTTP POST request on the URI that identifies the type of the resource to add, or an HTTP PUT request on the URI that identifies the resource to add. Since the format of the HTTP PUT request and response for resource creation is the same as for resource update, this format is not defined in this section (see the "Update Operation Structure" section). The representation of the resource to add is carried in the request's entity. After the operation is performed, the registry sends back 
		an HTTP response to the client indicating if the request has been performed successfully, and if not, 
		the reason of the failure. The following sub-sections describe the expected format of the 
		HTTP requests and responses.</t>
   
        <section anchor="addrqstpost" title="Add Request">
          <t>The format of an HTTP POST request used to add an SPPF object to the registry
		  is as follows:</t>
          <t>
            <figure title="">
              <artwork align="left">
                <![CDATA[
POST ${ResourceTypeURI} HTTP/1.1
.....
[ClientTransId: ${ClientTransId}]
Content-Type: ...
Content-Length: ...

${ResourceRepresentation}
                 ]]>
              </artwork>
            </figure>
          </t>
        
          <t>The data elements within the HTTP POST request are described as follows: 
			  <list style="symbols" hangIndent="5">
			    <t>ResourceTypeURI: The URI that identifies the type of the resource to add as defined in the "Resources URI" section.</t>
				<t>ClientTransId: An optional HTTP header representing a client-generated transaction ID
				that, within the context of the SPPF client, identifies this 
				request. This value can be used at the discretion of the SPPF 
				client to track, log or correlate requests and their responses. 
				SPPF server MUST echo back this value to the client in the 
				corresponding response to the incoming request. SPPF server will
				not check this value for uniqueness.</t>
				<t>ResourceRepresentation: HTTP request's entity that consists of the representation of the resource to add. The representation format MUST match the value of the Content-Type header.</t>
			  </list>
          </t>
        </section>
 
        <section anchor="addresponsepost" title="Add Response">
          <t>The format of an HTTP response to an HTTP POST request is as follows:</t>
          <t>
            <figure title="">
              <artwork align="left">
                <![CDATA[
HTTP/1.1 ${StatusCode}
....
[ClientTransId: ${ClientTransId}]
ServerTransId: ${ServerTransId}
Content-Length: 0
                ]]>
              </artwork>
            </figure>
          </t>

          <t> The data elements within the HTTP response are described as follows:
		    <list style="symbols" hangIndent="5">
			  <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
              <t>ClientTransId: An HTTP header representing the client transaction ID of the
			  corresponding HTTP request, if provided. This value is simply an echo of the client
			  transaction ID that SPPF client passed into the SPPF request. When included 
              in the request, the SPPF server MUST return it in the corresponding
              response message.</t>
              <t>ServerTransId: A mandatory HTTP header representing the server transaction ID that
              identifies this request for tracking purposes. This
              value MUST be unique for a given SPPF server.</t>
            </list>
          </t>  
        </section>
	  </section>
	  
	  <section anchor="updateoperation" title="Update Operation Structure">
        <t>In order to update an object present in the registry, an authorized
		entity sends an update request to the registry. This request consists of an HTTP PUT request on the URI that identifies the resource to update. The new representation of the resource is carried in the request's entity. After the operation is performed, the registry sends back an HTTP response to the client indicating if the request has been performed successfully, and if not, 
		the reason of the failure. The following sub-sections describe the expected format of the HTTP requests and responses.</t>
		
		<t>As mentioned by the previous section, the HTTP PUT request may also be used to create a resource. The format of the HTTP request and response is as defined in this section.</t>
   
        <section anchor="updrqst" title="Update Request">
          <t>The format of an HTTP PUT request used to update an SPPF object present in the registry
		  is as follows:</t>
          <t>
            <figure title="">
              <artwork align="left">
                <![CDATA[
PUT ${ResourceURI} HTTP/1.1
.....
[ClientTransId: ${ClientTransId}]
Content-Type: ...
Content-Length: ...

${ResourceRepresentation}
                 ]]>
              </artwork>
            </figure>
          </t>
        
          <t>The data elements within the HTTP PUT request are described as follows: 
			  <list style="symbols" hangIndent="5">
			    <t>ResourceURI: The URI that identifies the resource to update as defined in the "Resources URI" section.</t>
				<t>ClientTransId: An optional HTTP header representing a client-generated transaction ID
				that, within the context of the SPPF client, identifies this 
				request. This value can be used at the discretion of the SPPF 
				client to track, log or correlate requests and their responses. 
				SPPF server MUST echo back this value to the client in the 
				corresponding response to the incoming request. SPPF server will
				not check this value for uniqueness.</t>
				<t>ResourceRepresentation: HTTP request's entity that consists of the new representation of the resource. The representation format MUST match the value of the Content-Type header.</t>
			  </list>
          </t>
        </section>
 
        <section anchor="updresponse" title="Update Response">
          <t>The format of an HTTP response to an HTTP PUT request is as follows:</t>
          <t>
            <figure title="">
              <artwork align="left">
                <![CDATA[
HTTP/1.1 ${StatusCode}
....
[ClientTransId: ${ClientTransId}]
ServerTransId: ${ServerTransId}
Content-Length: 0
                ]]>
              </artwork>
            </figure>
          </t>

          <t> The data elements within the HTTP response are described as follows:
		    <list style="symbols" hangIndent="5">
			  <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
              <t>ClientTransId: An HTTP header representing the client transaction ID of the
			  corresponding HTTP request, if provided. This value is simply an echo of the client
			  transaction ID that SPPF client passed into the SPPF request. When included 
              in the request, the SPPF server MUST return it in the corresponding
              response message.</t>
              <t>ServerTransId: A mandatory HTTP header representing the server transaction ID that
              identifies this request for tracking purposes. This
              value MUST be unique for a given SPPF server.</t>
            </list>
          </t>  
        </section>
	  </section>

      <section anchor="deloperation" title="Delete Operation Structure">
     	 <t>In order to remove an object from the registry, an authorized entity
         sends a delete request to the registry. This request consists of an HTTP DELETE request
		 on the URI that identifies the resource to delete. The request's entity SHOULD be empty
		 since the resource to delete is uniquely identified by the URI included in the request. If an entity is present in the request, the registry MUST ignore it.
		 After the operation is performed, the registry sends back an HTTP response to the client
		 indicating if the request has been performed successfully, and if not, the reason of the failure.
         The following sub-sections describe the expected format of the HTTP requests and responses.</t>

         <section anchor="delrqst" title="Delete Request">
           <t>The format of an HTTP DELETE request used to delete an SPPF object from the registry
		   is as follows:</t>
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
DELETE ${ResourceURI} HTTP/1.1
.....
[ClientTransId: ${ClientTransId}]
Content-Length: 0
                 ]]>
               </artwork>
             </figure>
           </t>
        
           <t>The data elements within the HTTP DELETE request are described as follows: 
             <list style="symbols" hangIndent="5">
			   <t>ResourceURI: The URI that identifies the resource to delete as defined in the "Resources URI" section.</t>
               <t>ClientTransId: An optional query parameter representing a client-generated transaction ID
			   that, within the context of the SPPF client, identifies this 
			   request. This value can be used at the discretion of the SPPF 
			   client to track, log or correlate requests and their responses. 
			   SPPF server MUST echo back this value to the client in the 
			   corresponding response to the incoming request. SPPF server will
			   not check this value for uniqueness.</t>
             </list>
           </t>
         </section>
        
		 <section anchor="delresponse" title="Delete Response">
           <t>The format of an HTTP response to a delete request is as follows:</t>
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
HTTP/1.1 ${StatusCode}
....
[ClientTransId: ${ClientTransId}]
ServerTransId: ${ServerTransId}
Content-Length: 0
                 ]]>
               </artwork>
             </figure>
           </t>
		  
           <t>The data elements within the HTTP response are described as follows: 
		     <list style="symbols" hangIndent="5">
			   <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
               <t>ClientTransId: An HTTP header representing the client transaction ID of the
			   corresponding HTTP request, if provided. This 
               value is simply an echo of the client transaction ID that 
               SPPF client passed into the SPPF request. When included 
               in the request, the SPPF server MUST return it in the corresponding
               response message.</t>
               <t>ServerTransId: An HTTP header representing the server transaction ID that
               identifies this request for tracking purposes. This
               value MUST be unique for a given SPPF server.</t>
             </list>
           </t>  
         </section>
		 </section>
        
       <section anchor="acceptoperation" title="Accept Operation Structure">
         <t>In SPPF, a SED Group Offer can be accepted or rejected by, or on behalf of, the organization to 
         whom the SED Group has been offered (refer "Framework Data Model Objects" section of the framework
		 document for a description of the SED Group Offer object). The Accept operation is used to accept 
		 such SED Group Offers by, or on behalf of, the organization. This request consists of an HTTP POST request
		 on the URI that identifies the accept resource that corresponds to the concerned SED Group Offer.
		 After the operation is performed, the registry sends back an HTTP response to the client
		 indicating if the request has been performed successfully, and if not, the reason of the failure.
         The following sub-sections describe the expected format of the HTTP requests and responses.</t>

         <section anchor="acceptrqst" title="Accept Request Structure">
           <t>The format of an HTTP POST request used to accept a SED Group Offer is as follows:</t>
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
POST /${version}/rant/{rant}/SG/{sedGrpName}/accept/{offeredTo} HTTP/1.1
.....
[ClientTransId: ${ClientTransId}]
Content-Length: 0
                 ]]>
               </artwork>
             </figure>
           </t>
		   
           <t>The data elements within the HTTP POST request are described as follows: 
             <list style="symbols" hangIndent="5">
			   <t>rant: The identifier of the registrant organization that offered the SED Group.</t>
			   <t>sedGrpName: The name of the SED Group offered by the registrant organization.</t>
			   <t>offeredTo: The identifier of the organization to whom the SED Group has been offered.</t>
               <t>ClientTransId: An optional HTTP header representing a client-generated transaction ID
               that, within the context of the SPPF client, identifies this 
               request. This value can be used at the discretion of the SPPF 
               client to track, log or correlate requests and their responses.
			   SPPF server MUST echo back this value to the client in the corresponding
			   response to the incoming request. SPPF server will not check this 
			   value for uniqueness.</t>
             </list>
           </t>
         </section>
           
		 <section anchor="acceptresponse" title="Accept Response">
          <t>The format of an HTTP response to an Accept request is as follows:</t>
          <t>
            <figure title="">
              <artwork align="left">
                <![CDATA[
HTTP/1.1 ${StatusCode}
....
[ClientTransId: ${ClientTransId}]
ServerTransId: ${ServerTransId}
Content-Length: 0
                ]]>
              </artwork>
            </figure>
          </t>

          <t>The data elements within the HTTP response are described as follows:
		    <list style="symbols" hangIndent="5">
			  <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
              <t>ClientTransId: An HTTP header representing the client transaction ID of the
			   corresponding HTTP request, if provided. This 
              value is simply an echo of the client transaction ID that 
              SPPF client passed into the SPPF request. When included 
              in the request, the SPPF server MUST return it in the corresponding
              response message.</t>
              <t>ServerTransId: A header parameter representing the server transaction ID that
              identifies this request for tracking purposes. This
              value MUST be unique for a given SPPF server.</t>
            </list>
          </t>
         </section>
	   </section>
        
	   <section anchor="rejectoperation" title="Reject Operation Structure">
         <t>In SPPF, a SED Group Offer can be accepted or rejected by, or on behalf of, the organization to 
         whom the SED Group has been offered (refer "Framework Data Model Objects" section of the
		 framework document for a description of the SED Group Offer object). The Reject operation is
		 used to reject such SED Group Offers by, or on behalf of, the organization. 
		 This request consists of an HTTP POST request on the URI that identifies the reject resource for the concerned SED Group Offer.
		 After the operation is performed, the registry sends back an HTTP response to the client
		 indicating if the request has been performed successfully, and if not, the reason of the failure.
         The following sub-sections describe the expected format of the HTTP requests and responses.</t>
         
		 <section anchor="rejectrqst" title="Reject Request">
           <t>The format of an HTTP POST request used to reject a SED Group Offer is as follows:</t>
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
POST /${version}/rant/{rant}/SG/{sedGrpName}/reject/{offeredTo} HTTP/1.1
.....
[ClientTransId: ${ClientTransId}]
Content-Length: 0          
                 ]]>
               </artwork>
             </figure>
           </t>
		   
           <t>The data elements within the HTTP POST request are described as follows: 
             <list style="symbols" hangIndent="5">
			   <t>rant: The identifier of the registrant organization that offered the SED Group.</t>
			   <t>sedGrpName: The name of the SED Group offered by the registrant organization.</t>
			   <t>offeredTo: The identifier of the organization to whom the SED Group has been offered.</t>
               <t>ClientTransId: An optional HTTP header representing a client-generated transaction ID
               that, within the context of the SPPF client, identifies this 
               request. This value can be used at the discretion of the SPPF 
               client to track, log or correlate requests and their responses. 
			   SPPF server MUST echo back this value to the client in the corresponding
			   response to the incoming request. SPPF server will not check this value for uniqueness.</t>
             </list>
           </t>
         </section>
                  
	     <section anchor="rejectresponse" title="Reject Response">
           <t>The format of an HTTP response to a reject request is as follows:</t>
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
HTTP/1.1 ${StatusCode}
....
[ClientTransId: ${ClientTransId}]
ServerTransId: ${ServerTransId}
Content-Length: 0
                 ]]>
               </artwork>
             </figure>
           </t>

           <t>The data elements within the HTTP response are described as follows:
		     <list style="symbols" hangIndent="5">
			   <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
               <t>ClientTransId: An HTTP header representing the client transaction ID of the
			   corresponding HTTP request, if provided. This 
               value is simply an echo of the client transaction ID that 
               SPPF client passed into the SPPF request. When included 
               in the request, the SPPF server MUST return it in the corresponding
               response message.</t>
               <t>ServerTransId: A header parameter representing the server transaction ID that
               identifies this request for tracking purposes. This
               value MUST be unique for a given SPPF server.</t>
             </list>
           </t>
         </section>
		 </section>
        
       <section anchor="getoperation" title="Get Operation Structure">
         <t>In order to query the details of an object from the Registry, an authorized entity
         sends a get request to the registry. This request consists of an HTTP GET request
		 on the URI that identifies the queried resource.
		 After the operation is performed, the registry sends back an HTTP response to the client
		 indicating if the request has been performed successfully, and if not, the reason of the failure.
		 Moreover, if the queried object is found in the registry, the HTTP response's entity contains
		 the representation of the result object.
         The following sub-sections describe the expected format of the HTTP requests and responses.</t>
         
		 <section anchor="getreq" title="Get Request">
		   <t>The format of an HTTP GET request used to get an SPPF object is as follows:</t>		 
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
GET ${ResourceURI} HTTP/1.1
.....
[Accept-Type: ${AcceptType}]
Content-Length: 0
                 ]]>
               </artwork>
             </figure>
           </t>
		   
           <t>The data elements within the HTTP GET request are described as follows: 
             <list style="symbols" hangIndent="5">
			   <t>ResourceURI: The URI that identifies the resource to retrieve as defined in the "Resources URI" section.</t>
               <t>AcceptType: If an Accept-Type header is present in the request, it consists of the representation formats accepted by the client.</t>
             </list>
           </t>
         </section>

		 <section anchor="getresponse" title="Get Response">
           <t>The format of an HTTP response to a get request is as follows:</t>
		   <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
HTTP/1.1 ${StatusCode}
....
Content-Type: ...
Content-Length: ...

${ResourceRepresentation}
                 ]]>
               </artwork>
             </figure>
           </t>
		   
		   <t>The data elements within the HTTP response are described as follows:
		     <list style="symbols" hangIndent="5">
			   <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
               <t>ResourceRepresentation: HTTP response's entity that consists of the representation of the queried resource. The representation format MUST match the value of the Content-Type header.</t>
             </list>
           </t>
         </section>
		 </section>
		<!--
       <section anchor="getsedgrpoffersoperation" title="Get SED Group Offers Operation Structure">
         <t>In addition to the ability to query the details of one or more SED Group offers using a SED Group Offer key in
		 a Get request, this operation also provides an additional, more flexible, structure to query for SED Group Offer objects.</t>
		 
         <section anchor="getsedgrpoffersrqst" title="Get SED Group Offers Request">
           <t>Using the details passed into this structure, the server will
           attempt to find SED Group Offer objects that satisfy all the criteria passed into the
           request. If no criteria is passed in then the server will
           return the list of SED Group Offer objects that belong to the 
           registrant. If there are no matching SED Group Offers found then an empty result set
           will be returned.</t>
		   <t>The format of an HTTP GET request used to get SED Group Offers is as follows:</t>		 
           
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
GET /SEDGrpOffer HTTP/1.1
.....
[minorVer: ${minorVer}]
Content-Length: 0
                 ]]>
               </artwork>
             </figure>
           </t>
		   
		   <t>The data elements within the HTTP GET request are described as follows: 
             <list style="symbols" hangIndent="5">
               <t>minorVer: An optional header parameter representing a minor version identifier, indicating the minor  
               version of the SPPF API that the client is attempting to use. This is
               used in conjunction with the major version identifier in
               the XML namespace to identify the version of SPPF that the client 
               is using. If the element is not present, the server assumes that 
               the client is using the latest minor version supported by the SPPF
               server for the given major version. The versions supported by a 
               given SPPF server can be retrieved by the client using the 
               SPPF server menu operation described later in the document.</t>
			   <t>offeredBy: An optional query parameter representing one or more comma separated organization IDs. Only offers
               that are offered by the organization IDs
               in this list should be included in the result set. The
               result set is also subject to other query criteria in
               the request.</t>
               <t>offeredTo: An optional query parameter representing one or more comma separated organization IDs. Only offers
               that are offered to the organization IDs
               in this list should be included in the result set. The
               result set is also subject to other query criteria in
               the request.</t>
               <t>status: An optional query parameter representing an offer status (offered or accepted).
               Only offers in the specified status should be included
               in the result set. If this element is not present then
               the status of the offer should not be considered in the
               query. The result set is also subject to other query
               criteria in the request.</t>
			   <t>SedGrpOfferKey: TBD</t>
             </list>
           </t>
         </section>
		 
         <section anchor="getsedgrpoffersresponse" title="Get SED Group Offers Response">
           <t>The format of an HTTP response to a get SED Group Offers request is as follows:</t>
		   <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
HTTP/1.1 ${StatusCode}
....
Content-Length: ...

${SEDGrpOffersRepresentation}
                 ]]>
               </artwork>
             </figure>
           </t>
		   
		   <t>The data elements within the HTTP GET response are described as follows:
		     <list style="symbols" hangIndent="5">
			   <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
               <t>SEDGrpOffersRepresentation: TBD.</t>
             </list>
           </t>
         </section>
       </section>
       <section anchor="servermenuoperation" title="Get Server Details Operation Structure">
         <t>In order to query certain details of the SPPF server, like the SPPF server's status and the major/minor version supported by the server, the Server Details operation structure SHOULD be used.</t>
         
         <section anchor="servermenurqst" title="Get Server Details Request">
		   <t>The format of an HTTP GET request used to get the server status is as follows:</t>
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
GET /${version}/ServerStatus HTTP/1.1
.....
Content-Length: 0
                 ]]>
               </artwork>
             </figure>
           </t>
        
           <t>The data elements within the HTTP GET request are described as follows:
             <list style="symbols" hangIndent="5">
               <t>minorVer: An optional header parameter representing a minor version identifier, indicating the minor  
               version of the SPPF API that the client is attempting to use. This is
               used in conjunction with the major version identifier in
               the XML namespace to identify the version of SPPF that the client 
               is using. If the element is not present, the server assumes that 
               the client is using the latest minor version supported by the SPPF
               server for the given major version. The versions supported by a 
               given SPPF server can be retrieved by the client using the Get Server Status request 
			   without passing in the minorVer element.</t>
             </list>
           </t>
         </section>
        
         <section anchor="servermenuresp" title="Get Server Details Response">
           <t>The format of an HTTP response to a Get Server Status request is as follows:</t>
           <t>
             <figure title="">
               <artwork align="left">
                 <![CDATA[
HTTP/1.1 ${StatusCode}
....
Content-Length: ...

${ServerStatusRepresentation}
                 ]]>
               </artwork>
             </figure>
           </t>
        
           <t>The data elements within the HTTP GET response are described as follows: 
             <list style="symbols" hangIndent="5">
			   <t>StatusCode: One of the available HTTP status codes indicating the result of the request. See Response Codes and Messages section.</t>
               <t>ServerStatusRepresentation: The representation of the Server Status resource.</t>
             </list>
           </t>
         </section>
       </section>
	   -->
    </section>

    <section anchor="resultcodes" title="Response Codes and Messages">
      <t>HTTP provides a set of status codes that are used to indicate an overall result of the request to the client. This protocol implementation uses the status codes defined in <xref target="RFC2616"/>.</t>
	  
	  <section anchor="OK" title="200 OK">
	    <t>When returned in response to an HTTP GET request, this status code indicates that the get operation performed successfully.</t>
		<t>When returned in response to an HTTP PUT request, this status code indicates that the resource targetted by the URI present in the request has been updated.</t>
		<t>When returned in response to an HTTP DELETE request, this status code indicates that the resource targetted by the URI present in the request has been deleted.</t>
		<t>When returned in response to an HTTP POST request used to accept or reject a SED Group Offer, this status code indicates that the SED Group Offer resource targetted by the URI present in the request has been accepted or rejected.</t>
	  </section>
	  
	  <section anchor="created" title="201 Created">
	    <t>When returned in response to an HTTP POST request used to create a resource, this status code indicates that the resource targetted by the URI present in the request has been created.</t>
	  </section>
	  
	  <section anchor="badrequest" title="400 Bad Request">
	    <t>When returned in response to any HTTP request, this status code indicates that the HTTP request received by the server is invalid.</t>
	  </section>
	  
	  <section anchor="unauthorized" title="401 Unauthorized">
	    <t>When returned in response to any HTTP request, this status code indicates that authentication is required and has failed or has not yet been provided.</t>
	  </section>
	  
	  <section anchor="forbidden" title="403 Forbidden">
	    <t>When returned in response to any HTTP request, this status code indicates that the client is authenticated but not authorized to perform the desired operation.</t>
	  </section>
	  
	  <section anchor="notfound" title="404 Not Found">
	    <t>When returned in response to an HTTP GET or DELETE request, this status code indicates that the URI present in the HTTP request targets a nonexistent resource.</t>
		<t>When returned in response to an HTTP POST request used to accept or reject a SED Group Offer, this status code indicates that the SED Group Offer resource targetted by the URI present in the request does not exist.</t>
	  </section>
	  
	  <section anchor="methodnotallowed" title="405 Method Not Allowed">
	    <t>When returned in response to any HTTP request, this status code indicates that the HTTP method present in the request is not allowed to be used for the resource identified by the given URI.</t>
	  </section>
	  
	  <section anchor="unsupportedtype" title="415 Unsupported Media Type">
	    <t>When returned in response to an HTTP POST or PUT request, this status code indicates that the Content-Type header has a value corresponding to a media type not supported by the server.</t>
	  </section>
	  
	  <section anchor="servererror" title="500 Internal Server Error">
	    <t>When returned in response to any HTTP request, this status code indicates that an unexpected internal system or server error happened.</t>
	  </section>
	  
	  <section anchor="serviceunavailable" title="503 Service Unavailable">
	    <t>When returned in response to any HTTP request, this status code indicates that the server is temporarily unable to process incoming HTTP requests.</t>
	  </section>
    </section>
	
	<section anchor="protocol_oper" title="Protocol Operations">
      <t>Refer the "Framework Operations" section of the framework document for a description of
	  all SPPF operations, and any necessary semantics that MUST be adhered to in order to conform
	  with the SPPF specification.</t>
    </section>
	
	<section anchor="examples" title="SPP Protocol over SOAP Examples">
      <t>This section shows examples of HTTP message exchange between two SIP Service 
      Providers (SSP) and a registry. The messages in this section are HTTP requests/responses
	  that may include XML content representing the SPPF objects defined in the framework document.
	  This section relies on the XML data structures defined in the base SPPF specification <xref target="I-D.draft-ietf-drinks-spp-framework"/>.  
      So refer to that document to understand XML object types embedded in these example messages.</t>

      <t>In this sample use case scenario, SSP1 and SSP2 provision 
      resource data in the registry and use SPPF constructs to selectively 
      share the SED groups. In the figure below, SSP2 has two ingress 
      SBE instances that are associated with the public identities that 
      SSP2 has the retail relationship with. Also, the two SBE instances 
      for SSP1 are used to show how to use SPPF to associate 
      route preferences for the destination ingress routes and exercise 
      greater control on outbound traffic to the peer's ingress SBEs.</t>

      <t>
        <figure title="">
          <artwork align="left">
            <![CDATA[
   ---------------+                      +------------------
                  |                      |            
              +------+               +------+
              | sbe1 |               | sbe2 |
              +------+               +------+
    SSP1          |                      |           SSP2
              +------+               +------+
              | sbe3 |               | sbe4 |
              +------+               +------+
   iana-en:111    |                      |     iana-en:222
   ---------------+                      +------------------
           |                                     |
           |                                     |
           | SPPF   +------------------+   SPPF  |
           +------->|     Registry     |<--------+
                    +------------------+
                        ]]>
            </artwork>
          </figure>
        </t>

      <section anchor="add_destgrp" title="Add Destination Group">
        <t>SSP2 adds a destination group to the registry for use later using a POST request. SSP2 sets a unique transaction identifier 'txn_1479' for 
        tracking purposes through the ClientTransId header field. It also sets the Content-Type header field to application/xml since it provides an XML representation of the destination group in the HTTP entity. The name of the destination group is DEST_GRP_SSP2_1.</t>
        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/DG HTTP/1.1
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<DestGroup xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
</DestGroup>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry processes the request and returns a 201 Created response confirming successful creation of the named 
        destination group. Also, besides returning a unique server transaction 
        identifier (through the ServerTransId header field), Registry also returns the matching client transaction 
        identifier from the request message back to the SPPF client. The response also includes the Location header field indicating the URI of the created destination group.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
...........
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/DG/DEST_GRP_SSP2_1
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="upd_destgrp" title="Update Destination Group">
        <t>SSP2 updates the destination group previously created (i.e. DEST_GRP_SSP2_1). In this case, no information about the destination group can be modified since the only information it contains is its key, and the key can't be modified.</t>
        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:222/DG/DEST_GRP_SSP2_1 HTTP/1.1
...........
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<DestGroup xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
</DestGroup>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry processes the request and returns a 200 OK response confirming successful update of the named 
        destination group.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
...........
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_sedrecs" title="Add SED Records">
        <t>SSP2 adds a SED record in the form of ingress route to the registry. In this example, the SED record is a NAPTR record. Note that the NAPTR recorder is added in a disabled state (i.e. isInSvc is set to false).</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/SR HTTP/1.1
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<NAPTR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd"
 xmlns="urn:ietf:params:xml:ns:sppf:rest:1">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:sedName>SED_SSP2_SBE2</sppfb:sedName>
  <sppfb:isInSvc>false</sppfb:isInSvc>
  <sppfb:order>10</sppfb:order>
  <sppfb:flags>u</sppfb:flags>
  <sppfb:svcs>E2U+sip</sppfb:svcs>
  <sppfb:regx>
    <sppfb:ere>^(.*)$</sppfb:ere>
    <sppfb:repl>sip:\1@sbe2.ssp2.example.com</sppfb:repl>
  </sppfb:regx>
</NAPTR>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry returns a success response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
.............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE2
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="upd_sedrecs" title="Update SED Records">
        <t>SSP2 updates the SED record previsously added to the registry by enabling it (i.e. setting isInSvc to true).</t>
        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:222/SR/SED_SSP2_SBE2 HTTP/1.1
.............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<NAPTR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd"
 xmlns="urn:ietf:params:xml:ns:sppf:rest:1">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:sedName>SED_SSP2_SBE2</sppfb:sedName>
  <sppfb:isInSvc>true</sppfb:isInSvc>
  <sppfb:order>10</sppfb:order>
  <sppfb:flags>u</sppfb:flags>
  <sppfb:svcs>E2U+sip</sppfb:svcs>
  <sppfb:regx>
    <sppfb:ere>^(.*)$</sppfb:ere>
    <sppfb:repl>sip:\1@sbe2.ssp2.example.com</sppfb:repl>
  </sppfb:regx>
</NAPTR>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry returns a success response.</t>
		
        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
.............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_sedrecs_uritype" title="Add SED Records -- URIType">
        <t>SSP2 adds another SED record to the registry and makes use of URIType.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/SR HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<URI xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:sedName>SED_SSP2_SBE4</sppfb:sedName>
  <sppfb:isInSvc>true</sppfb:isInSvc>
  <sppfb:ere>^(.*)$</sppfb:ere>
  <sppfb:uri>sip:\1;npdi@sbe4.ssp2.example.com</sppfb:uri>
</URI>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry returns a success response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE4
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="add_sedgrp" title="Add SED Group">
        <t>SSP2 creates the grouping of SED records (e.g. ingress routes) and chooses higher precedence for SED_SSP2_SBE2 by setting a lower number for the &quot;priority&quot; attribute, a protocol agnostic precedence indicator. The SED Group is added with a disabled state.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/SG HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<SedGrp xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:sedGrpName>SED_GRP_SSP2_1</sppfb:sedGrpName>
  <sppfb:sedRecRef>
    <sppfb:sedKey xsi:type="ObjKeyType">
      <ref>${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE2</ref>
    </sppfb:sedKey>
    <sppfb:priority>80</sppfb:priority>
  </sppfb:sedRecRef>
  <sppfb:sedRecRef>
    <sppfb:sedKey xsi:type="ObjKeyType">
      <ref>${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE4</ref>
    </sppfb:sedKey>
    <sppfb:priority>100</sppfb:priority>
  </sppfb:sedRecRef>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:isInSvc>false</sppfb:isInSvc>
  <sppfb:priority>10</sppfb:priority>
</SedGrp>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry returns a success response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="upd_sedgrp" title="Update SED Group">
        <t>SSP2 enables the previously created SED Group by setting its isInSvc field to true.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1 HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<SedGrp xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:sedGrpName>SED_GRP_SSP2_1</sppfb:sedGrpName>
  <sppfb:sedRecRef>
    <sppfb:sedKey xsi:type="ObjKeyType">
      <ref>${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE2</ref>
    </sppfb:sedKey>
    <sppfb:priority>80</sppfb:priority>
  </sppfb:sedRecRef>
  <sppfb:sedRecRef>
    <sppfb:sedKey xsi:type="ObjKeyType">
      <ref>${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE4</ref>
    </sppfb:sedKey>
    <sppfb:priority>100</sppfb:priority>
  </sppfb:sedRecRef>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:isInSvc>true</sppfb:isInSvc>
  <sppfb:priority>10</sppfb:priority>
</SedGrp>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry returns a success response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_pi_corclaim" title="Add Public Identity -- Successful COR claim">
        <t>SSP2 activates a TN public identity by associating it with a valid destination group. Further, SSP2 puts forth a claim that it is the carrier-of-record for the TN.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/TN HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<TN xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:tn>+12025556666</sppfb:tn>
  <sppfb:corInfo>
    <sppfb:corClaim>true</sppfb:corClaim>
  </sppfb:corInfo>
</TN>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Assuming that the registry has access to TN authority data and it performs the required checks to verify that SSP2 is in fact the service provider of record for the given TN, the request is processed successfully. In order to get the COR claim status, SSP2 will have to perform a GET on the created public identity.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/TN/+12025556666
Content-Length: ...
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="upd_pi_corclaim" title="Update Public Identity">
        <t>SSP2 updates the previously created TN public identity.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:222/TN/+12025556666 HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<TN xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:tn>+12025556666</sppfb:tn>
  <sppfb:corInfo>
    <sppfb:corClaim>true</sppfb:corClaim>
  </sppfb:corInfo>
</TN>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>The registry returns a success response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: ...

<CORInfo xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:corClaim>true</sppfb:corClaim>
  <sppfb:cor>true</sppfb:cor>
  <sppfb:corDate>2010-05-30T09:30:11Z</sppfb:corDate>
</CORInfo>
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_lrn" title="Add LRN">
        <t>If another entity that SSP2 shares session establishment information (e.g. routes) with has access to Number Portability data, it may choose to perform route lookups by routing number. Therefore, SSP2 associates a routing number to a destination group in order to facilitate ingress route discovery.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/RN HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<RN xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:rn>2025550000</sppfb:rn>
</RN>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response to the SPPF client.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/RN/2025550000
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="upd_lrn" title="Update LRN">
        <t>SSP2 updates the previously created routing number.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:222/RN/2025550000 HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<RN xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:rn>2025550000</sppfb:rn>
</RN>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response to the SPPF client.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_tn_range" title="Add TN Range">
        <t>Next, SSP2 activates a block of ten thousand TNs and associates it to destination group DEST_GRP_SSP2_1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/TNR HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<TNR xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:range>
    <sppfb:startRange>+12026660000</sppfb:startRange>
    <sppfb:endRange>+12026669999</sppfb:endRange>
  </sppfb:range>
</TNR>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/TNR/start/+12026660000/end/+12026669999
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="upd_tn_range" title="Update TN Range">
        <t>SSP2 updates the previously created block of TNs.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:222/TNR/start/+12026660000/end/+12026669999 HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<TNR xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:range>
    <sppfb:startRange>+12026660000</sppfb:startRange>
    <sppfb:endRange>+12026669999</sppfb:endRange>
  </sppfb:range>
</TNR>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_tn_prefix" title="Add TN Prefix">
        <t>Next, SSP2 activates a block of ten thousand TNs using the TNPType structure and identifying a TN prefix.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/TNP HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<TNP xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:tnPrefix>+1202777</sppfb:tnPrefix>
</TNP>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/TNP/+1202777
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="upd_tn_prefix" title="Update TN Prefix">
        <t>SSP2 updates the previously created TN prefix.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:222/TNP/+1202777 HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<TNP xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:tnPrefix>+1202777</sppfb:tnPrefix>
</TNP>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_sed_grp_offer" title="Enable Peering -- SED Group Offer">
        <t>In order for SSP1 to complete session establishment for a destination TN where the target subscriber has a retail relationship with SSP2, it first requires an asynchronous bi-directional handshake to show mutual consent. To start the process, SSP2 initiates the peering handshake by offering SSP1 access to its SED group.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1/offer HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<SedGrpOffer xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:sedGrpOfferKey xsi:type="SedGrpOfferKeyType">
    <sgRef>${base_uri}/v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1</sgRef>
    <offeredTo>iana-en:111</offeredTo>
  </sppfb:sedGrpOfferKey>
  <sppfb:status>offered</sppfb:status>
  <sppfb:offerDateTime>2006-05-04T18:13:51.0Z</sppfb:offerDateTime>
</SedGrpOffer>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and confirms that the SSP1 will now have the opportunity to weigh in on the offer and either accept or reject it. The registry may employ out-of-band notification mechanisms for quicker updates to SSP1 so they can act faster, though this topic is beyond the scope of this document.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1/offer/iana-en:111
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_sed_grp_offer_accept" title="Enable Peering -- SED Group Offer Accept">
        <t>SSP1 responds to the offer from SSP2 and agrees to have visibility to SSP2 session establishment information (e.g. ingress routes).</t>
        
        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1/accept/iana-en:111 HTTP/1.1
............
ClientTransId: txn_1479
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry confirms that the request has been processed successfully. From this point forward, if SSP1 looks up a public identity through the query resolution server, 
		where the public identity is part of the destination group by way of "SED_GRP_SSP2_1" session establishment data association, SSP2 ingress SBE information will be shared with SSP1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="sed_grp_offer_reject" title="Remove Peering -- SED Group Offer Reject">
        <t>SSP1 had earlier accepted to have visibility to SSP2 session establishment data. SSP1 now decides to no longer maintain this visibility and hence rejects the SED Group Offer.</t>
        
        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1/reject/iana-en:111 HTTP/1.1
............
ClientTransId: txn_1479
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry confirms that the request has been processed successfully. From this point forward, if SSP1 looks up a public identity through the query resolution server, 
		where the public identity is part of the destination group by way of "SED_GRP_SSP2_1" session establishment data association, SSP2 ingress SBE information will NOT be shared with SSP1 and hence
		SSP2 ingress SBE will NOT be returned in the query response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="add_egress_rte" title="Add Egress Route">
        <t>SSP1 wants to prioritize all outbound traffic to the ingress routes associated with the "SED_GRP_SSP2_1" SED Group record, through "sbe1.ssp1.example.com".</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
POST /v1.0/rant/iana-en:111/ER HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<EgrRte xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:111</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:egrRteName>EGR_RTE_01</sppfb:egrRteName>
  <sppfb:pref>50</sppfb:pref>
  <sppfb:regxRewriteRule>
    <sppfb:ere>^(.*@)(.*)$</sppfb:ere>
    <sppfb:repl>\1\2?route=sbe1.ssp1.example.com</sppfb:repl>
  </sppfb:regxRewriteRule>
  <sppfb:ingrSedGrp xsi:type="ObjKeyType">
    <ref>${base_uri}/v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1</ref>
  </sppfb:ingrSedGrp>
</EgrRte>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Since peering has already been established, the request to add the egress route has been successfully completed.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 201 Created
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Location: ${base_uri}/v1.0/rant/iana-en:111/ER/EGR_RTE_01
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
	  
	  <section anchor="upd_egress_rte" title="Update Egress Route">
        <t>SSP1 wants to modify the priority of the previously created egress route (i.e. EGR_RTE_01).</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
PUT /v1.0/rant/iana-en:111/ER/EGR_RTE_01 HTTP/1.1
............
ClientTransId: txn_1479
Content-Type: application/xml
Content-Length: ...

<EgrRte xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:111</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:egrRteName>EGR_RTE_01</sppfb:egrRteName>
  <sppfb:pref>40</sppfb:pref>
  <sppfb:regxRewriteRule>
    <sppfb:ere>^(.*@)(.*)$</sppfb:ere>
    <sppfb:repl>\1\2?route=sbe1.ssp1.example.com</sppfb:repl>
  </sppfb:regxRewriteRule>
  <sppfb:ingrSedGrp xsi:type="ObjKeyType">
    <ref>${base_uri}/v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1</ref>
  </sppfb:ingrSedGrp>
</EgrRte>
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Since peering has already been established, the request to update the egress route has been successfully completed.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ClientTransId: txn_1479
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="get_dest_grp" title="Get Destination Group">
        <t>SSP2 sends an HTTP GET request to fetch the last provisioned record for destination group DEST_GRP_SSP2_1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
GET /v1.0/rant/iana-en:222/DG/DEST_GRP_SSP2_1 HTTP/1.1
............
Accept-Type: application/xml
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
Content-Type: application/xml
Content-Length: ...

<DestGroup xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:cDate>2012-10-22T09:30:10Z</sppfb:cDate>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
</DestGroup>
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="get_pub_id" title="Get Public Identity">
        <t>SSP2 obtains the last provisioned record associated with a given TN.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
GET /v1.0/rant/iana-en:222/TN/+12025556666 HTTP/1.1
............
Accept-Type: application/xml
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
Content-Type: application/xml
Content-Length: ...

<TN xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:tn>+12025556666</sppfb:tn>
  <sppfb:corInfo>
    <sppfb:corClaim>true</sppfb:corClaim>
    <sppfb:cor>true</sppfb:cor>
    <sppfb:corDate>2010-05-30T09:30:10Z</sppfb:corDate>
  </sppfb:corInfo>
</TN>
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="get_sed_grp_request" title="Get SED Group Request">
        <t>SSP2 obtains the last provisioned record for the SED group SED_GRP_SSP2_1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
GET /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1 HTTP/1.1
............
Accept-Type: application/xml
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>
        
        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
Content-Type: application/xml
Content-Length: ...

<SedGrp xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:cDate>2012-10-22T09:30:10Z</sppfb:cDate>
  <sppfb:sedGrpName>SED_GRP_SSP2_1</sppfb:sedGrpName>
  <sppfb:sedRecRef>
    <sppfb:sedKey xsi:type="ObjKeyType">
      <ref>${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE2</ref>
    </sppfb:sedKey>
    <sppfb:priority>80</sppfb:priority>
  </sppfb:sedRecRef>
  <sppfb:sedRecRef>
    <sppfb:sedKey xsi:type="ObjKeyType">
      <ref>${base_uri}/v1.0/rant/iana-en:222/SR/SED_SSP2_SBE4</ref>
    </sppfb:sedKey>
    <sppfb:priority>100</sppfb:priority>
  </sppfb:sedRecRef>
  <sppfb:dgName>DEST_GRP_SSP2_1</sppfb:dgName>
  <sppfb:peeringOrg>iana-en:111</sppfb:peeringOrg>
  <sppfb:isInSvc>true</sppfb:isInSvc>
  <sppfb:priority>10</sppfb:priority>
</SedGrp>
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="get_sed_grp_offers_rqst" title="Get SED Group Offers Request">
        <t>SSP2 fetches the last provisioned SED group offer to the &lt;peeringOrg&gt; SSP1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
GET /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1/offer/FD182737 HTTP/1.1
............
Accept-Type: application/xml
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry processes the request successfully and returns a favorable response. In this example, the offer has been accepted by SSP1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
Content-Type: application/xml
Content-Length: ...

<SedGrpOffer xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:222</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:cDate>2012-10-22T09:30:10Z</sppfb:cDate>
  <sppfb:sedGrpOfferKey xsi:type="SedGrpOfferKeyType">
    <sgRef>${base_uri}/v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1</sgRef>
    <offeredTo>iana-en:111</offeredTo>
  </sppfb:sedGrpOfferKey>
  <sppfb:status>accepted</sppfb:status>
  <sppfb:offerDateTime>2006-05-04T18:13:51.0Z</sppfb:offerDateTime>
  <sppfb:acceptDateTime>2006-07-08T11:12:46.0Z</sppfb:acceptDateTime>
</SedGrpOffer>
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="get_egress_rte" title="Get Egress Route">
        <t>SSP2 wants to verify the last provisioned record for the egress route called EGR_RTE_01.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
GET /v1.0/rant/iana-en:111/ER/EGR_RTE_01 HTTP/1.1
............
Accept-Type: application/xml
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
Content-Type: application/xml
Content-Length: ...

<EgrRte xmlns="urn:ietf:params:xml:ns:sppf:rest:1"
  xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:sppf:rest:1 sppr.xsd">
  <sppfb:rant>iana-en:111</sppfb:rant>
  <sppfb:rar>iana-en:223</sppfb:rar>
  <sppfb:egrRteName>EGR_RTE_01</sppfb:egrRteName>
  <sppfb:pref>40</sppfb:pref>
  <sppfb:regxRewriteRule>
    <sppfb:ere>^(.*@)(.*)$</sppfb:ere>
    <sppfb:repl>\1\2?route=sbe1.ssp1.example.com</sppfb:repl>
  </sppfb:regxRewriteRule>
  <sppfb:ingrSedGrp xsi:type="ObjKeyType">
    <ref>${base_uri}/v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1</ref>
  </sppfb:ingrSedGrp>
</EgrRte>
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="del_dest_grp" title="Delete Destination Group">
        <t>SSP2 initiates a request to delete the destination group DEST_GRP_SSP2_1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
DELETE /v1.0/rant/iana-en:222/DG/DEST_GRP_SSP2_1 HTTP/1.1
............
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="del_pub_id" title="Delete Public Identity">
        <t>SSP2 chooses to de-activate the TN and remove it from the registry.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
DELETE /v1.0/rant/iana-en:222/TN/+12025556666 HTTP/1.1
............
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="del_sed_grp_rqst" title="Delete SED Group Request">
        <t>SSP2 removes the SED group called SED_GRP_SSP2_1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
DELETE /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1 HTTP/1.1
............
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>

      <section anchor="del_sed_grp_offers_rqst" title="Delete SED Group Offers Request">
        <t>SSP2 no longer wants to share SED group SED_GRP_SSP2_1 with SSP1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
DELETE /v1.0/rant/iana-en:222/SG/SED_GRP_SSP2_1/offer/FD182737 HTTP/1.1
............
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response. Restoring this resource sharing will require a new SED group offer from SSP2 to SSP1 followed by a successful SED group accept request from SSP1.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
        </section>

        <section anchor="del_egress_rte" title="Delete Egress Route">
          <t>SSP1 decides to remove the egress route with the label EGR_RTE_01.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
DELETE /v1.0/rant/iana-en:111/ER/EGR_RTE_01 HTTP/1.1
............
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>

        <t>Registry completes the request successfully and returns a favorable response.</t>

        <t>
          <figure title="">
            <artwork align="left">
              <![CDATA[
HTTP/1.1 200 OK
............
ServerTransId: tx_12345
Content-Length: 0
              ]]>
            </artwork>
          </figure>
        </t>
      </section>
    </section>

    <section anchor="SecurityConsiderations" title="Security Considerations">
      <t>RESTful SPP Protocol is used to query and update session peering data and addresses, so
   the ability to access this protocol should be limited to users and
   systems that are authorized to query and update this data.  Because this 
   data is sent in both directions, it may not be sufficient for just the client 
   or user to be authenticated with the server.  The identity of the server 
   should also be authenticated by the client, which is often accomplished using 
   the TLS certificate exchange and validation described in <xref target="RFC2818"/>.  
   SPP Protocol messages may include sensitive information, routing data, lists of
   resolvable addresses, etc. So when used in a production setting and across non-secure 
   networks, SPP Protocol should only be used over communications channels that provide strong 
   encryption for data privacy.</t>

      <section anchor="IntegrityPrivacyAuthentication" title="Integrity, Privacy, and Authentication">
        <t>The RESTful SPP Protocol relies on an underlying secure
        transport for integrity and privacy.  Such transports are expected to
        include TLS/HTTPS.  In addition to the application level
        authentication imposed by an SPPF server, there are a number of
        options for authentication within the transport layer and the
        messaging envelope.  These include TLS client certificates and HTTP
        Digest Access Authentication headers.</t>

        <t>At a minimum, all conforming RESTful SPP Protocol implementations
        MUST support HTTPS.</t>
      </section>

      <section anchor="Vulnerabilities" title="Vulnerabilities">
	   <t>The above protocols may have various vulnerabilities, and these may
	   be inherited by the RESTful SPP Protocol.  RESTful SPP Protocol itself may have vulnerabilities 
	   because an authorization model is not explicitly specified in the current 
	   specification.</t>
	   <t>
	   Sections 5 and 10.1 describe requirements for HTTPS support using TLS.  Non-anonymous TLS servers can optionally request a certificate from a TLS client; 
	   that option is not a requirement for this protocol.  This presents a denial of service risk in which unauthenticated clients can consume server CPU resources by creating TLS sessions. 
	   The risk is increased if the server supports client-initiated renegotiation. This risk can be mitigated by disabling client-initiated renegotiation on the server and by ensuring that other 
	   means (such as firewall access control lists) are used to restrict unauthenticated client access to servers.</t>
	   <t>In conjunction with the above, it is important that REST SPP Protocol implementations implement an authorization 
	   model that considers the source of each query or update request and 
	   determines whether it is reasonable to authorize that source to perform that
	   specific query or update.</t>
      </section>

      <section anchor="DeploymentEnvironmentSpecifics" title="Deployment Environment Specifics">
	   <t>Some deployments of REST SPP Protocol could choose to use transports
	   without encryption.  This presents vulnerabilities but could be
	   selected for deployments involving closed networks or debugging
	   scenarios.  However, the vulnerabilities of such a deployment could be a 
	   lack of integrity and privacy of the data transported in 
	   this type of deployment.</t>
      </section>
    </section>
 
    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
                &rfc2119;
                &rfc3688;
                &rfc5246;
                &rfc2617;
                &rfc2616;
                <reference anchor="I-D.draft-ietf-drinks-spp-framework">
                        <front>
                          <title>Session Peering Provisioning Framework </title>
    					  <author initials="K.C." surname="Cartwright"/>
    					  <author initials="V.B." surname="Bhatia"/>
						  <author initials="S.A." surname="Ali"/>
						  <author initials="D.S." surname="Schwartz"/>
    					
                       <date month="July" year="2012" />
                        </front>
                        <seriesInfo name="Internet-Draft" value="draft-ietf-drinks-spp-framework-02"/>
                        <format target="http://tools.ietf.org/html/draft-ietf-drinks-spp-framework-02" type="HTML" />
                </reference>
    </references>
    
    <references title="Informative References"> 
                &rfc2818;
				<reference anchor='W3C.REC-xml-20081126' target='http://www.w3.org/TR/2008/REC-xml-20081126'>
					<front>
						<title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>

						<author initials='C.' surname='Sperberg-McQueen' fullname='C. M. Sperberg-McQueen'>
							<organization />
						</author>

						<author initials='F.' surname='Yergeau' fullname='François Yergeau'>
							<organization />
						</author>

						<author initials='T.' surname='Bray' fullname='Tim Bray'>
							<organization />
						</author>

						<author initials='E.' surname='Maler' fullname='Eve Maler'>
							<organization />
						</author>

						<author initials='J.' surname='Paoli' fullname='Jean Paoli'>
							<organization />
						</author>

						<date month='November' day='26' year='2008' />
					</front>

					<seriesInfo name='World Wide Web Consortium Recommendation' value='REC-xml-20081126' />
					<format type='HTML' target='http://www.w3.org/TR/2008/REC-xml-20081126' />
				</reference>
				<reference anchor='RoyFielding' target='http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm'>
					<front>
						<title>Architectural Styles and the Design of Network-based Software Architectures</title>

						<author initials='R.T.' surname='Fielding' fullname='Fielding, Roy Thomas'>
							<organization />
						</author>

						<date month='' day='' year='2000' />
					</front>

					<seriesInfo name='University of California' value='' />
					<format type='HTML' target='http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm' />
				</reference>
    </references>
  </back>
</rfc>