Proteside Docs
Endpoint referenceWebhooks

Create a webhook

POST
/webhooks

Creates a notification channel of type webhook (format json), slack or teams. When secret is omitted one is generated; it is returned once in this response. Deliveries are signed with X-Proteside-Signature: t=<unix>,v1=<hex hmac_sha256(secret, t + "." + rawBody)> and retried 3 times (1 min, 10 min, 60 min).

Authorization

bearerAuth
headerAuthorizationBearer <token>

API token created in Settings → API. Scopes are attached to the token; each operation lists its required scope in x-scope.

Query Parameters

org_id?string

Partners only (orgs:manage): act on this child organization. May also be sent as org_id in JSON bodies.

Formatuuid

Header Parameters

Idempotency-Key?string

Replays the original response for 24 h

Length1 <= length <= 255

Request Body

application/json
  1. body
url*string

https only

Formaturi
secret?string

Omit to have one generated

Length16 <= length <= 256
format?string
Default"json"
Value in"json""slack""teams"
name?string
Lengthlength <= 120
store_id?string
Formatuuid
events?array<>|null
min_severity?string
Default"high"
Value in"critical""high""medium""low""info"
active?boolean
Defaulttrue

Response Body

Webhook with one-time secret

application/json
  1. response
id?string
Formatuuid
org_id?string
Formatuuid
store_id?|

null = organization-wide

Formatuuid
type?string
Value in"webhook""slack""teams"
name?string
url?|
Formaturi
format?string
Value in"json""slack""teams"
has_secret?boolean
events?array<>|

null = all events

min_severity?string
Value in"critical""high""medium""low""info"
active?boolean
last_used_at?|
Formatdate-time
created_at?string
Formatdate-time
updated_at?string
Formatdate-time
secret?string

Shown once

secret_generated?boolean
curl -X POST "https://example.com/webhooks" \  -H "Content-Type: application/json" \  -d '{    "url": "https://ops.partner.example/hooks/proteside",    "format": "json",    "events": [      "alert.created",      "alert.resolved",      "report.ready"    ],    "min_severity": "high"  }'
{  "id": "a9b8c7d6-0000-4111-8222-333344445555",  "org_id": "7f3c1e2a-0b4d-4c8e-9f10-2a3b4c5d6e7f",  "store_id": null,  "type": "webhook",  "name": "Webhook · ops.partner.example",  "url": "https://ops.partner.example/hooks/proteside",  "format": "json",  "has_secret": true,  "events": [    "alert.created",    "alert.resolved",    "report.ready"  ],  "min_severity": "high",  "active": true,  "last_used_at": null,  "created_at": "2026-09-27T10:20:00.000Z",  "updated_at": "2026-09-27T10:20:00.000Z",  "secret": "whsec_0f1e2d3c4b5a69788796a5b4c3d2e1f00f1e2d3c4b5a6978",  "secret_generated": true}