OpenMetadata Domains API
A `Data Product` or `Data as a Product` is a logical unit that contains all components to process and store domain data for analytical or data-intensive use cases made available to data consumers.
A `Data Product` or `Data as a Product` is a logical unit that contains all components to process and store domain data for analytical or data-intensive use cases made available to data consumers.
openapi: 3.0.1
info:
title: OpenMetadata APIs Agent Executions Domains 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: Domains
description: A `Data Product` or `Data as a Product` is a logical unit that contains all components to process and store domain data for analytical or data-intensive use cases made available to data consumers.
paths:
/v1/dataProducts/{id}/followers:
put:
tags:
- Domains
summary: Add a follower
description: Add a user identified by `userId` as followed of this DataProduct
operationId: addFollowerToDataProduct
parameters:
- name: id
in: path
description: Id of the DataProduct
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: DataProduct for instance {id} is not found
/v1/dataProducts/{name}/assets/add:
put:
tags:
- Domains
summary: Bulk Add Assets
description: Bulk Add Assets
operationId: bulkAddAssets
parameters:
- name: name
in: path
description: Name of the Data product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: model for instance {id} is not found
/v1/dataProducts/{name}/inputPorts/add:
put:
tags:
- Domains
summary: Bulk Add Input Ports
description: Bulk Add Input Ports to a Data Product
operationId: bulkAddInputPorts
parameters:
- name: name
in: path
description: Name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {name} is not found
/v1/dataProducts/name/{fqn}/inputPorts/add:
put:
tags:
- Domains
summary: Bulk Add Input Ports by Name
description: Bulk Add Input Ports to a Data Product by fully qualified name
operationId: bulkAddInputPortsByName
parameters:
- name: fqn
in: path
description: Fully qualified name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {fqn} is not found
/v1/dataProducts/{name}/outputPorts/add:
put:
tags:
- Domains
summary: Bulk Add Output Ports
description: Bulk Add Output Ports to a Data Product
operationId: bulkAddOutputPorts
parameters:
- name: name
in: path
description: Name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {name} is not found
/v1/dataProducts/name/{fqn}/outputPorts/add:
put:
tags:
- Domains
summary: Bulk Add Output Ports by Name
description: Bulk Add Output Ports to a Data Product by fully qualified name
operationId: bulkAddOutputPortsByName
parameters:
- name: fqn
in: path
description: Fully qualified name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {fqn} is not found
/v1/dataProducts/{name}/assets/remove:
put:
tags:
- Domains
summary: Bulk Remove Assets
description: Bulk Remove Assets
operationId: bulkRemoveAssets
parameters:
- name: name
in: path
description: Name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: model for instance {id} is not found
/v1/dataProducts/{name}/inputPorts/remove:
put:
tags:
- Domains
summary: Bulk Remove Input Ports
description: Bulk Remove Input Ports from a Data Product
operationId: bulkRemoveInputPorts
parameters:
- name: name
in: path
description: Name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {name} is not found
/v1/dataProducts/name/{fqn}/inputPorts/remove:
put:
tags:
- Domains
summary: Bulk Remove Input Ports by Name
description: Bulk Remove Input Ports from a Data Product by fully qualified name
operationId: bulkRemoveInputPortsByName
parameters:
- name: fqn
in: path
description: Fully qualified name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {fqn} is not found
/v1/dataProducts/{name}/outputPorts/remove:
put:
tags:
- Domains
summary: Bulk Remove Output Ports
description: Bulk Remove Output Ports from a Data Product
operationId: bulkRemoveOutputPorts
parameters:
- name: name
in: path
description: Name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {name} is not found
/v1/dataProducts/name/{fqn}/outputPorts/remove:
put:
tags:
- Domains
summary: Bulk Remove Output Ports by Name
description: Bulk Remove Output Ports from a Data Product by fully qualified name
operationId: bulkRemoveOutputPortsByName
parameters:
- name: fqn
in: path
description: Fully qualified name of the Data Product
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAssets'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'400':
description: All operations failed
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: DataProduct for instance {fqn} is not found
/v1/dataProducts:
get:
tags:
- Domains
summary: List dataProducts
description: Get a list of DataProducts.
operationId: listDataProducts
parameters:
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: domains,owners,reviewers,experts,extension,tags,followers,votes,certification
- name: domain
in: query
description: Filter data products by domain name
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 DataProduct before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of DataProduct after this cursor
schema:
type: string
responses:
'200':
description: List of DataProducts
content:
application/json:
schema:
$ref: '#/components/schemas/DataProductList'
put:
tags:
- Domains
summary: Create or update a dataProduct
description: Create a dataProduct. if it does not exist. If a dataProduct already exists, update the dataProduct.
operationId: createOrUpdateDataProduct
requestBody:
description: CreateDataProduct request
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDataProduct'
responses:
'200':
description: The dataProduct
content:
application/json:
schema:
$ref: '#/components/schemas/DataProduct'
'400':
description: Bad request
post:
tags:
- Domains
summary: Create a dataProduct
description: Create a new dataProduct.
operationId: createDataProduct
requestBody:
description: CreateDataProduct request
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDataProduct'
responses:
'200':
description: 'The dataProduct '
content:
application/json:
schema:
$ref: '#/components/schemas/DataProduct'
'400':
description: Bad request
/v1/dataProducts/name/{name}:
get:
tags:
- Domains
summary: Get a dataProduct by name
description: Get a dataProduct by `name`.
operationId: getDataProductByFQN
parameters:
- name: name
in: path
description: Name of the dataProduct
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: domains,owners,reviewers,experts,extension,tags,followers,votes,certification
responses:
'200':
description: dataProduct
content:
application/json:
schema:
$ref: '#/components/schemas/DataProduct'
'404':
description: DataProduct for instance {name} is not found
delete:
tags:
- Domains
summary: Delete a dataProduct by name
description: Delete a dataProduct by `name`.
operationId: deleteDataProductByFQN
parameters:
- name: name
in: path
description: Name of the dataProduct
required: true
schema:
type: string
responses:
'200':
description: OK
'404':
description: DataProduct for instance {name} is not found
/v1/dataProducts/{id}:
get:
tags:
- Domains
summary: Get a dataProduct by Id
description: Get a dataProduct by `Id`.
operationId: getDataProductByID
parameters:
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: domains,owners,reviewers,experts,extension,tags,followers,votes,certification
- name: id
in: path
description: Id of the dataProduct
required: true
schema:
type: string
format: uuid
responses:
'200':
description: The dataProduct
content:
application/json:
schema:
$ref: '#/components/schemas/DataProduct'
'404':
description: DataProduct for instance {id} is not found
delete:
tags:
- Domains
summary: Delete a dataProduct by Id
description: Delete a dataProduct by `Id`.
operationId: deleteDataProduct
parameters:
- name: id
in: path
description: Id of the dataProduct
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: DataProduct for instance {id} is not found
patch:
tags:
- Domains
summary: Update a dataProduct
description: Update an existing dataProduct using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchDataProduct_1
parameters:
- name: id
in: path
description: Id of the dataProduct
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/dataProducts/async/{id}:
delete:
tags:
- Domains
summary: Asynchronously delete a dataProduct by Id
description: Asynchronously delete a dataProduct by `Id`.
operationId: deleteDataProductAsync
parameters:
- name: id
in: path
description: Id of the dataProduct
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: DataProduct for instance {id} is not found
/v1/dataProducts/{id}/followers/{userId}:
delete:
tags:
- Domains
summary: Remove a follower
description: Remove the user identified `userId` as a follower of the dataProduct.
operationId: deleteFollowerFromDataProduct
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/dataProducts/assets/counts:
get:
tags:
- Domains
summary: Get all data products with their asset counts
description: Get a map of data product fully qualified names to their asset counts using search aggregation.
operationId: getAllDataProductsWithAssetsCount
responses:
'200':
description: Map of data product FQN to asset count
content:
application/json: {}
/v1/dataProducts/{id}/assets:
get:
tags:
- Domains
summary: Get assets for a data product
description: Get paginated list of assets belonging to a data product.
operationId: getDataProductAssets
parameters:
- name: id
in: path
description: Id of the data product
required: true
schema:
type: string
format: uuid
- name: limit
in: query
description: Limit the number of results returned. Maximum of 1000 records will be returned in a single request.
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 10
- name: offset
in: query
description: Offset from which to start returning results
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: List of assets
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
'404':
description: DataProduct for instance {id} is not found
/v1/dataProducts/name/{fqn}/assets:
get:
tags:
- Domains
summary: Get assets for a data product by name
description: Get paginated list of assets belonging to a data product by data product name.
operationId: getDataProductAssetsByName
parameters:
- name: fqn
in: path
description: Name of the data product
required: true
schema:
type: string
- name: limit
in: query
description: Limit the number of results returned. Maximum of 1000 records will be returned in a single request.
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 10
- name: offset
in: query
description: Offset from which to start returning results
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: List of assets
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
'404':
description: DataProduct for instance {name} is not found
/v1/dataProducts/{id}/dataContract:
get:
tags:
- Domains
summary: Get data contract for a data product
description: Get the data contract associated with a data product.
operationId: getDataProductContract
parameters:
- name: id
in: path
description: Id of the data product
required: true
schema:
type: string
format: uuid
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
responses:
'200':
description: The data contract
content:
application/json:
schema:
$ref: '#/components/schemas/DataContract'
'404':
description: Data contract not found for the data product
/v1/dataProducts/{id}/inputPorts:
get:
tags:
- Domains
summary: Get input ports for a data product
description: Get paginated list of input ports (data assets consumed) for a data product.
operationId: getInputPorts
parameters:
- name: id
in: path
description: Id of the data product
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,votes,extension
- name: limit
in: query
description: Limit the number of results returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: offset
in: query
description: Offset from which to start returning results
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: List of input ports
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
'404':
description: DataProduct for instance {id} is not found
/v1/dataProducts/name/{fqn}/inputPorts:
get:
tags:
- Domains
summary: Get input ports for a data product by name
description: Get paginated list of input ports (data assets consumed) for a data product by name.
operationId: getInputPortsByName
parameters:
- name: fqn
in: path
description: Name of the data product
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,tags,followers,domains,votes,extension
- name: limit
in: query
description: Limit the number of results returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: offset
in: query
description: Offset from which to start returning results
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: List of input ports
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
'404':
description: DataProduct for instance {fqn} is not found
/v1/dataProducts/{id}/outputPorts:
get:
tags:
- Domains
summary: Get output ports for a data product
description: Get paginated list of output ports (data assets produced/exposed) for a data product.
operationId: getOutputPorts
parameters:
- name: id
in: path
description: Id of the data product
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,votes,extension
- name: limit
in: query
description: Limit the number of results returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: offset
in: query
description: Offset from which to start returning results
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: List of output ports
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
'404':
description: DataProduct for instance {id} is not found
/v1/dataProducts/name/{fqn}/outputPorts:
get:
tags:
- Domains
summary: Get output ports for a data product by name
description: Get paginated list of output ports (data assets produced/exposed) for a data product by name.
operationId: getOutputPortsByName
parameters:
- name: fqn
in: path
description: Name of the data product
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,tags,followers,domains,votes,extension
- name: limit
in: query
description: Limit the number of results returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: offset
in: query
description: Offset from which to start returning results
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: List of output ports
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
'404':
description: DataProduct for instance {fqn} is not found
/v1/dataProducts/{id}/portsView:
get:
tags:
- Domains
summary: Get combined input/output ports view for a data product
description: Get a combined view of input and output ports with independent pagination, optimized for lineage-like visualization.
operationId: getPortsView
parameters:
- name: id
in: path
description: Id of the data product
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,votes,extension
- name: inputLimit
in: query
description: Limit the number of input ports returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: inputOffset
in: query
description: Offset for input ports pagination
schema:
minimum: 0
type: integer
format: int64
default: 0
- name: outputLimit
in: query
description: Limit the number of output ports returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: outputOffset
in: query
description: Offset for output ports pagination
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: Combined ports view
content:
application/json:
schema:
$ref: '#/components/schemas/DataProductPortsView'
'404':
description: DataProduct for instance {id} is not found
/v1/dataProducts/name/{fqn}/portsView:
get:
tags:
- Domains
summary: Get combined input/output ports view for a data product by name
description: Get a combined view of input and output ports with independent pagination by name, optimized for lineage-like visualization.
operationId: getPortsViewByName
parameters:
- name: fqn
in: path
description: Name of the data product
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,tags,followers,domains,votes,extension
- name: inputLimit
in: query
description: Limit the number of input ports returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: inputOffset
in: query
description: Offset for input ports pagination
schema:
minimum: 0
type: integer
format: int64
default: 0
- name: outputLimit
in: query
description: Limit the number of output ports returned
schema:
maximum: 1000
minimum: 1
type: integer
format: int64
default: 50
- name: outputOffset
in: query
description: Offset for output ports pagination
schema:
minimum: 0
type: integer
format: int64
default: 0
responses:
'200':
description: Combined ports view
content:
application/json:
schema:
$ref: '#/components/schemas/DataProductPortsView'
'404':
description: DataProduct for instance {fqn} is not found
/v1/dataProducts/{id}/versions/{version}:
get:
tags:
- Domains
summary: Get a version of the dataProduct
description: Get a version of the dataProduct by given `Id`
operationId: listSpecificDataProductVersion
parameters:
- name: id
in: path
description: Id of the dataProduct
required: true
schema:
type: string
format: uuid
- name: version
in: path
description: DataProduct version number in the form `major`.`minor`
required: true
schema:
type: string
example: 0.1 or 1.1
responses:
'200':
description: dataProduct
# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-domains-api-openapi.yml