arazzo: 1.0.1
info:
title: Microsoft Purview Search and Classify a Found Asset
summary: Search the catalog, read the top hit, and apply a classification to it.
description: >-
A remediation-style governance flow. The workflow searches the Purview
catalog for assets matching a keyword, resolves the top result's GUID,
confirms the entity by reading it back, and applies a classification to it.
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
workflows:
- workflowId: search-and-classify
summary: Find an asset by keyword and classify it.
description: >-
Runs a discovery search, resolves and reads the top hit, then adds a
classification to that entity.
inputs:
type: object
required:
- authorization
- keywords
- classificationTypeName
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.
classificationTypeName:
type: string
description: The classification type name to apply, e.g. "MICROSOFT.PERSONAL.NAME".
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: 5
successCriteria:
- condition: $statusCode == 200
outputs:
topAssetId: $response.body#/value/0/id
searchCount: $response.body#/searchCount
- 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: classify
description: Apply the requested classification to the found entity.
operationId: addEntityClassifications
parameters:
- name: Authorization
in: header
value: $inputs.authorization
- name: guid
in: path
value: $steps.getEntity.outputs.entityGuid
requestBody:
contentType: application/json
payload:
- typeName: $inputs.classificationTypeName
entityGuid: $steps.getEntity.outputs.entityGuid
propagate: true
successCriteria:
- condition: $statusCode == 204
outputs:
entityGuid: $steps.getEntity.outputs.entityGuid
searchCount: $steps.search.outputs.searchCount
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.