Custom webhook overview
The “custom” webhook type allows you to transform the output of another product’s outbound webhook into Ryver’s incoming webhook format.
Transformation templates are based on the JsonTransform format with string values interpolated using the Liquid template language. Both JsonTransform and Liquid support JsonPath expressions for easy extraction of data from the incoming payload.
JsonPath can be used anywhere a normal Liquid variable can be used. If a JsonPath expression happens to resolve to multiple nodes then only the first will be rendered. Basically as if a first filter is automatically applied.
Building transforms
Given this incoming JSON payload:
{
"people": [
{"name": "Jim"},
{"name": "Joanne"}
]
}
Using this transform:
{
"body": "{{ $..name }}"
}
You will get this result:
Jim
We added a custom query tag to Liquid for slightly more compact iteration syntax. It’s basically the same as for except that there’s no element variable name specified. Each element has scope within the query block, so properties on the element can be accessed directly.
Using the same incoming JSON payload as above, with this transformation template:
{
"body": "{% query people %}{{ name }} {% endquery %}"
}
You will get this result:
Jim Joanne
If the array being queried contains simple values then the elements can be accessed using JsonPath by grabbing the first item. Note that a for loop is much better suited in this situation.
Incoming Data:
{
"numbers": [1, 2, 3, 4, 5]
}
Transformation:
{
"body": "{% query numbers %}{{ $.[0] }} {% endquery %}"
}
Result:
1 2 3 4 5