This commit is contained in:
@@ -254,7 +254,70 @@ You should not store a static copy of an API Bearer access token or hard code it
|
|||||||
|
|
||||||
While it is possible to login via a script using alternate credentials and access the API with alternative access to the current logged in user, this opens a security hole as you would need to hard code credentials into the report script and is **absolutely NOT recommended**.
|
While it is possible to login via a script using alternate credentials and access the API with alternative access to the current logged in user, this opens a security hole as you would need to hard code credentials into the report script and is **absolutely NOT recommended**.
|
||||||
|
|
||||||
The following is a simple example of access the API via a Helper to retrieve a value:
|
### API convenience functions
|
||||||
|
|
||||||
|
Two functions are provided with the report to assist with API usage from your ayPrepareData custom function:
|
||||||
|
|
||||||
|
*GET*
|
||||||
|
|
||||||
|
The ayGetFromAPI function works with GET routes in the API:
|
||||||
|
|
||||||
|
```async function ayGetFromAPI(route, token) {...```
|
||||||
|
|
||||||
|
|
||||||
|
*POST*
|
||||||
|
|
||||||
|
The ayPostToAPI function works with POST routes in the API:
|
||||||
|
|
||||||
|
```async function ayPostToAPI(route, token, data) {...```
|
||||||
|
|
||||||
|
|
||||||
|
*Parameters*
|
||||||
|
|
||||||
|
The `route` parameter should be the complete route to the api method required and can be constructed from the meta data provided to the report, for example to fetch data from the `server-info` API route:
|
||||||
|
```let route=`${reportData.ayServerMetaData.ayApiUrl}server-info`;```
|
||||||
|
|
||||||
|
The `token` parameter is the authorization token provided in the Client data as follows:
|
||||||
|
```let token=reportData.ayClientMetaData.Authorization;```
|
||||||
|
|
||||||
|
The `data` parameter of a POST route differs for each route and is documented in the developer's API documentation.
|
||||||
|
|
||||||
|
The following is an example of accessing the API with both a GET and POST action:
|
||||||
|
|
||||||
|
```
|
||||||
|
async function ayPrepareData(reportData) {
|
||||||
|
|
||||||
|
//Example API GET method
|
||||||
|
//to fetch data from API server
|
||||||
|
//using the "server-info" route
|
||||||
|
|
||||||
|
let route=`${reportData.ayServerMetaData.ayApiUrl}server-info`;
|
||||||
|
|
||||||
|
//Add the data to the main report data object
|
||||||
|
//so it's available to the template
|
||||||
|
reportData.myData=
|
||||||
|
{
|
||||||
|
ServerInfo:await ayGetFromAPI(
|
||||||
|
route,
|
||||||
|
reportData.ayClientMetaData.Authorization
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
//Example API POST method to fetch data from api server
|
||||||
|
//using the "search" route
|
||||||
|
route=`${reportData.ayServerMetaData.ayApiUrl}search`;
|
||||||
|
|
||||||
|
//construct the POST object
|
||||||
|
let searchPostData={phrase: "Fish"};
|
||||||
|
|
||||||
|
reportData.myData.SearchResults = await ayPostToAPI(
|
||||||
|
route,
|
||||||
|
reportData.ayClientMetaData.Authorization,
|
||||||
|
searchPostData
|
||||||
|
);
|
||||||
|
return reportData;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user