62 lines
1.9 KiB
Plaintext
62 lines
1.9 KiB
Plaintext
[[transform]]
|
|
== Transforms
|
|
|
|
A _Transform_ processes and changes the payload in the watch execution context
|
|
to prepare it for the watch actions. {watcher} supports three types of
|
|
transforms: <<transform-search, `search`>>,
|
|
<<transform-script, `script`>> and <<transform-chain, `chain`>>.
|
|
|
|
|
|
NOTE: Transforms are optional. When none are defined, the actions have access to
|
|
the payload as loaded by the watch input.
|
|
|
|
You can define transforms in two places:
|
|
|
|
* As a top level construct in the watch definition. In this case, the payload is
|
|
transformed before any of the watch actions are executed.
|
|
|
|
* As part of the definition of an 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,js]
|
|
--------------------------------------------------
|
|
{
|
|
"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`
|
|
|
|
include::transform/search.asciidoc[]
|
|
|
|
include::transform/script.asciidoc[]
|
|
|
|
include::transform/chain.asciidoc[] |