Back to Collection Items
IncludeFile "CkJsonObject.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkJsonArray.pb"
Procedure ChilkatExample()
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success.i
; Use this online tool to generate code from sample JSON: Generate Code to Create JSON
; The following JSON is sent in the request body.
; {
; "inputs": [
; {}
; ]
; }
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Adds the "Authorization: Bearer <access_token>" header.
CkHttp::setCkAuthToken(http, "<access_token>")
CkHttp::ckSetRequestHeader(http,"Content-Type","application/json")
resp.i = CkHttp::ckPostJson3(http,"https://domain.com/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName","application/json",json)
If CkHttp::ckLastMethodSuccess(http) = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
sbResponseBody.i = CkStringBuilder::ckCreate()
If sbResponseBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHttpResponse::ckGetBodySb(resp,sbResponseBody)
jarrResp.i = CkJsonArray::ckCreate()
If jarrResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonArray::ckLoadSb(jarrResp,sbResponseBody)
CkJsonArray::setCkEmitCompact(jarrResp, 0)
Debug "Response Body:"
Debug CkJsonArray::ckEmit(jarrResp)
respStatusCode.i = CkHttpResponse::ckStatusCode(resp)
Debug "Response Status Code = " + Str(respStatusCode)
If respStatusCode >= 400
Debug "Response Header:"
Debug CkHttpResponse::ckHeader(resp)
Debug "Failed."
CkHttpResponse::ckDispose(resp)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(json)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonArray::ckDispose(jarrResp)
ProcedureReturn
EndIf
CkHttpResponse::ckDispose(resp)
; Sample JSON response:
; (Sample code for parsing the JSON response is shown below)
; [
; {
; "actionName": "myExpressionSet",
; "errors": null,
; "isSuccess": true,
; "outputValues": {
; "output": 1
; },
; "version": 1
; }
; ]
; Sample code for parsing the JSON response...
; Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code
json.i
actionName.s
errors.s
isSuccess.i
Output.i
version.i
i.i = 0
count_i.i = CkJsonArray::ckSize(jarrResp)
While i < count_i
json = CkJsonArray::ckObjectAt(jarrResp,i)
actionName = CkJsonObject::ckStringOf(json,"actionName")
errors = CkJsonObject::ckStringOf(json,"errors")
isSuccess = CkJsonObject::ckBoolOf(json,"isSuccess")
Output = CkJsonObject::ckIntOf(json,"outputValues.output")
version = CkJsonObject::ckIntOf(json,"version")
CkJsonObject::ckDispose(json)
i = i + 1
Wend
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(json)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonArray::ckDispose(jarrResp)
ProcedureReturn
EndProcedure
Curl Command
curl -X POST
-H "Authorization: Bearer <access_token>"
-H "Content-Type: application/json"
-d '{
"inputs": [
{}
]
}'
https://domain.com/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName
Postman Collection Item JSON
{
"name": "runExpressionSet",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"inputs\": [\n {}\n ]\n}"
},
"url": {
"raw": "{{_endpoint}}/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName",
"host": [
"{{_endpoint}}"
],
"path": [
"services",
"data",
"v{{version}}",
"actions",
"custom",
"runExpressionSet",
":expressionSetAPIName"
],
"variable": [
{
"key": "expressionSetAPIName",
"value": "myExpressionSet",
"description": "The API name of an expression set is unique within your Salesforce instance."
}
]
},
"description": "# Expression Set Actions\n\nInvoke an active expression set. An expression set is a user-defined rule that accepts an input and returns the output based on the configured function.\n\nThe configured function of an expression set can be a simple decision matrix lookup, a calculation based on a mathematical formula, a condition, or another expression set.\n\nThese actions are available in API version 55.0 and later.\n\n## Supported REST HTTP Methods\n\nURI/services/data/v55.0/actions/custom/runExpressionSet/{ApiName}\n\n> `Note` \n \n> `The API name of an expression set is unique within your Salesforce instance.` \n \n\nFormats\n\nJSON\n\nHTTP Methods\n\nPOST\n\nAuthentication\n\nAuthorization: Bearer token\n\n## Inputs\n\nVary depending on the selected expression set.\n\n## Outputs\n\nVary depending on the inputs of the selected expression set.\n\n## Usage\n\nThis section has the sample request and response for invoking an expression set that does the following:\n\n1. Find the tax percentage and the premium corresponding to specific age and salary using a decision matrix lookup.\n \n2. Check the age criterion to calculate the total tax.\n \n3. Calculate the total tax to be paid based on the age group, salary, and the tax percentage.\n \n\nSample request\n\nHere’s an example POST request that has the inputs, such as, age and salary:\n\n```\n{\n \"inputs\":[\n {\n \"Age\":\"25.00\",\n \"Salary\":\"50000.00\"\n }\n ]\n}\n\n ```\n\nSample response\n\nHere’s an example response that has the premium and tax values based on the inputs provided in the example request:\n\n```\n[\n {\n \"actionName\":\"TaxPremiumES\",\n \"errors\":null,\n \"isSuccess\":true,\n \"outputValues\":{\n \"TaxPremium__Premium\":1000,\n \"TaxPremium__Tax\":10,\n \"TaxToBePaid\":1050,\n \"condition_output__2\":\"false\",\n \"condition_output__1\":\"true\"\n }\n }\n]\n\n ```"
},
"response": [
{
"name": "Status400-EmptyExpressionSetAPIName",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"inputs\": [\n {}\n ]\n}"
},
"url": {
"raw": "{{_endpoint}}/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName",
"host": [
"{{_endpoint}}"
],
"path": [
"services",
"data",
"v{{version}}",
"actions",
"custom",
"runExpressionSet",
":expressionSetAPIName"
],
"variable": [
{
"key": "expressionSetAPIName",
"value": "",
"description": "The API name of an expression set is unique within your Salesforce instance."
}
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Date",
"value": "Thu, 07 Sep 2023 09:04:01 GMT"
},
{
"key": "Strict-Transport-Security",
"value": "max-age=63072000; includeSubDomains"
},
{
"key": "X-Content-Type-Options",
"value": "nosniff"
},
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
},
{
"key": "X-Robots-Tag",
"value": "none"
},
{
"key": "Cache-Control",
"value": "no-cache,must-revalidate,max-age=0,no-store,private"
},
{
"key": "Sforce-Limit-Info",
"value": "api-usage=1/15000"
},
{
"key": "Content-Type",
"value": "application/json;charset=UTF-8"
},
{
"key": "Transfer-Encoding",
"value": "chunked"
}
],
"cookie": [
],
"body": "[\n {\n \"actionName\": \":expressionSetAPIName\",\n \"errors\": [\n {\n \"statusCode\": \"MISSING_RECORD\",\n \"message\": \"Action name not found: :expressionSetAPIName\",\n \"fields\": []\n }\n ],\n \"isSuccess\": false,\n \"outputValues\": null,\n \"version\": 1\n }\n]"
},
{
"name": "Status400-ExpressionNotFound",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"inputs\": [\n {}\n ]\n}"
},
"url": {
"raw": "{{_endpoint}}/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName",
"host": [
"{{_endpoint}}"
],
"path": [
"services",
"data",
"v{{version}}",
"actions",
"custom",
"runExpressionSet",
":expressionSetAPIName"
],
"variable": [
{
"key": "expressionSetAPIName",
"value": "ghfgh",
"description": "The API name of an expression set is unique within your Salesforce instance."
}
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Date",
"value": "Thu, 07 Sep 2023 09:05:16 GMT"
},
{
"key": "Strict-Transport-Security",
"value": "max-age=63072000; includeSubDomains"
},
{
"key": "X-Content-Type-Options",
"value": "nosniff"
},
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
},
{
"key": "X-Robots-Tag",
"value": "none"
},
{
"key": "Cache-Control",
"value": "no-cache,must-revalidate,max-age=0,no-store,private"
},
{
"key": "Sforce-Limit-Info",
"value": "api-usage=1/15000"
},
{
"key": "Content-Type",
"value": "application/json;charset=UTF-8"
},
{
"key": "Transfer-Encoding",
"value": "chunked"
}
],
"cookie": [
],
"body": "[\n {\n \"actionName\": \"ghfgh\",\n \"errors\": [\n {\n \"statusCode\": \"MISSING_RECORD\",\n \"message\": \"Action name not found: ghfgh\",\n \"fields\": []\n }\n ],\n \"isSuccess\": false,\n \"outputValues\": null,\n \"version\": 1\n }\n]"
},
{
"name": "Status500-EmptyBody",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{_endpoint}}/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName",
"host": [
"{{_endpoint}}"
],
"path": [
"services",
"data",
"v{{version}}",
"actions",
"custom",
"runExpressionSet",
":expressionSetAPIName"
],
"variable": [
{
"key": "expressionSetAPIName",
"value": "myExpressionSet",
"description": "The API name of an expression set is unique within your Salesforce instance."
}
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Date",
"value": "Thu, 07 Sep 2023 09:06:44 GMT"
},
{
"key": "Strict-Transport-Security",
"value": "max-age=63072000; includeSubDomains"
},
{
"key": "X-Content-Type-Options",
"value": "nosniff"
},
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
},
{
"key": "X-Robots-Tag",
"value": "none"
},
{
"key": "Cache-Control",
"value": "no-cache,must-revalidate,max-age=0,no-store,private"
},
{
"key": "Sforce-Limit-Info",
"value": "api-usage=3/15000"
},
{
"key": "Content-Type",
"value": "application/json;charset=UTF-8"
},
{
"key": "Transfer-Encoding",
"value": "chunked"
}
],
"cookie": [
],
"body": "[\n {\n \"message\": \"The HTTP entity body is required, but this request has no entity body.\",\n \"errorCode\": \"JSON_PARSER_ERROR\"\n }\n]"
},
{
"name": "Status400-InvalidBody",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n}"
},
"url": {
"raw": "{{_endpoint}}/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName",
"host": [
"{{_endpoint}}"
],
"path": [
"services",
"data",
"v{{version}}",
"actions",
"custom",
"runExpressionSet",
":expressionSetAPIName"
],
"variable": [
{
"key": "expressionSetAPIName",
"value": "myExpressionSet",
"description": "The API name of an expression set is unique within your Salesforce instance."
}
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Date",
"value": "Thu, 07 Sep 2023 09:07:21 GMT"
},
{
"key": "Strict-Transport-Security",
"value": "max-age=63072000; includeSubDomains"
},
{
"key": "X-Content-Type-Options",
"value": "nosniff"
},
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
},
{
"key": "X-Robots-Tag",
"value": "none"
},
{
"key": "Cache-Control",
"value": "no-cache,must-revalidate,max-age=0,no-store,private"
},
{
"key": "Sforce-Limit-Info",
"value": "api-usage=4/15000"
},
{
"key": "Content-Type",
"value": "application/json;charset=UTF-8"
},
{
"key": "Transfer-Encoding",
"value": "chunked"
}
],
"cookie": [
],
"body": "[\n {\n \"errorCode\": \"BAD_REQUEST\",\n \"message\": \"Invalid Request Body\"\n }\n]"
},
{
"name": "Status200-Successfull",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"inputs\": [\n {}\n ]\n}"
},
"url": {
"raw": "{{_endpoint}}/services/data/v{{version}}/actions/custom/runExpressionSet/:expressionSetAPIName",
"host": [
"{{_endpoint}}"
],
"path": [
"services",
"data",
"v{{version}}",
"actions",
"custom",
"runExpressionSet",
":expressionSetAPIName"
],
"variable": [
{
"key": "expressionSetAPIName",
"value": "myExpressionSet",
"description": "The API name of an expression set is unique within your Salesforce instance."
}
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Date",
"value": "Thu, 07 Sep 2023 09:08:00 GMT"
},
{
"key": "Strict-Transport-Security",
"value": "max-age=63072000; includeSubDomains"
},
{
"key": "X-Content-Type-Options",
"value": "nosniff"
},
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
},
{
"key": "X-Robots-Tag",
"value": "none"
},
{
"key": "Cache-Control",
"value": "no-cache,must-revalidate,max-age=0,no-store,private"
},
{
"key": "Sforce-Limit-Info",
"value": "api-usage=5/15000"
},
{
"key": "Content-Type",
"value": "application/json;charset=UTF-8"
},
{
"key": "Vary",
"value": "Accept-Encoding"
},
{
"key": "Content-Encoding",
"value": "gzip"
},
{
"key": "Transfer-Encoding",
"value": "chunked"
}
],
"cookie": [
],
"body": "[\n {\n \"actionName\": \"myExpressionSet\",\n \"errors\": null,\n \"isSuccess\": true,\n \"outputValues\": {\n \"output\": 1\n },\n \"version\": 1\n }\n]"
}
]
}