Skip to main content
Version: v5.2

Accessing passed data

Script functions can access data with the input, libraries, and ctx arguments:

async yourFunction(input, libraries, ctx) {
//your function body
}
ArgumentContains
inputRequest data
librariesPlatform libraries
ctxSession context

Accessing argument data

libraries argument

The libraries argument contains the platform libraries. For example, to access the IafItemSvc API, you can destructure in the following manner:


async searchAssets(input, libraries, ctx) {
//destructuring
const { IafItemSvc } = libraries.PlatformApi

//API call
const items = await IafItemSvc.getNamedUserItems(
{ query: { _userType: 'assets' }
});
}

ctx argument

Use the ctx argument to extract contextual data such as namespaces, an auth token, and any other relevant context; you can also pass context to your API calls:

async searchAssets(input, libraries, ctx) {
const { IafItemSvc } = libraries.PlatformApi //access APIs
const { IafScriptEngine } = libraries //access script engine directly from libraries

const items = await IafItemSvc.getNamedUserItems(
{ query: { _userType: 'assets' },
ctx //passing context
});

//extracting namespace data
const projectNamespaces = ctx._namespaces;
}

input argument

With the input argument, scripts can access request data, as well as passed data, such as path variables and query parameters.

Accessing passed data

You can use this input object to access the following:

Accessing request and request body

You can access the following data that is contained in the input object structure using dot notation, for example input.script or input.params.HTTP_METHOD:

{
script: {},
params: {
nsFilter: " "
HTTP_METHOD: " "
}
}
PropertyTypeDescription
scriptObjectThe _userType of the script file and the name of the script that executes
params.nsFilterStringNamespace that the script is executing in
params.HTTP_METHODStringHTTP method used to call the endpoint

Scripts can also access a request body from the input.params key. You can access the request body value with the dot notation input.params.your-req-body-key:

// example:
// POST /path
// request body
// {"query": {"properties.dtCategory.val": "Curtain Walls"}}

async searchAssets(input, libraries, ctx) {
let reqQueryValue = input.params.query;
}

Note: The body is available in the script for all POST requests.

Accessing path variables

You can access the path variable as $my-path-variable in the script, or from the input object with the dot notation input.my-path-variable:


// example: GET /assets/:assetid

async searchAssets(input, libraries, ctx) {

console.log("assetid path param:", input.assetid);
console.log("assetid path param:", $assetid);
}
Accessing path query parameters

You can access a query parameter as $my-query-param in the script, or with the dot notation input.params.my-query-param:

// example: GET /path?nsFilter=testNamespace&queryParam=paramValue

async searchAssets(input, libraries, ctx) {
console.log("query param:", input.params.queryParam)
console.log("query param:", $queryParam)
}

Note: All endpoints must be called with an "nsfilter" query parameter that is set to the project's namespace.