Reference
Webhook events
Schema-v1 event names and the connection changes they represent.
Webhook delivery is optional. When configured, Domain0 sends connection events to your HTTPS endpoint. Verify the untouched delivery before parsing or using any field.
Envelope
Every verified event contains:
| Field | Meaning |
|---|---|
schemaVersion | Envelope contract version; currently 1 |
eventId | Stable event identity for deduplication |
type | Event name from the catalog below |
connectionId | Connection that produced the event |
applicationId | Owning Domain0 application |
tenantId | Owning tenant |
sequence | Positive connection event sequence |
occurredAt | ISO timestamp for the domain event |
attributes | Bounded string attributes for this event |
Event catalog
| Type | Meaning |
|---|---|
connection.requested | A connection intent was created |
provider.detection_started | Provider discovery started |
provider.selected | A provider was detected or selected |
authorization.required | Customer authorization is required |
domain_connect.started | Provider-hosted Domain Connect consent started |
domain_connect.submitted | Domain Connect consent returned for verification |
authorization.completed | Provider authorization completed |
connection.planning_started | Current DNS is being read for planning |
connection.plan_prepared | An exact DNS change plan is ready |
connection.planning_restarted | Planning restarted with current provider state |
connection.already_configured | Existing DNS already satisfies the effective intent |
connection.plan_confirmed | The customer confirmed the plan |
connection.changes_applied | Confirmed provider changes were submitted |
connection.propagation_checked | Authoritative DNS was checked |
connection.propagation_timed_out | Required DNS records did not propagate within 72 hours |
connection.activated | Every required record is authoritative |
connection.manual_required | Guided setup is required |
connection.manual_submitted | The customer reported completing guided setup |
connection.failed_retryable | A classified temporary failure was saved |
connection.retry_started | The retry path resumed from its checkpoint |
connection.cancelled | The connection was cancelled |
Exhaustive handling
import type { Domain0WebhookEvent } from 'domain0/contracts'
function applyDomain0Event(event: Domain0WebhookEvent) {
switch (event.type) {
case 'connection.activated':
return markDomainActive(event.connectionId)
case 'connection.cancelled':
return markDomainCancelled(event.connectionId)
default:
return recordConnectionProgress(event)
}
}Store eventId and your product mutation in one transaction. See the
webhook guide for a receiver and
webhook security for signature verification rules.