Skip to main content
Version: v2.x

Metadata API Reference: Scheduled Triggers

Introduction

Scheduled triggers are used to invoke webhooks based on a timestamp or cron.

Supported from

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

create_cron_trigger

create_cron_trigger is used to create a new cron trigger.

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

{
"type" : "create_cron_trigger",
"args" : {
"name": "sample_cron",
"webhook": "https://httpbin.org/post",
"schedule": "* * * * *",
"payload": {
"key1": "value1",
"key2": "value2"
},
"include_in_metadata":false,
"comment":"sample_cron commment"
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the cron trigger
webhooktrueWebhookURLURL of the webhook
scheduletrueCron ExpressionCron expression at which the trigger should be invoked.
payloadfalseJSONAny JSON payload which will be sent when the webhook is invoked.
headersfalse[HeaderFromValue | HeaderFromEnv]List of headers to be sent with the webhook
retry_conffalseRetryConfSTRetry configuration if scheduled invocation delivery fails
include_in_metadatatrueBooleanFlag to indicate whether a trigger should be included in the metadata. When a cron trigger is included in the metadata, the user will be able to export it when the metadata of the graphql-engine is exported.
commentfalseTextCustom comment.
replacefalseBoolWhen replace is set to true, the cron trigger will be updated(if exists) and when it's false or the field is omitted, then a new cron trigger will be created.
request_transformfalseRequestTransformationAttaches a Request Transformation to the cron trigger.
response_transformfalseResponseTransformationAttaches a Request Transformation to the cron trigger.
Supported from

Scheduled triggers are supported from versions v1.3.0 and above.

delete_cron_trigger

delete_cron_trigger is used to delete an existing cron trigger. The scheduled events associated with the cron trigger will also be deleted.

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

{
"type" : "delete_cron_trigger",
"args" : {
"name": "sample_cron"
}
}

Args syntax

KeyRequiredSchemaDescription
nametrueTriggerNameName of the cron trigger
Supported from

Scheduled triggers are supported from versions v1.3.0 and above.

create_scheduled_event

create_scheduled_event is used to create a scheduled event.

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

{
"type": "create_scheduled_event",
"args": {
"webhook": "https://httpbin.org/post",
"schedule_at": "2019-09-09T22:00:00Z",
"payload": {
"key1": "value1",
"key2": "value2"
},
"headers": [{
"name":"header-key",
"value":"header-value"
}],
"comment": "sample scheduled event comment"
}
}

Upon creating a scheduled event successfully, this API will return the event_id in the response.

HTTP/1.1 200 OK
Content-Type: application/json

{
"message": "success",
"event_id": "b918cd10-8853-4e66-91b8-81b5cd16e44b"
}

Args syntax

KeyRequiredSchemaDescription
webhooktrueWebhookURLURL of the webhook
schedule_attrueTimestamp (ISO8601 format)The time at which the invocation should be invoked.
payloadfalseJSONAny JSON payload which will be sent when the webhook is invoked.
headersfalse[HeaderFromValue | HeaderFromEnv]List of headers to be sent with the webhook
retry_conffalseRetryConfSTRetry configuration if scheduled event delivery fails
commentfalseTextCustom comment.
Supported from

Scheduled triggers are supported from versions v1.3.0 and above.

delete_scheduled_event

delete_scheduled_event is used to delete an existing scheduled event (one-off or cron).

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

{
"type" : "delete_scheduled_event",
"args" : {
"type": "one_off",
"event_id": "b918cd10-8853-4e66-91b8-81b5cd16e44b"
}
}

Args syntax

KeyRequiredSchemaDescription
typetrueone_off | cronType of the event trigger.
event_idtrueUUIDThe id of the scheduled event.
Supported from

Scheduled triggers are supported from versions v1.3.0 and above.

get_cron_triggers

get_cron_triggers fetches all the cron triggers from the metadata. This API also returns the cron triggers which have include_in_metadata set to false, and thus are not exported in the export_metadata API.

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

{
"type" : "get_cron_triggers",
"args" : {}
}

get_scheduled_events

get_scheduled_events provides a way to retrieve cron/one-off scheduled events present in the graphql-engine.

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

{
"type" : "get_scheduled_events",
"args" : {
"type": "cron",
"trigger_name": "daily_trigger",
"limit": 10,
"offset": 0,
"status": [
"scheduled",
"delivered"
]
"get_rows_count": false
}
}
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type" : "get_scheduled_events",
"args" : {
"type": "one_off",
"limit": 10,
"offset": 0,
"get_rows_count": true
}
}

Args Syntax

KeyRequiredSchemaDescription
typetrueone_off | cronType of the scheduled trigger.
trigger_nameonly when type is cronStringName of the cron trigger
limitfalseIntegerMaximum number of events to be returned in one API call.
offsetfalseIntegerStarting point from where the rows need to be returned.
get_rows_countfalseBooleanFlag to indicate whether number of rows returned should be included in the response.
statusfalse[ScheduledEventStatus]Filter scheduled events by the status

get_scheduled_event_invocations

get_scheduled_event_invocations provides a way to retrieve the scheduled event invocations of a specific scheduled event or a cron trigger.

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

{
"type": "get_scheduled_event_invocations",
"args": {
"type": "cron",
"trigger_name": "daily_trigger",
"status": [
"scheduled"
],
"limit": 10,
"offset": 0
}
}
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin

{
"type" : "get_scheduled_event_invocations",
"args" : {
"type": "one_off",
"limit": 10,
"offset": 0,
"get_rows_count": true
}
}

Args Syntax

KeyRequiredSchemaDescription
typetrueone_off | cronType of the scheduled trigger.
trigger_nameonly when type is cronStringName of the cron trigger
event_idfalseStringGetting invocations of the specified event
limitfalseIntegerMaximum number of events to be returned in one API call.
offsetfalseIntegerStarting point from where the rows need to be returned.
get_rows_countfalseBooleanFlag to indicate whether number of rows returned should be included in the response.