type: "io.kestra.plugin.core.http.Trigger"
Trigger a flow based on an HTTP response
Examples
Send a Slack alert if the price is below a certain threshold. The flow will be triggered every 30 seconds until the condition is met. Then, the stopAfter
property will disable the trigger to avoid unnecessary API calls and alerts.
id: http_price_alert
namespace: company.team
tasks:
- id: send_slack_alert
type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
url: "{{ secret('SLACK_WEBHOOK') }}"
payload: |
{
"channel": "#price-alerts",
"text": "The price is now: {{ json(trigger.body).price }}"
}
triggers:
- id: http
type: io.kestra.plugin.core.http.Trigger
uri: https://fakestoreapi.com/products/1
responseCondition: "{{ json(response.body).price <= 110 }}"
interval: PT30S
stopAfter:
- SUCCESS
Trigger a flow if an HTTP endpoint returns a status code equals to 200
id: http_trigger
namespace: company.team
tasks:
- id: log_response
type: io.kestra.plugin.core.log.Log
message: '{{ trigger.body }}'
triggers:
- id: http
type: io.kestra.plugin.core.http.Trigger
uri: https://api.chucknorris.io/jokes/random
responseCondition: "{{ response.statusCode == 200 }}"
stopAfter:
- SUCCESS
Properties
responseCondition
- Type: string
- Dynamic: ✔️
- Required: ✔️
- Default:
{{ response.statusCode < 400 }}
The condition on the HTTP response to trigger a flow which can be any expression that evaluates to a boolean value.
The condition will be evaluated after calling the HTTP endpoint, it can use the response itself to determine whether to start a flow or not. The following variables are available when evaluating the condition:
response.statusCode
: the response HTTP status coderesponse.body
: the response body as a stringresponse.headers
: the response headersBoolean coercion allows 0, -0, null and '' to evaluate to false, all other values will evaluate to true.
The condition will be evaluated before any 'generic trigger conditions' that can be configured via the
conditions
property.
uri
- Type: string
- Dynamic: ✔️
- Required: ✔️
The fully-qualified URI that points to the HTTP destination
body
- Type: string
- Dynamic: ✔️
- Required: ❌
The full body as a string
conditions
- Type: array
- SubType: Condition
- Dynamic: ❌
- Required: ❌
List of conditions in order to limit the flow trigger.
contentType
- Type: string
- Dynamic: ✔️
- Required: ❌
The request content type
encryptBody
- Type: boolean
- Dynamic: ❌
- Required: ❌
- Default:
false
If true, the HTTP response body will be automatically encrypted and decrypted in the outputs if encryption is configured
When true, the
encryptedBody
output will be filled, otherwise thebody
output will be filled
formData
- Type: object
- Dynamic: ✔️
- Required: ❌
The form data to be send
headers
- Type: object
- SubType: string
- Dynamic: ✔️
- Required: ❌
The headers to pass to the request
interval
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
60
- Format:
duration
Interval between polling.
The interval between 2 different polls of schedule, this can avoid to overload the remote system with too many calls. For most of the triggers that depend on external systems, a minimal interval must be at least PT30S. See ISO_8601 Durations for more information of available interval values.
method
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
GET
- Possible Values:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
PATCH
CUSTOM
The HTTP method to use
options
- Type: HttpInterface-RequestOptions
- Dynamic: ❌
- Required: ❌
The HTTP request options
sslOptions
- Type: HttpInterface-SslOptions
- Dynamic: ❌
- Required: ❌
The SSL request options
stopAfter
- Type: array
- SubType: string
- Dynamic: ❌
- Required: ❌
List of execution states after which a trigger should be stopped (a.k.a. disabled).
Outputs
body
- Type: object
- Required: ❌
code
- Type: integer
- Required: ❌
encryptedBody
- Type: string
- Required: ❌
formData
- Type: object
- Required: ❌
headers
- Type: object
- SubType: array
- Required: ❌
uri
- Type: string
- Required: ❌
- Format:
uri
Definitions
java.nio.charset.Charset
io.kestra.plugin.core.http.HttpInterface-RequestOptions
basicAuthPassword
- Type: string
- Dynamic: ✔️
- Required: ❌
basicAuthUser
- Type: string
- Dynamic: ✔️
- Required: ❌
connectTimeout
- Type: string
- Dynamic: ❌
- Required: ❌
- Format:
duration
connectionPoolIdleTimeout
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
0
- Format:
duration
defaultCharset
- Type: Charset
- Dynamic: ❌
- Required: ❌
- Default:
UTF-8
followRedirects
- Type: boolean
- Dynamic: ❌
- Required: ❌
- Default:
true
logLevel
- Type: string
- Dynamic: ❌
- Required: ❌
- Possible Values:
ALL
TRACE
DEBUG
INFO
WARN
ERROR
OFF
NOT_SPECIFIED
maxContentLength
- Type: integer
- Dynamic: ❌
- Required: ❌
- Default:
10485760
proxyAddress
- Type: string
- Dynamic: ✔️
- Required: ❌
proxyPassword
- Type: string
- Dynamic: ✔️
- Required: ❌
proxyPort
- Type: integer
- Dynamic: ❌
- Required: ❌
proxyType
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
DIRECT
- Possible Values:
DIRECT
HTTP
SOCKS
proxyUsername
- Type: string
- Dynamic: ✔️
- Required: ❌
readIdleTimeout
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
300
- Format:
duration
readTimeout
- Type: string
- Dynamic: ❌
- Required: ❌
- Default:
10
- Format:
duration
io.kestra.plugin.core.http.HttpInterface-SslOptions
insecureTrustAllCertificates
- Type: boolean
- Dynamic: ❌
- Required: ❌