SOAP API pass through in WSO2 API manager v3.0.0 - wso2

I am using the latest version of WSO2 API manager and am trying to consume a SOAP API backend as pass-through. I am not able to invoke the API because in the latest version there is no option to paste the soap request and soap action. The documentation states that it is there but when I stood it up as a docker container, the ability to pass in the soap request is not there. Can anyone confirm if it is a bug and whether I should downgrade to the previous version?
https://apim.docs.wso2.com/en/latest/Learn/Tutorials/expose-a-soap-service-as-a-rest-api/
WSO2 documentation screenshot
WSO2 Dev portal SOAP API pass through invocation screenshot

You have to add the SOAP Action and SOAP Request parameters to the Swagger definition.
Login to API Publisher and open the api.
Goto API Definition tab from the left menu.
Click on Edit button.
In the swagger editor, add the following definition under the POST method parameters and save the api.
- schema:
type: string
description: SOAP request.
name: SOAP Request
required: true
in: body
- description: SOAPAction header for soap 1.1
name: SOAPAction
type: string
required: false
in: header
Created an issue for this, since this needs to be fixed in the new version.
https://github.com/wso2/product-apim/issues/6813

Related

I need to add/update only claim under serviceprovider in wso2 (version 5.7) using soap request

I need to add/update claims under service provider that is already created in wso2. Currently, I am using version 5.7 of wso2. So, I need a soap request to add this using soap web service.
You can use IdentityApplicationManagementService SOAP Admin service to update Service Provider. Sample SOAP request information can be found here.
You can find the soap requests here
https://docs.wso2.com/display/IS570/Managing+Claims+with+APIs

WSO2 APIM : Get API Rating and Business Information through Store REST API

I have a custom page where I obtain Published API list using WSO2 Store Restful API
https://docs.wso2.com/display/AM220/apidocs/store/#!/operations#APICollection#apisGet
The problem is the returned result does not includes API Rating and Business Information whereas the Jaggery API that has been used by the default API Manager UI does include it. Is there any way to configure it so the REST API returns that data?
If I use the jaggery API instead, it is cookie based while I am using OAuth2 OIDC Service Provider of the IS. I cant obtain API that has visibility to only its own domain by passing access token to the Authorization header.
APIM Version: 2.2
Please Advice. Thanks!
There is no such a way which will change the output response of defined APIs.
If you want to do that, get source code of wso2 from github & edit the APIs & use the edited source to deploy your application. (But this will add lots of maintenance issue)
The quickest way is to call the get details of api.
It will return the business information object as well as below:
"businessInformation": {
"technicalOwner": "John Doe",
"technicalOwnerEmail": "architecture#pizzashack.com",
"businessOwner": "Jane Roe",
"businessOwnerEmail": "marketing#pizzashack.com"
},
Here you will get the heavy response as it returns the complete swagger definition as well.

WSO2 revoke api

I was curious how can see the revoke api end point exists.The url configured is
https://localhost:9443/revoke
But I could see the api listed under the started application or under api.
I even tried retrieving the wadl from the url but it did not return anything.
Do we need to explicitly publish it or it gets done automatically when we start the wso2server ? Or Do we need to install something other than the wso2 api manager to get this api?
When I browse the endpoint https://localhost:9443/revoke/?_wadl , I get error
405 - method not allowed
The port should be 8243.
And it's not a SOAP service.
Ref: https://docs.wso2.com/display/AM260/Token+API#TokenAPI-Revokingaccesstokens

Authorize.net CIM SOAP API getCustomerPaymentProfile error

I have implemented Authorize.net CIM API for my custom solution. Everything was working fine before.
Now when I trying to load any customer information with customer profile id and customer paymen profile id using SOP API of Authorize.net CIM it is getting failed.
I am getting following error "SOAP-ERROR: Encoding: object has no 'unmaskExpirationDate' property" when trying using "getCustomerPaymentProfile" function of Authorize.net CIM API via merchant sandbox mode.
While with XML API for Authorize.net CIM of "getCustomerPaymentProfile" function returning ferfect but this error is only with SOAP API.
Below is the SOAP urls that I am using for sandbox account,
Gateway WSDL: "https://api.authorize.net/soap/v1/Service.asmx?WSDL"
Test Gateway Url: "https://apitest.authorize.net/soap/v1/Service.asmx"
Have anybody faced such issue recently?
Ok I got an answer just now.
When checking WSDL url I found that they have recently changed the WSDL xml format for "getCustomerPaymentProfile" function by adding Additional
"" which always expact the "unmaskExpirationDate" parameter as boolean as part of request parameters.
After updating my SOAP request parameters solved the error.

API Manager passing JWT to backend service

A backend service needs to know the user for the service call. Reading through the API 1.6.0 documentation I have configured it to generate JWT and removed and republished my services as stated. Running tests, I am not seeing the JWT being passed to the backed service in the response headers in Fiddler. I am not using the ESB or Identity services from WSO2.
What am I missing?
JWT information should be passed in the header under the parameter X-JWT-Assertion. The Content is been encoded. Use TCPMon to intercept the request and see if the API Manager is actually passing the JWT. This would be a good starting point to debug.