Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Insert excerpt
_Banners
_Banners
nameactionflow
nopaneltrue

What is an API Endpoint?


Excerpt
nameOverview

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 

Insert excerpt
_actionflow_api_endpoint
_actionflow_api_endpoint
nametext
nopaneltrue
s and on the 
Insert excerpt
_actionflow
_actionflow
nopaneltrue
 homepage with the 
Insert excerpt
_actionflow_api_endpoint
_actionflow_api_endpoint
nopaneltrue
 icon.


The structure of the URL is as follows:

https://<<Server Name>>/phixflow/api/1/action/<<Application Name>>/<<Actionflow Name>>/trigger

  • Set the API Mode:
    1. Wait for result (Synchronous) (Default): The API waits for the results or the timeout to occur
      1. Note: If the timeout occurs the command is aborted
    2. Poll for result (Asynchronous): The API is called and a response is returned immediately including the process ID
      1. Subsequent API calls can be made using the process ID to fetch the status of the action
      2. The asynchronous mode can be thought of as “fire and forget”
  • Set a Timeout (optional):
    1. Specify a maximum time in milliseconds that the API will wait for before the command is aborted

    2. 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

      1. 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
    1. See Worked Example below for an example setup
  • Input Parameters

    s have fixed parameters set on the input node (body, headers, contentType and url), and the output node (body, headers, contentType and statusCode) which can be mapped to.

    Image Removed

    On the Input Connection Point, additional Input Parameters can be created to facilitate query string parameters being passed into the API via the URL.

    Click on the nodeThe will open on the right and in the Input Parameters section, click the  icon to create a new attribute
  • Enter a Name and Default Value (optional)
  • The Name set on the must match the parameter name in the URL, e.g. if an Input Parameter, "field" is created, and the request URL is https://server/phixflow/api/1/action/App/Api/trigger?field=abc then the value "abc" will be used as a parameter. When calling APIs using query string parameters in the URL, care should be taken to ensure that the values are appropriately URL encoded to prevent unexpected behaviour. See HTTP Action Configuration.

    If a parameter is missing then it will be marked as unavailable, unless a Default Value has been configured. 

    “timeout” is a reserved value that controls the timeout of the request and cannot be used as a parameter.
    1. Configure the API to perform the required tasks, for example return all company data , or pass in a date and return all companies onboarded after this date
      1. See Worked Example below for an example setup

    Input Parameters

    Excerpt
    nameFullPage

    Creating an API Endpoint

    Setup

    API endpoints must be made using the specific option on the 

    Insert excerpt
    _actionflow
    _actionflow
    nopaneltrue
     homepage to ensure a URL is generated and a set of predefined input parameters are configured on the incoming connection point.

    Iframe
    allowfullscreentrue
    srchttps://www.youtube.com/embed/fuh5kkeufWI?si=45Jk2d5Zr298SVxz?&rel=0&ytp-pause-overlay
    width680
    alignmiddle
    height400
     

    1. Create a new
      Insert excerpt
      _actionflow_api_endpoint
      _actionflow_api_endpoint
      nametext
      nopaneltrue
       on the 
      Insert excerpt
      _actionflow
      _actionflow
      nopaneltrue
       homepage using the  option
      1.   
    2. Set a unique name and provide a useful description
      1. If you have made your API Endpoint via the 
        Insert excerpt
        _repository
        _repository
        nopaneltrue
        , right-click on the API Endpoint name and choose
        Insert excerpt
        _actionflow_icon
        _actionflow_icon
        nopaneltrue
        Display
    3. The API Endpoint 
      Insert excerpt
      _property_settings
      _property_settings
      nopaneltrue
       will open on the right - for the full Properties list, see API Endpoint PropertiesIn the Basic Settings section, enable Allow Anonymous Connections
      Excerpt
      nameAllowAnonymousConnections

      This allows anyone with the URL for the API to call it. The audit trail records the system as running performing the API call.

       Adding authorisation is covered on API Authentication and Secret Keys.

      Copy the URL and save it locally, to be used later when calling the API
    4. Example URL: https://app.phixflow.com/phixflow/api/1/action/MyApp/My%20API/trigger

    Expand
    titleUrl Structure
    parameterdescription
    <<Server Name>>URL of the server e.g. app.phixflow.com
    phixflowthe name of the instance, typically this is phixflow
    <<Application Name>>The name of the application where the Actionflow resides.
    <<Actionflow Name>>The name of the actionflow set in Step 1. Note that if your actionflow has a space in the name this must be replaced with %20. For example "My API" becomes, "My%20API". 
    Insert excerpt
    _save_save
    nopaneltrue
    Insert excerpt
    _actionflow_api_endpoint_actionflow_api_endpoint
    nametext
    nopaneltrue
    Insert excerpt
    _input_input
    nopaneltrue
    Insert excerpt
    _property_settings_property_settings
    nopaneltrue
    Insert excerpt
    _add_icon_add_icon
    nopaneltrue
    Insert excerpt
    _input_input
    nopaneltrue
    Note
    Insert excerpt
    _actionflow_api_endpoint
    _actionflow_api_endpoint
    nametext
    nopaneltrue
    s have fixed parameters set on the input node (body, headers, contentType and url), and the output node (body, headers, contentType and statusCode) which can be mapped to.

    Image Added

    On the Input Connection Point, additional Input Parameters can be created to facilitate query string parameters being passed into the API via the URL.

    1. Click on the
      Insert excerpt
      _input
      _input
      nopaneltrue
      node
    2. The
      Insert excerpt
      _property_settings
      _property_settings
      nopaneltrue
      will open on the right and in the Input Parameters section, click the 
      Insert excerpt
      _add_icon
      _add_icon
      nopaneltrue
      icon to create a new attribute
    3. Enter a Name and Default Value (optional)

    The Name set on the

    Insert excerpt
    _input
    _input
    nopaneltrue
    must match the parameter name in the URL, e.g. if an Input Parameter, "field" is created, and the request URL is https://server/phixflow/api/1/action/App/Api/trigger?field=abc then the value "abc" will be used as a parameter. When calling APIs using query string parameters in the URL, care should be taken to ensure that the values are appropriately URL encoded to prevent unexpected behaviour. See HTTP Action Configuration.

    If a parameter is missing then it will be marked as unavailable, unless a Default Value has been configured. 

    Note

    If a “timeout” parameter is sent via the URL, a corresponding Input Parameter is not required on the API Endpoint. See Timeout below.

    URL & URL Alias

    URL and URL Alias can be found on the API Endpoint

    Insert excerpt
    _property_settings
    _property_settings
    nopaneltrue
    .

    • Copy the URL and save it locally, to be used later when calling the API

      Expand
      titleUrl Structure

      The default structure of the URL (i.e. with no URL Alias set) is as follows:

      https://<<Server Name>>/phixflow/api/1/action/<<Application Name>>/<<Actionflow Name>>/trigger

      ParameterDescription
      <<Server Name>>URL of the server e.g. app.phixflow.com
      phixflowthe name of the instance, typically this is phixflow
      <<Application Name>>The name of the application where the Actionflow resides.
      <<API Name>>

      The name of the API.

      Note: If the API Name contains a space, this is replaced with %20. For example "My API" becomes, "My%20API". 



    • Use URL Alias to modify the URL for the API
      • When set, instead of the URL being constructed using the API Endpoint name and application name, it will use the alias instead

    URL Alias Example

    If the API URL is, https://server.phixflow.com/phixflow/api/1/action/My%20App/My%20API%20Endpoint/trigger and a URL Alias of CompanyData is set, then the API URL will change to, https://server.phixflow.com/phixflow/api/2/CompanyData

    API Mode

    API Mode can be found on the API Endpoint

    Insert excerpt
    _property_settings
    _property_settings
    nopaneltrue
    .

    Choose an 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”

    Authorisation

    Allow Anonymous Connections can be found on the API Endpoint

    Insert excerpt
    _property_settings
    _property_settings
    nopaneltrue
    .

    If Allow Anonymous Connections is enabled:

    Excerpt
    nameAllowAnonymousConnections

    This allows anyone with the URL for the API to call it. The audit trail records the system as running performing the API call.

    Note: Adding authorisation is covered on API Authentication and Secret Keys.

    Timeout

    Timeout can be found on the API Endpoint

    Insert excerpt
    _property_settings
    _property_settings
    nopaneltrue
    .

    Set a Timeout (optional):

    • 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

    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:
      • $.processId
      • This 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 

    Insert excerpt
    _action_http
    _action_http
    nopaneltrue
     action on the Actionflow calling the API.

    • 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

    Insert excerpt
    _console
    _console
    nopaneltrue
    :

    If you are making the call using PhixFlow the Responses can be access as follows:

    1. Click the Actionflow entry
    2. In the Messages section which is opened below, double-click the lines that begin Response
    3. Click the Message Details tab to see the response

    API Endpoint Results

    To see the results of the API Endpoint processing in the 

    Insert excerpt
    _console
    _console
    nopaneltrue
    :

    1. Click the Actionflow entry for the API Endpoint
    2. In the Messages section which is opened below, double-click any of the Messages to see more details
    3. 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:  

    • 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
    Tip

    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.

    Excerpt
    nameexample

    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.

    1. Create a new
      Insert excerpt
      _actionflow_api_endpoint
      _actionflow_api_endpoint
      nametext
      nopaneltrue
       on the 
      Insert excerpt
      _actionflow
      _actionflow
      nopaneltrue
       homepage using the  option
      1. Name: API Company Data
      2. Click Create
    2. The API Endpoint canvas will display, with the 
      Insert excerpt
      _property_settings
      _property_settings
      nopaneltrue
       open on the right
      1. In the Basic Settings section, enable Allow Anonymous Connections
      2. Copy the URL and save it locally, to be used later
      3. Insert excerpt
        _save
        _save
        nopaneltrue
         your changes
    Expand
    titleCheckpoint

    Construct JSON

    1. Create a 
      Insert excerpt
      _action_calculate
      _action_calculate
      nopaneltrue
       action
      1. Name: GetDataAndConstructJSON
    2. Connect the input to the Calculate action
    3. From the 

      Insert excerpt
      _action_calculate
      _action_calculate
      nopaneltrue
       action, create a lookup to the Companies data

      Expand
      titleHow?
      1. Hover over the Calculate action and select Add lookup
        1. Name: getCo
      2. On the Create View window:
        1. Name: CompanyData
        2. Table: Companies
        3. Output Attributes Selection: drag CompanyID, CompanyName and Industry into the Output Attributes section of the View Action properties
        4. Outgoing Mappings: map across CompanyID, CompanyName and Industry


    4. On the Calculate action, create an attribute where the JSON will be constructed
      1. Name: JSON
      2. Type: Structured Data
      3. Expression: 


        1. Code Block
          themeEmacs
          toJson(getCo)


      4. Insert excerpt
        _finish
        _finish
        nopaneltrue

    Expand
    titleCheckpoint

    Configure the Output

    1. Drag the 
      Insert excerpt
      _output
      _output
      nopaneltrue
       connection node onto the Calculate node
    2. Map 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

    1. On the API End Point, create a 
      Insert excerpt
      _action_json
      _action_json
      nopaneltrue
       action to receive the parameter
      1. Name: GetIndustry
        1. Input Expression: in.body
        2. Path: $
        3. Create an Output Attribute on the JSON action
          1. Name: IndustryReceived
          2. Type: String
          3. Expression: _result.Industry
      2. Insert the  
        Insert excerpt
        _action_json
        _action_json
        nopaneltrue
         action between the 
        Insert excerpt
        _input
        _input
        nopaneltrue
         and 
        Insert excerpt
        _action_calculate
        _action_calculate
        nopaneltrue
         nodes
      3. On the Mappings between the 
        Insert excerpt
        _input
        _input
        nopaneltrue
         and 
        Insert excerpt
        _action_json
        _action_json
        nopaneltrue
         nodes, map across body, contentType, headers and url
      4. On the lookup connector, getCo, map the IndustryReceived attribute as an Incoming Mapping
      5. On the 
        Insert excerpt
        _action_view
        _action_view
        nopaneltrue
         action, add a filter:
        1. Name: ByIndustry
        2. Filter Details:  

    Call API Actionflow Setup

    1. On the screen, Company Call API, add an Actionflow to the Call API button
      1. If you have completed 2.13 HTTP Action Configuration and 2.14 JSON Action Configuration you will recognise the similar Actionflow setup
      2. On the input connection point, map in the Industry drop down field
      3. Create a 
        Insert excerpt
        _action_http
        _action_http
        nopaneltrue
         action:
        1. Name: Call API
      4. Connect the input to the HTTP action and map across the attribute, Industry
        1. HTTP Method: POST
        2. URL: the URL from the API End Point you copied earlier
        3. Body: 

          Code Block
          themeEmacs
          [{
              "Industry": "${in.Industry}"
          }]


        4. Log Traffic: 

          Insert excerpt
          _toggle_on
          _toggle_on
          nopaneltrue


          Expand
          titleCheckpoint


      5. Create a 

        Insert excerpt
        _action_json
        _action_json
        nopaneltrue
         action 

        1. Name: ReturnedCompanies

        2. Input Expression: in.body
        3. Path: $.getCo

        4. Create 2 Output Attributes on the JSON action

          1. Name: CoName
            1. Type: String 
            2. Expression: _result.1.CompanyName
          2. Name: CompanyID
            1. Type: Integer 
            2. Expression: _result.1.CompanyID
      6. Hover over the HTTP action and choose out, then connect it to the JSON action
      7. On the Mappings between the HTTP action and JSON action, map the attributes:
        1. body
        2. status
      8. Create an 
        Insert excerpt
        _output
        _output
        nopaneltrue
         connection point back to the screen
      9. Connect the JSON action to the output, and configure the following mappings:
        1.  
      10. Then map the following attributes back to the screen on the output connection point:
    Expand
    titleCheckpoint

    Testing

    1. On the screen, Company Call API, click the Call API button to see the results of the Actionflow


    Excerpt
    nameLogTraffic

    System Console Response

    On the HTTP action, Call API, the option to Log Traffic was enabled allowing the API response to be seen in the 

    Insert excerpt
    _console
    _console
    nopaneltrue
    .

    1. The results of the API call can also be seen in the 
      Insert excerpt
      _console
      _console
      nopaneltrue
       via the 
      Insert excerpt
      _administration
      _administration
      nopaneltrue
       option
      1. Navigate to the Completed Tasks tab
      2. Find the Actionflow calling the API and click on it
      3. In the Messages tab in the bottom half of the screen, double-click the message, Response from URL
      4. Click on the Message Detail tab in the Log Message window to see the API output