Paradime Help Docs
Ask or search…
K

Webhooks events

Paradime enables you to create outbound webhooks for events from your Paradime production runs. These events can be used to trigger automation provide real-time updates in other applications. This allows applications to communicate and share data in real time.
Using webhooks, you can create more automation and expand to new use cases previously not possible, for example:
  • Get a notification for a failed dbt™ run in Slack as a message and for every additional failure of the same schedule, get notified as threads
  • Get notified of run statuses in Microsoft Teams
  • Create incidents in PagerDuty, OpsGenie, Splunk, incident.io, FireHydrant or other tools if a schedule fails
  • Create custom notifications in Slack or Teams depending on schedule name, schedule severity
  • When schedule fails, automatically create tickets in Jira, Linear, or any other tool and assign the ticket to the schedule owner
  • Hook up to Zapier or make.com and connect to 1000+ applications and unlock infinite possibilities.

How to setup your first webhoook

Paradime's webhook system supports JSON payloads to your application's endpoint URL when your webhook is triggered.
Paradime supports the below events for Bolt runs:
  • bolt.run.started — Triggered when a Bolt run is started.
  • bolt.run.completed — Triggered when a Bolt run is completed. This can be a run that has failed or succeeded.

Examples of JSON payloads

An example of a webhook payload for a completed run:

The bolt.run.completed event provide all the data required to see the details of the execution for a schedule. This event also enable to query additional metadata for each dbt™️ command using a pre-populate graphql endpoint provided in the fields:
  • api_query - this endpoint will allow you to query and extract for each command in the schedule the raw console logs
  • resource_query - this endpoint will allow you to query and extract for each command the relate resources generated by the execution of the command, for example the run_results.json or the manifest.json
{
"api_url":"https://api.demo.paradime.io/api/v1/uany7edagtovarzx/graphql",
"commands":[
{
"api_query":"query BoltCommand {\n boltCommand(commandId: 193439) {\n command\n startDttm\n endDttm\n stdout\n stderr\n returnCode\n scheduleRunId\n resources {\n id\n path\n }\n }\n}",
"command":"git clone ...",
"end_dttm":"2023-10-15 16:44:16.986049",
"id":193439,
"json_resources":[
],
"return_code":0,
"start_dttm":"2023-10-15 16:44:14.576471",
"status":"succeeded"
},
{
"api_query":"query BoltCommand {\n boltCommand(commandId: 193440) {\n command\n startDttm\n endDttm\n stdout\n stderr\n returnCode\n scheduleRunId\n resources {\n id\n path\n }\n }\n}",
"command":"dbt deps",
"end_dttm":"2023-10-15 16:44:19.831942",
"id":193440,
"json_resources":[
],
"return_code":0,
"start_dttm":"2023-10-15 16:44:17.109897",
"status":"succeeded"
},
{
"api_query":"query BoltCommand {\n boltCommand(commandId: 193441) {\n command\n startDttm\n endDttm\n stdout\n stderr\n returnCode\n scheduleRunId\n resources {\n id\n path\n }\n }\n}",
"command":"dbt seed",
"end_dttm":"2023-10-15 16:44:29.552605",
"id":193441,
"json_resources":[
{
"id":1205731,
"path":"target/manifest.json",
"resource_query":"query BoltResourceUrl {\n boltResourceUrl(resourceId: 1205731) {\n ok\n url\n }\n}"
},
{
"id":1205739,
"path":"target/run_results.json",
"resource_query":"query BoltResourceUrl {\n boltResourceUrl(resourceId: 1205739) {\n ok\n url\n }\n}"
}
],
"return_code":0,
"start_dttm":"2023-10-15 16:44:19.886774",
"status":"succeeded"
},
{
"api_query":"query BoltCommand {\n boltCommand(commandId: 193442) {\n command\n startDttm\n endDttm\n stdout\n stderr\n returnCode\n scheduleRunId\n resources {\n id\n path\n }\n }\n}",
"command":"dbt run",
"end_dttm":"2023-10-15 16:44:37.422950",
"id":193442,
"json_resources":[
{
"id":1205743,
"path":"target/manifest.json",
"resource_query":"query BoltResourceUrl {\n boltResourceUrl(resourceId: 1205743) {\n ok\n url\n }\n}"
},
{
"id":1205761,
"path":"target/run_results.json",
"resource_query":"query BoltResourceUrl {\n boltResourceUrl(resourceId: 1205761) {\n ok\n url\n }\n}"
}
],
"return_code":1,
"start_dttm":"2023-10-15 16:44:29.586366",
"status":"failed"
}
],
"end_dttm":"2023-10-15 16:44:39.891890",
"environment":{
"actor":"Manual",
"branch":"main",
"commit_hash":"54a134583ef6dccbe154e30e1cd09a9d94b6bda0",
},
"error_string":null,
"id":63187,
"run_url":"https://app.demo.paradime.io/bolt/run_id/63187",
"schedule":{
"commands":[
"dbt seed",
"dbt run"
],
"deferred_schedule":null,
"email_notify":[
],
"email_on":[
"passed",
"failed"
],
"environment":"production",
"git_branch":null,
"hightouch":null,
"name":"daily_run",
"owner_email":"[email protected]",
"schedule":"@daily",
"slack_notify":[
"data-alerts"
],
"slack_on":[
"passed",
"failed"
],
"turbo_ci":null
},
"schedule_name":"daily_run",
"start_dttm":"2023-10-15 16:44:01.476190",
"status":"failed",
"uuid":"a7e76080-b371-369f-a93f-4a4969617ab6",
"workspace":{
"name":"demo-jaffle",
"uid":"n0sg8br1m44k0ryj"
}
}

An example of a webhook payload for a started run:

{
"api_url":"https://api.paradime.io/api/v1/abc/graphql",
"environment":{
"actor":"Scheduler",
"branch":null,
"commit_hash":null,
"email":null
},
"id":1234,
"run_url":"https://app.paradime.io/bolt/run_id/1234",
"schedule":{
"commands":[
"dbt seed",
"dbt run"
],
"deferred_schedule":null,
"email_notify":[
],
"email_on":[
"passed",
"failed"
],
"environment":"production",
"git_branch":null,
"hightouch":null,
"name":"daily_run",
"owner_email":"[email protected]",
"schedule":"@daily",
"slack_notify":[
"data-alerts"
],
"slack_on":[
"passed",
"failed"
],
"turbo_ci":null
},
"schedule_name":"daily_run",
"start_dttm":"2023-10-15 16:44:01.476190",
"status":"failed",
"uuid":"a7e76080-b371-369f-a93f-4a4969617ab6",
"workspace":{
"name":"demo-jaffle",
"uid":"n0sg8br1m44k0ryj"
}
}d