ZIS bundle: Creating an HTTP request body using jq

The following ZIS bundle includes a Transform action. The Transform action uses jq to create a JSON object. The object uses a reference path as a property key. After the Transform action, the object is passed to the request body of an HTTP request in a ZIS custom action.

The bundle's Transform action is highlighted. When testing the bundle, replace "EXTERNAL_TARGET_URL" with a RequestBin endpoint URL. Replace "INTEGRATION" with your integration key.

{  "name": "Example integration",  "description": "HTTP request body that uses parameter as key",  "zis_template_version": "2019-10-14",  "resources": {    "postToExternalTarget": {      "type": "ZIS::Action::Http",      "properties": {        "name": "postToExternalTarget",        "definition": {          "method": "POST",          "url": "EXTERNAL_TARGET_URL",          "requestBody.$": "$.requestBody"        }      }    },    "NewUserFlow": {      "type": "ZIS::Flow",      "properties": {        "name": "NewUserFlow",        "definition": {          "StartAt": "mockGetCustomField",          "States": {            "mockGetCustomField": {              "Type": "Pass",              "Result": {                "custom_field_key": "favorite_product",                "custom_field_value": "Canyonero"              },              "ResultPath": "$.custom_field",              "Next": "transformCustomFieldObj"            },            "transformCustomFieldObj": {              "Type": "Action",              "ActionName": "zis:common:transform:Jq",              "Parameters": {                "data.$": "$.custom_field",                "expr": "{ (.custom_field_key): .custom_field_value }"              },              "ResultPath": "$.custom_request_body",              "Next": "makeHttpRequest"            },            "makeHttpRequest": {              "Type": "Action",              "ActionName": "zis:INTEGRATION:action:postToExternalTarget",              "Parameters": {                "requestBody.$": "$.custom_request_body"              },              "End": true            }          }        }      }    },    "NewUserSpec": {      "type": "ZIS::JobSpec",      "properties": {        "name": "NewUserSpec",        "event_source": "support",        "event_type": "user.UserCreated",        "flow_name": "zis:INTEGRATION:flow:NewUserFlow"      }    }  }}

The bundle's Transform action takes the following input from a Pass state:

{  "custom_field_key": "favorite_product",  "custom_field_value": "Canyonero"}

After applying a jq expression, the Transform action outputs the following object:

{  "favorite_product": "Canyonero"}

The object is then passed to the requestBody option of the ZIS custom action.