'WSO2 change reply to send to the caller

Sorry for my English, I'm using Google Translate to help myself.

I'm writing an API call to a web service. The call is ok and the api returns the response to the caller service, but the client wants that the output of the end-point must be changed from WSO2.

I added this outSequence to the api but the return is a returncode 202 without body.

Can someone help me please?

    <outSequence>
        <sequence key="">
            <payloadFactory media-type="json">
                <format>
                
                    {   "status": "1",
                        "message": $2
                    }
                    
                </format>
                <args>
                    <arg evaluator="xml" expression="get-property('ERROR_CODE')"/>
                    <arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/>
                    <arg evaluator="xml" expression="get-property('ERROR_DETAIL')"/>
                </args>
            </payloadFactory>
            <property name="messageType" scope="axis2" type="STRING" value="application/json"/>
            <send/>
        </sequence>
    </outSequence>


Solution 1:[1]

I think you should try something like this instead

        <inSequence>

            <sequence key="">
            <payloadFactory media-type="json">
                <format>
                
                    {   "status": "1",
                        "message": $2
                    }
                    
                </format>
                <args>
                    <arg evaluator="xml" expression="get-property('ERROR_CODE')"/>
                    <arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/>
                    <arg evaluator="xml" expression="get-property('ERROR_DETAIL')"/>
                </args>
            </payloadFactory>
            <property name="messageType" scope="axis2" type="STRING" value="application/json"/>
            <send/>

        </inSequence>
        <outSequence>
            <property expression="json-eval($)" name="body-before-aggreg" scope="default" type="STRING"/>
            <aggregate>
                <completeCondition>
                    <messageCount max="-1" min="-1"/>
                </completeCondition>
                <onComplete aggregateElementType="root" expression="json-eval($)">
          <!--get back from send body here in outsequence!-->
                    <respond/>
                </onComplete>
            </aggregate>
        </outSequence>
        <faultSequence>
            <log level="custom">
                <property name="text" value="An unexpected error occured for service"/>
                <property expression="get-property('ERROR_MESSAGE')" name="message"/>
            </log>
            <respond/>
        </faultSequence>
    </resource>
</api>

please note that when you use send -> response messages will go through the Out mediator.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Andrea Cavallo