Validate scripts over REST
IDM exposes a script
endpoint over which scripts can be validated, by specifying the script parameters as part of the JSON payload. This functionality lets you test how a script will operate in your deployment, with complete control over the inputs and outputs. Testing scripts in this way can be useful in debugging.
The script
endpoint supports two actions - eval
and compile
.
The eval
action evaluates a script, by taking any actions referenced in the script, such as router calls to affect the state of an object. For JavaScript scripts, the last statement that is executed is the value produced by the script, and the expected result of the REST call.
The variables passed into this script are namespaced with the |
The compile
action compiles a script, but does not execute it. A successful compilation returns true
. An unsuccessful compilation returns the reason for the failure.
The following REST call tests whether a transformation script will compile:
curl \ --header "Authorization: Bearer <token>" \ --header "Accept-API-Version: resource=1.0" \ --header "Content-Type: application/json" \ --request POST \ --data '{ "type":"text/javascript", "source":"source.mail ? source.mail.toLowerCase() : null" }' \ "https://<tenant-env-fqdn>/openidm/script?_action=compile" True
If the script is not valid, the action returns an indication of the error, for example:
curl \ --header "Authorization: Bearer <token>" \ --header "Accept-API-Version: resource=1.0" \ --header "Content-Type: application/json" \ --request POST \ --data '{ "type":"text/javascript", "source":"source.mail ? source.mail.toLowerCase()" }' \ "https://<tenant-env-fqdn>/openidm/script?_action=compile" { "code": 400, "reason": "Bad Request", "message": "missing : in conditional expression (386...BF2#1)in 386...BF2 at line number 1 at column number 39" }