emite IPaaS Referenced Actions
An emite IPaaS Integration typically consists of a single primary Action (often executed on a schedule) which is responsible for saving data to the data store (Elastic Search / Open Search).
However, a single Action can only interface with a single API endpoint, so how can an emite IPaaS Integration retrieve and consolidate data from multiple API endpoints / multiple data sources?
The answer is Referenced Actions.
You can create additional Actions within your IPaaS Integration (which retrieve data from different API endpoints) and then reference them from your primary Action, for look-up purposes.
To reference another Action within a Mapping, use the format [Action Name].[Alias] as the Source, and use the Mapping's Params to pass a look up value to the referenced action using the format {{value}}
For example, let’s say your requirement was to retrieve a list of Users from a 3rd-party system, along with their corresponding Group memberships.
After researching the 3rd-party system’s online API documentation, you find out that you need to use 2 separate API endpoints to get all the required data.
A GetUsers API endpoint, to retrieve a list of User Names and User ID’s:
…/rest/api/getUsers
A GetUserGroup API endpoint, to retrieve the Group assigned to a particular User ID:
…/rest/api/getUserGroup/{{userID}}
- Note, this particular API Endpoint accepts a parameter{{userID}}
So you will need to create two (2) Actions to meet this requirement, as follows:
The GetUsers (Primary) Action will retrieve a list of User ID’s and User Name's. It will also have a Group Name Mapping which references the second Action GetUserGroup, passing the User ID as a parameter, to retrieve each user’s assigned Group.
The GetUsers (Primary) Action Mappings would be configured like this:
The GetUsers (Primary) Action Group Name Mapping’s Params would be configured like this (passing the User ID over to the referenced Action):
The GetUserGroup Commands section will be configured to accept the User ID parameter, like this:
The GetUserGroup Action Mappings would be configured like this:
Things to consider:
Do your research to ensure that you are using the most optimal API endpoints provided by the 3rd party system. Try and minimise the amount of API endpoints you need to query, in order to meet your specific requirement(s).
Only Actions within the same Integration can be referenced, however multiple Actions can talk to multiple data sources within the one Integration.
Make use of the eMite IPaaS Action caching feature (see emite IPaaS Integration Cache) if data is expected to change infrequently. In the GetUserGroup example above, you could save the data to the Integration’s cache, so subsequent Action executions don't waste valuable API calls (retrieving the same data) and instead the Integration’s cache is leveraged for the required Group Name.
Most 3rd Party systems require you to authenticate with a separate API endpoint, before you can retrieve data from any other API’s, so referencing a seperate authentication Action is common in most emite IPaaS Integrations. Authentication Actions can be referenced directly within Commands > Headers, using the format
bearer {{[Action Name].[Alias]}}
, i.e.