Find an asset by keyword and walk its lineage graph.
Runs a discovery search, resolves the top result's GUID, reads the entity, retrieves its lineage, and paginates to the next lineage page when the graph indicates additional related entities.
arazzo: 1.0.1
info:
title: Microsoft Purview Trace Data Asset Lineage
summary: Search for an asset, read its entity, then walk its lineage graph with pagination.
description: >-
Discovers a data asset by keyword and traces its lineage in the Purview
Atlas catalog. The workflow searches the catalog, takes the top hit's GUID,
reads the full entity, fetches its lineage in the requested direction, and
branches: when the lineage graph reports more children than the first page
returned it pulls the next page, otherwise it ends. Every step spells out
its request inline — including the inline OAuth2 bearer token — so the flow
can be read and executed without opening the underlying OpenAPI
description.
version: 1.0.0
x-realizes-capability-ids:
- BC-610.10
x-capability-derivation:
method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
min_confidence: 0.7
sources:
- capability_id: BC-610.10
capability_name: Data Governance Management
spec: microsoft-purview-entity-api-openapi.yml
confidence: 0.7
model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: discoveryApi
url: ../openapi/microsoft-purview-discovery-api-openapi.yml
type: openapi
- name: entityApi
url: ../openapi/microsoft-purview-entity-api-openapi.yml
type: openapi
- name: lineageApi
url: ../openapi/microsoft-purview-lineage-api-openapi.yml
type: openapi
workflows:
- workflowId: trace-asset-lineage
summary: Find an asset by keyword and walk its lineage graph.
description: >-
Runs a discovery search, resolves the top result's GUID, reads the entity,
retrieves its lineage, and paginates to the next lineage page when the graph
indicates additional related entities.
inputs:
type: object
required:
- authorization
- keywords
properties:
authorization:
type: string
description: The OAuth2 bearer token value, e.g. "Bearer eyJ0...".
keywords:
type: string
description: The search keywords used to find the data asset.
direction:
type: string
description: Lineage direction to traverse (INPUT, OUTPUT, or BOTH).
default: BOTH
depth:
type: integer
description: The number of hops of lineage to retrieve.
default: 3
steps:
- stepId: search
description: Search the catalog for assets matching the supplied keywords.
operationId: searchQuery
parameters:
- name: Authorization
in: header
value: $inputs.authorization
requestBody:
contentType: application/json
payload:
keywords: $inputs.keywords
limit: 10
successCriteria:
- condition: $statusCode == 200
outputs:
topAssetId: $response.body#/value/0/id
- stepId: getEntity
description: Read the full entity definition for the top search hit.
operationId: getEntityByGuid
parameters:
- name: Authorization
in: header
value: $inputs.authorization
- name: guid
in: path
value: $steps.search.outputs.topAssetId
successCriteria:
- condition: $statusCode == 200
outputs:
entityGuid: $response.body#/entity/guid
- stepId: getLineage
description: Retrieve the lineage graph for the entity in the requested direction.
operationId: getLineageByGuid
parameters:
- name: Authorization
in: header
value: $inputs.authorization
- name: guid
in: path
value: $steps.getEntity.outputs.entityGuid
- name: direction
in: query
value: $inputs.direction
- name: depth
in: query
value: $inputs.depth
successCriteria:
- condition: $statusCode == 200
outputs:
childrenCount: $response.body#/childrenCount
relations: $response.body#/relations
onSuccess:
- name: morePages
type: goto
stepId: getLineageNext
criteria:
- context: $response.body
condition: $.childrenCount > 0
type: jsonpath
- name: done
type: end
criteria:
- context: $response.body
condition: $.childrenCount == 0
type: jsonpath
- stepId: getLineageNext
description: Pull the next page of lineage when the graph reports additional children.
operationId: getLineageNextPage
parameters:
- name: Authorization
in: header
value: $inputs.authorization
- name: guid
in: path
value: $steps.getEntity.outputs.entityGuid
- name: direction
in: query
value: $inputs.direction
- name: offset
in: query
value: 0
- name: limit
in: query
value: 100
successCriteria:
- condition: $statusCode == 200
outputs:
nextRelations: $response.body#/relations
outputs:
entityGuid: $steps.getEntity.outputs.entityGuid
relations: $steps.getLineage.outputs.relations
nextRelations: $steps.getLineageNext.outputs.nextRelations
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
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.