Create webhook
Creates a new webhook for the workspace. The response includes the signing secret which is used for HMAC-SHA256 verification of webhook payloads. Important: The secret is only shown once upon creation and cannot be retrieved again.
curl --request POST \
--url https://api.example.com/workspaces/{workspaceId}/webhooks \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>",
"displayName": "<string>",
"events": [
"document.created"
],
"url": "<string>",
"headers": {},
"status": "enabled"
}
'import requests
url = "https://api.example.com/workspaces/{workspaceId}/webhooks"
payload = {
"description": "<string>",
"displayName": "<string>",
"events": ["document.created"],
"url": "<string>",
"headers": {},
"status": "enabled"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
description: '<string>',
displayName: '<string>',
events: ['document.created'],
url: '<string>',
headers: {},
status: 'enabled'
})
};
fetch('https://api.example.com/workspaces/{workspaceId}/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/workspaces/{workspaceId}/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'description' => '<string>',
'displayName' => '<string>',
'events' => [
'document.created'
],
'url' => '<string>',
'headers' => [
],
'status' => 'enabled'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/workspaces/{workspaceId}/webhooks"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"displayName\": \"<string>\",\n \"events\": [\n \"document.created\"\n ],\n \"url\": \"<string>\",\n \"headers\": {},\n \"status\": \"enabled\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/workspaces/{workspaceId}/webhooks")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"displayName\": \"<string>\",\n \"events\": [\n \"document.created\"\n ],\n \"url\": \"<string>\",\n \"headers\": {},\n \"status\": \"enabled\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/workspaces/{workspaceId}/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"<string>\",\n \"displayName\": \"<string>\",\n \"events\": [\n \"document.created\"\n ],\n \"url\": \"<string>\",\n \"headers\": {},\n \"status\": \"enabled\"\n}"
response = http.request(request)
puts response.read_body{
"consecutiveFailures": 123,
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"username": "<string>",
"avatarUrl": "<string>",
"displayName": "<string>"
},
"description": "<string>",
"displayName": "<string>",
"events": [
"document.created"
],
"headers": {},
"id": "<string>",
"secret": "<string>",
"status": "enabled",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>",
"workspaceHandle": "<string>",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lastFailureAt": "2023-11-07T05:31:56Z",
"lastSuccessAt": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"name": "<string>"
}{
"message": "<string>",
"name": "<string>"
}{
"message": "<string>",
"name": "<string>"
}<string><string>Path Parameters
Workspace identifier.
Body
Request payload for creating a new workspace webhook.
Request payload for creating a new workspace webhook.
Detailed description of the webhook's purpose (max 500 characters).
500Human-readable name for the webhook (1-128 characters).
1 - 128List of event types this webhook should receive.
The types of events that can trigger webhook delivery.
Corresponds to the WEBHOOK_EVENT PostgreSQL enum and configures which
events a webhook receives.
"document.created"The URL to send webhook payloads to.
2048Optional custom headers to include in webhook requests.
Show child attributes
Show child attributes
Initial status of the webhook (enabled or disabled).
"enabled"Response
Webhook creation response that includes the secret (visible only once).
The secret is used for HMAC-SHA256 signature verification of webhook payloads. It is only returned when the webhook is first created and cannot be retrieved again. Store it securely.
Webhook creation response that includes the secret (visible only once).
The secret is used for HMAC-SHA256 signature verification of webhook payloads. It is only returned when the webhook is first created and cannot be retrieved again. Store it securely.
Consecutive failed deliveries since the last success.
Timestamp when this webhook was first created.
Account that created this webhook.
Show child attributes
Show child attributes
Detailed description of the webhook's purpose.
Human-readable name for the webhook.
List of event types this webhook receives.
The types of events that can trigger webhook delivery.
Corresponds to the WEBHOOK_EVENT PostgreSQL enum and configures which
events a webhook receives.
"document.created"Custom headers included in webhook requests.
Show child attributes
Show child attributes
Opaque identifier of the webhook.
^whk_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$HMAC-SHA256 signing secret for webhook verification.
Important: This is the only time the secret will be shown. Store it securely as it cannot be retrieved again.
Current status of the webhook.
"enabled"Timestamp when this webhook was last modified.
The URL to send webhook payloads to.
URL-safe workspace handle. Display-only.
3 - 32^[a-z0-9]+(?:-[a-z0-9]+)*$Unique identifier of the workspace.
Timestamp of the most recent failed delivery.
Timestamp of the most recent successful delivery.
curl --request POST \
--url https://api.example.com/workspaces/{workspaceId}/webhooks \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>",
"displayName": "<string>",
"events": [
"document.created"
],
"url": "<string>",
"headers": {},
"status": "enabled"
}
'import requests
url = "https://api.example.com/workspaces/{workspaceId}/webhooks"
payload = {
"description": "<string>",
"displayName": "<string>",
"events": ["document.created"],
"url": "<string>",
"headers": {},
"status": "enabled"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
description: '<string>',
displayName: '<string>',
events: ['document.created'],
url: '<string>',
headers: {},
status: 'enabled'
})
};
fetch('https://api.example.com/workspaces/{workspaceId}/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/workspaces/{workspaceId}/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'description' => '<string>',
'displayName' => '<string>',
'events' => [
'document.created'
],
'url' => '<string>',
'headers' => [
],
'status' => 'enabled'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/workspaces/{workspaceId}/webhooks"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"displayName\": \"<string>\",\n \"events\": [\n \"document.created\"\n ],\n \"url\": \"<string>\",\n \"headers\": {},\n \"status\": \"enabled\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/workspaces/{workspaceId}/webhooks")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"displayName\": \"<string>\",\n \"events\": [\n \"document.created\"\n ],\n \"url\": \"<string>\",\n \"headers\": {},\n \"status\": \"enabled\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/workspaces/{workspaceId}/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"<string>\",\n \"displayName\": \"<string>\",\n \"events\": [\n \"document.created\"\n ],\n \"url\": \"<string>\",\n \"headers\": {},\n \"status\": \"enabled\"\n}"
response = http.request(request)
puts response.read_body{
"consecutiveFailures": 123,
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"username": "<string>",
"avatarUrl": "<string>",
"displayName": "<string>"
},
"description": "<string>",
"displayName": "<string>",
"events": [
"document.created"
],
"headers": {},
"id": "<string>",
"secret": "<string>",
"status": "enabled",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>",
"workspaceHandle": "<string>",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lastFailureAt": "2023-11-07T05:31:56Z",
"lastSuccessAt": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"name": "<string>"
}{
"message": "<string>",
"name": "<string>"
}{
"message": "<string>",
"name": "<string>"
}<string><string>