curl --request POST \
--url https://api.diversion.dev/v0/repos/{repo_id}/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My CI/CD Webhook",
"endpoint_url": "https://api.example.com/webhooks/diversion",
"events": {
"commit_created": false,
"merge_created": false,
"review_created": false,
"review_merged": false
},
"description": "<string>",
"secret": "<string>",
"active": true,
"branches": [
"<string>"
]
}
'import requests
url = "https://api.diversion.dev/v0/repos/{repo_id}/webhooks"
payload = {
"name": "My CI/CD Webhook",
"endpoint_url": "https://api.example.com/webhooks/diversion",
"events": {
"commit_created": False,
"merge_created": False,
"review_created": False,
"review_merged": False
},
"description": "<string>",
"secret": "<string>",
"active": True,
"branches": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My CI/CD Webhook',
endpoint_url: 'https://api.example.com/webhooks/diversion',
events: {
commit_created: false,
merge_created: false,
review_created: false,
review_merged: false
},
description: '<string>',
secret: '<string>',
active: true,
branches: ['<string>']
})
};
fetch('https://api.diversion.dev/v0/repos/{repo_id}/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.diversion.dev/v0/repos/{repo_id}/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([
'name' => 'My CI/CD Webhook',
'endpoint_url' => 'https://api.example.com/webhooks/diversion',
'events' => [
'commit_created' => false,
'merge_created' => false,
'review_created' => false,
'review_merged' => false
],
'description' => '<string>',
'secret' => '<string>',
'active' => true,
'branches' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.diversion.dev/v0/repos/{repo_id}/webhooks"
payload := strings.NewReader("{\n \"name\": \"My CI/CD Webhook\",\n \"endpoint_url\": \"https://api.example.com/webhooks/diversion\",\n \"events\": {\n \"commit_created\": false,\n \"merge_created\": false,\n \"review_created\": false,\n \"review_merged\": false\n },\n \"description\": \"<string>\",\n \"secret\": \"<string>\",\n \"active\": true,\n \"branches\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.diversion.dev/v0/repos/{repo_id}/webhooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My CI/CD Webhook\",\n \"endpoint_url\": \"https://api.example.com/webhooks/diversion\",\n \"events\": {\n \"commit_created\": false,\n \"merge_created\": false,\n \"review_created\": false,\n \"review_merged\": false\n },\n \"description\": \"<string>\",\n \"secret\": \"<string>\",\n \"active\": true,\n \"branches\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.diversion.dev/v0/repos/{repo_id}/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My CI/CD Webhook\",\n \"endpoint_url\": \"https://api.example.com/webhooks/diversion\",\n \"events\": {\n \"commit_created\": false,\n \"merge_created\": false,\n \"review_created\": false,\n \"review_merged\": false\n },\n \"description\": \"<string>\",\n \"secret\": \"<string>\",\n \"active\": true,\n \"branches\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "dv.webhook.12345678-1234-1234-1234-123456789abc",
"name": "My CI/CD Webhook",
"endpoint_url": "https://api.example.com/webhooks/diversion",
"events": {
"commit_created": false,
"merge_created": false,
"review_created": false,
"review_merged": false
},
"active": true,
"created_unix": 1672531200,
"updated_unix": 1672531200,
"description": "<string>",
"secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw",
"branches": [
"main",
"develop"
]
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}Create a new webhook
Create a new webhook configuration for the repository
curl --request POST \
--url https://api.diversion.dev/v0/repos/{repo_id}/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My CI/CD Webhook",
"endpoint_url": "https://api.example.com/webhooks/diversion",
"events": {
"commit_created": false,
"merge_created": false,
"review_created": false,
"review_merged": false
},
"description": "<string>",
"secret": "<string>",
"active": true,
"branches": [
"<string>"
]
}
'import requests
url = "https://api.diversion.dev/v0/repos/{repo_id}/webhooks"
payload = {
"name": "My CI/CD Webhook",
"endpoint_url": "https://api.example.com/webhooks/diversion",
"events": {
"commit_created": False,
"merge_created": False,
"review_created": False,
"review_merged": False
},
"description": "<string>",
"secret": "<string>",
"active": True,
"branches": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My CI/CD Webhook',
endpoint_url: 'https://api.example.com/webhooks/diversion',
events: {
commit_created: false,
merge_created: false,
review_created: false,
review_merged: false
},
description: '<string>',
secret: '<string>',
active: true,
branches: ['<string>']
})
};
fetch('https://api.diversion.dev/v0/repos/{repo_id}/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.diversion.dev/v0/repos/{repo_id}/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([
'name' => 'My CI/CD Webhook',
'endpoint_url' => 'https://api.example.com/webhooks/diversion',
'events' => [
'commit_created' => false,
'merge_created' => false,
'review_created' => false,
'review_merged' => false
],
'description' => '<string>',
'secret' => '<string>',
'active' => true,
'branches' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.diversion.dev/v0/repos/{repo_id}/webhooks"
payload := strings.NewReader("{\n \"name\": \"My CI/CD Webhook\",\n \"endpoint_url\": \"https://api.example.com/webhooks/diversion\",\n \"events\": {\n \"commit_created\": false,\n \"merge_created\": false,\n \"review_created\": false,\n \"review_merged\": false\n },\n \"description\": \"<string>\",\n \"secret\": \"<string>\",\n \"active\": true,\n \"branches\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.diversion.dev/v0/repos/{repo_id}/webhooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My CI/CD Webhook\",\n \"endpoint_url\": \"https://api.example.com/webhooks/diversion\",\n \"events\": {\n \"commit_created\": false,\n \"merge_created\": false,\n \"review_created\": false,\n \"review_merged\": false\n },\n \"description\": \"<string>\",\n \"secret\": \"<string>\",\n \"active\": true,\n \"branches\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.diversion.dev/v0/repos/{repo_id}/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My CI/CD Webhook\",\n \"endpoint_url\": \"https://api.example.com/webhooks/diversion\",\n \"events\": {\n \"commit_created\": false,\n \"merge_created\": false,\n \"review_created\": false,\n \"review_merged\": false\n },\n \"description\": \"<string>\",\n \"secret\": \"<string>\",\n \"active\": true,\n \"branches\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "dv.webhook.12345678-1234-1234-1234-123456789abc",
"name": "My CI/CD Webhook",
"endpoint_url": "https://api.example.com/webhooks/diversion",
"events": {
"commit_created": false,
"merge_created": false,
"review_created": false,
"review_merged": false
},
"active": true,
"created_unix": 1672531200,
"updated_unix": 1672531200,
"description": "<string>",
"secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw",
"branches": [
"main",
"develop"
]
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}{
"status": 123,
"detail": "<string>",
"title": "<string>",
"type": "<string>"
}Authorizations
This API uses OAuth 2 with the implicit grant flow
Path Parameters
The repo ID of the repository. Repo name can be used instead of the ID, but usage of ID for permanent linking and API requests is preferred.
3 - 128"example_id"
Body
Request to create a new webhook
User-friendly name for the webhook
1 - 255"My CI/CD Webhook"
The URL where webhook events will be sent
2048"https://api.example.com/webhooks/diversion"
Specifies which repository events will trigger HTTP POST requests to the webhook endpoint
Show child attributes
Show child attributes
Optional description of the webhook
1024Optional secret key used to generate HMAC signatures for webhook payload verification
256Whether the webhook should be active
Optional list of branch names to filter events for. If empty or not provided, events fire for all branches.
Response
Webhook created successfully
A webhook configuration for a repository
Unique identifier for the webhook
"dv.webhook.12345678-1234-1234-1234-123456789abc"
User-friendly name for the webhook
1 - 255"My CI/CD Webhook"
The URL where webhook events will be sent
2048"https://api.example.com/webhooks/diversion"
Specifies which repository events will trigger HTTP POST requests to the webhook endpoint
Show child attributes
Show child attributes
Whether the webhook is active or not
Unix timestamp when the webhook was created
1672531200
Unix timestamp when the webhook was last updated
1672531200
Optional description of the webhook
1024The webhook secret for verifying signatures (only returned on creation)
"whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw"
Optional list of branch names to filter events for. If empty or not provided, events fire for all branches.
["main", "develop"]

