OpenMetadata Lineage API
The `Lineage` for a given data asset, has information of the input datasets used and the ETL pipeline that created it.
The `Lineage` for a given data asset, has information of the input datasets used and the ETL pipeline that created it.
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-lineage-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 Lineage 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: Lineage
description: The `Lineage` for a given data asset, has information of the input datasets used and the ETL pipeline that created it.
paths:
/v1/lineage:
put:
tags:
- Lineage
summary: Add a lineage edge
description: Add a lineage edge with from entity as upstream node and to entity as downstream node.
operationId: addLineageEdge
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddLineage'
responses:
'404':
description: Entity for instance {id} is not found
/v1/lineage/{fromEntity}/{fromId}/{toEntity}/{toId}:
delete:
tags:
- Lineage
summary: Delete a lineage edge
description: Delete a lineage edge with from entity as upstream node and to entity as downstream node.
operationId: deleteLineageEdge
parameters:
- name: fromEntity
in: path
description: Entity type of upstream entity of the edge
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: fromId
in: path
description: Entity id
required: true
schema:
type: string
- name: toEntity
in: path
description: Entity type for downstream entity of the edge
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: toId
in: path
description: Entity id
required: true
schema:
type: string
responses:
'404':
description: Entity for instance {fromId} is not found
patch:
tags:
- Lineage
summary: Patch a lineage edge
description: Patch a lineage edge with from entity as upstream node and to entity as downstream node.
operationId: patchLineageEdge
parameters:
- name: fromEntity
in: path
description: Entity type of upstream entity of the edge
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: fromId
in: path
description: Entity id
required: true
schema:
type: string
- name: toEntity
in: path
description: Entity type for downstream entity of the edge
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: toId
in: path
description: Entity id
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:
'404':
description: Entity for instance {fromId} is not found
/v1/lineage/{fromEntity}/name/{fromFQN}/{toEntity}/name/{toFQN}:
delete:
tags:
- Lineage
summary: Delete a lineage edge by FQNs
description: Delete a lineage edge with from entity as upstream node and to entity as downstream node.
operationId: deleteLineageEdgeByName
parameters:
- name: fromEntity
in: path
description: Entity type of upstream entity of the edge
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: fromFQN
in: path
description: Entity FQN
required: true
schema:
type: string
- name: toEntity
in: path
description: Entity type for downstream entity of the edge
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: toFQN
in: path
description: Entity FQN
required: true
schema:
type: string
responses:
'404':
description: Entity for instance {fromFQN} is not found
/v1/lineage/{entityType}/{entityId}/type/{lineageSource}:
delete:
tags:
- Lineage
summary: Delete a lineage edge by Type
description: Delete a lineage edge with from entity as upstream node and to entity as downstream node by source of lineage
operationId: deleteLineageEdgeByType
parameters:
- name: entityType
in: path
description: Entity type of upstream entity of the edge
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: entityId
in: path
description: Entity ID
required: true
schema:
type: string
- name: lineageSource
in: path
description: Lineage Type
required: true
schema:
type: string
example: ViewLineage
responses:
'404':
description: Entity for instance {entityFQN} is not found
/v1/lineage/export:
get:
tags:
- Lineage
summary: Export lineage
operationId: exportLineage
parameters:
- name: fqn
in: query
description: fqn
schema:
type: string
- name: upstreamDepth
in: query
description: upstreamDepth
schema:
type: integer
format: int32
- name: downstreamDepth
in: query
description: downstreamDepth
schema:
type: integer
format: int32
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
- name: type
in: query
description: entity type
schema:
type: string
responses:
'200':
description: search response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
/v1/lineage/exportAsync:
get:
tags:
- Lineage
summary: Export lineage
operationId: exportLineage_1
parameters:
- name: fqn
in: query
description: fqn
schema:
type: string
- name: upstreamDepth
in: query
description: upstreamDepth
schema:
type: integer
format: int32
- name: downstreamDepth
in: query
description: downstreamDepth
schema:
type: integer
format: int32
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
- name: type
in: query
description: entity type
schema:
type: string
responses:
'200':
description: search response
content:
application/json:
schema:
$ref: '#/components/schemas/CSVExportMessage'
/v1/lineage/exportByEntityCountAsync:
get:
tags:
- Lineage
summary: Export lineage by entity count
operationId: exportLineageByEntityCount
parameters:
- name: fqn
in: query
description: fqn
required: true
schema:
type: string
- name: direction
in: query
description: Direction of lineage traversal
required: true
schema:
type: string
enum:
- Upstream
- Downstream
- name: from
in: query
description: Starting offset for pagination (0-based)
schema:
minimum: 0
type: integer
format: int32
default: 0
- name: size
in: query
description: Number of entities to return in this page
schema:
type: integer
format: int32
default: 10000
- name: nodeDepth
in: query
description: Filter entities by specific node depth level (optional)
required: true
schema:
type: integer
format: int32
- name: maxDepth
in: query
description: Maximum depth to traverse in the specified direction
schema:
type: integer
format: int32
default: 10000
- name: upstreamDepth
in: query
description: Maximum upstream depth to compute pagination info for
schema:
type: integer
format: int32
- name: downstreamDepth
in: query
description: Maximum downstream depth to compute pagination info for
schema:
type: integer
format: int32
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
default: false
- name: entityType
in: query
description: entity type
schema:
type: string
- name: fields
in: query
description: Source Fields to Include
schema:
type: string
default: '*'
responses:
'200':
description: export response
content:
application/json:
schema:
$ref: '#/components/schemas/CSVExportMessage'
/v1/lineage/{entity}/{id}:
get:
tags:
- Lineage
summary: Get lineage by Id
description: Get lineage details for an entity identified by `Id`.
operationId: getLineage
parameters:
- name: entity
in: path
description: Entity type for which lineage is requested
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: id
in: path
description: Id of the entity
required: true
schema:
type: string
- name: upstreamDepth
in: query
description: Upstream depth of lineage (default=1, min=0, max=3)
schema:
maximum: 3
minimum: 0
type: integer
format: int32
default: 1
- name: downstreamDepth
in: query
description: Upstream depth of lineage (default=1, min=0, max=3)
schema:
maximum: 3
minimum: 0
type: integer
format: int32
default: 1
responses:
'200':
description: Entity lineage
content:
application/json:
schema:
$ref: '#/components/schemas/EntityLineage'
'404':
description: Entity for instance {id} is not found
/v1/lineage/{entity}/name/{fqn}:
get:
tags:
- Lineage
summary: Get lineage by fully qualified name
description: Get lineage details for an entity identified by fully qualified name.
operationId: getLineageByFQN
parameters:
- name: entity
in: path
description: Entity type for which lineage is requested
required: true
schema:
type: string
example: table, report, metrics, or dashboard
- name: fqn
in: path
description: Fully qualified name of the entity that uniquely identifies an entity
required: true
schema:
type: string
- name: upstreamDepth
in: query
description: Upstream depth of lineage (default=1, min=0, max=3)
schema:
maximum: 3
minimum: 0
type: integer
format: int32
default: 1
- name: downstreamDepth
in: query
description: Upstream depth of lineage (default=1, min=0, max=3)
schema:
maximum: 3
minimum: 0
type: integer
format: int32
default: 1
responses:
'200':
description: Entity lineage
content:
application/json:
schema:
$ref: '#/components/schemas/EntityLineage'
'404':
description: Entity for instance {fqn} is not found
/v1/lineage/getLineageByEntityCount:
get:
tags:
- Lineage
summary: Get lineage with entity count based pagination
description: Get lineage entities with pagination support, optionally filtered by node depth
operationId: getLineageByEntityCount
parameters:
- name: fqn
in: query
description: fqn
required: true
schema:
type: string
- name: direction
in: query
description: Direction of lineage traversal
required: true
schema:
type: string
enum:
- Upstream
- Downstream
- name: from
in: query
description: Starting offset for pagination (0-based)
schema:
minimum: 0
type: integer
format: int32
default: 0
- name: size
in: query
description: Number of entities to return in this page
schema:
type: integer
format: int32
default: 10000
- name: nodeDepth
in: query
description: Filter entities by specific node depth level (optional)
required: true
schema:
type: integer
format: int32
- name: maxDepth
in: query
description: Maximum depth to traverse in the specified direction
schema:
type: integer
format: int32
default: 10000
- name: upstreamDepth
in: query
description: Maximum upstream depth to use when calculating pagination info
schema:
type: integer
format: int32
default: 10000
- name: downstreamDepth
in: query
description: Maximum downstream depth to use when calculating pagination info
schema:
type: integer
format: int32
default: 10000
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
default: false
- name: entityType
in: query
description: entity type
schema:
type: string
- name: fields
in: query
description: Source Fields to Include
schema:
type: string
default: '*'
- name: column_filter
in: query
description: Column-level lineage filter. Supports filtering by column names, tags, or glossary terms (e.g., 'columnName:customer_id', 'tag:PII', 'glossary:BusinessTerm')
schema:
type: string
- name: preserve_paths
in: query
description: When true, preserves all nodes in the path to filtered results. When false, only returns nodes matching the filter. Default is false.
schema:
type: boolean
default: false
- name: include_pagination_info
in: query
description: When true, includes pagination totals and depth counts in the entity-count response.
schema:
type: boolean
default: false
responses:
'200':
description: lineage response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchLineageResult'
/v1/lineage/getLineageEdge/{fromId}/{toId}:
get:
tags:
- Lineage
summary: Get a lineage edge
description: Get a lineage edge with from entity as upstream node and to entity as downstream node.
operationId: getLineageEdge
parameters:
- name: fromId
in: path
description: Entity FQN
required: true
schema:
type: string
- name: toId
in: path
description: Entity FQN
required: true
schema:
type: string
responses:
'404':
description: Entity for instance {fromId} is not found
/v1/lineage/getPaginationInfo:
get:
tags:
- Lineage
summary: Get lineage pagination information
description: Get pagination information showing total entities per layer and across depth
operationId: getLineagePaginationInfo
parameters:
- name: fqn
in: query
description: fqn
schema:
type: string
- name: upstreamDepth
in: query
description: upstreamDepth
schema:
type: integer
format: int32
default: 10000
- name: downstreamDepth
in: query
description: downstreamDepth
schema:
type: integer
format: int32
default: 10000
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
default: false
- name: type
in: query
description: entity type
schema:
type: string
responses:
'200':
description: pagination info response
content:
application/json:
schema:
$ref: '#/components/schemas/LineagePaginationInfo'
/v1/lineage/getDataQualityLineage:
get:
tags:
- Lineage
summary: Search Data Quality lineage
operationId: searchDataQualityLineage
parameters:
- name: fqn
in: query
description: fqn
schema:
type: string
- name: upstreamDepth
in: query
description: upstreamDepth
schema:
type: integer
format: int32
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
responses:
'200':
description: search response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
/v1/lineage/getPlatformLineage:
get:
tags:
- Lineage
summary: Get Platform Lineage
operationId: getPlatformLineage
parameters:
- name: view
in: query
description: view (service or domain)
schema:
pattern: service|domain|dataProduct|all
type: string
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
responses:
'200':
description: search response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
/v1/lineage/getLineage:
get:
tags:
- Lineage
summary: Search lineage
operationId: searchLineage
parameters:
- name: fqn
in: query
description: fqn
schema:
type: string
- name: upstreamDepth
in: query
description: upstreamDepth
schema:
type: integer
format: int32
- name: downstreamDepth
in: query
description: downstreamDepth
schema:
type: integer
format: int32
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
- name: fields
in: query
description: Source Fields to Include
schema:
type: string
default: '*'
- name: type
in: query
description: entity type
schema:
type: string
- name: from
in: query
description: From field to paginate the results, defaults to 0
schema:
type: integer
format: int32
default: 0
- name: size
in: query
description: Size field to limit the no.of results returned, defaults to 10
schema:
type: integer
format: int32
default: 1000
- name: column_filter
in: query
description: Column-level lineage filter. Supports filtering by column names, tags, or glossary terms (e.g., 'columnName:customer_id', 'tag:PII', 'glossary:BusinessTerm')
schema:
type: string
- name: preserve_paths
in: query
description: When true, preserves all nodes in the path to filtered results. When false, only returns nodes matching the filter. Default is true.
schema:
type: boolean
default: true
responses:
'200':
description: search response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
/v1/lineage/getLineage/{direction}:
get:
tags:
- Lineage
summary: Search lineage with Direction
operationId: searchLineageWithDirection
parameters:
- name: fqn
in: query
description: fqn
schema:
type: string
- name: direction
in: path
description: Direction
required: true
schema:
type: string
- name: upstreamDepth
in: query
description: upstreamDepth
schema:
type: integer
format: int32
- name: downstreamDepth
in: query
description: downstreamDepth
schema:
type: integer
format: int32
- name: query_filter
in: query
description: Elasticsearch query that will be combined with the query_string query generator from the `query` argument
schema:
type: string
- name: includeDeleted
in: query
description: Filter documents by deleted param. By default deleted is false
schema:
type: boolean
- name: fields
in: query
description: Source Fields to Include
schema:
type: string
default: '*'
- name: type
in: query
description: entity type
schema:
type: string
- name: from
in: query
description: From field to paginate the results, defaults to 0
schema:
type: integer
format: int32
default: 0
- name: size
in: query
description: Size field to limit the no.of results returned, defaults to 10
schema:
type: integer
format: int32
default: 1000
- name: column_filter
in: query
description: Column-level lineage filter. Supports filtering by column names, tags, or glossary terms (e.g., 'columnName:customer_id', 'tag:PII', 'glossary:BusinessTerm')
schema:
type: string
- name: preserve_paths
in: query
description: When true, preserves all nodes in the path to filtered results. When false, only returns nodes matching the filter. Default is true.
schema:
type: boolean
default: true
responses:
'200':
description: search response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
components:
schemas:
ColumnLineage:
type: object
properties:
fromColumns:
type: array
items:
type: string
toColumn:
maxLength: 3072
minLength: 1
type: string
function:
type: string
RelationshipRef:
type: object
properties:
id:
type: string
format: uuid
fullyQualifiedName:
maxLength: 3072
minLength: 1
type: string
fqnHash:
type: string
type:
type: string
SearchLineageResult:
type: object
properties:
nodes:
type: object
additionalProperties:
$ref: '#/components/schemas/NodeInformation'
upstreamEdges:
type: object
additionalProperties:
$ref: '#/components/schemas/EsLineageData'
downstreamEdges:
type: object
additionalProperties:
$ref: '#/components/schemas/EsLineageData'
paginationInfo:
$ref: '#/components/schemas/LineagePaginationInfo'
EntityLineage:
required:
- entity
type: object
properties:
entity:
$ref: '#/components/schemas/EntityReference'
nodes:
type: array
items:
$ref: '#/components/schemas/EntityReference'
upstreamEdges:
type: array
items:
$ref: '#/components/schemas/Edge'
downstreamEdges:
type: array
items:
$ref: '#/components/schemas/Edge'
LayerPaging:
type: object
properties:
entityDownstreamCount:
type: integer
format: int32
entityUpstreamCount:
type: integer
format: int32
AddLineage:
required:
- edge
type: object
properties:
edge:
$ref: '#/components/schemas/EntitiesEdge'
EsLineageData:
type: object
properties:
fromEntity:
$ref: '#/components/schemas/RelationshipRef'
toEntity:
$ref: '#/components/schemas/RelationshipRef'
pipeline:
type: object
sqlQuery:
type: string
sqlQueryKey:
type: string
columns:
type: array
items:
$ref: '#/components/schemas/ColumnLineage'
description:
type: string
source:
type: string
docId:
type: string
docUniqueId:
type: string
pipelineEntityType:
type: string
createdAt:
type: integer
format: int64
createdBy:
type: string
updatedAt:
type: integer
format: int64
updatedBy:
type: string
assetEdges:
type: integer
format: int32
tempLineageTables:
type: array
items:
$ref: '#/components/schemas/TempLineageTable'
SearchResponse:
type: object
JsonPatch:
type: object
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
CSVExportMessage:
type: object
properties:
jobId:
type: string
status:
type: string
data:
type: string
error:
type: string
progress:
type: integer
format: int32
total:
type: integer
format: int32
message:
type: string
NodeInformation:
type: object
properties:
entity:
type: object
additionalProperties:
type: object
paging:
$ref: '#/components/schemas/LayerPaging'
nodeDepth:
minimum: 0
type: integer
format: int32
Edge:
required:
- fromEntity
- toEntity
type: object
properties:
fromEntity:
type: string
format: uuid
toEntity:
type: string
format: uuid
description:
type: string
lineageDetails:
$ref: '#/components/schemas/LineageDetails'
TempLineageTable:
required:
- fromEntity
- toEntity
type: object
properties:
fromEntity:
type: string
toEntity:
type: string
LineageDetails:
type: object
properties:
sqlQuery:
type: string
columnsLineage:
type: array
items:
$ref: '#/components/schemas/ColumnLineage'
pipeline:
$ref: '#/components/schemas/EntityReference'
description:
type: string
source:
type: string
enum:
- Manual
- ViewLineage
- QueryLineage
- PipelineLineage
- DashboardLineage
- DbtLineage
- SparkLineage
- OpenLineage
- ExternalTableLineage
- CrossDatabaseLineage
- ChildAssets
createdAt:
type: integer
format: int64
createdBy:
type: string
updatedAt:
type: integer
format: int64
updatedBy:
type: string
assetEdges:
type: integer
format: int32
tempLineageTables:
type: array
items:
$ref: '#/components/schemas/TempLineageTable'
LineagePaginationInfo:
required:
- downstreamDepthInfo
- maxDownstreamDepth
- maxUpstreamDepth
- totalDownstreamEntities
- totalUpstreamEntities
- upstreamDepthInfo
type: object
properties:
totalUpstreamEntities:
minimum: 0
type: integer
format: int32
totalDownstreamEntities:
minimum: 0
type: integer
format: int32
upstreamDepthInfo:
type: array
items:
$ref: '#/components/schemas/DepthInfo'
downstreamDepthInfo:
type: array
items:
$ref: '#/components/schemas/DepthInfo'
maxUpstreamDepth:
minimum: 0
type: integer
format: int32
maxDownstreamDepth:
minimum: 0
type: integer
format: int32
DepthInfo:
required:
- depth
- entityCount
type: object
properties:
depth:
minimum: 0
t
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-lineage-api-openapi.yml