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.
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-database-services-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 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:
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
DatabaseConnection:
type: object
properties:
config:
type: object
CSVExportResponse:
type: object
properties:
jobId:
type: string
message:
type: string
DatabaseServiceList:
required:
- data
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DatabaseService'
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'
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'
AssetCertification:
required:
- appliedDate
- expiryDate
- tagLabel
type: object
properties:
tagLabel:
$ref: '#/components/schemas/TagLabel'
appliedDate:
type: integer
format: int64
expiryDate:
type: integer
format: int64
CsvImportResult:
type: object
properties:
dryRun:
type: boolean
status:
type: string
enum:
- success
- failure
- aborted
- partialSuccess
- running
abortReason:
type: string
numberOfRowsProcessed:
minimum: 0
type: integer
format: int32
numberOfRowsPassed:
minimum: 0
type: integer
format: int32
numberOfRowsFailed:
minimum: 0
type: integer
format: int32
importResultsCsv:
type: string
PatternMatch:
required:
- name
- score
type: object
properties:
name:
type: string
regex:
type: string
score:
type: number
format: double
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'
UsageStats:
required:
- count
type: object
properties:
count:
minimum: 0
type: integer
format: int32
percentileRank:
type: number
format: double
TestConnectionStepResult:
required:
- mandatory
- name
- passed
type: object
properties:
name:
type: string
mandatory:
type: boolean
passed:
type: boolean
message:
type: string
errorLog:
type: string
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'
LifeCycle:
type: object
properties:
created:
$ref: '#/components/schemas/AccessDetails'
updated:
$ref: '#/components/schemas/AccessDetails'
accessed:
$ref: '#/components/schemas/AccessDetails'
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
EntityReference:
required:
- id
- type
type: object
properties:
id:
type: string
format: uuid
type:
type: string
name:
type: string
fullyQualifiedName:
type: string
description:
type: string
displayName:
type: string
deleted:
type: boolean
inherited:
type: boolean
href:
type: string
format: uri
FieldChange:
type: object
properties:
name:
type: string
oldValue:
type: object
newValue:
type: object
ChangeSummaryMap:
type: object
CreateDatabaseService:
required:
- name
- serviceType
type: object
properties:
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
displayName:
type: string
description:
type: string
tags:
type: array
items:
$ref: '#/components/schemas/TagLabel'
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
connection:
$ref: '#/components/schemas/DatabaseConnection'
owners:
type: array
items:
$ref: '#/components/schemas/EntityReference'
dataProducts:
type: array
items:
type: string
domains:
type: array
items:
type: string
ingestionRunner:
$ref: '#/components/schemas/EntityReference'
extension:
type: object
reviewers:
type: array
items:
$ref: '#/components/schemas/EntityReference'
lifeCycle:
$ref: '#/components/schemas/LifeCycle'
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
EntityError:
type: object
properties:
message:
type: string
entity:
type: object
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'
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/F
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-database-services-api-openapi.yml