OpenMetadata Dashboard Data Models API

`Data Models` are the schemas used to build dashboards, charts, or other data assets.

OpenAPI Specification

openmetadata-dashboard-data-models-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: OpenMetadata APIs Agent Executions Dashboard Data Models API
  description: Common types and API definition for OpenMetadata
  contact:
    name: OpenMetadata
    url: https://open-metadata.org
    email: openmetadata-dev@googlegroups.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.13'
servers:
- url: /api
  description: Current Host
- url: http://localhost:8585/api
  description: Endpoint URL
security:
- BearerAuth: []
tags:
- name: Dashboard Data Models
  description: '`Data Models` are the schemas used to build dashboards, charts, or other data assets.'
paths:
  /v1/dashboard/datamodels/{id}/followers:
    put:
      tags:
      - Dashboard Data Models
      summary: Add a follower
      description: Add a user identified by `userId` as followed of this data model
      operationId: addFollowerToDataModel
      parameters:
      - name: id
        in: path
        description: Id of the data model
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: Id of the user to be added as follower
        content:
          application/json:
            schema:
              type: string
              format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: DataModel for instance {id} is not found
  /v1/dashboard/datamodels/bulk:
    put:
      tags:
      - Dashboard Data Models
      summary: Bulk create or update dashboardDataModels
      description: Create or update multiple dashboardDataModels in a single operation. Returns a BulkOperationResult with success/failure details for each dashboardDataModel.
      operationId: bulkCreateOrUpdateDashboardDataModels
      parameters:
      - name: async
        in: query
        schema:
          type: boolean
          default: false
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CreateDashboardDataModel'
      responses:
        '200':
          description: Bulk operation results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '202':
          description: Bulk operation accepted for async processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: Bad request
  /v1/dashboard/datamodels:
    get:
      tags:
      - Dashboard Data Models
      summary: List Dashboard Data Models
      description: Get a list of dashboard datamodels, optionally filtered by `service` it belongs to. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params.
      operationId: listDashboardDataModels
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,sourceHash,extension
      - name: service
        in: query
        description: Filter dashboardDataModel by service name
        schema:
          type: string
          example: superset
      - name: limit
        in: query
        description: Limit the number dashboardDataModel returned. (1 to 1000000, default = 10)
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of dashboardDataModel before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of dashboardDataModel after this cursor
        schema:
          type: string
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of dashboard datamodels
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardDataModelList'
    put:
      tags:
      - Dashboard Data Models
      summary: Create or update dashboard datamodel
      description: Create a dashboard datamodel, it it does not exist or update an existing dashboard datamodel.
      operationId: createOrUpdateDataModel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDashboardDataModel'
      responses:
        '200':
          description: The updated dashboard datamodel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardDataModel'
    post:
      tags:
      - Dashboard Data Models
      summary: Create a dashboard datamodel
      description: Create a dashboard datamodel under an existing `service`.
      operationId: createDataModel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDashboardDataModel'
      responses:
        '200':
          description: The dashboard datamodel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardDataModel'
        '400':
          description: Bad request
  /v1/dashboard/datamodels/name/{fqn}:
    get:
      tags:
      - Dashboard Data Models
      summary: Get a dashboard datamodel by fully qualified name
      description: Get a dashboard datamodel by `fullyQualifiedName`.
      operationId: getDataModelByFQN
      parameters:
      - name: fqn
        in: path
        description: Fully qualified name of the dashboard datamodel
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,sourceHash,extension
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      - name: includeRelations
        in: query
        description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
        schema:
          type: string
          example: owners:non-deleted,followers:all
      responses:
        '200':
          description: The dashboard datamodel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardDataModel'
        '404':
          description: DataModel for instance {fqn} is not found
    delete:
      tags:
      - Dashboard Data Models
      summary: Delete a data model by fully qualified name.
      description: Delete a data model by `fullyQualifiedName`.
      operationId: deleteDataModelByFQN
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: recursive
        in: query
        description: Recursively delete this entity and it's children. (Default `false`)
        schema:
          type: boolean
          default: false
      - name: fqn
        in: path
        description: Fully qualified name of the data model
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: DataModel for instance {fqn} is not found
    patch:
      tags:
      - Dashboard Data Models
      summary: Update a dashboard datamodel by name.
      description: Update an existing dashboard datamodel using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchDataModel
      parameters:
      - name: fqn
        in: path
        description: Name of the dashboard datamodel
        required: true
        schema:
          type: string
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/dashboard/datamodels/{id}:
    get:
      tags:
      - Dashboard Data Models
      summary: Get a dashboard datamodel by Id
      description: Get a dashboard datamodel by `id`.
      operationId: getDataModelByID
      parameters:
      - name: id
        in: path
        description: Id of the dashboard datamodel
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,sourceHash,extension
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      - name: includeRelations
        in: query
        description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
        schema:
          type: string
          example: owners:non-deleted,followers:all
      responses:
        '200':
          description: The dashboard datamodel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardDataModel'
        '404':
          description: DataModel for instance {id} is not found
    delete:
      tags:
      - Dashboard Data Models
      summary: Delete a data model by `id`.
      description: Delete a dashboard datamodel by `id`.
      operationId: deleteDataModel
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: recursive
        in: query
        description: Recursively delete this entity and it's children. (Default `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the data model
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: DataModel for instance {id} is not found
    patch:
      tags:
      - Dashboard Data Models
      summary: Update a dashboard datamodel
      description: Update an existing dashboard datamodel using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchDataModel_1
      parameters:
      - name: id
        in: path
        description: Id of the dashboard datamodel
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/dashboard/datamodels/async/{id}:
    delete:
      tags:
      - Dashboard Data Models
      summary: Asynchronously delete a data model by `id`.
      description: Asynchronously delete a dashboard datamodel by `id`.
      operationId: deleteDataModelAsync
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: recursive
        in: query
        description: Recursively delete this entity and it's children. (Default `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the data model
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: DataModel for instance {id} is not found
  /v1/dashboard/datamodels/{id}/followers/{userId}:
    delete:
      tags:
      - Dashboard Data Models
      summary: Remove a follower
      description: Remove the user identified `userId` as a follower of the data model.
      operationId: deleteFollowerFromDataModel
      parameters:
      - name: id
        in: path
        description: Id of the data model
        required: true
        schema:
          type: string
          format: uuid
      - name: userId
        in: path
        description: Id of the user being removed as follower
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/dashboard/datamodels/{id}/columns:
    get:
      tags:
      - Dashboard Data Models
      summary: Get data model columns with pagination
      description: Get a paginated list of data model columns. This endpoint provides server-side pagination to handle data models with large numbers of columns efficiently.
      operationId: getDataModelColumns
      parameters:
      - name: id
        in: path
        description: Id of the data model
        required: true
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: Limit the number of columns returned (1 to 1000, default = 50)
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 50
      - name: offset
        in: query
        description: Offset for pagination (default = 0)
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
      - name: fields
        in: query
        description: Fields requested in the returned columns
        schema:
          type: string
          example: tags
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of data model columns
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataModelColumnList'
  /v1/dashboard/datamodels/name/{fqn}/columns:
    get:
      tags:
      - Dashboard Data Models
      summary: Get data model columns with pagination by FQN
      description: Get a paginated list of data model columns by fully qualified name. This endpoint provides server-side pagination to handle data models with large numbers of columns efficiently.
      operationId: getDataModelColumnsByFQN
      parameters:
      - name: fqn
        in: path
        description: Fully qualified name of the data model
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Limit the number of columns returned (1 to 1000, default = 50)
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 50
      - name: offset
        in: query
        description: Offset for pagination (default = 0)
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
      - name: fields
        in: query
        description: Fields requested in the returned columns
        schema:
          type: string
          example: tags
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of data model columns
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataModelColumnList'
  /v1/dashboard/datamodels/{id}/versions/{version}:
    get:
      tags:
      - Dashboard Data Models
      summary: Get a version of the dashboard datamodel
      description: Get a version of the dashboard datamodel by given `id`
      operationId: getSpecificDataModelVersion
      parameters:
      - name: id
        in: path
        description: Id of the dashboard datamodel
        required: true
        schema:
          type: string
          format: uuid
      - name: version
        in: path
        description: DataModel version number in the form `major`.`minor`
        required: true
        schema:
          type: string
          example: 0.1 or 1.1
      responses:
        '200':
          description: dashboard datamodel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardDataModel'
        '404':
          description: DataModel for instance {id} and version {version} is not found
  /v1/dashboard/datamodels/history:
    get:
      tags:
      - Dashboard Data Models
      summary: List all entity versions within a time range
      description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
      operationId: listAllEntityVersionsByTimestamp_17
      parameters:
      - name: startTs
        in: query
        description: Start timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: endTs
        in: query
        description: End timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: limit
        in: query
        description: Limit the number of entity returned (1 to 1000000, default = 10)
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of entity versions before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of entity versions after this cursor
        schema:
          type: string
      responses:
        '200':
          description: List of all versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
  /v1/dashboard/datamodels/{id}/versions:
    get:
      tags:
      - Dashboard Data Models
      summary: List dashboard datamodel versions
      description: Get a list of all the versions of a dashboard datamodel identified by `id`
      operationId: listAllDataModelVersions
      parameters:
      - name: id
        in: path
        description: Id of the dashboard datamodel
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of dashboard datamodel versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityHistory'
  /v1/dashboard/datamodels/restore:
    put:
      tags:
      - Dashboard Data Models
      summary: Restore a soft deleted data model.
      description: Restore a soft deleted data model.
      operationId: restore_16
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreEntity'
      responses:
        '200':
          description: Successfully restored the data model
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardDataModel'
  /v1/dashboard/datamodels/name/{fqn}/columns/search:
    get:
      tags:
      - Dashboard Data Models
      summary: Search data model columns with pagination by FQN
      description: Search data model columns by name, description, or data type with server-side pagination. This endpoint provides efficient search functionality for data models with large numbers of columns.
      operationId: searchDataModelColumnsByFQN
      parameters:
      - name: fqn
        in: path
        description: Fully qualified name of the data model
        required: true
        schema:
          type: string
      - name: q
        in: query
        description: Search query for column names, descriptions, or data types
        schema:
          type: string
      - name: limit
        in: query
        description: Limit the number of columns returned (1 to 1000, default = 50)
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 50
      - name: offset
        in: query
        description: Offset for pagination (default = 0)
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
      - name: fields
        in: query
        description: Fields requested in the returned columns
        schema:
          type: string
          example: tags
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of matching data model columns
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataModelColumnList'
  /v1/dashboard/datamodels/{id}/columns/search:
    get:
      tags:
      - Dashboard Data Models
      summary: Search data model columns with pagination by ID
      description: Search data model columns by name, description, or data type with server-side pagination. This endpoint provides efficient search functionality for data models with large numbers of columns.
      operationId: searchDataModelColumnsById
      parameters:
      - name: id
        in: path
        description: Id of the data model
        required: true
        schema:
          type: string
      - name: q
        in: query
        description: Search query for column names, descriptions, or data types
        schema:
          type: string
      - name: limit
        in: query
        description: Limit the number of columns returned (1 to 1000, default = 50)
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
          default: 50
      - name: offset
        in: query
        description: Offset for pagination (default = 0)
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
      - name: fields
        in: query
        description: Fields requested in the returned columns
        schema:
          type: string
          example: tags
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of matching data model columns
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataModelColumnList'
  /v1/dashboard/datamodels/{id}/vote:
    put:
      tags:
      - Dashboard Data Models
      summary: Update Vote for a Entity
      description: Update vote for a Entity
      operationId: updateVoteForEntity_6
      parameters:
      - name: id
        in: path
        description: Id of the Entity
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoteRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
        '404':
          description: model for instance {id} is not found
components:
  schemas:
    TagLabelRecognizerMetadata:
      required:
      - recognizerId
      - recognizerName
      - score
      type: object
      properties:
        recognizerId:
          type: string
          format: uuid
        recognizerName:
          type: string
        score:
          type: number
          format: double
        target:
          type: string
          enum:
          - content
          - column_name
        patterns:
          type: array
          items:
            $ref: '#/components/schemas/PatternMatch'
    ColumnProfile:
      required:
      - name
      - timestamp
      type: object
      properties:
        name:
          type: string
        timestamp:
          type: integer
          format: int64
        valuesCount:
          type: number
          format: double
        valuesPercentage:
          type: number
          format: double
        validCount:
          type: number
          format: double
        duplicateCount:
          type: number
          format: double
        nullCount:
          type: number
          format: double
        nullProportion:
          type: number
          format: double
        missingPercentage:
          type: number
          format: double
        missingCount:
          type: number
          format: double
        uniqueCount:
          type: number
          format: double
        uniqueProportion:
          type: number
          format: double
        distinctCount:
          type: number
          format: double
        distinctProportion:
          type: number
          format: double
        min:
          type: object
        max:
          type: object
        minLength:
          type: number
          format: double
        maxLength:
          type: number
          format: double
        mean:
          type: number
          format: double
        sum:
          type: number
          format: double
        stddev:
          type: number
          format: double
        variance:
          type: number
          format: double
        median:
          type: number
          format: double
        firstQuartile:
          type: number
          format: double
        thirdQuartile:
          type: number
          format: double
        interQuartileRange:
          type: number
          format: double
        nonParametricSkew:
          type: number
          format: double
        histogram:
          $ref: '#/components/schemas/Histogram'
        customMetrics:
          type: array
          items:
            $ref: '#/components/schemas/CustomMetricProfile'
        cardinalityDistribution:
          $ref: '#/components/schemas/CardinalityDistribution'
    BulkOperationResult:
      type: object
      properties:
        dryRun:
          type: boolean
        status:
          type: string
          enum:
          - success
          - failure
          - aborted
          - partialSuccess
          - running
        abortReason:
          type: string
        numberOfRowsProcessed:
          minimum: 0
          exclusiveMinimum: false
          type: integer
          format: int32
        numberOfRowsPassed:
          minimum: 0
          exclusiveMinimum: false
          type: integer
          format: int32
        numberOfRowsFailed:
          minimum: 0
          exclusiveMinimum: false
          type: integer
          format: int32
        successRequest:
          type: array
          items:
            $ref: '#/components/schemas/BulkResponse'
        failedRequest:
          type: array
          items:
            $ref: '#/components/schemas/BulkResponse'
    ChangeSummaryMap:
      type: object
    AccessDetails:
      required:
      - timestamp
      type: object
      properties:
        timestamp:
          type: integer
          format: int64
        accessedBy:
          $ref: '#/components/schemas/EntityReference'
        accessedByAProcess:
          type: string
    FieldChange:
      type: object
      properties:
        name:
          type: string
        oldValue:
          type: object
        newValue:
          type: object
    CoverImage:
      type: object
      properties:
        url:
          type: string
        position:
          type: string
    DashboardDataModel:
      required:
      - columns
      - dataModelType
      - id
      - name
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          maxLength: 256
          minLength: 1
          pattern: ^((?!::).)*$
          type: string
        displayName:
          type: string
        fullyQualifiedName:
          maxLength: 3072
          minLength: 1
          type: string
        description:
          type: string
        version:
          type: number
          format: double
        updatedAt:
          type: integer
          format: int64
        updatedBy:
          type: string
        impersonatedBy:
          type: string
        href:
          type: string
          format: uri
        owners:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        dataProducts:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        dataContract:
          $ref: '#/components/schemas/EntityReference'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagLabel'
        changeDescription:
          $ref: '#/components/schemas/ChangeDescription'
        incrementalChangeDescription:
          $ref: '#/components/schemas/ChangeDescription'
        deleted:
          type: boolean
        followers:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        service:
          $ref: '#/components/schemas/EntityReference'
        serviceType:
          type: string
          enum:
          - Superset
          - Looker
          - Tableau
          - Redash
          - Metabase
          - PowerBI
          - PowerBIReportServer
          - Mode
          - CustomDashboard
          - DomoDashboard
          - QuickSight
          - QlikSense
          - Lightdash
          - MicroStrategy
          - QlikCloud
          - Sigma
          - ThoughtSpot
          - Grafana
          - Hex
          - Ssrs
          - SapS4Hana
        dataModelType:
          type: string
          enum:
          - TableauDataModel
          - TableauPublishedDatasource
          - TableauEmbeddedDatasource
          - SupersetDataModel
          - MetabaseDataModel
          - LookMlView
          - LookMlExplore
          - PowerBIDataModel
          - QlikDataModel
          - QuickSightDataModel
          - SigmaDataModel
          - PowerBIDataFlow
          - MicroStrategyDataset
          - ThoughtSpotDataModel
          - SapS4HanaCdsView
          - SsrsDataModel
        sql:
          type: string
        columns:
          type: array
          items:
            $ref: '#/components/schemas/C

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-dashboard-data-models-api-openapi.yml