OpenMetadata Dashboard Data Models API
`Data Models` are the schemas used to build dashboards, charts, or other data assets.
`Data Models` are the schemas used to build dashboards, charts, or other data assets.
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