Open Source API Gateway
1. Proxies and Flow

soapProxy

Version

The soapProxy auto-configures itself from a WSDL: it reads the soap:address to derive the backend host, port, and path, rewrites the WSDL endpoint to point to the gateway, and serves the rewritten WSDL at ?wsdl. A built-in service explorer is available at the same address. When a path is configured, request paths are automatically rewritten between the gateway path and the backend path. See tutorials/soap/20-SOAPProxy.yaml.

Explanation:

If the WSDL is unavailable at startup, the proxy becomes inactive. Reinitialization can be triggered via the admin console or automatically by the router, which periodically retries.

Example Configuration

# Minimal: auto-configure from WSDL
soapProxy:
port: 2000
wsdl: https://www.predic8.de/city-service?wsdl

---

# Full: path rewriting, WSDL validation, custom host/port in rewritten WSDL,
# explicit service selection, and a dedicated HTTP client for WSDL retrieval
soapProxy:
port: 2000
host: api.example.com
wsdl: https://www.predic8.de/city-service?wsdl
serviceName: CityService
portName: CityServiceSoap
path:
uri: /city-service
wsdlHttpClientConfig:
connection:
timeout: 5000
flow:
- wsdlRewriter:
host: api.example.com
protocol: https
port: 443
- validator: {}
# Minimal: auto-configure from WSDL
 soapProxy:
   port: 2000
   wsdl: https://www.predic8.de/city-service?wsdl

 ---

 # Full: path rewriting, WSDL validation, custom host/port in rewritten WSDL,
 # explicit service selection, and a dedicated HTTP client for WSDL retrieval
 soapProxy:
   port: 2000
   host: api.example.com
   wsdl: https://www.predic8.de/city-service?wsdl
   serviceName: CityService
   portName: CityServiceSoap
   path:
     uri: /city-service
   wsdlHttpClientConfig:
     connection:
       timeout: 5000
   flow:
     - wsdlRewriter:
         host: api.example.com
         protocol: https
         port: 443
     - validator: {}

Syntax

soapProxy:
wsdl: <string> # required
'$ref': <string>
flow:
- <flow>
host: <string>
httpClientConfig: {}
ip: <string>
name: <string>
path: {}
port: <int>
portName: <string>
serviceName: <string>
ssl: {}
target: {}
soapProxy:
  wsdl: <string> # required
  '$ref': <string>
  flow:
    - <flow>
  host: <string>
  httpClientConfig: {}
  ip: <string>
  name: <string>
  path: {}
  port: <int>
  portName: <string>
  serviceName: <string>
  ssl: {}
  target: {}

Attributes

NameRequiredDefaultDescriptionExamples
$reffalse-Reference a component defined under components.-
hostfalsenot setRestricts to requests whose Host header matches one of the given hostnames. Separate multiple hostnames with spaces. The asterisk * matches any number of characters, including zero, for basic globbing.predic8.de *.predic8.de
ipfalsenot setIf present, binds the port only on the specified IP. Useful for hosts with multiple IP addresses.127.0.0.1
namefalseBy default, a name will be automatically generated from the target host, port, etc.The name as shown in the Admin Console.-
portfalse80The port Membrane listens on for incoming connections.8080
portNamefalse-Name of the WSDL port. When omitted, the explorer shows the first port defined in the WSDL.-
serviceNamefalse-Name of the WSDL service to use, if the WSDL defines more than one. Optional; if omitted, the first service defined in the WSDL is used.-
wsdltrue-URL or file path of the WSDL document. Both HTTP/HTTPS URLs and file: paths are supported.https://www.predic8.de/city-service?wsdl

Child Structure

ElementCardinalityDescription
flow0..*
httpClientConfig0..1Settings the HTTP client uses for calls to a backend: socket timeouts, an upstream proxy, credentials, TLS and retry behavior. Every part is optional and falls back to its defaults when omitted. Configure it once globally, or on a single plugin that calls a backend.
path0..1Restricts to requests whose path matches, either by prefix (starts-with) or, when enabled, by regular expression. In a soapProxy, setting a path also rewrites the paths of SOAP requests and the service addresses in the WSDL accordingly.
ssl0..1Configures a TLS context: the identity (key and certificate) presented to the peer, the certificates trusted from it, and handshake parameters such as protocol, ciphers, and client-certificate policy. Attach it to a serviceProxy/api to terminate inbound TLS, or to a target to make an outbound connection over TLS; most attributes and child elements apply to both directions, but a few - such as clientAuth and useAsDefault - only take effect on an inbound context. See tutorials/ssl-tls/10-TLS-Termination.yaml for inbound termination and tutorials/ssl-tls/20-Central-SSL-Config.yaml for sharing one ssl across several APIs via $ref.
target0..1The backend server that requests are forwarded to after passing through the flow.

Can be used in

No parent elements.