OpenMetadata Database Services API
`Database Service` is a service such as MySQL, BigQuery, Redshift, Postgres, or Snowflake. Alternative terms such as Database Cluster, Database Server instance are also used for database service.
`Database Service` is a service such as MySQL, BigQuery, Redshift, Postgres, or Snowflake. Alternative terms such as Database Cluster, Database Server instance are also used for database service.
openapi: 3.0.1
info:
title: OpenMetadata APIs Agent Executions Database Services 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: Database Services
description: '`Database Service` is a service such as MySQL, BigQuery, Redshift, Postgres, or Snowflake. Alternative terms such as Database Cluster, Database Server instance are also used for database service.'
paths:
/v1/services/databaseServices/{id}/followers:
put:
tags:
- Database Services
summary: Add a follower
description: Add a user identified by `userId` as followed of this database service
operationId: addFollowerToDatabaseService
parameters:
- name: id
in: path
description: Id of the Database Service
required: true
schema:
type: string
format: uuid
requestBody:
description: Id of the user to be added as follower
content:
application/json:
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
'404':
description: Database Service for instance {id} is not found
/v1/services/databaseServices/{id}/testConnectionResult:
put:
tags:
- Database Services
summary: Add test connection result
description: Add test connection result to the service.
operationId: addTestConnectionResult_2
parameters:
- name: id
in: path
description: Id of the service
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TestConnectionResult'
responses:
'200':
description: Successfully updated the service
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseService'
/v1/services/databaseServices:
get:
tags:
- Database Services
summary: List database services
description: Get a list of database services.
operationId: listDatabaseServices
parameters:
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: pipelines,owners,tags,domains,followers
- name: domain
in: query
description: Filter services by domain
schema:
type: string
example: Marketing
- name: limit
in: query
schema:
maximum: 1000000
minimum: 0
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of database services before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of database services 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 database service instances
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseServiceList'
put:
tags:
- Database Services
summary: Update database service
description: Update an existing or create a new database service.
operationId: createOrUpdateDatabaseService
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDatabaseService'
responses:
'200':
description: Database service instance
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseService'
'400':
description: Bad request
post:
tags:
- Database Services
summary: Create database service
description: Create a new database service.
operationId: createDatabaseService
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDatabaseService'
responses:
'200':
description: Database service instance
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseService'
'400':
description: Bad request
/v1/services/databaseServices/name/{name}:
get:
tags:
- Database Services
summary: Get database service by name
description: Get a database service by the service `name`.
operationId: getDatabaseServiceByFQN
parameters:
- name: name
in: path
description: Name of the database service
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: pipelines,owners,tags,domains,followers
- 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: Database service instance
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseService'
'404':
description: Database service for instance {name} is not found
delete:
tags:
- Database Services
summary: Delete a database service by name
description: Delete a database services by `name`. If databases (and tables) belong the service, it can't be deleted.
operationId: deleteDatabaseServiceByName
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: name
in: path
description: Name of the database service
required: true
schema:
type: string
responses:
'200':
description: OK
'404':
description: DatabaseService service for instance {name} is not found
/v1/services/databaseServices/{id}:
get:
tags:
- Database Services
summary: Get a database service
description: Get a database service by `Id`.
operationId: getDatabaseServiceByID
parameters:
- name: id
in: path
description: Id of the database service
required: true
schema:
type: string
format: uuid
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: pipelines,owners,tags,domains,followers
- 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: Database service instance
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseService'
'404':
description: Database service for instance {id} is not found
delete:
tags:
- Database Services
summary: Delete a database service by Id
description: Delete a database services. If databases (and tables) belong the service, it can't be deleted.
operationId: deleteDatabaseService
parameters:
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the database service
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: DatabaseService service for instance {id} is not found
patch:
tags:
- Database Services
summary: Update a database service
description: Update an existing database service using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchDatabaseService_1
parameters:
- name: id
in: path
description: Id of the database service
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/services/databaseServices/async/{id}:
delete:
tags:
- Database Services
summary: Asynchronously delete a database service by Id
description: Asynchronously delete a database services. If databases (and tables) belong the service, it can't be deleted.
operationId: deleteDatabaseServiceAsync
parameters:
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the database service
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: DatabaseService service for instance {id} is not found
/v1/services/databaseServices/{id}/followers/{userId}:
delete:
tags:
- Database Services
summary: Remove a follower
description: Remove the user identified `userId` as a follower of the entity.
operationId: deleteFollower_17
parameters:
- name: id
in: path
description: Id of the Entity
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
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
/v1/services/databaseServices/name/{name}/export:
get:
tags:
- Database Services
summary: Export database service in CSV format
operationId: exportDatabaseServices
parameters:
- name: name
in: path
description: Name of the Database Service
required: true
schema:
type: string
- name: recursive
in: query
description: If true, export will include child entities (schemas, tables, columns)
schema:
type: boolean
default: false
responses:
'200':
description: Exported csv with services from the database services
content:
application/json:
schema:
type: string
/v1/services/databaseServices/name/{name}/exportAsync:
get:
tags:
- Database Services
summary: Export database service in CSV format
operationId: exportDatabaseService
parameters:
- name: name
in: path
description: Name of the Database
required: true
schema:
type: string
- name: recursive
in: query
description: If true, export will include child entities (schemas, tables, columns)
schema:
type: boolean
default: false
responses:
'200':
description: Exported csv with database schemas
content:
application/json:
schema:
$ref: '#/components/schemas/CSVExportResponse'
/v1/services/databaseServices/{id}/versions/{version}:
get:
tags:
- Database Services
summary: Get a version of the database service
description: Get a version of the database service by given `Id`
operationId: getSpecificDatabaseServiceVersion
parameters:
- name: id
in: path
description: Id of the database service
required: true
schema:
type: string
format: uuid
- name: version
in: path
description: database service version number in the form `major`.`minor`
required: true
schema:
type: string
example: 0.1 or 1.1
responses:
'200':
description: database service
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseService'
'404':
description: Database service for instance {id} and version {version} is not found
/v1/services/databaseServices/name/{name}/import:
put:
tags:
- Database Services
summary: Import service from CSV to update database service (no creation allowed)
operationId: importDatabaseService
parameters:
- name: name
in: path
description: Name of the Database Service
required: true
schema:
type: string
- name: dryRun
in: query
description: Dry-run when true is used for validating the CSV without really importing it. (default=true)
schema:
type: boolean
default: true
- name: recursive
in: query
description: If true, recursive import
schema:
type: boolean
default: false
requestBody:
content:
text/plain; charset=UTF-8:
schema:
type: string
responses:
'200':
description: Import result
content:
application/json:
schema:
$ref: '#/components/schemas/CsvImportResult'
/v1/services/databaseServices/name/{name}/importAsync:
put:
tags:
- Database Services
summary: Import service from CSV to update database service asynchronously (no creation allowed)
operationId: importDatabaseServiceAsync
parameters:
- name: name
in: path
description: Name of the Database Service
required: true
schema:
type: string
- name: dryRun
in: query
description: Dry-run when true is used for validating the CSV without really importing it. (default=true)
schema:
type: boolean
default: true
- name: recursive
in: query
description: If true, recursive import
schema:
type: boolean
default: false
requestBody:
content:
text/plain; charset=UTF-8:
schema:
type: string
responses:
'200':
description: Import initiated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CsvImportResult'
/v1/services/databaseServices/history:
get:
tags:
- Database Services
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_42
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/services/databaseServices/{id}/versions:
get:
tags:
- Database Services
summary: List database service versions
description: Get a list of all the versions of a database service identified by `Id`
operationId: listAllDatabaseServiceVersion
parameters:
- name: id
in: path
description: Id of the database service
required: true
schema:
type: string
format: uuid
responses:
'200':
description: List of database service versions
content:
application/json:
schema:
$ref: '#/components/schemas/EntityHistory'
/v1/services/databaseServices/name/{fqn}:
patch:
tags:
- Database Services
summary: Update a database service using name.
description: Update an existing database service using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchDatabaseService
parameters:
- name: fqn
in: path
description: Name of the database service
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/services/databaseServices/restore:
put:
tags:
- Database Services
summary: Restore a soft deleted database service
description: Restore a soft deleted database service.
operationId: restore_32
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreEntity'
responses:
'200':
description: Successfully restored the DatabaseService.
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseService'
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'
DatabaseService:
required:
- id
- name
- serviceType
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
fullyQualifiedName:
maxLength: 3072
minLength: 1
type: string
displayName:
type: string
serviceType:
type: string
enum:
- BigQuery
- BigTable
- Mysql
- Redshift
- Snowflake
- Postgres
- Timescale
- Mssql
- MicrosoftAccess
- Oracle
- Athena
- Hive
- Impala
- Presto
- Trino
- Vertica
- Glue
- MariaDB
- Druid
- Db2
- Clickhouse
- Databricks
- AzureSQL
- DynamoDB
- SingleStore
- SQLite
- DeltaLake
- Salesforce
- PinotDB
- Datalake
- DomoDatabase
- QueryLog
- CustomDatabase
- Dbt
- SapHana
- SapSuccessFactors
- MongoDB
- Cassandra
- Couchbase
- Greenplum
- Doris
- StarRocks
- UnityCatalog
- SAS
- Teradata
- SapErp
- Synapse
- Exasol
- Cockroach
- SSAS
- Epic
- ServiceNow
- Dremio
- MicrosoftFabric
- BurstIQ
- Informix
- Iomete
- QuestDB
description:
type: string
connection:
$ref: '#/components/schemas/DatabaseConnection'
pipelines:
type: array
items:
$ref: '#/components/schemas/EntityReference'
testConnectionResult:
$ref: '#/components/schemas/TestConnectionResult'
tags:
type: array
items:
$ref: '#/components/schemas/TagLabel'
version:
type: number
format: double
updatedAt:
type: integer
format: int64
updatedBy:
type: string
impersonatedBy:
type: string
owners:
type: array
items:
$ref: '#/components/schemas/EntityReference'
href:
type: string
format: uri
followers:
type: array
items:
$ref: '#/components/schemas/EntityReference'
changeDescription:
$ref: '#/components/schemas/ChangeDescription'
incrementalChangeDescription:
$ref: '#/components/schemas/ChangeDescription'
deleted:
type: boolean
entityStatus:
type: string
enum:
- Draft
- In Review
- Approved
- Archived
- Deprecated
- Rejected
- Unprocessed
dataProducts:
type: array
items:
$ref: '#/components/schemas/EntityReference'
dataContract:
$ref: '#/components/schemas/EntityReference'
domains:
type: array
items:
$ref: '#/components/schemas/EntityReference'
ingestionRunner:
$ref: '#/components/schemas/EntityReference'
provider:
type: string
enum:
- system
- user
- automation
extension:
type: object
children:
type: array
items:
$ref: '#/components/schemas/EntityReference'
service:
$ref: '#/components/schemas/EntityReference'
style:
$ref: '#/components/schemas/Style'
experts:
type: array
items:
$ref: '#/components/schemas/EntityReference'
reviewers:
type: array
items:
$ref: '#/components/schemas/EntityReference'
usageSummary:
$ref: '#/components/schemas/UsageDetails'
votes:
$ref: '#/components/schemas/Votes'
lifeCycle:
$ref: '#/components/schemas/LifeCycle'
certification:
$ref: '#/components/schemas/AssetCertification'
ChangeSummaryMap:
type: object
AccessDetails:
required:
- timestamp
type: object
properties:
timestamp:
type: integer
format: int64
accessedBy:
$ref: '#/components/schemas/EntityReference'
accessedByAProcess:
type: string
RestoreEntity:
required:
- id
type: object
properties:
id:
type: string
format: uuid
FieldChange:
type: object
properties:
name:
type: string
oldValue:
type: object
newValue:
type: object
CoverImage:
type: object
properties:
url:
type: string
position:
type: string
LifeCycle:
type: object
properties:
created:
$ref: '#/components/schemas/AccessDetails'
updated:
$ref: '#/components/schemas/AccessDetails'
accessed:
$ref: '#/components/schemas/AccessDetails'
EntityHistory:
required:
- entityType
- versions
type: object
properties:
entityType:
type: string
versions:
type: array
items:
type: object
AssetCertification:
required:
- appliedDate
- expiryDate
- tagLabel
type: object
properties:
tagLabel:
$ref: '#/components/schemas/TagLabel'
appliedDate:
type: integer
format: int64
expiryDate:
type: integer
format: int64
ResultList:
required:
- data
type: object
properties:
data:
type: array
items:
type: object
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'
Paging:
required:
- total
type: object
properties:
before:
type: string
after:
type: string
offset:
type: integer
format: int32
limit:
type: integer
format: int32
total:
type: integer
format: int32
TestConnectionResult:
required:
- steps
type: object
properties:
lastUpdatedAt:
type: integer
format: int64
status:
type: string
enum:
- Successful
- Failed
- Running
steps:
type: array
items:
$ref: '#/components/schemas/TestConnectionStepResult'
JsonPatch:
type: object
ChangeDescription:
type: object
properties:
fieldsAdded:
type: array
items:
$ref: '#/components/schemas/FieldChange'
fieldsUpdated:
type: array
items:
$ref: '#/components/schemas/FieldChange'
fieldsDeleted:
type: array
items:
$ref: '#/components/schemas/FieldChange'
previousVersion:
type: number
format: double
changeSummary:
$ref: '#/components/schemas/ChangeSummaryMap'
CSVExportResponse:
type: object
properties:
jobId:
type: string
message:
type: string
ChangeEvent:
required:
- entityId
- entityType
- eventType
- id
- timestamp
type: object
properties:
id:
type: string
format: uuid
eventType:
type: string
enum:
- entityCreated
- entityUpdated
- entityFieldsChanged
- entityNoChange
- entitySoftDeleted
- entityDeleted
- entityRestored
- threadCreated
- threadUpdated
- postCreated
- postUpdated
- taskResolved
- taskClosed
- logicalTestCaseAdded
- suggestionCreated
- suggestionUpdated
- suggestionAccepted
- suggestionRejected
- suggestionDeleted
- userLogin
- userLogout
entityType:
type: string
entityId:
type: string
format: uuid
domains:
type: array
items:
type: string
format: uuid
entityFullyQualifiedName:
type: string
previousVersion:
type: number
format: double
currentVersion:
type: number
format: double
userName:
type: string
impersonatedBy:
type: string
timestamp:
type: integer
format: int64
changeDescription:
$ref: '#/components/schemas/ChangeDescription'
incrementalChangeDescription:
$ref: '#/components/schemas/ChangeDescription'
entity:
type: object
UsageStats:
required:
- count
type: object
properties:
count:
minimum: 0
exclusiveMinimum: false
type: integer
format: int32
percentileRank:
type: number
format: double
Style:
type: object
properties:
color:
type: string
iconURL:
type: string
coverImage:
$ref: '#/components/schemas/CoverImage'
Votes:
type: object
properties:
upVotes:
type: integer
format: int32
downVotes:
type: integer
format: int32
upVoters:
type: array
items:
$ref: '#/components/schemas/EntityReference'
downVoters:
type: array
items:
$ref: '#/components/schemas/EntityReference'
DatabaseConnection:
type: object
properties:
config:
type: object
CsvImportResult:
type: object
properties:
dryRun:
type: boolean
status:
type: string
enum:
- success
- failure
- aborted
- partialSuccess
- running
a
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-database-services-api-openapi.yml