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
Input | Notes |
---|---|
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
Input | Notes |
---|---|
Connection connection connection | |
WSDL Definition string wsdl | The WSDL definition's raw XML in string format |
Example Payload for Describe Client
{
"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
Input | Notes |
---|---|
Connection connection / Required connection | |
WSDL Definition string wsdl | The WSDL definition's raw XML in string format |
Example Payload for Get Authentication
{
"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
Input | Notes | Example |
---|---|---|
WSDL URL string / Required wsdlURL | The URL of the WSDL | http://www.dneonline.com/calculator.asmx?wsdl |
Example Payload for Get WSDL Definition
{
"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
Input | Default | Notes | Example |
---|---|---|---|
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:
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:
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.
Example Payload for Request
{
"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
]
}