Schema/Metadata API Reference: Event Triggers¶
Table of contents
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 |
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 |