Skip to main content
Version: v2.x

Metadata API Reference: Event Triggers

Introduction

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

Supported from

The Metadata API is supported for versions v2.0.0 and above and replaces the older schema/Metadata API.

pg_create_event_trigger

pg_create_event_trigger is used to create a new Event Trigger or replace an existing Event Trigger.

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

{
"type" : "pg_create_event_trigger",
"args" : {
"name": "sample_trigger",
"table": {
"name": "users",
"schema": "public"
},
"source": "default",
"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"
}
],
"cleanup_config": {
"schedule": "0 0 * * *",
"batch_size": 10000,
"clear_older_than": 168,
"timeout": 60,
"clean_invocation_logs": false,
"paused": false
},
"replace": false
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
tabletrueQualifiedTableObject with table name and schema
sourcefalseSourceNameName of the source database of the table (default: default)
webhookfalseWebhookURLEvent Trigger webhook URL
webhook_from_envfalseStringEnvironment variable name of webhook (Deprecated in favour of WebhookURL)
insertfalseOperationSpecSpecification for insert operation
updatefalseOperationSpecSpecification for update operation
deletefalseOperationSpecSpecification for delete operation
headersfalse[ HeaderFromValue | HeaderFromEnv ]List of headers to be sent with the webhook
retry_conffalseRetryConfRetry configuration if event delivery fails
replacefalseBooleanIf set to true, the Event Trigger is replaced with the new definition
enable_manualfalseBooleanIf set to true, the Event Trigger can be invoked manually
request_transformfalseRequestTransformationAttaches a Request Transformation to the Event Trigger.
response_transformfalseResponseTransformationAttaches a Request Transformation to the Event Trigger.
cleanup_configfalseAutoEventTriggerCleanupConfigCleanup config for the auto cleanup process (Enterprise Edition/Cloud only).
trigger_on_replicationfalseBooleanSpecification for enabling/disabling the Event Trigger during logical replication

(*) Either webhook or webhook_from_env are required.

Note

The default value of the trigger_on_replication parameter for Postgres sources will be false, which means that the trigger will not fire during logical replication of data.

pg_delete_event_trigger

pg_delete_event_trigger is used to delete an Event Trigger.

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

{
"type" : "pg_delete_event_trigger",
"args" : {
"name": "sample_trigger",
"source": "default"
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
sourcefalseSourceNameName of the source database of the trigger (default: default)

pg_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/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

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

Args syntax

KeyRequiredSchemaDescription
event_idtrueStringUUID of the event

pg_invoke_event_trigger

invoke_event_trigger is used to invoke an Event Trigger with custom payload.

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

{
"type" : "pg_invoke_event_trigger",
"args" : {
"name": "sample_trigger",
"source": "default",
"payload": {}
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
payloadtrueJSONSome JSON payload to send to trigger
sourcefalseSourceNameName of the source database of the trigger (default: default)

pg_get_event_logs

pg_get_event_logs is used to fetch the event logs for a given event trigger.

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

{
"type": "pg_get_event_logs",
"args": {
"name": "sample_trigger",
"source": "default",
"status": "processed",
"limit": 10,
"offset": 0
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
sourcefalseSourceNameName of the source database of the trigger (default: default)
statusfalse[pending | processed ]Type of event logs to be fetched. If status is not provided then all types of status are included
limitfalseIntegerMaximum number of event logs to be returned in one API call (default: 100)
offsetfalseIntegerStarting point from where the event logs need to be returned (default: 0)

pg_get_event_invocation_logs

pg_get_event_invocation_logs is used to fetch the invocation logs for a given event trigger.

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

{
"type": "pg_get_event_invocation_logs",
"args": {
"name": "sample_trigger",
"source": "default",
"limit": 10,
"offset": 0
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
sourcefalseSourceNameName of the source database of the trigger (default: default)
limitfalseIntegerMaximum number of invocation logs to be returned in one API call (default: 100)
offsetfalseIntegerStarting point from where the invocation logs need to be returned (default: 0)

pg_get_event_by_id

pg_get_event_by_id is used to fetch the event and invocation logs for a given event_id.

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

{
"type": "pg_get_event_by_id",
"args": {
"source" : "default",
"event_id" : "009335c9-7b01-4ea5-b790-66a112e165f9",
"invocation_log_limit" : 100,
"invocation_log_offset" : 0
}
}

Args syntax

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database of the trigger (default: default)
event_idtrueStringUUID of the event
invocation_log_limitfalseIntegerMaximum number of invocation logs to be returned in one API call (default: 100)
invocation_log_offsetfalseIntegerStarting point from where the invocation logs need to be returned (default: 0)

mssql_create_event_trigger

mssql_create_event_trigger is used to create a new Event Trigger or replace an existing Event Trigger.

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

{
"type" : "mssql_create_event_trigger",
"args" : {
"name": "sample_trigger",
"table": {
"name": "users",
"schema": "public"
},
"source": "default",
"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"
}
],
"cleanup_config": {
"schedule": "0 0 * * *",
"batch_size": 10000,
"clear_older_than": 168,
"timeout": 60,
"clean_invocation_logs": false,
"paused": false
},
"replace": false
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
tabletrueQualifiedTableObject with table name and schema
sourcefalseSourceNameName of the source database of the table (default: default)
webhookfalseStringFull url of webhook (*)
webhook_from_envfalseStringEnvironment variable name of webhook (must exist at boot time) (*)
insertfalseOperationSpecSpecification for insert operation
updatefalseOperationSpecSpecification for update operation
deletefalseOperationSpecSpecification for delete operation
headersfalse[ HeaderFromValue | HeaderFromEnv ]List of headers to be sent with the webhook
retry_conffalseRetryConfRetry configuration if event delivery fails
replacefalseBooleanIf set to true, the Event Trigger is replaced with the new definition
enable_manualfalseBooleanIf set to true, the Event Trigger can be invoked manually
request_transformfalseRequestTransformationAttaches a Request Transformation to the Event Trigger.
response_transformfalseResponseTransformationAttaches a Request Transformation to the Event Trigger.
cleanup_configfalseAutoEventTriggerCleanupConfigCleanup config for the auto cleanup process (Enterprise Edition/Cloud only).
trigger_on_replicationfalseBooleanSpecification for enabling/disabling the Event Trigger during logical replication

(*) Either webhook or webhook_from_env are required.

Note

The default value of the trigger_on_replication parameter for MSSQL sources will be true, which means that the trigger will be fired during logical replication of data.

mssql_delete_event_trigger

mssql_delete_event_trigger is used to delete an Event Trigger.

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

{
"type" : "mssql_delete_event_trigger",
"args" : {
"name": "sample_trigger",
"source": "default"
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
sourcefalseSourceNameName of the source database of the Event Trigger (default: default)

mssql_redeliver_event

mssql_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/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

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

Args syntax

KeyRequiredSchemaDescription
event_idtrueStringUUID of the event

mssql_invoke_event_trigger

invoke_event_trigger is used to invoke an Event Trigger with custom payload.

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

{
"type" : "mssql_invoke_event_trigger",
"args" : {
"name": "sample_trigger",
"source": "default",
"payload": {}
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
payloadtrueJSONSome JSON payload to send to trigger
sourcefalseSourceNameName of the source database of the trigger (default: default)

mssql_get_event_logs

mssql_get_event_logs is used to fetch the event logs for a given event trigger.

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

{
"type": "mssql_get_event_logs",
"args": {
"name": "sample_trigger",
"source": "default",
"status": "processed",
"limit": 10,
"offset": 0
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
sourcefalseSourceNameName of the source database of the trigger (default: default)
statusfalse[pending | processed ]Type of event logs to be fetched. If status is not provided then all types of status are included
limitfalseIntegerMaximum number of event logs to be returned in one API call (default: 100)
offsetfalseIntegerStarting point from where the event logs need to be returned (default: 0)

mssql_get_event_invocation_logs

mssql_get_event_invocation_logs is used to fetch the invocation logs for a given event trigger.

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

{
"type": "mssql_get_event_invocation_logs",
"args": {
"name": "sample_trigger",
"source": "default",
"limit": 10,
"offset": 0
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the Event Trigger
sourcefalseSourceNameName of the source database of the trigger (default: default)
limitfalseIntegerMaximum number of invocation logs to be returned in one API call (default: 100)
offsetfalseIntegerStarting point from where the invocation logs need to be returned (default: 0)

mssql_get_event_by_id

mssql_get_event_by_id is used to fetch the event and invocation logs for a given event_id.

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

{
"type": "mssql_get_event_by_id",
"args": {
"source" : "default",
"event_id" : "81531A4C-AED7-4EFE-964D-D115A77B05C2",
"invocation_log_limit" : 100,
"invocation_log_offset" : 0
}
}

Args syntax

KeyRequiredSchemaDescription
sourcefalseSourceNameName of the source database of the trigger (default: default)
event_idtrueStringUUID of the event
invocation_log_limitfalseIntegerMaximum number of invocation logs to be returned in one API call (default: 100)
invocation_log_offsetfalseIntegerStarting point from where the invocation logs need to be returned (default: 0)

cleanup_event_trigger_logs

cleanup_event_trigger_logs is used to manually delete the event logs for a given Event Trigger.

POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type" : "cleanup_event_trigger_logs",
"args": {
"event_trigger_name": "sample_trigger",
"source": "default",
"batch_size": 10000,
"clear_older_than": 168,
"timeout": 60,
"clean_invocation_logs": false
}
}

Args syntax

KeyRequiredSchemaDescription
event_trigger_nametrueStringName of the Event Trigger whose logs needs to be cleaned up
sourcefalseSourceNameSource to which the Event Trigger belong. Default default
batch_sizefalseIntMaximum number of logs to delete in a single statement during the cleanup action. If there are more events to be cleaned than the batch_size then the cleanup action will execute multiple statements sequentially until all old event logs are cleared. Default 10000
clear_older_thantrueIntEvent logs retention period (in hours).
timeoutfalseIntMaximum time (in seconds) that a batch can take during the cleanup process. If a batch times out, the cleanup process is halted. Default: 60
clean_invocation_logsfalseBooleanShould corresponding invocation logs be cleaned. Default false

resume_event_trigger_cleanups

resume_event_trigger_cleanups is used to resume the paused log cleaner for Event Triggers.

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

{
"type": "resume_event_trigger_cleanups",
"args": {
"event_triggers": [
{
"source_name": "default",
"event_triggers": ["sample_trigger"]
}
]
}
}

Args syntax

KeyRequiredSchemaDescription
event_triggerstrueTriggerLogCleanupSources | [EventTriggerQualifier]Event Triggers for which to start the cleanup process

pause_event_trigger_cleanups

  • pause_event_trigger_cleanups is used to pause the log cleaner for event triggers which already have a cleaner installed.
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type": "pause_event_trigger_cleanups",
"args": {
"event_triggers": [
{
"source_name": "default",
"event_triggers": ["sample_trigger"]
}
]
}
}

Args syntax

KeyRequiredSchemaDescription
event_triggerstrueTriggerLogCleanupSources | [EventTriggerQualifier]Event Triggers for which to pause the cleanup process
Note

The start and pause APIs for Event Trigger cleanup work only for Event Triggers that have a cleanup configuration defined.