# Outgoing OAuth app webhook payloads. Keep aligned with backend/app/views/v1/webhooks/ and the public resource partials.
---
openapi: 3.1.0
info:
  title: Slant Webhooks
  version: v1
  description: Outgoing HTTP events for OAuth app subscriptions. Payloads document
    partner deliveries with subscription context. See /api-reference/webhooks for
    setup and delivery handling.
webhooks:
  meeting.created:
    post:
      operationId: meeting_created
      summary: meeting.created
      description: |-
        Sent when a meeting is created. Initial notes and links do not also emit `meeting.updated`. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. Fetch the current meeting with `GET /v1/meetings/{id}`.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Meetings
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/MeetingEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: meeting.created
            example:
              event_type: meeting.created
              id: meeting_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              meeting:
                id: meeting_public_id
                book_id: book_public_id
                title: Annual review
                start_time: '2026-10-19T15:00:00Z'
                end_time: '2026-10-19T16:00:00Z'
                duration_seconds: 3600
                meeting_link:
                meeting_source: calendar_event
                meeting_type: other
                households:
                - id: household_public_id
                  name: Example household
                contacts: []
                businesses: []
                users: []
                has_transcript: false
                has_recordings: false
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T14:00:00Z'
                quick_summary:
                ai_summary:
                notepad: Discuss the retirement plan.
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  meeting.updated:
    post:
      operationId: meeting_updated
      summary: meeting.updated
      description: |-
        Sent when a meeting is updated, its linked records change, or its AI summary or notepad changes. Initial content and links added during creation do not emit an extra update. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. Fetch the current meeting with `GET /v1/meetings/{id}`.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Meetings
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/MeetingEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: meeting.updated
            example:
              event_type: meeting.updated
              id: meeting_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              meeting:
                id: meeting_public_id
                book_id: book_public_id
                title: Annual review
                start_time: '2026-10-19T15:00:00Z'
                end_time: '2026-10-19T16:00:00Z'
                duration_seconds: 3600
                meeting_link:
                meeting_source: calendar_event
                meeting_type: other
                households:
                - id: household_public_id
                  name: Example household
                contacts: []
                businesses: []
                users: []
                has_transcript: false
                has_recordings: false
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T14:00:00Z'
                quick_summary:
                ai_summary:
                notepad: Discuss the retirement plan.
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  meeting.deleted:
    post:
      operationId: meeting_deleted
      summary: meeting.deleted
      description: |-
        Sent when a meeting is deleted. This payload contains identifiers only, with no snapshot. Remove your local copy instead of fetching the deleted record.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Meetings
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/MeetingDeletedEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: meeting.deleted
            example:
              event_type: meeting.deleted
              id: meeting_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  meeting.transcript_ready:
    post:
      operationId: meeting_transcript_ready
      summary: meeting.transcript_ready
      description: |-
        Sent when a visible transcript becomes available, its content changes, or it becomes visible to advisors. Empty and hidden transcripts do not trigger this event. The snapshot excludes transcript text; retrieve it with `GET /v1/meetings/{id}/transcript`. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Meetings
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/MeetingEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: meeting.transcript_ready
            example:
              event_type: meeting.transcript_ready
              id: meeting_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              meeting:
                id: meeting_public_id
                book_id: book_public_id
                title: Annual review
                start_time: '2026-10-19T15:00:00Z'
                end_time: '2026-10-19T16:00:00Z'
                duration_seconds: 3600
                meeting_link:
                meeting_source: calendar_event
                meeting_type: other
                households:
                - id: household_public_id
                  name: Example household
                contacts: []
                businesses: []
                users: []
                has_transcript: true
                has_recordings: false
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T14:00:00Z'
                quick_summary:
                ai_summary:
                notepad: Discuss the retirement plan.
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  task.created:
    post:
      operationId: task_created
      summary: task.created
      description: |-
        Sent when an eligible task is created. Initial rich text and tags do not also emit `task.updated`. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. Scheduled and unapproved tasks do not emit these events. Fetch the current task with `GET /v1/tasks/{id}`.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Tasks
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/TaskEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: task.created
            example:
              event_type: task.created
              id: task_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              task:
                id: task_public_id
                book_id: book_public_id
                title: Send review summary
                description: Email the meeting summary.
                deadline_at: '2026-10-20T17:00:00Z'
                all_day: false
                status: todo
                priority: medium_priority
                is_private: false
                completed_at:
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T16:15:00Z'
                assigned_to:
                  id: user_public_id
                  name: Jane Doe
                  email: jane@example.com
                assigned_team:
                record:
                  id: household_public_id
                  type: household
                  name: Example household
                tags: []
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  task.updated:
    post:
      operationId: task_updated
      summary: task.updated
      description: |-
        Sent when an eligible task changes, including its title, description, or tags. Completion and reopening also emit this event. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. Scheduled and unapproved tasks do not emit these events. Fetch the current task with `GET /v1/tasks/{id}`.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Tasks
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/TaskEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: task.updated
            example:
              event_type: task.updated
              id: task_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              task:
                id: task_public_id
                book_id: book_public_id
                title: Send review summary
                description: Email the meeting summary.
                deadline_at: '2026-10-20T17:00:00Z'
                all_day: false
                status: todo
                priority: medium_priority
                is_private: false
                completed_at:
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T16:15:00Z'
                assigned_to:
                  id: user_public_id
                  name: Jane Doe
                  email: jane@example.com
                assigned_team:
                record:
                  id: household_public_id
                  type: household
                  name: Example household
                tags: []
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  task.completed:
    post:
      operationId: task_completed
      summary: task.completed
      description: |-
        Sent when a task is completed. This also emits `task.updated`. A task reopened before delivery can appear as `todo` in this snapshot. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. Scheduled and unapproved tasks do not emit these events. Fetch the current task with `GET /v1/tasks/{id}`.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Tasks
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/TaskEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: task.completed
            example:
              event_type: task.completed
              id: task_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              task:
                id: task_public_id
                book_id: book_public_id
                title: Send review summary
                description: Email the meeting summary.
                deadline_at: '2026-10-20T17:00:00Z'
                all_day: false
                status: done
                priority: medium_priority
                is_private: false
                completed_at: '2026-10-19T16:15:00Z'
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T16:15:00Z'
                assigned_to:
                  id: user_public_id
                  name: Jane Doe
                  email: jane@example.com
                assigned_team:
                record:
                  id: household_public_id
                  type: household
                  name: Example household
                tags: []
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  task.reopened:
    post:
      operationId: task_reopened
      summary: task.reopened
      description: |-
        Sent only when a completed task moves from `done` to `todo`. This also emits `task.updated`. Creating or editing an incomplete task does not trigger it. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. Scheduled and unapproved tasks do not emit these events. Fetch the current task with `GET /v1/tasks/{id}`.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Tasks
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/TaskEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: task.reopened
            example:
              event_type: task.reopened
              id: task_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              task:
                id: task_public_id
                book_id: book_public_id
                title: Send review summary
                description: Email the meeting summary.
                deadline_at: '2026-10-20T17:00:00Z'
                all_day: false
                status: todo
                priority: medium_priority
                is_private: false
                completed_at:
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T16:15:00Z'
                assigned_to:
                  id: user_public_id
                  name: Jane Doe
                  email: jane@example.com
                assigned_team:
                record:
                  id: household_public_id
                  type: household
                  name: Example household
                tags: []
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  task.deleted:
    post:
      operationId: task_deleted
      summary: task.deleted
      description: |-
        Sent when a task is deleted. This payload contains identifiers only, with no snapshot. Remove your local copy instead of fetching the deleted record. Scheduled and unapproved tasks do not emit these events.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Tasks
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/TaskDeletedEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: task.deleted
            example:
              event_type: task.deleted
              id: task_public_id
              book_id: book_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  note.created:
    post:
      operationId: note_created
      summary: note.created
      description: |-
        Sent when a note is created. Initial content and tags do not also emit `note.updated`. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. The envelope includes applicable parent IDs. Retrieve notes through `/v1/households/{household_id}/notes/{id}`, `/v1/contacts/{contact_id}/notes/{id}`, or `/v1/businesses/{business_id}/notes/{id}`; there is no top-level note endpoint.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Notes
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/NoteEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: note.created
            example:
              event_type: note.created
              id: note_public_id
              book_id: book_public_id
              household_id: household_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              note:
                id: note_public_id
                pinned: false
                hidden: false
                tag_ids: []
                book_id: book_public_id
                household_id: household_public_id
                created_by_id: user_public_id
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T16:00:00Z'
                notable_type: Household
                notable_id: household_public_id
                content: "Discussed the retirement plan.\n\n"
                references: []
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  note.updated:
    post:
      operationId: note_updated
      summary: note.updated
      description: |-
        Sent when a note, its content, or its tags change. Initial content and tags added during creation do not emit an extra update. The snapshot is prepared asynchronously and may reflect changes made after the triggering event. Use its `updated_at` to reconcile local state. The envelope includes applicable parent IDs. Retrieve notes through `/v1/households/{household_id}/notes/{id}`, `/v1/contacts/{contact_id}/notes/{id}`, or `/v1/businesses/{business_id}/notes/{id}`; there is no top-level note endpoint.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Notes
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/NoteEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: note.updated
            example:
              event_type: note.updated
              id: note_public_id
              book_id: book_public_id
              household_id: household_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
              note:
                id: note_public_id
                pinned: false
                hidden: false
                tag_ids: []
                book_id: book_public_id
                household_id: household_public_id
                created_by_id: user_public_id
                created_at: '2026-10-15T12:00:00Z'
                updated_at: '2026-10-19T16:00:00Z'
                notable_type: Household
                notable_id: household_public_id
                content: "Discussed the retirement plan.\n\n"
                references: []
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  note.deleted:
    post:
      operationId: note_deleted
      summary: note.deleted
      description: |-
        Sent when a note is deleted. This payload contains identifiers only, with no snapshot. Remove your local copy instead of fetching the deleted record. The envelope retains applicable parent IDs after deletion.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Notes
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/NoteDeletedEvent"
              - type: object
                properties:
                  event_type:
                    type: string
                    const: note.deleted
            example:
              event_type: note.deleted
              id: note_public_id
              book_id: book_public_id
              household_id: household_public_id
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  client.created:
    post:
      operationId: client_created
      summary: client.created
      description: |-
        Sent when a client is created. Record fields appear directly at the top level. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Clients
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ClientCreatedEvent"
            example:
              id: client_public_id
              name: Example household
              status: active
              tier:
              aum:
              became_client_at:
              type: client
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  client.updated:
    post:
      operationId: client_updated
      summary: client.updated
      description: |-
        Sent when a client is updated. The record is nested under `client`. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event. Changes are grouped in a 60-second debounce window. `changed_fields` contains accumulated field names, not previous values or a patch.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Clients
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ClientUpdatedEvent"
            example:
              client:
                id: client_public_id
                name: Updated household
                status: active
                tier:
                aum:
                became_client_at:
                type: client
              changed_fields:
              - status
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  prospect.created:
    post:
      operationId: prospect_created
      summary: prospect.created
      description: |-
        Sent when a prospect is created. Record fields appear directly at the top level. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Prospects
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ProspectCreatedEvent"
            example:
              id: prospect_public_id
              name: Example household
              status: active
              tier:
              type: prospect
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  prospect.updated:
    post:
      operationId: prospect_updated
      summary: prospect.updated
      description: |-
        Sent when a prospect is updated. The record is nested under `prospect`. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event. Changes are grouped in a 60-second debounce window. `changed_fields` contains accumulated field names, not previous values or a patch.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Prospects
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ProspectUpdatedEvent"
            example:
              prospect:
                id: prospect_public_id
                name: Updated household
                status: active
                tier:
                type: prospect
              changed_fields:
              - status
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  contact.created:
    post:
      operationId: contact_created
      summary: contact.created
      description: |-
        Sent when a contact is created. Record fields appear directly at the top level. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Contacts
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ContactCreatedEvent"
            example:
              id: contact_public_id
              status: active
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  contact.updated:
    post:
      operationId: contact_updated
      summary: contact.updated
      description: |-
        Sent when a contact is updated. The record is nested under `contact`. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event. Changes are grouped in a 60-second debounce window. `changed_fields` contains accumulated field names, not previous values or a patch.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Contacts
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ContactUpdatedEvent"
            example:
              contact:
                id: contact_public_id
                status: active
              changed_fields:
              - status
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  person.updated:
    post:
      operationId: person_updated
      summary: person.updated
      description: |-
        Sent when a person is updated. The record is nested under `person`. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event. Changes are grouped in a 60-second debounce window. `changed_fields` contains accumulated field names, not previous values or a patch.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - People
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PersonUpdatedEvent"
            example:
              person:
                id: person_public_id
                first_name: Jane
                last_name: Doe
                full_name: Jane Doe
                preferred_name:
                middle_name:
                salutation:
                suffix:
                designations:
                gender:
                marital_status:
                job_title:
                linkedin_url:
                household_role:
                date_of_birth:
                date_of_death:
                email:
                phone_number:
                email_addresses: []
                phone_numbers: []
                addresses: []
                employments: []
              changed_fields:
              - first_name
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  household.tag_added:
    post:
      operationId: household_tag_added
      summary: household.tag_added
      description: |-
        Sent when a tag is added to a household. Use `household.id` to identify the household; the top-level `id` is a generated event identifier. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Households
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/HouseholdTagEvent"
            example:
              id: 550e8400-e29b-41d4-a716-446655440000
              household:
                id: household_public_id
                type: client
              tag_id: tag_public_id
              tag_name: Annual review
              subscription_id: subscription_public_id
              user_id: user_public_id
              book_id: book_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  related_record.created:
    post:
      operationId: related_record_created
      summary: related_record.created
      description: |-
        Sent when a relationship link between two records is created. `id` identifies the link; `source_type`/`source_id` and `target_type`/`target_id` identify its endpoints. This describes the relationship, not either record’s contents. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Related records
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/RelatedRecordEvent"
            example:
              id: link_public_id
              book_id: book_public_id
              source_type: Household
              source_id: household_public_id
              target_type: Contact
              target_id: contact_public_id
              source_label: Example household
              target_label: Jane Doe
              relationship_to_source: Client
              relationship_to_target: Accountant
              created_at: '2026-10-15T12:00:00Z'
              updated_at: '2026-10-15T12:05:00Z'
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  related_record.updated:
    post:
      operationId: related_record_updated
      summary: related_record.updated
      description: |-
        Sent when a relationship link between two records is updated. `id` identifies the link; `source_type`/`source_id` and `target_type`/`target_id` identify its endpoints. This describes the relationship, not either record’s contents. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Related records
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/RelatedRecordEvent"
            example:
              id: link_public_id
              book_id: book_public_id
              source_type: Household
              source_id: household_public_id
              target_type: Contact
              target_id: contact_public_id
              source_label: Example household
              target_label: Jane Doe
              relationship_to_source: Client
              relationship_to_target: Accountant
              created_at: '2026-10-15T12:00:00Z'
              updated_at: '2026-10-15T12:05:00Z'
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
  related_record.destroyed:
    post:
      operationId: related_record_destroyed
      summary: related_record.destroyed
      description: |-
        Sent when a relationship link between two records is destroyed. `id` identifies the link; `source_type`/`source_id` and `target_type`/`target_id` identify its endpoints. This describes the relationship, not either record’s contents. This payload has no `event_type` field. To identify the exact event name, configure a separate endpoint URL filtered to this event.

        Verify the raw request body before processing. See the [webhook overview](/api-reference/webhooks) for signing, retries, subscription context, and ordering.
      tags:
      - Related records
      security: []
      parameters:
      - "$ref": "#/components/parameters/svix-id"
      - "$ref": "#/components/parameters/svix-timestamp"
      - "$ref": "#/components/parameters/svix-signature"
      requestBody:
        required: true
        description: JSON payload sent to your configured webhook endpoint.
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/RelatedRecordEvent"
            example:
              id: link_public_id
              book_id: book_public_id
              source_type: Household
              source_id: household_public_id
              target_type: Contact
              target_id: contact_public_id
              source_label: Example household
              target_label: Jane Doe
              relationship_to_source: Client
              relationship_to_target: Accountant
              created_at: '2026-10-15T12:00:00Z'
              updated_at: '2026-10-15T12:05:00Z'
              subscription_id: subscription_public_id
              user_id: user_public_id
              company_id: company_public_id
      responses:
        '200':
          description: Return a successful 2xx response promptly after verifying and
            durably accepting the delivery. Non-success responses can cause retries.
components:
  parameters:
    svix-id:
      name: svix-id
      in: header
      required: true
      description: Delivery message ID. Use for idempotency; overlapping subscriptions
        have distinct IDs.
      schema:
        type: string
    svix-timestamp:
      name: svix-timestamp
      in: header
      required: true
      description: Unix timestamp used for signature verification.
      schema:
        type: string
    svix-signature:
      name: svix-signature
      in: header
      required: true
      description: Signature(s) to verify with the endpoint signing secret and a Svix
        verification library.
      schema:
        type: string
  schemas:
    NamedRecord:
      type: object
      required:
      - id
      - name
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        name:
          type:
          - string
          - 'null'
    Tag:
      type: object
      required:
      - id
      - name
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        name:
          type: string
    User:
      type: object
      required:
      - id
      - email
      - first_name
      - last_name
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        email:
          type: string
        first_name:
          type:
          - string
          - 'null'
        last_name:
          type:
          - string
          - 'null'
    Email:
      type: object
      required:
      - id
      - email
      - email_type
      - is_primary
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        email:
          type: string
        email_type:
          type:
          - string
          - 'null'
        is_primary:
          type: boolean
    PhoneNumber:
      type: object
      required:
      - id
      - phone_number
      - extension
      - phone_type
      - is_primary
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        phone_number:
          type: string
        extension:
          type:
          - string
          - 'null'
        phone_type:
          type:
          - string
          - 'null'
        is_primary:
          type: boolean
    Address:
      type: object
      required:
      - id
      - line1
      - line2
      - city
      - state
      - zip
      - country_code
      - address_type
      - is_primary
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        line1:
          type:
          - string
          - 'null'
        line2:
          type:
          - string
          - 'null'
        city:
          type:
          - string
          - 'null'
        state:
          type:
          - string
          - 'null'
        zip:
          type:
          - string
          - 'null'
        country_code:
          type:
          - string
          - 'null'
        address_type:
          type:
          - string
          - 'null'
        is_primary:
          type: boolean
    Employment:
      type: object
      required:
      - id
      - business_name
      - role
      - actively_employed
      - start_date
      - end_date
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        business_name:
          type:
          - string
          - 'null'
        role:
          type:
          - string
          - 'null'
        actively_employed:
          type: boolean
        start_date:
          type:
          - string
          - 'null'
          format: date
        end_date:
          type:
          - string
          - 'null'
          format: date
    Person:
      type: object
      required:
      - id
      - first_name
      - last_name
      - full_name
      - preferred_name
      - middle_name
      - salutation
      - suffix
      - designations
      - gender
      - marital_status
      - job_title
      - linkedin_url
      - household_role
      - date_of_birth
      - date_of_death
      - email
      - phone_number
      - email_addresses
      - phone_numbers
      - addresses
      - employments
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        first_name:
          type:
          - string
          - 'null'
        last_name:
          type:
          - string
          - 'null'
        full_name:
          type:
          - string
          - 'null'
        preferred_name:
          type:
          - string
          - 'null'
        middle_name:
          type:
          - string
          - 'null'
        salutation:
          type:
          - string
          - 'null'
        suffix:
          type:
          - string
          - 'null'
        designations:
          type:
          - string
          - 'null'
        gender:
          type:
          - string
          - 'null'
        marital_status:
          type:
          - string
          - 'null'
        job_title:
          type:
          - string
          - 'null'
        linkedin_url:
          type:
          - string
          - 'null'
        household_role:
          type:
          - string
          - 'null'
        date_of_birth:
          type:
          - string
          - 'null'
          format: date
        date_of_death:
          type:
          - string
          - 'null'
          format: date
        email:
          type:
          - string
          - 'null'
        phone_number:
          type:
          - string
          - 'null'
        email_addresses:
          type: array
          items:
            "$ref": "#/components/schemas/Email"
        phone_numbers:
          type: array
          items:
            "$ref": "#/components/schemas/PhoneNumber"
        addresses:
          type: array
          items:
            "$ref": "#/components/schemas/Address"
        employments:
          type: array
          items:
            "$ref": "#/components/schemas/Employment"
        household:
          type: object
          required:
          - id
          - name
          - type
          - tier
          - tags
          properties:
            id:
              type: string
              description: Opaque Slant record ID.
            name:
              type:
              - string
              - 'null'
            type:
              type:
              - string
              - 'null'
            tier:
              type:
              - string
              - 'null'
              description: Display label for the household tier.
            tags:
              type: array
              items:
                "$ref": "#/components/schemas/Tag"
    Meeting:
      type: object
      required:
      - id
      - book_id
      - title
      - start_time
      - end_time
      - duration_seconds
      - meeting_link
      - meeting_source
      - meeting_type
      - households
      - contacts
      - businesses
      - users
      - has_transcript
      - has_recordings
      - created_at
      - updated_at
      - quick_summary
      - ai_summary
      - notepad
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        book_id:
          type: string
          description: Opaque Slant record ID.
        title:
          type:
          - string
          - 'null'
        start_time:
          type:
          - string
          - 'null'
          format: date-time
        end_time:
          type:
          - string
          - 'null'
          format: date-time
        duration_seconds:
          type: number
        meeting_link:
          type:
          - string
          - 'null'
        meeting_source:
          type:
          - string
          - 'null'
        meeting_type:
          type:
          - string
          - 'null'
        households:
          type: array
          items:
            "$ref": "#/components/schemas/NamedRecord"
        contacts:
          type: array
          items:
            "$ref": "#/components/schemas/NamedRecord"
        businesses:
          type: array
          items:
            "$ref": "#/components/schemas/NamedRecord"
        users:
          type: array
          items:
            "$ref": "#/components/schemas/User"
        has_transcript:
          type: boolean
        has_recordings:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        quick_summary:
          type:
          - string
          - 'null'
        ai_summary:
          type:
          - string
          - 'null'
          description: Visible AI summary in Markdown.
        notepad:
          type:
          - string
          - 'null'
          description: Meeting notes in Markdown.
    Task:
      type: object
      required:
      - id
      - book_id
      - title
      - description
      - deadline_at
      - all_day
      - status
      - priority
      - is_private
      - completed_at
      - created_at
      - updated_at
      - assigned_to
      - assigned_team
      - record
      - tags
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        book_id:
          type: string
          description: Opaque Slant record ID.
        title:
          type: string
        description:
          type:
          - string
          - 'null'
          description: Plain-text task description.
        deadline_at:
          type:
          - string
          - 'null'
          format: date-time
        all_day:
          type:
          - boolean
          - 'null'
        status:
          type: string
          enum:
          - todo
          - done
        priority:
          type:
          - string
          - 'null'
        is_private:
          type: boolean
        completed_at:
          type:
          - string
          - 'null'
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        assigned_to:
          anyOf:
          - type: object
            required:
            - id
            - name
            - email
            properties:
              id:
                type: string
                description: Opaque Slant record ID.
              name:
                type: string
              email:
                type: string
          - type: 'null'
        assigned_team:
          anyOf:
          - "$ref": "#/components/schemas/NamedRecord"
          - type: 'null'
        record:
          anyOf:
          - type: object
            required:
            - id
            - type
            - name
            properties:
              id:
                type: string
                description: Opaque Slant record ID.
              type:
                type: string
              name:
                type:
                - string
                - 'null'
          - type: 'null'
        tags:
          type: array
          items:
            "$ref": "#/components/schemas/Tag"
    Note:
      type: object
      required:
      - id
      - pinned
      - hidden
      - tag_ids
      - book_id
      - household_id
      - created_by_id
      - created_at
      - updated_at
      - notable_type
      - notable_id
      - content
      - references
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        pinned:
          type: boolean
        hidden:
          type: boolean
        tag_ids:
          type: array
          items:
            type: string
            description: Opaque Slant record ID.
        book_id:
          type: string
          description: Opaque Slant record ID.
        household_id:
          type:
          - string
          - 'null'
          description: Opaque Slant record ID.
        created_by_id:
          type:
          - string
          - 'null'
          description: Opaque Slant record ID.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        notable_type:
          type:
          - string
          - 'null'
        notable_id:
          type:
          - string
          - 'null'
          description: Opaque Slant record ID.
        content:
          type: string
          description: Note content in Markdown.
        references:
          type: array
          items:
            type: object
            required:
            - id
            - type
            - label
            properties:
              id:
                type: string
                description: Opaque Slant record ID.
              type:
                type: string
              label:
                type:
                - string
                - 'null'
    MeetingEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - event_type
      - id
      - meeting
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        event_type:
          type: string
        id:
          type: string
          description: ID of the affected meeting.
        meeting:
          "$ref": "#/components/schemas/Meeting"
    MeetingDeletedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - event_type
      - id
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        event_type:
          type: string
        id:
          type: string
          description: ID of the deleted meeting.
    TaskEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - event_type
      - id
      - task
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        event_type:
          type: string
        id:
          type: string
          description: ID of the affected task.
        task:
          "$ref": "#/components/schemas/Task"
    TaskDeletedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - event_type
      - id
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        event_type:
          type: string
        id:
          type: string
          description: ID of the deleted task.
    NoteEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - event_type
      - id
      - note
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        event_type:
          type: string
        id:
          type: string
          description: ID of the affected note.
        note:
          "$ref": "#/components/schemas/Note"
        household_id:
          type: string
          description: Present when the note belongs to this parent.
        contact_id:
          type: string
          description: Present when the note belongs to this parent.
        business_id:
          type: string
          description: Present when the note belongs to this parent.
    NoteDeletedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - event_type
      - id
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        event_type:
          type: string
        id:
          type: string
          description: ID of the deleted note.
        household_id:
          type: string
          description: Present when the note belongs to this parent.
        contact_id:
          type: string
          description: Present when the note belongs to this parent.
        business_id:
          type: string
          description: Present when the note belongs to this parent.
    Client:
      type: object
      required:
      - id
      - status
      - name
      - tier
      - type
      - aum
      - became_client_at
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        status:
          type:
          - string
          - 'null'
        name:
          type:
          - string
          - 'null'
        tier:
          type:
          - integer
          - 'null'
          description: Numeric household tier, not its display label.
        type:
          type: string
          enum:
          - client
        head_of_household:
          "$ref": "#/components/schemas/Person"
        aum:
          type:
          - integer
          - 'null'
        became_client_at:
          type:
          - string
          - 'null'
          format: date-time
    ClientCreatedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - id
      - status
      - name
      - tier
      - type
      - aum
      - became_client_at
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        id:
          type: string
          description: Opaque Slant record ID.
        status:
          type:
          - string
          - 'null'
        name:
          type:
          - string
          - 'null'
        tier:
          type:
          - integer
          - 'null'
          description: Numeric household tier, not its display label.
        type:
          type: string
          enum:
          - client
        head_of_household:
          "$ref": "#/components/schemas/Person"
        aum:
          type:
          - integer
          - 'null'
        became_client_at:
          type:
          - string
          - 'null'
          format: date-time
    ClientUpdatedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - client
      - changed_fields
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        client:
          "$ref": "#/components/schemas/Client"
        changed_fields:
          type: array
          items:
            type: string
    Prospect:
      type: object
      required:
      - id
      - status
      - name
      - tier
      - type
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        status:
          type:
          - string
          - 'null'
        name:
          type:
          - string
          - 'null'
        tier:
          type:
          - integer
          - 'null'
          description: Numeric household tier, not its display label.
        type:
          type: string
          enum:
          - prospect
        head_of_household:
          "$ref": "#/components/schemas/Person"
    ProspectCreatedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - id
      - status
      - name
      - tier
      - type
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        id:
          type: string
          description: Opaque Slant record ID.
        status:
          type:
          - string
          - 'null'
        name:
          type:
          - string
          - 'null'
        tier:
          type:
          - integer
          - 'null'
          description: Numeric household tier, not its display label.
        type:
          type: string
          enum:
          - prospect
        head_of_household:
          "$ref": "#/components/schemas/Person"
    ProspectUpdatedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - prospect
      - changed_fields
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        prospect:
          "$ref": "#/components/schemas/Prospect"
        changed_fields:
          type: array
          items:
            type: string
    Contact:
      type: object
      required:
      - id
      - status
      properties:
        id:
          type: string
          description: Opaque Slant record ID.
        status:
          type:
          - string
          - 'null'
        person:
          "$ref": "#/components/schemas/Person"
    ContactCreatedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - id
      - status
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        id:
          type: string
          description: Opaque Slant record ID.
        status:
          type:
          - string
          - 'null'
        person:
          "$ref": "#/components/schemas/Person"
    ContactUpdatedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - contact
      - changed_fields
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        contact:
          "$ref": "#/components/schemas/Contact"
        changed_fields:
          type: array
          items:
            type: string
    PersonUpdatedEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - person
      - changed_fields
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        person:
          "$ref": "#/components/schemas/Person"
        changed_fields:
          type: array
          items:
            type: string
    HouseholdTagEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - id
      - household
      - tag_id
      - tag_name
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        id:
          type: string
          description: Generated event identifier. This is not the household ID.
          format: uuid
        household:
          type: object
          required:
          - id
          - type
          properties:
            id:
              type: string
              description: Opaque Slant record ID.
            type:
              type:
              - string
              - 'null'
            head_of_household:
              "$ref": "#/components/schemas/Person"
        tag_id:
          type: string
          description: Opaque Slant record ID.
        tag_name:
          type: string
    RelatedRecordEvent:
      type: object
      required:
      - subscription_id
      - user_id
      - book_id
      - company_id
      - id
      - source_type
      - source_id
      - target_type
      - target_id
      - source_label
      - target_label
      - relationship_to_source
      - relationship_to_target
      - created_at
      - updated_at
      properties:
        subscription_id:
          type: string
          description: Subscription that caused this delivery.
        user_id:
          type: string
          description: Subscribed Slant user.
        book_id:
          type: string
          description: Book containing the record.
        company_id:
          type: string
          description: Company that owns the book.
        id:
          type: string
          description: ID of the relationship link.
        source_type:
          type: string
        source_id:
          type: string
          description: Opaque Slant record ID.
        target_type:
          type: string
        target_id:
          type: string
          description: Opaque Slant record ID.
        source_label:
          type:
          - string
          - 'null'
        target_label:
          type:
          - string
          - 'null'
        relationship_to_source:
          type:
          - string
          - 'null'
          description: How the source relates to the target.
        relationship_to_target:
          type:
          - string
          - 'null'
          description: How the target relates to the source.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
