Loading…
Loading…
A deep reference on supported SOAP versions (1.1, 1.2), WSDL styles (document/literal, rpc/literal), XSD types, faults, namespaces, and nullability.
This document provides a definitive reference for the SOAP and XML Schema Definition (XSD) features supported by the conversion engine. It details which SOAP versions, WSDL message styles, XSD types, and other contract features are automatically handled when converting a SOAP-based service to a RESTful interface.
The engine performs a full-field mapping, meaning the capabilities described here are applied automatically to the entire request and response structure as defined in the source WSDL. This ensures a comprehensive and predictable conversion without manual field-by-field mapping. This reference is intended for API publishers who need to understand whether a specific WSDL is compatible with the platform and how its features will be translated.
The platform is designed to handle the most common SOAP and WSDL constructs found in enterprise environments.
The runtime supports both major SOAP versions. It automatically detects the version from the inbound request's Content-Type header and XML namespace, so no manual configuration is required to select a version. The WSDL import process also infers the version from the service binding.
text/xml content type, the mandatory SOAPAction header, and the standard fault structure using <faultcode>, <faultstring>, and <detail>.application/soap+xml content type and the two-level fault structure with <Code>/<Value> and an optional <Subcode>.NOTE
The inbound SOAP listener for the Consume direction (where the platform presents a SOAP facade to an existing REST API) also accepts both SOAP 1.1 and 1.2 requests.
The conversion engine supports the following WSDL message styles:
The rpc/encoded style (also known as SOAP Section 5 encoding) is not supported by the standard product. See What's Out of Scope for more details.
The engine provides broad support for XSD 1.0 constructs, allowing for the accurate conversion of complex data contracts. The following table details the supported features.
| Category | What's Handled |
|---|---|
| Scalar types | string, int, long, decimal, boolean, date, dateTime, duration, base64Binary, hexBinary, and other built-in simple types. |
| Complex types | complexType; complexContent with extension and restriction; simpleContent for both scalar values and values with attributes (#text + @attr). |
| Composition | sequence; choice (including multi-field choice groups); all. |
| Reuse / modularity | Expansion of group and attributeGroup references; recursive processing of import, include, and redefine with cycle protection; resolution of external XSDs. |
| Cardinality | minOccurs and maxOccurs for defining arrays and repeated elements, including wrapped elements with specific item names. |
| Nullability | nillable="true" with round-trip support for xsi:nil. |
| Attributes & mixed content | XML attributes (@attr) and mixed content models containing both text and elements (#text). |
| Substitution groups | Resolution of substitutionGroup variants. |
| Polymorphism | xsi:type for discriminating between variants, with configurable handling. |
| Constraints / facets | enumeration, pattern (with UTF-8 and Hebrew-aware regex), numeric bounds (minInclusive, etc.), and string-length facets. |
| Advanced simple types | list and union, including per-item/per-member constraint metadata. |
| Wildcards | Passthrough support for any and anyType. |
| Identity constraints | Metadata extraction for xsd:key, xsd:keyref, and xsd:unique. |
| Multipart / external schema | Handling of multipart message parts and resolution of external schemas via import, include, and redefine. |
Each time a WSDL is imported, the parsed contract is stored as an immutable snapshot with a checksum and parser version. This ensures that re-importing the same WSDL yields a deterministic result and that any changes to the backend WSDL are surfaced as a detectable diff.
SOAP faults are treated as a first-class part of the contract and are not ignored. The engine intercepts <soap:Fault> messages from the backend and normalizes them into a deterministic REST error response. This applies to both SOAP 1.1 (faultcode/faultstring/detail) and SOAP 1.2 (Code/Value/Subcode) faults.
The structure of the resulting JSON error payload is configurable via the error-shape conversion option, with the following choices:
s2r-default: The platform's default error object.rfc7807: A standard RFC 7807 Problem Details object.flat: A simple, flat JSON object.upstream-passthrough: The backend's error payload, passed through without modification.The HTTP status code returned to the client is controlled by the upstream-failure-status option. Faults declared in the WSDL using wsdl:fault are reflected in the generated OpenAPI v3 specification, allowing API consumers to anticipate error structures.
The platform correctly manages XML namespaces to ensure semantic integrity:
The engine preserves the distinction between absent, null, and empty values, which is critical for maintaining data integrity.
xsi:nil="true" in a SOAP message is converted to a JSON null value, and vice-versa.null value for a non-nillable element will trigger a validation error.<myField/>) is handled according to the configured policy for its type. See Null / Empty Handling.nillable="true" is correctly handled; its presence is not enforced if it is explicitly null.The standard v1.0 product focuses on common enterprise use cases. The following are considered out of scope for standard onboarding and are typically handled as bespoke engagements:
document/literal and rpc/literal styles only.UsernameToken (plaintext or digest), wsu:Timestamp, X.509 BinarySecurityToken, and XML Signatures.