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

# Compliance Document Status by Entity

> Whether each entity's four compliance slots are covered

Returns one row per entity with the standing of its four compliance slots: errors and omissions, cyber, W9, and crime and fidelity.

**This endpoint returns no files.** [List Documents](/api-reference/v2/downstream/documents/list-documents) does that. The two answer different questions — "what do I hold" against "am I covered" — and merging them would force every caller to page over the half it did not want.

## Rows are flat, with a parentId

Each row carries `parentId`, so you can rebuild your organization tree client-side. A nested shape cannot survive pagination: a page boundary would either split a parent from its branches or make the total count something other than the number of rows.


## OpenAPI

````yaml openapi/v2.json GET /v2/downstream/document-compliance
openapi: 3.0.0
info:
  title: Turris Public API
  description: API for managing insurance compliance data
  version: 2.0.0
  contact: {}
servers:
  - url: https://public.api.live.turrisfi.com
    description: Production
  - url: https://public.api.sandbox.turrisfi.com
    description: Sandbox
security: []
tags: []
paths:
  /v2/downstream/document-compliance:
    get:
      tags:
        - downstream/documents
      summary: Compliance document status by entity
      description: >-
        Returns one row per entity with the standing of its four compliance
        slots: errors and omissions, cyber, W9 and crime and fidelity. This
        endpoint returns NO files; List Documents does that. Rows are flat and
        carry parentId, so you can rebuild your org tree without the pagination
        splitting a parent from its branches.
      operationId: DocumentsController_getDocumentCompliance_v2
      parameters:
        - name: page
          required: false
          in: query
          description: 1-based page number
          schema:
            minimum: 1
            default: 1
            example: 1
            type: number
        - name: limit
          required: false
          in: query
          description: Page size (max 100)
          schema:
            minimum: 1
            maximum: 100
            default: 50
            example: 50
            type: number
        - name: downstreamEntityId
          required: false
          in: query
          description: >-
            Narrow the results to a single entity in your organization. Defaults
            to your whole subtree (your entity plus every branch beneath it).
            Returns 404 if the id is not in your subtree.
          schema:
            example: 6610b3d2c2e0a51b8c0d1f02
            type: string
      responses:
        '200':
          description: A page of per-entity compliance rows
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          $ref: >-
                            #/components/schemas/DownstreamDocumentComplianceResponse
                      total:
                        type: integer
                        description: Total rows matching the query across all pages
                        example: 137
                      page:
                        type: integer
                        description: 1-based page number
                        example: 1
                      limit:
                        type: integer
                        description: Page size
                        example: 50
                      totalPages:
                        type: integer
                        description: Number of pages, or 0 when there are no rows
                        example: 3
                    required:
                      - items
                      - total
                      - page
                      - limit
                      - totalPages
                  requestId:
                    type: string
                    description: Unique request identifier
                    example: dev-2c5e7cf2-9acf-4c8c-ab2f-b81f39d775a8
                  timestamp:
                    type: string
                    description: Response timestamp
                    example: '2025-11-12T20:49:03.293Z'
                required:
                  - data
                  - requestId
                  - timestamp
        '400':
          description: Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
        '401':
          description: Invalid or missing auth token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
        '403':
          description: Your organization is not entitled to the public API
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
        '404':
          description: downstreamEntityId is not in your organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
components:
  schemas:
    DownstreamDocumentComplianceResponse:
      type: object
      properties:
        downstreamEntityId:
          type: string
          description: The entity this row is for
          example: 6610b3d2c2e0a51b8c0d1f02
        parentId:
          type: string
          description: The parent entity. Absent on your top company.
          example: 6610b3d2c2e0a51b8c0d1f01
        legalName:
          type: string
          description: Registered legal name
          example: Example Insurance Services, LLC
        branchName:
          type: string
          description: Name of this branch location
          example: Philadelphia Branch
        npn:
          type: string
          description: National Producer Number
          example: '1234567'
        ein:
          type: string
          description: Employer Identification Number
          example: 12-3456789
        documents:
          description: The four compliance slots
          allOf:
            - $ref: '#/components/schemas/DownstreamDocumentComplianceSlotsResponse'
      required:
        - downstreamEntityId
        - branchName
        - documents
    ErrorResponseDto:
      type: object
      properties:
        statusCode:
          type: number
          description: HTTP status code
        requestId:
          type: string
          description: Unique request identifier for debugging
        errorType:
          type: string
          description: >-
            Machine-readable error classification. Branch on this rather than on
            `errorMessage`, which is prose and may change. Authentication
            failures returned by our identity provider are forwarded verbatim,
            so a 401 can carry a code outside this list; treat an unrecognised
            value as a generic failure of its HTTP status.
          enum:
            - conflict
            - contact_not_authorized
            - document_exceeds_page_limit
            - downstream_entity_member_exists
            - duplicate_external_id_error
            - duplicate_member_email
            - duplicate_producer_code_error
            - forbidden
            - gateway_timeout
            - inactive_email
            - internal_server_error
            - invalid_email
            - invalid_email_for_invites
            - invalid_organization_category
            - invalid_organization_slug
            - invalid_phone_number
            - invalid_token
            - invite_limit_reached
            - jwt_invalid
            - m2m_client_not_found
            - not_found
            - organization_already_exists
            - organization_slug_already_used
            - payment_required
            - producer_agreement_required
            - product_feature_subscription_required
            - service_unavailable
            - session_authorization_error
            - some_custom_error_string
            - throttled
            - too_many_requests
            - unauthorized
            - unauthorized_client
            - unexpected_400_stytch_error
            - unexpected_403_stytch_error
            - unexpected_404_stytch_error
            - unexpected_error
            - unexpected_stytch_error
            - unprocessable_entity
            - validation_error
          example: validation_error
        errorMessage:
          description: Array of error messages
          type: array
          items:
            type: string
        timestamp:
          type: string
          description: ISO timestamp when the error occurred
        details:
          type: object
          description: Additional error context
      required:
        - statusCode
        - requestId
        - errorType
        - errorMessage
        - timestamp
    DownstreamDocumentComplianceSlotsResponse:
      type: object
      properties:
        eAndO:
          description: Errors and omissions policy
          allOf:
            - $ref: '#/components/schemas/DownstreamDocumentComplianceSlotResponse'
        cyber:
          description: Cyber policy
          allOf:
            - $ref: '#/components/schemas/DownstreamDocumentComplianceSlotResponse'
        w9:
          description: W9
          allOf:
            - $ref: '#/components/schemas/DownstreamDocumentComplianceSlotResponse'
        crimeFidelity:
          description: Crime and fidelity policy
          allOf:
            - $ref: '#/components/schemas/DownstreamDocumentComplianceSlotResponse'
      required:
        - eAndO
        - cyber
        - w9
        - crimeFidelity
    DownstreamDocumentComplianceSlotResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            Whether the slot is satisfied. Never "expiring": there is no agreed
            warning window for these slots.
          enum:
            - active
            - expired
            - expiring
            - unassigned
          example: active
        documentCount:
          type: number
          description: How many documents are held in this slot
          example: 2
        expiresAt:
          type: string
          description: >-
            ISO 8601 expiry of the most recent document, where one is known. A
            W9 never has one.
          example: '2027-04-01T00:00:00.000Z'
      required:
        - status
        - documentCount

````

## Related topics

- [Get Downstream Entity Compliance Status](/api-reference/v1/compliance-status/downstream-entity-compliance.md)
- [Upload a Compliance Document](/api-reference/v2/downstream/documents/upload-document.md)
- [Get Agent Compliance Status](/api-reference/v1/compliance-status/agent-compliance.md)
