Why did my SOAP XML request profile elements not get imported for an Abstract WSDL definition?

Document created by mike_aronson Employee on Apr 22, 2015Last modified by vreddy on Mar 1, 2016
Version 3Show Document
  • View in full screen mode
When using the SOAP Client Connector to import an XML profile from a WSDL that has an Abstract Definition, no child elements, namespaces or attributes get defined below a certain level

For example, after doing the import, the following shows up in the profile:
Envelope/
Header/
Body/
Execute/
Request/
BaseMessage/

The actual soap request will require additional elements under BaseMessage, but none appeared after the import?
When a WSDL is defined as an abstract definition, it is meant to be extended.  For example purposes only, say you have a WSDL with a MetadataMessageUnderBaseMessage defined as an extension of the message.  The API would accept a valid message such as this to provide in the execute request:

 

   <xs:complexType name="MetadataMessageUnderBaseMessage">
      <xs:complexContent mixed="false">
         <xs:extension base="q8:BaseMessage" xmlns:q8="http://myapihostname.com/api">
            <xs:sequence>
               <xs:element minOccurs="0" name="TypeNames" nillable="true" type="q8:stringList">
<xs:annotation>
                     <xs:appinfo/>
                     <xs:documentation>The types of entities to describe</xs:documentation>
</xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
</xs:complexType>

 

The import wizard doesn’t know what the final message type will be so it cannot build the profile automatically.  Adding the elements, namespace and attributes in the abstract level must be done manually in this case.  IT would be very helpful in this case to get an example request message from the API provider that you can then refer to when populating manually in the XML request profile.

 

An example request profile for this may be as follows.  In this example, qualifiers and instance identifiers could also be used to define specific Types or IDs in the request:

 

Envelope/
Header/
Body/
Execute/
Request/
BaseMessage/
Entity/
Type/
ID/
Value/

Attachments

    Outcomes