We are facing the following issues on the Celigo APIM Portal:
Issue 1: In the Celigo UI, we can see the Dictionary section, but there is no option to create a dictionary (see the screenshot).
Issue 2: In the API Properties section, we have created a dynamic property. However, when the remote resource returns a response, we applied a Jolt transformation to extract data from the response, but we can't find any option to store this data. After some research, we found information in the APIM documentation stating that the Jolt-transformed data is stored in the global API properties.
How can we access this data returned from the remote resource throughout the API using EL?
Clarification: We have not thoroughly understood this section. Could you please provide brief information regarding the actual purpose of dynamic properties?
Issue 1: Due to the recently added help icon, the "+" icon got hidden which we're already fixing and will be available soon.
Issue 2: Can you please share screenshot of what you have tried? Unlike static properties, the dynamic properties are meant to dynamically invoke an endpoint to get a property and then inject it into the EL context. Can you also share the use case, so that we can also suggest an alternate way to achieve it?
Regarding Issue 1, please keep us updated once this issue is resolved.
For Issue 2, in my use case, we are fetching Zoho contacts, and we need to send the refresh access token as authorization. To achieve this, we have implemented dynamic properties (see the details below):
Scheduler:*/58 * * * * (This cron expression will run the job every 58 minutes.)
thanks for confirming that the dynamic properties is working for you. There is no way to encrypt the value of dynamic property as of today. Since it changes dynamically and the APIM console is only allowed for internal use, it will be secure.
Then you can use the EL: {#properties["access_token"]} in the Transform Headers policy to extract the access token. If you're using V4, you can use {#api.properties["access_token"]}. Please let us know if this works.
We attempted to use the Jolt transformation you provided, but the access_token is not accessible when we use {#properties["access_token"]} in V2 or {#api.properties["access_token"]} in V4 APIs.
We also tested dynamic properties using a different API URL (details provided below) but are still facing the same issue.
The remote URL is sending the following response, from which we are extracting the title using the Jolt transformation:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
To access the title, we are using the {#properties['title']} EL expression. Please provide a solution for this issue.
Regarding dictionaries, we created a dictionary and tried accessing it in the policies using {#dictionaries['dictionary_name']['key']} EL, but we are still encountering the same issue. Kindly provide a solution for this as well.
The output of the JOLT should be in the below format (i.e. array of objects):
[ { "key" : "", "value" : "" } ]
For example, using the JOLT I used below, the output is that expected format.
If you configure the other fields properly in the dynamic properties page, you should see the key and value populated like below (in your case, if you use the JOLT like I mentioned, the key name would be "root").
Once you see this (which gets updated on a schedule you've configured), you can use the EL: {#properties['root']} in any of the policies in Policy studio.