> For the complete documentation index, see [llms.txt](https://docs.ospree.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ospree.io/developers/webhooks/openapi/webhook-management.md).

# Webhook Management

Configure webhook endpoints and their event subscriptions.

## GET /api/v2/webhooks

> List Webhooks

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Management","description":"Configure webhook endpoints and their event subscriptions."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_List_WebhookConfigurationView__":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/WebhookConfigurationView"},"type":"array"},{"type":"null"}],"title":"Data"}},"type":"object","title":"ApiSuccessResponse[List[WebhookConfigurationView]]"},"WebhookConfigurationView":{"properties":{"webhook_url":{"type":"string","title":"Webhook Url"},"event_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Event Names"},"ip_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ip Allowlist"},"id":{"type":"string","format":"uuid","title":"Id"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"event_type":{"type":"string","title":"Event Type"},"modified_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modified By"},"last_modified":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Modified"},"webhook_desc":{"type":"string","title":"Webhook Desc"}},"type":"object","required":["webhook_url","id","business_id","event_type","webhook_desc"],"title":"WebhookConfigurationView"},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks":{"get":{"tags":["Webhook Management"],"summary":"List Webhooks","operationId":"list_webhooks_api_v2_webhooks_get","responses":{"200":{"description":"Every live endpoint this business holds, across all event families.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_List_WebhookConfigurationView__"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Configure Webhook

> Upsert this business's webhook endpoint for one event family.\
> \
> An upsert with no id, and deliberately not a create: it updates the family's\
> endpoint, or creates one when the family has none. A family may hold several\
> endpoints, up to a maximum of 5, but this call never adds the second one — it\
> answers 409 rather than overwriting an arbitrary one of them.

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Management","description":"Configure webhook endpoints and their event subscriptions."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ConfigureWebhookRequest":{"properties":{"webhook_url":{"type":"string","title":"Webhook Url"},"event_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Event Names"},"ip_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ip Allowlist"},"event_type":{"type":"integer","title":"Event Type"}},"type":"object","required":["webhook_url","event_type"],"title":"ConfigureWebhookRequest","description":"Configure this business's webhook endpoint for one event family. The call is an upsert and carries no endpoint id: it updates the endpoint the family already has, and creates one when it has none. A business may hold up to 5 endpoints per event family, but this route never creates a second one — when the family already holds more than one endpoint it answers 409 rather than guessing which to overwrite. Use GET /webhooks to list them and DELETE /webhooks/{id} to address one by id."},"ApiSuccessResponse_WebhookConfiguration_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/WebhookConfiguration"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[WebhookConfiguration]"},"WebhookConfiguration":{"properties":{"webhook_url":{"type":"string","title":"Webhook Url"},"event_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Event Names"},"ip_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ip Allowlist"},"id":{"type":"string","format":"uuid","title":"Id"},"event_type":{"type":"integer","title":"Event Type"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"created_by":{"type":"string","format":"uuid","title":"Created By"},"created":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created"},"modified_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Modified By"},"last_modified":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Modified"},"webhook_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Secret"}},"type":"object","required":["webhook_url","id","event_type","business_id","created_by"],"title":"WebhookConfiguration","description":"What the upsert hands back — with the signing secret only when it minted one.\n\nThe plaintext secret is returned by exactly the call that minted it and by no\nother (ADR-0034 §2, issue #735): a first create, or the re-mint of a config\nthat had none. An ordinary update carries no secret material at all, and\n\"no secret material\" is the *absence* of the field rather than a null: a\n``webhook_secret: null`` in the body reads as \"this config has no secret\",\nwhich is false and would send an integration looking for the bug in the wrong\nplace."},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks":{"post":{"tags":["Webhook Management"],"summary":"Configure Webhook","description":"Upsert this business's webhook endpoint for one event family.\n\nAn upsert with no id, and deliberately not a create: it updates the family's\nendpoint, or creates one when the family has none. A family may hold several\nendpoints, up to a maximum of 5, but this call never adds the second one — it\nanswers 409 rather than overwriting an arbitrary one of them.","operationId":"configure_webhook_api_v2_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureWebhookRequest"}}},"required":true},"responses":{"201":{"description":"The endpoint was created or updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_WebhookConfiguration_"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"409":{"description":"The event family holds more than one endpoint, so there is no single endpoint to update; or it already holds the maximum of 5","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity - Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Rotate Webhook Secret

> Mint a replacement signing secret and hold it pending — phase one of two.\
> \
> The response is the only time this secret is ever disclosed. Ospree keeps\
> signing deliveries with the current secret until the activate call below, so\
> nothing breaks while the new value is deployed to the tenant's verifier.

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Management","description":"Configure webhook endpoints and their event subscriptions."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_WebhookSecretRotation_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/WebhookSecretRotation"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[WebhookSecretRotation]"},"WebhookSecretRotation":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"webhook_secret":{"type":"string","title":"Webhook Secret"},"expires":{"type":"string","format":"date-time","title":"Expires"}},"type":"object","required":["id","webhook_secret","expires"],"title":"WebhookSecretRotation","description":"The rotate response — the one and only disclosure of the new secret.\n\nIts own model rather than a reuse of :class:`WebhookConfiguration`, because\nthe two say different things: a configuration *may* carry a secret, a rotation\nalways does. Storing it is the caller's only chance; the value is never\nreturned again by any route, including a repeat of the rotate call (which\nmints a further replacement instead).\n\nThe secret is **pending**, not active: Ospree keeps signing with the current\nsecret until the tenant calls activate, so the two never race. ``expires`` is\nwhen the pending secret stops being promotable."},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks/{id}/secret/rotate":{"post":{"tags":["Webhook Management"],"summary":"Rotate Webhook Secret","description":"Mint a replacement signing secret and hold it pending — phase one of two.\n\nThe response is the only time this secret is ever disclosed. Ospree keeps\nsigning deliveries with the current secret until the activate call below, so\nnothing breaks while the new value is deployed to the tenant's verifier.","operationId":"rotate_webhook_secret_api_v2_webhooks__id__secret_rotate_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"A replacement secret was minted and is pending activation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_WebhookSecretRotation_"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Activate Webhook Secret

> Promote the pending signing secret to active — phase two, the cutover.\
> \
> Carries no secret material: the pending value was disclosed by the rotate that\
> minted it and by nothing else.

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Management","description":"Configure webhook endpoints and their event subscriptions."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_WebhookConfiguration_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/WebhookConfiguration"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[WebhookConfiguration]"},"WebhookConfiguration":{"properties":{"webhook_url":{"type":"string","title":"Webhook Url"},"event_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Event Names"},"ip_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ip Allowlist"},"id":{"type":"string","format":"uuid","title":"Id"},"event_type":{"type":"integer","title":"Event Type"},"business_id":{"type":"string","format":"uuid","title":"Business Id"},"created_by":{"type":"string","format":"uuid","title":"Created By"},"created":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created"},"modified_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Modified By"},"last_modified":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Modified"},"webhook_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Secret"}},"type":"object","required":["webhook_url","id","event_type","business_id","created_by"],"title":"WebhookConfiguration","description":"What the upsert hands back — with the signing secret only when it minted one.\n\nThe plaintext secret is returned by exactly the call that minted it and by no\nother (ADR-0034 §2, issue #735): a first create, or the re-mint of a config\nthat had none. An ordinary update carries no secret material at all, and\n\"no secret material\" is the *absence* of the field rather than a null: a\n``webhook_secret: null`` in the body reads as \"this config has no secret\",\nwhich is false and would send an integration looking for the bug in the wrong\nplace."},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks/{id}/secret/activate":{"post":{"tags":["Webhook Management"],"summary":"Activate Webhook Secret","description":"Promote the pending signing secret to active — phase two, the cutover.\n\nCarries no secret material: the pending value was disclosed by the rotate that\nminted it and by nothing else.","operationId":"activate_webhook_secret_api_v2_webhooks__id__secret_activate_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"The pending secret is now the active signing secret.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_WebhookConfiguration_"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"404":{"description":"No endpoint with this id, or it has no pending secret","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## GET /api/v2/webhooks/event\_types

> List Webhook Event Types

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Management","description":"Configure webhook endpoints and their event subscriptions."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_List_WebhookEventTypeResponse__":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/WebhookEventTypeResponse"},"type":"array"},{"type":"null"}],"title":"Data"}},"type":"object","title":"ApiSuccessResponse[List[WebhookEventTypeResponse]]"},"WebhookEventTypeResponse":{"properties":{"event_type_name":{"type":"string","title":"Event Type Name"},"event_type_id":{"type":"string","title":"Event Type Id"}},"type":"object","required":["event_type_name","event_type_id"],"title":"WebhookEventTypeResponse"},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks/event_types":{"get":{"tags":["Webhook Management"],"summary":"List Webhook Event Types","operationId":"list_webhook_event_types_api_v2_webhooks_event_types_get","responses":{"200":{"description":"The event families a webhook can be registered for.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_List_WebhookEventTypeResponse__"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## DELETE /api/v2/webhooks/{id}

> Delete Webhook

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Management","description":"Configure webhook endpoints and their event subscriptions."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_bool_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Data"}},"type":"object","title":"ApiSuccessResponse[bool]"},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks/{id}":{"delete":{"tags":["Webhook Management"],"summary":"Delete Webhook","operationId":"delete_webhook_api_v2_webhooks__id__delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"The endpoint was deleted. `data` is the outcome flag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_bool_"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```
