{
  "asyncapi": "3.0.0",
  "channels": {
    "automation.trigger_registry_updated": {
      "address": "automation.trigger_registry_updated",
      "description": "Emitted when a workflow's chat-triggerability changes.",
      "messages": {
        "automation.trigger_registry_updated_v1": {
          "$ref": "#/components/messages/automation.trigger_registry_updated_v1"
        }
      }
    },
    "bug.reported": {
      "address": "bug.reported",
      "description": "Emitted when a user reports a bug via the in-app report dialog.",
      "messages": {
        "bug.reported_v1": {
          "$ref": "#/components/messages/bug.reported_v1"
        }
      }
    },
    "calendar.event_created": {
      "address": "calendar.event_created",
      "description": "Emitted when a calendar event is created by any source.",
      "messages": {
        "calendar.event_created_v1": {
          "$ref": "#/components/messages/calendar.event_created_v1"
        }
      }
    },
    "calendar.event_updated": {
      "address": "calendar.event_updated",
      "description": "Emitted when a calendar event is updated.",
      "messages": {
        "calendar.event_updated_v1": {
          "$ref": "#/components/messages/calendar.event_updated_v1"
        }
      }
    },
    "calendar.invite_received": {
      "address": "calendar.invite_received",
      "description": "Emitted when an inbound calendar invite is received.",
      "messages": {
        "calendar.invite_received_v1": {
          "$ref": "#/components/messages/calendar.invite_received_v1"
        }
      }
    },
    "channel.archive": {
      "address": "channel.archive",
      "description": "channel.archive",
      "messages": {
        "channel.archive_v1": {
          "$ref": "#/components/messages/channel.archive_v1"
        }
      }
    },
    "channel.create": {
      "address": "channel.create",
      "description": "channel.create",
      "messages": {
        "channel.create_v1": {
          "$ref": "#/components/messages/channel.create_v1"
        }
      }
    },
    "channel.invite": {
      "address": "channel.invite",
      "description": "channel.invite",
      "messages": {
        "channel.invite_v1": {
          "$ref": "#/components/messages/channel.invite_v1"
        }
      }
    },
    "channel.join": {
      "address": "channel.join",
      "description": "channel.join",
      "messages": {
        "channel.join_v1": {
          "$ref": "#/components/messages/channel.join_v1"
        }
      }
    },
    "channel.join_request_created": {
      "address": "channel.join_request_created",
      "description": "channel.join_request_created",
      "messages": {
        "channel.join_request_created_v1": {
          "$ref": "#/components/messages/channel.join_request_created_v1"
        }
      }
    },
    "channel.join_request_decided": {
      "address": "channel.join_request_decided",
      "description": "channel.join_request_decided",
      "messages": {
        "channel.join_request_decided_v1": {
          "$ref": "#/components/messages/channel.join_request_decided_v1"
        }
      }
    },
    "channel.kick": {
      "address": "channel.kick",
      "description": "channel.kick",
      "messages": {
        "channel.kick_v1": {
          "$ref": "#/components/messages/channel.kick_v1"
        }
      }
    },
    "channel.leave": {
      "address": "channel.leave",
      "description": "channel.leave",
      "messages": {
        "channel.leave_v1": {
          "$ref": "#/components/messages/channel.leave_v1"
        }
      }
    },
    "channel.patch": {
      "address": "channel.patch",
      "description": "channel.patch",
      "messages": {
        "channel.patch_v1": {
          "$ref": "#/components/messages/channel.patch_v1"
        }
      }
    },
    "channel.unarchive": {
      "address": "channel.unarchive",
      "description": "channel.unarchive",
      "messages": {
        "channel.unarchive_v1": {
          "$ref": "#/components/messages/channel.unarchive_v1"
        }
      }
    },
    "channel.visibility_change": {
      "address": "channel.visibility_change",
      "description": "channel.visibility_change",
      "messages": {
        "channel.visibility_change_v1": {
          "$ref": "#/components/messages/channel.visibility_change_v1"
        }
      }
    },
    "chat.canvas.opened": {
      "address": "chat.canvas.opened",
      "description": "chat.canvas.opened",
      "messages": {
        "chat.canvas.opened_v1": {
          "$ref": "#/components/messages/chat.canvas.opened_v1"
        }
      }
    },
    "chat.canvas.seeded": {
      "address": "chat.canvas.seeded",
      "description": "chat.canvas.seeded",
      "messages": {
        "chat.canvas.seeded_v1": {
          "$ref": "#/components/messages/chat.canvas.seeded_v1"
        }
      }
    },
    "collage.composition_changed": {
      "address": "collage.composition_changed",
      "description": "Emitted when a collage's photo set changes.",
      "messages": {
        "collage.composition_changed_v1": {
          "$ref": "#/components/messages/collage.composition_changed_v1"
        }
      }
    },
    "comment.mention": {
      "address": "comment.mention",
      "description": "Emitted when a comment @mentions a virtual employee (agent_members).",
      "messages": {
        "comment.mention_v1": {
          "$ref": "#/components/messages/comment.mention_v1"
        }
      }
    },
    "contact.created": {
      "address": "contact.created",
      "description": "Emitted when a new contact is persisted.",
      "messages": {
        "contact.created_v1": {
          "$ref": "#/components/messages/contact.created_v1"
        }
      }
    },
    "contact.enriched": {
      "address": "contact.enriched",
      "description": "Emitted when a contact gains new structured data via enrichment.",
      "messages": {
        "contact.enriched_v1": {
          "$ref": "#/components/messages/contact.enriched_v1"
        }
      }
    },
    "crm.proposal.approved.v1": {
      "address": "crm.proposal.approved.v1",
      "description": "Emitted when a member approves a pending CRM proposal.",
      "messages": {
        "crm.proposal.approved.v1_v1": {
          "$ref": "#/components/messages/crm.proposal.approved.v1_v1"
        }
      }
    },
    "defense.counter_action": {
      "address": "defense.counter_action",
      "description": "A user counter-action against an email a defense rule fired on.",
      "messages": {
        "defense.counter_action_v1": {
          "$ref": "#/components/messages/defense.counter_action_v1"
        }
      }
    },
    "defense.rule_health_changed": {
      "address": "defense.rule_health_changed",
      "description": "A defense rule's health band crossed a threshold.",
      "messages": {
        "defense.rule_health_changed_v1": {
          "$ref": "#/components/messages/defense.rule_health_changed_v1"
        }
      }
    },
    "defense.workflow_invoke": {
      "address": "defense.workflow_invoke",
      "description": "Teleporter fire: a defense rule invokes a facet-action workflow.",
      "messages": {
        "defense.workflow_invoke_v1": {
          "$ref": "#/components/messages/defense.workflow_invoke_v1"
        }
      }
    },
    "email.corpus_period_changed": {
      "address": "email.corpus_period_changed",
      "description": "Emitted when a (account, month-period) slice of COLD email content changes.",
      "messages": {
        "email.corpus_period_changed_v1": {
          "$ref": "#/components/messages/email.corpus_period_changed_v1"
        }
      }
    },
    "email.draft_created": {
      "address": "email.draft_created",
      "description": "Emitted when a new outbound draft is persisted.",
      "messages": {
        "email.draft_created_v1": {
          "$ref": "#/components/messages/email.draft_created_v1"
        }
      }
    },
    "email.extracted": {
      "address": "email.extracted",
      "description": "Emitted when agent auto-extraction completes for an email.",
      "messages": {
        "email.extracted_v1": {
          "$ref": "#/components/messages/email.extracted_v1"
        }
      }
    },
    "email.received": {
      "address": "email.received",
      "description": "Emitted when a new inbound email is persisted to email_canonical.",
      "messages": {
        "email.received_v1": {
          "$ref": "#/components/messages/email.received_v1"
        }
      }
    },
    "embed.changed": {
      "address": "embed.changed",
      "description": "Emitted when an embedded facet changes for a recipient.",
      "messages": {
        "embed.changed_v1": {
          "$ref": "#/components/messages/embed.changed_v1"
        }
      }
    },
    "extracted_item.approved": {
      "address": "extracted_item.approved",
      "description": "Emitted when a pending extracted item is approved by a human.",
      "messages": {
        "extracted_item.approved_v1": {
          "$ref": "#/components/messages/extracted_item.approved_v1"
        }
      }
    },
    "extracted_item.pending_review": {
      "address": "extracted_item.pending_review",
      "description": "Emitted when an extracted item needs human confirmation.",
      "messages": {
        "extracted_item.pending_review_v1": {
          "$ref": "#/components/messages/extracted_item.pending_review_v1"
        }
      }
    },
    "feedback.submitted": {
      "address": "feedback.submitted",
      "description": "Emitted when a user submits feedback or a feature request.",
      "messages": {
        "feedback.submitted_v1": {
          "$ref": "#/components/messages/feedback.submitted_v1"
        }
      }
    },
    "huddle.ended": {
      "address": "huddle.ended",
      "description": "Emitted (in the same transaction as the ended_at flip) when a huddle",
      "messages": {
        "huddle.ended_v1": {
          "$ref": "#/components/messages/huddle.ended_v1"
        }
      }
    },
    "huddle.notes_failed": {
      "address": "huddle.notes_failed",
      "description": "Emitted when huddle notes production fails terminally",
      "messages": {
        "huddle.notes_failed_v1": {
          "$ref": "#/components/messages/huddle.notes_failed_v1"
        }
      }
    },
    "huddle.notes_ready": {
      "address": "huddle.notes_ready",
      "description": "Emitted when a huddle's AI notes note is materialized",
      "messages": {
        "huddle.notes_ready_v1": {
          "$ref": "#/components/messages/huddle.notes_ready_v1"
        }
      }
    },
    "interaction.rollup_updated": {
      "address": "interaction.rollup_updated",
      "description": "Emitted when a per-(owner, sender) interaction-telemetry rollup changed.",
      "messages": {
        "interaction.rollup_updated_v1": {
          "$ref": "#/components/messages/interaction.rollup_updated_v1"
        }
      }
    },
    "lead.converted": {
      "address": "lead.converted",
      "description": "Emitted when an invite-code redemption joins back to a CRM lead.",
      "messages": {
        "lead.converted_v1": {
          "$ref": "#/components/messages/lead.converted_v1"
        }
      }
    },
    "memory.co_click_recorded": {
      "address": "memory.co_click_recorded",
      "description": "Emitted when a co-click behavior signal lands in evidence_events.",
      "messages": {
        "memory.co_click_recorded_v1": {
          "$ref": "#/components/messages/memory.co_click_recorded_v1"
        }
      }
    },
    "memory.entity_updated": {
      "address": "memory.entity_updated",
      "description": "Emitted when a curatable entity gains new observations (facts/edges).",
      "messages": {
        "memory.entity_updated_v1": {
          "$ref": "#/components/messages/memory.entity_updated_v1"
        }
      }
    },
    "memory.search_click_recorded": {
      "address": "memory.search_click_recorded",
      "description": "Emitted when a single-result search-click behavior signal lands.",
      "messages": {
        "memory.search_click_recorded_v1": {
          "$ref": "#/components/messages/memory.search_click_recorded_v1"
        }
      }
    },
    "note.banner_requested": {
      "address": "note.banner_requested",
      "description": "Emitted after a note-family facet create/enrich that carried >=1 image.",
      "messages": {
        "note.banner_requested_v1": {
          "$ref": "#/components/messages/note.banner_requested_v1"
        }
      }
    },
    "note.updated": {
      "address": "note.updated",
      "description": "Emitted when a note is updated. Batched per R12 — one event per",
      "messages": {
        "note.updated_v1": {
          "$ref": "#/components/messages/note.updated_v1"
        }
      }
    },
    "pipeline.entitlement_stage_changed": {
      "address": "pipeline.entitlement_stage_changed",
      "description": "Emitted when the email-pipeline overage ladder advances to a new stage.",
      "messages": {
        "pipeline.entitlement_stage_changed_v1": {
          "$ref": "#/components/messages/pipeline.entitlement_stage_changed_v1"
        }
      }
    },
    "podcast.cut_created": {
      "address": "podcast.cut_created",
      "description": "Emitted when an extracted audio cut (highlight) is persisted.",
      "messages": {
        "podcast.cut_created_v1": {
          "$ref": "#/components/messages/podcast.cut_created_v1"
        }
      }
    },
    "podcast.transcribed": {
      "address": "podcast.transcribed",
      "description": "Emitted when a podcast episode transcript is produced.",
      "messages": {
        "podcast.transcribed_v1": {
          "$ref": "#/components/messages/podcast.transcribed_v1"
        }
      }
    },
    "record.form_submitted": {
      "address": "record.form_submitted",
      "description": "Emitted when a member submits an html_block form.",
      "messages": {
        "record.form_submitted_v1": {
          "$ref": "#/components/messages/record.form_submitted_v1"
        }
      }
    },
    "sandbox.auto_reset": {
      "address": "sandbox.auto_reset",
      "description": "Emitted when the cron auto-resets a sandbox tenant past its idle window.",
      "messages": {
        "sandbox.auto_reset_v1": {
          "$ref": "#/components/messages/sandbox.auto_reset_v1"
        }
      }
    },
    "sandbox.reset": {
      "address": "sandbox.reset",
      "description": "Emitted when a sandbox tenant is manually reset via POST /api/v1/sandbox/reset.",
      "messages": {
        "sandbox.reset_v1": {
          "$ref": "#/components/messages/sandbox.reset_v1"
        }
      }
    },
    "sandbox.send_blocked": {
      "address": "sandbox.send_blocked",
      "description": "Emitted when an outbound email/SMS from a sandbox tenant is blocked by the allowlist.",
      "messages": {
        "sandbox.send_blocked_v1": {
          "$ref": "#/components/messages/sandbox.send_blocked_v1"
        }
      }
    },
    "task.completed": {
      "address": "task.completed",
      "description": "Emitted when a task transitions to completed state.",
      "messages": {
        "task.completed_v1": {
          "$ref": "#/components/messages/task.completed_v1"
        }
      }
    },
    "task.created": {
      "address": "task.created",
      "description": "Emitted when a new task is created.",
      "messages": {
        "task.created_v1": {
          "$ref": "#/components/messages/task.created_v1"
        }
      }
    },
    "task.due_soon": {
      "address": "task.due_soon",
      "description": "Emitted when a task's due time is within the approaching-deadline window.",
      "messages": {
        "task.due_soon_v1": {
          "$ref": "#/components/messages/task.due_soon_v1"
        }
      }
    },
    "workflow.completed": {
      "address": "workflow.completed",
      "description": "Emitted when a workflow run reaches a successful terminal state.",
      "messages": {
        "workflow.completed_v1": {
          "$ref": "#/components/messages/workflow.completed_v1"
        }
      }
    },
    "workflow.execution_completed": {
      "address": "workflow.execution_completed",
      "description": "Emitted by the sandbox execution finalizer on every terminal run.",
      "messages": {
        "workflow.execution_completed_v1": {
          "$ref": "#/components/messages/workflow.execution_completed_v1"
        }
      }
    },
    "workflow.failed": {
      "address": "workflow.failed",
      "description": "Emitted when a workflow run reaches a failed terminal state.",
      "messages": {
        "workflow.failed_v1": {
          "$ref": "#/components/messages/workflow.failed_v1"
        }
      }
    }
  },
  "components": {
    "messages": {
      "automation.trigger_registry_updated_v1": {
        "contentType": "application/json",
        "name": "automation.trigger_registry_updated",
        "payload": {
          "description": "Emitted when a workflow's chat-triggerability changes.\n\nThe chat composer caches the read-only trigger registry\n(``GET /api/v1/automations/triggers``). A workflow's ``enabled`` /\n``visibility`` / ``name`` change alters which slugs are visible in a room,\nso the mutation paths emit this event; the composer busts its cache on it.\nDiscovery only — there is no chat-side workflow datastore.",
          "properties": {
            "change": {
              "description": "What changed: 'enabled', 'visibility', 'name', 'created', or 'deleted'.",
              "title": "Change",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "workflow_id": {
              "description": "workflow_scripts.id whose triggerability changed.",
              "format": "uuid",
              "title": "Workflow Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "workflow_id",
            "change"
          ],
          "title": "AutomationTriggerRegistryUpdatedV1",
          "type": "object"
        },
        "title": "Emitted when a workflow's chat-triggerability changes."
      },
      "bug.reported_v1": {
        "contentType": "application/json",
        "name": "bug.reported",
        "payload": {
          "description": "Emitted when a user reports a bug via the in-app report dialog.",
          "properties": {
            "bug_id": {
              "description": "Bug report record ID.",
              "format": "uuid",
              "title": "Bug Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "severity": {
              "description": "User-selected severity.",
              "enum": [
                "low",
                "medium",
                "high",
                "critical"
              ],
              "title": "Severity",
              "type": "string"
            },
            "submitted_by_account_id": {
              "description": "Account that submitted the report.",
              "format": "uuid",
              "title": "Submitted By Account Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "title": {
              "description": "Bug report title/summary.",
              "title": "Title",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "bug_id",
            "severity",
            "title",
            "submitted_by_account_id"
          ],
          "title": "BugReportedV1",
          "type": "object"
        },
        "title": "Emitted when a user reports a bug via the in-app report dialog."
      },
      "calendar.event_created_v1": {
        "contentType": "application/json",
        "name": "calendar.event_created",
        "payload": {
          "description": "Emitted when a calendar event is created by any source.",
          "properties": {
            "backfill": {
              "default": false,
              "description": "True while a provider source's FIRST sync copies its history window; change-driven recipes skip these before any model call.",
              "title": "Backfill",
              "type": "boolean"
            },
            "calendar_event_id": {
              "description": "Calendar event ID.",
              "format": "uuid",
              "title": "Calendar Event Id",
              "type": "string"
            },
            "end_at": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Event end time; null for all-day or open-ended events.",
              "title": "End At"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "origin": {
              "default": "user",
              "description": "Which canonical writer emitted the change: a member's own write or a provider calendar sync (TIDY-19411 F9).",
              "enum": [
                "user",
                "provider_sync"
              ],
              "title": "Origin",
              "type": "string"
            },
            "source": {
              "description": "Where the event came from.",
              "enum": [
                "user",
                "invite",
                "extraction",
                "provider_sync"
              ],
              "title": "Source",
              "type": "string"
            },
            "start_at": {
              "description": "Event start time (canonical ISO UTC).",
              "format": "date-time",
              "title": "Start At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "timezone": {
              "description": "IANA timezone name for the event's origin (e.g. America/New_York).",
              "title": "Timezone",
              "type": "string"
            },
            "title": {
              "description": "Event title/summary.",
              "title": "Title",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "calendar_event_id",
            "title",
            "start_at",
            "timezone",
            "source"
          ],
          "title": "CalendarEventCreatedV1",
          "type": "object"
        },
        "title": "Emitted when a calendar event is created by any source."
      },
      "calendar.event_updated_v1": {
        "contentType": "application/json",
        "name": "calendar.event_updated",
        "payload": {
          "description": "Emitted when a calendar event is updated.",
          "properties": {
            "backfill": {
              "default": false,
              "description": "True while a provider source's FIRST sync copies its history window; change-driven recipes skip these before any model call.",
              "title": "Backfill",
              "type": "boolean"
            },
            "calendar_event_id": {
              "description": "Calendar event ID.",
              "format": "uuid",
              "title": "Calendar Event Id",
              "type": "string"
            },
            "changed_fields": {
              "description": "Names of fields that changed in this update.",
              "items": {
                "type": "string"
              },
              "title": "Changed Fields",
              "type": "array"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "origin": {
              "default": "user",
              "description": "Which canonical writer emitted the change: a member's own write or a provider calendar sync (TIDY-19411 F9).",
              "enum": [
                "user",
                "provider_sync"
              ],
              "title": "Origin",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "calendar_event_id"
          ],
          "title": "CalendarEventUpdatedV1",
          "type": "object"
        },
        "title": "Emitted when a calendar event is updated."
      },
      "calendar.invite_received_v1": {
        "contentType": "application/json",
        "name": "calendar.invite_received",
        "payload": {
          "description": "Emitted when an inbound calendar invite is received.",
          "properties": {
            "calendar_event_id": {
              "description": "Calendar event ID.",
              "format": "uuid",
              "title": "Calendar Event Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "organizer_email": {
              "description": "Organizer's email address.",
              "title": "Organizer Email",
              "type": "string"
            },
            "response_status": {
              "description": "Current response status for the invite.",
              "enum": [
                "needs_action",
                "accepted",
                "declined",
                "tentative"
              ],
              "title": "Response Status",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "calendar_event_id",
            "organizer_email",
            "response_status"
          ],
          "title": "CalendarInviteReceivedV1",
          "type": "object"
        },
        "title": "Emitted when an inbound calendar invite is received."
      },
      "channel.archive_v1": {
        "contentType": "application/json",
        "name": "channel.archive",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id"
          ],
          "title": "ChannelArchiveV1",
          "type": "object"
        },
        "title": "channel.archive"
      },
      "channel.create_v1": {
        "contentType": "application/json",
        "name": "channel.create",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "name": {
              "description": "Initial channel name.",
              "title": "Name",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "visibility": {
              "description": "Initial visibility setting.",
              "title": "Visibility",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "name",
            "visibility"
          ],
          "title": "ChannelCreateV1",
          "type": "object"
        },
        "title": "channel.create"
      },
      "channel.invite_v1": {
        "contentType": "application/json",
        "name": "channel.invite",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "target_account_id": {
              "description": "Account that was invited.",
              "format": "uuid",
              "title": "Target Account Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "target_account_id"
          ],
          "title": "ChannelInviteV1",
          "type": "object"
        },
        "title": "channel.invite"
      },
      "channel.join_request_created_v1": {
        "contentType": "application/json",
        "name": "channel.join_request_created",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "request_id": {
              "description": "ID of the matrix_channel_join_requests row.",
              "format": "uuid",
              "title": "Request Id",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "request_id"
          ],
          "title": "ChannelJoinRequestCreatedV1",
          "type": "object"
        },
        "title": "channel.join_request_created"
      },
      "channel.join_request_decided_v1": {
        "contentType": "application/json",
        "name": "channel.join_request_decided",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "decision": {
              "description": "Outcome of the decision.",
              "enum": [
                "approved",
                "denied"
              ],
              "title": "Decision",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "request_id": {
              "description": "ID of the matrix_channel_join_requests row.",
              "format": "uuid",
              "title": "Request Id",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "request_id",
            "decision"
          ],
          "title": "ChannelJoinRequestDecidedV1",
          "type": "object"
        },
        "title": "channel.join_request_decided"
      },
      "channel.join_v1": {
        "contentType": "application/json",
        "name": "channel.join",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id"
          ],
          "title": "ChannelJoinV1",
          "type": "object"
        },
        "title": "channel.join"
      },
      "channel.kick_v1": {
        "contentType": "application/json",
        "name": "channel.kick",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "target_account_id": {
              "description": "Account that was removed.",
              "format": "uuid",
              "title": "Target Account Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "target_account_id"
          ],
          "title": "ChannelKickV1",
          "type": "object"
        },
        "title": "channel.kick"
      },
      "channel.leave_v1": {
        "contentType": "application/json",
        "name": "channel.leave",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id"
          ],
          "title": "ChannelLeaveV1",
          "type": "object"
        },
        "title": "channel.leave"
      },
      "channel.patch_v1": {
        "contentType": "application/json",
        "name": "channel.patch",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "fields": {
              "description": "Field names that changed.",
              "items": {
                "type": "string"
              },
              "title": "Fields",
              "type": "array"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id"
          ],
          "title": "ChannelPatchV1",
          "type": "object"
        },
        "title": "channel.patch"
      },
      "channel.unarchive_v1": {
        "contentType": "application/json",
        "name": "channel.unarchive",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id"
          ],
          "title": "ChannelUnarchiveV1",
          "type": "object"
        },
        "title": "channel.unarchive"
      },
      "channel.visibility_change_v1": {
        "contentType": "application/json",
        "name": "channel.visibility_change",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "new_visibility": {
              "description": "Visibility after the change.",
              "title": "New Visibility",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "old_visibility": {
              "description": "Visibility before the change.",
              "title": "Old Visibility",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "old_visibility",
            "new_visibility"
          ],
          "title": "ChannelVisibilityChangeV1",
          "type": "object"
        },
        "title": "channel.visibility_change"
      },
      "chat.canvas.opened_v1": {
        "contentType": "application/json",
        "name": "chat.canvas.opened",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "note_id": {
              "description": "Canonical Tidy note backing the channel Canvas.",
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "seeded": {
              "description": "Whether this open request created the Canvas note.",
              "title": "Seeded",
              "type": "boolean"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "note_id",
            "seeded"
          ],
          "title": "ChatCanvasOpenedV1",
          "type": "object"
        },
        "title": "chat.canvas.opened"
      },
      "chat.canvas.seeded_v1": {
        "contentType": "application/json",
        "name": "chat.canvas.seeded",
        "payload": {
          "properties": {
            "actor_account_id": {
              "description": "Account that performed the action.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "note_id": {
              "description": "Canonical Tidy note backing the channel Canvas.",
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room id (e.g. !abc:tidy).",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "room_id",
            "note_id"
          ],
          "title": "ChatCanvasSeededV1",
          "type": "object"
        },
        "title": "chat.canvas.seeded"
      },
      "collage.composition_changed_v1": {
        "contentType": "application/json",
        "name": "collage.composition_changed",
        "payload": {
          "description": "Emitted when a collage's photo set changes.\n\nProduced by the Postgres trigger ``collage_composition_staleness`` on\n``notes`` when ``notes.properties->'collage'->'photos'`` changes. The S8\ncomposer consumes this and recomputes the collage PNG (cover / share\nimage / email materialization).\n\nThe payload carries ``note_id`` ONLY. events_outbox is PostgREST-readable\nby same-tenant clients under RLS, so no server-only data goes in the\npayload — the composer re-reads the collage state server-side from\n``note_id`` (mirrors the comment.mention home-room-id withholding).",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "note_id": {
              "description": "The note that hosts the collage facet whose photos changed.",
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "note_id"
          ],
          "title": "CollageCompositionChangedV1",
          "type": "object"
        },
        "title": "Emitted when a collage's photo set changes."
      },
      "comment.mention_v1": {
        "contentType": "application/json",
        "name": "comment.mention",
        "payload": {
          "description": "Emitted when a comment @mentions a virtual employee (agent_members).\n\nProduced by the comment create/update path inside the comment write\ntransaction (one event per virtual-employee mention target). The S2\nconsumer (`comment_mention_dispatcher`) turns each event into a\nlow-noise actionable Matrix message in the agent's home room. Humans\n@mentioned in the same comment still receive `user_notifications` rows;\nthis event is purely the additive agent rail.\n\nThe payload carries enough context for the agent to act WITHOUT\nparent-doc access beyond the comment-feedback grant (TIDY-10446\ndecision A): the comment reference, the anchored block, the referenced\nprimitive, the author, the thread, and a deep link. It carries NO\nparent-doc content (privacy invariant, TIDY-10446 decision B).",
          "properties": {
            "agent_account_id": {
              "description": "Account id of the @mentioned virtual employee (agent_members.account_id). The S2 dispatcher re-resolves the agent's Matrix home room from agent_members at delivery — the routing id is deliberately NOT in this payload (events_outbox is PostgREST-readable by same-tenant clients under RLS; the home room id is withheld from clients by sync-rules).",
              "format": "uuid",
              "title": "Agent Account Id",
              "type": "string"
            },
            "anchor_block_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Anchored block id within the primitive, if any.",
              "title": "Anchor Block Id"
            },
            "anchor_text": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Anchored text the comment was attached to, if any.",
              "title": "Anchor Text"
            },
            "author_account_id": {
              "description": "Account that authored the comment.",
              "format": "uuid",
              "title": "Author Account Id",
              "type": "string"
            },
            "author_display_name": {
              "description": "Display name of the comment author.",
              "title": "Author Display Name",
              "type": "string"
            },
            "comment_id": {
              "description": "The comment that contains the @mention.",
              "format": "uuid",
              "title": "Comment Id",
              "type": "string"
            },
            "deep_link": {
              "description": "Deep link to the comment on its primitive.",
              "title": "Deep Link",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "primitive_id": {
              "description": "ID of the commented-on primitive.",
              "format": "uuid",
              "title": "Primitive Id",
              "type": "string"
            },
            "primitive_type": {
              "description": "Type of the commented-on primitive (note, journal, activity, ...).",
              "title": "Primitive Type",
              "type": "string"
            },
            "snippet": {
              "description": "Comment plain-text snippet (<=140 chars).",
              "title": "Snippet",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "thread_root_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Root comment of the thread, or null for a top-level comment.",
              "title": "Thread Root Id"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "comment_id",
            "primitive_type",
            "primitive_id",
            "author_account_id",
            "author_display_name",
            "agent_account_id",
            "snippet",
            "deep_link"
          ],
          "title": "CommentMentionV1",
          "type": "object"
        },
        "title": "Emitted when a comment @mentions a virtual employee (agent_members)."
      },
      "contact.created_v1": {
        "contentType": "application/json",
        "name": "contact.created",
        "payload": {
          "description": "Emitted when a new contact is persisted.",
          "properties": {
            "contact_id": {
              "description": "Contact ID.",
              "format": "uuid",
              "title": "Contact Id",
              "type": "string"
            },
            "display_name": {
              "description": "Display name for the contact.",
              "title": "Display Name",
              "type": "string"
            },
            "email": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Primary email address if known.",
              "title": "Email"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "contact_id",
            "display_name"
          ],
          "title": "ContactCreatedV1",
          "type": "object"
        },
        "title": "Emitted when a new contact is persisted."
      },
      "contact.enriched_v1": {
        "contentType": "application/json",
        "name": "contact.enriched",
        "payload": {
          "description": "Emitted when a contact gains new structured data via enrichment.",
          "properties": {
            "contact_id": {
              "description": "Contact ID.",
              "format": "uuid",
              "title": "Contact Id",
              "type": "string"
            },
            "enriched_fields": {
              "description": "Names of fields populated by this enrichment pass.",
              "items": {
                "type": "string"
              },
              "title": "Enriched Fields",
              "type": "array"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "contact_id",
            "enriched_fields"
          ],
          "title": "ContactEnrichedV1",
          "type": "object"
        },
        "title": "Emitted when a contact gains new structured data via enrichment."
      },
      "crm.proposal.approved.v1_v1": {
        "contentType": "application/json",
        "name": "crm.proposal.approved.v1",
        "payload": {
          "description": "Emitted when a member approves a pending CRM proposal.\n\nWritten INSIDE the approval transaction (transactional outbox): the\ncontact↔organization link, the minted domain mapping and this hook commit\nor roll back together, so a consumer can never see an approval that did not\nhappen. Emitted only when the tenant opted into enrichment\n(``tenant_settings.crm_enrichment_enabled``) and the proposal carries a\nnormalized domain.\n\nThe approval transaction does nothing else with it: TIDY-15393 is the sole\nconsumer and alone evaluates cost governance and creates enrichment jobs.\nPending, rejected, merged and expired proposals emit nothing.\n\nBounded ids + the normalized domain only — never the recipient address,\nnever message content.",
          "properties": {
            "contact_id": {
              "description": "The contact the approval linked.",
              "format": "uuid",
              "title": "Contact Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "normalized_domain": {
              "description": "Recipient domain in canonical normalized form (never an address).",
              "title": "Normalized Domain",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "organization_id": {
              "description": "The organization the approval linked.",
              "format": "uuid",
              "title": "Organization Id",
              "type": "string"
            },
            "proposal_id": {
              "description": "The approved crm_proposals row.",
              "format": "uuid",
              "title": "Proposal Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "proposal_id",
            "contact_id",
            "organization_id",
            "normalized_domain"
          ],
          "title": "CrmProposalApprovedV1",
          "type": "object"
        },
        "title": "Emitted when a member approves a pending CRM proposal."
      },
      "defense.counter_action_v1": {
        "contentType": "application/json",
        "name": "defense.counter_action",
        "payload": {
          "description": "A user counter-action against an email a defense rule fired on.\n\nTIDY-13032 (Inbox Defense B / S2, R5). Emitted when the user reclassifies,\nmoves, unarchives, extracts, quick-dismisses, or searches-and-opens an email\n— the raw material for rule-health misfire/positive detection. The\nchange-driven defense-rule-health recipe joins email_id to rule attribution\n(defense_events.rule_fired) and records a health_signal with evidence.\n\nPayload carries ``email_id`` + ``action`` ONLY — events_outbox is\nPostgREST-readable by same-tenant clients under RLS.",
          "properties": {
            "action": {
              "description": "Counter-action: reclassify|move|unarchive|extract|delete|search_open|dismiss.",
              "title": "Action",
              "type": "string"
            },
            "detail": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Optional detail (e.g. destination split for reclassify).",
              "title": "Detail"
            },
            "email_id": {
              "description": "The email the counter-action targeted.",
              "format": "uuid",
              "title": "Email Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "email_id",
            "action"
          ],
          "title": "DefenseCounterActionV1",
          "type": "object"
        },
        "title": "A user counter-action against an email a defense rule fired on."
      },
      "defense.rule_health_changed_v1": {
        "contentType": "application/json",
        "name": "defense.rule_health_changed",
        "payload": {
          "description": "A defense rule's health band crossed a threshold.\n\nTIDY-13032 (Inbox Defense B / S2, R5). Emitted when the recomputed\nhealth_score moves it between bands (healthy >= 0.7, ailing, misfiring <\n0.4). The suggestion engine (B3) turns a downward crossing into a\nmisfire_fix suggestion; the UI (C2) reflects the band.\n\nPayload carries ``rule_id`` + ``band`` + ``previous_band`` + ``score`` ONLY.",
          "properties": {
            "band": {
              "description": "New band: healthy|ailing|misfiring.",
              "title": "Band",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "previous_band": {
              "description": "Band before this crossing.",
              "title": "Previous Band",
              "type": "string"
            },
            "rule_id": {
              "description": "The defense rule whose health band changed.",
              "format": "uuid",
              "title": "Rule Id",
              "type": "string"
            },
            "score": {
              "description": "New health score in [0,1].",
              "title": "Score",
              "type": "number"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "rule_id",
            "band",
            "previous_band",
            "score"
          ],
          "title": "DefenseRuleHealthChangedV1",
          "type": "object"
        },
        "title": "A defense rule's health band crossed a threshold."
      },
      "defense.workflow_invoke_v1": {
        "contentType": "application/json",
        "name": "defense.workflow_invoke",
        "payload": {
          "description": "Teleporter fire: a defense rule invokes a facet-action workflow.\n\nTIDY-13027 (S7 / D4). Enqueued by orchestrator-service at post.completion\nwith the email bound as the prerequisite input; drained by the api-side\nconsumer which reuses the facet-action invoke spine (no second dispatcher).\nOne-directional in v1 — the workflow output never feeds back into the\nemail's disposition.",
          "properties": {
            "account_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Owning account the invocation runs under.",
              "title": "Account Id"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "facet_slug": {
              "description": "Facet whose target_table binds the subject.",
              "title": "Facet Slug",
              "type": "string"
            },
            "firing_rule_id": {
              "description": "Defense rule that fired the workflow.",
              "format": "uuid",
              "title": "Firing Rule Id",
              "type": "string"
            },
            "handler": {
              "description": "Handler ref: 'workflow:<id>' | 'builtin:<name>'.",
              "title": "Handler",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "params": {
              "description": "ActionParamSpec-style bindings for the handler.",
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Params",
              "type": "array"
            },
            "pipeline_run_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Originating pipeline run id.",
              "title": "Pipeline Run Id"
            },
            "retry_count": {
              "default": 0,
              "description": "Bounded-retry attempt counter.",
              "title": "Retry Count",
              "type": "integer"
            },
            "subjects": {
              "description": "Subject primitive ids (the email id).",
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "title": "Subjects",
              "type": "array"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "trace_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Pipeline trace id for correlation.",
              "title": "Trace Id"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "firing_rule_id",
            "handler",
            "facet_slug"
          ],
          "title": "DefenseWorkflowInvokeV1",
          "type": "object"
        },
        "title": "Teleporter fire: a defense rule invokes a facet-action workflow."
      },
      "email.corpus_period_changed_v1": {
        "contentType": "application/json",
        "name": "email.corpus_period_changed",
        "payload": {
          "description": "Emitted when a (account, month-period) slice of COLD email content changes.\n\nA Postgres AFTER trigger on ``email_content`` fires this when a row's\n``in_corpus_eligible`` / ``corpus_period_key`` flips — e.g. an email ages\nout of the rich 30-day window into the cold corpus (nightly refresh →\nmirror trigger), or the operational backfill stamps history. The\nchange-driven ``email-corpus-snapshot`` recipe reacts to it and regenerates\nEXACTLY that ONE period's snapshot (D23 / CC-R3 — never all periods).\n\nThe payload carries ``account_id`` + ``period_key`` ONLY (no body, no\nserver-only ids) — events_outbox is PostgREST-readable by same-tenant\nclients under RLS, and the consumer re-reads the cold rows server-side. The\nrecipe-dispatcher resolves the target slice from these fields.",
          "properties": {
            "account_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Account owning the cold email slice (NULL if unattributed).",
              "title": "Account Id"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "period_key": {
              "description": "The cold-corpus month bucket (YYYY-MM, UTC).",
              "title": "Period Key",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "period_key"
          ],
          "title": "EmailCorpusPeriodChangedV1",
          "type": "object"
        },
        "title": "Emitted when a (account, month-period) slice of COLD email content changes."
      },
      "email.draft_created_v1": {
        "contentType": "application/json",
        "name": "email.draft_created",
        "payload": {
          "description": "Emitted when a new outbound draft is persisted.\n\nCovers both user-created drafts and AI-composed drafts (via draft_source).",
          "properties": {
            "created_by_account_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Account that created the draft (null for AI compose).",
              "title": "Created By Account Id"
            },
            "draft_source": {
              "description": "Origin of the draft.",
              "enum": [
                "manual",
                "ai_compose"
              ],
              "title": "Draft Source",
              "type": "string"
            },
            "email_id": {
              "description": "Draft email ID.",
              "format": "uuid",
              "title": "Email Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "subject": {
              "description": "Draft subject line.",
              "title": "Subject",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "email_id",
            "subject",
            "draft_source"
          ],
          "title": "EmailDraftCreatedV1",
          "type": "object"
        },
        "title": "Emitted when a new outbound draft is persisted."
      },
      "email.extracted_v1": {
        "contentType": "application/json",
        "name": "email.extracted",
        "payload": {
          "description": "Emitted when agent auto-extraction completes for an email.",
          "properties": {
            "email_id": {
              "description": "Canonical email ID that was extracted.",
              "format": "uuid",
              "title": "Email Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "extracted_item_count": {
              "description": "Number of extracted items (tasks, events, contacts, …).",
              "minimum": 0,
              "title": "Extracted Item Count",
              "type": "integer"
            },
            "extraction_summary": {
              "description": "Short human-readable summary of what was extracted.",
              "title": "Extraction Summary",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "email_id",
            "extraction_summary",
            "extracted_item_count"
          ],
          "title": "EmailExtractedV1",
          "type": "object"
        },
        "title": "Emitted when agent auto-extraction completes for an email."
      },
      "email.received_v1": {
        "contentType": "application/json",
        "name": "email.received",
        "payload": {
          "description": "Emitted when a new inbound email is persisted to email_canonical.",
          "properties": {
            "email_id": {
              "description": "Canonical email ID.",
              "format": "uuid",
              "title": "Email Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "from_address": {
              "description": "Sender email address.",
              "title": "From Address",
              "type": "string"
            },
            "has_attachments": {
              "default": false,
              "description": "Whether the email carries one or more attachments.",
              "title": "Has Attachments",
              "type": "boolean"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "received_at": {
              "description": "Canonical ISO UTC arrival timestamp.",
              "format": "date-time",
              "title": "Received At",
              "type": "string"
            },
            "subject": {
              "description": "Email subject line.",
              "title": "Subject",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "to_addresses": {
              "description": "List of recipient addresses.",
              "items": {
                "type": "string"
              },
              "title": "To Addresses",
              "type": "array"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "email_id",
            "from_address",
            "subject",
            "received_at"
          ],
          "title": "EmailReceivedV1",
          "type": "object"
        },
        "title": "Emitted when a new inbound email is persisted to email_canonical."
      },
      "embed.changed_v1": {
        "contentType": "application/json",
        "name": "embed.changed",
        "payload": {
          "description": "Emitted when an embedded facet changes for a recipient.\n\nFanned out per-interactor by the inline-action endpoints (task-toggle,\nevent-rsvp). Recipients are the accounts who have previously\ninteracted with the embed (recorded in `embed_interactions`) and are\nNOT the change author themselves.",
          "properties": {
            "account_id": {
              "description": "Recipient account_id for the notification.",
              "format": "uuid",
              "title": "Account Id",
              "type": "string"
            },
            "change_summary": {
              "description": "Short human description (e.g. 'marked task done').",
              "title": "Change Summary",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "facet_id": {
              "description": "The facet whose underlying doc changed.",
              "format": "uuid",
              "title": "Facet Id",
              "type": "string"
            },
            "facet_type": {
              "description": "Facet type (note, task, event, ...).",
              "title": "Facet Type",
              "type": "string"
            },
            "interactor_account_id": {
              "description": "The account whose action triggered the change.",
              "format": "uuid",
              "title": "Interactor Account Id",
              "type": "string"
            },
            "matrix_event_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Matrix event id of the embed message — used for click-jump.",
              "title": "Matrix Event Id"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Matrix room id of the embed source.",
              "title": "Room Id"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "account_id",
            "facet_type",
            "facet_id",
            "interactor_account_id",
            "change_summary"
          ],
          "title": "EmbedChangedV1",
          "type": "object"
        },
        "title": "Emitted when an embedded facet changes for a recipient."
      },
      "extracted_item.approved_v1": {
        "contentType": "application/json",
        "name": "extracted_item.approved",
        "payload": {
          "description": "Emitted when a pending extracted item is approved by a human.",
          "properties": {
            "approved_by_account_id": {
              "description": "Account that approved the item.",
              "format": "uuid",
              "title": "Approved By Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "extracted_item_id": {
              "description": "Extracted item ID.",
              "format": "uuid",
              "title": "Extracted Item Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "extracted_item_id",
            "approved_by_account_id"
          ],
          "title": "ExtractedItemApprovedV1",
          "type": "object"
        },
        "title": "Emitted when a pending extracted item is approved by a human."
      },
      "extracted_item.pending_review_v1": {
        "contentType": "application/json",
        "name": "extracted_item.pending_review",
        "payload": {
          "description": "Emitted when an extracted item needs human confirmation.",
          "properties": {
            "confidence": {
              "description": "Extraction confidence score 0..1.",
              "maximum": 1.0,
              "minimum": 0.0,
              "title": "Confidence",
              "type": "number"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "extracted_item_id": {
              "description": "Extracted item ID.",
              "format": "uuid",
              "title": "Extracted Item Id",
              "type": "string"
            },
            "extraction_type": {
              "description": "Type of extraction (task, event, contact, …).",
              "title": "Extraction Type",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "extracted_item_id",
            "extraction_type",
            "confidence"
          ],
          "title": "ExtractedItemPendingReviewV1",
          "type": "object"
        },
        "title": "Emitted when an extracted item needs human confirmation."
      },
      "feedback.submitted_v1": {
        "contentType": "application/json",
        "name": "feedback.submitted",
        "payload": {
          "description": "Emitted when a user submits feedback or a feature request.\n\nReplaces the hardcoded bug/feedback → n8n webhook in\napps/web/src/routes/api/v1/feedback/submit/+server.ts (migrated in S7).",
          "properties": {
            "category": {
              "description": "Feedback category (free text tag).",
              "title": "Category",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "feedback_id": {
              "description": "Feedback record ID.",
              "format": "uuid",
              "title": "Feedback Id",
              "type": "string"
            },
            "intent": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Plugin requests: what the member was doing.",
              "title": "Intent"
            },
            "journey": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Plugin requests: the journey it came from.",
              "title": "Journey"
            },
            "journey_step": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Plugin requests: the step within it.",
              "title": "Journey Step"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "offered": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Plugin requests: what WAS on offer there.",
              "title": "Offered"
            },
            "requested_provider": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Plugin requests: the provider asked for.",
              "title": "Requested Provider"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "title": {
              "description": "Feedback title/subject.",
              "title": "Title",
              "type": "string"
            },
            "type": {
              "description": "Feedback type — matches the existing submit form.",
              "enum": [
                "bug",
                "feature",
                "feedback",
                "plugin_request"
              ],
              "title": "Type",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "feedback_id",
            "category",
            "type",
            "title"
          ],
          "title": "FeedbackSubmittedV1",
          "type": "object"
        },
        "title": "Emitted when a user submits feedback or a feature request."
      },
      "huddle.ended_v1": {
        "contentType": "application/json",
        "name": "huddle.ended",
        "payload": {
          "description": "Emitted (in the same transaction as the ended_at flip) when a huddle\nends — explicit end, admin force-end, or auto-end on last leave. The\nchange-driven consumer (CC-R3) reacts to this to drive\ncapture→transcribe→notes; it fires regardless of skip state so metering\nsees every huddle end.",
          "properties": {
            "duration_seconds": {
              "description": "ended_at - started_at, whole seconds.",
              "minimum": 0,
              "title": "Duration Seconds",
              "type": "integer"
            },
            "ended_at": {
              "description": "Huddle end (canonical ISO UTC).",
              "format": "date-time",
              "title": "Ended At",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "huddle_id": {
              "description": "The matrix_huddles row that ended.",
              "format": "uuid",
              "title": "Huddle Id",
              "type": "string"
            },
            "media_plane": {
              "description": "Media plane the huddle ran on (livekit|meet).",
              "title": "Media Plane",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "participant_count": {
              "description": "Distinct participants that ever joined.",
              "minimum": 0,
              "title": "Participant Count",
              "type": "integer"
            },
            "room_id": {
              "description": "Matrix room the huddle ran in.",
              "title": "Room Id",
              "type": "string"
            },
            "started_at": {
              "description": "Huddle start (canonical ISO UTC).",
              "format": "date-time",
              "title": "Started At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "huddle_id",
            "room_id",
            "started_at",
            "ended_at",
            "duration_seconds",
            "media_plane",
            "participant_count"
          ],
          "title": "HuddleEndedV1",
          "type": "object"
        },
        "title": "Emitted (in the same transaction as the ended_at flip) when a huddle"
      },
      "huddle.notes_failed_v1": {
        "contentType": "application/json",
        "name": "huddle.notes_failed",
        "payload": {
          "description": "Emitted when huddle notes production fails terminally\n(transcription_status → failed, after bounded retries).",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "failed_reason": {
              "description": "D2 failure taxonomy: meet_artifact_unavailable | drive_fetch_error | egress_error | asr_error | notes_generation_error | diarization_unavailable | pipeline_timeout | materialization_error.",
              "title": "Failed Reason",
              "type": "string"
            },
            "huddle_id": {
              "description": "The matrix_huddles row whose notes failed.",
              "format": "uuid",
              "title": "Huddle Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room the huddle ran in.",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "huddle_id",
            "room_id",
            "failed_reason"
          ],
          "title": "HuddleNotesFailedV1",
          "type": "object"
        },
        "title": "Emitted when huddle notes production fails terminally"
      },
      "huddle.notes_ready_v1": {
        "contentType": "application/json",
        "name": "huddle.notes_ready",
        "payload": {
          "description": "Emitted when a huddle's AI notes note is materialized\n(transcription_status → complete).",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "huddle_id": {
              "description": "The matrix_huddles row the notes belong to.",
              "format": "uuid",
              "title": "Huddle Id",
              "type": "string"
            },
            "notes_note_id": {
              "description": "The notes row holding the huddle notes.",
              "format": "uuid",
              "title": "Notes Note Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "room_id": {
              "description": "Matrix room the huddle ran in.",
              "title": "Room Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "huddle_id",
            "room_id",
            "notes_note_id"
          ],
          "title": "HuddleNotesReadyV1",
          "type": "object"
        },
        "title": "Emitted when a huddle's AI notes note is materialized"
      },
      "interaction.rollup_updated_v1": {
        "contentType": "application/json",
        "name": "interaction.rollup_updated",
        "payload": {
          "description": "Emitted when a per-(owner, sender) interaction-telemetry rollup changed.\n\nTIDY-13031 (Inbox Defense B / S1, R7 / D5). The batch-ingest endpoint\nupserts the day's ``analytics_daily_habits`` engagement columns and the\n``analytics_sender_engagement`` per-sender aggregate in ONE transaction,\nthen emits this inside that same transaction so the delta commits\natomically with the rollup. Change-driven consumers: memory-service's\nsalience machinery (Hebbian rejuvenate/age of embeddings and graph edges)\nand rule health (B2) / suggestions (B3).\n\nPayload carries ``owner_id`` + ``sender_key`` + ``day`` ONLY — events_outbox\nis PostgREST-readable by same-tenant clients under RLS, so no server-only\nids or raw durations appear.",
          "properties": {
            "day": {
              "description": "UTC rollup day (YYYY-MM-DD) that changed.",
              "title": "Day",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "owner_id": {
              "description": "Member whose private telemetry rolled up.",
              "format": "uuid",
              "title": "Owner Id",
              "type": "string"
            },
            "sender_key": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Normalized sender addr/domain the slice belongs to.",
              "title": "Sender Key"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "owner_id",
            "day"
          ],
          "title": "InteractionRollupUpdatedV1",
          "type": "object"
        },
        "title": "Emitted when a per-(owner, sender) interaction-telemetry rollup changed."
      },
      "lead.converted_v1": {
        "contentType": "application/json",
        "name": "lead.converted",
        "payload": {
          "description": "Emitted when an invite-code redemption joins back to a CRM lead.\n\nWritten INSIDE the tenant-provision transaction (transactional outbox —\na provision rollback leaves no orphan conversion, and the invite gate's\nFOR UPDATE single-winner semantics carry over). ``match='code'`` is the\ndeterministic path: the redeemed code was assigned to a lead via\n``crm_lead_code_assignments``, so the payload carries that lead's ids and\n``tenant_id`` is the CRM tenant. ``match='email'`` is the F8 fallback for\na redemption with no assignment (or no code): ``contact_id`` /\n``campaign_id`` are null, ``tenant_id`` is the NEW tenant, and the\norchestrator conversion consumer resolves the signup email — exactly one\nlead-faceted match links with source='email_match', multiple matches land\nin the review log, zero matches have no CRM side effects (R8).",
          "properties": {
            "account_id": {
              "description": "The account that redeemed and provisioned.",
              "format": "uuid",
              "title": "Account Id",
              "type": "string"
            },
            "campaign_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "The assigning campaign (records.id) for match='code'; null for 'email'.",
              "title": "Campaign Id"
            },
            "contact_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "The assigned lead (contacts.id) for match='code'; null for 'email'.",
              "title": "Contact Id"
            },
            "email": {
              "description": "The signup email, normalized (lowercased).",
              "title": "Email",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "match": {
              "description": "'code' = assigned-code join (deterministic); 'email' = F8 fallback.",
              "enum": [
                "code",
                "email"
              ],
              "title": "Match",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "redeemed_at": {
              "description": "When the invite code was redeemed inside the provision transaction.",
              "format": "date-time",
              "title": "Redeemed At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "account_id",
            "email",
            "match",
            "redeemed_at"
          ],
          "title": "LeadConvertedV1",
          "type": "object"
        },
        "title": "Emitted when an invite-code redemption joins back to a CRM lead."
      },
      "memory.co_click_recorded_v1": {
        "contentType": "application/json",
        "name": "memory.co_click_recorded",
        "payload": {
          "description": "Emitted when a co-click behavior signal lands in evidence_events.\n\nDrives the change-driven Hebbian consumer (TIDY-8702): the\nrecipe-dispatcher routes this to the ``hebbian-consumer`` recipe, which\nreads new co-click ``evidence_events`` since the per-tenant watermark and\nreinforces CO_OCCURS_WITH edges in ``linked_references``. This event carries\nNO edge data — it is purely the change-notification that wakes the consumer;\n``evidence_events`` remains the single source of truth for co-click signals\n(no competing signal path). Advisory only: the consumer re-reads the\nwatermark window and is idempotent under replay.",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at"
          ],
          "title": "MemoryCoClickRecordedV1",
          "type": "object"
        },
        "title": "Emitted when a co-click behavior signal lands in evidence_events."
      },
      "memory.entity_updated_v1": {
        "contentType": "application/json",
        "name": "memory.entity_updated",
        "payload": {
          "description": "Emitted when a curatable entity gains new observations (facts/edges).\n\nDrives the change-driven Dreamer (TIDY-8712): the recipe-dispatcher routes\nthis to the ``dreamer`` recipe, scoped to the affected ``entity_id`` (carried\nas the event's ``resource_id``), never all entities (D23). ``new_observation``\ncounts are advisory; the Dreamer trigger evaluator re-counts against\n``dreamer_run_log.last_run_at`` before firing.",
          "properties": {
            "entity_id": {
              "description": "Primary-key id of the curatable entity.",
              "format": "uuid",
              "title": "Entity Id",
              "type": "string"
            },
            "entity_type": {
              "description": "Curatable primitive type the observation attaches to.",
              "enum": [
                "contact",
                "organization",
                "calendar_event",
                "activity",
                "project",
                "note"
              ],
              "title": "Entity Type",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "new_observation_count": {
              "default": 0,
              "description": "Advisory count of new observations since the last update.",
              "minimum": 0,
              "title": "New Observation Count",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "entity_type",
            "entity_id"
          ],
          "title": "MemoryEntityUpdatedV1",
          "type": "object"
        },
        "title": "Emitted when a curatable entity gains new observations (facts/edges)."
      },
      "memory.search_click_recorded_v1": {
        "contentType": "application/json",
        "name": "memory.search_click_recorded",
        "payload": {
          "description": "Emitted when a single-result search-click behavior signal lands.\n\nDrives the change-driven Search Reinforcement consumer (TIDY-8717): the\nrecipe-dispatcher routes this to the ``search-reinforcement`` recipe, which\nreads new single-result click ``evidence_events`` since the per-tenant\nwatermark and (1) reinforces each clicked entity's ACT-R relevance\n(``entities.access_count`` / ``last_accessed_at``) so frequently-opened\nresults rank higher, and (2) triggers the rolling-summary refresh for\nentities whose accrued click count crosses the threshold. This event carries\nNO click data — it is purely the change-notification that wakes the\nconsumer; ``evidence_events`` remains the single source of truth for click\nsignals (no competing signal path). Advisory only: the consumer re-reads the\nwatermark window and is idempotent under replay.",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at"
          ],
          "title": "MemorySearchClickRecordedV1",
          "type": "object"
        },
        "title": "Emitted when a single-result search-click behavior signal lands."
      },
      "note.banner_requested_v1": {
        "contentType": "application/json",
        "name": "note.banner_requested",
        "payload": {
          "description": "Emitted after a note-family facet create/enrich that carried >=1 image.\n\nSignals the S6 photo-worker banner-compose path (reusing the collage\ncomposer + TIDY-12183 tiers) to compose a banner from the note's attached\nphotos. This endpoint does not compose the banner itself; it only signals.\n\nThe payload carries ``note_id`` ONLY (plus the image count). events_outbox is\nPostgREST-readable by same-tenant clients under RLS, so no server-only data\ngoes in the payload — the worker re-reads the note's photo state server-side\nfrom ``note_id`` (mirrors collage.composition_changed).",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "image_count": {
              "description": "Number of captured images that triggered the request.",
              "minimum": 1,
              "title": "Image Count",
              "type": "integer"
            },
            "note_id": {
              "description": "The note-family row whose photos drive the banner.",
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "note_id",
            "image_count"
          ],
          "title": "NoteBannerRequestedV1",
          "type": "object"
        },
        "title": "Emitted after a note-family facet create/enrich that carried >=1 image."
      },
      "note.updated_v1": {
        "contentType": "application/json",
        "name": "note.updated",
        "payload": {
          "description": "Emitted when a note is updated. Batched per R12 — one event per\ndebounced save, not per keystroke.",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "note_id": {
              "description": "Note ID.",
              "format": "uuid",
              "title": "Note Id",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "title": {
              "description": "Note title at time of save.",
              "title": "Title",
              "type": "string"
            },
            "updated_at": {
              "description": "Canonical ISO UTC save time.",
              "format": "date-time",
              "title": "Updated At",
              "type": "string"
            },
            "word_count": {
              "description": "Approximate word count after save.",
              "minimum": 0,
              "title": "Word Count",
              "type": "integer"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "note_id",
            "title",
            "word_count",
            "updated_at"
          ],
          "title": "NoteUpdatedV1",
          "type": "object"
        },
        "title": "Emitted when a note is updated. Batched per R12 — one event per"
      },
      "pipeline.entitlement_stage_changed_v1": {
        "contentType": "application/json",
        "name": "pipeline.entitlement_stage_changed",
        "payload": {
          "description": "Emitted when the email-pipeline overage ladder advances to a new stage.\n\nF4-S1 (TIDY-12063). The processing gate at the OutboxWorker evaluates the\nper-cycle entitlement (D12) and, when the ladder position changes\n(normal→grace→courtesy→credits→paused, or a self-heal back toward normal on\ntop-up/reset), emits this inside the gate transaction. The change-driven\nF4-S2 consumer renders the per-stage notice (in-app + owner email) and the\npersistent paused banner; ``grace`` stays silent by design.\n\nPayload carries ``cycle_start`` + ``stage`` + ``previous_stage`` +\n``reset_date`` + utilization counters ONLY — events_outbox is\nPostgREST-readable by same-tenant clients under RLS, so no server-only ids\nappear. The banner reads ``reset_date`` + ``stage`` directly.",
          "properties": {
            "cycle_start": {
              "description": "Billing-cycle start (YYYY-MM-DD) this stage belongs to.",
              "title": "Cycle Start",
              "type": "string"
            },
            "emails_allotted": {
              "description": "Cycle email-processing allotment.",
              "title": "Emails Allotted",
              "type": "integer"
            },
            "emails_processed": {
              "description": "Emails AI-processed so far this cycle.",
              "title": "Emails Processed",
              "type": "integer"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "previous_stage": {
              "description": "Stage the cycle was in before this transition.",
              "title": "Previous Stage",
              "type": "string"
            },
            "reset_date": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Cycle end / entitlement reset date (YYYY-MM-DD), for the banner.",
              "title": "Reset Date"
            },
            "stage": {
              "description": "New ladder stage: grace|courtesy|credits|paused|normal.",
              "title": "Stage",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "cycle_start",
            "stage",
            "previous_stage",
            "emails_processed",
            "emails_allotted"
          ],
          "title": "PipelineEntitlementStageChangedV1",
          "type": "object"
        },
        "title": "Emitted when the email-pipeline overage ladder advances to a new stage."
      },
      "podcast.cut_created_v1": {
        "contentType": "application/json",
        "name": "podcast.cut_created",
        "payload": {
          "description": "Emitted when an extracted audio cut (highlight) is persisted.",
          "properties": {
            "end_seconds": {
              "description": "Cut end offset in seconds.",
              "minimum": 0,
              "title": "End Seconds",
              "type": "number"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "podcast_cut_id": {
              "description": "Podcast cut ID.",
              "format": "uuid",
              "title": "Podcast Cut Id",
              "type": "string"
            },
            "source_episode_id": {
              "description": "Episode the cut was extracted from.",
              "format": "uuid",
              "title": "Source Episode Id",
              "type": "string"
            },
            "start_seconds": {
              "description": "Cut start offset in seconds.",
              "minimum": 0,
              "title": "Start Seconds",
              "type": "number"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "podcast_cut_id",
            "source_episode_id",
            "start_seconds",
            "end_seconds"
          ],
          "title": "PodcastCutCreatedV1",
          "type": "object"
        },
        "title": "Emitted when an extracted audio cut (highlight) is persisted."
      },
      "podcast.transcribed_v1": {
        "contentType": "application/json",
        "name": "podcast.transcribed",
        "payload": {
          "description": "Emitted when a podcast episode transcript is produced.",
          "properties": {
            "duration_seconds": {
              "description": "Episode duration in seconds.",
              "minimum": 0,
              "title": "Duration Seconds",
              "type": "integer"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "podcast_episode_id": {
              "description": "Podcast episode ID.",
              "format": "uuid",
              "title": "Podcast Episode Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "transcript_word_count": {
              "description": "Transcript word count.",
              "minimum": 0,
              "title": "Transcript Word Count",
              "type": "integer"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "podcast_episode_id",
            "duration_seconds",
            "transcript_word_count"
          ],
          "title": "PodcastTranscribedV1",
          "type": "object"
        },
        "title": "Emitted when a podcast episode transcript is produced."
      },
      "record.form_submitted_v1": {
        "contentType": "application/json",
        "name": "record.form_submitted",
        "payload": {
          "description": "Emitted when a member submits an html_block form.\n\nProduced inside the same transaction as the domain write (the created\nrecord for ``create`` mode, or the block's ``properties.form_state``\nreplacement for ``self`` mode). One submission = one write + one event\n(D5, atomic submit). The change-driven recipe dispatcher scopes recipes to\nthe event's ``resource_id`` — the created record for create mode, the block\nrecord for self mode — so submission-triggered automations need no new\ntrigger machinery (R8).\n\nThe payload carries ids + mode ONLY. events_outbox is PostgREST-readable by\nsame-tenant clients under RLS, so the submitted answers and the provenance\n``_form_raw`` NEVER appear here — a consumer that needs the values re-reads\nthe created record server-side (mirrors comment.mention / collage payloads).",
          "properties": {
            "actor_account_id": {
              "description": "Account of the member who submitted the form (the row owner).",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "block_record_id": {
              "description": "The html_block record that was submitted.",
              "format": "uuid",
              "title": "Block Record Id",
              "type": "string"
            },
            "created_record_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "The created record's id for create mode; null for self mode.",
              "title": "Created Record Id"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "mode": {
              "description": "Submission mode: 'create' (new target-facet record) or 'self' (block state).",
              "enum": [
                "create",
                "self"
              ],
              "title": "Mode",
              "type": "string"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "target_facet": {
              "description": "Facet slug the submission created; 'html_block' for self mode.",
              "title": "Target Facet",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "block_record_id",
            "mode",
            "target_facet",
            "actor_account_id"
          ],
          "title": "RecordFormSubmittedV1",
          "type": "object"
        },
        "title": "Emitted when a member submits an html_block form."
      },
      "sandbox.auto_reset_v1": {
        "contentType": "application/json",
        "name": "sandbox.auto_reset",
        "payload": {
          "description": "Emitted when the cron auto-resets a sandbox tenant past its idle window.",
          "properties": {
            "days_idle": {
              "description": "How long the sandbox went unused before reset.",
              "title": "Days Idle",
              "type": "integer"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "reset_count": {
              "description": "Cumulative reset count after this reset.",
              "title": "Reset Count",
              "type": "integer"
            },
            "seed_version": {
              "description": "Seed version used to repopulate the sandbox.",
              "title": "Seed Version",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "days_idle",
            "seed_version",
            "reset_count"
          ],
          "title": "SandboxAutoResetV1",
          "type": "object"
        },
        "title": "Emitted when the cron auto-resets a sandbox tenant past its idle window."
      },
      "sandbox.reset_v1": {
        "contentType": "application/json",
        "name": "sandbox.reset",
        "payload": {
          "description": "Emitted when a sandbox tenant is manually reset via POST /api/v1/sandbox/reset.",
          "properties": {
            "actor_account_id": {
              "description": "Account that triggered the reset.",
              "format": "uuid",
              "title": "Actor Account Id",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "reset_count": {
              "description": "Cumulative reset count after this reset.",
              "title": "Reset Count",
              "type": "integer"
            },
            "seed_version": {
              "description": "Seed version used to repopulate the sandbox.",
              "title": "Seed Version",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "actor_account_id",
            "seed_version",
            "reset_count"
          ],
          "title": "SandboxResetV1",
          "type": "object"
        },
        "title": "Emitted when a sandbox tenant is manually reset via POST /api/v1/sandbox/reset."
      },
      "sandbox.send_blocked_v1": {
        "contentType": "application/json",
        "name": "sandbox.send_blocked",
        "payload": {
          "description": "Emitted when an outbound email/SMS from a sandbox tenant is blocked by the allowlist.",
          "properties": {
            "channel": {
              "description": "Outbound channel.",
              "enum": [
                "email",
                "sms"
              ],
              "title": "Channel",
              "type": "string"
            },
            "destination": {
              "description": "Intended recipient (email or phone).",
              "title": "Destination",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "reason": {
              "description": "Why the send was blocked.",
              "title": "Reason",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "would_send_preview": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Sanitized preview of the message that would have been sent.",
              "title": "Would Send Preview",
              "type": "object"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "channel",
            "destination",
            "reason"
          ],
          "title": "SandboxSendBlockedV1",
          "type": "object"
        },
        "title": "Emitted when an outbound email/SMS from a sandbox tenant is blocked by the allowlist."
      },
      "task.completed_v1": {
        "contentType": "application/json",
        "name": "task.completed",
        "payload": {
          "description": "Emitted when a task transitions to completed state.",
          "properties": {
            "completed_at": {
              "description": "Completion timestamp.",
              "format": "date-time",
              "title": "Completed At",
              "type": "string"
            },
            "completed_by_account_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Account that completed the task (null for automation).",
              "title": "Completed By Account Id"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "task_id": {
              "description": "Task ID.",
              "format": "uuid",
              "title": "Task Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "task_id",
            "completed_at"
          ],
          "title": "TaskCompletedV1",
          "type": "object"
        },
        "title": "Emitted when a task transitions to completed state."
      },
      "task.created_v1": {
        "contentType": "application/json",
        "name": "task.created",
        "payload": {
          "description": "Emitted when a new task is created.",
          "properties": {
            "due_at": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Due timestamp if set (canonical ISO UTC).",
              "title": "Due At"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "source": {
              "description": "Where the task came from.",
              "enum": [
                "user",
                "extraction",
                "automation"
              ],
              "title": "Source",
              "type": "string"
            },
            "task_id": {
              "description": "Task ID.",
              "format": "uuid",
              "title": "Task Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "title": {
              "description": "Task title.",
              "title": "Title",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "task_id",
            "title",
            "source"
          ],
          "title": "TaskCreatedV1",
          "type": "object"
        },
        "title": "Emitted when a new task is created."
      },
      "task.due_soon_v1": {
        "contentType": "application/json",
        "name": "task.due_soon",
        "payload": {
          "description": "Emitted when a task's due time is within the approaching-deadline window.",
          "properties": {
            "due_at": {
              "description": "Due timestamp.",
              "format": "date-time",
              "title": "Due At",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "task_id": {
              "description": "Task ID.",
              "format": "uuid",
              "title": "Task Id",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "time_until_due_minutes": {
              "description": "Minutes remaining until due (may be negative if overdue).",
              "title": "Time Until Due Minutes",
              "type": "integer"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "task_id",
            "due_at",
            "time_until_due_minutes"
          ],
          "title": "TaskDueSoonV1",
          "type": "object"
        },
        "title": "Emitted when a task's due time is within the approaching-deadline window."
      },
      "workflow.completed_v1": {
        "contentType": "application/json",
        "name": "workflow.completed",
        "payload": {
          "description": "Emitted when a workflow run reaches a successful terminal state.",
          "properties": {
            "duration_ms": {
              "description": "Total run duration in milliseconds.",
              "minimum": 0,
              "title": "Duration Ms",
              "type": "integer"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "outcome_summary": {
              "description": "Short human-readable summary of the outcome.",
              "title": "Outcome Summary",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "workflow_name": {
              "description": "Workflow name/kind.",
              "title": "Workflow Name",
              "type": "string"
            },
            "workflow_run_id": {
              "description": "Workflow run ID.",
              "format": "uuid",
              "title": "Workflow Run Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "workflow_run_id",
            "workflow_name",
            "duration_ms",
            "outcome_summary"
          ],
          "title": "WorkflowCompletedV1",
          "type": "object"
        },
        "title": "Emitted when a workflow run reaches a successful terminal state."
      },
      "workflow.execution_completed_v1": {
        "contentType": "application/json",
        "name": "workflow.execution_completed",
        "payload": {
          "description": "Emitted by the sandbox execution finalizer on every terminal run.\n\nTIDY-11351 (S3). The event-dispatcher subscribes to this and resumes a\npending ``assistant_continuations`` row keyed on ``workflow_run_id`` so a\nbackground job's completion re-engages the assistant in the original\nconversation. ``workflow_run_id`` is the Temporal-run text id\n(``<trigger>-<script_id>-<exec8>``), NOT a bare UUID.",
          "properties": {
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "exit_code": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Process exit code.",
              "title": "Exit Code"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "skill_id": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Skill that drove the run, if any.",
              "title": "Skill Id"
            },
            "status": {
              "description": "Terminal status: completed/failed/timeout/...",
              "title": "Status",
              "type": "string"
            },
            "summary": {
              "default": "",
              "description": "Bounded human-readable run summary (stdout slice).",
              "title": "Summary",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "workflow_run_id": {
              "description": "Temporal run id (text).",
              "title": "Workflow Run Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "workflow_run_id",
            "status"
          ],
          "title": "WorkflowExecutionCompletedV1",
          "type": "object"
        },
        "title": "Emitted by the sandbox execution finalizer on every terminal run."
      },
      "workflow.failed_v1": {
        "contentType": "application/json",
        "name": "workflow.failed",
        "payload": {
          "description": "Emitted when a workflow run reaches a failed terminal state.",
          "properties": {
            "error_message": {
              "description": "Human-readable error message.",
              "title": "Error Message",
              "type": "string"
            },
            "error_type": {
              "description": "Machine-readable error category.",
              "title": "Error Type",
              "type": "string"
            },
            "event_id": {
              "description": "Unique ID for this event occurrence.",
              "format": "uuid",
              "title": "Event Id",
              "type": "string"
            },
            "event_version": {
              "const": 1,
              "default": 1,
              "title": "Event Version",
              "type": "integer"
            },
            "occurred_at": {
              "description": "Canonical ISO UTC timestamp when the event occurred (YYYY-MM-DDTHH:MM:SS.sssZ per Tidy Time Standard).",
              "format": "date-time",
              "title": "Occurred At",
              "type": "string"
            },
            "tenant_id": {
              "description": "Tenant the event belongs to.",
              "format": "uuid",
              "title": "Tenant Id",
              "type": "string"
            },
            "workflow_name": {
              "description": "Workflow name/kind.",
              "title": "Workflow Name",
              "type": "string"
            },
            "workflow_run_id": {
              "description": "Workflow run ID.",
              "format": "uuid",
              "title": "Workflow Run Id",
              "type": "string"
            }
          },
          "required": [
            "event_id",
            "tenant_id",
            "occurred_at",
            "workflow_run_id",
            "workflow_name",
            "error_type",
            "error_message"
          ],
          "title": "WorkflowFailedV1",
          "type": "object"
        },
        "title": "Emitted when a workflow run reaches a failed terminal state."
      }
    }
  },
  "info": {
    "description": "Tidy event-driven surfaces: webhooks, SSE, MCP notifications. Canonical contract per D19. Breaking payload changes introduce new event types (e.g. email.received.v2) with a 12-month deprecation window on the predecessor.",
    "title": "Tidy Events",
    "version": "1.0.0"
  }
}
