Rules Testing with jsonxform/transformation endpoint
Process for Using jsonxform/transformation
Use cURL or Postman to execute a Post call on the /services/data/v51.0/jsonxform/transformation REST endpoint. See the examples for starting points on what the POST request body must contain.
If the rule works, the POST response contains the transformed JSON results. If the rule doesn’t work, the POST response contains any errors with guidance to fix the rule.
The following examples show how you can take advantage of the built-in tokens we provide.
Example: Post Transform
A “put” rule that adds a name/value pair to the JSON.
{
"document": {
"user": {
"firstName": "${User.FirstName}",
"lastName": "${User.LastName}",
"userName": "${User.UserName}",
"id": "${User.Id}",
"hello": "${Variables.hello}"
},
"company": {
"id": "${Org.Id}",
"name": "${Org.Name}",
"namespace": "${Org.Namespace}"
}
},
"values": {
"Variables": {
"hello": "world"
}
},
"definition": {
"rules": [{
"name": "Example",
"actions": [{
"action": "put",
"description": "add hobby to user",
"key": "hobby",
"path": "$.user",
"value": "mountain biking"
}]
}]
}
}
Example: Constant Array
Tests an array function (contains) to determine the right value to add to the final JSON.
{
"document": {
"user": {
"firstName": "${User.FirstName}",
"lastName": "${User.LastName}",
"userName": "${User.UserName}",
"id": "${User.Id}",
"hello": "${Variables.hello}"
},
"company": {
"id": "${Org.Id}",
"name": "${Org.Name}",
"namespace": "${Org.Namespace}"
}
},
"values": {
"Variables": {
"hello": "world",
"choices": ["Products", "Cases"]
}
},
"definition": {
"constants": [{
"name": "ConstantTest",
"value": "${array:contains(Variables.choices, 'Products') ? 'Products' : 'No Products'}"
}],
"rules": [{
"name": "Example",
"actions": [{
"action": "put",
"description": "add hobby to user with constant",
"key": "hobby",
"path": "$.user",
"value": "${Constants.ConstantTest}"
}]
}]
}
}
Example: Macro Transform
Tests a macro with a rule.
{
"document": {
"user": {
"firstName": "${User.FirstName}",
"lastName": "${User.LastName}",
"userName": "${User.UserName}",
"id": "${User.Id}",
"favorite": null
}
},
"values": {},
"definition": {
"macros": [{
"namespace": "jsonTest",
"definitions": [{
"name": "setNodeByPath",
"parameters": [
"jsonPath",
"value"
],
"actions": [{
"action": "set",
"path": "${p.jsonPath}",
"value": "${p.value}"
}]
}]
}],
"rules": [{
"name": "Example",
"actions": [{
"action": "put",
"description": "add hobby to user",
"key": "hobby",
"path": "$.user",
"value": "mountain biking"
},
{
"action": "eval",
"description": "Set the value of 'favorite' with the value from 'hobby'",
"path": "$.user.hobby",
"value": "${jsonTest:setNodeByPath('$.user.favorite', Rules.CurrentNode)}"
}
]
}]
}
}
For reference on the jsonxform/transformation REST endpoint, see JsonXform Transformation Resource in the Analytics REST API Developer Guide.