OpenMetadata Classifications API
These APIs are related to `Classification` and `Tags`. A `Classification` entity contains hierarchical terms called `Tags` used for categorizing and classifying data assets and other entities.
These APIs are related to `Classification` and `Tags`. A `Classification` entity contains hierarchical terms called `Tags` used for categorizing and classifying data assets and other entities.
openapi: 3.0.1
info:
title: OpenMetadata APIs Agent Executions Classifications 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: Classifications
description: These APIs are related to `Classification` and `Tags`. A `Classification` entity contains hierarchical terms called `Tags` used for categorizing and classifying data assets and other entities.
paths:
/v1/classifications:
get:
tags:
- Classifications
summary: List classifications
description: Get a list of classifications.
operationId: listClassifications
parameters:
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,reviewers,usageCount,termCount,autoClassificationConfig
- name: disabled
in: query
description: Filter Disabled Classifications
schema:
type: string
- name: limit
in: query
description: 'Limit the number classifications returned. (1 to 1000000, default = 10) '
schema:
maximum: 1000000
minimum: 0
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of classifications before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of classifications after this cursor
schema:
type: string
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
responses:
'200':
description: 'The user '
content:
application/json:
schema:
$ref: '#/components/schemas/ClassificationList'
put:
tags:
- Classifications
summary: Update a classification
description: Update an existing category identify by category name
operationId: createOrUpdateClassification
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateClassification'
responses:
default:
description: default response
content:
application/json: {}
post:
tags:
- Classifications
summary: Create a classification
description: Create a new classification. The request can include the children tags to be created along with the classification.
operationId: createClassification
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateClassification'
responses:
'200':
description: 'The user '
content:
application/json:
schema:
$ref: '#/components/schemas/Classification'
'400':
description: Bad request
/v1/classifications/name/{name}:
get:
tags:
- Classifications
summary: Get a classification by name
description: Get a classification identified by name. The response includes classification information along with the entire hierarchy of all the children tags.
operationId: getClassificationByName
parameters:
- name: name
in: path
description: Name of the classification
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,reviewers,usageCount,termCount,autoClassificationConfig
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
responses:
'200':
description: 'The user '
content:
application/json:
schema:
$ref: '#/components/schemas/Classification'
'404':
description: Classification for instance {name} is not found
delete:
tags:
- Classifications
summary: Delete classification by name
description: Delete a classification by `name` and all the tags under it.
operationId: deleteClassificationByName
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: name
in: path
description: Name of the classification
required: true
schema:
type: string
responses:
'200':
description: OK
'404':
description: classification for instance {name} is not found
/v1/classifications/{id}:
get:
tags:
- Classifications
summary: Get a classification by id
description: Get a classification by `id`
operationId: getClassificationByID
parameters:
- name: id
in: path
description: Id of the classification
required: true
schema:
type: string
format: uuid
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,reviewers,usageCount,termCount,autoClassificationConfig
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
- name: includeRelations
in: query
description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
schema:
type: string
example: owners:non-deleted,followers:all
responses:
'200':
description: classification
content:
application/json:
schema:
$ref: '#/components/schemas/Classification'
'404':
description: Classification for instance {id} is not found
delete:
tags:
- Classifications
summary: Delete classification by id
description: Delete a classification and all the tags under it.
operationId: deleteClassification
parameters:
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the classification
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json: {}
patch:
tags:
- Classifications
summary: Update a classification
description: Update an existing classification using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchClassification_1
parameters:
- name: id
in: path
description: Id of the classification
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/classifications/async/{id}:
delete:
tags:
- Classifications
summary: Asynchronously delete classification by id
description: Asynchronously delete a classification and all the tags under it.
operationId: deleteClassificationAsync
parameters:
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the classification
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json: {}
/v1/classifications/{id}/versions/{version}:
get:
tags:
- Classifications
summary: Get a version of the classification
description: Get a version of the classification by given `id`
operationId: getSpecificClassificationVersion
parameters:
- name: id
in: path
description: Id of the classification
required: true
schema:
type: string
format: uuid
- name: version
in: path
description: classification version number in the form `major`.`minor`
required: true
schema:
type: string
example: 0.1 or 1.1
responses:
'200':
description: glossaries
content:
application/json:
schema:
$ref: '#/components/schemas/Classification'
'404':
description: Classification for instance {id} and version {version} is not found
/v1/classifications/history:
get:
tags:
- Classifications
summary: List all entity versions within a time range
description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
operationId: listAllEntityVersionsByTimestamp_55
parameters:
- name: startTs
in: query
description: Start timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: endTs
in: query
description: End timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: limit
in: query
description: Limit the number of entity returned (1 to 1000000, default = 10)
schema:
maximum: 500
minimum: 1
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of entity versions before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of entity versions after this cursor
schema:
type: string
responses:
'200':
description: List of all versions
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
/v1/classifications/{id}/versions:
get:
tags:
- Classifications
summary: List classification versions
description: Get a list of all the versions of a classification identified by `id`
operationId: listAllClassificationVersion
parameters:
- name: id
in: path
description: Id of the classification
required: true
schema:
type: string
format: uuid
responses:
'200':
description: List of classification versions
content:
application/json:
schema:
$ref: '#/components/schemas/EntityHistory'
/v1/classifications/name/{fqn}:
patch:
tags:
- Classifications
summary: Update a classification using name.
description: Update an existing classification using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchClassification
parameters:
- name: fqn
in: path
description: Name of the classification
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:
default:
description: default response
content:
application/json: {}
/v1/classifications/restore:
put:
tags:
- Classifications
summary: Restore a soft deleted classification
description: Restore a soft deleted classification.
operationId: restoreClassification
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreEntity'
responses:
'200':
description: 'Successfully restored the Table '
content:
application/json:
schema:
$ref: '#/components/schemas/Classification'
/v1/tags/{id}/assets/add:
put:
tags:
- Classifications
summary: Bulk Add Classification Tag to Assets
description: Bulk Add Classification Tag to Assets
operationId: bulkAddTagToAssets
parameters:
- name: id
in: path
description: Id of the Entity
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddTagToAssetsRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperationResult'
'404':
description: model for instance {id} is not found
/v1/tags/{id}/assets/remove:
put:
tags:
- Classifications
summary: Bulk Remove Tag from Assets
description: Bulk Remove Tag from Assets
operationId: bulkRemoveTagFromAssets
parameters:
- name: id
in: path
description: Id of the Entity
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddTagToAssetsRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
'404':
description: model for instance {id} is not found
/v1/tags:
get:
tags:
- Classifications
summary: List tags
description: Get a list of tags. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params.
operationId: listTags
parameters:
- name: parent
in: query
description: List tags filtered by children of tag identified by fqn given in `parent` parameter. The fqn can either be classificationName or fqn of a parent tag
schema:
type: string
example: owners,reviewers,domains,children,usageCount,recognizers,autoClassificationEnabled,autoClassificationPriority
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,reviewers,domains,children,usageCount,recognizers,autoClassificationEnabled,autoClassificationPriority
- name: disabled
in: query
description: Filter Disabled Classifications
schema:
type: string
example: owners,reviewers,domains,children,usageCount,recognizers,autoClassificationEnabled,autoClassificationPriority
- name: limit
in: query
description: Limit the number tags returned. (1 to 1000000, default = 10)
schema:
maximum: 1000000
minimum: 0
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of tags before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of tags after this cursor
schema:
type: string
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
responses:
'200':
description: List of tags
content:
application/json:
schema:
$ref: '#/components/schemas/TagList'
put:
tags:
- Classifications
summary: Create or update a tag
description: Create a new tag, if it does not exist or update an existing tag.
operationId: createOrUpdateTag
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTag'
responses:
'200':
description: The tag
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
'400':
description: Bad request
post:
tags:
- Classifications
summary: Create a tag
description: Create a new tag.
operationId: createTag
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTag'
responses:
'200':
description: The tag
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
'400':
description: Bad request
/v1/tags/name/{fqn}:
get:
tags:
- Classifications
summary: Get a tag by fully qualified name
description: Get a tag by `fullyQualifiedName`.
operationId: getTagByFQN
parameters:
- name: fqn
in: path
description: Fully qualified name of the tag
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,reviewers,domains,children,usageCount,recognizers,autoClassificationEnabled,autoClassificationPriority
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
- name: includeRelations
in: query
description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
schema:
type: string
example: owners:non-deleted,followers:all
responses:
'200':
description: The tag
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
'404':
description: Tag for instance {fqn} is not found
delete:
tags:
- Classifications
summary: Delete a tag by fully qualified name
description: Delete a tag by `fullyQualifiedName`.
operationId: deleteTagByName
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: fqn
in: path
description: Fully qualified name of the tag
required: true
schema:
type: string
responses:
'200':
description: OK
'404':
description: tag for instance {fqn} is not found
patch:
tags:
- Classifications
summary: Update a tag using name.
description: Update an existing tag using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchTag
parameters:
- name: fqn
in: path
description: Name of the tag
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:
default:
description: default response
content:
application/json: {}
/v1/tags/{id}:
get:
tags:
- Classifications
summary: Get a tag by id
description: Get a tag by `id`.
operationId: getTagByID
parameters:
- name: id
in: path
description: Id of the tag
required: true
schema:
type: string
format: uuid
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,reviewers,domains,children,usageCount,recognizers,autoClassificationEnabled,autoClassificationPriority
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
- name: includeRelations
in: query
description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
schema:
type: string
example: owners:non-deleted,followers:all
responses:
'200':
description: The tag
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
'404':
description: Tag for instance {id} is not found
delete:
tags:
- Classifications
summary: Delete a tag by id
description: Delete a tag by `id`.
operationId: deleteTag
parameters:
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the tag
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: tag for instance {id} is not found
patch:
tags:
- Classifications
summary: Update a tag
description: Update an existing tag using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchTag_1
parameters:
- name: id
in: path
description: Id of the tag
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/tags/async/{id}:
delete:
tags:
- Classifications
summary: Asynchronously delete a tag by id
description: Asynchronously delete a tag by `id`.
operationId: deleteTagAsync
parameters:
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the tag
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: tag for instance {id} is not found
/v1/tags/assets/counts:
get:
tags:
- Classifications
summary: Get all tags with their asset counts
description: Get a map of tag fully qualified names to their asset counts using search aggregation.
operationId: getAllTagsWithAssetsCount
responses:
'200':
description: Map of tag FQN to asset count
content:
application/json: {}
/v1/tags/feedback/pending:
get:
tags:
- Classifications
summary: Get all pending feedback
description: Get all feedback entries pending review across all tags
operationId: getPendingFeedback
responses:
'200':
description: Pending feedback list retrieved successfully
/v1/tags/feedback/{id}:
get:
tags:
- Classifications
summary: Get feedback by ID
description: Get a specific feedback entry by its ID
operationId: getRecognizerFeedback
parameters:
- name: id
in: path
description: ID of the feedback
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Feedback retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/RecognizerFeedback'
'404':
description: Feedback not found
/v1/tags/name/{fqn}/feedback:
get:
tags:
- Classifications
summary: Get all feedback for a tag
description: Get all feedback entries for a specific tag
operationId: getTagFeedback
parameters:
- name: fqn
in: path
description: Fully qualified name of the tag
required: true
schema:
type: string
responses:
'200':
description: Feedback list retrieved successfully
post:
tags:
- Classifications
summary: Submit feedback on auto-applied tag
description: Submit user feedback when a recognizer incorrectly applies this tag
operationId: submitRecognizerFeedback
parameters:
- name: fqn
in: path
description: Fully qualified name of the tag
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecognizerFeedback'
responses:
'201':
description: Feedback submitted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/RecognizerFeedback'
'400':
description: Bad request
'404':
description: Tag not found
/v1/tags/{id}/versions/{version}:
get:
tags:
- Classifications
summary: Get a version of the tags
description: Get a version of the tag by given `id`
operationId: getSpecificTagVersion
parameters:
- name: id
in: path
description: Id of the tag
required: true
schema:
type: string
format: uuid
- name: version
in: path
description: tag version number in the form `major`.`minor`
required: true
schema:
type: string
example: 0.1 or 1.1
responses:
'200':
description: tags
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
'404':
description: Tag for instance {id} and version {version} is not found
/v1/tags/history:
get:
tags:
- Classifications
summary: List all entity versions within a time range
description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
operationId: listAllEntityVersionsByTimestamp_56
parameters:
- name: startTs
in: query
description: Start timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: endTs
in: query
description: End timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: limit
in: query
description: Limit the number of entity returned (1 to 1000000, default = 10)
schema:
maximum: 500
minimum: 1
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of entity versions before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of entity versions after this cursor
schema:
type: string
responses:
'200':
description: List of all versions
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
/v1/tags/name/{fqn}/recognizers:
get:
tags:
- Classifications
summary: Lists a tag's recognizers
description: Paginated endpoint to return a tag's recognizer list
operationId: listATagsRecognizersByFQN
parameters:
- name: fqn
in: path
description: Fully Qualified Name of the tag in question
required: true
schema:
type: string
- name: limit
in: query
description: Limit the number tags returned. (1 to 1000000, default = 10)
schema:
maximum: 1000000
minimum: 0
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of tags before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of tags after this cursor
schema:
type: string
responses:
'200':
description: A list of recognizers
content:
application/json:
schema:
$ref: '#/components/schemas/RecognizerList'
/v1/tags/{id}/recognizers:
get:
tags:
- Classifications
summary: Lists a tag's recognizers
description: Paginated endpoint to return a tag's recognizer list
operationId: listATagsRecogniz
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-classifications-api-openapi.yml