Skip to main content

SOAP Component

Interact with a SOAP-based API

Component key: soap

Description#

Simple Object Access Protocol (SOAP) is a messaging protocol specification for exchanging structured information with web services.

This component allows you to interact with a SOAP API. You can fetch WSDL definitions, describe the methods that a SOAP API supports, and make requests of the API's methods.

SOAP Connections#

Basic Authentication#

InputNotes
Input
SOAP Login Method
string
/ Required
Notes
The method used to authenticate the SOAP API.
Input
Password
password
/ Required
Notes
Password
Input
Username
string
/ Required
Notes
Username
Input
WSDL Definition URL
string
Notes
An optional URL to retrieve a WSDL definition from

Actions#

Describe Client#

Description of services, ports and methods as a JavaScript object | key: describeClient

InputNotes
Input
Connection
connection
Notes
 
Input
WSDL Definition
string
Notes
The WSDL definition's raw XML in string format

Output Example Payload#

{  "data": {    "Calculator": {      "CalculatorSoap": {        "Add": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "AddResult": "s:int"          }        },        "Subtract": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "SubtractResult": "s:int"          }        },        "Multiply": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "MultiplyResult": "s:int"          }        },        "Divide": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "DivideResult": "s:int"          }        }      },      "CalculatorSoap12": {        "Add": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "AddResult": "s:int"          }        },        "Subtract": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "SubtractResult": "s:int"          }        },        "Multiply": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "MultiplyResult": "s:int"          }        },        "Divide": {          "input": {            "intA": "s:int",            "intB": "s:int"          },          "output": {            "DivideResult": "s:int"          }        }      }    }  }}

Get Authentication#

Retrieve authentication data from a SOAP endpoint by calling the specified authentication method | key: getWSDLAuth

InputNotes
Input
Connection
connection
/ Required
Notes
 
Input
WSDL Definition
string
Notes
The WSDL definition's raw XML in string format

Output Example Payload#

{  "data": [    {      "ExampleLoginToken": "abc-123",      "ExampleUsername": "example-user"    },    "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns=\"urn:acme.com\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><loginResponse><result><ExampleLoginToken>abc-123</ExampleLoginToken><ExampleUsername>example-user</ExampleUsername></result></loginResponse></soapenv:Body></soapenv:Envelope>",    null,    "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:tns=\"urn:partner.soap.sforce.com\"><soap:Body><login xmlns=\"urn:login.acme.com\"><username>example-user</username><password>123</password></login></soap:Body></soap:Envelope>",    null  ]}

Get WSDL Definition#

Retrieves a WSDL Definition from a given endpoint and returns the raw XML | key: getWSDLByURL

InputNotesExample
Input
WSDL URL
string
/ Required
Notes
The URL of the WSDL
Example
http://www.dneonline.com/calculator.asmx?wsdl

Output Example Payload#

{  "data": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:tm=\"http://microsoft.com/wsdl/mime/textMatching/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\" xmlns:tns=\"http://tempuri.org/\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" targetNamespace=\"http://tempuri.org/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://tempuri.org/\">\n      <s:element name=\"Add\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"AddResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"AddResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Subtract\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"SubtractResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SubtractResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Multiply\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MultiplyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"MultiplyResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Divide\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DivideResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"DivideResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"AddSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Add\" />\n  </wsdl:message>\n  <wsdl:message name=\"AddSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:AddResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SubtractSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Subtract\" />\n  </wsdl:message>\n  <wsdl:message name=\"SubtractSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SubtractResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MultiplySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Multiply\" />\n  </wsdl:message>\n  <wsdl:message name=\"MultiplySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MultiplyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DivideSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Divide\" />\n  </wsdl:message>\n  <wsdl:message name=\"DivideSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DivideResponse\" />\n  </wsdl:message>\n  <wsdl:portType name=\"CalculatorSoap\">\n    <wsdl:operation name=\"Add\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">Adds two integers. This is a test WebService. ©DNE Online</wsdl:documentation>\n      <wsdl:input message=\"tns:AddSoapIn\" />\n      <wsdl:output message=\"tns:AddSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Subtract\">\n      <wsdl:input message=\"tns:SubtractSoapIn\" />\n      <wsdl:output message=\"tns:SubtractSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Multiply\">\n      <wsdl:input message=\"tns:MultiplySoapIn\" />\n      <wsdl:output message=\"tns:MultiplySoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Divide\">\n      <wsdl:input message=\"tns:DivideSoapIn\" />\n      <wsdl:output message=\"tns:DivideSoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"CalculatorSoap\" type=\"tns:CalculatorSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" />\n    <wsdl:operation name=\"Add\">\n      <soap:operation soapAction=\"http://tempuri.org/Add\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Subtract\">\n      <soap:operation soapAction=\"http://tempuri.org/Subtract\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Multiply\">\n      <soap:operation soapAction=\"http://tempuri.org/Multiply\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Divide\">\n      <soap:operation soapAction=\"http://tempuri.org/Divide\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CalculatorSoap12\" type=\"tns:CalculatorSoap\">\n    <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\" />\n    <wsdl:operation name=\"Add\">\n      <soap12:operation soapAction=\"http://tempuri.org/Add\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Subtract\">\n      <soap12:operation soapAction=\"http://tempuri.org/Subtract\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Multiply\">\n      <soap12:operation soapAction=\"http://tempuri.org/Multiply\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Divide\">\n      <soap12:operation soapAction=\"http://tempuri.org/Divide\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"Calculator\">\n    <wsdl:port name=\"CalculatorSoap\" binding=\"tns:CalculatorSoap\">\n      <soap:address location=\"http://www.dneonline.com/calculator.asmx\" />\n    </wsdl:port>\n    <wsdl:port name=\"CalculatorSoap12\" binding=\"tns:CalculatorSoap12\">\n      <soap12:address location=\"http://www.dneonline.com/calculator.asmx\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>"}

Request#

Makes a request to the SOAP webservice using the specified method | key: sendRequest

InputDefaultNotesExample
Input
Connection
connection
Default
 
Notes
 
Example
 
Input
Debug Request
boolean
Default
false
Notes
Optionally log the last request and response from the SOAP Client
Example
 
Input
SOAP URL Override
string
Default
 
Notes
Optionally override the default web service URL defined in the WSDL
Example
 
Input
Method
string
/ Required
Default
 
Notes
Execute the SOAP web service method
Example
 
Input
Request Headers
text
Value List
Default
 
Notes
Blocks of XML to include in the SOAP header of the request
Example
<Auth><username>myUser</username><password>myPass</password></Auth>
Input
SOAP Parameters
string
Key Value List
Default
 
Notes
Any additional parameters to pass to the web service method
Example
 
Input
WSDL Definition
string
Default
 
Notes
The WSDL definition's raw XML in string format
Example
 

The Request action can take optional SOAP headers (which are different from HTTP headers). You can easily generate SOAP headers that reference config variables and other steps' results using expression inputs:

SOAP URL Override in Prismatic integration designer

Simple SOAP Request#

This example uses this generic calculator SOAP API, which presents methods to add, subtract, multiply, and divide two integers. The API's WSDL specifies a Multiply operation, which multiplies two integers, intA and intB, and returns a MultiplyResponse.

To use that method, first add a Get WSDL Definition step to fetch the API's WSDL definition. Then, reference that definition as the Request step's WSDL Definition input. Under Method, specify that you want to execute the Multiply operation. Finally, add two SOAP Parameters for intA and intB. Here, we multiply the integers 7 and 8:

SOAP - Request in Prismatic integration designer

The step's result will match the format that the SOAP API's WSDL specifies. In this case, it'll return a MultiplyResponse. The result will also include the XML that made up the request and response, in case you need to do additional work with the XML.

SOAP - Request Step Outputs in Prismatic integration designer

Output Example Payload#

{  "data": [    {      "MultiplyResult": 56    },    "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body><MultiplyResponse xmlns=\"http://tempuri.org/\"><MultiplyResult>56</MultiplyResult></MultiplyResponse></soap:Body></soap:Envelope>",    null,    "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"  xmlns:tm=\"http://microsoft.com/wsdl/mime/textMatching/\" xmlns:tns=\"http://tempuri.org/\"><soap:Body><Multiply xmlns=\"http://tempuri.org/\"><intA>7</intA><intB>8</intB></Multiply></soap:Body></soap:Envelope>",    null  ]}