OpenMetadata Domains API

A `Data Product` or `Data as a Product` is a logical unit that contains all components to process and store domain data for analytical or data-intensive use cases made available to data consumers.

OpenAPI Specification

openmetadata-domains-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: OpenMetadata APIs Agent Executions Domains 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: Domains
  description: A `Data Product` or `Data as a Product` is a logical unit that contains all components to process and store domain data for analytical or data-intensive use cases made available to data consumers.
paths:
  /v1/dataProducts/{id}/followers:
    put:
      tags:
      - Domains
      summary: Add a follower
      description: Add a user identified by `userId` as followed of this DataProduct
      operationId: addFollowerToDataProduct
      parameters:
      - name: id
        in: path
        description: Id of the DataProduct
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: Id of the user to be added as follower
        content:
          application/json:
            schema:
              type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
        '404':
          description: DataProduct for instance {id} is not found
  /v1/dataProducts/{name}/assets/add:
    put:
      tags:
      - Domains
      summary: Bulk Add Assets
      description: Bulk Add Assets
      operationId: bulkAddAssets
      parameters:
      - name: name
        in: path
        description: Name of the Data product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: model for instance {id} is not found
  /v1/dataProducts/{name}/inputPorts/add:
    put:
      tags:
      - Domains
      summary: Bulk Add Input Ports
      description: Bulk Add Input Ports to a Data Product
      operationId: bulkAddInputPorts
      parameters:
      - name: name
        in: path
        description: Name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {name} is not found
  /v1/dataProducts/name/{fqn}/inputPorts/add:
    put:
      tags:
      - Domains
      summary: Bulk Add Input Ports by Name
      description: Bulk Add Input Ports to a Data Product by fully qualified name
      operationId: bulkAddInputPortsByName
      parameters:
      - name: fqn
        in: path
        description: Fully qualified name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {fqn} is not found
  /v1/dataProducts/{name}/outputPorts/add:
    put:
      tags:
      - Domains
      summary: Bulk Add Output Ports
      description: Bulk Add Output Ports to a Data Product
      operationId: bulkAddOutputPorts
      parameters:
      - name: name
        in: path
        description: Name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {name} is not found
  /v1/dataProducts/name/{fqn}/outputPorts/add:
    put:
      tags:
      - Domains
      summary: Bulk Add Output Ports by Name
      description: Bulk Add Output Ports to a Data Product by fully qualified name
      operationId: bulkAddOutputPortsByName
      parameters:
      - name: fqn
        in: path
        description: Fully qualified name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {fqn} is not found
  /v1/dataProducts/{name}/assets/remove:
    put:
      tags:
      - Domains
      summary: Bulk Remove Assets
      description: Bulk Remove Assets
      operationId: bulkRemoveAssets
      parameters:
      - name: name
        in: path
        description: Name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: model for instance {id} is not found
  /v1/dataProducts/{name}/inputPorts/remove:
    put:
      tags:
      - Domains
      summary: Bulk Remove Input Ports
      description: Bulk Remove Input Ports from a Data Product
      operationId: bulkRemoveInputPorts
      parameters:
      - name: name
        in: path
        description: Name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {name} is not found
  /v1/dataProducts/name/{fqn}/inputPorts/remove:
    put:
      tags:
      - Domains
      summary: Bulk Remove Input Ports by Name
      description: Bulk Remove Input Ports from a Data Product by fully qualified name
      operationId: bulkRemoveInputPortsByName
      parameters:
      - name: fqn
        in: path
        description: Fully qualified name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {fqn} is not found
  /v1/dataProducts/{name}/outputPorts/remove:
    put:
      tags:
      - Domains
      summary: Bulk Remove Output Ports
      description: Bulk Remove Output Ports from a Data Product
      operationId: bulkRemoveOutputPorts
      parameters:
      - name: name
        in: path
        description: Name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {name} is not found
  /v1/dataProducts/name/{fqn}/outputPorts/remove:
    put:
      tags:
      - Domains
      summary: Bulk Remove Output Ports by Name
      description: Bulk Remove Output Ports from a Data Product by fully qualified name
      operationId: bulkRemoveOutputPortsByName
      parameters:
      - name: fqn
        in: path
        description: Fully qualified name of the Data Product
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAssets'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '400':
          description: All operations failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkOperationResult'
        '404':
          description: DataProduct for instance {fqn} is not found
  /v1/dataProducts:
    get:
      tags:
      - Domains
      summary: List dataProducts
      description: Get a list of DataProducts.
      operationId: listDataProducts
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: domains,owners,reviewers,experts,extension,tags,followers,votes,certification
      - name: domain
        in: query
        description: Filter data products by domain name
        schema:
          type: string
          example: marketing
      - name: limit
        in: query
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of DataProduct before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of DataProduct after this cursor
        schema:
          type: string
      responses:
        '200':
          description: List of DataProducts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProductList'
    put:
      tags:
      - Domains
      summary: Create or update a dataProduct
      description: Create a dataProduct. if it does not exist. If a dataProduct already exists, update the dataProduct.
      operationId: createOrUpdateDataProduct
      requestBody:
        description: CreateDataProduct request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDataProduct'
      responses:
        '200':
          description: The dataProduct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '400':
          description: Bad request
    post:
      tags:
      - Domains
      summary: Create a dataProduct
      description: Create a new dataProduct.
      operationId: createDataProduct
      requestBody:
        description: CreateDataProduct request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDataProduct'
      responses:
        '200':
          description: 'The dataProduct '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '400':
          description: Bad request
  /v1/dataProducts/name/{name}:
    get:
      tags:
      - Domains
      summary: Get a dataProduct by name
      description: Get a dataProduct by `name`.
      operationId: getDataProductByFQN
      parameters:
      - name: name
        in: path
        description: Name of the dataProduct
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: domains,owners,reviewers,experts,extension,tags,followers,votes,certification
      responses:
        '200':
          description: dataProduct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '404':
          description: DataProduct for instance {name} is not found
    delete:
      tags:
      - Domains
      summary: Delete a dataProduct by name
      description: Delete a dataProduct by `name`.
      operationId: deleteDataProductByFQN
      parameters:
      - name: name
        in: path
        description: Name of the dataProduct
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: DataProduct for instance {name} is not found
  /v1/dataProducts/{id}:
    get:
      tags:
      - Domains
      summary: Get a dataProduct by Id
      description: Get a dataProduct by `Id`.
      operationId: getDataProductByID
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: domains,owners,reviewers,experts,extension,tags,followers,votes,certification
      - name: id
        in: path
        description: Id of the dataProduct
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The dataProduct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '404':
          description: DataProduct for instance {id} is not found
    delete:
      tags:
      - Domains
      summary: Delete a dataProduct by Id
      description: Delete a dataProduct by `Id`.
      operationId: deleteDataProduct
      parameters:
      - name: id
        in: path
        description: Id of the dataProduct
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: DataProduct for instance {id} is not found
    patch:
      tags:
      - Domains
      summary: Update a dataProduct
      description: Update an existing dataProduct using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchDataProduct_1
      parameters:
      - name: id
        in: path
        description: Id of the dataProduct
        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/dataProducts/async/{id}:
    delete:
      tags:
      - Domains
      summary: Asynchronously delete a dataProduct by Id
      description: Asynchronously delete a dataProduct by `Id`.
      operationId: deleteDataProductAsync
      parameters:
      - name: id
        in: path
        description: Id of the dataProduct
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: DataProduct for instance {id} is not found
  /v1/dataProducts/{id}/followers/{userId}:
    delete:
      tags:
      - Domains
      summary: Remove a follower
      description: Remove the user identified `userId` as a follower of the dataProduct.
      operationId: deleteFollowerFromDataProduct
      parameters:
      - name: id
        in: path
        description: Id of the Entity
        required: true
        schema:
          type: string
          format: uuid
      - name: userId
        in: path
        description: Id of the user being removed as follower
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeEvent'
  /v1/dataProducts/assets/counts:
    get:
      tags:
      - Domains
      summary: Get all data products with their asset counts
      description: Get a map of data product fully qualified names to their asset counts using search aggregation.
      operationId: getAllDataProductsWithAssetsCount
      responses:
        '200':
          description: Map of data product FQN to asset count
          content:
            application/json: {}
  /v1/dataProducts/{id}/assets:
    get:
      tags:
      - Domains
      summary: Get assets for a data product
      description: Get paginated list of assets belonging to a data product.
      operationId: getDataProductAssets
      parameters:
      - name: id
        in: path
        description: Id of the data product
        required: true
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: Limit the number of results returned. Maximum of 1000 records will be returned in a single request.
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 10
      - name: offset
        in: query
        description: Offset from which to start returning results
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: List of assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
        '404':
          description: DataProduct for instance {id} is not found
  /v1/dataProducts/name/{fqn}/assets:
    get:
      tags:
      - Domains
      summary: Get assets for a data product by name
      description: Get paginated list of assets belonging to a data product by data product name.
      operationId: getDataProductAssetsByName
      parameters:
      - name: fqn
        in: path
        description: Name of the data product
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Limit the number of results returned. Maximum of 1000 records will be returned in a single request.
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 10
      - name: offset
        in: query
        description: Offset from which to start returning results
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: List of assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
        '404':
          description: DataProduct for instance {name} is not found
  /v1/dataProducts/{id}/dataContract:
    get:
      tags:
      - Domains
      summary: Get data contract for a data product
      description: Get the data contract associated with a data product.
      operationId: getDataProductContract
      parameters:
      - name: id
        in: path
        description: Id of the data product
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
      responses:
        '200':
          description: The data contract
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataContract'
        '404':
          description: Data contract not found for the data product
  /v1/dataProducts/{id}/inputPorts:
    get:
      tags:
      - Domains
      summary: Get input ports for a data product
      description: Get paginated list of input ports (data assets consumed) for a data product.
      operationId: getInputPorts
      parameters:
      - name: id
        in: path
        description: Id of the data product
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,votes,extension
      - name: limit
        in: query
        description: Limit the number of results returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: offset
        in: query
        description: Offset from which to start returning results
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: List of input ports
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
        '404':
          description: DataProduct for instance {id} is not found
  /v1/dataProducts/name/{fqn}/inputPorts:
    get:
      tags:
      - Domains
      summary: Get input ports for a data product by name
      description: Get paginated list of input ports (data assets consumed) for a data product by name.
      operationId: getInputPortsByName
      parameters:
      - name: fqn
        in: path
        description: Name of the data product
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,votes,extension
      - name: limit
        in: query
        description: Limit the number of results returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: offset
        in: query
        description: Offset from which to start returning results
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: List of input ports
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
        '404':
          description: DataProduct for instance {fqn} is not found
  /v1/dataProducts/{id}/outputPorts:
    get:
      tags:
      - Domains
      summary: Get output ports for a data product
      description: Get paginated list of output ports (data assets produced/exposed) for a data product.
      operationId: getOutputPorts
      parameters:
      - name: id
        in: path
        description: Id of the data product
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,votes,extension
      - name: limit
        in: query
        description: Limit the number of results returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: offset
        in: query
        description: Offset from which to start returning results
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: List of output ports
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
        '404':
          description: DataProduct for instance {id} is not found
  /v1/dataProducts/name/{fqn}/outputPorts:
    get:
      tags:
      - Domains
      summary: Get output ports for a data product by name
      description: Get paginated list of output ports (data assets produced/exposed) for a data product by name.
      operationId: getOutputPortsByName
      parameters:
      - name: fqn
        in: path
        description: Name of the data product
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,votes,extension
      - name: limit
        in: query
        description: Limit the number of results returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: offset
        in: query
        description: Offset from which to start returning results
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: List of output ports
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
        '404':
          description: DataProduct for instance {fqn} is not found
  /v1/dataProducts/{id}/portsView:
    get:
      tags:
      - Domains
      summary: Get combined input/output ports view for a data product
      description: Get a combined view of input and output ports with independent pagination, optimized for lineage-like visualization.
      operationId: getPortsView
      parameters:
      - name: id
        in: path
        description: Id of the data product
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,votes,extension
      - name: inputLimit
        in: query
        description: Limit the number of input ports returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: inputOffset
        in: query
        description: Offset for input ports pagination
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      - name: outputLimit
        in: query
        description: Limit the number of output ports returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: outputOffset
        in: query
        description: Offset for output ports pagination
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: Combined ports view
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProductPortsView'
        '404':
          description: DataProduct for instance {id} is not found
  /v1/dataProducts/name/{fqn}/portsView:
    get:
      tags:
      - Domains
      summary: Get combined input/output ports view for a data product by name
      description: Get a combined view of input and output ports with independent pagination by name, optimized for lineage-like visualization.
      operationId: getPortsViewByName
      parameters:
      - name: fqn
        in: path
        description: Name of the data product
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags,followers,domains,votes,extension
      - name: inputLimit
        in: query
        description: Limit the number of input ports returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: inputOffset
        in: query
        description: Offset for input ports pagination
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      - name: outputLimit
        in: query
        description: Limit the number of output ports returned
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int64
          default: 50
      - name: outputOffset
        in: query
        description: Offset for output ports pagination
        schema:
          minimum: 0
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: Combined ports view
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProductPortsView'
        '404':
          description: DataProduct for instance {fqn} is not found
  /v1/dataProducts/{id}/versions/{version}:
    get:
      tags:
      - Domains
      summary: Get a version of the dataProduct
      description: Get a version of the dataProduct by given `Id`
      operationId: listSpecificDataProductVersion
      parameters:
      - name: id
        in: path
        description: Id of the dataProduct
        required: true
        schema:
          type: string
          format: uuid
      - name: version
        in: path
        description: DataProduct version number in the form `major`.`minor`
        required: true
        schema:
          type: string
          example: 0.1 or 1.1
      responses:
        '200':
          description: dataProduct
          

# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-domains-api-openapi.yml