Project

General

Profile

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.
  • PUT merges incoming values with the existing enabled set.
  • DELETE removes only the listed values from the existing enabled set.
  • GET ignores 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.

  • wsdls is required.
  • Existing identifiers are preserved.
  • New identifiers are merged and de-duplicated.

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.

  • wsdls is required.
  • Only listed identifiers are removed.
  • If all values are removed, the endpoint reports that all SOAP WSDLs are disabled.

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.