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.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/openmetadata-dashboard-data-models-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
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:
EntityHistory:
required:
- entityType
- versions
type: object
properties:
entityType:
type: string
versions:
type: array
items:
type: object
AccessDetails:
required:
- timestamp
type: object
properties:
timestamp:
type: integer
format: int64
accessedBy:
$ref: '#/components/schemas/EntityReference'
accessedByAProcess:
type: string
UsageDetails:
required:
- dailyStats
- date
type: object
properties:
dailyStats:
$ref: '#/components/schemas/UsageStats'
weeklyStats:
$ref: '#/components/schemas/UsageStats'
monthlyStats:
$ref: '#/components/schemas/UsageStats'
date:
type: string
JsonPatch:
type: object
DashboardDataModelList:
required:
- data
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DashboardDataModel'
paging:
$ref: '#/components/schemas/Paging'
errors:
type: array
items:
$ref: '#/components/schemas/EntityError'
warningsCount:
type: integer
format: int32
warnings:
type: array
items:
$ref: '#/components/schemas/EntityError'
AssetCertification:
required:
- appliedDate
- expiryDate
- tagLabel
type: object
properties:
tagLabel:
$ref: '#/components/schemas/TagLabel'
appliedDate:
type: integer
format: int64
expiryDate:
type: integer
format: int64
Column:
required:
- dataType
- name
type: object
properties:
name:
maxLength: 2147483647
minLength: 1
pattern: ^((?!::).)*$
type: string
displayName:
type: string
dataType:
type: string
enum:
- NUMBER
- TINYINT
- SMALLINT
- INT
- BIGINT
- BYTEINT
- BYTES
- FLOAT
- DOUBLE
- DECIMAL
- NUMERIC
- TIMESTAMP
- TIMESTAMPZ
- TIME
- DATE
- DATETIME
- INTERVAL
- STRING
- MEDIUMTEXT
- TEXT
- CHAR
- LONG
- VARCHAR
- BOOLEAN
- BINARY
- VARBINARY
- ARRAY
- BLOB
- LONGBLOB
- MEDIUMBLOB
- MAP
- STRUCT
- UNION
- SET
- GEOGRAPHY
- ENUM
- JSON
- UUID
- VARIANT
- GEOMETRY
- BYTEA
- AGGREGATEFUNCTION
- ERROR
- FIXED
- RECORD
- 'NULL'
- SUPER
- HLLSKETCH
- PG_LSN
- PG_SNAPSHOT
- TSQUERY
- TXID_SNAPSHOT
- XML
- MACADDR
- TSVECTOR
- UNKNOWN
- CIDR
- INET
- CLOB
- ROWID
- LOWCARDINALITY
- YEAR
- POINT
- POLYGON
- TUPLE
- SPATIAL
- TABLE
- NTEXT
- IMAGE
- IPV4
- IPV6
- DATETIMERANGE
- HLL
- LARGEINT
- QUANTILE_STATE
- AGG_STATE
- BITMAP
- UINT
- BIT
- MONEY
- MEASURE HIDDEN
- MEASURE VISIBLE
- MEASURE
- KPI
- HEIRARCHY
- HIERARCHYID
arrayDataType:
type: string
enum:
- NUMBER
- TINYINT
- SMALLINT
- INT
- BIGINT
- BYTEINT
- BYTES
- FLOAT
- DOUBLE
- DECIMAL
- NUMERIC
- TIMESTAMP
- TIMESTAMPZ
- TIME
- DATE
- DATETIME
- INTERVAL
- STRING
- MEDIUMTEXT
- TEXT
- CHAR
- LONG
- VARCHAR
- BOOLEAN
- BINARY
- VARBINARY
- ARRAY
- BLOB
- LONGBLOB
- MEDIUMBLOB
- MAP
- STRUCT
- UNION
- SET
- GEOGRAPHY
- ENUM
- JSON
- UUID
- VARIANT
- GEOMETRY
- BYTEA
- AGGREGATEFUNCTION
- ERROR
- FIXED
- RECORD
- 'NULL'
- SUPER
- HLLSKETCH
- PG_LSN
- PG_SNAPSHOT
- TSQUERY
- TXID_SNAPSHOT
- XML
- MACADDR
- TSVECTOR
- UNKNOWN
- CIDR
- INET
- CLOB
- ROWID
- LOWCARDINALITY
- YEAR
- POINT
- POLYGON
- TUPLE
- SPATIAL
- TABLE
- NTEXT
- IMAGE
- IPV4
- IPV6
- DATETIMERANGE
- HLL
- LARGEINT
- QUANTILE_STATE
- AGG_STATE
- BITMAP
- UINT
- BIT
- MONEY
- MEASURE HIDDEN
- MEASURE VISIBLE
- MEASURE
- KPI
- HEIRARCHY
- HIERARCHYID
dataLength:
type: integer
format: int32
precision:
type: integer
format: int32
scale:
type: integer
format: int32
dataTypeDisplay:
type: string
description:
type: string
fullyQualifiedName:
maxLength: 3072
minLength: 1
type: string
tags:
type: array
items:
$ref: '#/components/schemas/TagLabel'
constraint:
type: string
enum:
- 'NULL'
- NOT_NULL
- UNIQUE
- PRIMARY_KEY
ordinalPosition:
type: integer
format: int32
jsonSchema:
type: string
children:
type: array
items:
$ref: '#/components/schemas/Column'
profile:
$ref: '#/components/schemas/ColumnProfile'
customMetrics:
type: array
items:
$ref: '#/components/schemas/CustomMetric'
extension:
type: object
CustomMetric:
required:
- expression
- name
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
description:
type: string
columnName:
type: string
expression:
type: str
# --- 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