SOAP WSDL Management API¶
This API provides a way to manage (list, add, and remove) enabled SOAP WSDL services for a specific server through REST, without regenerating directory.xml and without restarting the server.
It is implemented by WsdlRestHandler and performs a runtime SOAP WSDL reload after successful updates.
The work on this feature was implemented in #11067.
Configuration¶
SOAP WSDL Management API is a sub-module of Administration_REST_API. To use it, the global REST API must be enabled. Please see Administration_REST_API. There are no additional setup requirements for this sub-module.
Add Permissions for the SOAP WSDL Management API¶
To access this API, grant ACL permissions for the endpoint family:
<node class="container" name="security">
<node class="container" name="acl">
<node class="container" name="webservice">
<!-- GET /admin/config/wsdls/{server-id} -->
<node class="container" name="000200">
<node class="resource" name="resource-instance">
<node-attribute name="reference" value="ADMIN:GET:/admin/config/wsdls/.*"/>
<node-attribute name="reftype" value="FALSE"/>
</node>
<node class="webServiceRights" name="rights">
<node-attribute name="allow" value="true"/>
</node>
<node class="strings" name="subjects">
<node-attribute name="values" value="restAdmin"/>
</node>
</node>
<!-- PUT /admin/config/wsdls/{server-id} -->
<node class="container" name="000201">
<node class="resource" name="resource-instance">
<node-attribute name="reference" value="ADMIN:PUT:/admin/config/wsdls/.*"/>
<node-attribute name="reftype" value="FALSE"/>
</node>
<node class="webServiceRights" name="rights">
<node-attribute name="allow" value="true"/>
</node>
<node class="strings" name="subjects">
<node-attribute name="values" value="restAdmin"/>
</node>
</node>
<!-- DELETE /admin/config/wsdls/{server-id} -->
<node class="container" name="000202">
<node class="resource" name="resource-instance">
<node-attribute name="reference" value="ADMIN:DELETE:/admin/config/wsdls/.*"/>
<node-attribute name="reftype" value="FALSE"/>
</node>
<node class="webServiceRights" name="rights">
<node-attribute name="allow" value="true"/>
</node>
<node class="strings" name="subjects">
<node-attribute name="values" value="restAdmin"/>
</node>
</node>
</node>
</node>
</node>
For the definition of admin-rest FWD user, see Administration_REST_API.
By setting these ACL entries, you allow:
| Method | Path | Description | Body Required |
|---|---|---|---|
GET |
/admin/config/wsdls/{server-id} |
Get currently enabled SOAP WSDL service identifiers | No |
PUT |
/admin/config/wsdls/{server-id} |
Add/merge SOAP WSDL service identifiers and reload runtime mappings | Yes |
DELETE |
/admin/config/wsdls/{server-id} |
Remove SOAP WSDL service identifiers and reload runtime mappings | Yes |
Request Object Reference¶
The request body is a JSON object used by PUT and DELETE:
| Field | Type | Required | Description |
|---|---|---|---|
wsdls |
String | Yes (PUT/DELETE) |
Comma-separated SOAP WSDL identifiers. Whitespace around entries is trimmed. Empty entries are ignored. |
Notes:
- Duplicate identifiers are de-duplicated automatically.
PUTmerges incoming values with the existing enabled set.DELETEremoves only the listed values from the existing enabled set.GETignores request body and returns current state.
API Routes¶
The SOAP WSDL Management API has the following capabilities:
- Authentication: login/logout are provided by the main module. See Administration_REST_API.
- List enabled WSDLs: retrieve current enabled identifiers for a target server.
- Enable WSDLs: add one or more identifiers to the existing enabled set.
- Disable WSDLs: remove one or more identifiers from the existing enabled set.
- Runtime reload: on successful
PUT/DELETE, runtime SOAP WSDL mappings are reloaded.
Get Enabled SOAP WSDLs¶
Retrieve enabled WSDL identifiers for a server by performing a GET request at /admin/config/wsdls/{server-id}.
Header must include a valid FwdSessionId token.
Add SOAP WSDLs (Merge + Runtime Reload)¶
Add one or more SOAP WSDL identifiers by performing a PUT request at /admin/config/wsdls/{server-id}.
Header must include a valid FwdSessionId token.
wsdlsis required.- Existing identifiers are preserved.
- New identifiers are merged and de-duplicated.
Show example - partial success (unknown wsdl ignored)
Show example - failure (missing wsdls)
Show example - failure (unknown server)
Remove SOAP WSDLs (Runtime Reload)¶
Remove one or more SOAP WSDL identifiers by performing a DELETE request at /admin/config/wsdls/{server-id}.
Header must include a valid FwdSessionId token.
wsdlsis required.- Only listed identifiers are removed.
- If all values are removed, the endpoint reports that all SOAP WSDLs are disabled.
Show example - successful delete (some remain)
Show example - successful delete (all removed)
Error Handling¶
The API uses standard HTTP status codes:
| Status Code | Description |
|---|---|
200 OK |
The request was processed successfully. For PUT/DELETE, updates are persisted and runtime reload is attempted. |
400 Bad Request |
The request is malformed, missing required fields, or contains an invalid/unsupported target format. |
401 Unauthorized |
The FwdSessionId header is missing or the session token is invalid/expired. |
404 Not Found |
The requested server-id does not exist. |
500 Internal Server Error |
The server failed while writing the response payload or encountered an internal runtime error. |