> ## Documentation Index
> Fetch the complete documentation index at: https://www.presolve.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Read the documents-only event feed (legacy alias)

> Deprecated by GET /events; kept as the documents-only alias for shipped integrations.

Requires the `documents:read` scope. Rate tier: `read`.



## OpenAPI

````yaml /openapi.json get /api/v1/document-events
openapi: 3.1.0
info:
  title: Grand Charter Public API
  version: 1.0.0
  description: >-
    Org-scoped integration API for the Grand Charter legal platform.


    Authenticate every request with an integration API key in the `x-api-key`
    header. Keys are created in the attorney portal under **Settings →
    Integrations → API Credentials** (or by platform admins) and carry an
    explicit list of scopes; each operation below names its required scope
    (`x-required-scope`).


    Conventions: JSON bodies/responses in camelCase; money in integer cents;
    ISO-8601 UTC timestamps; keyset cursor pagination (`after`, `limit` →
    `nextCursor`); errors use `{ success: false, error, code }`.


    Idempotency: most mutations require an `X-Idempotency-Key` header — each
    operation description below says so explicitly. Exceptions that do NOT
    consume the header (retrying them can create duplicates): `POST /leads`,
    `PATCH /leads/{leadId}`, and `PATCH /cases/{caseId}`.
servers:
  - url: https://www.presolve.com
    description: Production
security:
  - integrationApiKey: []
tags:
  - name: Platform
  - name: Org & Team
  - name: Cases
  - name: Leads
  - name: Clients
  - name: Contacts
  - name: Documents
  - name: Notes
  - name: Tasks
  - name: Calendar
  - name: Deadlines
  - name: Intake
  - name: E-Sign
  - name: Billing
  - name: Settlement Funds
  - name: Referrals
  - name: Communications
  - name: Medical
  - name: Reports & Exports
  - name: Events & Webhooks
paths:
  /api/v1/document-events:
    get:
      tags:
        - Events & Webhooks
      summary: Read the documents-only event feed (legacy alias)
      description: >-
        Deprecated by GET /events; kept as the documents-only alias for shipped
        integrations.


        Requires the `documents:read` scope. Rate tier: `read`.
      operationId: get_documentEvents
      parameters:
        - in: query
          name: after
          schema:
            type: string
            minLength: 1
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventsFeedResponse'
        '400':
          description: Validation failed (VALIDATION_FAILED).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing, invalid, or expired API key (UNAUTHORIZED).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: API key lacks the required scope (FORBIDDEN).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in the caller’s organization (NOT_FOUND).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded (RATE_LIMITED). Honor Retry-After.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: true
      security:
        - integrationApiKey: []
components:
  schemas:
    EventsFeedResponse:
      type: object
      properties:
        success:
          type: boolean
          const: true
        events:
          type: array
          items:
            $ref: '#/components/schemas/Event'
        nextCursor:
          type:
            - string
            - 'null'
      required:
        - success
        - events
        - nextCursor
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          const: false
        error:
          type: string
          description: >-
            Human-readable error message. 5xx responses are always scrubbed to
            "Internal server error".
        code:
          type: string
          description: >-
            Stable machine-readable error code (ErrorCode), e.g. UNAUTHORIZED,
            FORBIDDEN, VALIDATION_FAILED, NOT_FOUND, INVALID_STATE_TRANSITION,
            DUPLICATE_ENTRY, STALE_REVISION, IDEMPOTENCY_IN_PROGRESS,
            IDEMPOTENCY_CONFLICT, RATE_LIMITED, INTERNAL_ERROR.
      required:
        - success
        - error
        - code
    Event:
      type: object
      properties:
        id:
          type: string
          description: Envelope id — the at-least-once dedup key.
        cursor:
          type: string
          description: Strictly monotonic per-organization feed cursor.
        entity:
          type: string
        entityId:
          type: string
        eventType:
          type: string
          description: >-
            One of the public event catalog types: document.created,
            document.content_replaced, document.metadata_updated,
            document.deleted, document.restored, document.uploaded,
            folder.created, folder.updated, folder.deleted, folder.restored,
            case.created, case.updated, case.deleted, case.status_changed,
            case.assigned, case.unassigned, case.referred, matter.stage_changed,
            matter.status_changed, matter.lifecycle_stage_changed,
            matter.field_changed, intake.submitted, intake.field_changed,
            task.created, task.updated, task.completed, calendar.event_created,
            calendar.event_updated, calendar.event_cancelled, note.created,
            note.updated, note.deleted, deadline.anchor_recorded,
            deadline.obligation_created, deadline.resolved, deadline.cancelled,
            deadline.warning_due, deadline.critical_due, deadline.due,
            deadline.overdue, esign.document.completed, expense.created,
            invoice.created, invoice.status_changed, check.recorded,
            check.status_changed, disbursement.status_changed, lien.resolved,
            email.message_received, export_job.completed, export_job.failed.
        occurredAt:
          type: string
          description: ISO-8601 UTC timestamp
        actor:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
            type:
              type: string
              description: service | attorney | admin | system
            name:
              type: string
          required:
            - id
            - type
        payload:
          type: object
          additionalProperties: {}
          description: Redacted event payload; empty object for ids-only events.
        diff:
          type:
            - object
            - 'null'
          additionalProperties: {}
        relatedIds:
          type:
            - array
            - 'null'
          items:
            type: object
            properties:
              entity:
                type: string
              id:
                type: string
            required:
              - entity
              - id
          description: 'Related entity references, e.g. [{ "entity": "case", "id": "..." }].'
        correlationId:
          type:
            - string
            - 'null'
        metadata:
          type: object
          additionalProperties: {}
          description: >-
            Includes origin for echo suppression (compare actor.id to your own
            key id).
      required:
        - id
        - cursor
        - entity
        - entityId
        - eventType
        - occurredAt
        - actor
        - payload
        - diff
        - relatedIds
        - correlationId
        - metadata
  securitySchemes:
    integrationApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Org-issued integration API key (service account credential). The
        plaintext secret is shown once at creation.

````