Skip to main content
Version: v4.6

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.