Lightdash v2 API

The v2 API from Lightdash — 47 operation(s) for v2.

Operations 59

GET /api/v2/projects/{projectUuid}/pre-aggregates/stats Get pre-aggregate stats #
GET /api/v2/projects/{projectUuid}/pre-aggregates/dashboards/{dashboardUuidOrSlug}/audit Get dashboard pre-aggregate audit #
POST /api/v2/projects/{projectUuid}/pre-aggregates/dashboards/{dashboardUuidOrSlug}/audit Run dashboard pre-aggregate audit #
GET /api/v2/projects/{projectUuid}/pre-aggregates/materializations Get pre-aggregate materializations #
POST /api/v2/orgs/{orgUuid}/roles Create custom role #
GET /api/v2/orgs/{orgUuid}/roles Get organization roles #
PATCH /api/v2/orgs/{orgUuid}/roles/{roleUuid} Update custom role #
DELETE /api/v2/orgs/{orgUuid}/roles/{roleUuid} Delete custom role #
GET /api/v2/orgs/{orgUuid}/roles/{roleUuid} Get custom role #
GET /api/v2/orgs/{orgUuid}/roles/{roleUuid}/assignees List role assignees #
POST /api/v2/orgs/{orgUuid}/roles/{roleUuid}/scopes Add scopes to role #
DELETE /api/v2/orgs/{orgUuid}/roles/{roleUuid}/scopes/{scopeName} Remove scope from role #
GET /api/v2/projects/{projectId}/roles/assignments List project role assignments #
POST /api/v2/projects/{projectId}/roles/assignments/user/{userId} Assign project role to user #
DELETE /api/v2/projects/{projectId}/roles/assignments/user/{userId} Remove project role from user #
POST /api/v2/projects/{projectId}/roles/assignments/group/{groupId} Assign project role to group #
PATCH /api/v2/projects/{projectId}/roles/assignments/group/{groupId} Update project group role #
DELETE /api/v2/projects/{projectId}/roles/assignments/group/{groupId} Remove project role from group #
GET /api/v2/orgs/{orgUuid}/roles/assignments List organization role assignments #
POST /api/v2/orgs/{orgUuid}/roles/assignments/user/{userId} Assign organization role to user #
POST /api/v2/orgs/{orgUuid}/roles/{roleId}/duplicate Duplicate role #
GET /api/v2/projects/{projectUuid}/validate List validation results #
GET /api/v2/projects/{projectUuid}/validate/{validationIdOrUuid} Get validation result #
GET /api/v2/saved/{chartUuid}/schedulers List chart schedulers #
GET /api/v2/saved/{chartUuid}/schedulers/{schedulerUuid}/runs List chart scheduler runs #
GET /api/v2/projects/{projectUuid}/query/{queryUuid} Get results #
POST /api/v2/projects/{projectUuid}/query/{queryUuid}/cancel Cancel query #
POST /api/v2/projects/{projectUuid}/query/{queryUuid}/calculate-total Calculate totals #
POST /api/v2/projects/{projectUuid}/query/metric-query Execute metric query #
POST /api/v2/projects/{projectUuid}/query/field-values Search field values #
POST /api/v2/projects/{projectUuid}/query/chart Execute saved chart #
POST /api/v2/projects/{projectUuid}/query/dashboard-chart Execute dashboard chart #
POST /api/v2/projects/{projectUuid}/query/underlying-data Execute underlying data #
POST /api/v2/projects/{projectUuid}/query/sql Execute SQL query #
POST /api/v2/projects/{projectUuid}/query/sql-chart Execute SQL chart #
POST /api/v2/projects/{projectUuid}/query/dashboard-sql-chart Execute dashboard SQL chart #
POST /api/v2/projects/{projectUuid}/query/{queryUuid}/download Download results #
POST /api/v2/projects/{projectUuid}/query/{queryUuid}/schedule-download Download results #
GET /api/v2/projects/{projectUuid}/saved/{chartUuidOrSlug} Get chart #
DELETE /api/v2/projects/{projectUuid}/saved/{chartUuidOrSlug} Delete chart #
GET /api/v2/projects/{projectUuid}/defaults Get project defaults #
PUT /api/v2/projects/{projectUuid}/defaults Replace project defaults #
GET /api/v2/projects/{projectUuid}/dashboards/{dashboardUuidOrSlug} Get dashboard #
PATCH /api/v2/projects/{projectUuid}/dashboards/{dashboardUuidOrSlug} Update dashboard #
DELETE /api/v2/projects/{projectUuid}/dashboards/{dashboardUuidOrSlug} Delete dashboard #
GET /api/v2/projects/{projectUuid}/dashboards/{dashboardUuidOrSlug}/comments Get comments #
GET /api/v2/projects/{projectUuid}/parameters/list List project parameters #
GET /api/v2/projects/{projectUuid}/parameters Get project parameters #
PUT /api/v2/projects/{projectUuid}/parameters Replace project parameters #
GET /api/v2/feature-flag/{featureFlagId} Get feature flag #
GET /api/v2/dashboards/{dashboardUuid}/schedulers List dashboard schedulers #
GET /api/v2/dashboards/{dashboardUuid}/schedulers/{schedulerUuid}/runs List dashboard scheduler runs #
GET /api/v2/content List content #
POST /api/v2/content/{projectUuid}/move Move content #
POST /api/v2/content/bulk-action/{projectUuid}/move Bulk move content #
GET /api/v2/content/deleted List deleted content #
POST /api/v2/content/{projectUuid}/restore Restore content #
DELETE /api/v2/content/{projectUuid}/permanent Permanently delete content #
GET /api/v2/projects/{projectUuid}/dataCatalog/metrics-with-time-dimensions List metrics with time dimensions #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lightdash-v2-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lightdash-v2-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Lightdash AiAgents V2 API
  version: 0.3156.1
  description: 'Open API documentation for all public Lightdash API endpoints. # Authentication Before you get started, you might need to create a Personal Access Token to authenticate via the API. You can create a token by following this guide: https://docs.lightdash.com/references/personal_tokens

    '
  license:
    name: MIT
  contact:
    name: Lightdash Support
    email: support@lightdash.com
    url: https://docs.lightdash.com/help-and-contact/contact/contact_info/
servers:
- url: /
tags:
- name: v2
paths:
  /api/v2/projects/{projectUuid}/pre-aggregates/stats:
    get:
      operationId: getPreAggregateStats
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiGetPreAggregateStatsResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Retrieves aggregated pre-aggregate hit/miss statistics for a project
      summary: Get pre-aggregate stats
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - in: query
        name: days
        required: false
        schema:
          format: double
          type: number
      - in: query
        name: page
        required: false
        schema:
          format: double
          type: number
      - in: query
        name: pageSize
        required: false
        schema:
          format: double
          type: number
      - in: query
        name: exploreName
        required: false
        schema:
          type: string
      - in: query
        name: queryType
        required: false
        schema:
          type: string
          enum:
          - chart
          - dashboard
          - explorer
  /api/v2/projects/{projectUuid}/pre-aggregates/dashboards/{dashboardUuidOrSlug}/audit:
    get:
      operationId: getDashboardPreAggregateAudit
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiGetDashboardPreAggregateAuditResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: 'Audits pre-aggregate hit/miss coverage for every tile on a dashboard

        without executing the queries. Returns a per-tile breakdown grouped

        by tab, suitable for CI coverage checks and pre-aggregate tuning.'
      summary: Get dashboard pre-aggregate audit
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - in: path
        name: dashboardUuidOrSlug
        required: true
        schema:
          type: string
    post:
      operationId: runDashboardPreAggregateAudit
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiGetDashboardPreAggregateAuditResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Audit pre-aggregate hit/miss coverage with runtime filter overrides
      summary: Run dashboard pre-aggregate audit
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - in: path
        name: dashboardUuidOrSlug
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiRunDashboardPreAggregateAuditBody'
  /api/v2/projects/{projectUuid}/pre-aggregates/materializations:
    get:
      operationId: getPreAggregateMaterializations
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiGetPreAggregateMaterializationsResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Retrieves pre-aggregate definitions with their latest materialization status
      summary: Get pre-aggregate materializations
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - in: query
        name: page
        required: false
        schema:
          format: double
          type: number
      - in: query
        name: pageSize
        required: false
        schema:
          format: double
          type: number
  /api/v2/orgs/{orgUuid}/roles:
    post:
      operationId: CreateOrganizationRole
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDefaultRoleResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Create a new role in organization
      summary: Create custom role
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRole'
    get:
      operationId: GetOrganizationRoles
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ApiGetRolesResponse'
                - $ref: '#/components/schemas/ApiRoleWithScopesResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Get roles for organization
      summary: Get organization roles
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: query
        name: load
        required: false
        schema:
          type: string
      - in: query
        name: roleTypeFilter
        required: false
        schema:
          type: string
  /api/v2/orgs/{orgUuid}/roles/{roleUuid}:
    patch:
      operationId: UpdateOrganizationRole
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDefaultRoleResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Update role in organization
      summary: Update custom role
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: roleUuid
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRole'
    delete:
      operationId: DeleteOrganizationRole
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Delete role from organization
      summary: Delete custom role
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: roleUuid
        required: true
        schema:
          type: string
    get:
      operationId: GetCustomRoleByUuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleWithScopesResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Get custom role by uuid
      summary: Get custom role
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: roleUuid
        required: true
        schema:
          type: string
  /api/v2/orgs/{orgUuid}/roles/{roleUuid}/assignees:
    get:
      operationId: GetOrganizationRoleAssignees
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleAssigneesResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: 'List the users, groups, and service accounts currently assigned to a role.

        Used by the delete-confirmation modal to explain why a role cannot

        be deleted while still in use.'
      summary: List role assignees
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: roleUuid
        required: true
        schema:
          type: string
  /api/v2/orgs/{orgUuid}/roles/{roleUuid}/scopes:
    post:
      operationId: AddScopesToRole
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Add scopes to role
      summary: Add scopes to role
      tags:
      - v2
      deprecated: true
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: roleUuid
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddScopesToRole'
  /api/v2/orgs/{orgUuid}/roles/{roleUuid}/scopes/{scopeName}:
    delete:
      operationId: RemoveScopeFromRole
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRemoveScopeFromRoleResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Remove scope from role
      summary: Remove scope from role
      tags:
      - v2
      deprecated: true
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: roleUuid
        required: true
        schema:
          type: string
      - in: path
        name: scopeName
        required: true
        schema:
          type: string
  /api/v2/projects/{projectId}/roles/assignments:
    get:
      operationId: GetProjectRoleAssignments
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleAssignmentListResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: List project role assignments
      summary: List project role assignments
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
  /api/v2/projects/{projectId}/roles/assignments/user/{userId}:
    post:
      operationId: UpsertProjectUserRoleAssignment
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleAssignmentResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Create or update project role assignment for user (upsert)
      summary: Assign project role to user
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: userId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertUserRoleAssignmentRequest'
    delete:
      operationId: DeleteProjectUserRoleAssignment
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Delete project role assignment for user
      summary: Remove project role from user
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: userId
        required: true
        schema:
          type: string
  /api/v2/projects/{projectId}/roles/assignments/group/{groupId}:
    post:
      operationId: UpsertProjectGroupRoleAssignment
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleAssignmentResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Create or update project role assignment for group (upsert)
      summary: Assign project role to group
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: groupId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertUserRoleAssignmentRequest'
    patch:
      operationId: UpdateProjectGroupRoleAssignment
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleAssignmentResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Update project role assignment for group
      summary: Update project group role
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: groupId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRoleAssignmentRequest'
    delete:
      operationId: DeleteProjectGroupRoleAssignment
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUnassignRoleFromUserResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Delete project role assignment for group
      summary: Remove project role from group
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: groupId
        required: true
        schema:
          type: string
  /api/v2/orgs/{orgUuid}/roles/assignments:
    get:
      operationId: GetOrganizationRoleAssignments
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleAssignmentListResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: List organization role assignments (system roles only)
      summary: List organization role assignments
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
  /api/v2/orgs/{orgUuid}/roles/assignments/user/{userId}:
    post:
      operationId: UpsertOrganizationUserRoleAssignment
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleAssignmentResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Assign system role to user at organization level
      summary: Assign organization role to user
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: userId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                roleId:
                  type: string
              required:
              - roleId
              type: object
  /api/v2/orgs/{orgUuid}/roles/{roleId}/duplicate:
    post:
      operationId: DuplicateRole
      responses:
        '201':
          description: Role duplicated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRoleWithScopesResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Duplicate a role
      summary: Duplicate role
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: orgUuid
        required: true
        schema:
          type: string
      - in: path
        name: roleId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRole'
  /api/v2/projects/{projectUuid}/validate:
    get:
      operationId: ListValidationResults
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiPaginatedValidateResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Get paginated validation results for a project with search, filter, and sort support.
      summary: List validation results
      tags:
      - v2
      security: []
      parameters:
      - description: the projectId for the validation
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - description: page number (1-indexed)
        in: query
        name: page
        required: false
        schema:
          default: 1
          format: double
          type: number
      - description: number of results per page
        in: query
        name: pageSize
        required: false
        schema:
          default: 20
          format: double
          type: number
      - description: search string to filter by name or error message
        in: query
        name: searchQuery
        required: false
        schema:
          type: string
      - description: field to sort by
        in: query
        name: sortBy
        required: false
        schema:
          type: string
          enum:
          - name
          - createdAt
          - errorType
          - source
      - description: sort direction
        in: query
        name: sortDirection
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
      - description: comma-separated list of source types to filter by
        in: query
        name: sourceTypes
        required: false
        schema:
          type: string
      - description: comma-separated list of error types to filter by
        in: query
        name: errorTypes
        required: false
        schema:
          type: string
      - description: whether to include chart configuration warnings
        in: query
        name: includeChartConfigWarnings
        required: false
        schema:
          type: boolean
      - description: boolean for analytics tracking
        in: query
        name: fromSettings
        required: false
        schema:
          type: boolean
  /api/v2/projects/{projectUuid}/validate/{validationIdOrUuid}:
    get:
      operationId: GetValidationResult
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSingleValidationResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Get a single validation result.
      summary: Get validation result
      tags:
      - v2
      security: []
      parameters:
      - description: the projectId for the validation
        in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - description: 'the validation UUID, or a legacy integer id

          for rows created before the UUID migration (PROD-7386).'
        in: path
        name: validationIdOrUuid
        required: true
        schema: {}
  /api/v2/saved/{chartUuid}/schedulers:
    get:
      operationId: getSavedChartSchedulers
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSavedChartPaginatedSchedulersResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Get all schedulers for a saved chart
      summary: List chart schedulers
      tags:
      - v2
      security: []
      parameters:
      - description: The uuid of the chart
        in: path
        name: chartUuid
        required: true
        schema:
          type: string
      - description: number of items per page
        in: query
        name: pageSize
        required: false
        schema:
          format: double
          type: number
      - description: page number
        in: query
        name: page
        required: false
        schema:
          format: double
          type: number
      - description: filter schedulers by name
        in: query
        name: searchQuery
        required: false
        schema:
          type: string
      - description: comma-separated list of scheduler formats to include
        in: query
        name: formats
        required: false
        schema:
          type: string
      - description: include the most recent run for each scheduler
        in: query
        name: includeLatestRun
        required: false
        schema:
          type: boolean
  /api/v2/saved/{chartUuid}/schedulers/{schedulerUuid}/runs:
    get:
      operationId: getSavedChartSchedulerRuns
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSchedulerRunsResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Get the run history of a single scheduler on a chart
      summary: List chart scheduler runs
      tags:
      - v2
      security: []
      parameters:
      - description: The uuid of the chart
        in: path
        name: chartUuid
        required: true
        schema:
          type: string
      - description: The uuid of the scheduler
        in: path
        name: schedulerUuid
        required: true
        schema:
          type: string
      - description: number of items per page
        in: query
        name: pageSize
        required: false
        schema:
          format: double
          type: number
      - description: page number
        in: query
        name: page
        required: false
        schema:
          format: double
          type: number
      - description: filter runs by scheduler name
        in: query
        name: searchQuery
        required: false
        schema:
          type: string
      - description: column to sort by (scheduledTime, createdAt)
        in: query
        name: sortBy
        required: false
        schema:
          type: string
          enum:
          - scheduledTime
          - createdAt
      - description: sort direction (asc or desc)
        in: query
        name: sortDirection
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
      - description: comma-separated list of run statuses to include
        in: query
        name: statuses
        required: false
        schema:
          type: string
      - description: comma-separated list of destination types to include
        in: query
        name: destinations
        required: false
        schema:
          type: string
  /api/v2/projects/{projectUuid}/query/{queryUuid}:
    get:
      operationId: getAsyncQueryResults
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiGetAsyncQueryResultsResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Retrieves paginated results from a previously executed async query using its UUID
      summary: Get results
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - description: The UUID of the async query to retrieve results for
        in: path
        name: queryUuid
        required: true
        schema:
          type: string
      - description: Page number for pagination (starts at 1)
        in: query
        name: page
        required: false
        schema:
          format: double
          type: number
      - description: 'Number of results per page (default: 500, max: 5000)'
        in: query
        name: pageSize
        required: false
        schema:
          format: double
          type: number
  /api/v2/projects/{projectUuid}/query/{queryUuid}/cancel:
    post:
      operationId: cancelAsyncQuery
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccessEmpty'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Cancels a running async query and discards any partial results
      summary: Cancel query
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - description: The UUID of the async query to cancel
        in: path
        name: queryUuid
        required: true
        schema:
          type: string
  /api/v2/projects/{projectUuid}/query/{queryUuid}/calculate-total:
    post:
      operationId: executeAsyncCalculateTotal
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncMetricQueryResults_'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      description: Calculates totals for a previously-executed query, referenced by its queryUuid. Re-runs the source query's MetricQuery against the warehouse so totals are correct for every metric type (count distinct, average, ratio, etc.) — unlike client-side cell summation, which only works for sum/count. The requested `kind` selects which totals to compute.
      summary: Calculate totals
      tags:
      - v2
      security: []
      parameters:
      - in: path
        name: projectUuid
        required: true
        schema:
          type: string
      - description: The UUID of the previously-executed query to compute totals from
        in: path
        name: queryUuid
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecuteAsyncCalculateTotalRequestParams'
  /api/v2/projects/{projectUuid}/query/metric-query:
    post:
      operationId: executeAsyncMetricQuery
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiSuccess_ApiExecuteAsyncMetricQueryResults_'
        default:
          description: Error
          content:
            application/json:
              schema:
       

# --- truncated at 32 KB (280 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lightdash/refs/heads/main/openapi/lightdash-v2-api-openapi.yml