Microsoft Purview · Arazzo Workflow

Microsoft Purview Trace Data Asset Lineage

Version 1.0.0

Search for an asset, read its entity, then walk its lineage graph with pagination.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub ComplianceData CatalogData ClassificationData GovernanceData Loss PreventionInformation ProtectionArazzoWorkflows

Provider

microsoft-purview

Workflows

trace-asset-lineage
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.
4 steps inputs: authorization, depth, direction, keywords outputs: entityGuid, nextRelations, relations
1
search
Search the catalog for assets matching the supplied keywords.
2
getEntity
Read the full entity definition for the top search hit.
3
getLineage
Retrieve the lineage graph for the entity in the requested direction.
4
getLineageNext
Pull the next page of lineage when the graph reports additional children.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
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

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/microsoft-purview-trace-asset-lineage-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

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.

A second provider on the same verified email joins the account you already have.