StabisoDocs

API reference

Webhooks

Other systems told of events (deal won, invoice posted, payment received ...): the endpoints, signed messages (Standard Webhooks), retries and the delivery log.

Operation Summary Scope Idempotency-Key
POST /v1/webhook-deliveries/{delivery_id}/send-again Send a delivery again admin
GET /v1/webhooks List webhooks admin
POST /v1/webhooks Add a webhook admin
GET /v1/webhooks/event-types List the events webhooks send read
GET /v1/webhooks/{endpoint_id} Get a webhook admin
PATCH /v1/webhooks/{endpoint_id} Change a webhook admin
DELETE /v1/webhooks/{endpoint_id} Delete a webhook admin
GET /v1/webhooks/{endpoint_id}/deliveries List a webhook's deliveries admin
POST /v1/webhooks/{endpoint_id}/rotate-secret Give a webhook a new secret admin
POST /v1/webhooks/{endpoint_id}/test Send a test event admin

POST /v1/webhook-deliveries/{delivery_id}/send-again

Send a delivery again

Send a delivery (failed, delivered or waiting) again now, with the full round of retries; the receiver sees the same event id. 409 webhook_endpoint_disabled while its endpoint is stopped. Audited.

Required scope admin (admin implies every scope)
Idempotency-Key not used
Operation id send_delivery_again_v1_webhook_deliveries__delivery_id__send_again_post

Parameters

In Name Type Required Description
path delivery_id string (uuid) yes The delivery's id (from the delivery log).

Example request

curl -X POST "$ERP_URL/v1/webhook-deliveries/{delivery_id}/send-again" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK DeliveryOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "endpoint_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "event_type": "string",
  "status": "failed",
  "attempts": 1,
  "next_attempt_at": "2026-09-21T09:30:00Z",
  "last_attempt_at": "2026-09-21T09:30:00Z",
  "response_status": 1,
  "last_error": "string",
  "created_at": "2026-09-21T09:30:00Z",
  "delivered_at": "2026-09-21T09:30:00Z",
  "log": [
    {
      "at": "2026-09-21T09:30:00Z",
      "status": 1,
      "error": "string",
      "ms": 1
    }
  ],
  "payload": {}
}

GET /v1/webhooks

List webhooks

The organization's webhook endpoints, the oldest first, with how many deliveries wait. Never the secret.

Required scope admin (admin implies every scope)
Operation id list_webhooks_v1_webhooks_get

Example request

curl "$ERP_URL/v1/webhooks" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK array of EndpointOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "url": "string",
    "description": "string",
    "event_types": [
      "string"
    ],
    "status": "active",
    "disabled_reason": "by_person",
    "failures_in_row": 1,
    "last_success_at": "2026-09-21T09:30:00Z",
    "last_failure_at": "2026-09-21T09:30:00Z",
    "waiting": 1,
    "created_by": {},
    "created_at": "2026-09-21T09:30:00Z",
    "secret": "string"
  }
]

POST /v1/webhooks

Add a webhook

Tell another system of events: from now on each event it subscribed to is sent to url (a POST of JSON), signed with the secret in this answer (secret, shown only here: keep it in the receiving system). Any 2xx answer within 10 seconds delivers it; anything else is tried again after 1, 5 and 30 minutes, then 2, 5, 10 and 24 hours, and then waits in the log to be sent again. A receiver may get an event twice (same id) and in any order. Needs the admin scope and a person (403 webhook_person_only for an agent); 422 webhook_url_refused for a URL that is not https:// or not a public address; 409 webhook_limit beyond 20 endpoints. Audited without the secret.

Required scope admin (admin implies every scope)
Idempotency-Key not used
Operation id create_webhook_v1_webhooks_post

Request body

application/json (required): EndpointInput

Field Type Required Description
url string yes Where events are sent (https://; a public address, never a private, loopback or link-local one). (min length 9; max length 500)
description string or null What the receiving system is, for people. (max length 200)
event_types array of "bill.posted" | "case.closed" | "case.created" | "credit_note.posted" | "deal.created" | "deal.lost" | "deal.won" | "invoice.posted" | "lead.converted" | "lead.created" | "payment.received" | "payment.sent" | "quote.accepted" | "quote.declined" | "subscription.activated" | "subscription.cancelled" | "task.completed" | "task.created" | "vendor_credit.posted" | "*" yes The events to send; * for every event, also those added later. (min items 1)

Example request

curl -X POST "$ERP_URL/v1/webhooks" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "Order system",
  "event_types": [
    "invoice.posted",
    "payment.received"
  ],
  "url": "https://hooks.example.com/stabiso"
}'

Responses

Status Meaning Body
201 Created EndpointOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "url": "string",
  "description": "string",
  "event_types": [
    "string"
  ],
  "status": "active",
  "disabled_reason": "by_person",
  "failures_in_row": 1,
  "last_success_at": "2026-09-21T09:30:00Z",
  "last_failure_at": "2026-09-21T09:30:00Z",
  "waiting": 1,
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z",
  "secret": "string"
}

GET /v1/webhooks/event-types

List the events webhooks send

Every event an endpoint can subscribe to. Each message is a JSON object: id (the event's id, also the webhook-id header), type, timestamp, organization, entity (the company's code), test_copy and data (the record's identifiers and figures; amounts as strings). It is signed as Standard Webhooks specifies (webhook-id, webhook-timestamp, webhook-signature: v1, and the base64 HMAC-SHA256 of id.timestamp.body with the bytes of the secret after whsec_).

Required scope read (admin implies every scope)
Operation id list_event_types_v1_webhooks_event_types_get

Example request

curl "$ERP_URL/v1/webhooks/event-types" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK array of EventTypeOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope

Example response (shape)

[
  {
    "type": "string",
    "description": "string"
  }
]

GET /v1/webhooks/{endpoint_id}

Get a webhook

One endpoint, as the list shows it: its events, state, failures in a row and how many deliveries wait. Never the secret.

Required scope admin (admin implies every scope)
Operation id get_webhook_v1_webhooks__endpoint_id__get

Parameters

In Name Type Required Description
path endpoint_id string (uuid) yes The endpoint's id (GET /v1/webhooks).

Example request

curl "$ERP_URL/v1/webhooks/{endpoint_id}" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK EndpointOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "url": "string",
  "description": "string",
  "event_types": [
    "string"
  ],
  "status": "active",
  "disabled_reason": "by_person",
  "failures_in_row": 1,
  "last_success_at": "2026-09-21T09:30:00Z",
  "last_failure_at": "2026-09-21T09:30:00Z",
  "waiting": 1,
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z",
  "secret": "string"
}

PATCH /v1/webhooks/{endpoint_id}

Change a webhook

Change the URL, description or events, or stop (disabled) and start (active) it. Started again, what waited goes out at once. Audited.

Required scope admin (admin implies every scope)
Idempotency-Key not used
Operation id update_webhook_v1_webhooks__endpoint_id__patch

Parameters

In Name Type Required Description
path endpoint_id string (uuid) yes The endpoint's id (GET /v1/webhooks).

Request body

application/json (required): EndpointUpdate

Field Type Required Description
url string or null A new address (as on create). (min length 9; max length 500)
description string or null A new description. (max length 200)
event_types array of "bill.posted" | "case.closed" | "case.created" | "credit_note.posted" | "deal.created" | "deal.lost" | "deal.won" | "invoice.posted" | "lead.converted" | "lead.created" | "payment.received" | "payment.sent" | "quote.accepted" | "quote.declined" | "subscription.activated" | "subscription.cancelled" | "task.completed" | "task.created" | "vendor_credit.posted" | "*" or null The new list of events; * for every event. (min items 1)
status "active" | "disabled" or null disabled stops sending (what waits is kept); active starts again and sends what waited.

Example request

curl -X PATCH "$ERP_URL/v1/webhooks/{endpoint_id}" \
  -H "Authorization: Bearer $ERP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "disabled"
}'

Responses

Status Meaning Body
200 OK EndpointOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "url": "string",
  "description": "string",
  "event_types": [
    "string"
  ],
  "status": "active",
  "disabled_reason": "by_person",
  "failures_in_row": 1,
  "last_success_at": "2026-09-21T09:30:00Z",
  "last_failure_at": "2026-09-21T09:30:00Z",
  "waiting": 1,
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z",
  "secret": "string"
}

DELETE /v1/webhooks/{endpoint_id}

Delete a webhook

Delete the endpoint with its delivery log; what waited is not sent. Audited.

Required scope admin (admin implies every scope)
Idempotency-Key not used
Operation id delete_webhook_v1_webhooks__endpoint_id__delete

Parameters

In Name Type Required Description
path endpoint_id string (uuid) yes The endpoint's id (GET /v1/webhooks).

Example request

curl -X DELETE "$ERP_URL/v1/webhooks/{endpoint_id}" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
204 No content
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

GET /v1/webhooks/{endpoint_id}/deliveries

List a webhook's deliveries

The delivery log: each event sent to the endpoint, the newest first, with its state, every attempt (when, the HTTP status or the error, how long) and the message.

Required scope admin (admin implies every scope)
Operation id list_deliveries_v1_webhooks__endpoint_id__deliveries_get

Parameters

In Name Type Required Description
path endpoint_id string (uuid) yes The endpoint's id (GET /v1/webhooks).
query status "failed" | "pending" | "succeeded" or null Only those in this state.
query limit integer Most returned, the newest first. (min 1; max 200; default 50)

Example request

curl "$ERP_URL/v1/webhooks/{endpoint_id}/deliveries" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK array of DeliveryOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "endpoint_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "event_type": "string",
    "status": "failed",
    "attempts": 1,
    "next_attempt_at": "2026-09-21T09:30:00Z",
    "last_attempt_at": "2026-09-21T09:30:00Z",
    "response_status": 1,
    "last_error": "string",
    "created_at": "2026-09-21T09:30:00Z",
    "delivered_at": "2026-09-21T09:30:00Z",
    "log": [
      {
        "at": "2026-09-21T09:30:00Z",
        "status": null,
        "error": null,
        "ms": 1
      }
    ],
    "payload": {}
  }
]

POST /v1/webhooks/{endpoint_id}/rotate-secret

Give a webhook a new secret

A new signing secret (in this answer only); every attempt from now on is signed with it, the old one no longer. Audited.

Required scope admin (admin implies every scope)
Idempotency-Key not used
Operation id rotate_webhook_secret_v1_webhooks__endpoint_id__rotate_secret_post

Parameters

In Name Type Required Description
path endpoint_id string (uuid) yes The endpoint's id (GET /v1/webhooks).

Example request

curl -X POST "$ERP_URL/v1/webhooks/{endpoint_id}/rotate-secret" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK EndpointOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "url": "string",
  "description": "string",
  "event_types": [
    "string"
  ],
  "status": "active",
  "disabled_reason": "by_person",
  "failures_in_row": 1,
  "last_success_at": "2026-09-21T09:30:00Z",
  "last_failure_at": "2026-09-21T09:30:00Z",
  "waiting": 1,
  "created_by": {},
  "created_at": "2026-09-21T09:30:00Z",
  "secret": "string"
}

POST /v1/webhooks/{endpoint_id}/test

Send a test event

Send a webhook.test event now and return what the endpoint answered (one attempt, kept in the log; never tried again). Also to a stopped endpoint, to check it before starting it.

Required scope admin (admin implies every scope)
Idempotency-Key not used
Operation id test_webhook_v1_webhooks__endpoint_id__test_post

Parameters

In Name Type Required Description
path endpoint_id string (uuid) yes The endpoint's id (GET /v1/webhooks).

Example request

curl -X POST "$ERP_URL/v1/webhooks/{endpoint_id}/test" \
  -H "Authorization: Bearer $ERP_KEY"

Responses

Status Meaning Body
200 OK DeliveryOut
401 Missing or invalid API key (unauthorized). ErrorEnvelope
403 The caller lacks the required scope (missing_right, with scope), the key belongs to no person where a person is needed (forbidden), or the approval policy denies the action (policy_denied, with action and rule_id). ErrorEnvelope
404 The resource does not exist, or belongs to another organization (not_found). ErrorEnvelope
409 The request conflicts with the data: an Idempotency-Key reused with a different request, a closed period, or an integrity rule of the database (conflict, integrity_violation). ErrorEnvelope
422 Validation failed: the error envelope (validation_failed). For a malformed body or parameter its message is in sentences ("Line 2: the quantity must be above zero") and fields lists each error with pydantic's loc, type and msg beside its sentence (message) and its parts, to word it in another language: items (name and number from 1: line 2), field (its name as sent) and the rule it breaks with its limit, count and choices (none for a validator's own sentence); FastAPI's own detail list stays beside the envelope. HTTPValidationError

Example response (shape)

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "endpoint_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "event_type": "string",
  "status": "failed",
  "attempts": 1,
  "next_attempt_at": "2026-09-21T09:30:00Z",
  "last_attempt_at": "2026-09-21T09:30:00Z",
  "response_status": 1,
  "last_error": "string",
  "created_at": "2026-09-21T09:30:00Z",
  "delivered_at": "2026-09-21T09:30:00Z",
  "log": [
    {
      "at": "2026-09-21T09:30:00Z",
      "status": 1,
      "error": "string",
      "ms": 1
    }
  ],
  "payload": {}
}

Schemas

AttemptOut

Field Type Required Description
at string (date-time) yes When the attempt was made.
status integer or null yes The HTTP status the endpoint answered.
error string or null yes Why it failed, when it did not answer 2xx.
ms integer yes How long it took, in milliseconds.

DeliveryOut

Field Type Required Description
id string (uuid) yes The delivery's id (send-again takes it).
endpoint_id string (uuid) yes The endpoint it goes to.
event_id string (uuid) yes The event's id: webhook-id of every attempt.
event_type string yes The event, e.g. invoice.posted.
status "failed" | "pending" | "succeeded" yes pending (to go out or to try again), succeeded (delivered), failed (every attempt failed; send it again).
attempts integer yes Attempts made so far.
next_attempt_at string (date-time) or null yes When it is tried next; null if not.
last_attempt_at string (date-time) or null yes When it was last tried.
response_status integer or null yes The HTTP status of the last attempt.
last_error string or null yes Why the last attempt failed.
created_at string (date-time) yes When the event happened.
delivered_at string (date-time) or null yes When it was delivered.
log array of AttemptOut yes The attempts, the latest last (at most 20).
payload object yes The message body sent.

EndpointInput

Field Type Required Description
url string yes Where events are sent (https://; a public address, never a private, loopback or link-local one). (min length 9; max length 500)
description string or null What the receiving system is, for people. (max length 200)
event_types array of "bill.posted" | "case.closed" | "case.created" | "credit_note.posted" | "deal.created" | "deal.lost" | "deal.won" | "invoice.posted" | "lead.converted" | "lead.created" | "payment.received" | "payment.sent" | "quote.accepted" | "quote.declined" | "subscription.activated" | "subscription.cancelled" | "task.completed" | "task.created" | "vendor_credit.posted" | "*" yes The events to send; * for every event, also those added later. (min items 1)

EndpointOut

Field Type Required Description
id string (uuid) yes The endpoint's id.
url string yes Where events are sent.
description string or null yes What the receiving system is.
event_types array of string yes The events it gets; * for every event.
status "active" | "disabled" yes active sends; disabled keeps what waits and sends nothing.
disabled_reason "by_person" | "failing" or null yes failing: the system stopped it after it kept failing for a day.
failures_in_row integer yes Attempts that failed since the last success.
last_success_at string (date-time) or null yes The last delivered attempt.
last_failure_at string (date-time) or null yes The last failed attempt.
waiting integer yes Deliveries still to go out (or to try again).
created_by object yes Who added it.
created_at string (date-time) yes When it was added.
secret string or null The signing secret (whsec_...): only in the answer that made or rotated it, never again.

EndpointUpdate

Field Type Required Description
url string or null A new address (as on create). (min length 9; max length 500)
description string or null A new description. (max length 200)
event_types array of "bill.posted" | "case.closed" | "case.created" | "credit_note.posted" | "deal.created" | "deal.lost" | "deal.won" | "invoice.posted" | "lead.converted" | "lead.created" | "payment.received" | "payment.sent" | "quote.accepted" | "quote.declined" | "subscription.activated" | "subscription.cancelled" | "task.completed" | "task.created" | "vendor_credit.posted" | "*" or null The new list of events; * for every event. (min items 1)
status "active" | "disabled" or null disabled stops sending (what waits is kept); active starts again and sends what waited.

EventTypeOut

Field Type Required Description
type string yes The event's name, e.g. deal.won.
description string yes When it is sent and what its data holds.
Stabiso, the Enterprise System of Record · generated from the code and its guides · release 6f03a5e846b3