graphql-engine/docs/graphql/core/scheduled-triggers/create-one-off-scheduled-event.rst
hasura-bot 866476ab36 docs: update references, api signatures, image widths
GITHUB_PR_NUMBER: 8011
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/8011

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3317
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: 90c8f75003a07c5153c9e478efa599ab0bfb85d9
2022-01-10 18:40:21 +00:00

149 lines
4.5 KiB
ReStructuredText

.. meta::
:description: Create a one-off scheduled event with Hasura
:keywords: hasura, docs, one off scheduled event, scheduled trigger, create
.. _creating_one_off_scheduled_event:
Creating a one-off scheduled event
==================================
.. contents:: Table of contents
:backlinks: none
:depth: 2
:local:
Introduction
------------
One-off scheduled events are used to reliably trigger an HTTP webhook to run custom business logic at a particular point in time. For example, you can create a
scheduled event to send a reminder email two weeks after a user signs up.
To add a one-off scheduled event, follow these steps:
Step 1: Navigate to One-off Scheduled Events
--------------------------------------------
- Go to the ``Events`` tab in your Hasura console.
- Click ``One-off Scheduled Events``.
- Click ``Schedule an event``.
.. thumbnail:: /img/graphql/core/event-triggers/one-off.png
:alt: Adding a one-off scheduled event
:width: 900px
Step 2: Define the scheduled event
----------------------------------
Define the following values for a scheduled event:
- **Webhook**: Enter the HTTP endpoint that should be triggered.
- **Time**: Enter the time to trigger the event.
- **Payload**: The JSON payload which will be sent to the webhook.
.. rst-class:: api_tabs
.. tabs::
.. tab:: Console
In the form opened by the above step, fill out the following fields:
.. thumbnail:: /img/graphql/core/event-triggers/define-one-off-event.png
:alt: Defining the scheduled event
:width: 550px
.. tab:: CLI
One-off scheduled events cannot be set using the CLI as they are not tracked as a part of Hasura metadata.
.. tab:: API
You can define a scheduled event via the :ref:`metadata_create_scheduled_event` metadata API:
.. code-block:: http
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "create_scheduled_event",
"args": {
"webhook": "https://send-email.com",
"schedule_at": "2022-06-18T18:45:00Z",
"payload": { "email": "bob@ross.com" }
}
}
Step 3: Define advanced options (Optional)
------------------------------------------
If you like, you can also define advanced values:
- **Headers**: List of headers to be sent to the webhook.
- **Retry configuration**: In case the call to the webhook fails.
- **Comment**: Custom description of the scheduled trigger.
.. rst-class:: api_tabs
.. tabs::
.. tab:: Console
Expand the ``Advanced`` section.
.. thumbnail:: /img/graphql/core/event-triggers/advanced-one-off.png
:alt: Defining advanced options for a scheduled event
:width: 700px
.. tab:: CLI
One-off scheduled events cannot be set using the CLI as they are not tracked as a part of Hasura metadata.
.. tab:: API
You can define advanced options when defining a scheduled event via the :ref:`metadata_create_scheduled_event` metadata API:
.. code-block:: http
POST /v1/metadata HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "create_scheduled_event",
"args": {
"webhook": "https://send-email.com",
"schedule_at": "2022-06-18T18:45:00Z",
"payload": {
"email": "bob@ross.com"
},
"headers": [
{
"name": "key",
"value": "value"
}
],
"retry_conf": {
"num_retries": 3,
"timeout_seconds": 120,
"tolerance_seconds": 21675,
"retry_interval_seconds": 12
},
"comment": "sample scheduled event comment"
}
}
Schedule & logs
---------------
Once you've created your scheduled trigger, you can see ``Pending events``, ``Processed events``, and ``Invocation logs`` in their respective tabs.
.. thumbnail:: /img/graphql/core/event-triggers/pending-one-off.png
:alt: Schedule and logs for scheduled events
:width: 1200px
.. note::
A scheduled event will be delivered within ten seconds of when it's scheduled.
For example, if you schedule an event at ``09:24:10``, it will be delivered between ``09:24:10`` and ``09:24:20``.
This is because Hasura currently checks for events to be delivered at 10 second intervals. This interval will be made configurable soon.