Skip to content

Create a webhook or Slack target

POST
/organizations/{org_id}/webhooks
curl --request POST \
--url https://api.perstat.io/organizations/example/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "credential": "example", "events": [ "example" ], "kind": "example", "name": "example", "region": "example", "url": "example" }'

Creates an outbound notification target of kind webhook (generic, HMAC-signed) or slack (incoming webhook URL). Subscribed events default to all supported event types; the URL and event names are validated. For generic webhooks the signing secret is generated server-side and returned only in this response; afterwards it is available only masked or via rotation. Requires project management rights. For API-key callers, stored destination URLs are reduced to the origin with a redacted path; credential hints and delivery errors are returned as null. Accepts API keys with the webhooks:write scope, subject to current role and resource grants.

org_id
required
string
Media typeapplication/json
object
credential

Schlüssel des Anbieters: Integrationsschlüssel (PagerDuty) bzw. API-Schlüssel (Opsgenie). Pflicht für genau diese beiden Arten.

string | null
events

Default: alle Ereignisse.

Array<string> | null
kind

Benannte Art aus dem Katalog. Weggelassen = webhook (Bestandsverhalten der ersten Fassung, als es nur Webhook und Slack gab).

string | null
name
required
string
region

Anbieter-Region für pagerduty/opsgenie: global (Default) | eu.

string | null
url

Anbieter-URL. Pflicht für slack, teams, discord, google_chat, webhook; bei pagerduty/opsgenie ignoriert (der Server leitet den Endpunkt aus Art und Region ab).

string | null
Examplegenerated
{
"credential": "example",
"events": [
"example"
],
"kind": "example",
"name": "example",
"region": "example",
"url": "example"
}

Request succeeded. The response body contains the result.

Media typeapplication/json
object
secret

Volles Signatur-Secret, NUR in dieser Antwort und NUR bei webhook. Anbieter-Schlüssel erscheinen hier nicht: die kennt der Kunde bereits.

string | null
target
required
object
active
required
boolean
created_at_unix
required
integer format: int64
events
required
Array<string>
id
required

Public_id (wht_…).

string
kind
required

Benannte Art: slack | teams | discord | google_chat | pagerduty | opsgenie | webhook.

string
last_delivery_at_unix
integer | null format: int64
last_delivery_ok
boolean | null
last_error
string | null
name
required
string
region

Anbieter-Region bei pagerduty/opsgenie (global | eu), sonst null. Wird aus dem gespeicherten Endpunkt zurückgewonnen.

string | null
secret_hint

Maskierter Hinweis auf das gespeicherte Geheimnis (Signatur-Secret beim generischen Webhook, Anbieter-Schlüssel bei PagerDuty/Opsgenie). Das volle Signatur-Secret gibt es genau EINMAL beim Anlegen bzw. der Rotation; einen Anbieter-Schlüssel gibt die API NIE zurück.

string | null
url
required
string
Examplegenerated
{
"secret": "example",
"target": {
"active": true,
"created_at_unix": 1,
"events": [
"example"
],
"id": "example",
"kind": "example",
"last_delivery_at_unix": 1,
"last_delivery_ok": true,
"last_error": "example",
"name": "example",
"region": "example",
"secret_hint": "example",
"url": "example"
}
}

The request is invalid. Check the supplied fields and values.

Authentication is missing or invalid.

The authenticated caller does not have permission to perform this operation.

No accessible resource matches the supplied identifier.