---
openapi: 3.0.3
info:
  version: 1.1.0
  x-audience: public
  title: Collibra data product public API
  description: This API allows you to interact with the data product domain in a programmatic
    way.
servers:
- url: /rest/dataProduct/v1
tags:
- name: Data contract
  description: Manage data contracts.
security:
- basicAuth: []
- jwtAuth: []
paths:
  /dataContracts:
    post:
      tags:
      - Data contract
      summary: Initialize a data contract
      description: |
        This operation is the first step in creating a new data contract asset and linking it to its initial manifest.
        You can provide an existing manifest to upload, or a template will be generated from the associated
        Collibra content if none is provided.
      operationId: initDataContract
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/DataContractInitRequest"
            encoding:
              file:
                contentType: text/plain
      responses:
        "201":
          $ref: "#/components/responses/DataContractWithSingleManifestVersionResponse201"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "409":
          $ref: "#/components/responses/InvalidRequest409"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
    get:
      tags:
      - Data contract
      summary: List data contracts
      description: |
        Retrieves a paginated list of data contract metadata, sorted by the last modified date in descending order.
        Filtering options are available via query parameters.
      operationId: listDataContracts
      parameters:
      - name: cursor
        in: query
        required: false
        description: |
          The cursor pointing to the first resource to be included in the response.
          This cursor cannot be created and must have been extracted from a response returned by a previous API call.
          If this parameter is missing, the API will return the resources starting from the first resource available (index=0).
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: |
          The maximum number of resources to retrieve.
          If not set, the default limit  (limit = <code>100</code>) will be used.
          The maximum value for this parameter is <code>500</code>.
        schema:
          type: integer
          default: 100
          maximum: 500
      - name: includeTotal
        in: query
        required: false
        description: |
          Should results include the total number of resources available in this collection.
        schema:
          type: boolean
          default: false
      - name: manifestId
        in: query
        description: The unique identifier of the Data Contract manifest.
        required: false
        schema:
          type: string
          format: string
      - name: domainId
        in: query
        description: The unique identifier (UUID) of the domain to filter data contracts.
        required: false
        schema:
          type: string
          format: uuid
      responses:
        "200":
          $ref: "#/components/responses/DataContractListPaginatedResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/{id}:
    get:
      tags:
      - Data contract
      summary: Retrieve data contract metadata
      description: |
        Retrieves the metadata for a specific data contract.
      operationId: getDataContract
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier UUID of the data contract asset to retrieve.
        schema:
          type: string
          format: uuid
      responses:
        "200":
          $ref: "#/components/responses/DataContractResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
    delete:
      tags:
      - Data contract
      summary: Delete all data contract versions
      description: |
        Deletes all versions associated with a Data Contract Asset.
        By default (deleteAsset=false), only the manifest versions are deleted, preserving the asset for future re-initialization.
        Set 'deleteAsset=true' to perform a full deletion of the asset and all associated manifest versions.
      operationId: deleteDataContract
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the data contract asset.
        schema:
          type: string
          format: uuid
      - name: deleteAsset
        in: query
        required: false
        description: |
          Controls the deletion scope. Defaults to 'false'.
        schema:
          type: boolean
          default: false
      responses:
        "200":
          description: The data contract was successfully deleted.
        "204":
          description: The data contract does not exist or had been deleted already.
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/addFromManifest:
    post:
      tags:
      - Data contract
      summary: Automatically upload new version
      description: |
        Uploads a new version of a Data Contract manifest, with the manifestID and version being automatically
        parsed from the manifest content. Use this to add to the version history of a Data Contract that has
        already been initialized and exists within Collibra.
      operationId: addFromManifest
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/DataContractManifestVersionAutomaticCreateRequest"
            encoding:
              file:
                contentType: text/plain
      responses:
        "200":
          $ref: "#/components/responses/DataContractWithSingleManifestVersionResponse200"
        "201":
          $ref: "#/components/responses/DataContractWithSingleManifestVersionResponse201"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "409":
          $ref: "#/components/responses/InvalidRequest409"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/{id}/draftVersion:
    get:
      tags:
      - Data contract
      summary: Generate draft version
      description: |
        Generates a draft manifest for an existing Data Contract by executing a synchronization and merge operation.
        The core logic pulls the latest synchronized metadata from Collibra to update relevant content in the base manifest version (fromVersion), while preserving any content that is not synchronized by Collibra from the base manifest version.
      operationId: generateDraftManifest
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the existing data contract asset for
          which a new draft version is required.
        schema:
          type: string
          format: uuid
      - name: fromVersion
        in: query
        required: false
        description: "The specific version of the contract to base the new draft on.\
          \ This is the source used to preserve the non-synchronized, custom metadata.\
          \ \nThe default value is `active version`.\n"
        schema:
          type: string
          maxLength: 100
          example: 0.0.1
      - name: version
        in: query
        required: false
        description: "The manifest version to assign to the newly generated draft.\
          \ \nThe default uses the same version as `fromVersion`.\n"
        schema:
          type: string
          maxLength: 100
          example: 0.0.1
      responses:
        "200":
          description: A downloadable file containing the data contract manifest.
          content:
            application/yaml:
              schema:
                type: string
                format: binary
            '*/*':
              schema:
                type: string
                format: binary
          headers:
            Content-Disposition:
              description: Indicates that the response should be downloaded as a file.
              schema:
                type: string
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/{id}/apply:
    post:
      x-stability-level: alpha
      tags:
      - Data contract
      summary: Apply active manifest version to Collibra
      description: |
        **Unstable:** This endpoint may change without notice.

        Apply the active Data Contract manifest version to the Collibra Knowledge Graph.
        This operation enforces the manifest as the source of truth for all synchronized metadata.
        The synchronization scope is controlled by the `sections` query parameter. Available sections are:
        - `slas`: synchronizes SLA properties (restricted to those that match existing Out-of-the-Box (OOTB) attributes on the Data Contract Asset).
        - `relations`: synchronizes relations (tables from the `schema` section of the manifest that match existing assets in Collibra).
        By default, all sections are applied.

        It is typically executed after initializing a contract, uploading a new version, or setting a version as active.
        This operation is only supported for manifest versions using the ODCS format.
      operationId: applyDataContract
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier (UUID) of the data contract asset.
        schema:
          type: string
          format: uuid
      - name: dryRun
        in: query
        required: false
        description: Simulates changes without writing to Collibra. Returns planned
          actions with no side effects.
        schema:
          type: boolean
          default: false
      - name: sections
        in: query
        required: false
        description: |
          Which sections to apply. Each section is applied independently.
          Possible values are:
            * `slas`
            * `relations`
        schema:
          type: array
          items:
            type: string
          maxItems: 2
          default:
          - slas
          - relations
      responses:
        "200":
          description: The data contract version was applied to Collibra Knowledge
            Graph. The response contains detailed results for each resource that was
            processed.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApplyDataContractResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/{id}/versions:
    post:
      tags:
      - Data contract
      summary: Upload new version
      description: |
        Uploads a new version of a data contract manifest. Use this to add to the version history of a data contract
        that has already been initialized and exists within Collibra.
      operationId: uploadDataContractVersion
      parameters:
      - name: id
        in: path
        required: true
        description: |
          The unique identifier (UUID) of the data contract asset in Collibra. This ID must correspond
          to a data contract asset that has already been initialized in Collibra.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/DataContractManifestVersionCreateRequest"
            encoding:
              file:
                contentType: text/plain
      responses:
        "200":
          $ref: "#/components/responses/DataContractWithSingleManifestVersionResponse200"
        "201":
          $ref: "#/components/responses/DataContractWithSingleManifestVersionResponse201"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "409":
          $ref: "#/components/responses/InvalidRequest409"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
    delete:
      tags:
      - Data contract
      summary: Delete specific version
      description: |
        Deletes a specific data contract manifest version.
      operationId: deleteDataContractVersion
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier (UUID) of the data contract asset.
        schema:
          type: string
          format: uuid
      - name: version
        in: query
        required: true
        description: The specific version of the data contract to delete.
        schema:
          type: string
      responses:
        "200":
          description: The data contract version was successfully deleted.
        "204":
          description: The data contract version does not exist or had been deleted
            already.
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
    get:
      tags:
      - Data contract
      summary: List versions
      description: |
        Retrieves a paginated list of all versions' metadata for a specified data contract, ordered by
        active=true first, then active=false, and finally sorted by the last modified date in descending order.
        You can optionally filter results using a version string with configurable matching modes (partial or exact match).
      operationId: listDataContractVersions
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier (UUID) of the data contract asset.
        schema:
          type: string
          format: uuid
      - name: cursor
        in: query
        required: false
        description: |
          The cursor pointing to the first resource to be included in the response.
          This cursor cannot be created and must have been extracted from a response returned by a previous API call.
          If this parameter is missing, the API will return the resources starting from the first resource available (index=0).
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: |
          The maximum number of resources to retrieve.
          If not set, the default limit  (limit = <code>100</code>) will be used.
          The maximum value for this parameter is <code>500</code>.
        schema:
          type: integer
          default: 100
          maximum: 500
      - name: includeTotal
        in: query
        required: false
        description: |
          Should results include the total number of resources available in this collection.
        schema:
          type: boolean
          default: false
      - name: version
        in: query
        required: false
        description: |
          The version string to search for. The search behavior depends on the `versionMatchMode` parameter.
          When used with the default `EXACT` match mode, it filters versions that exactly match the provided string.
          When used with the `START` match mode, it filters versions that start with the provided string.
          For example, searching for "10." with `START` mode will return versions like "10.0.0", "10.0.1", "10.1.0", and so on.
        schema:
          type: string
      - name: versionMatchMode
        in: query
        required: false
        description: |
          The mode used to match the version string filter.

          This parameter is only applicable when the `version` parameter is provided.
        schema:
          allOf:
          - $ref: "#/components/schemas/MatchMode"
          default: EXACT
      responses:
        "200":
          $ref: "#/components/responses/DataContractManifestVersionListPaginatedResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/{id}/versions/manifest:
    get:
      tags:
      - Data contract
      summary: Download specific manifest file version.
      description: |
        Downloads the manifest file for the specific data contract version identified in the path.
      operationId: downloadSpecificDataContractVersion
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the data contract asset.
        schema:
          type: string
          format: uuid
      - name: version
        in: query
        required: true
        description: The version of the data contract manifest to download.
        schema:
          type: string
      responses:
        "200":
          description: A downloadable file containing the data contract manifest.
          content:
            application/yaml:
              schema:
                type: string
                format: binary
            '*/*':
              schema:
                type: string
                format: binary
          headers:
            Content-Disposition:
              description: Indicates that the response should be downloaded as a file.
              schema:
                type: string
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/{id}/activeVersion:
    get:
      tags:
      - Data contract
      summary: Retrieve active version metadata
      description: |
        Retrieves the metadata for the currently active version of a specific data contract. This is the version
        that is exposed through the data contract asset.
      operationId: getActiveDataContractVersion
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier (UUID) of the data contract asset for which
          to retrieve the active version.
        schema:
          type: string
          format: uuid
      responses:
        "200":
          $ref: "#/components/responses/DataContractMetadataVersionResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
    patch:
      tags:
      - Data contract
      summary: Set active version
      description: |
        Sets a data contract version as active. This determines which version of a Data contract is exposed through
        its associated data contract asset. This will automatically deactivate the previous active version.
        If the specified version is already active, the operation will have no effect.
      operationId: setActiveDataContractVersion
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier (UUID) of the data contract asset.
        schema:
          type: string
          format: uuid
      - name: version
        in: query
        required: true
        description: The specific version of the data contract to set as active.
        schema:
          type: string
      responses:
        "200":
          $ref: "#/components/responses/DataContractMetadataVersionResponse"
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
  /dataContracts/{id}/activeVersion/manifest:
    get:
      tags:
      - Data contract
      summary: Download active version
      description: |
        Downloads the manifest file for the currently active version of a specific data contract.
        This is the version that is exposed through the data contract asset.
      operationId: downloadActiveDataContractVersion
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier (UUID) of the data contract asset for which
          to download the active manifest version.
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: A downloadable file containing the data contract manifest.
          content:
            application/yaml:
              schema:
                type: string
                format: binary
            '*/*':
              schema:
                type: string
                format: binary
          headers:
            Content-Disposition:
              description: Indicates that the response should be downloaded as a file.
              schema:
                type: string
        "400":
          $ref: "#/components/responses/InvalidRequest400"
        "401":
          $ref: "#/components/responses/InvalidRequest401"
        "403":
          $ref: "#/components/responses/InvalidRequest403"
        "404":
          $ref: "#/components/responses/InvalidRequest404"
        "500":
          $ref: "#/components/responses/InvalidRequest500"
components:
  responses:
    DataContractWithSingleManifestVersionResponse200:
      description: Returns the metadata for the updated data contract version.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataContractWithSingleManifestVersion"
      headers:
        Location:
          description: |
            The URL of the updated version of the data contract manifest file.
          schema:
            type: string
            format: uri
          example: /dataContracts/5d67071e-7d13-4283-acda-b1c455c7b7a0/activeVersion/manifest
    DataContractWithSingleManifestVersionResponse201:
      description: Returns the metadata for the newly created data contract version.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataContractWithSingleManifestVersion"
      headers:
        Location:
          description: |
            The URL of the newly created version of the data contract manifest file.
          schema:
            type: string
            format: uri
          example: /dataContracts/5d67071e-7d13-4283-acda-b1c455c7b7a0/activeVersion/manifest
    DataContractResponse:
      description: Returns the requested data contract metadata.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataContract"
    DataContractMetadataVersionResponse:
      description: Returns the requested data contract manifest metadata.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataContractManifestVersion"
    DataContractListPaginatedResponse:
      description: Returns a paginated list of data contract metadata.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataContractListPaginated"
    DataContractManifestVersionListPaginatedResponse:
      description: Returns a paginated list of data contract version metadata.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/DataContractManifestVersionListPaginated"
    InvalidRequest400:
      description: The request is not valid.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/StandardErrorResponse"
          example:
            statusCode: 400
            titleMessage: Invalid Request
            helpMessage: Please check the parameters provided.
            userMessage: The request is not valid.
            errorCode: invalidRequest
    InvalidRequest401:
      description: The client is not authenticated.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/StandardErrorResponse"
          example:
            statusCode: 401
            titleMessage: Unauthorized
            helpMessage: Please check your credentials or contact an administrator.
            userMessage: Failed to authenticate request through basic credentials
            errorCode: authenticationFailed
    InvalidRequest403:
      description: The user lacks permissions.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/StandardErrorResponse"
          example:
            statusCode: 403
            titleMessage: Forbidden
            helpMessage: Contact your administrator about roles and permissions.
            userMessage: You don't have permission to perform the request.
            errorCode: authorizationFailed
    InvalidRequest404:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/StandardErrorResponse"
          example:
            statusCode: 404
            titleMessage: Not Found
            helpMessage: Please check the parameters provided.
            userMessage: The resource could not be found.
            errorCode: notFound
    InvalidRequest409:
      description: Conflicts found.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/StandardErrorResponse"
          example:
            statusCode: 409
            titleMessage: Conflict
            helpMessage: Ensure that the resource state allows this operation and
              try again.
            userMessage: The request could not be completed due to a conflict with
              the current state of the resource.
            errorCode: conflict
    InvalidRequest500:
      description: There was an error processing the request.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/StandardErrorResponse"
          example:
            statusCode: 500
            titleMessage: Internal Server Error
            helpMessage: Please check the application logs for more information.
            userMessage: There was an error processing the request.
            errorCode: unexpectedError
  schemas:
    DataContract:
      description: Metadata attributes of a data contract
      type: object
      properties:
        name:
          description: The name of the data contract asset.
          type: string
          example: Customer Sales Contract
        id:
          description: UUID of the data contract asset.
          type: string
          format: uuid
          example: 19bc11f8-3a5b-488d-a04a-b9cc915c5e23
        manifestId:
          description: The unique identifier of the data contract.
          type: string
          example: 123e4567-e89b-12d3-a456-426614174000
        domainName:
          description: The name of the domain where the data contract asset is located.
          type: string
          example: Sales Data Products
        domainId:
          description: The unique identifier (UUID) of the domain where the data contract
            asset is located.
          type: string
          format: uuid
          example: 67a8e966-c9ad-4039-9e3d-77b6e93918ff
        activeVersion:
          description: The version value of the currently active data contract manifest.
          type: string
          example: 0.0.1
      required:
      - name
      - id
      - manifestId
      - domainName
      - domainId
      - activeVersion
    DataContractManifestVersion:
      description: Metadata attributes of a data contract version
      type: object
      properties:
        version:
          description: Version of the data contract Manifest.
          type: string
          example: 0.0.1
        active:
          description: The active version is the version exposed through the data
            contract asset.
          type: boolean
          example: true
        format:
          type: string
          description: |
            Format type of the data contract manifest.

            Possible values are:
              * `ODCS`
              * `DCS`
              * `CUSTOM`
          example: ODCS
        createdBy:
          description: The unique identifier of the user who created the data contract
            Version.
          type: string
          format: uuid
          example: beea52a2-a56b-4015-a0dc-24d165b733f8
        createdOn:
          description: The timestamp (in UTC time standard) when the data contract
            Version was created.
          type: integer
          format: int64
          example: 1476703764163
        lastModifiedBy:
          description: The unique identifier of the user who last modified the data
            contract Version.
          type: string
          format: uuid
          example: beea52a2-a56b-4015-a0dc-24d165b733f8
        lastModifiedOn:
          description: The timestamp (in UTC time standard) when the data contract
            Version was last modified.
          type: integer
          format: int64
          example: 1476703764163
      required:
      - version
      - active
      - format
      - createdBy
      - createdOn
      - lastModifiedBy
      - lastModifiedOn
    DataContractWithSingleManifestVersion:
      description: Metadata attributes of a data contract including active version.
      type: object
      allOf:
      - $ref: "#/components/schemas/DataContract"
      - type: object
        properties:
          manifestVersion:
            description: The active version of the data contract.
            allOf:
            - $ref: "#/components/schemas/DataContractManifestVersion"
        required:
        - manifestVersion
    DataContractManifest:
      description: A data contract manifest file.
      type: object
      properties:
        manifest:
          description: |
            The content of the data contract manifest file.
            The filename should be provided in the `Content-Disposition` header.
          type: string
          format: binary
          example: |
            id: 123e4567-e89b-12d3-a456-426614174000
            kind: DataContract
            apiVersion: 1.0.3
            title: Sample Title
            description: Sample Description
    DataContractListPaginated:
      description: A paginated list of data contract resources.
      type: object
      properties:
        total:
          description: Count of resources available in this collection (based on the
            parameters provided to the API)
          type: integer
          example: 123
        nextCursor:
          type: string
          description: |
            The cursor pointing to the next page. If the cursor is missing, there are no additional pages of
            resources available after the current one.
          example: N3Vyc29yV2hlblRoZXJlSXNNb3JlRGF0YQo
        limit:
          type: integer
          description: Maximum number of items returned in this response.
          example: 50
        items:
          type: array
          description: List of data contract items.
          items:
            $ref: "#/components/schemas/DataContract"
      required:
      - nextCursor
      - limit
      - items
    DataContractManifestVersionListPaginated:
      description: A paginated list of data contract Version resources.
      type: object
      properties:
        total:
          description: Count of resources available in this collection (based on the
            parameters provided to the API)
          type: integer
          example: 123
        nextCursor:
          type: string
          description: |
            The cursor pointing to the next page. If the cursor is missing, there are no additional pages of
            resources available after the current one.
          example: N3Vyc29yV2hlblRoZXJlSXNNb3JlRGF0YQo
        limit:
          type: integer
          description: Maximum number of items returned in this response.
          example: 50
        items:
          type: array
          description: List of data contract items.
          items:
            $ref: "#/components/schemas/DataContractManifestVersion"
      required:
      - nextCursor
      - limit
      - items
    DataContractInitRequest:
      allOf:
      - $ref: "#/components/schemas/DataContractManifest"
      - type: object
        properties:
          governedAssetId:
            description: The unique identifier (UUID) of the Data Product Port asset
              to be governed by the new Data Contract.
            type: string
            format: uuid
            example: 123e4567-e89b-12d3-a456-426614174000
          manifestId:
            description: |
              The unique identifier of the data contract as specified in the manifest.
              If omitted and a manifest that adheres to the Open Data Contract Standard is provided,
              the manifestID will be parsed automatically.
              If omitted and a manifest can not be parsed, the ID will match the UUID of the data contract asset being initialized.
              Maximum length: 200 characters.
            type: string
            maxLength: 200
            example: 123e4567-e89b-12d3-a456-426614174000
          version:
            description: |
              The version value for the initial data contract manifest. If omitted and a manifest that adheres
              to the Open Data Contract Standard is provided, the version will be parsed automatically from the manifest.
              If omitted and a manifest cannot be parsed, it will default to '0.0.1'.
              Maximum length: 100 characters.
            type: string
            maxLength: 100
            example: 0.0.1
          name:
            description: |
              A custom, human-readable name for the data contract. If omitted and a manifest that adheres to
              the Open Data Contract Standard is provided, the name will be parsed automatically from the manifest.
              If omitted and a manifest cannot be parsed, it will inherit the name of the asset specified by 'governedAssetId'.
              Maximum length: 200 characters.
            type: string
            maxLength: 200
            example: |
              MyFirstDataContract
          domainId:
            description: |
              The unique identifier (UUID) of the domain where the data contract asset will be created.
              The specified domain must support the data contract asset type, otherwise the call will fail.
              If omitted, it defaults to the domain of the asset identified by 'governedAssetId'.
            type: string
            format: uuid
            example: 123e4567-e89b-12d3-a456-426614174000
      required:
      - governedAssetId
    DataContractManifestVersionCreateRequest:
      allOf:
      - $ref: "#/components/schemas/DataContractManifest"
      - type: object
        properties:
          version:
            description: |
              The version of the data contract manifest being uploaded. If omitted, the version will be parsed
              automatically from the manifest unless it does not adhere to the Open Data Contract Standard,
              in which case omitting this field will result in an error.
              Maximum length: 100 characters.
            type: string
            maxLength: 100
            example: 0.0.1
          active:
            description: |
              Set to true to make this data contract manifest version the active version.
              This will automatically deactivate the previous active version.
              The active version is the one that's exposed through the data contract asset.
              When set to false, current active status of the uploaded contract manifest is kept as is.
              Defaults to true.
            type: boolean
            default: true
            example: true
          force:
            description: |
              Set to true to force the overwrite of an existing manifest version if it has the same version value.
              When a new manifest overwrites the active version, the 'active' parameter in the request is ignored,
              and the version's active state remains unchanged.
              Defaults to false.
            type: boolean
            default: false
            example: true
      required:
      - manifest
    DataContractManifestVersionAutomaticCreateRequest:
      allOf:
      - $ref: "#/components/schemas/DataContractManifest"
      - type: object
        properties:
          manifestId:
            description: |
              The unique identifier of the data contract as specified in the manifest.
              If omitted and a manifest that adheres to the Open Data Contract Standard is provided,
              the manifestID will be parsed automatically.
              If omitted and a manifest cannot be parsed, the call will end with an error.
              Maximum length: 200 characters.
            type: string
            maxLength: 200
            example: 123e4567-e89b-12d3-a456-426614174000
          version:
            description: |
              The version of the data contract manifest being uploaded.
              If omitted, the version will be parsed automatically from the manifest unless it does not
              adhere to the Open Data Contract Standard, in which case omitting this will result in an error.
              Maximum length: 100 characters.
            type: string
            maxLength: 100
            example: 0.0.1
          active:
            description: |
              Set to true to make this data contract manifest version the active version.
              This will automatically deactivate the previous active version.
              The active version is the one that's exposed through the data contract asset.
              Defaults to true.
            type: boolean
            default: true
            example: true
          force:
            description: |
              Set to true to force the overwrite of an existing manifest version if it has the same version value.
              When a new manifest overwrites the active version, the 'active' parameter in the request is ignored,
              and the version's active state remains unchanged.
              Defaults to false.
            type: boolean
            default: false
            example: true
      required:
      - manifest
    ApplyDataContractResponse:
      description: Response containing the results of applying the data contract manifest
        to Collibra Knowledge Graph.
      type: object
      properties:
        dryRun:
          description: Whether the apply operation was a dry run.
          type: boolean
        data:
          $ref: "#/components/schemas/ApplyDataSections"
      required:
      - dryRun
      - data
    ApplyDataSections:
      description: Results per section of the apply operation.
      type: object
      properties:
        slas:
          $ref: "#/components/schemas/ApplySlasSection"
        relations:
          $ref: "#/components/schemas/ApplyRelationsSection"
    ApplySlasSection:
      description: Results for applying SLAs from the data contract manifest.
      type: object
      properties:
        summary:
          $ref: "#/components/schemas/ApplySectionSummary"
        error:
          type: string
          description: Present when the entire section failed.
        results:
          type: array
          items:
            $ref: "#/components/schemas/ApplySlaResult"
    ApplyRelationsSection:
      description: Results for applying relations from the data contract manifest.
      type: object
      properties:
        summary:
          $ref: "#/components/schemas/ApplySectionSummary"
        error:
          type: string
          description: Present when the entire section failed.
        results:
          type: array
          items:
            $ref: "#/components/schemas/ApplyRelationResult"
    ApplySectionSummary:
      description: |
        Aggregate counts of results in this section, grouped by status.
        Omitted when `dryRun` is true, because dry-run results do not have a status.
      type: object
      properties:
        total:
          type: integer
        success:
          type: integer
        skipped:
          type: integer
        failed:
          type: integer
      required:
      - total
      - success
      - skipped
      - failed
    ApplySlaResult:
      description: Result of applying a single SLA entry from the data contract manifest.
      type: object
      properties:
        status:
          type: string
          description: |
            Omitted when `dryRun` is true. Possible values are:
              * `SUCCESS`
              * `FAILURE`
              * `SKIPPED`
        action:
          type: string
          description: |
            Possible values are:
              * `CREATE`
              * `UPDATE`
              * `DELETE`
              * `KEEP`
              * `SKIP`
        id:
          type: string
          format: uuid
          description: UUID of the attribute.
          nullable: true
        attributeDiscriminator:
          type: string
        type:
          $ref: "#/components/schemas/ApplyAttributeTypeRef"
        asset:
          $ref: "#/components/schemas/ApplyAssetRef"
        previousValue:
          type: string
          nullable: true
        newValue:
          type: string
          nullable: true
        filePath:
          type: string
          nullable: true
          description: |
            Path within the manifest file that identifies the source of this SLA entry.
            For ODCS manifests, this is the index in bracket notation
            (e.g. `slaProperties[0]`). Null for DELETE results.
        details:
          type: string
          description: Error message if status is FAILURE.
          nullable: true
    ApplyRelationResult:
      description: Result of applying a single relation entry from the data contract
        manifest.
      type: object
      properties:
        status:
          type: string
          description: |
            Omitted when `dryRun` is true. Possible values are:
              * `SUCCESS`
              * `FAILURE`
              * `SKIPPED`
        action:
          type: string
          description: |
            Possible values are:
              * `CREATE`
              * `DELETE`
              * `KEEP`
              * `SKIP`
        id:
          type: string
          format: uuid
          description: UUID of the relation.
          nullable: true
        source:
          $ref: "#/components/schemas/ApplyResourceRef"
        target:
          $ref: "#/components/schemas/ApplyResourceRef"
        relationType:
          $ref: "#/components/schemas/ApplyRelationTypeRef"
        filePath:
          type: string
          nullable: true
          description: |
            Path within the manifest file that identifies the source of this relation entry.
            For ODCS manifests, this is the 0-based index in the schema array
            (e.g. `schema[0]`). Null for DELETE results.
        details:
          type: string
          description: "Error message if status is FAILURE, or reason for SKIP."
          nullable: true
    ApplyResourceRef:
      description: Reference to a resource involved in an apply operation.
      type: object
      properties:
        id:
          type: string
          format: uuid
        resourceDiscriminator:
          type: string
        name:
          type: string
        displayName:
          type: string
    ApplyAttributeTypeRef:
      description: Reference to an attribute type involved in an apply operation.
      type: object
      properties:
        id:
          type: string
          format: uuid
        resourceDiscriminator:
          type: string
        name:
          type: string
    ApplyAssetRef:
      description: Reference to an asset involved in an apply operation.
      type: object
      properties:
        id:
          type: string
          format: uuid
        resourceDiscriminator:
          type: string
        name:
          type: string
    ApplyRelationTypeRef:
      description: Reference to a relation type involved in an apply operation.
      type: object
      properties:
        id:
          type: string
          format: uuid
        publicId:
          type: string
        role:
          type: string
        coRole:
          type: string
    StandardErrorResponse:
      description: A standard error response object.
      type: object
      properties:
        statusCode:
          description: HTTP response code.
          type: integer
          example: 500
        titleMessage:
          description: The title of the error message.
          type: string
          example: Internal Server Error
        helpMessage:
          description: A message containing actions you can take regarding the error.
          type: string
          example: Please check the application logs for more information.
        userMessage:
          description: A user friendly error message.
          type: string
          example: There was an error processing the request.
        errorCode:
          description: An error code identifier.
          type: string
          example: unexpectedError
      required:
      - statusCode
      - userMessage
    MatchMode:
      type: string
      description: |
        The mode used to match the filter value against the target field. If the match mode is `EXACT` the search is case-sensitive, otherwise the search is case-insensitive.

        Possible values are:
          * `START` - The version must start with the given string.
          * `END` - The version must end with the given string.
          * `ANYWHERE` - The version must contain the given string anywhere.
          * `EXACT` - The version must exactly match the given string.
      enum:
      - START
      - END
      - ANYWHERE
      - EXACT
  securitySchemes:
    basicAuth:
      description: Collibra REST API authentication using Basic Authentication.
      type: http
      scheme: basic
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Collibra REST API authentication using JSON Web Token.
