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.

Connections

Basic Authentication

InputNotes
SOAP Login Method
string
/ Required
loginMethod
The method used to authenticate the SOAP API.
Password
password
/ Required
password
Password
Username
string
/ Required
username
Username
WSDL Definition URL
string
wsdlDefinitionURL
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
Connection
connection
connection
 
WSDL Definition
string
wsdl
The WSDL definition's raw XML in string format

{
"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
Connection
connection
/ Required
connection
 
WSDL Definition
string
wsdl
The WSDL definition's raw XML in string format

{
"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
WSDL URL
string
/ Required
wsdlURL
The URL of the WSDL
http://www.dneonline.com/calculator.asmx?wsdl

{
"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
Connection
connection
connection
 
 
 
Debug Request
boolean
debug
false
Optionally log the last request and response from the SOAP Client
 
SOAP URL Override
string
endpointURL
 
Optionally override the default web service URL defined in the WSDL
 
Method
string
/ Required
requestMethod
 
Execute the SOAP web service method
 
Request Headers
text
Value List
soapHeaders
 
Blocks of XML to include in the SOAP header of the request
<Auth><username>myUser</username><password>myPass</password></Auth>
SOAP Parameters
string
Key Value List
soapParams
 
Any additional parameters to pass to the web service method
 
WSDL Definition
string
wsdl
 
The WSDL definition's raw XML in string format
 

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 input templates:

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

{
"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
]
}