Core Plugins and tasks Trigger

Core Plugins and tasks Trigger

Certified

Poll an HTTP endpoint and trigger when a condition matches.

Periodically calls uri (default GET every 60s), evaluates responseCondition against status/body/headers, and launches the flow when true. Supports request customization (method, params, headers, auth via options) and stopAfter states to disable once satisfied.

yaml
type: io.kestra.plugin.core.http.Trigger

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.

yaml
id: http_price_alert
namespace: company.team

tasks:
  - id: send_slack_alert
    type: io.kestra.plugin.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

yaml
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

The fully-qualified URI that points to the HTTP destination

Defaultfalse

Specifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.

The full body as a string

Defaultapplication/json

The request content type

Defaultfalse

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 the body output will be filled.

The form data to be send

SubTypestring

The headers to pass to the request

DefaultPT1M
Formatduration

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.

DefaultGET

The HTTP method to use

The HTTP request options

Definitions
allowFailedbooleanstring
Defaultfalse

If true, allow a failed response code (response code >= 400)

allowedResponseCodesarray
SubTypeinteger

List of response code allowed for this request

auth

The authentication to use.

type*Requiredobject
passwordstring

The password for HTTP basic authentication.

usernamestring

The username for HTTP basic authentication.

type*Requiredobject
tokenstring

The token for bearer token authentication.

type*Requiredobject
passwordstring

The password for HTTP Digest authentication.

usernamestring

The username for HTTP Digest authentication.

defaultCharsetstring
DefaultUTF-8

The default charset for the request.

enabledTcpExtendedKeepAlivebooleanstring
Defaulttrue

Whether to enable TCP Keep-Alive extended socket options (TCP_KEEPIDLE, TCP_KEEPINTERVAL, TCP_KEEPCOUNT).

Set to false when running on Windows workers, as these extended socket options are not supported by the Windows JDK and will cause connection failures.

followRedirectsbooleanstring
Defaulttrue

Whether redirects should be followed automatically.

logsarray
SubTypestring
Possible Values
REQUEST_HEADERSREQUEST_BODYRESPONSE_HEADERSRESPONSE_BODY

The enabled log.

proxy

The proxy configuration.

addressstring

The address of the proxy server.

passwordstring

The password for proxy authentication.

portintegerstring

The port of the proxy server.

typestring
DefaultDIRECT
Possible Values
DIRECTHTTPSOCKS

The type of proxy to use.

usernamestring

The username for proxy authentication.

ssl

The SSL request options

insecureTrustAllCertificatesbooleanstring

Whether to disable checking of the remote SSL certificate.

Only applies if no trust store is configured. Note: This makes the SSL connection insecure and should only be used for testing. If you are using a self-signed certificate, set up a trust store instead.

timeout

The timeout configuration.

connectTimeoutstring

The time allowed to establish a connection to the server before failing.

readIdleTimeoutstring
DefaultPT5M

The time allowed for a read connection to remain idle before closing it.

The query string parameter to use

Adds parameter to URI query. The parameter name and value are expected to be unescaped and may contain non ASCII characters. The value can be a string or a list of strings. This method will not override parameters already existing on uri and will add them as array.

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 code
  • response.body: the response body as a string
  • response.headers: the response headers

Boolean 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.

SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED

List of execution states after which a trigger should be stopped (a.k.a. disabled).

Defaulttrue

A condition that determines whether the trigger should run.

A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.

The body of the response

Kestra, by default, stores the task output using this property. However, if the encryptBody property is set to true, Kestra will instead encrypt the output and store it using the encryptedBody output property.

The status code of the response

The encrypted body of the response

If the encryptBody property is set to true, Kestra will automatically encrypt the output before storing it, and decrypt it when the output is retrieved in a downstream task.

The form data to be sent in the request body

When sending a file, you can pass a list of maps (i.e., a list of key-value pairs) with a key 'name' and value of the filename, as well as 'content' key with the file's content as value (e.g., passed from flow inputs or outputs from another task).

SubTypearray

The headers of the response

Formaturi

The URL of the current request