{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/anjal-app/json-schema/anjal-app-webhook-event-schema.json",
  "title": "WebhookEvent",
  "description": "Payloads for the newer events:\n\n- `message.received.spam`: inbound mail the spam filter flagged. It is\n  stored but does not fire `message.received`.\n- `message.sent`: includes `labels`.\n- `message.delivered`: `{ messageId, inboxId, recipients, timestamp, smtpResponse }`.\n  The recipient's mail server accepted it; not a guarantee of inbox placement.\n- `message.rejected`: `{ messageId, inboxId, reason, recipients, timestamp }`.\n  The provider refused to send it (e.g. a suppressed address).\n- `message.opened`: `{ messageId, inboxId, threadId, to, subject, openedAt, userAgent }`.\n  First open of a send with `trackOpens: true`. A hint, not proof.\n- `draft.send_failed`: `{ draftId, inboxId, error, code }`. A scheduled\n  draft could not be sent; it is kept with `sendError` set.\n- `domain.verified`: `{ domainId, domain, workspaceId, sharedWith, verifiedAt }`.\n  Fired when `GET /v1/domains/{domain}/verify` first sees the domain verified.\n",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/anjal-app-openapi.yaml#/components/schemas/WebhookEvent",
  "type": "string",
  "enum": [
    "message.received",
    "message.received.spam",
    "message.sent",
    "message.delivered",
    "message.bounced",
    "message.complained",
    "message.rejected",
    "message.opened",
    "draft.send_failed",
    "domain.verified",
    "message.suspicious",
    "message.quarantined",
    "calendar.invite.received",
    "calendar.invite.replied",
    "calendar.invite.cancelled",
    "calendar.invite.countered",
    "account.suspended",
    "account.payment_failed",
    "account.subscription_ended"
  ]
}