61 lines
1.9 KiB
Plaintext
61 lines
1.9 KiB
Plaintext
[[transform]]
|
|
=== Transform
|
|
|
|
A _transform_ processes the payload in the watch execution context to prepare the payload for watch actions.
|
|
|
|
NOTE: If no transforms are defined, the actions have access to the payload as loaded by the watch input.
|
|
|
|
You can define transforms in two places:
|
|
|
|
1. As a top level construct in the watch definition. In this case, the payload is
|
|
transformed before any of the watch actions are executed.
|
|
|
|
2. As part of the definition of a particular action. In this case, the payload is
|
|
transformed before that action is executed. The transformation is only applied to the payload for that specific action.
|
|
|
|
If all actions require the same view of the payload, define a transform as part of the watch definition. If each action requires a different view of the payload, define different
|
|
transforms as part of the action definitions so each action has the payload prepared by its own dedicated transform.
|
|
|
|
The following example defines two transforms, one at the watch level and one as part of the definition of the `my_webhook` action.
|
|
|
|
[source,json]
|
|
.Watch Transform Constructs
|
|
--------------------------------------------------
|
|
{
|
|
"trigger" : { ...}
|
|
"input" : { ... },
|
|
"condition" : { ... },
|
|
"transform" : { <1>
|
|
"search" : {
|
|
"body" : { "query" : { "match_all" : {} } }
|
|
}
|
|
}
|
|
"actions" : {
|
|
"my_webhook": {
|
|
"transform" : { <2>
|
|
"script" : "return ctx.payload.hits"
|
|
}
|
|
"webhook" : {
|
|
"host" : "host.domain",
|
|
"port" : 8089,
|
|
"path" : "/notify/{{ctx.watch_id}}"
|
|
}
|
|
}
|
|
]
|
|
...
|
|
}
|
|
--------------------------------------------------
|
|
|
|
<1> A watch level `transform`
|
|
<2> An action level `transform`
|
|
|
|
Watcher supports three types of transforms: <<transform-search, `search`>>, <<transform-script, `script`>>
|
|
and <<transform-chain, `chain`>>.
|
|
|
|
include::transform/search.asciidoc[]
|
|
|
|
include::transform/script.asciidoc[]
|
|
|
|
include::transform/chain.asciidoc[]
|
|
|