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.
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.
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.
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.
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.
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.
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).
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>
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.
+--------+--------------------------+-------------------------------+ | 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".
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.
<?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">
<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"
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>
<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"/>
<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"
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>
<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>
<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">
<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>
<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>
<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