Schema/Metadata API Reference: Event Triggers

Introduction

Event triggers are used to capture database changes and send them to a configured webhook.

create_event_trigger

create_event_trigger is used to create a new event trigger or replace an existing event trigger.

POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
    "type" : "create_event_trigger",
    "args" : {
        "name": "sample_trigger",
        "table": {
           "name": "users",
           "schema": "public"
        },
        "webhook": "https://httpbin.org/post",
        "insert": {
            "columns": "*",
            "payload": ["username"]
        },
        "update": {
            "columns": ["username", "real_name"],
            "payload": "*"
        },
        "delete": {
            "columns": "*"
        },
        "headers":[
          {
              "name": "X-Hasura-From-Val",
              "value": "myvalue"
          },
          {
              "name": "X-Hasura-From-Env",
              "value_from_env": "EVENT_WEBHOOK_HEADER"
          }
        ],
        "replace": false
    }
}

Args syntax

Key Required Schema Description
name true TriggerName Name of the event trigger
table true QualifiedTable Object with table name and schema
webhook false String Full url of webhook (*)
webhook_from_env false String Environment variable name of webhook (must exist at boot time) (*)
insert false OperationSpec Specification for insert operation
update false OperationSpec Specification for update operation
delete false OperationSpec Specification for delete operation
headers false [ HeaderFromValue | HeaderFromEnv ] List of headers to be sent with the webhook
retry_conf false RetryConf Retry configuration if event delivery fails
replace false Boolean If set to true, the event trigger is replaced with the new definition
enable_manual false Boolean If set to true, the event trigger can be invoked manually

(*) Either webhook or webhook_from_env are required.

delete_event_trigger

delete_event_trigger is used to delete an event trigger.

POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
    "type" : "delete_event_trigger",
    "args" : {
        "name": "sample_trigger"
    }
}

Args syntax

Key Required Schema Description
name true TriggerName Name of the event trigger

redeliver_event

redeliver_event is used to redeliver an existing event. For example, if an event is marked as error ( say it did not succeed after retries), you can redeliver it using this API. Note that this will reset the count of retries so far. If the event fails to deliver, it will be retried automatically according to its retry_conf.

POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
    "type" : "redeliver_event",
    "args" : {
        "event_id": "ad4f698f-a14e-4a6d-a01b-38cd252dd8bf"
    }
}

Args syntax

Key Required Schema Description
event_id true String UUID of the event

invoke_event_trigger

invoke_event_trigger is used to invoke an event trigger with custom payload.

POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
    "type" : "invoke_event_trigger",
    "args" : {
        "name": "sample_trigger",
        "payload": {}
    }
}

Args syntax

Key Required Schema Description
name true TriggerName Name of the event trigger
payload true JSON Some JSON payload to send to trigger

TriggerName

String

OperationSpec

Key Required Schema Description
columns true EventTriggerColumns List of columns or “*” to listen to changes
payload false EventTriggerColumns List of columns or “*” to send as part of webhook payload

EventTriggerColumns

"*" | [PGColumn]

RetryConf

Key required Schema Description
num_retries false Integer Number of times to retry delivery. Default: 0
interval_sec false Integer Number of seconds to wait between each retry. Default: 10
timeout_sec false Integer Number of seconds to wait for response before timing out. Default: 60