Skip to content

Generate a REST API from a SOAP Backend

You can use WSO2 API Cloud to easily expose legacy SOAP backends as REST APIs. WSO2 API Cloud supports generating REST APIs from WSDL 1.1 based SOAP backends.

Follow the instructions below to generate a REST API using an existing SOAP backend.


    Before you begin...
    Make sure that you have a valid WSDL URL from the SOAP backend. It should belong to the WSDL 1.1 version.

  1. Sign in to WSO2 API Cloud. This opens the API Publisher portal.

  2. Click CREATE API and then click I Have a SOAP Endpoint.


      The following are two options to create APIs for SOAP backends
    • Pass Through – Creates a pass-through proxy for SOAP requests coming to the API Gateway.
    • Generate REST APIs – Generates REST API definitions from the given WSDL URL.

  3. Select Generate REST APIs and provide the WSDL URL for the SOAP backend.

  4. Click Next and provide the information in the table below.

    Field Sample value
    Name PhoneVerification
    Context /phoneverify
    Version 1.0
    Business Plans Unlimited
  5. Click CREATE. This displays the created API in the Publisher portal.

  6. If you want to modify the API definition of the generated REST API, click API Definition, then click Edit, and then do the necessary changes.

  7. Click on a resource to view the In and Out sequences of the API.

    The following sample shows the generated API In-sequence for a POST method.

       <header description="SOAPAction" name="SOAPAction" scope="transport" value=""/>
       <property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
       <property expression="json-eval($.CheckPhoneNumber.LicenseKey)" name="req.var.CheckPhoneNumber.LicenseKey"/>
       <property expression="json-eval($.CheckPhoneNumber.PhoneNumber)" name="req.var.CheckPhoneNumber.PhoneNumber"/>
       <payloadFactory description="transform" media-type="xml">
       <soapenv:Envelope xmlns:soapenv="" xmlns:web="">
           <web:CheckPhoneNumber xmlns:web="">
           <arg evaluator="xml" expression="get-property('req.var.CheckPhoneNumber.LicenseKey')"/>
       <arg evaluator="xml" expression="get-property('req.var.CheckPhoneNumber.PhoneNumber')"/>
       <property description="messageProperty" name="messageType" scope="axis2" type="STRING" value="application/soap+xml"/>

    The incoming JSON message parameters are stored using properties. A payload factory mediator is used to generate the SOAP payload required for the backend.