v1

latestOpenAPI 3.0.42026-08-045381279.6 KB
TestWebhooks

Fire a named webhook event type for a test case.

Fires a real current-state webhook event for any registered Customer API event type against a test case — even if the case hasn't naturally reached the state that would produce that event.

Purpose: Unblocks testing webhook handlers for rare or hard-to-reach event types (e.g. case.closed, chat.created) without having to drive the case through its full lifecycle.

Payload: The event carries the real current state of the case — fields are read from the case as it exists now. No payload fabrication or override is supported in this version.

Event types:

  • case.created — current lifecycle (use after case creation, or to re-test your handler)
  • case.updated — current lifecycle (oldLifecycle and newLifecycle both reflect current state)
  • case.closed — current close code and comment (use after case is already closed, or to test your handler regardless)
  • payment.created — most recent payment on the case (returns 422 if no payments exist)
  • payment.deleted — most recently deleted payment on the case (returns 422 if no payments have been deleted)
  • chat.created — most recent chat message on the case (returns 422 if no chats exist)

Target subscriptions:

  • If subscriptionId is provided, fires only to that subscription. Returns 400 if the subscription is not found, not a test subscription, or not owned by this creditor.
  • If omitted, fires to all active test subscriptions registered for the given event type.

Event log (asynchronous): The synthetic fire is enqueued into the normal delivery pipeline, exactly like a real dispatch. A successful response (and its enqueuedCount) confirms the event was queued — it does not mean a row already exists in the webhook event log. The WebhookEvent row appears in GET /webhooks/events only after the worker drains the queue and attempts delivery — usually within a few seconds, but allow up to ~30 seconds, as the queue drain can lag under load. Do not assume the row is present the instant this call returns: poll GET /webhooks/events?caseId={id} with a short backoff until the event appears (or a ~30s timeout elapses) rather than reading it once immediately.

Guards:

  • Returns 400 if the case is not a test case (classification != test), the event type is not valid, or the subscription is not found/not owned.
  • Returns 404 if the case is not found or not owned by this creditor.
  • Returns 422 if required data is missing (e.g. no payments for payment.created, no chats for chat.created).
post/test/webhooks/fire

Request body

eventstring nullable required

The webhook event type to fire (e.g. "case.updated", "payment.created"). Must be a valid event type for the calling API — refer to each API's documentation for the supported list (Collection Partner and Customer API accept different sets).

caseIdstring uuid required

The ID of the test case to use as the event source.

subscriptionIdstring uuid nullable

Optional — the specific subscription ID to fire to. If omitted, fires to all active test subscriptions for the calling API subscriber that are registered for the given event type.

Example request

{
  "event": "case.updated",
  "caseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "subscriptionId": "6b7a1f23-9c48-4e72-a901-1d2b3e4f5a6b"
}

Response

Event fired — delivery jobs enqueued

eventTypestring nullable

The event type that was fired (e.g. "case.updated").

caseIdstring uuid

The case ID the event was fired for.

enqueuedCountinteger

Number of webhook delivery jobs enqueued. Zero means no active test subscriptions were found for this event type.