3.11 Setting up an API Endpoint
What is an API Endpoint?
This feature is available in PhixFlow version 11.1.1+. For older versions, see PhixFlow Incoming API.
API endpoints can be setup to enable external systems to make calls to PhixFlow. API endpoints can be seen in the Repository for your application under
API Endpoint Setup
API endpoints must be made using the specific option on the
Create a new
on thehomepage using theoption
Set a unique name and provide a useful description
The API Endpoint
will open on the rightIn the Basic Settings section, enable Allow Anonymous Connections
Adding authorisation is covered on 3.12 API Authentication and Secret Keys.
Copy the URL and save it locally, to be used later when calling the API
Set the API Mode:
Wait for result (Synchronous) (Default): The API waits for the results or the timeout to occur
Note: If the timeout occurs the command is aborted
Poll for result (Asynchronous): The API is called and a response is returned immediately including the process ID
Subsequent API calls can be made using the process ID to fetch the status of the action
The asynchronous mode can be thought of as “fire and forget”
Set a Timeout (optional) (available in PhixFlow version 11.2+):
Specify a maximum time in milliseconds that the API will wait for before the command is aborted
When a Timeout value is set, it overrides the default timeout, which is 60 seconds where API Mode is Synchronous and 500 milliseconds where API Mode is Asynchronous
However, if a timeout parameter has been provided in the URL calling this API, that will override both this Timeout value and the default value
- your changes
Configure the Actionflow to perform the required tasks, for example return all company data , or pass in a date and return all companies onboarded after this date
See Worked Example below for an example setup
Input and Output Attributes
API Status Check (Poll for Result)
If calling a PhixFlow Asynchronous API only, a result will be immediately returned which includes a Process ID for that run
The Process ID is returned on the path:
$.processIdThis can be accessed in an Output attribute using,
_result.value
The Process ID can be used to call the following URL which will return the current state of the run:
https://<<Server Name>>/phixflow/api/1/action/<<Application Name>>/<<Actionflow Name>>/poll/<<processID>>
Calling a PhixFlow API
HTTP Method
This is set on the
To call a PhixFlow API use the HTTP Method GET or POST:
GET simply calls the API with data passed in the body of the request
POST calls the URL and sends data in the body of the request. The body data is passed into the body attribute of the API as an Input Connection point
Returned Data JSON Path
If your API has been configured to return data the path will be in the format:
$.data.<<Output Name>>
Where <<Output Name>> is the Output connection point.
Server Console Responses
The item calling the API endpoint will receive the Response from the API endpoint stating whether it has run successfully (Success) or not (Fail). Responses can be customised to return specific messages.
The response recorded in the
If you are making the call using PhixFlow the Responses can be access as follows:
Click the Actionflow entry
In the Messages section which is opened below, double-click the lines that begin Response
Click the Message Details tab to see the response
API Endpoint Results
To see the results of the API Endpoint processing in the
Click the Actionflow entry for the API Endpoint
In the Messages section which is opened below, double-click any of the Messages to see more details
If you are using a debug() statement these will appear here
Failures
An API Endpoint will fail if the logic in the Actionflow fails or if the error() function is used to force a failure.
If records are passed to the API Endpoint individually a failure will only impact the specific record being processed.
Error Codes
200
Occurs if the output of an API Endpoint is not connected
Occurs if the output is connected and a record is returned
400
Occurs if the output is connected but no record is returned
Worked Example
Here's a worked example using the Company Data (available from the Learning Centre).
In this example, we are using:
A Company Call API screen containing a fixed drop down list of industries, a string fields for the API Status and a multi-line string field for the Results - this screen was created using the Tile with Buttons template
If you are completing this chapter as part of the Actionflow course and using a training instance, the screens have already been pre-loaded into the Actionflow Advanced Application. For this example, we'll be working on the Company Call API screen.
Example 1: Passing Out Data
In this example, we'll configure an API Endpoint that passes out Company ID, Company Name and Industry data from our Companies data.
Create API Endpoint
In this example, we'll set up an API Endpoint to pass out company data.
Create a new
on thehomepage using theoption
Name:
API Company DataClick Create
The API Endpoint canvas will display, with the
open on the rightIn the Basic Settings section, enable Allow Anonymous Connections
Copy the URL and save it locally, to be used later
- your changes
Construct JSON
Create a
actionName:
GetDataAndConstructJSON
Connect the input to the Calculate action
From the
action, create a lookup to the Companies dataOn the Calculate action, create an attribute where the JSON will be constructed
Name:
JSONType:
Structured DataExpression:
toJson(getCo)
Configure the Output
Drag the
connection node onto the Calculate nodeMap the JSON attribute from the Calculate action to the body attribute
Example 2: Passing in Parameters
In this example, we'll retrieve data from our Companies API and pass in an industry parameter (e.g. "Telecoms") to filter the results to just companies in that industry.
API End Point Setup
On the API End Point, create a
action to receive the parameterName:
GetIndustryInput Expression:
in.bodyPath:
$Create an Output Attribute on the JSON action
Name:
IndustryReceivedType:
StringExpression:
_result.Industry
Insert the
action between theandnodesOn the Mappings between the
andnodes, map across body, contentType, headers and urlOn the lookup connector, getCo, map the IndustryReceived attribute as an Incoming Mapping
On the
action, add a filter:Name:
ByIndustryFilter Details:
Call API Actionflow Setup
On the screen, Company Call API, add an Actionflow to the Call API button
If you have completed 2.13 HTTP Action Configuration and 2.14 JSON Action Configuration you will recognise the similar Actionflow setup
On the input connection point, map in the Industry drop down field
Create a
action:Name:
Call API
Connect the input to the HTTP action and map across the attribute, Industry
HTTP Method:
POSTURL: the URL from the API End Point you copied earlier
Body:
[{ "Industry": "${in.Industry}" }]Log Traffic:
Create a
actionName:
ReturnedCompaniesInput Expression:
in.bodyPath:
$.getCoCreate 2 Output Attributes on the JSON action
Name:
CoNameType:
StringExpression:
_result.1.CompanyName
Name:
CompanyIDType:
IntegerExpression:
_result.1.CompanyID
Hover over the HTTP action and choose out, then connect it to the JSON action
On the Mappings between the HTTP action and JSON action, map the attributes:
body
status
Create an
connection point back to the screenConnect the JSON action to the output, and configure the following mappings:
Then map the following attributes back to the screen on the output connection point:
Testing
On the screen, Company Call API, click the Call API button to see the results of the Actionflow