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

yaml
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

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

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

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 the body 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

The HTTP request options

sslOptions

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: