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.

OpenAPI Specification

openmetadata-classifications-api-openapi.yml Raw ↑
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