Cron triggers are used to reliably trigger HTTP endpoints to run custom business logic periodically based on a `cron schedule <https://en.wikipedia.org/wiki/Cron>`__. For example, you can create a cron trigger to generate an end-of-day sales report every weekday at 10pm.
To add a cron trigger, follow these steps:
Step 1: Navigate to Cron Triggers
---------------------------------
- Go to the ``Events`` tab in your Hasura console.
In the form opened by the above step, fill out the following fields:
-**Name**: Create a name for the cron trigger.
-**Webhook**: Enter the HTTP endpoint that should be triggered.
-**Cron schedule**: Enter a schedule for the cron. You can use the link next to the field to help `build a cron expression <https://crontab.guru/#*_*_*_*_*>`__, or use the ``Frequently used crons`` dropdown as a shortcut. Cron events are created based on the UTC timezone.
-**Payload**: The JSON payload which will be sent to the webhook.
In this example, we're creating a cron trigger called ``eod_reports``, to trigger the webhook ``https://mywebhook.com/eod``. The cron schedule is set to ``0 22 * * 1-5``, which means "At 22:00 on every day-of-week from Monday through Friday" (you can check this `here <https://crontab.guru/#0_22_*_*_1-5>`__).
..tab:: CLI
You can define a cron trigger by adding it to the ``cron_triggers.yaml`` file inside the ``metadata`` directory:
..code-block:: yaml
- name: eod_reports
webhook: https://mywebhook.com/eod
schedule: 0 22 * * 1-5
include_in_metadata: true
payload: {}
Apply the metadata by running:
..code-block:: yaml
hasura metadata apply
..tab:: API
You can define a cron trigger via the :ref:`create_cron_trigger metadata API <create_cron_trigger>`:
..code-block:: http
POST /v1/query HTTP/1.1
Content-Type: application/json
X-Hasura-Role: admin
{
"type": "create_cron_trigger",
"args": {
"name": "eod_reports",
"webhook": "https://mywebhook.com/eod",
"schedule": "0 22 * * 1-5",
"payload": {},
"include_in_metadata": true
}
}
Step 3: Define advanced options (Optional)
------------------------------------------
If you like, you can also define the following values:
-**Headers**: List of headers to be sent to the webhook.
-**Retry configuration**: In case the call to the webhook fails.
-**Include in metadata**: When set to true, the cron trigger will be included in the metadata and can be exported along with it.
-**Comment**: Custom description of the cron trigger.