Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 7878

Session Peering Provisioning (SPP) Protocol over SOAP

Pages: 83
Proposed Standard
Part 2 of 4 – Pages 22 to 43
First   Prev   Next

Top   ToC   RFC7878 - Page 22   prevText

7.2.5. Batch Operation Structure

An SPPP over SOAP Batch request XML structure allows the SPPF client to send any of the Add, Del, Accept, or Reject operations together in one single request. This gives an SPPF client the flexibility to use one single request structure to perform more than operations (verbs). The batch request structure is wrapped within the <spppBatchRequest> element while an SPPF Batch response is wrapped within the <spppBatchResponse> element. The following subsections describe the <spppBatchRequest> and <spppBatchResponse> elements. Refer to Section 10 for an example of a Batch operation.
Top   ToC   RFC7878 - Page 23
7.2.5.1. Batch Request Structure
An SPPP over SOAP Batch request definition is contained within the generic <spppBatchRequest> element. <element name="spppBatchRequest"> <complexType> <sequence> <element name="clientTransId" type="sppfb:TransIdType" minOccurs="0"/> <element name="minorVer" type="sppfb:MinorVerType" minOccurs="0"/> <choice minOccurs="1" maxOccurs="unbounded"> <element name="addObj" type="sppfb:BasicObjType"/> <element name="delObj" type="sppfb:ObjKeyType"/> <element name="acceptSedGrpOffer" type="sppfs:SedGrpOfferKeyType"/> <element name="rejectSedGrpOffer" type="sppfs:SedGrpOfferKeyType"/> </choice> </sequence> </complexType> </element> The data elements within the <sppBatchRequest> element are described as follows: o clientTransId: Zero or one 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. The SPPF server MUST echo back this value to the client in the corresponding response to the incoming request. The SPPF server will not check this value for uniqueness. o minorVer: Zero or one minor version identifier, as defined in Section 7.4. o addObj: One or more elements of abstract type BasicObjType where each element identifies an object that needs to be added. o delObj: One or more elements of abstract type ObjKeyType where each element identifies a key for the object that needs to be deleted . o acceptSedGrpOffer: One or more elements of type SedGrpOfferKeyType where each element identifies a SED Group Offer that needs to be accepted.
Top   ToC   RFC7878 - Page 24
   o  rejectSedGrpOffer: One or more elements of type SedGrpOfferKeyType
      where each element identifies a SED Group Offer that needs to be
      rejected.

   With respect to the handling of error conditions, conforming SPPP
   SOAP servers MUST stop processing elements in the request at the
   first error and roll back any elements that had already been
   processed for that Batch request ("stop and roll back").

7.2.5.2. Batch Response
An SPPP over SOAP batch response structure is contained within the generic <sppBatchResponse> element. This response structure is used for a Batch request that contains many different types of SPPF operations. <element name="spppBatchResponse"> <complexType> <sequence> <element name="clientTransId" type="sppfb:TransIdType" minOccurs="0"/> <element name="serverTransId" type="sppfb:TransIdType"/> <element name="overallResult" type="sppfs:ResultCodeType"/> <choice minOccurs="0" maxOccurs="unbounded"> <element name="addResult" type="sppfs:ObjResultCodeType"/> <element name="delResult" type="sppfs:ObjKeyResultCodeType"/> <element name="acceptResult" type="sppfs:SedGrpOfferKeyResultCodeType"/> <element name="rejectResult" type="sppfs:SedGrpOfferKeyResultCodeType"/> </choice> </sequence> </complexType> </element> An <spppBatchResponse> contains the elements necessary for an SPPF client to precisely determine the overall result of various operations in the request, and if an error occurs, it provides information about the specific objects or keys in the request that caused the error.
Top   ToC   RFC7878 - Page 25
   The data elements within the SPPP over SOAP Batch response are
   described as follows:

   o  clientTransId: Zero or one client transaction ID.  This value is
      simply an echo of the client transaction ID that the SPPF client
      passed into the SPPF update request.  When included in the
      request, the SPPF server MUST return it in the corresponding
      response message.

   o  serverTransId: Exactly one server transaction ID that identifies
      this request for tracking purposes.  This value MUST be unique for
      a given SPPF server.

   o  overallResult: Exactly one response code and message pair that
      explicitly identifies the result of the request.  See Section 7.3
      for further details.

   o  addResult: One or more elements of type ObjResultCodeType where
      each element identifies the result code, result message, and the
      specific object to which the result relates.

   o  delResult: One or more elements of type ObjKeyResultCodeType where
      each element identifies the result code, result message, and the
      specific object key to which the result relates.

   o  acceptResult: One or more elements of type
      SedGrpOfferKeyResultCodeType where each element identifies the
      result code, result message, and the specific SED Group Offer key
      to which the result relates.

   o  rejectResult: One or more elements of type
      SedGrpOfferKeyResultCodeType where each element identifies the
      result code, result message, and the specific SED Group Offer key
      to which the result relates.

7.2.6. Get Operation Structure

In order to query the details of an object from the Registry, an authorized entity can send the spppGetRequest to the Registry with a GetRqstType XML data structure containing one or more object keys that uniquely identify the object whose details are being queried. The following subsections describe the <spppGetRequest> and <spppGetResponse> elements. Refer to Section 10 for an example of the SPPP over SOAP Get operation on each type of SPPF object.
Top   ToC   RFC7878 - Page 26
7.2.6.1. Get Request
The request structure for an SPPP over SOAP Get operation is contained within the generic <spppGetRequest> element: <element name="spppGetRequest"> <complexType> <sequence> <element name="minorVer" type="sppfb:MinorVerType" minOccurs="0"/> <element name="objKey" type="sppfb:ObjKeyType" maxOccurs="unbounded"/> </sequence> </complexType> </element> The data elements within the <spppGetRequest> element are described as follows: o minorVer: Zero or one minor version identifier, as defined in Section 7.4. o objKey: One or more elements of abstract type ObjKeyType (as defined in [RFC7877]). Each element contains attributes that uniquely identify the object that the client is requesting the server to query. Refer to Section 7.1 of this document for a description of all concrete object key types, for various SPPF objects, which are eligible to be passed into this element.
7.2.6.2. Get Response
The SPPP over SOAP Get response is wrapped within the generic <spppGetResponse> element, as described in Section 7.2.8.

7.2.7. Get SED Group Offers Operation Structure

In addition to the ability to query the details of one or more SED Group Offers using a SED Group Offer key in the spppGetRequest, this operation also provides an additional, more flexible, structure to query for SED Group Offer objects. This additional structure is contained within the <getSedGrpOffersRequest> element while the response is wrapped within the generic <spppGetResponse> element. The following subsections describe the <getSedGrpOffersRequest> and <spppGetResponse> elements.
Top   ToC   RFC7878 - Page 27
7.2.7.1. Get SED Group Offers Request
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 are passed in, then the SPPF 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. <element name="getSedGrpOffersRequest"> <complexType> <sequence> <element name="minorVer" type="sppfb:MinorVerType" minOccurs="0"/> <element name="offeredBy" type="sppfb:OrgIdType" minOccurs="0" maxOccurs="unbounded"/> <element name="offeredTo" type="sppfb:OrgIdType" minOccurs="0" maxOccurs="unbounded"/> <element name="status" type="sppfb:SedGrpOfferStatusType" minOccurs="0"/> <element name="sedGrpOfferKey" type="sppfs:SedGrpOfferKeyType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> </element> The data elements within the <getSedGrpOffersRequest> element are described as follows: o minorVer: Zero or one minor version identifier, as defined in Section 7.4. o offeredBy: Zero or more 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. o offeredTo: Zero or more 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. o status: The status of the offer, 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.
Top   ToC   RFC7878 - Page 28
   o  sedGrpOfferKey: Zero or more SED Group Offer keys.  Only offers
      having one of these keys should be included in the result set.
      The result set is also subject to other query criteria in the
      request.

7.2.7.2. Get SED Group Offers Response
The spppGetResponse element is described in Section 7.2.8.

7.2.8. Generic Query Response

An SPPP over SOAP query response object is contained within the generic <spppGetResponse> element. <element name="spppGetResponse"> <complexType> <sequence> <element name="overallResult" type="sppfs:ResultCodeType"/> <element name="resultObj" type="sppfb:BasicObjType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> </element> An <spppGetResponse> contains the elements necessary for the SPPF client to precisely determine the overall result of the query and details of any SPPF objects that matched the criteria in the request. The data elements within the SPPP over SOAP query response are described as follows: o overallResult: Exactly one response code and message pair that explicitly identifies the result of the request. See Section 7.3 for further details. o resultObj: The set of zero or more objects that matched the query criteria. If no objects matched the query criteria, then the result object(s) MUST be empty and the overallResult value MUST indicate success (if no matches are found for the query criteria, the response is considered a success).
Top   ToC   RFC7878 - Page 29

7.2.9. Get Server Details Operation Structure

In order to query certain details of the SPPF server, such as the SPPF server's status and the major/minor version supported by the server, the Server Details operation structure SHOULD be used. This structure is contained within the <spppServerStatusRequest> element whereas an SPPF server status response is wrapped within the <spppServerStatusResponse> element. The following subsections describe the <spppServerStatusRequest> and <spppServerStatusResponse> elements.
7.2.9.1. Get Server Details Request
An SPPP over SOAP server details request structure is represented in the <spppServerStatusRequest> element as follows: <element name="spppServerStatusRequest"> <complexType> <sequence> <element name="minorVer" type="sppfb:MinorVerType" minOccurs="0"/> </sequence> </complexType> </element> The data elements within the <spppServerStatusRequest> element are described as follows: o minorVer: Zero or one minor version identifier, as defined in Section 7.4.
7.2.9.2. Get Server Details Response
An SPPP over SOAP server details response structure is contained within the generic <spppServerStatusResponse> element. <element name="spppServerStatusResponse"> <complexType> <sequence> <element name="overallResult" type="sppfs:ResultCodeType"/> <element name="svcMenu" type="sppfb:SvcMenuType"/> </sequence> </complexType> </element>
Top   ToC   RFC7878 - Page 30
   The data elements within the <spppServerStatusResponse> element are
   described as follows:

   o  overallResult: Exactly one response code and message pair that
      explicitly identifies the result of the request.  See Section 7.3
      for further details.

   o  svcMenu: Exactly one element of type SvcMenuType that, in turn,
      contains the elements to return the server status, the major and
      minor versions of SPPP over SOAP supported by the SPPF server
      (refer to Section 12 of [RFC7877] for the definition of
      SvcMenuType).

7.3. Response Codes and Messages

This section contains the listing of response codes and their corresponding human-readable text. These response codes are in conformance with the response types defined in Section 5.3 of [RFC7877]. The response code numbering scheme generally adheres to the theory formalized in Section 4.2.1 of [RFC5321]: o The first digit of the response code can only be 1 or 2: 1 = a positive result, and 2 = a negative result. o The second digit of the response code indicates the category: 0 = Protocol Syntax, 1 = Implementation Specific Business Rule, 2 = Security, and 3 = Server System. o The third and fourth digits of the response code indicate the individual message event within the category defined by the first two digits. The response codes are also categorized as to whether they are overall response codes that may only be returned in the overallResult data element in SPPF responses or object-level response codes that may only be returned in the detailResult element of the SPPF responses.
Top   ToC   RFC7878 - Page 31
   +--------+--------------------------+-------------------------------+
   | Result | Result Message           | Overall or Object Level       |
   | Code   |                          |                               |
   +--------+--------------------------+-------------------------------+
   | 1000   | Request succeeded        | Overall Response Code         |
   | 2000   | Request syntax invalid   | Overall Response Code         |
   | 2001   | Request too large        | Overall Response Code         |
   |        | MaxSupported:[Maximum    |                               |
   |        | requests supported]      |                               |
   | 2002   | Version not supported    | Overall Response Code         |
   | 2100   | Command invalid          | Overall Response Code         |
   | 2300   | System temporarily       | Overall Response Code         |
   |        | unavailable              |                               |
   | 2301   | Unexpected internal      | Overall Response Code         |
   |        | system or server error   |                               |
   | 2101   | Attribute value invalid  | Object-Level Response Code    |
   |        | AttrName:[AttributeName] |                               |
   |        | AttrVal:[AttributeValue] |                               |
   | 2102   | Object does not exist    | Object-Level Response Code    |
   |        | AttrName:[AttributeName] |                               |
   |        | AttrVal:[AttributeValue] |                               |
   | 2103   | Object status or         | Object-Level Response Code    |
   |        | ownership does not allow |                               |
   |        | for operation            |                               |
   |        | AttrName:[AttributeName] |                               |
   |        | AttrVal:[AttributeValue] |                               |
   +--------+--------------------------+-------------------------------+

           Table 1: Response Code Numbering Scheme and Messages

   The response message for response code 2001 is "parameterized" with
   the following parameter: "[Maximum requests supported]".  When the
   request is too large, this parameter MUST be used to indicate the
   maximum number of requests supported by the server in a single
   protocol operation.

   Response code 2000 SHOULD be used when the XML Schema validation of
   requests fails.

   Each of the object-level response messages are "parameterized" with
   the following parameters: "AttributeName" and "AttributeValue".

   For example, if an SPPF client sends a request to delete a
   Destination Group with a name "TestDG", and it does not already
   exist, then the error message returned should be: "Attribute value
   invalid.  AttrName:dgName AttrVal:TestDG".
Top   ToC   RFC7878 - Page 32
   The use of these parameters MUST adhere to the rules defined in
   Section 5.3 of [RFC7877].

7.4. Minor Version Identifier

The minor version identifier element is defined as follows: o minorVer: Zero or one minor version identifier, indicating the minor version of the SPPP over SOAP 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 SPPP over SOAP that the client is using. If the element is not present, the server assumes that the client is using the latest minor version of SPPP over SOAP supported by the SPPF server for the given major version. The versions of SPPP over SOAP supported by a given SPPF server can be retrieved by the client using this same spppServerStatusRequest without passing in the minorVer element.

8. Protocol Operations

Refer to Section 7 of [RFC7877] for a description of all SPPF operations and any necessary semantics that MUST be adhered to in order to conform with SPPF.

9. SPPP over SOAP WSDL Definition

The SPPP over SOAP WSDL and data types are defined below. The WSDL design approach is commonly referred to as "Generic WSDL". It is generic in the sense that there is not a specific WSDL operation defined for each object type that is supported by the SPPF protocol. There is a single WSDL structure for each type of SPPF operation. Each such WSDL structure contains exactly one input structure and one output structure that wraps any data elements that are part of the incoming request and the outgoing response, respectively. The spppSOAPBinding in the WSDL defines the binding style as "document" and the encoding as "literal". It is this combination of "wrapped" input and output data structures, "document" binding style, and "literal" encoding that characterize the Document Literal Wrapped style of WSDL specifications. Notes: The following WSDL has been formatted (e.g., tabs, spaces) to meet IETF requirements. Deployments MUST replace "REPLACE_WITH_ACTUAL_URL" in the WSDL below with the URI of the SPPF server instance.
Top   ToC   RFC7878 - Page 33
   <?xml version="1.0" encoding="UTF-8"?>
   <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:sppfb="urn:ietf:params:xml:ns:sppf:base:1"
   xmlns:sppfs="urn:ietf:params:xml:ns:sppf:soap:1"
   targetNamespace="urn:ietf:params:xml:ns:sppf:soap:1">
    <wsdl:types>
     <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
     xmlns:sppfs="urn:ietf:params:xml:ns:sppf:soap:1"
     targetNamespace="urn:ietf:params:xml:ns:sppf:soap:1">
      <annotation>
       <documentation>
        ---- Import base schema ----
       </documentation>
      </annotation>
      <import namespace="urn:ietf:params:xml:ns:sppf:base:1"
      schemaLocation="sppfbase.xsd"/>
      <annotation>
       <documentation>
        ---- Key type(s) extended
        from base schema. ----
       </documentation>
      </annotation>
      <complexType name="ObjKeyType">
       <complexContent>
        <extension base="sppfb:ObjKeyType">
         <sequence>
          <element name="rant" type="sppfb:OrgIdType"/>
          <element name="name" type="sppfb:ObjNameType"/>
          <element name="type" type="sppfs:ObjKeyTypeEnum"/>
         </sequence>
        </extension>
       </complexContent>
      </complexType>
    <simpleType name="ObjKeyTypeEnum">
      <restriction base="token">
        <enumeration value="SedGrp"/>
        <enumeration value="DestGrp"/>
        <enumeration value="SedRec"/>
        <enumeration value="EgrRte"/>
      </restriction>
    </simpleType>

      <complexType name="SedGrpOfferKeyType">
       <complexContent>
        <extension base="sppfb:SedGrpOfferKeyType">
Top   ToC   RFC7878 - Page 34
         <sequence>
          <element name="sedGrpKey"
          type="sppfs:ObjKeyType"/>
          <element name="offeredTo"
          type="sppfb:OrgIdType"/>
         </sequence>
        </extension>
       </complexContent>
      </complexType>

      <complexType name="PubIdKeyType">
       <complexContent>
        <extension base="sppfb:PubIdKeyType">
         <sequence>
          <element name="rant" type="sppfb:OrgIdType"/>
          <choice>
           <element name="number"
           type="sppfb:NumberType"/>
           <element name="range"
           type="sppfb:NumberRangeType"/>
          </choice>
         </sequence>
        </extension>
       </complexContent>
      </complexType>

      <annotation>
       <documentation>
        ---- Generic Request and
        Response Definitions ----
       </documentation>
      </annotation>
      <element name="spppAddRequest">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
         <element name="obj" type="sppfb:BasicObjType"
         maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppDelRequest">
       <complexType>
        <sequence>
         <element name="clientTransId"
Top   ToC   RFC7878 - Page 35
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
         <element name="objKey"
         type="sppfb:ObjKeyType" maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppAcceptRequest">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
         <element name="sedGrpOfferKey"
         type="sppfs:SedGrpOfferKeyType"
         maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppRejectRequest">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
         <element name="sedGrpOfferKey"
         type="sppfs:SedGrpOfferKeyType"
         maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppGetRequest">
       <complexType>
        <sequence>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
         <element name="objKey"
         type="sppfb:ObjKeyType"
         maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppBatchRequest">
       <complexType>
        <sequence>
Top   ToC   RFC7878 - Page 36
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
          <choice minOccurs="1" maxOccurs="unbounded">
           <element name="addObj" type="sppfb:BasicObjType"/>
           <element name="delObj" type="sppfb:ObjKeyType"/>
           <element name="acceptSedGrpOffer"
           type="sppfs:SedGrpOfferKeyType"/>
           <element name="rejectSedGrpOffer"
           type="sppfs:SedGrpOfferKeyType"/>
          </choice>
        </sequence>
       </complexType>
      </element>
      <element name="spppServerStatusRequest">
       <complexType>
        <sequence>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
        </sequence>
       </complexType>
      </element>
      <element name="getSedGrpOffersRequest">
       <complexType>
        <sequence>
         <element name="minorVer"
         type="sppfb:MinorVerType" minOccurs="0"/>
        <element name="offeredBy"
        type="sppfb:OrgIdType" minOccurs="0"
        maxOccurs="unbounded"/>
        <element name="offeredTo" type="sppfb:OrgIdType"
        minOccurs="0" maxOccurs="unbounded"/>
        <element name="status"
        type="sppfb:SedGrpOfferStatusType" minOccurs="0"/>
        <element name="sedGrpOfferKey"
        type="sppfs:SedGrpOfferKeyType"
        minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppAddResponse">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="serverTransId"
         type="sppfb:TransIdType"/>
Top   ToC   RFC7878 - Page 37
         <element name="overallResult"
         type="sppfs:ResultCodeType"/>
         <element name="detailResult"
         type="sppfs:ObjResultCodeType"
         minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppDelResponse">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="serverTransId"
         type="sppfb:TransIdType"/>
         <element name="overallResult"
         type="sppfs:ResultCodeType"/>
         <element name="detailResult"
         type="sppfs:ObjKeyResultCodeType"
         minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppAcceptResponse">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="serverTransId"
         type="sppfb:TransIdType"/>
         <element name="overallResult"
         type="sppfs:ResultCodeType"/>
         <element name="detailResult"
         type="sppfs:SedGrpOfferKeyResultCodeType"
         minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppRejectResponse">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="serverTransId"
         type="sppfb:TransIdType"/>
         <element name="overallResult"
         type="sppfs:ResultCodeType"/>
         <element name="detailResult"
Top   ToC   RFC7878 - Page 38
         type="sppfs:SedGrpOfferKeyResultCodeType"
         minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
       <element name="spppBatchResponse">
       <complexType>
        <sequence>
         <element name="clientTransId"
         type="sppfb:TransIdType" minOccurs="0"/>
         <element name="serverTransId"
         type="sppfb:TransIdType"/>
         <element name="overallResult"
         type="sppfs:ResultCodeType"/>
          <choice minOccurs="0" maxOccurs="unbounded">
           <element name="addResult"
                    type="sppfs:ObjResultCodeType"/>
           <element name="delResult"
                    type="sppfs:ObjKeyResultCodeType"/>
           <element name="acceptResult"
                    type="sppfs:SedGrpOfferKeyResultCodeType"/>
           <element name="rejectResult"
                  type="sppfs:SedGrpOfferKeyResultCodeType"/>
          </choice>
        </sequence>
       </complexType>
      </element>
      <element name="spppGetResponse">
       <complexType>
        <sequence>
         <element name="overallResult"
         type="sppfs:ResultCodeType"/>
         <element name="resultObj"
         type="sppfb:BasicObjType"
         minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
       </complexType>
      </element>
      <element name="spppServerStatusResponse">
       <complexType>
        <sequence>
         <element name="overallResult"
         type="sppfs:ResultCodeType"/>
         <element name="svcMenu"
         type="sppfb:SvcMenuType"/>
        </sequence>
       </complexType>
      </element>
Top   ToC   RFC7878 - Page 39
      <annotation>
       <documentation>
        ---- Operation Result Type
        Definitions ----
       </documentation>
      </annotation>
      <complexType name="ResultCodeType">
       <sequence>
        <element name="code" type="sppfs:ResultCodeValType"/>
        <element name="msg" type="sppfs:MsgType"/>
       </sequence>
      </complexType>

      <simpleType name="ResultCodeValType">
        <restriction base="unsignedShort">
          <enumeration value="1000"/>
          <enumeration value="2000"/>
          <enumeration value="2001"/>
          <enumeration value="2002"/>
          <enumeration value="2100"/>
          <enumeration value="2101"/>
          <enumeration value="2102"/>
          <enumeration value="2103"/>
          <enumeration value="2300"/>
          <enumeration value="2301"/>
        </restriction>
      </simpleType>

      <simpleType name="MsgType">
        <restriction base="token">
         <minLength value="3"/>
         <maxLength value="255"/>
        </restriction>
       </simpleType>

      <complexType name="ObjResultCodeType">
       <complexContent>
        <extension base="sppfs:ResultCodeType">
         <sequence>
          <element name="obj" type="sppfb:BasicObjType"/>
         </sequence>
        </extension>
       </complexContent>
      </complexType>
      <complexType name="ObjKeyResultCodeType">
       <complexContent>
        <extension base="sppfs:ResultCodeType">
         <sequence>
Top   ToC   RFC7878 - Page 40
          <element name="objKey" type="sppfb:ObjKeyType"/>
         </sequence>
        </extension>
       </complexContent>
      </complexType>
         <complexType name="SedGrpOfferKeyResultCodeType">
       <complexContent>
        <extension base="sppfs:ResultCodeType">
         <sequence>
          <element name="sedGrpOfferKey"
          type="sppfs:SedGrpOfferKeyType"/>
         </sequence>
        </extension>
       </complexContent>
       </complexType>
     </xsd:schema>
    </wsdl:types>
    <wsdl:message name="spppAddRequestMsg">
     <wsdl:part name="rqst" element="sppfs:spppAddRequest"/>
    </wsdl:message>
    <wsdl:message name="spppDelRequestMsg">
     <wsdl:part name="rqst" element="sppfs:spppDelRequest"/>
    </wsdl:message>
    <wsdl:message name="spppAcceptRequestMsg">
     <wsdl:part name="rqst" element="sppfs:spppAcceptRequest"/>
    </wsdl:message>
    <wsdl:message name="spppRejectRequestMsg">
     <wsdl:part name="rqst" element="sppfs:spppRejectRequest"/>
    </wsdl:message>
    <wsdl:message name="spppBatchRequestMsg">
     <wsdl:part name="rqst" element="sppfs:spppBatchRequest"/>
    </wsdl:message>
    <wsdl:message name="spppGetRequestMsg">
     <wsdl:part name="rqst" element="sppfs:spppGetRequest"/>
    </wsdl:message>
    <wsdl:message name="spppGetSedGrpOffersRequestMsg">
     <wsdl:part name="rqst" element="sppfs:getSedGrpOffersRequest"/>
    </wsdl:message>
    <wsdl:message name="spppAddResponseMsg">
     <wsdl:part name="rspns" element="sppfs:spppAddResponse"/>
    </wsdl:message>
     <wsdl:message name="spppDelResponseMsg">
     <wsdl:part name="rspns" element="sppfs:spppDelResponse"/>
    </wsdl:message>
     <wsdl:message name="spppAcceptResponseMsg">
     <wsdl:part name="rspns" element="sppfs:spppAcceptResponse"/>
    </wsdl:message>
     <wsdl:message name="spppRejectResponseMsg">
Top   ToC   RFC7878 - Page 41
     <wsdl:part name="rspns" element="sppfs:spppRejectResponse"/>
    </wsdl:message>
     <wsdl:message name="spppBatchResponseMsg">
     <wsdl:part name="rspns" element="sppfs:spppBatchResponse"/>
    </wsdl:message>
    <wsdl:message name="spppGetResponseMsg">
     <wsdl:part name="rspns" element="sppfs:spppGetResponse"/>
    </wsdl:message>
    <wsdl:message name="spppServerStatusRequestMsg">
     <wsdl:part name="rqst" element="sppfs:spppServerStatusRequest"/>
    </wsdl:message>
    <wsdl:message name="spppServerStatusResponseMsg">
     <wsdl:part name="rspns" element="sppfs:spppServerStatusResponse"/>
    </wsdl:message>
    <wsdl:portType name="spppPortType">
     <wsdl:operation name="submitAddRqst">
      <wsdl:input message="sppfs:spppAddRequestMsg"/>
      <wsdl:output message="sppfs:spppAddResponseMsg"/>
     </wsdl:operation>
     <wsdl:operation name="submitDelRqst">
      <wsdl:input message="sppfs:spppDelRequestMsg"/>
      <wsdl:output message="sppfs:spppDelResponseMsg"/>
     </wsdl:operation>
     <wsdl:operation name="submitAcceptRqst">
      <wsdl:input message="sppfs:spppAcceptRequestMsg"/>
      <wsdl:output message="sppfs:spppAcceptResponseMsg"/>
     </wsdl:operation>
     <wsdl:operation name="submitRejectRqst">
      <wsdl:input message="sppfs:spppRejectRequestMsg"/>
      <wsdl:output message="sppfs:spppRejectResponseMsg"/>
     </wsdl:operation>
     <wsdl:operation name="submitBatchRqst">
      <wsdl:input message="sppfs:spppBatchRequestMsg"/>
      <wsdl:output message="sppfs:spppBatchResponseMsg"/>
     </wsdl:operation>
     <wsdl:operation name="submitGetRqst">
      <wsdl:input message="sppfs:spppGetRequestMsg"/>
      <wsdl:output message="sppfs:spppGetResponseMsg"/>
     </wsdl:operation>
     <wsdl:operation name="submitGetSedGrpOffersRqst">
      <wsdl:input message="sppfs:spppGetSedGrpOffersRequestMsg"/>
      <wsdl:output message="sppfs:spppGetResponseMsg"/>
     </wsdl:operation>
     <wsdl:operation name="submitServerStatusRqst">
      <wsdl:input message="sppfs:spppServerStatusRequestMsg"/>
      <wsdl:output message="sppfs:spppServerStatusResponseMsg"/>
     </wsdl:operation>
    </wsdl:portType>
Top   ToC   RFC7878 - Page 42
    <wsdl:binding name="spppSoapBinding" type="sppfs:spppPortType">
     <soap:binding style="document"
     transport="http://schemas.xmlsoap.org/soap/http"/>
     <wsdl:operation name="submitAddRqst">
      <soap:operation soapAction="submitAddRqst" style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="submitDelRqst">
      <soap:operation soapAction="submitDelRqst" style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="submitAcceptRqst">
      <soap:operation soapAction="submitAcceptRqst" style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="submitRejectRqst">
      <soap:operation soapAction="submitRejectRqst" style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="submitBatchRqst">
      <soap:operation soapAction="submitBatchRqst" style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
Top   ToC   RFC7878 - Page 43
     <wsdl:operation name="submitGetRqst">
      <soap:operation soapAction="submitGetRqst" style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="submitGetSedGrpOffersRqst">
      <soap:operation soapAction="submitGetSedGrpOffersRqst"
      style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="submitServerStatusRqst">
      <soap:operation soapAction="submitServerStatusRqst"
      style="document"/>
      <wsdl:input>
       <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
       <soap:body use="literal"/>
      </wsdl:output>
     </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="spppService">
     <wsdl:port name="spppPort" binding="sppfs:spppSoapBinding">
      <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
     </wsdl:port>
    </wsdl:service>
   </wsdl:definitions>

                              Figure 2: WSDL


(next page on part 3)

Next Section