Hi Community,
I am working on a POC where a third-party system interacts with my Appian Web API. The setup involves the following:
1. The third-party system is configured to call my API endpoint: https ://appianCloud.com/suite/webapi/endpoint1 for a GET operation to retrieve data using query parameters.
2. In subsequent calls, the system appends /action or /response to the same endpoint URL and performs a POST operation to modify the data for the same record.
Given this requirement, I would like to know:
• Is it possible to handle this type of scenario within a single Appian Web API object?
• If not, are there any known workarounds or best practices to manage such dynamic operation variations?
Looking forward to your insights. Thank you in advance!
Discussion posts and replies are publicly visible
Why you dont want to create separate APIs for post and get call?
Hi Sarathkumar R In the 3rd party system we can only configure one API URL, all the requests will be made to the same API only.
It is possible to have same endpoints as long as the method is different. Create separate APIs for each methods
One API for GET with endpoint1
Another API for all the POST API, you can handle your logics using relative paths (endpoint1/action and endpoint1/response)
In the API, you can use http!request.pathSegments to differentiate the logics for each
Why not just create separate API objects to handle the /action and /response endpoints?
Create two separate Web API objects (i.e. Endpoint_GET and Endpoint_POST) with the same url endpoint but different methods (GET and POST).
Hi Stefan Helzle Mathieu Drouin Soma Thanks for your replies!
Actually, in my current case I will not be able to create separate API for each endpoint. The reason for same is below:
External system has a predefined UI and for each click we need our APi to respond.
Now let say our API endpoint is /endpoint1. The web API URL will be: www.appiancloud.com/suits/webapi/endpoint1.
First Request:request URL: www.appiancloud.com/suits/webapi/endpoint1/alldataIn first request it will fetch list of records based on some query parameters (if provided)
response:
[{ "id": "ID1", "Name1": "Customer 1", "Customernum": "3", "Street1": "Line 111", "Street2": "740",},{ "id": "ID2", "Name1": "Customer 2", "Customernum": "2", "Street1": "Line 111", "Street2": "740",},{ "id": "ID3", "Name1": "Customer 3", "Customernum": "3", "Street1": "Line 111", "Street2": "740",}]
This list of data will be showed in 3rd part systems UI
Now if an end user clicks on any specific record in the 3rd party system. That particular data will be showed to the user and in that case request/response will look like below
------
Second Request:Request URL: www.appiancloud.com/suits/webapi/endpoint1/data/{"id"}
Response:{ "id": "ID2", "Name1": "Customer 1", "Customernum": "2", "Street1": "Line 111", "Street2": "740",}
Up till here it is following only GET method. Now according to the requirement there should options to perform certain actions on the specific record.In this case request will look like below
Third Case:Request URL: www.appiancloud.com/suits/webapi/endpoint1/data/{"id"}/actionRequest Body: {"name1": "updatedName"}
response: { "id": "ID2", "Name1": "updatedName", "Customernum": "2", "Street1": "Line 111", "Street2": "740",}
PS: Above is just a high level of the requirement I am working on. Please let me know if you have any suggestion on this!Thank you!
Hi Stefan Helzle Mathieu Drouin Soma
Thanks for your replies!
Now let say our API endpoint is /endpoint1. The URL will be: www.appiancloud.com/suits/webapi/endpoint1.
PS: Above is a high-level requirement, there are multiple scenarios like this,Thank You!
Use pathSegments:
GET
POST
You can create multiple API objects on the same endpoint, as long as the method is different.
Then, in that objects, you route the call to separate expressions, depending on the path. In these expression, you do whatever is required.