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

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.omni.co/feedback

```json
{
  "path": "/api/content-validator/validate-content",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Validate content

> Validates all content against the model and returns documents with queries and any validation issues.

This endpoint scans all documents associated with the model and identifies any fields, views, or other model elements referenced in queries that are no longer valid.

You can optionally scope validation to only content that references a specific model element (view, field, or topic) using the `find` and `find_type` parameters. This is useful when you only need to validate content using a specific element, avoiding the overhead of validating all documents.




## OpenAPI

````yaml /api/openapi.yaml get /v1/models/{modelId}/content-validator
openapi: 3.1.0
info:
  title: Omni API
  description: >
    The Omni REST API provides programmatic access to your Omni instance for
    managing users, documents, queries, schedules, and more.  
  version: 1.0.0
  contact:
    name: Omni Support
    url: https://docs.omni.co
servers:
  - url: https://{instance}.omniapp.co/api
    description: Production
    variables:
      instance:
        default: blobsrus
        description: Your production Omni instance subdomain
  - url: https://{instance}.playground.exploreomni.dev/api
    description: Playground
    variables:
      instance:
        default: blobsrus
        description: Your playground Omni instance subdomain
security:
  - bearerAuth: []
  - orgApiKey: []
tags:
  - name: AI
    description: AI-powered query generation
  - name: API Tokens
    description: >-
      Manage API tokens (Organization keys, Personal Access Tokens, MCP OAuth
      grants)
  - name: Connections
    description: Manage database connections
  - name: Connection environments
    description: Manage connection environments database connections
  - name: Content
    description: Unified content retrieval (documents and folders)
  - name: Content migration
    description: Export and import dashboards
  - name: Content validator
    description: Validate content against models and perform find/replace operations
  - name: Dashboard downloads
    description: Download dashboards and tiles as PDF, PNG, XLSX, CSV, or JSON files
  - name: Dashboard filters and controls
    description: Read and update dashboard filter and control default values
  - name: dbt
    description: Manage dbt configuration for connections
  - name: Documents
    description: Create, retrieve, and manage documents
  - name: Document favorites
    description: Favorite and unfavorite documents
  - name: Document labels
    description: Apply and manage labels on documents
  - name: Document permissions
    description: Manage document-level access
  - name: Labels
    description: >
      Manage labels in an organization. Labels can be applied to documents and
      folders to help organize and categorize content.


      **Label types:**

      - **Basic labels**: Can be created and managed by any user

      - **Verified labels**: Indicate curated or officially sanctioned content.
      Admin-only.

      - **Homepage labels**: Appear on the organization homepage. Admin-only.
  - name: Folders
    description: Create and organize content folders
  - name: Folder permissions
    description: Manage folder-level access
  - name: Jobs
    description: Check status of asynchronous jobs
  - name: Models
    description: Create and manage data models
  - name: Model branches
    description: Manage model branches and merge changes
  - name: Model git configuration
    description: Manage git configuration for shared models
  - name: Queries
    description: Execute workbook queries
  - name: Schedules
    description: Create and manage scheduled tasks
  - name: Schedule recipients
    description: Manage schedule recipients
  - name: Schema refresh schedules
    description: Manage automated schema refresh schedules for connections
  - name: Topics
    description: Retrieve topic information from models
  - name: Uploads
    description: Manage file uploads
  - name: Users
    description: Manage users
  - name: User attributes
    description: Manage user attribute definitions
  - name: User groups
    description: Manage user groups
  - name: User model roles
    description: Manage model and connection role assignments for users
  - name: User group model roles
    description: Manage model and connection role assignments for user groups
  - name: Uploads
    description: Manage CSV and spreadsheet uploads
paths:
  /v1/models/{modelId}/content-validator:
    get:
      tags:
        - Content validator
      summary: Validate content
      description: >
        Validates all content against the model and returns documents with
        queries and any validation issues.


        This endpoint scans all documents associated with the model and
        identifies any fields, views, or other model elements referenced in
        queries that are no longer valid.


        You can optionally scope validation to only content that references a
        specific model element (view, field, or topic) using the `find` and
        `find_type` parameters. This is useful when you only need to validate
        content using a specific element, avoiding the overhead of validating
        all documents.
      operationId: validateContent
      parameters:
        - name: modelId
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: The ID of the model to validate content against.
        - name: branch_id
          in: query
          schema:
            type: string
            format: uuid
          description: >-
            The ID of the branch to validate against. If not provided, validates
            against the main model.
        - name: userId
          in: query
          schema:
            type: string
            format: uuid
          description: >
            The user ID to act on behalf of. Only valid when using an
            organization API key.


            User-scoped API keys cannot use this parameter and will receive a
            403 error if provided.
        - name: include_personal_folders
          in: query
          schema:
            type: boolean
          description: When enabled, include personal folders in the search.
        - name: find
          in: query
          schema:
            type: string
          description: >
            The name of the model element to find content references for. Must
            be used together with `find_type`.


            For `FIELD` type, the value must be fully qualified with the view
            name (e.g., `orders.status`).
        - name: find_type
          in: query
          schema:
            type: string
            enum:
              - VIEW
              - FIELD
              - TOPIC
          description: >
            The type of model element to search for. Must be used together with
            `find`.


            When both parameters are provided, only content that references the
            specified element will be validated and included in the response.
      responses:
        '200':
          description: Content validation results
          content:
            application/json:
              schema:
                type: object
                properties:
                  model_id:
                    type: string
                    format: uuid
                    description: The ID of the model that was validated.
                  branch:
                    type: object
                    nullable: true
                    description: >-
                      Branch information if a branch was specified, null
                      otherwise.
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: The branch ID.
                      name:
                        type: string
                        description: The branch name.
                  content:
                    type: array
                    description: List of documents with their validation results.
                    items:
                      type: object
                      properties:
                        document_id:
                          type: string
                          description: The document ID.
                        identifier:
                          type: string
                          description: The document identifier (slug).
                        name:
                          type: string
                          description: The document name.
                        type:
                          type: string
                          description: The document type (e.g., "Published").
                        updated_at:
                          type: string
                          format: date-time
                          description: When the document was last updated.
                        folder:
                          type: object
                          nullable: true
                          description: Folder information if the document is in a folder.
                          properties:
                            name:
                              type: string
                              description: The folder name.
                            path:
                              type: string
                              description: The full folder path.
                        owner:
                          type: object
                          description: Information about the document owner.
                          properties:
                            email:
                              type: string
                              format: email
                              description: The owner's email address.
                            name:
                              type: string
                              description: The owner's display name.
                        require_pull_request_to_publish:
                          type: boolean
                          description: >-
                            Whether the document requires a pull request to
                            publish changes.
                        queries_and_issues:
                          type: array
                          description: List of queries and their validation issues.
                          items:
                            type: object
                            properties:
                              query_name:
                                type: string
                                description: The name of the query.
                              query_presentation_id:
                                type: string
                                description: The query presentation ID.
                              query_id_map_key:
                                type: string
                                description: The query ID map key.
                              issues:
                                type: array
                                items:
                                  type: string
                                description: >-
                                  List of validation issue messages for this
                                  query.
                        dashboard_filter_issues:
                          type: array
                          items:
                            type: string
                          description: List of validation issues for dashboard filters.
              examples:
                allContent:
                  summary: Validate all content
                  value:
                    model_id: 550e8400-e29b-41d4-a716-446655440000
                    branch: null
                    content:
                      - document_id: abc123
                        identifier: dashboard-1
                        name: Sales Dashboard
                        type: Published
                        updated_at: '2025-01-15T10:00:00Z'
                        folder:
                          name: Reports
                          path: /Reports
                        owner:
                          email: user@example.com
                          name: Jane Doe
                        require_pull_request_to_publish: false
                        queries_and_issues:
                          - query_name: Total Revenue
                            query_presentation_id: qp-123
                            query_id_map_key: '1'
                            issues:
                              - Field 'orders.old_field' not found in model
                        dashboard_filter_issues: []
                filteredByField:
                  summary: Validate content using a specific field
                  description: >-
                    When using find=orders.status&find_type=FIELD, only content
                    that references the orders.status field is validated.
                  value:
                    model_id: 550e8400-e29b-41d4-a716-446655440000
                    branch: null
                    content:
                      - document_id: def456
                        identifier: order-analysis
                        name: Order Analysis
                        type: Published
                        updated_at: '2025-01-15T11:30:00Z'
                        folder:
                          name: Analytics
                          path: /Analytics
                        owner:
                          email: analyst@example.com
                          name: John Smith
                        require_pull_request_to_publish: false
                        queries_and_issues:
                          - query_name: Orders by Status
                            query_presentation_id: qp-456
                            query_id_map_key: '1'
                            issues: []
                        dashboard_filter_issues: []
        '400':
          description: >
            Bad Request


            Possible error messages:


            - `modelId: Invalid UUID`

            - `Both 'find' and 'find_type' parameters must be provided together`

            - `When find_type is FIELD, the find parameter must be scoped by
            view name (e.g., view_name.field_name)`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail: 'Bad Request: modelId: Invalid UUID'
                status: 400
        '403':
          description: |
            Forbidden

            Possible error messages:

            - `User-scoped API keys cannot act on behalf of other users`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail: User-scoped API keys cannot act on behalf of other users
                status: 403
        '404':
          description: |
            Not Found

            Possible error messages:

            - `Shared model with id <modelId> does not exist`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail: >-
                  Shared model with id 550e8400-e29b-41d4-a716-446655440000 does
                  not exist
                status: 404
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - bearerAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: HTTP response code for the error
          example: <response_code>
        message:
          type: string
          description: Detailed error description
          example: <error_reason>
  responses:
    MethodNotAllowed:
      description: Method Not Allowed - Invalid HTTP method for this endpoint
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Too Many Requests - Rate limit exceeded (60 requests/minute)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        Can be either an [Organization API
        Key](/api/authentication#organization-api-keys) or [Personal Access
        Token (PAT)](/api/authentication#personal-access-tokens-pat).


        Include in the `Authorization` header as: `Bearer YOUR_TOKEN`
    orgApiKey:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        Requires an [Organization API
        Key](/api/authentication#organization-api-keys). Personal Access Tokens
        (PATs) are not supported for this endpoint.


        Include in the `Authorization` header as: `Bearer ORGANIZATION_API_KEY`

````