components:
  parameters:
    AccountIdentifier:
      description: |
        Unique identifier for the Harness account.
      in: query
      name: account_identifier
      required: true
      schema:
        type: string
    AccountIdentifierParam:
      description: Account Identifier
      in: query
      name: accountIdentifier
      schema:
        type: string
    AccountIdentifierV3:
      description: |
        Unique identifier for the Harness account.
      in: query
      name: account_identifier
      required: true
      schema:
        type: string
    ArtifactTypeParam:
      description: artifact type.
      in: query
      name: artifact_type
      schema:
        enum:
        - model
        - dataset
        - module
        - provider
        type: string
    ConanPackageIdOptionalParamV3:
      description: Conan package id (PKGID) hash. Requires version_id and recipe_revision.
      in: query
      name: conan_package_id
      schema:
        type: string
    ConanPackageIdPathParamV3:
      description: The stable UUID of the package (PKGID) row.
      in: path
      name: package_id
      required: true
      schema:
        type: string
    ConanPackageRevisionOptionalParamV3:
      description: |
        Internal UUID of the Conan package revision (PREV) row. Resolves file paths via
        node_entity_mapping. Requires version_id.
        Mutually exclusive with recipe_revision_id.
      in: query
      name: package_revision_id
      schema:
        type: string
    ConanPackageRevisionPathParamV3:
      description: The stable UUID of the package revision (PREV) row.
      in: path
      name: package_revision_id
      required: true
      schema:
        type: string
    ConanRecipeRevisionOptionalParamV3:
      description: |
        Internal UUID of the Conan recipe revision (RREV) row. Resolves file paths via
        node_entity_mapping. Requires version_id.
        Mutually exclusive with package_revision_id.
      in: query
      name: recipe_revision_id
      schema:
        type: string
    ConanRecipeRevisionPathParamV3:
      description: The stable UUID of the recipe revision (RREV) row.
      in: path
      name: recipe_revision_id
      required: true
      schema:
        type: string
    DeleteFilterParam:
      in: query
      name: deleted
      schema:
        default: EXCLUDE
        enum:
        - EXCLUDE
        - INCLUDE
        - ONLY
        type: string
    DeleteFilterParamV3:
      in: query
      name: deleted
      schema:
        default: exclude
        enum:
        - exclude
        - include
        - only
        type: string
    DeleteTypeParam:
      in: query
      name: force
      schema:
        default: false
        type: boolean
    DownloadId:
      description: Download ID
      in: path
      name: download_id
      required: true
      schema:
        type: string
    EvaluationIdParamV3:
      description: Bulk evaluation identifier
      in: path
      name: evaluation_id
      required: true
      schema:
        type: string
    ExceptionIdFilterParamV3:
      description: Filter by firewall exception ID
      in: query
      name: exception_id
      schema:
        type: string
    ExecutionIdPathParamV3:
      description: The lifecycle execution ID.
      in: path
      name: executionId
      required: true
      schema:
        type: string
    FileName:
      description: Name of file to download
      in: path
      name: file_name
      required: true
      schema:
        type: string
    FilePath:
      description: Full path of file to download
      in: query
      name: path
      required: true
      schema:
        type: string
    FilePathFilterParamV3:
      description: Filter by file path (partial match)
      in: query
      name: file_path
      schema:
        type: string
    FilterIdOptionalParamV3:
      description: |
        Optional filter identifier. When provided, returns only the
        filter definition matching this id.
      in: query
      name: filter_id
      schema:
        type: string
    FilterIdParamV3:
      description: |
        Identifier of the filter whose selectable options should be
        returned. Matches `FilterDefinitionV3.id` from
        `GET /filters`, including namespaced ids for dynamic filters
        (e.g. `metadata.env`).
      in: query
      name: filter_id
      required: true
      schema:
        type: string
    FilterResourceTypeParamV3:
      description: |
        Resource type whose filter definitions should be returned.
      in: query
      name: resource_type
      required: true
      schema:
        $ref: '#/components/schemas/FilterResourceTypeV3'
    FiltersParam:
      description: |
        Key-value filters for artifact retrieval. Repeat the parameter once per filter.
        Format per entry: key:value
        Example: ?filters=architecture:amd64&filters=distribution:jammy
      explode: true
      in: query
      name: filters
      schema:
        items:
          example: architecture:amd64
          type: string
        type: array
      style: form
    FirewallExceptionStatusFilterParamV3:
      description: Filter by firewall exception status
      in: query
      name: status
      schema:
        $ref: '#/components/schemas/FirewallExceptionStatusV3'
    ForceParamV3:
      in: query
      name: force
      schema:
        default: false
        type: boolean
    IdPathParamV3:
      in: path
      name: id
      required: true
      schema:
        type: string
    IncludeMetaParamV3:
      description: |
        When `true`, include the `meta` object (e.g. active/deleted counts)
        in the response.
      in: query
      name: include_meta
      schema:
        default: false
        type: boolean
    IsInternalFilterParamV3:
      description: |
        Filter registries by whether they are internal (system-managed).

        When `true`, only internal registries in the requested scope are returned.
        When `false`, only non-internal registries are returned. If omitted, both
        internal and non-internal registries are returned.
      in: query
      name: is_internal
      schema:
        type: boolean
    KeyParam:
      description: |
        The metadata key for which to retrieve all possible values.
        This parameter is used to filter metadata values by a specific key name.

        Examples: `environment`, `team`, `version_type`, `build_number`
      in: query
      name: key
      required: true
      schema:
        type: string
    KeyParamV3:
      description: |
        The metadata key for which to retrieve all possible values.
        This parameter is used to filter metadata values by a specific key name.

        Examples: `environment`, `team`, `version_type`, `build_number`
      in: query
      name: key
      required: true
      schema:
        type: string
    LabelsParam:
      description: Label.
      in: query
      name: label
      schema:
        items:
          type: string
        type: array
    LifecycleActionParamV3:
      description: Lifecycle action
      in: query
      name: action
      schema:
        enum:
        - DELETE
        - PROTECT
        type: string
    LifecycleExecutionItemStatusParamV3:
      description: Filter items by outcome status.
      in: query
      name: status
      schema:
        enum:
        - PROTECTED
        - WOULD_BE_DELETED
        - DELETED
        type: string
    LifecycleExecutionStatusParamV3:
      description: Filter executions by status.
      in: query
      name: status
      schema:
        enum:
        - PENDING
        - INPROGRESS
        - SUCCESS
        - FAILED
        type: string
    LifecycleScopeParamV3:
      description: |
        **Scope of lifecycle rules/executions to list**
        * **none** – current space only (default)
        * **ancestors** – current space **plus** all parent spaces
        * **descendants** – current space **plus** all child spaces

        If omitted, `none` is assumed.
      in: query
      name: scope
      schema:
        enum:
        - ancestors
        - descendants
        - none
        type: string
    MetadataFilter:
      description: Filter by metadata using key:value format
      in: query
      name: metadata
      schema:
        items:
          type: string
        type: array
    MetadataFilterListParamV3:
      description: Filter by metadata using key:value format
      in: query
      name: metadata
      schema:
        items:
          type: string
        type: array
    NodeIdPathParamV3:
      description: |
        Unique identifier for the node.
      in: path
      name: node_id
      required: true
      schema:
        type: string
    OptionValuesParamV3:
      description: |
        Optional list of option values. When provided, returns only the
        options whose values match one of the supplied values.
      in: query
      name: option_values
      schema:
        items:
          type: string
        type: array
      style: form
    OrgIdentifier:
      description: |
        Unique identifier for the organization within the account.

        Example: `default` or `engineering_org`
      in: query
      name: org_identifier
      schema:
        type: string
    OrgIdentifierV3:
      description: |
        Unique identifier for the organization within the account.

        Example: `default` or `engineering_org`
      in: query
      name: org_identifier
      schema:
        type: string
    PackageIdListOptionalParamV3:
      description: |
        Unique id for the package.
      example:
      - 12345678-1234-1234-1234-123456789012
      - aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
      in: query
      name: package_ids
      schema:
        items:
          format: uuid
          type: string
        type: array
    PackageIdOptionalParamV3:
      description: |
        Unique identifier for the package.
      in: query
      name: package_id
      schema:
        type: string
    PackageKindQueryParamV3:
      description: refers to package kind which is being used in huggingface packages
        for model, dataset and terraform packages for module, provider
      in: query
      name: package_kind
      schema:
        example: model
        type: string
    PackageNameFilterParamV3:
      description: Filter by package name
      in: query
      name: package_name
      schema:
        type: string
    PackageParam:
      description: |
        Name of the package

        Example: `nginx` or `redis`
      in: query
      name: package
      schema:
        type: string
    PackageTypeFilterParamV3:
      description: Filter by package type
      in: query
      name: package_type
      schema:
        type: string
    PackageTypeListParamV3:
      description: Registry Package Type
      in: query
      name: package_types
      schema:
        items:
          type: string
        type: array
    PackageTypeParam:
      description: Registry Package Type
      in: query
      name: package_type
      schema:
        items:
          type: string
        type: array
    PageNumber:
      description: |
        The page number for pagination (0-indexed).

        Used to navigate through large result sets. Combined with `size` parameter
        to control which subset of results to return.

        Example: `page=0` returns the first page, `page=1` returns the second page
      in: query
      name: page
      schema:
        default: 0
        format: int64
        type: integer
    PageNumberV3:
      description: |
        The page number for pagination (0-indexed).

        Used to navigate through large result sets. Combined with `size` parameter
        to control which subset of results to return.

        Example: `page=0` returns the first page, `page=1` returns the second page
      in: query
      name: page
      schema:
        default: 0
        format: int64
        type: integer
    PageSize:
      description: "The number of items to return per page.\n\nControls the page size
        for paginated results. \n\nExample: `size=50` returns up to 50 items per page\n"
      in: query
      name: size
      schema:
        default: 20
        format: int64
        maximum: 100
        minimum: 1
        type: integer
    PageSizeV3:
      description: "The number of items to return per page.\n\nControls the page size
        for paginated results. \n\nExample: `size=50` returns up to 50 items per page\n"
      in: query
      name: size
      schema:
        default: 20
        format: int64
        maximum: 100
        minimum: 1
        type: integer
    PathParam:
      description: |
        The hierarchical path to the registry entity. The path structure varies based on the entity type:

        **Registry Level**: Empty path (`""`) - refers to the registry root

        **package Level**: `{package-name}` - refers to a specific package
        - Example: `my-package` for an package named "my-package"
        - Example: `@scope/package-name` for scoped npm packages

        **Version Level**: `{package-name}/{version}` - refers to a specific version of an package
        - Example: `my-package/1.0.0` for version "1.0.0" of package "my-package"
        - Example: `@scope/package-name/2.1.0` for version "2.1.0" of scoped package

        **Nested Artifacts**: For artifacts with nested structures, use forward slashes as separators
        - Example: `group/artifact/1.0.0` for Maven-style group/artifact/version
        - Example: `namespace/Package/latest` for Docker-style namespace/Package/tag
      in: query
      name: path
      schema:
        type: string
    PipelineIdFilterParamV3:
      description: Filter by pipeline identifier
      in: query
      name: pipeline_id
      schema:
        type: string
    PolicySetRefParamV3:
      description: 'Unique reference for the opa policy set. Example: `my-policy`
        or `account.my-policy`'
      in: query
      name: policy_set_ref
      schema:
        type: string
    PrincipalTypeFilterParamV3:
      description: filter by principal type
      in: query
      name: principal_type
      schema:
        enum:
        - USER
        type: string
    ProjectIdentifier:
      description: |
        Unique identifier for the project within the organization.

        Example: `my_project` or `frontend_services`
      in: query
      name: project_identifier
      schema:
        type: string
    ProjectIdentifierV3:
      description: |
        Unique identifier for the project within the organization.

        Example: `my_project` or `frontend_services`
      in: query
      name: project_identifier
      schema:
        type: string
    ProjectsOptionalListParamV3:
      description: Filter by projects
      in: query
      name: projects
      schema:
        items:
          type: string
        type: array
    PublicKeyDownloadQueryParamV3:
      description: |
        When `true`, the public key is returned as a file attachment with a `Content-Disposition` header and a key-type-specific content type (`application/pgp-keys` with a `.asc` filename for GPG keys, `application/x-pem-file` with a `.rsa.pub` filename for RSA keys). Defaults to `false`, which returns the ASCII-armored key inline as `text/plain`.
      in: query
      name: download
      schema:
        default: false
        type: boolean
    Query:
      description: |
        Advanced search expression (query language).

        Query structure
        - A query clause consists of a field followed by an operator followed by a value.
          Example clause: `email:"amy@rocketrides.io"`
          - field: `email`
          - operator: `:`
          - value: `amy@rocketrides.io`

        Operators
        - `:` exact match operator (case sensitive): `field:value`

        Combining clauses
        - You can combine up to 10 query clauses.
        - Clauses can be separated by a space or by using `AND` / `OR` keywords.
        - You can’t combine `AND` and `OR` in the same query.
        - Parentheses are not supported.
        - If clauses are separated by a space, clauses are combined using `AND` logic.

        Supported query fields for files search api
        - `package` (string)
        - `version` (string)
        - `groupId` (string)
        - `artifactId` (string)
        - `classifier` (string)
        - `extension` (string)
        - `fileName` (string)

        Examples
        - `query=package:"usd" AND version:"1.0.0"`
        - `query=fileName:"report" OR extension:"zip"`
      in: query
      name: query
      required: true
      schema:
        type: string
    QueryV3:
      description: |
        Advanced search expression (query language).

        Query structure
        - A query clause consists of a field followed by an operator followed by a value.
          Example clause: `email:"amy@rocketrides.io"`
          - field: `email`
          - operator: `:`
          - value: `amy@rocketrides.io`

        Operators
        - `:` exact match operator (case sensitive): `field:value`

        Combining clauses
        - You can combine up to 10 query clauses.
        - Clauses can be separated by a space or by using `AND` / `OR` keywords.
        - You can't combine `AND` and `OR` in the same query.
        - Parentheses are not supported.
        - If clauses are separated by a space, clauses are combined using `AND` logic.

        Supported query fields for files search api
        - `package` (string)
        - `version` (string)
        - `groupId` (string)
        - `artifactId` (string)
        - `classifier` (string)
        - `extension` (string)
        - `fileName` (string)

        Examples
        - `query=package:"usd" AND version:"1.0.0"`
        - `query=fileName:"report" OR extension:"zip"`
      in: query
      name: query
      required: true
      schema:
        type: string
    RegistryIdFilterParamV3:
      description: Filter by registry ID
      in: query
      name: registry_id
      schema:
        type: string
    RegistryIdListOptionalParamV3:
      description: |
        Unique id for the registry.
        Note: This parameter should have one id if package query param is provided
      example:
      - 12345678-1234-1234-1234-123456789012
      - aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
      in: query
      name: registry_ids
      schema:
        items:
          format: uuid
          type: string
        type: array
    RegistryIdOptionalParamV3:
      description: |
        Unique id for the registry.
      example: 12345678-1234-1234-1234-123456789012
      in: query
      name: registry_id
      schema:
        type: string
    RegistryIdPathParamV3:
      description: |
        Unique identifier for the registry.
      in: path
      name: registry_id
      required: true
      schema:
        type: string
    RegistryIdentifier:
      description: |
        Unique identifier for the artifact registry.

        Example: `my-docker-registry` or `npm-packages`
      in: query
      name: registry_identifier
      required: true
      schema:
        type: string
    RegistryIdentifierParam:
      description: Registry Identifier
      in: query
      name: reg_identifier
      schema:
        items:
          type: string
        type: array
    RegistryIdentifierPathParam:
      description: Unique registry Identifier in a account.
      in: path
      name: registry_identifier
      required: true
      schema:
        type: string
    RegistryIdentifiersParam:
      description: |
        Unique identifier for the artifact registry.

        Example: `my-docker-registry` or `npm-packages`

        Note: This parameter should have one registry if package query param is provided
      in: query
      name: registry_identifier
      schema:
        items:
          type: string
        type: array
    RegistryNamePathParamV3:
      description: Registry name (identifier).
      in: path
      name: registry_name
      required: true
      schema:
        type: string
    RegistryScope:
      description: "**Scope of registries to list**\n* **none** – current space only
        (default)   * **ancestors** – current space **plus** all parent spaces   *
        **descendants** – current space **plus** all child spaces  \nIf omitted, `none`
        is assumed.\n"
      in: query
      name: scope
      schema:
        enum:
        - ancestors
        - descendants
        - none
        type: string
    RegistryScopeV3:
      description: "**Scope of registries to list**\n* **none** – current space only
        (default)   * **ancestors** – current space **plus** all parent spaces   *
        **descendants** – current space **plus** all child spaces  \nIf omitted, `none`
        is assumed.\n"
      in: query
      name: scope
      schema:
        enum:
        - ancestors
        - descendants
        - none
        type: string
    RegistryTypeFilterParamV3:
      description: Filter versions by their parent registry's type.
      in: query
      name: registry_type
      schema:
        $ref: '#/components/schemas/RegistryTypeV3'
    RegistryTypeParam:
      description: Registry Type
      in: query
      name: type
      schema:
        enum:
        - VIRTUAL
        - UPSTREAM
        type: string
    RegistryTypeParamV3:
      description: Registry Type
      in: query
      name: type
      schema:
        enum:
        - VIRTUAL
        - UPSTREAM
        type: string
    ScanIDQueryParamV3:
      description: Scan Identifier
      in: query
      name: scan_id
      schema:
        type: string
    ScanStatusParamV3:
      description: Filter by scan status of the artifact after OPA policy evaluation.
      in: query
      name: scan_status
      schema:
        $ref: '#/components/schemas/ScanStatusV3'
    SearchTerm:
      description: |
        Search term for filtering results.

        Example: `search_term=prod` might match keys like "production", "prod-env", etc.
      in: query
      name: search_term
      schema:
        type: string
    SearchTermV3:
      description: |
        Search term for filtering results.

        Example: `search_term=prod` might match keys like "production", "prod-env", etc.
      in: query
      name: search_term
      schema:
        type: string
    SecurityViolationCategoriesOptionalListParamV3:
      description: Filter by categories
      in: query
      name: categories
      schema:
        items:
          type: string
        type: array
    SigningKeyIdFilterParamV3:
      description: Filter registries by signing key ID (UUID)
      in: query
      name: signing_key_id
      schema:
        type: string
    SigningKeyStatusesFilterParamV3:
      description: |
        Filter signing keys by lifecycle state. Values match `SigningKeyStatusV3`, which is extensible. Example: `statuses=ACTIVE`
      in: query
      name: statuses
      schema:
        format: uuid
        items:
          $ref: '#/components/schemas/SigningKeyStatusV3'
        type: array
    SigningKeyTypesFilterParamV3:
      description: |
        Filter signing keys by cryptographic system. Values match `SigningKeyTypeV3`, which is extensible. Example: `types=GPG`
      in: query
      name: types
      schema:
        items:
          $ref: '#/components/schemas/SigningKeyTypeV3'
        type: array
    SigningKeysScopeParamV3:
      description: |
        **Scope of signing keys to list**
        * **none** – current space only (default)
        * **ancestors** – current space **plus** all parent spaces

        If omitted, `none` is assumed. This field is extensible; clients must handle unknown values.
      in: query
      name: scope
      schema:
        type: string
        x-extensible-enum:
        - ancestors
        - none
    SortField:
      description: |
        The field by which to sort the results.

        Specifies which field should be used for sorting. Available fields depend
        on the endpoint and the type of data being returned.

        Common examples: `name`, `createdAt`, `updatedAt`
      in: query
      name: sort_field
      schema:
        type: string
    SortOrder:
      description: |
        The sort order for the results.

        Determines whether results are sorted in ascending or descending order.
        Must be used in combination with `sort_field` parameter.

        Allowed values: `ASC` (ascending), `DESC` (descending)
      in: query
      name: sort_order
      schema:
        default: ASC
        enum:
        - ASC
        - DESC
        type: string
    SortV3:
      description: |
        The sort for the results.
        Accepted pattern: `sort_field:sort_order` where sort_field is the field name
        and sort_order is either `asc` or `desc`.

        Examples: `name:asc`, `modifiedAt:desc`
      in: query
      name: sort
      schema:
        type: string
    SrcArtifact:
      description: Name of the package/artifact
      in: query
      name: src_artifact
      schema:
        type: string
    SrcOrgIdentifier:
      description: |
        Unique identifier for the organization within the account.

        Example: `default` or `engineering_org`
      in: query
      name: src_org_identifier
      schema:
        type: string
    SrcProjectIdentifier:
      description: |
        Unique identifier for the project within the organization.

        Example: `my_project` or `frontend_services`
      in: query
      name: src_project_identifier
      schema:
        type: string
    SrcRegistryIdentifierParam:
      description: Source Registry name
      in: query
      name: src_registry_identifier
      required: true
      schema:
        type: string
    SrcVersion:
      description: Version of the package/artifact
      in: query
      name: src_version
      schema:
        type: string
    TagsListParamV3:
      description: |
        Filter versions by tag(s) (e.g. Docker/OCI tags pointing at the version).
      example:
      - latest
      - v1.2.0
      in: query
      name: tags
      schema:
        items:
          type: string
        type: array
    TargetOrgIdentifier:
      description: |
        Unique identifier for the organization within the account.

        Example: `default` or `engineering_org`
      in: query
      name: target_org_identifier
      schema:
        type: string
    TargetProjectIdentifier:
      description: |
        Unique identifier for the project within the organization.

        Example: `my_project` or `frontend_services`
      in: query
      name: target_project_identifier
      schema:
        type: string
    TargetRegistryIdentifierParam:
      description: |
        Unique identifier for the artifact registry.
        Example: `my-docker-registry` or `npm-packages`
      in: query
      name: target_registry_identifier
      required: true
      schema:
        type: string
    TreeCompactParamV3:
      description: |
        Collapses a run of single-child folders into one row, e.g. `io/harness/platform/api`
        renders as one node instead of four levels. A collapsed row carries the deepest
        folder's id (what an expand call must use) and a display name joining every segment
        in the run. Collapsing stops at the first node with more than one child, and never
        absorbs a file - the chain always ends at the last folder.

        No-op for Docker and Helm: those tiers are synthetic (built from images/tags/manifest
        references) and cannot form a single-child folder chain, so the parameter is accepted
        and ignored rather than rejected. Not declared on `/tree/roots` - registries are never
        collapsed into each other - and ignored if sent there.
      in: query
      name: compact
      schema:
        default: false
        type: boolean
    TreeCursorParamV3:
      description: |
        Cursor for pagination in tree view endpoints.
        Base64-encoded JSON containing pagination state.
      in: query
      name: cursor
      schema:
        type: string
    TreeDeletedFilterParamV3:
      description: |
        Filter for deleted items in tree view. Applied at the root (registry) level only,
        where `registries.registry_deleted_at` is authoritative. Levels below the root always
        return every node regardless of soft-delete state - use `isDeleted` on each node to
        render deleted state. See TreeNodeItemV3.isDeleted for why per-node filtering is not
        supported yet.
      in: query
      name: deleted_filter
      schema:
        default: exclude_deleted
        enum:
        - exclude_deleted
        - include_deleted
        - only_deleted
        type: string
    TreeSizeParamV3:
      description: |
        Number of items to return per page in tree view.
      in: query
      name: size
      schema:
        default: 50
        maximum: 1000
        minimum: 1
        type: integer
    UploadedByParamV3:
      description: |
        Filter by uploaded by user ID.

        Example: `uploaded_by=123`
      in: query
      name: uploaded_by
      schema:
        items:
          example: 123
          format: int64
          type: integer
        type: array
    UuidPathParam:
      in: path
      name: uuid
      required: true
      schema:
        type: string
    VersionFilterParamV3:
      description: Filter by version
      in: query
      name: version
      schema:
        type: string
    VersionIdOptionalParamV3:
      description: |
        Unique identifier for the version.
      in: query
      name: version_id
      schema:
        type: string
    VersionParam:
      description: |
        Name of the package version

        Example: `latest` or `1.1.1`
      in: query
      name: version
      schema:
        type: string
    artifactParam:
      description: Artifat
      in: query
      name: artifact
      schema:
        type: string
    artifactPathParam:
      description: |
        Name of the artifact.

        The value depends on whether the name contains a slash (`/`):

        - If the artifact name **contains `/`**, append a trailing `/+` at the end.
          - Example: `mygroup/myartifact/+`
        - If the artifact name **does not contain `/`**, use the plain name.
          - Example: `myartifact`

        This is used internally to distinguish between namespaced and flat artifact names.
      examples:
        flat:
          summary: Flat artifact name
          value: myartifact
        namespaced:
          summary: Namespaced artifact
          value: mygroup/myartifact/+
      in: path
      name: artifact
      required: true
      schema:
        type: string
    artifactTypeParam:
      description: artifact type.
      in: query
      name: artifact_type
      schema:
        enum:
        - model
        - dataset
        - module
        - provider
        type: string
    childVersionParam:
      description: Child version incase of Docker artifacts.
      in: query
      name: childVersion
      schema:
        type: string
    deleteFilterParam:
      description: Filter for soft-deleted entities
      in: query
      name: deleted
      schema:
        default: exclude
        enum:
        - exclude
        - include
        - only
        type: string
    deployedArtifact:
      description: Deployed Artifact Filter.
      in: query
      name: deployed_artifact
      schema:
        type: boolean
    digestOptParam:
      description: Digest.
      in: query
      name: digest
      schema:
        type: string
    digestParam:
      description: Digest.
      in: query
      name: digest
      required: true
      schema:
        type: string
    envType:
      description: env type
      in: query
      name: env_type
      schema:
        description: Environment Type
        enum:
        - PreProduction
        - Production
        type: string
    fileNamePathParam:
      description: Name of Artifact File.
      in: path
      name: file_name
      required: true
      schema:
        type: string
    filePathParam:
      description: filePath
      in: query
      name: file_path
      schema:
        type: string
    filtersParam:
      description: |
        Key-value filters for artifact version. Repeat the parameter once per filter.
        Format per entry: key:value
        Example: ?filters=architecture:amd64&filters=distribution:ubuntu
      explode: true
      in: query
      name: filters
      schema:
        items:
          example: architecture:amd64
          type: string
        type: array
      style: form
    fromDateParam:
      description: Date. Format - MM/DD/YYYY
      in: query
      name: from
      schema:
        type: string
    latestVersion:
      description: Latest Version Filter.
      in: query
      name: latest_version
      schema:
        type: boolean
    packageTypeParam:
      description: Registry Package Type
      in: query
      name: package_type
      schema:
        items:
          type: string
        type: array
    pageNumber:
      description: Current page number
      in: query
      name: page
      schema:
        default: 1
        format: int64
        type: integer
    pageSize:
      description: Number of items per page
      in: query
      name: size
      schema:
        default: 20
        format: int64
        type: integer
    recursiveParam:
      description: |
        Whether to list registries recursively.

        **Deprecated.** Use the new `scope` parameter.

        * `recursive=true`  → `scope=ancestors`
        * `recursive=false` → `scope=none`
      in: query
      name: recursive
      schema:
        default: false
        type: boolean
    registryRefPathParam:
      description: |
        Reference to the scope in which the registry exists.

        Format depends on the scope:

        - **Account-level**: `account_id/registry_name/+`
        - **Organization-level**: `account_id/org_id/registry_name/+`
        - **Project-level**: `account_id/org_id/project_id/registry_name/+`

        The `/+` suffix is used internally to route scoped requests.
        It must be included **exactly as shown** in the URL.
      examples:
        accountLevel:
          description: Only account ID, scoped at account level
          summary: Account-level registry
          value: acc123/registry123/+
        orgLevel:
          description: Account and org ID, scoped at org level
          summary: Organization-level registry
          value: acc123/org456/registry123/+
        projectLevel:
          description: Account, org, and project ID, scoped at project level
          summary: Project-level registry
          value: acc123/org456/proj789/registry123/+
      in: path
      name: registry_ref
      required: true
      schema:
        type: string
    requiredSpaceRefQueryParam:
      description: |
        Reference to the scope in which the registry exists (required for registry creation).

        Format depends on the scope:

        - **Account-level**: `account_id/+`
        - **Organization-level**: `account_id/org/+`
        - **Project-level**: `account_id/org/project/+`

        The `/+` suffix is used internally to route scoped requests.
        It must be included **exactly as shown** in the URL.
      examples:
        accountLevel:
          description: Only account ID, scoped at account level
          summary: Account-level registry
          value: acc123/+
        orgLevel:
          description: Account and org, scoped at org level
          summary: Organization-level registry
          value: acc123/org456/+
        projectLevel:
          description: Account, org, and project, scoped at project level
          summary: Project-level registry
          value: acc123/org456/proj789/+
      in: query
      name: space_ref
      required: true
      schema:
        type: string
    scopeParam:
      description: "**Scope of registries to list**\n* **none** – current space only
        (default)   * **ancestors** – current space **plus** all parent spaces   *
        **descendants** – current space **plus** all child spaces  \nIf omitted, `none`
        is assumed.\n"
      in: query
      name: scope
      schema:
        enum:
        - ancestors
        - descendants
        - none
        type: string
    searchTerm:
      description: search Term.
      in: query
      name: search_term
      schema:
        type: string
    sortField:
      description: sortField
      in: query
      name: sort_field
      schema:
        type: string
    sortOrder:
      description: sortOrder
      in: query
      name: sort_order
      schema:
        type: string
    spaceRefPathParam:
      description: |
        Reference to the scope in which the registry exists.

        Format depends on the scope:

        - **Account-level**: `account_id/+`
        - **Organization-level**: `account_id/org/+`
        - **Project-level**: `account_id/org/project/+`

        The `/+` suffix is used internally to route scoped requests.
        It must be included **exactly as shown** in the URL.
      examples:
        accountLevel:
          description: Only account ID, scoped at account level
          summary: Account-level registry
          value: acc123/+
        orgLevel:
          description: Account and org, scoped at org level
          summary: Organization-level registry
          value: acc123/org456/+
        projectLevel:
          description: Account, org, and project, scoped at project level
          summary: Project-level registry
          value: acc123/org456/proj789/+
      in: path
      name: space_ref
      required: true
      schema:
        type: string
    spaceRefQueryParam:
      description: |
        Reference to the scope in which the registry exists.
      in: query
      name: space_ref
      schema:
        type: string
    toDateParam:
      description: Date. Format - MM/DD/YYYY
      in: query
      name: to
      schema:
        type: string
    versionParam:
      description: Version
      in: query
      name: version
      schema:
        type: string
    versionPathParam:
      description: Name of Artifact Version.
      in: path
      name: version
      required: true
      schema:
        type: string
    versionTypeParam:
      description: Version Type.
      in: query
      name: version_type
      schema:
        enum:
        - DIGEST
        - TAG
        type: string
    webhookExecutionIdPathParam:
      description: Unique webhook execution identifier.
      in: path
      name: webhook_execution_id
      required: true
      schema:
        type: string
    webhookIdentifierPathParam:
      description: Unique webhook identifier.
      in: path
      name: webhook_identifier
      required: true
      schema:
        type: string
  requestBodies:
    AddTagsRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AddTags'
      description: request to add tags to a manifest
    AddTagsRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AddTagsV3'
      description: request to add tags to a version of package
    ArtifactLabelRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ArtifactLabelRequest'
      description: request to update artifact labels
    ArtifactScanEvaluateRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ArtifactScanEvaluateRequestInputV3'
      description: request to re-evaluate artifact scan
    BackfillTriggerRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BackfillTriggerRequestInputV3'
      description: Request to trigger an ES search backfill for an account.
      required: true
    BuildInfoRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BuildInfoRequestInputV3'
      description: request to add build info
    BulkDeleteRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkDeleteRequestInputV3'
      description: request to bulk delete packages/versions
    BulkDownloadFilesRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkDownloadFilesRequestInput'
      description: request to bulk download files
    BulkDownloadFilesRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkDownloadFilesRequestInputV3'
      description: request to bulk download files
    BulkScanEvaluateSyncRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkScanEvaluateSyncRequestV3'
      description: Request to synchronously evaluate firewall policies for multiple
        artifacts
    BulkScanEvaluationRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkScanEvaluationRequestV3'
      description: Request to initiate bulk scan evaluation
    CopyResourcesRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CopyResourceItemV3'
      description: request to copy resources
    FirewallExceptionApprovalRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FirewallExceptionApprovalRequestV3'
      description: Request to approve or reject a firewall exception
    FirewallExceptionCreateRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FirewallExceptionCreateRequestV3'
      description: Request to create a firewall exception
    FirewallExceptionUpdateRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FirewallExceptionUpdateRequestV3'
      description: Request to update a firewall exception (only when status is PENDING)
    MetadataRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MetadataInput'
      description: Request body containing metadata key-value pairs to add or update
    MetadataRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MetadataInputV3'
      description: Request body containing metadata key-value pairs to add or update
    PackagesStatsRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PackagesStatsRequestInputV3'
      description: Request body containing list of package UUIDs to fetch stats for
      required: true
    RegistriesStatsRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RegistriesStatsRequestInputV3'
      description: Request body containing list of registry UUIDs to fetch stats for
      required: true
    RegistryRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RegistryRequest'
      description: request for create and update registry
    ReplicationRuleRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ReplicationRuleRequest'
      description: request for create and update replication rule
    SearchRegistryFilesRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SearchRegistryFilesRequestInputV3'
      description: request to search registry files by path regex
    VersionsStatsRequestV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/VersionsStatsRequestInputV3'
      description: Request body containing list of version UUIDs to fetch stats for
      required: true
    WebhookRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WebhookRequest'
      description: request for create and update webhook
    quarantineRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/quarantineRequest'
      description: request to quarantine specific file path
  responses:
    AddTagsResponse:
      content:
        application/json:
          schema:
            properties:
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            type: object
      description: response for add tags request
    ArtifactDeploymentsResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ArtifactDeploymentsDetails'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get docker artifact deployments details
    ArtifactDetailResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ArtifactDetail'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get artifact details
    ArtifactFileResponse:
      content:
        application/json:
          schema:
            properties:
              downloadUrl:
                description: download url of artifact
                type: string
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - downloadUrl
            type: object
      description: response to head artifact file
    ArtifactLabelResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ArtifactSummary'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get artifact label response
    ArtifactScanDetailsResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ArtifactScanDetailsV3'
            type: object
      description: Response containing details of artifact scan
    ArtifactScanEvaluateRequestAcceptedV3:
      content:
        application/json:
          schema:
            properties:
              data:
                properties:
                  status:
                    $ref: '#/components/schemas/ArtifactScanEvaluateRequestStatusV3'
                required:
                - status
                type: object
            required:
            - data
            type: object
      description: Artifact scan evaluate request accepted for processing
    ArtifactStatsResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ArtifactStats'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get artifact stats response
    ArtifactSummaryResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ArtifactSummary'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get artifact summary
    ArtifactVersionSummaryResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ArtifactVersionSummary'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get docker artifact version summary
    BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: The request was invalid or malformed
    BulkScanEvaluateSyncResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                description: List of scan details, one per evaluated artifact
                items:
                  $ref: '#/components/schemas/ArtifactScanDetailsV3'
                type: array
            required:
            - data
            type: object
      description: Synchronous bulk scan evaluation response
    BulkScanEvaluationAcceptedV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/BulkScanEvaluationAcceptedDataV3'
            type: object
      description: Bulk scan evaluation request accepted for processing
    BulkScanEvaluationStatusResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/BulkScanEvaluationStatusDataV3'
            type: object
      description: Bulk scan evaluation status response
    ClientSetupDetailsResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ClientSetupDetails'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for client setup details
    ConanPackageDetailResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ConanPackageDetailV3'
            required:
            - data
            type: object
      description: Response to get a Conan package detail
    ConanPackageRevisionDetailResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ConanPackageRevisionDetailV3'
            required:
            - data
            type: object
      description: Response to get a Conan package revision detail
    ConanPackageRevisionsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListConanPackageRevisionsResponseBodyV3'
      description: Response to list Conan package revisions of a package
    ConanPackagesResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListConanPackagesResponseBodyV3'
      description: Response to list Conan packages of a recipe revision
    ConanRecipeRevisionDetailResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ConanRecipeRevisionDetailV3'
            required:
            - data
            type: object
      description: Response to get a Conan recipe revision detail
    ConanRecipeRevisionsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListConanRecipeRevisionsResponseBodyV3'
      description: Response to list Conan recipe revisions for a version
    CopyResponse:
      content:
        application/json:
          schema:
            properties:
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            type: object
      description: Response containing status of copy operation
    CreateBulkDownloadRequestAcceptedV3:
      content:
        application/json:
          schema:
            properties:
              data:
                properties:
                  id:
                    description: Unique identifier for the bulk download request
                    format: uuid
                    type: string
                  status:
                    $ref: '#/components/schemas/BulkDownloadRequestStatusV3'
                  statusUrl:
                    description: Relative URL to poll for status (optional convenience)
                    type: string
                required:
                - id
                - status
                type: object
            required:
            - data
            type: object
      description: Bulk download request accepted for processing
      headers:
        Location:
          description: URL to poll for bulk download status
          schema:
            format: uri
            type: string
    CreateBulkDownloadRequestResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/CreateBulkDownloadRequestResponseOutput'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Response containing status of bulk download operation
    DockerArtifactDetailIntegrationResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/DockerArtifactIntegrationDetail'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get docker artifact integration detail
    DockerArtifactDetailResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/DockerArtifactDetail'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get docker artifact detail
    DockerArtifactManifestResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/DockerArtifactManifest'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get docker artifact manifest
    DockerLayersResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/DockerLayersSummary'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get artifact layers
    DockerManifestsResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/DockerManifests'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get artifact layers
    DownloadFileResponse:
      content:
        application/octet-stream:
          schema:
            format: binary
            type: string
      description: Response containing file content
    DownloadFileResponseV3:
      content:
        application/octet-stream:
          schema:
            format: binary
            type: string
      description: Response containing file content
    FileDetailResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListFileDetail'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get artifact files
    FileDetailsResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/FileDetailsV3'
            required:
            - data
            type: object
      description: Response containing details for a single file, including its Content-Type.
    FirewallExceptionApprovedV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FirewallExceptionResponseV3'
      description: Firewall exception status updated successfully
    FirewallExceptionCreatedV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FirewallExceptionResponseV3'
      description: Firewall exception created successfully
    FirewallExceptionUpdatedV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FirewallExceptionResponseV3'
      description: Firewall exception updated successfully
    GetBulkDownloadRequestStatusResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/BulkDownloadRequestStatusOutput'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Response containing status of bulk download operation
    GetBulkDownloadRequestStatusResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                properties:
                  downloadUrl:
                    description: Present only when status is `SUCCESS`
                    type: string
                  id:
                    description: Unique identifier for the bulk download request
                    format: uuid
                    type: string
                  message:
                    type: string
                  outputFileName:
                    type: string
                  status:
                    $ref: '#/components/schemas/BulkDownloadRequestStatusV3'
                required:
                - id
                - status
                type: object
            type: object
      description: Response containing status of bulk download operation
    HelmArtifactDetailResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/HelmArtifactDetail'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get helm artifact detail
    HelmArtifactManifestResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/HelmArtifactManifest'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response to get helm artifact manifest
    InternalServerError:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: An unexpected server error occurred
    LifecycleExecutionCreatedV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LifecycleExecutionResponseV3'
      description: Lifecycle dry-run execution created successfully
    LifecycleExecutionResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LifecycleExecutionResponseV3'
      description: Lifecycle execution response
    LifecycleRuleCreatedV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LifecycleRuleResponseV3'
      description: Lifecycle rule created successfully
    LifecycleRuleResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LifecycleRuleResponseV3'
      description: Lifecycle rule response
    LifecycleRuleUpdatedV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LifecycleRuleResponseV3'
      description: Lifecycle rule updated successfully
    ListArtifactLabelResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListArtifactLabel'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list artifact labels
    ListArtifactResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListArtifact'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list artifact
    ListArtifactScanResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                description: A list of artifact scans
                items:
                  $ref: '#/components/schemas/ArtifactScanV3'
                type: array
              itemCount:
                description: The total number of items
                example: 1
                format: int64
                type: integer
              meta:
                $ref: '#/components/schemas/ScanMetaV3'
              pageCount:
                description: The total number of pages
                example: 100
                format: int64
                type: integer
              pageIndex:
                description: The current page
                example: 0
                format: int64
                type: integer
              pageSize:
                description: The number of items per page
                example: 1
                type: integer
            required:
            - pageCount
            - itemCount
            - pageSize
            - pageIndex
            - data
            - meta
            type: object
      description: Response containing list of artifact scan
    ListArtifactVersionResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListArtifactVersion'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list versions of artifact
    ListFilesResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                description: A list of file
                items:
                  $ref: '#/components/schemas/FileMetadata'
                type: array
              itemCount:
                description: The total number of items
                example: 1
                format: int64
                type: integer
              pageCount:
                description: The total number of pages
                example: 100
                format: int64
                type: integer
              pageIndex:
                description: The current page
                example: 0
                format: int64
                type: integer
              pageSize:
                description: The number of items per page
                example: 1
                type: integer
            required:
            - pageCount
            - itemCount
            - pageSize
            - pageIndex
            - data
            type: object
      description: response for list files
    ListFilesResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListFilesResponseBodyV3'
      description: response for list files
    ListFilterOptionsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListFilterOptionsResponseBodyV3'
      description: response for list filter options
    ListFiltersResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListFiltersResponseBodyV3'
      description: response for list filters
    ListFirewallExceptionResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListFirewallExceptionsResponseBodyV3'
      description: Response containing list of firewall exceptions
    ListFirewallExceptionVersionsResponseV3:
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/PageInfoV3'
            - properties:
                items:
                  description: A list of versions
                  items:
                    type: string
                  type: array
              required:
              - items
              type: object
      description: Response containing list of versions for firewall exceptions
    ListLifecycleExecutionsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListLifecycleExecutionsResponseBodyV3'
      description: Response for list lifecycle executions
    ListLifecycleRulesResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListLifecycleRulesResponseBodyV3'
      description: Response for list lifecycle rules
    ListMigrationImageResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListMigrationImage'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Response for list migration images
    ListOciArtifactTagsResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListOciArtifactTags'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list tags info of an OCI artifact
    ListPackageResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListPackage'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list package
    ListPackageResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListPackagesResponseBodyV3'
      description: response for list package
    ListPackageTypeConfigsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListPackageTypeConfigsResponseBodyV3'
      description: |
        Response containing per-package-type UI configuration for the Harness Artifact Registry.
        Bounded, non-paginated catalog — one entry per known package type.
    ListPipelineBuildInfoDetailsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListPipelineBuildInfoDetailsResponseBodyV3'
      description: Response containing pipeline build info details
    ListPrincipalsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListPrincipalsResponseBodyV3'
      description: response for list principal
    ListRegistryArtifactResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListRegistryArtifact'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list artifact
    ListRegistryResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListRegistry'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list registry
    ListRegistryResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListRegistriesResponseBodyV3'
      description: response for list registry
    ListReplicationRuleResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListReplicationRule'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Response for list replication rules
    ListSigningKeysResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListSigningKeysResponseBodyV3'
      description: response for list signing keys
    ListVersionDeploymentsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListVersionDeploymentsResponseBodyV3'
      description: Paginated list of Harness CD deployments for a version
    ListVersionResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListVersion'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list version
    ListVersionResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListVersionsResponseBodyV3'
      description: response for list versions
    ListWebhooksExecutionResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListWebhooksExecutions'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: list webhooks executions response
    ListWebhooksResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ListWebhooks'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for list webhooks
    MetadataKeysResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                items:
                  description: A unique metadata key name
                  example: environment
                  type: string
                type: array
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Paginated response containing all available metadata keys in the
        registry
    MetadataKeysResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListMetadataKeysResponseBodyV3'
      description: Response contains metadata keys
    MetadataResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/MetadataOutput'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Response containing all metadata entries for the requested entity
    MetadataResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                description: Array of metadata entries
                items:
                  $ref: '#/components/schemas/MetadataV3'
                type: array
            required:
            - data
            type: object
      description: Response containing all metadata entries for the requested entity
    MetadataValuesResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                items:
                  description: A unique value for the specified metadata key
                  example: production
                  type: string
                type: array
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Paginated response containing all possible values for a specific
        metadata key
    MetadataValuesResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ListMetadataValuesResponseBodyV3'
      description: Response containing all possible values for a specific metadata
        key
    NotFound:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: The requested resource was not found
    PackagesStatsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PackagesStatsResponseBodyV3'
      description: Response containing statistics for the requested packages
    PlainTextResponse:
      content:
        text/plain; charset=utf-8:
          schema:
            example: Hello, world!
            type: string
      description: A plain text response
    RebuildPackageIndexAcceptedV3:
      description: Package index rebuild request accepted for processing
    RebuildRegistryIndexAcceptedV3:
      description: Registry index rebuild request accepted for processing
    RebuildVersionMetadataAcceptedV3:
      description: Rebuild metadata request accepted for processing
    Redirect:
      description: Temporary Redirect
      headers:
        Location:
          description: The URL of the redirected resource
          schema:
            format: uri
            type: string
    RedirectV3:
      description: Temporary Redirect
      headers:
        Location:
          description: The URL of the redirected resource
          schema:
            format: uri
            type: string
    RegistriesStatsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RegistriesStatsResponseBodyV3'
      description: Response containing statistics for the requested registries
    RegistryResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/Registry'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for create, get and update registry
    ReplicationRuleResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/ReplicationRule'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: Response for replication rule update
    SigningKeyDetailsResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/SigningKeyV3'
            required:
            - data
            type: object
      description: Signing key details
    SigningKeySummaryResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/SigningKeySummaryV3'
            required:
            - data
            type: object
      description: Aggregate signing key counts for the requested scope
    StorageDetailsResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/StorageDetails'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for storage details
    Success:
      content:
        application/json:
          schema:
            properties:
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            type: object
      description: Generic success response
    SystemInfoResponseV3:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/SystemInfoV3'
            required:
            - data
            type: object
      description: Response containing system-level information for the Harness Artifact
        Registry
    TerraformBackendStateResponseV3:
      content:
        application/json:
          schema:
            format: binary
            type: string
      description: Raw Terraform state (JSON) captured at the requested version
    TreeResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TreeResponseBodyV3'
      description: Response for tree view endpoints
    Unauthenticated:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Authentication failed or missing credentials
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Access denied due to insufficient permissions
    VersionsStatsResponseV3:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/VersionsStatsResponseBodyV3'
      description: Response containing statistics for the requested versions
    WebhookExecutionResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/WebhookExecution'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: webhook execution response
    WebhookResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/Webhook'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: response for create, get and update webhook
    quarantinePathDeleteResponse:
      content:
        application/json:
          schema:
            properties:
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            type: object
      description: quarantine path response
    quarantinePathResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/quarantinePath'
              status:
                $ref: '#/components/schemas/Status'
            required:
            - status
            - data
            type: object
      description: quarantine path response
  schemas:
    AccessKeySecretKey:
      properties:
        accessKey:
          type: string
        accessKeySecretIdentifier:
          type: string
        accessKeySecretSpaceId:
          format: int64
          type: integer
        accessKeySecretSpacePath:
          type: string
        secretKeyIdentifier:
          type: string
        secretKeySpaceId:
          format: int64
          type: integer
        secretKeySpacePath:
          type: string
      required:
      - secretKeyIdentifier
    AddTags:
      properties:
        package:
          type: string
        tags:
          items:
            type: string
          type: array
        version:
          type: string
      required:
      - version
      - tags
      - package
      type: object
    AddTagsV3:
      properties:
        tags:
          items:
            type: string
          type: array
      required:
      - tags
      type: object
    AlpineArtifactDetailConfig:
      description: Config for Alpine (APK) artifact details.
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    Anonymous: {}
    ApiErrorsV3:
      properties:
        code:
          description: For some errors that could be handled programmatically, a short
            string indicating the [error code](https://docs.stripe.com/error-codes)
            reported.
          maxLength: 5000
          type: string
        message:
          description: A human-readable message providing more details about the error.
            These messages can be shown to users.
          maxLength: 40000
          type: string
        param:
          description: If the error is parameter-specific, the parameter related to
            the error. For example, we can use this to display a message near the
            correct form field.
          maxLength: 5000
          type: string
        type:
          description: The type of error returned.
          enum:
          - INVALID_REQUEST_ERROR
          - AUTHENTICATION_ERROR
          - PERMISSION_ERROR
          - API_ERROR
          type: string
      required:
      - type
      title: APIErrors
      type: object
    ArtifactDeploymentsDetail:
      description: Artifact deployments Detail
      properties:
        count:
          type: integer
        envIdentifier:
          type: string
        envName:
          type: string
        envType:
          $ref: '#/components/schemas/EnvironmentType'
        infraIdentifier:
          type: string
        infraName:
          type: string
        lastDeployedAt:
          type: string
        lastDeployedById:
          type: string
        lastDeployedByName:
          type: string
        lastPipelineExecutionId:
          type: string
        lastPipelineExecutionName:
          type: string
        orgIdentifier:
          type: string
        pipelineId:
          type: string
        projectIdentifier:
          type: string
        serviceIdentifier:
          type: string
        serviceName:
          type: string
      type: object
    ArtifactDeploymentsDetails:
      description: Docker Artifact deployments Details
      properties:
        deployments:
          $ref: '#/components/schemas/ArtifactDeploymentsList'
        deploymentsStats:
          $ref: '#/components/schemas/DeploymentStats'
      required:
      - deployments
      type: object
    ArtifactDeploymentsList:
      description: A list of Artifact Deployments
      properties:
        deployments:
          description: A list of Artifact
          items:
            $ref: '#/components/schemas/ArtifactDeploymentsDetail'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - artifacts
      type: object
    ArtifactDetail:
      description: Artifact Detail
      discriminator:
        mapping:
          ALPINE: '#/components/schemas/AlpineArtifactDetailConfig'
          CARGO: '#/components/schemas/CargoArtifactDetailConfig'
          COMPOSER: '#/components/schemas/ComposerArtifactDetailConfig'
          CONAN: '#/components/schemas/ConanArtifactDetailConfig'
          CONDA: '#/components/schemas/CondaArtifactDetailConfig'
          CRAN: '#/components/schemas/CRANArtifactDetailConfig'
          DART: '#/components/schemas/DartArtifactDetailConfig'
          DEBIAN: '#/components/schemas/DebianArtifactDetailConfig'
          DOCKER: '#/components/schemas/DockerArtifactDetailConfig'
          GENERIC: '#/components/schemas/GenericArtifactDetailConfig'
          GO: '#/components/schemas/GoArtifactDetailConfig'
          HELM: '#/components/schemas/HelmArtifactDetailConfig'
          HELM_HTTP: '#/components/schemas/HelmHttpArtifactDetailConfig'
          HUGGINGFACE: '#/components/schemas/HuggingFaceArtifactDetailConfig'
          MAVEN: '#/components/schemas/MavenArtifactDetailConfig'
          NPM: '#/components/schemas/NpmArtifactDetailConfig'
          NUGET: '#/components/schemas/NugetArtifactDetailConfig'
          PUPPET: '#/components/schemas/PuppetArtifactDetailConfig'
          PYTHON: '#/components/schemas/PythonArtifactDetailConfig'
          RPM: '#/components/schemas/RpmArtifactDetailConfig'
          RUBY: '#/components/schemas/RubyArtifactDetailConfig'
          SWIFT: '#/components/schemas/SwiftArtifactDetailConfig'
          TERRAFORM: '#/components/schemas/TerraformArtifactDetailConfig'
          WOLFI: '#/components/schemas/WolfiArtifactDetailConfig'
        propertyName: packageType
      oneOf:
      - $ref: '#/components/schemas/DockerArtifactDetailConfig'
      - $ref: '#/components/schemas/HelmArtifactDetailConfig'
      - $ref: '#/components/schemas/GenericArtifactDetailConfig'
      - $ref: '#/components/schemas/MavenArtifactDetailConfig'
      - $ref: '#/components/schemas/PythonArtifactDetailConfig'
      - $ref: '#/components/schemas/NpmArtifactDetailConfig'
      - $ref: '#/components/schemas/RpmArtifactDetailConfig'
      - $ref: '#/components/schemas/NugetArtifactDetailConfig'
      - $ref: '#/components/schemas/CargoArtifactDetailConfig'
      - $ref: '#/components/schemas/GoArtifactDetailConfig'
      - $ref: '#/components/schemas/HuggingFaceArtifactDetailConfig'
      - $ref: '#/components/schemas/CondaArtifactDetailConfig'
      - $ref: '#/components/schemas/DartArtifactDetailConfig'
      - $ref: '#/components/schemas/ComposerArtifactDetailConfig'
      - $ref: '#/components/schemas/SwiftArtifactDetailConfig'
      - $ref: '#/components/schemas/PuppetArtifactDetailConfig'
      - $ref: '#/components/schemas/HelmHttpArtifactDetailConfig'
      - $ref: '#/components/schemas/DebianArtifactDetailConfig'
      - $ref: '#/components/schemas/ConanArtifactDetailConfig'
      - $ref: '#/components/schemas/RubyArtifactDetailConfig'
      - $ref: '#/components/schemas/CRANArtifactDetailConfig'
      - $ref: '#/components/schemas/TerraformArtifactDetailConfig'
      - $ref: '#/components/schemas/WolfiArtifactDetailConfig'
      - $ref: '#/components/schemas/AlpineArtifactDetailConfig'
      properties:
        artifactKey:
          additionalProperties:
            type: string
          type: object
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        createdAt:
          type: string
        createdBy:
          $ref: '#/components/schemas/UserInfo'
        deletedAt:
          description: Timestamp in milliseconds when the registry was soft-deleted
          type: string
        downloadCount:
          format: int64
          type: integer
        isQuarantined:
          type: boolean
        modifiedAt:
          type: string
        name:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        quarantineReason:
          type: string
        size:
          type: string
        version:
          type: string
      required:
      - imageName
      - version
      - registryPath
      - url
      - packageType
      type: object
    ArtifactEntityMetadata:
      additionalProperties: true
      description: Artifact Entity Metadata
      type: object
    ArtifactLabelRequest:
      properties:
        labels:
          items:
            type: string
          type: array
      required:
      - labels
      type: object
    ArtifactMetadata:
      description: Artifact Metadata
      properties:
        artifactKey:
          additionalProperties:
            type: string
          type: object
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        deletedAt:
          description: Timestamp in milliseconds when the artifact was soft deleted.
            Null if not deleted.
          type: string
        deploymentMetadata:
          $ref: '#/components/schemas/DeploymentMetadata'
        digestCount:
          format: int64
          type: integer
        downloadsCount:
          format: int64
          type: integer
        fileCount:
          type: integer
        firewallMode:
          enum:
          - ENABLED
          - QUARANTINE
          - ALLOW
          type: string
        isQuarantined:
          type: boolean
        labels:
          items:
            type: string
          type: array
        lastModified:
          type: string
        lastScannedAt:
          type: string
        latestVersion:
          type: string
        metadata:
          $ref: '#/components/schemas/ArtifactEntityMetadata'
        name:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        pullCommand:
          type: string
        purl:
          description: Package URL (PURL) identifying the package version.
          type: string
        quarantineReason:
          type: string
        registryIdentifier:
          type: string
        registryPath:
          type: string
        registryType:
          $ref: '#/components/schemas/RegistryType'
        registryUUID:
          type: string
        scanId:
          type: string
        scanStatus:
          enum:
          - WARN
          - BLOCKED
          - ALLOWED
          type: string
        uuid:
          type: string
        version:
          type: string
      required:
      - name
      - version
      - registryIdentifier
      - latestVersion
      - registryPath
      - packageType
      - registryUUID
      - uuid
      type: object
    ArtifactScanDetailsV3:
      description: Artifact scans details
      properties:
        buildDetails:
          $ref: '#/components/schemas/BuildDetailsV3'
        createdAt:
          type: string
        exemptionStatus:
          $ref: '#/components/schemas/ExemptionStatusV3'
        fixVersionDetails:
          $ref: '#/components/schemas/FixVersionDetailsV3'
        id:
          description: Unique identifier for this artifact scan details
          format: uuid
          type: string
        lastEvaluatedAt:
          type: string
        packageName:
          description: Package name
          type: string
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        parentRegistryId:
          description: Parent virtual registry UUID
          format: uuid
          type: string
        parentRegistryName:
          description: Parent virtual registry name
          type: string
        parentRegistryOrgId:
          description: Parent registry organization identifier
          type: string
        parentRegistryProjectId:
          description: Parent registry project identifier
          type: string
        policySetFailureDetails:
          items:
            $ref: '#/components/schemas/PolicySetFailureDetailV3'
          type: array
        purl:
          description: Package URL (PURL) identifying the package version
          type: string
        registryId:
          description: Registry ID
          format: uuid
          type: string
        registryName:
          description: Registry name
          type: string
        registryOrgId:
          description: Organization identifier of the registry
          type: string
        registryProjectId:
          description: Project identifier of the registry
          type: string
        rootPackages:
          description: Unique set of root packages (name@version) impacted by this
            scan
          items:
            description: Root package with name and version (e.g. name@version)
            type: string
          type: array
          uniqueItems: true
        scanStatus:
          description: Scan status
          enum:
          - BLOCKED
          - WARN
          type: string
        version:
          description: Version
          type: string
        versionId:
          description: Version
          format: uuid
          type: string
      required:
      - id
      - packageType
      - packageName
      - version
      - registryName
      - registry_id
      - parentRegistryId
      - parentRegistryName
      - policySetFailureDetails
      - scanStatus
      - buildDetails
      - rootPackages
      - purl
      type: object
    ArtifactScanEvaluateRequestInputV3:
      description: |
        Input for re-evaluate artifact scan.
        Exactly one of scanId or versionId must be provided.
      properties:
        scanId:
          description: Scan identifier
          type: string
        versionId:
          description: Artifact version identifier
          type: string
      type: object
    ArtifactScanEvaluateRequestStatusV3:
      description: Status of the Artifact Scan Evaluate Request
      enum:
      - PENDING
      - PROCESSING
      - SUCCESS
      - FAILED
      type: string
    ArtifactScanInputV3:
      description: Artifact to be scanned
      properties:
        packageName:
          description: Name of the package
          type: string
        version:
          description: Version of the package
          type: string
      required:
      - packageName
      - version
      type: object
    ArtifactScanV3:
      properties:
        RegistryOrgId:
          description: Organization identifier
          type: string
        RegistryProjectId:
          description: Project identifier
          type: string
        buildDetails:
          $ref: '#/components/schemas/BuildDetailsV3'
        exemptionStatus:
          $ref: '#/components/schemas/ExemptionStatusV3'
        id:
          type: string
        lastEvaluatedAt:
          type: string
        lastEvaluatedBy:
          type: string
        packageName:
          description: Package name
          type: string
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        parentRegistryId:
          description: Parent virtual registry UUID
          type: string
        parentRegistryName:
          description: Parent virtual registry name
          type: string
        parentRegistryOrgId:
          description: Parent registry organization identifier
          type: string
        parentRegistryProjectId:
          description: Parent registry project identifier
          type: string
        policySets:
          $ref: '#/components/schemas/PolicySetsV3'
        purl:
          description: Package URL (PURL) identifying the package version
          type: string
        registryId:
          description: Registry name
          type: string
        registryName:
          description: Registry name
          type: string
        rootPackages:
          description: Unique set of root packages (name@version) impacted by this
            scan
          items:
            description: Root package with name and version (e.g. name@version)
            type: string
          type: array
          uniqueItems: true
        scanStatus:
          description: Scan status
          enum:
          - BLOCKED
          - WARN
          type: string
        securityViolationCategories:
          description: Security violation categories
          items:
            $ref: '#/components/schemas/PolicyFailureDetailCategoryV3'
          type: array
        totalAffectedPipelines:
          description: Total number of affected pipelines
          type: integer
        version:
          description: Version
          type: string
        versionId:
          description: Version
          type: string
      required:
      - id
      - packageType
      - packageName
      - purl
      - version
      - registryName
      - registryId
      - parentRegistryId
      - parentRegistryName
      - policySets
      - scanStatus
      - securityViolationCategories
      - buildDetails
      - rootPackages
      - totalAffectedPipelines
      type: object
    ArtifactStats:
      description: Harness Artifact Stats
      properties:
        downloadCount:
          format: int64
          type: integer
        downloadSize:
          format: int64
          type: integer
        totalStorageSize:
          format: int64
          type: integer
        uploadSize:
          format: int64
          type: integer
      type: object
    ArtifactSummary:
      description: Harness Artifact Summary
      properties:
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        createdAt:
          type: string
        deletedAt:
          description: Timestamp in milliseconds when the registry was soft-deleted
          type: string
        downloadsCount:
          format: int64
          type: integer
        imageName:
          type: string
        labels:
          items:
            type: string
          type: array
        modifiedAt:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        registryUUID:
          type: string
        uuid:
          type: string
      required:
      - imageName
      - packageType
      - uuid
      - registryUUID
      type: object
    ArtifactType:
      description: refers to artifact type
      enum:
      - model
      - dataset
      - module
      - provider
      type: string
    ArtifactVersionMetadata:
      description: Artifact Version Metadata
      properties:
        artifactKey:
          additionalProperties:
            type: string
          type: object
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        deletedAt:
          description: Timestamp in milliseconds when the artifact was soft deleted.
            Null if not deleted.
          type: string
        deploymentMetadata:
          $ref: '#/components/schemas/DeploymentMetadata'
        digestCount:
          format: int64
          type: integer
        downloadsCount:
          format: int64
          type: integer
        fileCount:
          format: int64
          type: integer
        firewallMode:
          enum:
          - ENABLED
          - QUARANTINE
          - ALLOW
          type: string
        isQuarantined:
          type: boolean
        lastModified:
          type: string
        lastScannedAt:
          type: string
        metadata:
          $ref: '#/components/schemas/ArtifactEntityMetadata'
        name:
          type: string
        opaMetadataValidation:
          type: boolean
        packageType:
          $ref: '#/components/schemas/PackageType'
        pullCommand:
          type: string
        quarantineReason:
          type: string
        registryIdentifier:
          type: string
        registryPath:
          type: string
        registryType:
          $ref: '#/components/schemas/RegistryType'
        registryUUID:
          type: string
        scanId:
          type: string
        scanStatus:
          enum:
          - WARN
          - BLOCKED
          - ALLOWED
          type: string
        size:
          type: string
        uuid:
          type: string
      required:
      - name
      - registryIdentifier
      - latestVersion
      - registryPath
      - packageType
      - uuid
      - registryUUID
      type: object
    ArtifactVersionSummary:
      description: Docker Artifact Version Summary
      properties:
        artifactKey:
          additionalProperties:
            type: string
          type: object
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        deletedAt:
          description: Timestamp in milliseconds when the artifact was soft deleted.
            Null if not deleted.
          type: string
        firewallMode:
          enum:
          - ENABLED
          - QUARANTINE
          - ALLOW
          type: string
        imageName:
          type: string
        imageUUID:
          type: string
        isQuarantined:
          type: boolean
        lastScannedAt:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        purl:
          type: string
        quarantineReason:
          type: string
        registryType:
          $ref: '#/components/schemas/RegistryType'
        registryUUID:
          type: string
        scanId:
          type: string
        scanStatus:
          enum:
          - WARN
          - BLOCKED
          - ALLOWED
          type: string
        sscaArtifactId:
          type: string
        sscaArtifactSourceId:
          type: string
        stoExecutionId:
          type: string
        stoPipelineId:
          type: string
        uuid:
          type: string
        version:
          type: string
      required:
      - imageName
      - version
      - packageType
      - uuid
      - registryUUID
      - imageUUID
      type: object
    AuthType:
      description: Authentication type
      enum:
      - UserPassword
      - AccessKeySecretKey
      - Anonymous
      - BearerToken
      type: string
    BackfillEntityStateV3:
      description: Per-entity backfill progress and ES document count for an account.
      properties:
        completedAt:
          $ref: '#/components/schemas/CompletedAtMsV3'
        documentsInES:
          description: Number of documents currently present in Elasticsearch for
            this entity type.
          format: int64
          type: integer
        lastProcessedID:
          description: Checkpoint cursor of the last successfully indexed row.
          type: string
        startedAt:
          $ref: '#/components/schemas/StartedAtMsV3'
        status:
          description: Current backfill status for this entity type.
          type: string
        totalProcessed:
          description: Total rows processed for this entity type so far.
          format: int64
          type: integer
      required:
      - status
      - lastProcessedID
      - totalProcessed
      - documentsInES
      - startedAt
      - completedAt
      type: object
    BackfillStateDataV3:
      description: Aggregated backfill state for an account across all entity types.
      properties:
        accountIdentifier:
          description: Account identifier the state belongs to.
          type: string
        entities:
          additionalProperties:
            $ref: '#/components/schemas/BackfillEntityStateV3'
          description: Map of entity type to its current backfill state.
          type: object
      required:
      - accountIdentifier
      - entities
      type: object
    BackfillTaskStatusDataV3:
      description: Status of a single backfill job (CDC outbox row).
      properties:
        attempts:
          description: Number of execution attempts so far.
          format: int64
          type: integer
        completedAt:
          $ref: '#/components/schemas/CompletedAtMsV3'
        createdAt:
          $ref: '#/components/schemas/CreatedAtMsV3'
        jobId:
          description: Numeric identifier of the CDC job row.
          type: string
        jobType:
          description: Job type discriminator.
          type: string
        lastError:
          description: Last error message from the most recent failed attempt, if
            any.
          type: string
        status:
          description: Lifecycle status of the job.
          type: string
      required:
      - jobId
      - status
      - createdAt
      - jobType
      - attempts
      type: object
    BackfillTriggerDataV3:
      description: Response payload returned when a backfill is successfully triggered.
      properties:
        jobId:
          description: Numeric identifier of the CDC job row created for this backfill.
          type: integer
      required:
      - jobId
      type: object
    BackfillTriggerRequestInputV3:
      description: Request body for triggering an ES search backfill.
      properties:
        entityTypes:
          description: Entity types to backfill into Elasticsearch.
          items:
            enum:
            - REGISTRY
            - PACKAGE
            - PACKAGE_VERSION
            - FILE
            type: string
          type: array
        reindexAll:
          default: false
          description: If true, reset progress and re-index all rows from the beginning.
          type: boolean
      required:
      - entityTypes
      type: object
    BearerToken:
      properties:
        secretIdentifier:
          type: string
        secretSpaceId:
          format: int64
          type: integer
        secretSpacePath:
          type: string
    BuildDetailEntryV3:
      description: Build detail entry for a single scan.
      properties:
        lastExecutionTime:
          description: Epoch time (seconds) of the latest execution.
          format: int64
          type: integer
        latestExecutionId:
          description: Latest execution identifier.
          type: string
        pipelineId:
          description: Pipeline identifier.
          type: string
        rootPackage:
          description: Root package identifier in name@version format.
          type: string
        stageId:
          description: Stage identifier.
          type: string
        stepId:
          description: Step identifier.
          type: string
      required:
      - pipelineId
      - package
      - latestExecutionId
      - lastExecutionTime
      - stageId
      - rootPackage
      type: object
    BuildDetails:
      properties:
        orgIdentifier:
          type: string
        pipelineDisplayName:
          type: string
        pipelineExecutionId:
          type: string
        pipelineIdentifier:
          type: string
        projectIdentifier:
          type: string
        stageExecutionId:
          type: string
        stepExecutionId:
          type: string
      type: object
    BuildDetailsV3:
      description: |
        List of build detail entries containing pipeline and package info.
      items:
        $ref: '#/components/schemas/BuildDetailEntryV3'
      type: array
    BuildInfoMetadataV3:
      description: List of dependency graph nodes for the build.
      items:
        $ref: '#/components/schemas/BuildInfoNodeV3'
      type: array
    BuildInfoNodeV3:
      description: Node in the build
      properties:
        nodeKey:
          description: package@version
          type: string
        parentNodeKey:
          description: Parent node
          type: string
      required:
      - nodeKey
      type: object
    BuildInfoRequestInputV3:
      description: Request to add build info
      properties:
        metadata:
          $ref: '#/components/schemas/BuildInfoMetadataV3'
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        pipelineContext:
          $ref: '#/components/schemas/PipelineContextV3'
        registryId:
          description: UUID of the registry to add build info for
          format: uuid
          type: string
        rootPackage:
          $ref: '#/components/schemas/RootPackageV3'
        status:
          description: Status of the evaluation
          enum:
          - PENDING
          - PROCESSING
          - SUCCESS
          - FAILURE
          type: string
      required:
      - registryId
      - packageType
      - rootPackage
      - status
      - metadata
      type: object
    BulkDeleteRequestInputV3:
      description: |
        Input for bulk delete operation.
      properties:
        dryRun:
          description: |
            When `true` (default), only lists the packages/versions that would be deleted, for any value of `force`. Set to `false` to perform the delete.
          type: boolean
        force:
          description: |
            When `true`, matching packages/versions are permanently deleted (hard delete). When `false` (default), they are soft-deleted. Nothing is deleted while `dryRun` is `true`. Soft delete is not supported for UPSTREAM registries: any request with `force=false`, including a dry run, returns 400, so use `force=true` for them.
          type: boolean
        packages:
          description: Package name pattern (supports wildcards)
          type: string
        registry:
          description: Registry identifier
          type: string
        versions:
          description: Version pattern (supports wildcards)
          type: string
      required:
      - registry
      - packages
      type: object
    BulkDeleteResponseV3:
      properties:
        dryRun:
          type: boolean
        failed:
          type: integer
        failedPackages:
          items:
            type: string
          type: array
        force:
          type: boolean
        message:
          type: string
        pattern:
          type: string
        registry:
          type: string
        success:
          type: integer
        successPackages:
          items:
            type: string
          type: array
        total:
          type: integer
        versionPattern:
          type: string
      required:
      - message
      - pattern
      - versionPattern
      - registry
      - dryRun
      - force
      - total
      - success
      - failed
      - failedPackages
      - successPackages
      type: object
    BulkDownloadFilesRequestInput:
      description: |
        Input for bulk download files. Only one of packages or versions should be provided.
      properties:
        outputFileName:
          description: Name of the output file to be downloaded
          type: string
        packages:
          description: List of packages UUID to download
          items:
            type: string
          type: array
        registryId:
          description: registry UUID
          type: string
        versions:
          description: List of versions UUID to download
          items:
            type: string
          type: array
      required:
      - registryId
      type: object
    BulkDownloadFilesRequestInputV3:
      description: |
        Input for bulk download files. Only one of packages or versions should be provided.
      properties:
        outputFileName:
          description: Name of the output file to be downloaded
          type: string
        packageIds:
          description: List of packages Id to download
          items:
            format: uuid
            type: string
          type: array
        versionIds:
          description: List of versions Id to download
          items:
            format: uuid
            type: string
          type: array
      type: object
    BulkDownloadRequestStatus:
      description: Status of the bulk download operation
      enum:
      - pending
      - processing
      - success
      - failed
      type: string
    BulkDownloadRequestStatusOutput:
      properties:
        downloadUrl:
          type: string
        id:
          type: string
        message:
          type: string
        outputFileName:
          type: string
        status:
          $ref: '#/components/schemas/BulkDownloadRequestStatus'
      required:
      - id
      - status
      - message
      - downloadUrl
      - outputFileName
      type: object
    BulkDownloadRequestStatusV3:
      description: Status of the bulk download operation
      enum:
      - PENDING
      - PROCESSING
      - SUCCESS
      - FAILED
      type: string
    BulkScanEvaluateSyncRequestV3:
      description: |
        Request body for synchronous bulk artifact scan evaluation. Maximum 50 artifacts per request. No data is written to the database.
      properties:
        artifacts:
          description: List of artifacts to evaluate (max 50)
          items:
            $ref: '#/components/schemas/ArtifactScanInputV3'
          maxItems: 50
          minItems: 1
          type: array
        registryId:
          description: Registry identifier
          format: uuid
          type: string
        skipCache:
          description: When true, skip the cached scan result and force a fresh OPA
            evaluation
          type: boolean
      required:
      - registryId
      - artifacts
      type: object
    BulkScanEvaluationAcceptedDataV3:
      description: Response data for bulk scan evaluation request
      properties:
        evaluationId:
          description: Unique evaluation ID for tracking the bulk scan evaluation
          type: string
      type: object
    BulkScanEvaluationRequestV3:
      description: Request to initiate bulk scan evaluation
      properties:
        artifacts:
          description: List of artifacts to evaluate
          items:
            $ref: '#/components/schemas/ArtifactScanInputV3'
          maxItems: 10000
          minItems: 1
          type: array
        registryId:
          description: Registry identifier
          format: uuid
          type: string
      required:
      - registryId
      - artifacts
      type: object
    BulkScanEvaluationStatusDataV3:
      description: Response data for bulk scan evaluation status
      properties:
        error:
          description: Error message (only present when status is failure)
          nullable: true
          type: string
        evaluationId:
          description: The evaluation ID
          type: string
        scans:
          description: List of scan results (only present when status is success)
          items:
            $ref: '#/components/schemas/BulkScanResultItemV3'
          nullable: true
          type: array
        status:
          description: Status of the evaluation
          enum:
          - PENDING
          - PROCESSING
          - SUCCESS
          - FAILURE
          type: string
      type: object
    BulkScanResultItemV3:
      description: Individual scan result item
      properties:
        packageName:
          description: Name of the package
          type: string
        scanId:
          description: Scan identifier
          format: uuid
          type: string
        scanStatus:
          $ref: '#/components/schemas/ScanStatusV3'
        version:
          description: Version of the package
          type: string
      type: object
    CRANArtifactDetailConfig:
      description: Config for CRAN artifact details.
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    CargoArtifactDetailConfig:
      description: Config for Cargo artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    CleanupPolicy:
      description: Cleanup Policy for Harness Artifact Registries
      properties:
        expireDays:
          type: integer
        name:
          type: string
        packagePrefix:
          items:
            type: string
          type: array
        versionPrefix:
          items:
            type: string
          type: array
      type: object
    ClientSetupDetails:
      description: Client Setup Details
      properties:
        mainHeader:
          type: string
        secHeader:
          type: string
        sections:
          items:
            $ref: '#/components/schemas/ClientSetupSection'
          type: array
      required:
      - mainHeader
      - secHeader
      - sections
      type: object
    ClientSetupSection:
      description: Client Setup Section
      discriminator:
        mapping:
          INLINE: '#/components/schemas/ClientSetupStepConfig'
          TABS: '#/components/schemas/TabSetupStepConfig'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ClientSetupStepConfig'
      - $ref: '#/components/schemas/TabSetupStepConfig'
      properties:
        header:
          type: string
        secHeader:
          type: string
        type:
          $ref: '#/components/schemas/SectionType'
      required:
      - type
      type: object
    ClientSetupStep:
      description: Client Setup Step
      properties:
        commands:
          items:
            $ref: '#/components/schemas/ClientSetupStepCommand'
          type: array
        header:
          type: string
        type:
          $ref: '#/components/schemas/ClientSetupStepType'
      type: object
    ClientSetupStepCommand:
      description: Client Setup Step Command
      properties:
        label:
          type: string
        value:
          type: string
      type: object
    ClientSetupStepConfig:
      description: Client Setup Step
      properties:
        steps:
          items:
            $ref: '#/components/schemas/ClientSetupStep'
          type: array
      type: object
    ClientSetupStepType:
      description: ClientSetupStepType type
      enum:
      - Static
      - GenerateToken
      type: string
    CompletedAtMsV3:
      description: Unix timestamp in milliseconds when the operation completed. Null
        while still in flight.
      example: 1736360000456
      format: int64
      nullable: true
      type: integer
    ComposerArtifactDetailConfig:
      description: Config for composer artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    ConanArtifactDetailConfig:
      description: Config for Conan artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    ConanPackageDetailV3:
      description: A Conan package (PKGID) detail. The package revisions are listed
        via the package-revisions endpoint.
      properties:
        downloadCount:
          description: Total downloads across every finalized package revision of
            this package.
          format: int64
          type: integer
        id:
          description: The stable UUID of the package row.
          format: uuid
          type: string
        lastDownloadedAt:
          description: Most recent download time (Unix milliseconds), if any.
          format: int64
          nullable: true
          type: integer
        options:
          additionalProperties: true
          description: Build options parsed from conaninfo.txt.
          type: object
        packageId:
          type: string
        packageRevisionCount:
          description: Number of finalized package revisions (PREVs) of this package.
          format: int64
          type: integer
        recipeRevision:
          type: string
        settings:
          additionalProperties: true
          description: Build settings parsed from conaninfo.txt.
          type: object
        size:
          type: string
      required:
      - id
      - packageId
      type: object
    ConanPackageMetadataV3:
      description: A Conan package (PKGID).
      properties:
        id:
          description: The stable UUID of the package row.
          format: uuid
          type: string
        latestPackageRevision:
          description: The newest finalized package revision hash.
          type: string
        options:
          additionalProperties: true
          description: Build options parsed from conaninfo.txt.
          type: object
        packageId:
          description: The package id hash.
          type: string
        settings:
          additionalProperties: true
          description: Build settings parsed from conaninfo.txt.
          type: object
        size:
          description: Size of the latest finalized package revision.
          type: string
      required:
      - id
      - packageId
      type: object
    ConanPackageRevisionDetailV3:
      description: A Conan package revision (PREV).
      properties:
        createdAt:
          $ref: '#/components/schemas/CreatedAtMsV3'
        downloadCount:
          format: int64
          type: integer
        id:
          description: The stable UUID of the package revision row.
          format: uuid
          type: string
        lastDownloadedAt:
          description: Last-downloaded time (Unix milliseconds), if any.
          format: int64
          nullable: true
          type: integer
        packageRevision:
          description: The package revision (PREV) hash.
          type: string
        size:
          type: string
      required:
      - id
      - packageRevision
      type: object
    ConanRecipeRevisionDetailV3:
      description: A Conan recipe revision (RREV).
      properties:
        downloadCount:
          description: Total downloads across every finalized package revision under
            this revision.
          format: int64
          type: integer
        id:
          description: The stable UUID of the recipe revision row.
          format: uuid
          type: string
        lastDownloadedAt:
          description: Most recent download time (Unix milliseconds), if any.
          format: int64
          nullable: true
          type: integer
        lastPushedAt:
          description: Finalization time (Unix milliseconds).
          format: int64
          nullable: true
          type: integer
        packageCount:
          description: Number of packages with at least one finalized package revision.
          format: int64
          type: integer
        recipeRevision:
          description: The recipe revision (RREV) hash.
          type: string
        size:
          description: Recipe files plus all package binaries under this revision.
          type: string
      required:
      - id
      - recipeRevision
      type: object
    CondaArtifactDetailConfig:
      description: Config for conda artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    CopyResourceItemV3:
      description: One copy operation from a source to a target registry
      properties:
        source:
          $ref: '#/components/schemas/CopySourceRefV3'
        target:
          $ref: '#/components/schemas/CopyTargetRefV3'
      required:
      - source
      - target
      type: object
    CopySourceRefV3:
      properties:
        versionId:
          format: uuid
          type: string
      required:
      - versionId
      type: object
    CopyTargetRefV3:
      properties:
        registryId:
          format: uuid
          type: string
      required:
      - registryId
      type: object
    CreateBulkDownloadRequestResponseOutput:
      properties:
        downloadId:
          description: Unique identifier for the download request
          example: 12345678-1234-1234-1234-123456789012
          type: string
      required:
      - downloadId
      type: object
    CreatedAtMsV3:
      description: Unix timestamp in milliseconds when the resource was created
      example: 1736360000123
      format: int64
      nullable: true
      type: integer
    DailyStorage:
      description: Storage snapshot for a single calendar day.
      properties:
        date:
          description: Snapshot date in UTC (YYYY-MM-DD).
          format: date
          type: string
        size:
          description: Total storage on that date, as a human-readable auto-scaled
            size (e.g. "468.78GB").
          type: string
      required:
      - date
      - size
      type: object
    DartArtifactDetailConfig:
      description: Config for dart artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    DebianArtifactDetailConfig:
      description: Config for debian artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    DebianConfig:
      description: Debian-specific configuration, applicable only when packageType
        is DEBIAN.
      properties:
        optionalIndexCompressionFormats:
          description: Optional additional compression formats to generate for index/metadata
            files.
          items:
            enum:
            - .xz
            type: string
          type: array
        remoteIndexedArchitectures:
          default:
          - amd64
          - i386
          - arm64
          description: Architectures to index when building metadata from linked remote
            (upstream) registries.
          items:
            type: string
          type: array
      type: object
    DeletedAtMsV3:
      description: Unix timestamp in milliseconds when the resource was soft-deleted
      example: 1736360000456
      format: int64
      nullable: true
      type: integer
    DeploymentDetails:
      properties:
        nonProdDeployment:
          type: integer
        prodDeployment:
          type: integer
        totalDeployment:
          type: integer
      required:
      - prodDeployment
      - nonProdDeployment
      - totalDeployment
      type: object
    DeploymentMetadata:
      properties:
        nonProdEnvCount:
          type: integer
        prodEnvCount:
          type: integer
      required:
      - prodEnvCount
      - nonProdEnvCount
      type: object
    DeploymentMetadataV3:
      properties:
        nonProdEnvCount:
          type: integer
        prodEnvCount:
          type: integer
      required:
      - prodEnvCount
      - nonProdEnvCount
      type: object
    DeploymentStats:
      description: DeploymentStats
      properties:
        PreProduction:
          type: integer
        Production:
          type: integer
      required:
      - Production
      - PreProduction
      type: object
    DockerArtifactDetail:
      description: Docker Artifact Detail
      properties:
        createdAt:
          type: string
        downloadsCount:
          format: int64
          type: integer
        imageName:
          type: string
        isQuarantined:
          type: boolean
        metadata:
          $ref: '#/components/schemas/ArtifactEntityMetadata'
        modifiedAt:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        pullCommand:
          type: string
        pullCommandByDigest:
          type: string
        pushedBy:
          $ref: '#/components/schemas/UserInfo'
        quarantineReason:
          type: string
        registryPath:
          type: string
        size:
          type: string
        url:
          type: string
        version:
          type: string
      required:
      - imageName
      - version
      - registryPath
      - url
      - packageType
      type: object
    DockerArtifactDetailConfig:
      description: Config for docker artifact details
      properties:
        pullCommand:
          type: string
      type: object
    DockerArtifactIntegrationDetail:
      description: Docker Artifact Detail
      properties:
        buildDetails:
          $ref: '#/components/schemas/BuildDetails'
        deploymentsDetails:
          $ref: '#/components/schemas/DeploymentDetails'
        sbomDetails:
          $ref: '#/components/schemas/SBOMDetails'
        slsaDetails:
          $ref: '#/components/schemas/SLSADetails'
        stoDetails:
          $ref: '#/components/schemas/STODetails'
      type: object
    DockerArtifactManifest:
      description: Docker Artifact Manifest
      properties:
        manifest:
          type: string
      required:
      - manifest
      type: object
    DockerLayerEntry:
      description: Harness Artifact Layers
      properties:
        command:
          type: string
        size:
          type: string
      required:
      - command
      type: object
    DockerLayersSummary:
      description: Harness Layers Summary
      properties:
        digest:
          type: string
        layers:
          items:
            $ref: '#/components/schemas/DockerLayerEntry'
          type: array
        osArch:
          type: string
      required:
      - digest
      type: object
    DockerManifestDetails:
      description: Harness Artifact Layers
      properties:
        createdAt:
          type: string
        digest:
          type: string
        downloadsCount:
          format: int64
          type: integer
        isQuarantined:
          type: boolean
        osArch:
          type: string
        quarantineReason:
          type: string
        size:
          type: string
        stoDetails:
          $ref: '#/components/schemas/STODetails'
        stoExecutionId:
          type: string
        stoPipelineId:
          type: string
      required:
      - digest
      - layers
      - osArch
      type: object
    DockerManifests:
      description: Harness Manifests
      properties:
        imageName:
          type: string
        manifests:
          items:
            $ref: '#/components/schemas/DockerManifestDetails'
          type: array
        version:
          type: string
      required:
      - imageName
      - version
      type: object
    EnumLabelColor:
      enum:
      - blue
      - brown
      - cyan
      - green
      - indigo
      - lime
      - mint
      - orange
      - pink
      - purple
      - red
      - violet
      - yellow
      type: string
    EnumLabelType:
      enum:
      - dynamic
      - static
      type: string
    EnvironmentType:
      description: Environment Type
      enum:
      - PreProduction
      - Production
      type: string
    Error:
      description: Standard error response with code, message and optional details
      properties:
        code:
          description: The HTTP error code
          example: "404"
          type: string
        details:
          description: |
            Additional context and details about the error.
            May include field-specific validation errors or debugging information.
          example:
            field: registry_identifier
            reason: Registry does not exist in the specified project
            value: invalid-registry
          type: object
        message:
          description: Human-readable error message explaining what went wrong
          example: Registry not found
          type: string
      required:
      - code
      - message
      type: object
    ErrorV3:
      description: An error response
      properties:
        error:
          $ref: '#/components/schemas/ApiErrorsV3'
      required:
      - error
      type: object
    ExemptionStatusV3:
      description: Exemption status for an artifact, showing if an exception exists.
      properties:
        createdAt:
          $ref: '#/components/schemas/CreatedAtMsV3'
        expirationAt:
          $ref: '#/components/schemas/CreatedAtMsV3'
        id:
          description: Firewall exception ID for navigation to the exception detail.
          format: uuid
          type: string
        status:
          description: Current status of the exception.
          enum:
          - PENDING
          - APPROVED
          - REJECTED
          - EXPIRED
          type: string
      required:
      - id
      - status
      - createdAt
      type: object
    ExtraHeader:
      description: Webhook Extra Header
      properties:
        key:
          type: string
        masked:
          default: false
          type: boolean
        value:
          type: string
      required:
      - key
      - value
      type: object
    FileDetail:
      description: File Detail
      properties:
        checksums:
          items:
            type: string
          type: array
        createdAt:
          type: string
        downloadCommand:
          type: string
        name:
          type: string
        path:
          type: string
        size:
          type: string
      required:
      - name
      - size
      - checksums
      - downloadCommand
      - createdAt
      - path
      type: object
    FileDetailsV3:
      allOf:
      - $ref: '#/components/schemas/FileMetadataV3'
      - properties:
          contentType:
            description: Declared file Content-Type, or the extension-derived fallback
              for legacy files.
            type: string
        required:
        - contentType
        type: object
      description: |
        Full details for a single file, including its Content-Type. Unlike list responses, downloadUrl here previews the file inline when the browser can render its Content-Type and otherwise downloads it (served by a route outside this spec — see GET /api/v3/registries/{id}/files/*). downloadCmd keeps using GET /files/{id}/content, which always downloads.
    FileMetadata:
      description: File Metadata
      properties:
        downloadUrl:
          type: string
        filename:
          type: string
        id:
          type: string
        sha256:
          type: string
      required:
      - id
      - downloadUrl
      - sha256
      - filename
      type: object
    FileMetadataV3:
      description: File Metadata
      properties:
        createdAt:
          $ref: '#/components/schemas/CreatedAtMsV3'
        createdBy:
          $ref: '#/components/schemas/UserInfoV3'
        downloadCmd:
          type: string
        downloadUrl:
          type: string
        id:
          type: string
        md5:
          type: string
        name:
          type: string
        path:
          type: string
        sha1:
          type: string
        sha256:
          type: string
        sha512:
          type: string
        size:
          type: string
      required:
      - id
      - name
      - path
      - createdAt
      - sha1
      - sha256
      - sha512
      - md5
      - size
      - downloadCmd
      type: object
    FilterConditionV3:
      description: Supported comparison condition for a filter.
      enum:
      - EQ
      - NE
      - GT
      - LT
      - CONTAINS
      - STARTS_WITH
      - ENDS_WITH
      - IN
      - NOT_IN
      type: string
    FilterDataTypeV3:
      description: Data type of a filter field.
      enum:
      - string
      - number
      - boolean
      type: string
    FilterDefinitionV3:
      description: Definition of a filter that can be applied when listing a resource.
      properties:
        conditions:
          description: Comparison conditions supported by this filter.
          items:
            $ref: '#/components/schemas/FilterConditionV3'
          type: array
        dataType:
          $ref: '#/components/schemas/FilterDataTypeV3'
        field:
          description: Backend field name the filter maps to.
          type: string
        id:
          description: Stable identifier for the filter.
          type: string
        inputType:
          $ref: '#/components/schemas/FilterInputTypeV3'
        label:
          description: Human-readable label for the filter.
          type: string
        supportsOptions:
          description: Whether the filter supports a dynamic set of option values.
          type: boolean
      required:
      - id
      - label
      - field
      - dataType
      - inputType
      - conditions
      - supportsOptions
      type: object
    FilterInputTypeV3:
      description: UI input control used to render a filter field.
      enum:
      - text
      - number
      - checkbox
      - singleSelect
      - multiSelect
      type: string
    FilterOptionV3:
      description: One selectable value for a filter with `supportsOptions=true`.
      properties:
        label:
          description: Human-readable label for the value.
          type: string
        value:
          description: Value to send back when applying the filter.
          type: string
      required:
      - value
      - label
      type: object
    FilterResourceTypeV3:
      description: |
        Resource type whose filter definitions are requested by
        `GET /filters?resource_type=...`.
      enum:
      - REGISTRY
      - PACKAGE
      - VERSION
      type: string
    FirewallExceptionApprovalRequestV3:
      description: Request to approve or reject a firewall exception
      properties:
        notes:
          description: Note from approver explaining the decision
          nullable: true
          type: string
        status:
          $ref: '#/components/schemas/FirewallExceptionStatusV3'
      required:
      - status
      type: object
    FirewallExceptionCreateRequestV3:
      description: Request to create a firewall exception
      properties:
        businessJustification:
          description: Business justification for the exception
          type: string
        expireAfter:
          description: Number of days after approval when the exception expires. Null
            means never expires.
          format: int32
          nullable: true
          type: integer
        packageName:
          description: Name of the package
          type: string
        registryId:
          description: UUID of the registry
          format: uuid
          type: string
        remediationPlan:
          description: Plan for remediation (optional)
          nullable: true
          type: string
        versionList:
          description: List of versions to except. Empty array means all versions.
          items:
            type: string
          type: array
      required:
      - registryId
      - packageName
      - businessJustification
      type: object
    FirewallExceptionMetaV3:
      description: Metadata counts for firewall exceptions
      properties:
        approvedCount:
          description: Number of exceptions with APPROVED status (non-expired)
          example: 25
          format: int64
          type: integer
        expiredCount:
          description: Number of approved exceptions that have expired
          example: 10
          format: int64
          type: integer
        pendingCount:
          description: Number of exceptions with PENDING status
          example: 10
          format: int64
          type: integer
        rejectedCount:
          description: Number of exceptions with REJECTED status
          example: 5
          format: int64
          type: integer
        totalCount:
          description: Total number of exceptions
          example: 50
          format: int64
          type: integer
      required:
      - totalCount
      - pendingCount
      - approvedCount
      - rejectedCount
      - expiredCount
      type: object
    FirewallExceptionResponseV3:
      description: Firewall exception details
      properties:
        businessJustification:
          description: Business justification for the exception
          type: string
        createdAt:
          description: Unix timestamp (milliseconds) when created
          format: int64
          type: integer
        createdBy:
          $ref: '#/components/schemas/UserInfoV3'
        exceptionId:
          description: Unique identifier for the exception
          format: uuid
          type: string
        expirationAt:
          description: Unix timestamp (milliseconds) when the exception expires. Computed
            at approval time.
          format: int64
          nullable: true
          type: integer
        expireAfter:
          description: Number of days after approval when the exception expires
          format: int32
          nullable: true
          type: integer
        notes:
          description: Note from approver (if approved/rejected)
          nullable: true
          type: string
        packageName:
          description: Name of the package
          type: string
        packageType:
          description: type of the package
          type: string
        registryId:
          description: Registry identifier
          type: string
        registryName:
          description: Name of the registry
          type: string
        remediationPlan:
          description: Plan for remediation
          nullable: true
          type: string
        status:
          $ref: '#/components/schemas/FirewallExceptionStatusV3'
        statusChangedAt:
          description: Unix timestamp (milliseconds) when status was changed
          format: int64
          nullable: true
          type: integer
        statusChangedBy:
          $ref: '#/components/schemas/UserInfoV3'
        updatedAt:
          description: Unix timestamp (milliseconds) when last updated
          format: int64
          type: integer
        updatedBy:
          $ref: '#/components/schemas/UserInfoV3'
        versionId:
          description: Version identifier
          nullable: true
          type: string
        versionList:
          description: List of versions covered by exception
          items:
            type: string
          type: array
        versionScanMap:
          additionalProperties:
            type: string
          description: Map of version string to scan ID
          nullable: true
          type: object
      required:
      - exceptionId
      - registryId
      - packageName
      - packageType
      - versionList
      - businessJustification
      - status
      - createdAt
      - createdBy
      - updatedAt
      - updatedBy
      type: object
    FirewallExceptionStatusV3:
      description: Status of the firewall exception
      enum:
      - PENDING
      - APPROVED
      - REJECTED
      - EXPIRED
      type: string
    FirewallExceptionUpdateRequestV3:
      description: Request to update a firewall exception. Only allowed when status
        is PENDING.
      properties:
        businessJustification:
          description: Updated business justification for the exception
          type: string
        expireAfter:
          description: Number of days after approval when the exception expires. Null
            means never expires.
          format: int32
          nullable: true
          type: integer
        remediationPlan:
          description: Updated plan for remediation
          nullable: true
          type: string
        versionList:
          description: Updated list of versions to except. Empty array means all versions.
          items:
            type: string
          type: array
      type: object
    FirewallModeV3:
      description: Firewall mode
      enum:
      - ENABLED
      - QUARANTINE
      - ALLOW
      type: string
    FixVersionDetailsV3:
      description: Fix version Details
      properties:
        currentVersion:
          description: The current version
          example: 1.2.0
          type: string
        fixVersion:
          description: The fix version
          example: 1.2.2
          type: string
        fixVersionAvailable:
          description: Fix version available or not
          type: boolean
      required:
      - fixVersionAvailable
      - currentVersion
      type: object
    ForceUnlockTerraformBackendRequestV3:
      description: Context recorded on the force-unlock audit trail.
      properties:
        reason:
          description: Why the lock is being force-cleared. Recorded in the audit
            log.
          type: string
      required:
      - reason
      type: object
    ForceUnlockTerraformBackendResponseV3:
      properties:
        data:
          properties:
            lockedBy:
              description: The previous lock holder, if any.
              type: string
            wasLocked:
              description: Whether a lock was actually held before this call.
              type: boolean
          required:
          - wasLocked
          type: object
      required:
      - data
      type: object
    GenerateKeyRequestV3:
      description: |
        Request to generate a new signing key.

        `type` selects the cryptographic system to generate:
        - GPG: OpenPGP key for package signing (Debian, RPM, Alpine)
        - RSA: Raw RSA key for direct signing operations

        `algorithm` selects the underlying algorithm. Only RSA and ED25519 can
        be generated; other `SigningKeyAlgorithmV3` values (e.g. ECDSA) are
        rejected with 400 here but may appear on imported keys.

        Key size is not a request parameter. It is fixed per algorithm so that
        every generated key is one package clients are known to accept:
        - GPG + ED25519: 256 bits (fixed by the curve)
        - GPG + RSA: 4096 bits
        - RSA + RSA: 4096 bits

        The resulting size is reported as `size` on the created key.

        Supported combinations: GPG + ED25519, GPG + RSA, RSA + RSA. Pairing
        `type: RSA` with `algorithm: ED25519` is rejected with 400.
      properties:
        algorithm:
          $ref: '#/components/schemas/SigningKeyAlgorithmV3'
        expirationAt:
          description: Optional expiration timestamp in Unix milliseconds
          format: int64
          nullable: true
          type: integer
        name:
          description: Human-readable name for the key
          maxLength: 128
          type: string
        type:
          $ref: '#/components/schemas/SigningKeyTypeV3'
      required:
      - name
      - type
      - algorithm
      type: object
    GenericArtifactDetailConfig:
      description: Config for generic artifact details
      properties:
        description:
          type: string
      type: object
    GoArtifactDetailConfig:
      description: Config for Go artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    HelmArtifactDetail:
      description: Helm Artifact Detail
      properties:
        artifact:
          type: string
        createdAt:
          type: string
        downloadsCount:
          format: int64
          type: integer
        metadata:
          $ref: '#/components/schemas/ArtifactEntityMetadata'
        modifiedAt:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        pullCommand:
          type: string
        pullCommandByDigest:
          type: string
        registryPath:
          type: string
        size:
          type: string
        url:
          type: string
        version:
          type: string
      required:
      - imageName
      - version
      - registryPath
      - url
      - packageType
      type: object
    HelmArtifactDetailConfig:
      description: Config for helm artifact details
      properties:
        pullCommand:
          type: string
      type: object
    HelmArtifactManifest:
      description: Helm Artifact Manifest
      properties:
        manifest:
          type: string
      required:
      - manifest
      type: object
    HelmHttpArtifactDetailConfig:
      description: Config for Helm HTTP artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    HuggingFaceArtifactDetailConfig:
      description: Config for huggingface artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    ImportKeyRequestV3:
      description: |
        Request to import an existing signing key from secret manager. `type` is the cryptographic system of the key being imported.

        Passphrase-protected keys are supported for both GPG and RSA. Supply `passphraseSecretIdentifier` and `passphraseSecretSpacePath` together; providing only one is rejected with 400. The passphrase is stored as a secret reference and re-read on every signing operation, so it must remain readable for the lifetime of the key.

        Accepted RSA private key encodings:
        - PKCS#1 (`RSA PRIVATE KEY`), encrypted or not
        - PKCS#8 (`PRIVATE KEY` / `ENCRYPTED PRIVATE KEY`)
        - OpenSSH (`OPENSSH PRIVATE KEY`), encrypted or not
      properties:
        expirationAt:
          description: |
            Optional expiration timestamp in Unix milliseconds.
            Priority: provided value > key's embedded expiration > no expiration.
            Note: RSA keys don't have embedded expiration, so this is the only way to set expiration for RSA keys.
          format: int64
          nullable: true
          type: integer
        name:
          description: Human-readable name for the key
          maxLength: 128
          type: string
        passphraseSecretIdentifier:
          description: |
            Reference to the passphrase secret. Required when the private key is encrypted, for both GPG and RSA keys, and must be provided together with passphraseSecretSpacePath.
          nullable: true
          type: string
        passphraseSecretSpacePath:
          description: |
            Space path for the passphrase secret (e.g., "accountId/orgId/projectId"). Must be provided together with passphraseSecretIdentifier; defaults to the private key's space when omitted.
          nullable: true
          type: string
        privateKeySecretIdentifier:
          description: Reference to private key secret in Harness Secret Manager
          type: string
        privateKeySecretSpacePath:
          description: Space path for the private key secret (e.g., "accountId/orgId/projectId")
          type: string
        type:
          $ref: '#/components/schemas/SigningKeyTypeV3'
      required:
      - name
      - type
      - privateKeySecretIdentifier
      - privateKeySecretSpacePath
      type: object
    JfrogReplicationRegistry:
      properties:
        namespace:
          type: string
        passwordSecretId:
          type: string
        passwordSecretSpaceId:
          type: string
        url:
          format: uri
          type: string
        username:
          type: string
      required:
      - url
      - namespace
      type: object
    LicensePolicyFailureDetailConfigV3:
      description: License-specific failure detail payload.
      properties:
        allowedLicenses:
          description: Allowed license list.
          items:
            type: string
          type: array
        blockedLicense:
          description: Blocked license.
          type: string
      required:
      - allowedLicenses
      - blockedLicense
      type: object
    LifecycleDryRunRequestBodyV3:
      properties:
        policyId:
          type: string
      required:
      - policyId
      type: object
    LifecycleExecutionItemResponseV3:
      description: A single artifact version evaluated during a lifecycle execution.
      properties:
        lastDownloadedAt:
          description: Epoch milliseconds of the last download.
          format: int64
          type: integer
        orgIdentifier:
          $ref: '#/components/schemas/orgIdentifier'
        packageName:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        projectIdentifier:
          $ref: '#/components/schemas/projectIdentifier'
        reason:
          description: Reason the item was included or excluded.
          type: string
        registryName:
          type: string
        size:
          type: string
        status:
          $ref: '#/components/schemas/LifecycleExecutionItemStatusV3'
        version:
          type: string
        versionCreatedAt:
          description: Epoch milliseconds when the artifact version was created.
          format: int64
          type: integer
        versionId:
          type: string
      required:
      - packageName
      - version
      - registryName
      - status
      type: object
    LifecycleExecutionItemStatusV3:
      description: Outcome of a lifecycle execution item.
      enum:
      - PROTECTED
      - WOULD_BE_DELETED
      - DELETED
      type: string
    LifecycleExecutionResponseV3:
      properties:
        completedAt:
          format: int64
          type: integer
        createdAt:
          format: int64
          type: integer
        id:
          type: string
        message:
          type: string
        orgIdentifier:
          $ref: '#/components/schemas/orgIdentifier'
        packagesAffected:
          format: int64
          type: integer
        policyId:
          type: string
        policyName:
          description: Name of the lifecycle policy that triggered this execution.
          type: string
        projectIdentifier:
          $ref: '#/components/schemas/projectIdentifier'
        protected:
          format: int64
          type: integer
        registriesAffected:
          format: int64
          type: integer
        startedAt:
          format: int64
          type: integer
        status:
          $ref: '#/components/schemas/LifecycleExecutionStatusV3'
        storageReclaimed:
          type: string
        triggerType:
          $ref: '#/components/schemas/LifecycleExecutionTriggerTypeV3'
        versionsDeleted:
          format: int64
          type: integer
      required:
      - id
      - policyId
      - policyName
      - status
      - triggerType
      - createdAt
      - registriesAffected
      - packagesAffected
      - versionsDeleted
      - storageReclaimed
      - protected
      type: object
    LifecycleExecutionStatusV3:
      enum:
      - PENDING
      - INPROGRESS
      - SUCCESS
      - FAILED
      type: string
    LifecycleExecutionTriggerTypeV3:
      enum:
      - SCHEDULED
      - DRY_RUN
      type: string
    LifecycleRuleActionV3:
      enum:
      - DELETE
      - PROTECT
      type: string
    LifecycleRuleApplyToModeV3:
      enum:
      - EXPLICIT
      - ALL_IN_SCOPE
      type: string
    LifecycleRuleApplyToV3:
      properties:
        mode:
          $ref: '#/components/schemas/LifecycleRuleApplyToModeV3'
        registries:
          items:
            type: string
          type: array
      required:
      - mode
      type: object
    LifecycleRuleCriteriaConfigV3:
      properties:
        unit:
          $ref: '#/components/schemas/LifecycleRuleCriteriaUnitV3'
        value:
          format: int64
          type: integer
      type: object
    LifecycleRuleCriteriaItemV3:
      properties:
        config:
          $ref: '#/components/schemas/LifecycleRuleCriteriaConfigV3'
        type:
          $ref: '#/components/schemas/LifecycleRuleCriteriaTypeV3'
      required:
      - type
      - config
      type: object
    LifecycleRuleCriteriaMatchV3:
      enum:
      - ANY
      - ALL
      type: string
    LifecycleRuleCriteriaTypeV3:
      enum:
      - KEEP_LAST_N
      - AGE_BASED
      - UNUSED_FOR
      type: string
    LifecycleRuleCriteriaUnitV3:
      enum:
      - DAYS
      - MONTHS
      - YEARS
      type: string
    LifecycleRuleCriteriaV3:
      properties:
        match:
          $ref: '#/components/schemas/LifecycleRuleCriteriaMatchV3'
        rules:
          items:
            $ref: '#/components/schemas/LifecycleRuleCriteriaItemV3'
          type: array
      required:
      - match
      - rules
      type: object
    LifecycleRuleFilterConfigDockerV3:
      description: Filter configuration for DOCKER package type.
      properties:
        packageNameAllowedPattern:
          description: Glob patterns for image names to include (e.g. "my-app*").
          items:
            type: string
          type: array
        packageType:
          enum:
          - DOCKER
          type: string
        tagNameAllowedPattern:
          description: Glob patterns for tag names to include (e.g. "v1.*").
          items:
            type: string
          type: array
      required:
      - packageType
      type: object
    LifecycleRuleFilterConfigGenericV3:
      description: |
        Filter configuration for package types that support only name and version filtering: PYTHON, HELM, NPM, NUGET, RPM, CARGO, COMPOSER, GO, CONDA, DART, SWIFT, PUPPET, RUBY, RAW, GENERIC.
      properties:
        packageNameAllowedPattern:
          description: Glob patterns for package names to include.
          items:
            type: string
          type: array
        packageType:
          description: |
            Package type. One of: PYTHON, HELM, NPM, NUGET, RPM, CARGO, COMPOSER, GO, CONDA, DART, SWIFT, PUPPET, RUBY, RAW, GENERIC.
          type: string
        versionNameAllowedPattern:
          description: Glob patterns for version strings to include.
          items:
            type: string
          type: array
      required:
      - packageType
      type: object
    LifecycleRuleFilterConfigHuggingFaceV3:
      description: Filter configuration for HUGGINGFACE package type.
      properties:
        datasetAllowedPattern:
          description: Glob patterns for dataset names to include.
          items:
            type: string
          type: array
        modelAllowedPattern:
          description: Glob patterns for model names to include.
          items:
            type: string
          type: array
        packageType:
          enum:
          - HUGGINGFACE
          type: string
        versionNameAllowedPattern:
          description: Glob patterns for version/revision names to include.
          items:
            type: string
          type: array
      required:
      - packageType
      type: object
    LifecycleRuleFilterConfigMavenV3:
      description: Filter configuration for MAVEN package type.
      properties:
        groupIdAllowedPattern:
          description: Glob patterns for Maven group IDs to include (e.g. "com.example.*").
          items:
            type: string
          type: array
        packageNameAllowedPattern:
          description: Glob patterns for artifact IDs to include.
          items:
            type: string
          type: array
        packageType:
          enum:
          - MAVEN
          type: string
        versionNameAllowedPattern:
          description: Glob patterns for version strings to include (e.g. "*-SNAPSHOT").
          items:
            type: string
          type: array
      required:
      - packageType
      type: object
    LifecycleRuleFilterConfigV3:
      description: |
        Filter configuration for a lifecycle rule, discriminated by packageType. Set packageType to select the correct variant: DOCKER, MAVEN, HUGGINGFACE, or any other supported type (generic variant).
      discriminator:
        mapping:
          DOCKER: '#/components/schemas/LifecycleRuleFilterConfigDockerV3'
          HUGGINGFACE: '#/components/schemas/LifecycleRuleFilterConfigHuggingFaceV3'
          MAVEN: '#/components/schemas/LifecycleRuleFilterConfigMavenV3'
        propertyName: packageType
      oneOf:
      - $ref: '#/components/schemas/LifecycleRuleFilterConfigDockerV3'
      - $ref: '#/components/schemas/LifecycleRuleFilterConfigMavenV3'
      - $ref: '#/components/schemas/LifecycleRuleFilterConfigHuggingFaceV3'
      - $ref: '#/components/schemas/LifecycleRuleFilterConfigGenericV3'
    LifecycleRulePatchBodyV3:
      description: Partial update body for a lifecycle rule. Only provided fields
        are updated.
      properties:
        action:
          $ref: '#/components/schemas/LifecycleRuleActionV3'
        applyTo:
          $ref: '#/components/schemas/LifecycleRuleApplyToV3'
        criteria:
          $ref: '#/components/schemas/LifecycleRuleCriteriaV3'
        description:
          type: string
        enabled:
          description: Enable or disable the lifecycle rule.
          type: boolean
        filterConfig:
          $ref: '#/components/schemas/LifecycleRuleFilterConfigV3'
        name:
          type: string
        packageType:
          type: string
        schedule:
          $ref: '#/components/schemas/LifecycleRuleScheduleV3'
      type: object
    LifecycleRuleRequestBodyV3:
      properties:
        action:
          $ref: '#/components/schemas/LifecycleRuleActionV3'
        applyTo:
          $ref: '#/components/schemas/LifecycleRuleApplyToV3'
        criteria:
          $ref: '#/components/schemas/LifecycleRuleCriteriaV3'
        description:
          type: string
        filterConfig:
          $ref: '#/components/schemas/LifecycleRuleFilterConfigV3'
        name:
          type: string
        packageType:
          type: string
        schedule:
          $ref: '#/components/schemas/LifecycleRuleScheduleV3'
      required:
      - name
      - action
      - applyTo
      type: object
    LifecycleRuleResponseV3:
      properties:
        action:
          $ref: '#/components/schemas/LifecycleRuleActionV3'
        applyTo:
          $ref: '#/components/schemas/LifecycleRuleApplyToV3'
        createdAt:
          format: int64
          type: integer
        createdBy:
          $ref: '#/components/schemas/UserInfoV3'
        criteria:
          $ref: '#/components/schemas/LifecycleRuleCriteriaV3'
        description:
          type: string
        enabled:
          description: Whether the lifecycle rule is currently enabled.
          type: boolean
        filterConfig:
          $ref: '#/components/schemas/LifecycleRuleFilterConfigV3'
        hasLocalAssignment:
          description: Whether the lifecycle rule has at least one assignment with
            parent_id matching the filter's ParentID.
          type: boolean
        id:
          type: string
        lastRunAt:
          description: Epoch milliseconds of the last execution, if any.
          format: int64
          type: integer
        name:
          type: string
        nextRunAt:
          description: Epoch milliseconds of the next scheduled execution, if any.
          format: int64
          type: integer
        orgIdentifier:
          $ref: '#/components/schemas/orgIdentifier'
        packageType:
          type: string
        projectIdentifier:
          $ref: '#/components/schemas/projectIdentifier'
        schedule:
          $ref: '#/components/schemas/LifecycleRuleScheduleV3'
        updatedAt:
          format: int64
          type: integer
        updatedBy:
          $ref: '#/components/schemas/UserInfoV3'
      required:
      - id
      - name
      - action
      - applyTo
      - enabled
      - hasLocalAssignment
      type: object
    LifecycleRuleScheduleV3:
      properties:
        expression:
          type: string
        timezone:
          type: string
      required:
      - expression
      - timezone
      type: object
    LifecycleStatsResponseV3:
      description: Aggregate lifecycle execution metrics for the requested scope.
      properties:
        artifactsCleaned:
          description: Total artifact versions deleted across all executions.
          format: int64
          type: integer
        executionsLast30Days:
          description: Number of executions that ran in the last 30 days.
          format: int64
          type: integer
        storageReclaimed:
          description: Total storage reclaimed (bytes) across all executions.
          type: string
      required:
      - storageReclaimed
      - artifactsCleaned
      - executionsLast30Days
      type: object
    ListArtifact:
      description: A list of Artifacts
      properties:
        artifacts:
          description: A list of Artifact
          items:
            $ref: '#/components/schemas/ArtifactMetadata'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - artifacts
      type: object
    ListArtifactLabel:
      description: A list of Harness Artifact Labels
      properties:
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        labels:
          items:
            type: string
          type: array
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - labels
      type: object
    ListArtifactVersion:
      description: A list of Artifact versions
      properties:
        artifactVersions:
          description: A list of Artifact versions
          items:
            $ref: '#/components/schemas/ArtifactVersionMetadata'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - artifacts
      type: object
    ListConanPackageRevisionsResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/ConanPackageRevisionDetailV3'
            type: array
        required:
        - items
        type: object
      description: The package revisions (PREVs) of a Conan package.
    ListConanPackagesResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/ConanPackageMetadataV3'
            type: array
        required:
        - items
        type: object
      description: The packages (PKGIDs) of a Conan recipe revision.
    ListConanRecipeRevisionsResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/ConanRecipeRevisionDetailV3'
            type: array
        required:
        - items
        type: object
      description: The recipe revisions (RREVs) of a Conan version.
    ListFileDetail:
      description: A list of Harness Artifact Files
      properties:
        files:
          description: A list of Harness Artifact Files
          items:
            $ref: '#/components/schemas/FileDetail'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - files
      type: object
    ListFilesResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/FileMetadataV3'
            type: array
          meta:
            $ref: '#/components/schemas/MetaV3'
        required:
        - items
        type: object
    ListFilterOptionsResponseBodyV3:
      description: |
        Response body for `GET /filters/options`. Returns the set of
        selectable values for a single filter. The list is bounded
        server-side; `search_term` narrows it in place of pagination.
      properties:
        options:
          description: Selectable values for the requested filter.
          items:
            $ref: '#/components/schemas/FilterOptionV3'
          type: array
      required:
      - options
      type: object
    ListFiltersResponseBodyV3:
      description: |
        Response body for a list filters query. Contains a single merged
        list of filter definitions — static filters (from configuration)
        followed by dynamic metadata filters (one per user-defined
        metadata key, identified by `metadata.<key>`). The list is
        capped server-side (currently at 100 dynamic entries) and is not
        paginated; `search_term` narrows both static and dynamic
        entries.
      properties:
        filters:
          description: |
            Combined filter definitions available for the requested
            `resource_type`, in a stable order: static filters first
            (in configured order), followed by dynamic metadata filters.
          items:
            $ref: '#/components/schemas/FilterDefinitionV3'
          type: array
      required:
      - filters
      type: object
    ListFirewallExceptionsResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/FirewallExceptionResponseV3'
            type: array
          meta:
            $ref: '#/components/schemas/FirewallExceptionMetaV3'
        required:
        - items
        type: object
    ListLifecycleExecutionItemsResponseV3:
      properties:
        hasMore:
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/LifecycleExecutionItemResponseV3'
          type: array
        page:
          format: int64
          type: integer
        size:
          format: int64
          type: integer
      required:
      - items
      - hasMore
      - page
      - size
      type: object
    ListLifecycleExecutionsResponseBodyV3:
      properties:
        hasMore:
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/LifecycleExecutionResponseV3'
          type: array
        page:
          format: int64
          type: integer
        size:
          format: int64
          type: integer
      required:
      - items
      - hasMore
      - page
      - size
      type: object
    ListLifecycleRulesResponseBodyV3:
      properties:
        hasMore:
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/LifecycleRuleResponseV3'
          type: array
        page:
          format: int64
          type: integer
        size:
          format: int64
          type: integer
      required:
      - items
      - hasMore
      - page
      - size
      type: object
    ListMetadataKeysResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              description: A unique metadata key name
              type: string
            type: array
        required:
        - items
        type: object
    ListMetadataValuesResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              description: A unique value for the specified metadata key
              type: string
            type: array
        required:
        - items
        type: object
    ListMigrationImage:
      description: A list of migration images
      properties:
        images:
          description: A list of Artifact versions
          items:
            $ref: '#/components/schemas/MigrationImage'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - pageCount
      - itemCount
      - pageSize
      - pageIndex
      - images
      type: object
    ListOciArtifactTags:
      description: A list of Artifact versions
      properties:
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        ociArtifactTags:
          description: A list of OCI Artifact tags
          items:
            $ref: '#/components/schemas/OciArtifactTag'
          type: array
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - ociArtifactTags
      type: object
    ListPackage:
      description: A list of Package
      properties:
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        meta:
          $ref: '#/components/schemas/Meta'
        packages:
          description: A list of Package
          items:
            $ref: '#/components/schemas/PackageMetadata'
          type: array
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - packages
      - meta
      type: object
    ListPackageTypeConfigsResponseBodyV3:
      description: |
        Response body for `GET /config/package-types`. Returns one entry
        per known package type, or per requested `package_types` when the
        filter is used. The list is bounded server-side to the set of
        registered package types and is not paginated.
      properties:
        packageTypeConfigs:
          description: Per-package-type UI configuration, one entry per package type.
          items:
            $ref: '#/components/schemas/PackageTypeConfigV3'
          type: array
      required:
      - packageTypeConfigs
      type: object
    ListPackagesResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/PackageV3'
            type: array
          meta:
            $ref: '#/components/schemas/MetaV3'
        required:
        - items
        type: object
    ListPipelineBuildInfoDetailsResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          meta:
            $ref: '#/components/schemas/PipelineBuildInfoMetaV3'
          pipelineData:
            description: Pipeline build info details
            items:
              $ref: '#/components/schemas/PipelineBuildInfoDetailV3'
            type: array
        required:
        - pipelineData
        - meta
        type: object
    ListPrincipalsResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/PrincipalV3'
            type: array
        required:
        - items
        type: object
    ListRegistriesResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/RegistryV3'
            type: array
          meta:
            $ref: '#/components/schemas/MetaV3'
        required:
        - items
        type: object
    ListRegistry:
      description: A list of Harness Artifact Registries
      properties:
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        meta:
          $ref: '#/components/schemas/Meta'
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
        registries:
          description: A list of Harness Artifact Registries
          items:
            $ref: '#/components/schemas/RegistryMetadata'
          type: array
      required:
      - registries
      - meta
      type: object
    ListRegistryArtifact:
      description: A list of Artifacts
      properties:
        artifacts:
          description: A list of Artifact
          items:
            $ref: '#/components/schemas/RegistryArtifactMetadata'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - artifacts
      type: object
    ListReplicationRule:
      description: A list of replication rules
      properties:
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 10
          type: integer
        rules:
          description: A list of Replication Rules
          items:
            $ref: '#/components/schemas/ReplicationRule'
          type: array
      required:
      - pageCount
      - itemCount
      - pageSize
      - pageIndex
      - rules
      type: object
    ListSigningKeysResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/SigningKeyV3'
            type: array
        required:
        - items
        type: object
      description: Paginated list of signing keys
    ListVersion:
      description: A list of Versions
      properties:
        artifacts:
          description: A list of Versions
          items:
            $ref: '#/components/schemas/VersionMetadata'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        meta:
          $ref: '#/components/schemas/Meta'
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - artifacts
      - meta
      type: object
    ListVersionDeploymentsResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            description: List of deployment records.
            items:
              $ref: '#/components/schemas/VersionDeploymentV3'
            type: array
          meta:
            $ref: '#/components/schemas/DeploymentMetadataV3'
        required:
        - items
        type: object
    ListVersionsResponseBodyV3:
      allOf:
      - $ref: '#/components/schemas/PageInfoV3'
      - properties:
          items:
            items:
              $ref: '#/components/schemas/VersionV3'
            type: array
          meta:
            $ref: '#/components/schemas/MetaV3'
        required:
        - items
        type: object
    ListWebhooks:
      description: A list of Harness Registries webhooks
      properties:
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
        webhooks:
          description: A list of Registries webhooks
          items:
            $ref: '#/components/schemas/Webhook'
          type: array
      required:
      - webhooks
      type: object
    ListWebhooksExecutions:
      description: A list of Harness Registries webhooks executions
      properties:
        executions:
          description: A list of Registries webhooks executions
          items:
            $ref: '#/components/schemas/WebhookExecution'
          type: array
        itemCount:
          description: The total number of items
          example: 1
          format: int64
          type: integer
        pageCount:
          description: The total number of pages
          example: 100
          format: int64
          type: integer
        pageIndex:
          description: The current page
          example: 0
          format: int64
          type: integer
        pageSize:
          description: The number of items per page
          example: 1
          type: integer
      required:
      - executions
      type: object
    LocalReplicationRegistry:
      properties:
        registryIdentifier:
          type: string
      required:
      - registryIdentifier
      type: object
    MaliciousPackagePolicyFailureDetailConfigV3:
      description: Malicious package failure detail payload.
      properties:
        blockedPackage:
          description: The blocked package identifier (purl).
          type: string
        message:
          description: Human-readable message describing the violation.
          type: string
        reason:
          description: The reason the package is blocked.
          type: string
      required:
      - blockedPackage
      - reason
      - message
      type: object
    MavenArtifactDetailConfig:
      description: Config for maven artifact details
      properties:
        artifactId:
          type: string
        groupId:
          type: string
      type: object
    Meta:
      description: Metadata about the list response
      properties:
        activeCount:
          description: Count of active (non-deleted) entities
          example: 95
          format: int64
          type: integer
        deletedCount:
          description: Count of soft-deleted entities
          example: 5
          format: int64
          type: integer
      required:
      - activeCount
      - deletedCount
      type: object
    MetaV3:
      description: Metadata about the list response
      properties:
        activeCount:
          description: Count of active (non-deleted) entities
          example: 95
          format: int64
          type: integer
        deletedCount:
          description: Count of soft-deleted entities
          example: 5
          format: int64
          type: integer
      required:
      - activeCount
      - deletedCount
      type: object
    MetadataInput:
      description: |
        Request payload containing metadata items to add or update for a specific entity.

        **Priority Logic:**
        1. If `path` is present, it takes highest priority and determines the target entity
        2. If `path` is absent but `package` and `version` are provided, metadata is attached to the specific package version
        3. If only `package` is provided (without `version`), metadata is attached to the package level
        4. If neither `path`, `package`, nor `version` are provided, metadata is attached to the registry level
      example:
        metadata:
        - key: environment
          value: production
        - key: team
          value: backend
        package: my-package
        path: /path/to/entity
        registryIdentifier: my-registry
        version: 1.0.0
      properties:
        artifactKeyFilters:
          additionalProperties:
            type: string
          type: object
        metadata:
          description: Array of metadata key-value pairs
          items:
            $ref: '#/components/schemas/MetadataItemInput'
          maxItems: 50
          minItems: 1
          type: array
        package:
          description: |
            Optional package name. Used when `path` is not provided.
          example: my-package
          type: string
        path:
          description: |
            Optional hierarchical path to the specific entity within the registry.
            When provided, this takes highest priority for determining the metadata target.
            Examples: "/my-package/1.0.0" for a specific version, "/my-package" for an package
          example: /path/to/entity
          type: string
        registryIdentifier:
          description: |
            The unique identifier of the registry where the metadata will be applied.
          example: my-registry
          type: string
        version:
          description: |
            Optional version identifier. Only used when `package` is also provided and `path` is absent.
            When both `package` and `version` are specified, metadata is attached to the specific package version.
          example: 1.0.0
          type: string
      required:
      - metadata
      - registryIdentifier
      type: object
    MetadataInputV3:
      description: |
        Request payload containing metadata key-value pairs to add or update.
      example:
        metadata:
        - key: environment
          value: production
        - key: team
          value: backend
      properties:
        metadata:
          description: Array of metadata key-value pairs
          items:
            $ref: '#/components/schemas/MetadataItemInputV3'
          maxItems: 50
          minItems: 1
          type: array
      required:
      - metadata
      type: object
    MetadataItemInput:
      description: Metadata key-value pair for create/update operations
      properties:
        key:
          description: The metadata key name (case-sensitive)
          example: environment
          maxLength: 128
          minLength: 1
          type: string
        value:
          description: The metadata value
          example: production
          maxLength: 256
          minLength: 1
          type: string
      required:
      - key
      - value
      type: object
    MetadataItemInputV3:
      description: Metadata key-value pair for create/update operations
      properties:
        key:
          description: The metadata key name (case-sensitive)
          example: environment
          maxLength: 128
          minLength: 1
          type: string
        value:
          description: The metadata value
          example: production
          maxLength: 256
          minLength: 1
          type: string
      required:
      - key
      - value
      type: object
    MetadataItemOutput:
      description: Metadata entry
      properties:
        id:
          description: Unique identifier for this metadata entry
          example: 1xyv567fyb9
          type: string
        key:
          description: The metadata key name
          example: environment
          type: string
        type:
          $ref: '#/components/schemas/MetadataType'
        value:
          description: The metadata value
          example: production
          type: string
      required:
      - id
      - key
      - value
      - type
      type: object
    MetadataOutput:
      description: Response containing all metadata entries for an entity
      example:
        metadata:
        - id: fv12vr45rvr78gvrg
          key: environment
          type: MANUAL
          value: production
        - id: hdcd632fve987fnveh21
          key: created_at
          type: AUTO
          value: "2023-10-31T14:30:00Z"
      properties:
        metadata:
          description: Array of metadata entries
          items:
            $ref: '#/components/schemas/MetadataItemOutput'
          type: array
      required:
      - metadata
      type: object
    MetadataType:
      description: Indicates if metadata was manually added (MANUAL) or system-generated
        (AUTO)
      enum:
      - MANUAL
      - AUTO
      example: MANUAL
      type: string
    MetadataTypeV3:
      description: Indicates if metadata was manually added (MANUAL) or system-generated
        (AUTO)
      enum:
      - MANUAL
      - AUTO
      type: string
    MetadataV3:
      description: Metadata entry
      properties:
        id:
          description: Unique identifier for this metadata entry
          format: uuid
          type: string
        key:
          description: The metadata key name
          example: environment
          type: string
        type:
          $ref: '#/components/schemas/MetadataTypeV3'
        value:
          description: The metadata value
          example: production
          type: string
      required:
      - id
      - key
      - value
      - type
      type: object
    MigrationImage:
      properties:
        imageId:
          type: string
        imageTag:
          type: string
        progress:
          type: integer
        status:
          type: string
      type: object
    MigrationLog:
      properties:
        message:
          type: string
        timestamp:
          type: string
      type: object
    ModifiedAtMsV3:
      description: Unix timestamp in milliseconds when the resource was last modified
      example: 1736360000123
      format: int64
      nullable: true
      type: integer
    NpmArtifactDetailConfig:
      description: Config for npm artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    NugetArtifactDetailConfig:
      description: Config for nuget artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    OciArtifactTag:
      description: OCI Artifact Tag info
      properties:
        digest:
          type: string
        name:
          type: string
      required:
      - name
      - digest
      type: object
    OssRiskLevelPolicyFailureDetailConfigV3:
      description: OSS risk level-specific failure detail payload.
      properties:
        ossRiskLevel:
          description: oss risk level
          type: string
        ossRiskScore:
          description: oss risk level
          format: double
          type: number
      required:
      - ossRiskLevel
      type: object
    PackageAgeViolationPolicyFailureDetailConfigV3:
      description: Package age violation failure detail payload.
      properties:
        packageAgeThreshold:
          description: Package age threshold.
          type: string
        publishedOn:
          description: Package publish date.
          type: string
      required:
      - publishedOn
      - packageAgeThreshold
      type: object
    PackageKindV3:
      description: refers to package kind which is being used in huggingface packages
        for model, dataset and terraform packages for module, provider
      example: model
      type: string
    PackageMetadata:
      description: Package Metadata
      properties:
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        deletedAt:
          description: Timestamp in milliseconds when the registry was soft-deleted
          type: string
        deletedBy:
          $ref: '#/components/schemas/PerformedBy'
        downloadsCount:
          format: int64
          type: integer
        isPublic:
          type: boolean
        isQuarantined:
          type: boolean
        lastModified:
          type: string
        latestVersion:
          type: string
        latestVersionArtifactKey:
          additionalProperties: true
          type: object
        package:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        quarantineReason:
          type: string
        registryIdentifier:
          type: string
        registryUUID:
          type: string
        uuid:
          type: string
      required:
      - package
      - registryIdentifier
      - packageType
      - isPublic
      - latestVersion
      - uuid
      - registryUUID
      type: object
    PackageStatsV3:
      description: Statistics for a single package
      properties:
        artifactsCount:
          description: Total number of artifacts/versions in the package
          format: int64
          type: integer
        downloadCount:
          description: Total download count for the package
          format: int64
          type: integer
        id:
          description: Package UUID
          format: uuid
          type: string
        size:
          description: Total size of the package (human-readable format)
          type: string
      required:
      - id
      type: object
    PackageType:
      description: refers to package
      enum:
      - DOCKER
      - MAVEN
      - PYTHON
      - GENERIC
      - HELM
      - NUGET
      - NPM
      - RPM
      - CARGO
      - COMPOSER
      - GO
      - HUGGINGFACE
      - CONDA
      - DART
      - SWIFT
      - PUPPET
      - RUBY
      - CRAN
      - WOLFI
      - ALPINE
      - RAW
      - HELM_HTTP
      - DEBIAN
      - CONAN
      - TERRAFORM
      - TERRAFORM_BACKEND
      type: string
    PackageTypeCapabilitiesV3:
      description: |
        Generic, extensible capability flags for a package type. New flags
        may be added over time without a breaking change; clients must
        ignore capability fields they do not recognize.
      properties:
        resourceCacheTtlEnabled:
          description: |
            Whether the upstream resource-cache TTL feature (metadata cache
            TTL and negative cache TTL) is currently active for this package
            type in this account. True only when the package type supports
            resource caching and the feature is enabled for the account.
          type: boolean
      required:
      - resourceCacheTtlEnabled
      type: object
    PackageTypeConfigV3:
      description: Per-package-type UI configuration and capability flags.
      properties:
        capabilities:
          $ref: '#/components/schemas/PackageTypeCapabilitiesV3'
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
      required:
      - packageType
      - capabilities
      type: object
    PackageTypeV3:
      description: |
        Package type. Known values include: DOCKER, MAVEN, PYTHON, GENERIC, HELM, HELM_HTTP, NUGET, NPM, RPM, CARGO, COMPOSER, GO, HUGGINGFACE, CONDA, DART, SWIFT, PUPPET, RUBY, RAW, DEBIAN, CONAN, TERRAFORM, TERRAFORM_BACKEND, CRAN, WOLFI, ALPINE. This field is extensible; clients must handle unknown values.
      example: DOCKER
      type: string
      x-extensible-enum:
      - DOCKER
      - MAVEN
      - PYTHON
      - GENERIC
      - HELM
      - HELM_HTTP
      - NUGET
      - NPM
      - RPM
      - CARGO
      - COMPOSER
      - GO
      - HUGGINGFACE
      - CONDA
      - DART
      - SWIFT
      - PUPPET
      - RUBY
      - RAW
      - DEBIAN
      - CONAN
      - TERRAFORM
      - TERRAFORM_BACKEND
      - CRAN
      - WOLFI
      - ALPINE
    PackageV3:
      description: Package Metadata
      properties:
        deletedAt:
          $ref: '#/components/schemas/DeletedAtMsV3'
        deletedBy:
          $ref: '#/components/schemas/UserInfoV3'
        id:
          format: uuid
          type: string
        isPublic:
          type: boolean
        isQuarantined:
          type: boolean
        latestVersion:
          type: string
        latestVersionArtifactKey:
          additionalProperties: true
          type: object
        metadata:
          $ref: '#/components/schemas/ResourceMetadataV3'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAtMsV3'
        modifiedBy:
          $ref: '#/components/schemas/UserInfoV3'
        name:
          type: string
        orgIdentifier:
          $ref: '#/components/schemas/orgIdentifier'
        packageKind:
          $ref: '#/components/schemas/PackageKindV3'
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        projectIdentifier:
          $ref: '#/components/schemas/projectIdentifier'
        quarantineReason:
          type: string
        registryId:
          format: uuid
          type: string
        registryName:
          type: string
      required:
      - id
      - name
      - packageType
      - registryId
      - registryName
      - isPublic
      - latestVersion
      type: object
    PackagesStatsRequestInputV3:
      description: Request input for fetching package statistics
      properties:
        packageIds:
          description: List of package UUIDs to fetch statistics for
          items:
            format: uuid
            type: string
          maxItems: 100
          type: array
      required:
      - packageIds
      type: object
    PackagesStatsResponseBodyV3:
      description: Response body containing package statistics
      properties:
        items:
          description: List of package statistics
          items:
            $ref: '#/components/schemas/PackageStatsV3'
          type: array
      required:
      - items
      type: object
    PageInfoV3:
      description: |
        Pagination metadata.
        - `page` selects which page of results to return (0 = first page).
        - `size` controls how many items are returned per page.
        - `hasMore` is true if more results exist after this page.
      properties:
        hasMore:
          description: True if more results exist after this page.
          example: true
          type: boolean
        page:
          description: The current page (0-indexed)
          example: 0
          format: int64
          type: integer
        size:
          description: Number of items per page
          example: 20
          format: int64
          type: integer
      required:
      - page
      - size
      - hasMore
      type: object
    PerformedBy:
      description: Principal who performed the relevant action
      properties:
        email:
          type: string
        name:
          type: string
      required:
      - name
      - email
      type: object
    PipelineBuildInfoDetailV3:
      description: Pipeline build info detail entry.
      properties:
        lastExecutionTime:
          description: Unix timestamp (milliseconds) when the pipeline execution was
            last executed.
          format: int64
          type: integer
        orgIdentifier:
          description: Organization identifier.
          type: string
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        pipelineExecutionIdentifier:
          description: Pipeline execution identifier.
          type: string
        pipelineIdentifier:
          description: Pipeline identifier.
          type: string
        projectIdentifier:
          description: Project identifier.
          type: string
        rootPackageName:
          description: Name of the root package.
          type: string
        rootPackageVersion:
          description: Version of the root package.
          type: string
        securityViolationCategories:
          description: Policy failure categories.
          items:
            $ref: '#/components/schemas/PolicyFailureDetailCategoryV3'
          type: array
        stageIdentifier:
          description: Stage identifier.
          type: string
        stepIdentifier:
          description: Step identifier.
          type: string
        violations:
          description: Map of package key to scan ID.
          items:
            $ref: '#/components/schemas/PipelineBuildInfoViolationV3'
          type: array
      required:
      - pipelineIdentifier
      - orgIdentifier
      - projectIdentifier
      - stageIdentifier
      - stepIdentifier
      - violations
      - rootPackageName
      - rootPackageVersion
      - packageType
      - securityViolationCategories
      type: object
    PipelineBuildInfoMetaV3:
      description: Aggregated metadata for pipeline build info results.
      properties:
        totalBlockedDependencies:
          description: Total number of blocked dependencies.
          format: int64
          type: integer
        totalBlockedPipelines:
          description: Total number of blocked pipelines.
          format: int64
          type: integer
      type: object
    PipelineBuildInfoViolationV3:
      description: A violation entry mapping a package key to a scan ID.
      properties:
        package:
          description: Package name and version (package@version).
          type: string
        purl:
          description: Package URL.
          type: string
        scanId:
          description: Scan identifier.
          type: string
        securityViolationCategories:
          description: Policy failure categories.
          items:
            $ref: '#/components/schemas/PolicyFailureDetailCategoryV3'
          type: array
        status:
          description: Scan status
          enum:
          - BLOCKED
          - WARN
          type: string
      required:
      - package
      - scanId
      - status
      - purl
      - securityViolationCategories
      type: object
    PipelineContextV3:
      description: Pipeline execution context.
      properties:
        executionId:
          description: Execution identifier.
          type: string
        orgId:
          description: Organization identifier.
          type: string
        pipelineId:
          description: Pipeline identifier.
          type: string
        projectId:
          description: Project identifier.
          type: string
        stageId:
          description: Stage identifier.
          type: string
        stepId:
          description: Step identifier.
          type: string
      required:
      - pipelineId
      - executionId
      - orgId
      - projectId
      - stageId
      type: object
    PolicyFailureDetailCategoryV3:
      description: Policy failure detail category.
      enum:
      - Security
      - License
      - MaliciousPackage
      - PackageAge
      - OssRiskLevel
      - Unknown
      type: string
    PolicyFailureDetailV3:
      description: Policy failure detail entry.
      discriminator:
        mapping:
          License: '#/components/schemas/LicensePolicyFailureDetailConfigV3'
          MaliciousPackage: '#/components/schemas/MaliciousPackagePolicyFailureDetailConfigV3'
          OssRiskLevel: '#/components/schemas/OssRiskLevelPolicyFailureDetailConfigV3'
          PackageAge: '#/components/schemas/PackageAgeViolationPolicyFailureDetailConfigV3'
          Security: '#/components/schemas/SecurityPolicyFailureDetailConfigV3'
        propertyName: category
      oneOf:
      - $ref: '#/components/schemas/SecurityPolicyFailureDetailConfigV3'
      - $ref: '#/components/schemas/LicensePolicyFailureDetailConfigV3'
      - $ref: '#/components/schemas/MaliciousPackagePolicyFailureDetailConfigV3'
      - $ref: '#/components/schemas/PackageAgeViolationPolicyFailureDetailConfigV3'
      - $ref: '#/components/schemas/OssRiskLevelPolicyFailureDetailConfigV3'
      properties:
        category:
          $ref: '#/components/schemas/PolicyFailureDetailCategoryV3'
        policyName:
          description: Policy name.
          type: string
        policyRef:
          description: Policy Ref.
          type: string
      required:
      - category
      - policyName
      - policyRef
      type: object
    PolicySetFailureDetailV3:
      description: Policy set failure detail entry.
      properties:
        policyFailureDetails:
          items:
            $ref: '#/components/schemas/PolicyFailureDetailV3'
          type: array
        policySetName:
          description: Policy set name.
          type: string
        policySetRef:
          description: Policy set reference.
          type: string
      required:
      - policySetRef
      - policySetName
      - policyFailureDetails
      type: object
    PolicySetsV3:
      description: List of opa policy sets.
      items:
        properties:
          policySetName:
            description: Policy Set name
            type: string
          policySetRef:
            description: 'Unique reference for the opa policy set. Example: `my-policy`
              or `account.my-policy`'
            type: string
        required:
        - policySetRef
        - policySetName
        type: object
      type: array
    PrincipalTypeV3:
      description: |
        Principal type. Known values include: USER.
      enum:
      - USER
      example: USER
      type: string
    PrincipalV3:
      description: Principal information (user or service account)
      properties:
        createdAt:
          $ref: '#/components/schemas/ModifiedAtMsV3'
        displayName:
          example: John Doe
          type: string
        email:
          type: string
        id:
          example: 123
          format: int64
          type: integer
        type:
          $ref: '#/components/schemas/PrincipalTypeV3'
        uid:
          type: string
        updatedAt:
          $ref: '#/components/schemas/ModifiedAtMsV3'
      required:
      - id
      - type
      - uid
      - createdAt
      - updatedAt
    PuppetArtifactDetailConfig:
      description: Config for puppet artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    PythonArtifactDetailConfig:
      description: Config for python artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    RebuildPackageIndexRequestV3:
      description: Request to rebuild the package index for a single package
      properties:
        packageId:
          description: UUID of the package to rebuild the index for
          type: string
      required:
      - packageId
      type: object
    RebuildVersionMetadataRequestV3:
      description: Request to rebuild metadata for all versions in a registry
      properties:
        registryId:
          description: UUID of the registry to rebuild metadata for
          type: string
      required:
      - registryId
      type: object
    RegistriesStatsRequestInputV3:
      description: Request input for fetching registry statistics
      properties:
        registryIds:
          description: List of registry UUIDs to fetch statistics for
          items:
            format: uuid
            type: string
          maxItems: 100
          type: array
      required:
      - registryIds
      type: object
    RegistriesStatsResponseBodyV3:
      description: Response body containing registry statistics
      properties:
        items:
          description: List of registry statistics
          items:
            $ref: '#/components/schemas/RegistryStatsV3'
          type: array
      required:
      - items
      type: object
    Registry:
      description: Harness Artifact Registry
      properties:
        allowedPattern:
          items:
            type: string
          type: array
        blockedPattern:
          items:
            type: string
          type: array
        cleanupPolicy:
          items:
            $ref: '#/components/schemas/CleanupPolicy'
          type: array
        config:
          $ref: '#/components/schemas/RegistryConfig'
        createdAt:
          type: string
        deletedAt:
          description: Timestamp in milliseconds when the registry was soft-deleted.
            Null if not deleted.
          type: string
        description:
          type: string
        identifier:
          type: string
        isInternal:
          description: Indicates that the registry is system-managed.
          type: boolean
        isPublic:
          type: boolean
        labels:
          items:
            type: string
          type: array
        modifiedAt:
          type: string
        opaMetadataValidation:
          type: boolean
        packageType:
          $ref: '#/components/schemas/PackageType'
        policyRefs:
          items:
            type: string
          type: array
        scanners:
          items:
            $ref: '#/components/schemas/Scanner'
          type: array
        url:
          type: string
        uuid:
          type: string
      required:
      - name
      - identifier
      - type
      - url
      - packageType
      - isPublic
      - uuid
      type: object
    RegistryArtifactMetadata:
      description: Artifact Metadata
      properties:
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        deletedAt:
          description: Timestamp in milliseconds when the registry was soft-deleted
          type: string
        downloadsCount:
          format: int64
          type: integer
        isPublic:
          type: boolean
        isQuarantined:
          type: boolean
        labels:
          items:
            type: string
          type: array
        lastModified:
          type: string
        latestVersion:
          type: string
        name:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        registryIdentifier:
          type: string
        registryPath:
          type: string
        registryUUID:
          type: string
        uuid:
          type: string
      required:
      - name
      - registryIdentifier
      - latestVersion
      - registryPath
      - packageType
      - isPublic
      - uuid
      - registryUUID
      type: object
    RegistryConfig:
      description: SubConfig specific for Virtual or Upstream Registry
      discriminator:
        mapping:
          UPSTREAM: '#/components/schemas/UpstreamConfig'
          VIRTUAL: '#/components/schemas/VirtualConfig'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/VirtualConfig'
      - $ref: '#/components/schemas/UpstreamConfig'
      properties:
        type:
          $ref: '#/components/schemas/RegistryType'
      required:
      - type
      type: object
    RegistryMetadata:
      description: Harness Artifact Registry Metadata
      properties:
        artifactsCount:
          format: int64
          type: integer
        deletedAt:
          description: Timestamp in milliseconds when the registry was soft-deleted
          type: string
        deletedBy:
          $ref: '#/components/schemas/PerformedBy'
        description:
          type: string
        downloadsCount:
          format: int64
          type: integer
        identifier:
          type: string
        isPublic:
          type: boolean
        lastModified:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        path:
          type: string
        registrySize:
          type: string
        type:
          $ref: '#/components/schemas/RegistryType'
        url:
          type: string
        uuid:
          type: string
      required:
      - type
      - packageType
      - identifier
      - url
      - isPublic
      - uuid
      type: object
    RegistryRequest:
      properties:
        allowedPattern:
          items:
            type: string
          type: array
        blockedPattern:
          items:
            type: string
          type: array
        cleanupPolicy:
          items:
            $ref: '#/components/schemas/CleanupPolicy'
          type: array
        config:
          $ref: '#/components/schemas/RegistryConfig'
        description:
          type: string
        identifier:
          maxLength: 72
          type: string
        isInternal:
          description: Marks a registry as internal (system-managed).
          type: boolean
        isPublic:
          type: boolean
        labels:
          items:
            type: string
          type: array
        opaMetadataValidation:
          type: boolean
        packageType:
          $ref: '#/components/schemas/PackageType'
        parentRef:
          description: |
            Reference to the scope in which the registry exists.

            Format depends on the scope:

            - **Account-level**: `account_id`
            - **Organization-level**: `account_id/org_id`
            - **Project-level**: `account_id/org_id/project_id`
          type: string
        policyRefs:
          items:
            type: string
          type: array
        scanners:
          items:
            $ref: '#/components/schemas/Scanner'
          type: array
      required:
      - identifier
      - type
      - packageType
      - isPublic
      - parentRef
      type: object
    RegistryRootsIndexBuildDataV3:
      description: Response payload returned when the registry-roots index build is
        accepted.
      properties:
        index:
          description: Name of the index this build is responsible for.
          type: string
        jobUid:
          description: UID of the job row created for this build. Poll the jobs table
            with it, or call the status endpoint.
          type: string
      required:
      - jobUid
      - index
      type: object
    RegistryRootsIndexStatusDataV3:
      description: Current state of idx_nodes_registry_roots, read from the Postgres
        catalog.
      properties:
        exists:
          type: boolean
        index:
          description: Name of the index this status describes.
          type: string
        jobResult:
          description: Result string of the most recent build job.
          type: string
        jobState:
          description: State of the most recent build job, absent if no build has
            ever been triggered.
          type: string
        valid:
          description: False for an index left INVALID by an interrupted CONCURRENTLY
            build. The planner never uses such an index, but writes still maintain
            it.
          type: boolean
      required:
      - index
      - exists
      - valid
      type: object
    RegistryStatsV3:
      description: Statistics for a single registry
      properties:
        artifactsCount:
          description: Total number of artifacts in the registry
          format: int64
          type: integer
        downloadCount:
          description: Total download count for the registry
          format: int64
          type: integer
        id:
          description: Registry UUID
          format: uuid
          type: string
        packageCount:
          description: Total number of packages in the registry
          format: int64
          type: integer
        size:
          description: Total size of the registry (human-readable format)
          type: string
      required:
      - id
      type: object
    RegistryType:
      description: refers to type of registry i.e virtual or upstream
      discriminator:
        propertyName: type
      enum:
      - VIRTUAL
      - UPSTREAM
      type: string
    RegistryTypeV3:
      description: refers to type of registry i.e virtual or upstream
      enum:
      - VIRTUAL
      - UPSTREAM
      type: string
    RegistryV3:
      description: Registry Metadata
      properties:
        deletedAt:
          $ref: '#/components/schemas/DeletedAtMsV3'
        deletedBy:
          $ref: '#/components/schemas/UserInfoV3'
        description:
          type: string
        id:
          format: uuid
          type: string
        isInternal:
          description: Indicates that the registry is internal (system-managed).
          type: boolean
        isPublic:
          type: boolean
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAtMsV3'
        modifiedBy:
          $ref: '#/components/schemas/UserInfoV3'
        name:
          type: string
        opaMetadataValidation:
          type: boolean
        orgIdentifier:
          $ref: '#/components/schemas/orgIdentifier'
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        path:
          type: string
        projectIdentifier:
          $ref: '#/components/schemas/projectIdentifier'
        type:
          $ref: '#/components/schemas/RegistryTypeV3'
        url:
          type: string
      required:
      - id
      - name
      - type
      - packageType
      - isPublic
      - url
      type: object
    ReplicationRegistry:
      oneOf:
      - $ref: '#/components/schemas/LocalReplicationRegistry'
      - $ref: '#/components/schemas/JfrogReplicationRegistry'
    ReplicationRule:
      properties:
        allowedPatterns:
          items:
            type: string
          type: array
        blockedPatterns:
          items:
            type: string
          type: array
        createdAt:
          type: string
        destination:
          $ref: '#/components/schemas/ReplicationRegistry'
        destinationType:
          enum:
          - Local
          - Jfrog
          - GCP
          type: string
        identifier:
          type: string
        modifiedAt:
          type: string
        parentRef:
          type: string
        source:
          $ref: '#/components/schemas/ReplicationRegistry'
        sourceType:
          enum:
          - Local
          - Jfrog
          - GCP
          type: string
      required:
      - identifier
      - source
      - destination
      - sourceType
      - destinationType
      - allowedPatterns
      - blockedPatterns
      - parentRef
      - modifiedAt
      - createdAt
      type: object
    ReplicationRuleRequest:
      properties:
        allowedPatterns:
          items:
            type: string
          type: array
        blockedPatterns:
          items:
            type: string
          type: array
        destination:
          $ref: '#/components/schemas/ReplicationRegistry'
        destinationType:
          enum:
          - Local
          - Jfrog
          - GCP
          type: string
        source:
          $ref: '#/components/schemas/ReplicationRegistry'
        sourceType:
          enum:
          - Local
          - Jfrog
          - GCP
          type: string
      required:
      - source
      - destination
      - sourceType
      - destinationType
      - allowedPatterns
      - blockedPatterns
      type: object
    ResourceMetadataV3:
      additionalProperties: true
      description: Resource Metadata
      type: object
    RevertFailureDetailV3:
      description: Details of a single artifact that failed to restore.
      properties:
        error:
          description: Error message describing why the restore failed.
          type: string
      required:
      - error
      type: object
    RevertLifecycleExecutionDataV3:
      description: Details of the revert operation result.
      properties:
        executionId:
          description: The execution ID that was reverted.
          type: string
        failedCount:
          description: Number of artifacts that failed to restore.
          format: int64
          type: integer
        failures:
          description: Details of failed restorations (limited to first 100).
          items:
            $ref: '#/components/schemas/RevertFailureDetailV3'
          type: array
        restoredCount:
          description: Number of artifacts successfully restored.
          format: int64
          type: integer
        skippedCount:
          description: Number of artifacts skipped (e.g., already restored or hard-deleted).
          format: int64
          type: integer
        totalDeletedItems:
          description: Total number of items with DELETED outcome in the execution.
          format: int64
          type: integer
      required:
      - executionId
      - restoredCount
      - failedCount
      - skippedCount
      - totalDeletedItems
      type: object
    RevertLifecycleExecutionResponseV3:
      description: Summary of the revert operation for a lifecycle execution.
      properties:
        data:
          $ref: '#/components/schemas/RevertLifecycleExecutionDataV3'
      required:
      - data
      type: object
    RootPackageV3:
      description: Root package of the build
      properties:
        name:
          description: Name of the root package
          type: string
        version:
          description: Version of the root package
          type: string
      required:
      - name
      - version
      type: object
    RpmArtifactDetailConfig:
      description: Config for RPM artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    RubyArtifactDetailConfig:
      description: Config for RubyGems artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    SBOMDetails:
      properties:
        allowListViolations:
          type: integer
        artifactId:
          type: string
        artifactSourceId:
          type: string
        avgScore:
          type: string
        componentsCount:
          type: integer
        denyListViolations:
          type: integer
        maxScore:
          type: string
        orchestrationId:
          type: string
        orgId:
          type: string
        projectId:
          type: string
      type: object
    SLSADetails:
      properties:
        provenanceId:
          type: string
        status:
          type: string
      type: object
    STODetails:
      properties:
        critical:
          type: integer
        executionId:
          type: string
        high:
          type: integer
        ignored:
          type: integer
        info:
          type: integer
        lastScanned:
          type: string
        low:
          type: integer
        medium:
          type: integer
        pipelineId:
          type: string
        total:
          type: integer
      type: object
    ScanMetaV3:
      description: Metadata about the list artifact scans
      properties:
        blockedCount:
          description: Count of active blocked artifacts
          example: 95
          format: int64
          type: integer
        totalCount:
          description: Count of total artifact violations
          example: 5
          format: int64
          type: integer
        warnCount:
          description: Count of active Warn artifacts
          example: 5
          format: int64
          type: integer
      type: object
    ScanStatusV3:
      description: Status of an artifact scan evaluation.
      enum:
      - ALLOWED
      - BLOCKED
      - WARN
      - UNKNOWN
      type: string
    Scanner:
      description: Scanner for Harness Artifact Registries
      properties:
        name:
          enum:
          - AQUA_TRIVY
          - GRYPE
          type: string
      type: object
    SearchRegistryFilesRequestInputV3:
      description: |
        Input for the search registry files operation. The regex is sent
        in the body so characters like `?`, `&`, `+`, `#` and `%` don't
        need URL-encoding and aren't mangled by proxies.
      properties:
        regex:
          description: |
            POSIX regular expression matched server-side against file paths. Evaluated by Postgres (`~` operator, case-sensitive). Max length 500.
          maxLength: 500
          type: string
        registry:
          description: Registry identifier (name).
          type: string
      required:
      - registry
      - regex
      type: object
    SectionType:
      description: refers to client setup section type
      discriminator:
        propertyName: type
      enum:
      - INLINE
      - TABS
      type: string
    SecurityPolicyFailureDetailConfigV3:
      description: Security-specific failure detail payload.
      properties:
        vulnerabilities:
          description: List of security violations.
          items:
            $ref: '#/components/schemas/SecurityPolicyFailureVulnerabilityV3'
          type: array
      required:
      - vulnerabilities
      type: object
    SecurityPolicyFailureVulnerabilityV3:
      description: Security violation entry.
      properties:
        cveId:
          description: CVE identifier.
          type: string
        cvssScore:
          description: CVSS score.
          format: double
          type: number
        cvssThreshold:
          description: CVSS threshold.
          format: double
          type: number
      required:
      - cveId
      - cvssScore
      - cvssThreshold
      type: object
    SigningConfig:
      description: Configuration for repository metadata signing (e.g., GPG signing
        for Debian packages)
      properties:
        keyId:
          description: UUID of the signing key to use (must be ACTIVE and belong to
            same account/org/project)
          format: uuid
          nullable: true
          type: string
        signingEnabled:
          default: false
          description: Whether signing is enabled for this registry
          type: boolean
      required:
      - signingEnabled
      type: object
    SigningKeyAlgorithmV3:
      description: |
        Underlying cryptographic algorithm of a signing key. Known values include: RSA, ED25519, ECDSA. This field is extensible; clients must handle unknown values. Note that only RSA and ED25519 can be generated; ECDSA is only observed on imported keys.
      example: RSA
      type: string
      x-extensible-enum:
      - RSA
      - ED25519
    SigningKeyStatusV3:
      description: |
        Lifecycle state of a signing key. Known values include: ACTIVE, INACTIVE (expired or manually deactivated), REVOKED (compromised), DELETED (deleted). This field is extensible; clients must handle unknown values.
      example: ACTIVE
      type: string
      x-extensible-enum:
      - ACTIVE
      - INACTIVE
      - REVOKED
      - DELETED
    SigningKeySummaryV3:
      description: |
        Aggregate signing key counts for a single scope (account, org, or project). Counts cover only the requested scope and are not rolled up from parent or child scopes.
      properties:
        expiringSoon:
          description: |
            Number of ACTIVE keys whose expiry falls within the next 30 days. Keys that never expire, and keys that have already expired, are excluded.
          example: 2
          format: int64
          type: integer
        referencedRegistries:
          description: |
            Number of registries that have a signing configuration pointing at a key in this scope, whether or not signing is currently enabled on them. Soft-deleted registries are excluded.
          example: 4
          format: int64
          type: integer
        totalKeys:
          description: |
            Total number of signing keys in the scope, including deleted keys (status DELETED).
          example: 16
          format: int64
          type: integer
      required:
      - totalKeys
      - referencedRegistries
      - expiringSoon
      type: object
    SigningKeyTypeV3:
      description: |
        Cryptographic system of a signing key. Known values include: GPG (for Debian, RPM, Alpine), RSA (for direct signing operations). This field is extensible; clients must handle unknown values.
      example: GPG
      type: string
      x-extensible-enum:
      - GPG
      - RSA
    SigningKeyV3:
      description: A signing key used for repository metadata signing (Debian, Alpine,
        etc.)
      properties:
        algorithm:
          $ref: '#/components/schemas/SigningKeyAlgorithmV3'
        createdAt:
          $ref: '#/components/schemas/CreatedAtMsV3'
        createdBy:
          $ref: '#/components/schemas/UserInfoV3'
        expirationAt:
          description: Expiration timestamp in Unix milliseconds (null if never expires)
          format: int64
          nullable: true
          type: integer
        fingerprint:
          description: Primary identifier (GPG 40 hex chars, RSA SHA256 of public
            key 64 hex chars)
          type: string
        id:
          description: Unique internal identifier of the signing key
          format: uuid
          type: string
        longKeyId:
          description: Last 16 hex chars of fingerprint (for CLI compatibility)
          type: string
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAtMsV3'
        name:
          description: Human-readable name for UI/API
          type: string
        shortKeyId:
          description: Last 8 hex chars of fingerprint (for CLI compatibility)
          type: string
        size:
          description: Key strength in bits (e.g. 2048, 3072, 4096 for RSA)
          format: int32
          nullable: true
          type: integer
        source:
          description: Origin of the key (created by system or provided by user)
          enum:
          - GENERATED
          - IMPORTED
          type: string
        status:
          $ref: '#/components/schemas/SigningKeyStatusV3'
        type:
          $ref: '#/components/schemas/SigningKeyTypeV3'
        updatedBy:
          $ref: '#/components/schemas/UserInfoV3'
      required:
      - id
      - name
      - type
      - source
      - status
      - fingerprint
      - algorithm
      - createdAt
      - modifiedAt
      type: object
    StartedAtMsV3:
      description: Unix timestamp in milliseconds when the operation started
      example: 1736360000123
      format: int64
      nullable: true
      type: integer
    Status:
      description: Request processing status indicator
      enum:
      - SUCCESS
      - FAILURE
      - ERROR
      type: string
    StorageDetails:
      description: storage details
      properties:
        dailyStorage:
          description: Day-wise storage snapshots for the last 30 calendar days (UTC).
          items:
            $ref: '#/components/schemas/DailyStorage'
          type: array
        last30DayAverage:
          description: Average daily storage over the last 30 calendar days (UTC),
            as a human-readable auto-scaled size (e.g. "468.78GB").
          type: string
        totalSize:
          description: Total current storage, as a human-readable auto-scaled size
            (e.g. "468.78GB").
          type: string
        totalSizeInBytes:
          description: Total current storage in raw bytes (e.g. "503316480").
          type: string
      required:
      - totalSize
      type: object
    SwiftArtifactDetailConfig:
      description: Config for swift artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    SystemInfoV3:
      description: System-level information for the Harness Artifact Registry
      properties:
        registryHost:
          description: The hostname of the registry without protocol or port
          example: pkg.harness.io
          type: string
        registryUrl:
          description: The full registry URL including protocol
          example: https://pkg.harness.io
          type: string
      required:
      - registryHost
      - registryUrl
      type: object
    TabSetupStep:
      description: Tab Setup step
      properties:
        header:
          type: string
        sections:
          items:
            $ref: '#/components/schemas/ClientSetupSection'
          type: array
      type: object
    TabSetupStepConfig:
      description: Tab Setup step config
      properties:
        tabs:
          items:
            $ref: '#/components/schemas/TabSetupStep'
          type: array
      type: object
    TerraformArtifactDetailConfig:
      description: Config for Terraform artifact details
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    TreeNodeItemV3:
      description: A node in the tree view representing a registry, package, version,
        folder, or file
      properties:
        createdAt:
          description: Creation timestamp in milliseconds
          format: int64
          type: integer
        deletedAt:
          description: Deletion timestamp in milliseconds (if soft-deleted)
          format: int64
          type: integer
        hasChildren:
          description: Whether this node has child nodes
          type: boolean
        id:
          description: Unique identifier (UUID for nodes, registry_id for root registries)
          type: string
        isDeleted:
          description: |
            Whether this node is soft-deleted. Tree levels below the root return both active and
            soft-deleted nodes, so clients must use this flag to render deleted state rather than
            assuming every returned node is live.

            Omitted when soft-delete state cannot be determined for the node's level: the version
            and platform levels of OCI (Docker/Helm) registries come from
            `tags`/`manifests`/`manifest_references`, none of which have a soft-delete column,
            and all nodes of non-OCI registries come from `nodes`, whose `node_deleted_at` column
            is not populated by any write path. Only the root (`registries`) and Docker/Helm
            package (`images`) levels can answer this. An omitted value means "unknown" - it must
            not be read as "not deleted".
          type: boolean
        name:
          description: Display name of the node
          type: string
        packageType:
          description: Package type (for registries/packages)
          type: string
        path:
          description: Full path to this node
          type: string
        type:
          description: Type of the node
          enum:
          - registry
          - folder
          - package
          - version
          - file
          type: string
      required:
      - id
      - name
      - type
      - hasChildren
      type: object
    TreePaginationV3:
      description: Pagination information for tree view
      properties:
        hasMore:
          description: Whether there are more pages
          type: boolean
        nextCursor:
          description: Cursor for next page (base64 encoded)
          type: string
        size:
          description: Page size
          format: int32
          type: integer
        total:
          description: |
            Total number of items matching the request across all pages, independent of
            pagination.

            Exact at the root (registry) level, where the filtered set is small enough to
            count cheaply. Below the root it is **capped** (currently at 1000): child fanout
            is unbounded, and an exact count of a wide parent is far more expensive than the
            page itself. A value at the cap means "at least this many", not necessarily
            exact - use `hasMore` to drive "Load More" rather than comparing against `total`.

            Optional, and **absent on root-level pages fetched with a `cursor`**: the total
            does not change while paging through a fixed filter set, so it is computed once on
            the first page and the client is expected to hold it across Load More.
          format: int64
          type: integer
      required:
      - size
      - hasMore
      type: object
    TreeResponseBodyV3:
      description: Response body for tree view endpoints
      properties:
        items:
          description: List of tree nodes
          items:
            $ref: '#/components/schemas/TreeNodeItemV3'
          type: array
        pagination:
          $ref: '#/components/schemas/TreePaginationV3'
      required:
      - items
      - pagination
    Trigger:
      description: refers to trigger
      enum:
      - ARTIFACT_CREATION
      - ARTIFACT_DELETION
      type: string
    TrigramIndexBuildDataV3:
      description: Response payload returned when a trigram index build is accepted.
      properties:
        indexes:
          description: Names of the indexes this build is responsible for.
          items:
            type: string
          type: array
        jobUid:
          description: UID of the job row created for this build. Poll the jobs table
            with it, or call the status endpoint.
          type: string
      required:
      - jobUid
      - indexes
      type: object
    TrigramIndexStateV3:
      description: Catalog state of a single trigram index.
      properties:
        exists:
          type: boolean
        name:
          type: string
        valid:
          description: False for an index left INVALID by an interrupted CONCURRENTLY
            build. The planner never uses such an index, but writes still maintain
            it.
          type: boolean
      required:
      - name
      - exists
      - valid
      type: object
    TrigramIndexStatusDataV3:
      description: Current state of each trigram index, read from the Postgres catalog.
      properties:
        indexes:
          description: Per-index catalog state.
          items:
            $ref: '#/components/schemas/TrigramIndexStateV3'
          type: array
        jobResult:
          description: Result string of the most recent build job, naming each index
            and whether it was built or already present.
          type: string
        jobState:
          description: State of the most recent build job, absent if no build has
            ever been triggered.
          type: string
      required:
      - indexes
      type: object
    TypesLabel:
      properties:
        color:
          $ref: '#/components/schemas/EnumLabelColor'
        created:
          format: int64
          type: integer
        created_by:
          format: int64
          type: integer
        description:
          type: string
        id:
          format: int64
          type: integer
        key:
          type: string
        scope:
          format: int64
          type: integer
        space_id:
          format: int64
          nullable: true
          type: integer
        type:
          $ref: '#/components/schemas/EnumLabelType'
        updated:
          format: int64
          type: integer
        updated_by:
          format: int64
          type: integer
        value_count:
          format: int64
          type: integer
      type: object
    TypesLabelValue:
      properties:
        color:
          $ref: '#/components/schemas/EnumLabelColor'
        created:
          type: integer
        created_by:
          type: integer
        id:
          type: integer
        label_id:
          type: integer
        updated:
          type: integer
        updated_by:
          type: integer
        value:
          type: string
      type: object
    TypesLabelWithValues:
      properties:
        label:
          $ref: '#/components/schemas/TypesLabel'
        values:
          items:
            $ref: '#/components/schemas/TypesLabelValue'
          type: array
      type: object
    TypesSaveLabelInput:
      properties:
        color:
          $ref: '#/components/schemas/EnumLabelColor'
        description:
          type: string
        id:
          type: integer
        key:
          type: string
        type:
          $ref: '#/components/schemas/EnumLabelType'
      type: object
    TypesSaveLabelValueInput:
      properties:
        color:
          $ref: '#/components/schemas/EnumLabelColor'
        id:
          type: integer
        value:
          type: string
      type: object
    UpdateKeyRequestV3:
      description: Request to update a signing key status
      properties:
        status:
          description: |
            New status for the key (cannot transition from REVOKED or DELETED). Intentionally a closed subset of `SigningKeyStatusV3` rather than an extensible enum: DELETED is reachable only via `DELETE /signing-keys/{id}`, which emits a distinct audit event.
          enum:
          - ACTIVE
          - INACTIVE
          - REVOKED
          type: string
      required:
      - status
      type: object
    UpstreamConfig:
      description: Configuration for Harness Artifact UpstreamProxies
      properties:
        auth:
          oneOf:
          - $ref: '#/components/schemas/UserPassword'
          - $ref: '#/components/schemas/Anonymous'
          - $ref: '#/components/schemas/AccessKeySecretKey'
          - $ref: '#/components/schemas/BearerToken'
        authType:
          $ref: '#/components/schemas/AuthType'
        firewallMode:
          $ref: '#/components/schemas/UpstreamProxyConfigFirewallMode'
        metadataCacheTTL:
          description: |
            Time-to-live in seconds for cached metadata.
          format: int64
          maximum: 604800
          minimum: 0
          type: integer
        negativeCacheTTL:
          description: |
            Time-to-live in seconds for cached NOT_FOUND entries.
          format: int64
          maximum: 604800
          minimum: 0
          type: integer
        remoteUrlSuffix:
          description: |
            Optional path suffix appended to the remote URL for this registry. For Python upstreams, this allows overriding the default `/simple` path used for PyPI-compatible indexes. Leading and trailing slashes are not required and will be normalized.
          type: string
        signingConfig:
          $ref: '#/components/schemas/SigningConfig'
        source:
          enum:
          - Dockerhub
          - Custom
          - AwsEcr
          - MavenCentral
          - PyPi
          - NpmJs
          - NugetOrg
          - Crates
          - RubyGems
          - GoProxy
          - HuggingFace
          - Anaconda
          - Pubdev
          - Packagist
          - PuppetForge
          - HelmChartRepo
          - ConanCenter
          - TerraformRegistry
          - CRAN
          - Wolfi
          - Alpine
          type: string
        url:
          type: string
      required:
      - authType
      type: object
      x-discriminator-value: UPSTREAM
    UpstreamProxyConfigFirewallMode:
      description: Firewall mode applied to an upstream proxy.
      enum:
      - ALLOW
      - ENABLED
      - QUARANTINE
      type: string
    UserInfo:
      description: Structured user information for a principal
      properties:
        display_name:
          description: Human-readable display name
          type: string
        email:
          description: Email address
          type: string
        type:
          description: Principal type (user, service, service_account)
          type: string
        uid:
          description: Principal unique identifier (username)
          type: string
      type: object
    UserInfoV3:
      description: Structured user information for a principal
      properties:
        display_name:
          description: Human-readable display name
          type: string
        email:
          description: Email address
          type: string
        type:
          description: Principal type (user, service, service_account)
          type: string
        uid:
          description: Principal unique identifier (username)
          type: string
      type: object
    UserPassword:
      properties:
        secretIdentifier:
          type: string
        secretSpaceId:
          format: int64
          type: integer
        secretSpacePath:
          type: string
        userName:
          type: string
      required:
      - userName
    UsererrorError:
      properties:
        message:
          type: string
        values:
          additionalProperties: {}
          type: object
      type: object
    VersionDeploymentV3:
      description: A single Harness CD deployment record for a version.
      properties:
        envIdentifier:
          type: string
        envName:
          type: string
        envType:
          description: |
            Environment type. Allowed values: `PRODUCTION`, `PRE_PRODUCTION`.
          enum:
          - PRODUCTION
          - PRE_PRODUCTION
          type: string
        infraIdentifier:
          type: string
        infraName:
          type: string
        instanceCount:
          description: Number of running instances for this service + environment
            combination.
          format: int32
          type: integer
        lastDeployedAt:
          description: Unix timestamp in milliseconds of the last deployment.
          format: int64
          nullable: true
          type: integer
        lastDeployedBy:
          $ref: '#/components/schemas/UserInfoV3'
        orgIdentifier:
          type: string
        pipelineExecutionId:
          type: string
        pipelineExecutionName:
          type: string
        projectIdentifier:
          type: string
        serviceIdentifier:
          type: string
        serviceName:
          type: string
      required:
      - orgIdentifier
      - projectIdentifier
      - serviceIdentifier
      - serviceName
      - envIdentifier
      - envName
      - envType
      - instanceCount
      type: object
    VersionMetadata:
      description: Version Metadata
      properties:
        artifactKey:
          additionalProperties: true
          type: object
        artifactType:
          $ref: '#/components/schemas/ArtifactType'
        deletedAt:
          description: Timestamp in milliseconds when the registry was soft-deleted
          type: string
        deletedBy:
          $ref: '#/components/schemas/PerformedBy'
        deploymentMetadata:
          $ref: '#/components/schemas/DeploymentMetadata'
        digestCount:
          format: int64
          type: integer
        downloadsCount:
          format: int64
          type: integer
        fileCount:
          type: integer
        firewallMode:
          enum:
          - ENABLED
          - QUARANTINE
          - ALLOW
          type: string
        isQuarantined:
          type: boolean
        lastModified:
          type: string
        lastScannedAt:
          type: string
        metadata:
          $ref: '#/components/schemas/ArtifactEntityMetadata'
        package:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageType'
        pullCommand:
          type: string
        purl:
          description: Package URL (PURL) for this artifact version when supported
            for the package type.
          type: string
        quarantineReason:
          type: string
        registryIdentifier:
          type: string
        registryType:
          $ref: '#/components/schemas/RegistryType'
        registryUUID:
          type: string
        scanId:
          type: string
        scanStatus:
          enum:
          - WARN
          - BLOCKED
          - ALLOWED
          type: string
        size:
          type: string
        uuid:
          type: string
        version:
          type: string
      required:
      - package
      - registryIdentifier
      - version
      - packageType
      - lastModified
      - uuid
      - registryUUID
      type: object
    VersionStatsV3:
      description: Statistics for a single version
      properties:
        deploymentMetadata:
          $ref: '#/components/schemas/DeploymentMetadataV3'
        digestCount:
          description: Number of digests/manifests in the version (for OCI artifacts
            with manifest lists)
          type: integer
        downloadCount:
          description: Total download count for the version
          format: int64
          type: integer
        fileCount:
          description: Number of files in the version
          type: integer
        firewallMode:
          $ref: '#/components/schemas/FirewallModeV3'
        id:
          description: Version UUID
          format: uuid
          type: string
        lastScannedAt:
          type: string
        scanID:
          description: Scan ID for the version
          format: uuid
          type: string
        scanStatus:
          $ref: '#/components/schemas/ScanStatusV3'
        size:
          description: Total size of the version (human-readable format)
          type: string
        vulnerabilityMetadata:
          $ref: '#/components/schemas/VulnerabilityMetadataV3'
      required:
      - id
      type: object
    VersionV3:
      description: Version metadata
      properties:
        artifactKey:
          additionalProperties: true
          type: object
        createdAt:
          $ref: '#/components/schemas/ModifiedAtMsV3'
        createdBy:
          $ref: '#/components/schemas/UserInfoV3'
        deletedAt:
          $ref: '#/components/schemas/DeletedAtMsV3'
        deletedBy:
          $ref: '#/components/schemas/UserInfoV3'
        id:
          format: uuid
          type: string
        isQuarantined:
          type: boolean
        metadata:
          $ref: '#/components/schemas/ResourceMetadataV3'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAtMsV3'
        modifiedBy:
          $ref: '#/components/schemas/UserInfoV3'
        name:
          type: string
        orgIdentifier:
          $ref: '#/components/schemas/orgIdentifier'
        packageId:
          format: uuid
          type: string
        packageKind:
          $ref: '#/components/schemas/PackageKindV3'
        packageName:
          type: string
        packageType:
          $ref: '#/components/schemas/PackageTypeV3'
        projectIdentifier:
          $ref: '#/components/schemas/projectIdentifier'
        pullCommand:
          type: string
        pushedBy:
          $ref: '#/components/schemas/UserInfoV3'
        quarantineReason:
          type: string
        registryId:
          format: uuid
          type: string
        registryName:
          type: string
        registryType:
          $ref: '#/components/schemas/RegistryTypeV3'
      required:
      - id
      - name
      - packageType
      - registryId
      - registryName
      - packageId
      - packageName
      - registryType
      type: object
    VersionsStatsRequestInputV3:
      description: Request input for fetching version statistics
      properties:
        versionIds:
          description: List of version UUIDs to fetch statistics for
          items:
            format: uuid
            type: string
          maxItems: 100
          type: array
      required:
      - versionIds
      type: object
    VersionsStatsResponseBodyV3:
      description: Response body containing version statistics
      properties:
        items:
          description: List of version statistics
          items:
            $ref: '#/components/schemas/VersionStatsV3'
          type: array
      required:
      - items
      type: object
    VirtualConfig:
      description: Configuration for Harness Virtual Artifact Registries
      properties:
        debianConfig:
          $ref: '#/components/schemas/DebianConfig'
        signingConfig:
          $ref: '#/components/schemas/SigningConfig'
        upstreamProxies:
          items:
            type: string
          type: array
      type: object
    VulnerabilityMetadataV3:
      description: OSS vulnerability metadata for a version from component service
      properties:
        abandoned:
          type: boolean
        criticalVulnerabilities:
          type: integer
        highVulnerabilities:
          type: integer
        infoVulnerabilities:
          type: integer
        isMalicious:
          type: boolean
        lowVulnerabilities:
          type: integer
        mediumVulnerabilities:
          type: integer
        ossRiskLevel:
          type: string
        purl:
          description: Package URL (PURL) identifying the package version
          type: string
        totalVulnerabilities:
          type: integer
      type: object
    Webhook:
      description: Harness Regstries Webhook
      properties:
        createdAt:
          type: string
        createdBy:
          format: int64
          type: integer
        description:
          type: string
        enabled:
          type: boolean
        extraHeaders:
          items:
            $ref: '#/components/schemas/ExtraHeader'
          type: array
        identifier:
          type: string
        insecure:
          type: boolean
        internal:
          type: boolean
        latestExecutionResult:
          $ref: '#/components/schemas/WebhookExecResult'
        modifiedAt:
          type: string
        name:
          type: string
        secretIdentifier:
          type: string
        secretSpaceId:
          format: int64
          type: integer
        secretSpacePath:
          type: string
        triggers:
          items:
            $ref: '#/components/schemas/Trigger'
          type: array
        url:
          type: string
        version:
          format: int64
          type: integer
      required:
      - identifier
      - url
      - name
      - enabled
      - insecure
      type: object
    WebhookExecRequest:
      description: Harness Regstries HTTP Webhook Request
      properties:
        body:
          type: string
        headers:
          type: string
        url:
          type: string
      type: object
    WebhookExecResponse:
      description: Harness Regstries HTTP Webhook Response
      properties:
        body:
          type: string
        headers:
          type: string
        status:
          type: string
        statusCode:
          type: integer
      type: object
    WebhookExecResult:
      description: refers to webhook execution
      enum:
      - SUCCESS
      - RETRIABLE_ERROR
      - FATAL_ERROR
      type: string
    WebhookExecution:
      description: Harness Regstries Webhook Execution
      properties:
        created:
          format: int64
          type: integer
        duration:
          format: int64
          type: integer
        error:
          type: string
        id:
          format: int64
          type: integer
        request:
          $ref: '#/components/schemas/WebhookExecRequest'
        response:
          $ref: '#/components/schemas/WebhookExecResponse'
        result:
          $ref: '#/components/schemas/WebhookExecResult'
        retriggerOf:
          format: int64
          type: integer
        retriggerable:
          type: boolean
        triggerType:
          $ref: '#/components/schemas/Trigger'
        webhookId:
          format: int64
          type: integer
      type: object
    WebhookRequest:
      properties:
        description:
          type: string
        enabled:
          type: boolean
        extraHeaders:
          items:
            $ref: '#/components/schemas/ExtraHeader'
          type: array
        identifier:
          type: string
        insecure:
          type: boolean
        name:
          type: string
        secretIdentifier:
          type: string
        secretSpaceId:
          format: int64
          type: integer
        secretSpacePath:
          type: string
        triggers:
          items:
            $ref: '#/components/schemas/Trigger'
          type: array
        url:
          type: string
      required:
      - insecure
      - enabled
      - identifier
      - url
      - name
      type: object
    WolfiArtifactDetailConfig:
      description: Config for Wolfi (APK) artifact details.
      properties:
        metadata:
          additionalProperties: true
          type: object
      type: object
    orgIdentifier:
      type: string
    projectIdentifier:
      type: string
    quarantinePath:
      description: quarantine path
      properties:
        artifactId:
          format: int64
          type: integer
        filePath:
          type: string
        id:
          type: string
        reason:
          type: string
        registryId:
          format: int64
          type: integer
        versionId:
          format: int64
          type: integer
      required:
      - id
      - registryId
      - artifactId
      - reason
      type: object
    quarantineRequest:
      properties:
        artifact:
          type: string
        artifactKeyFilters:
          additionalProperties:
            type: string
          type: object
        artifactType:
          type: string
        filePath:
          type: string
        reason:
          type: string
        version:
          type: string
      required:
      - artifact
      - reason
      type: object
info:
  contact:
    name: Harness Artifact Registry - developers
    url: https://www.harness.io
  title: Harness Artifact Registry API
  version: 1.0.0
openapi: 3.0.0
paths:
  /v1/registry:
    post:
      description: Create a Registry.
      operationId: CreateRegistry
      parameters:
      - $ref: '#/components/parameters/requiredSpaceRefQueryParam'
      requestBody:
        $ref: '#/components/requestBodies/RegistryRequest'
      responses:
        "200":
          $ref: '#/components/responses/RegistryResponse'
          description: Registry already exists (idempotent internal registry create
            for the owning service principal).
        "201":
          $ref: '#/components/responses/RegistryResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Create Registry.
      tags:
      - Registries
  /v1/registry/{registry_identifier}/artifact/{artifact}/redirect:
    get:
      description: Redirect to Harness Artifact Page
      operationId: RedirectHarnessArtifact
      parameters:
      - $ref: '#/components/parameters/RegistryIdentifierPathParam'
      - $ref: '#/components/parameters/AccountIdentifierParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionParam'
      responses:
        "302":
          $ref: '#/components/responses/Redirect'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Redirect to Harness Artifact Page
      tags:
      - Artifacts
  /v1/registry/{registry_ref}:
    delete:
      description: Delete a Registry in the account for the given key
      operationId: DeleteRegistry
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Delete a Registry
      tags:
      - Registries
    get:
      description: Returns Registry Details in the account for the given key
      operationId: GetRegistry
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      responses:
        "200":
          $ref: '#/components/responses/RegistryResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Returns Registry Details
      tags:
      - Registries
    put:
      description: Updates a Registry in the account for the given key
      operationId: ModifyRegistry
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      requestBody:
        $ref: '#/components/requestBodies/RegistryRequest'
      responses:
        "200":
          $ref: '#/components/responses/RegistryResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Updates a Registry
      tags:
      - Registries
  /v1/registry/{registry_ref}/artifact/{artifact}:
    delete:
      description: Delete Artifact.
      operationId: DeleteArtifact
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Delete Artifact
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/labels:
    put:
      description: Update Artifact Labels.
      operationId: UpdateArtifactLabels
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      requestBody:
        $ref: '#/components/requestBodies/ArtifactLabelRequest'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactLabelResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Update Artifact Labels
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/stats:
    get:
      description: Get Artifact Stats.
      operationId: GetArtifactStats
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/fromDateParam'
      - $ref: '#/components/parameters/toDateParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactStatsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Artifact Stats
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/summary:
    get:
      description: Get Artifact Summary.
      operationId: GetArtifactSummary
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactSummaryResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Artifact Summary
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/tags:
    get:
      description: Lists OCI Artifact Tags.
      operationId: GetOciArtifactTags
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/searchTerm'
      responses:
        "200":
          $ref: '#/components/responses/ListOciArtifactTagsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List OCI Artifact tags
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}:
    delete:
      description: Delete Artifact Version.
      operationId: DeleteArtifactVersion
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/filtersParam'
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Delete an Artifact Version
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/bulk-download:
    get:
      description: Create a bulk download request
      operationId: CreateBulkDownloadRequestV1
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      responses:
        "200":
          $ref: '#/components/responses/CreateBulkDownloadRequestResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Create a bulk download request
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/deploymentdetails:
    get:
      description: Get Artifact Deployments
      operationId: GetArtifactDeployments
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/envType'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      - $ref: '#/components/parameters/searchTerm'
      - $ref: '#/components/parameters/versionTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactDeploymentsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Artifact Deployments
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/details:
    get:
      description: Get Artifact Details
      operationId: GetArtifactDetails
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/childVersionParam'
      - $ref: '#/components/parameters/filtersParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactDetailResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Artifact Details
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/docker/details:
    get:
      description: Get Docker Artifact Details
      operationId: GetDockerArtifactDetails
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/digestParam'
      - $ref: '#/components/parameters/versionTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/DockerArtifactDetailResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Docker Artifact Detail
      tags:
      - Docker Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/docker/integrationdetails:
    get:
      description: Get Docker Artifact Integration Details
      operationId: GetDockerArtifactIntegrationDetails
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/digestParam'
      - $ref: '#/components/parameters/versionTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/DockerArtifactDetailIntegrationResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Docker Artifact Integration Detail
      tags:
      - Docker Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/docker/layers:
    get:
      description: Get Docker Artifact Layers
      operationId: GetDockerArtifactLayers
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/digestParam'
      responses:
        "200":
          $ref: '#/components/responses/DockerLayersResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Docker Artifact Layers
      tags:
      - Docker Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/docker/manifest:
    get:
      description: Get Docker Artifact Manifest
      operationId: GetDockerArtifactManifest
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/digestParam'
      responses:
        "200":
          $ref: '#/components/responses/DockerArtifactManifestResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Docker Artifact Manifest
      tags:
      - Docker Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/docker/manifests:
    get:
      description: Get Docker Artifact Manifests
      operationId: GetDockerArtifactManifests
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/versionTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/DockerManifestsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Docker Artifact Manifests
      tags:
      - Docker Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/file/{file_name}:
    get:
      description: just validate existence of Artifact file
      operationId: GetArtifactFile
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/fileNamePathParam'
      - $ref: '#/components/parameters/filtersParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactFileResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Artifact file
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/files:
    get:
      description: Get Artifact files
      operationId: GetArtifactFiles
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      - $ref: '#/components/parameters/searchTerm'
      - $ref: '#/components/parameters/filtersParam'
      responses:
        "200":
          $ref: '#/components/responses/FileDetailResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Artifact files
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/helm/details:
    get:
      description: Get Helm Artifact Details
      operationId: GetHelmArtifactDetails
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/versionTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/HelmArtifactDetailResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Helm Artifact Detail
      tags:
      - Helm Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/helm/manifest:
    get:
      description: Get Helm Artifact Manifest
      operationId: GetHelmArtifactManifest
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/versionPathParam'
      responses:
        "200":
          $ref: '#/components/responses/HelmArtifactManifestResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Describe Helm Artifact Manifest
      tags:
      - Helm Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/version/{version}/summary:
    get:
      description: Get Artifact Version Summary.
      operationId: GetArtifactVersionSummary
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/versionPathParam'
      - $ref: '#/components/parameters/digestOptParam'
      - $ref: '#/components/parameters/filtersParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactVersionSummaryResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Artifact Version Summary
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/{artifact}/versions:
    get:
      description: Lists all the Artifact Versions.
      operationId: GetAllArtifactVersions
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactPathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      - $ref: '#/components/parameters/searchTerm'
      - $ref: '#/components/parameters/deleteFilterParam'
      responses:
        "200":
          $ref: '#/components/responses/ListArtifactVersionResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List Artifact Versions
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/labels:
    get:
      description: List Artifact Labels.
      operationId: ListArtifactLabels
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/searchTerm'
      responses:
        "200":
          $ref: '#/components/responses/ListArtifactLabelResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List Artifact Labels
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifact/stats:
    get:
      description: Get Artifact Stats.
      operationId: GetArtifactStatsForRegistry
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/fromDateParam'
      - $ref: '#/components/parameters/toDateParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactStatsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Artifact Stats
      tags:
      - Artifacts
  /v1/registry/{registry_ref}/artifacts:
    get:
      description: Lists all the Artifacts for Registry
      operationId: GetAllArtifactsByRegistry
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/LabelsParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      - $ref: '#/components/parameters/searchTerm'
      - $ref: '#/components/parameters/artifactTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/ListRegistryArtifactResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List Artifacts for Registry
      tags:
      - Registries
  /v1/registry/{registry_ref}/client-setup-details:
    get:
      description: Returns CLI Client Setup Details based on package type
      operationId: GetClientSetupDetails
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactParam'
      - $ref: '#/components/parameters/versionParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/ClientSetupDetailsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Returns CLI Client Setup Details
      tags:
      - Registries
  /v1/registry/{registry_ref}/quarantine:
    delete:
      description: delete Quarantine file path
      operationId: deleteQuarantineFilePath
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/artifactParam'
      - $ref: '#/components/parameters/versionParam'
      - $ref: '#/components/parameters/filePathParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/filtersParam'
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: deleteQuarantineFilePath
      tags:
      - quarantine
    put:
      description: quarantine file path
      operationId: quarantineFilePath
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      requestBody:
        $ref: '#/components/requestBodies/quarantineRequest'
      responses:
        "200":
          $ref: '#/components/responses/quarantinePathResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: quarantineFilePath
      tags:
      - quarantine
  /v1/registry/{registry_ref}/webhooks:
    get:
      description: Returns List of Webhook Details
      operationId: ListWebhooks
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      - $ref: '#/components/parameters/searchTerm'
      responses:
        "200":
          $ref: '#/components/responses/ListWebhooksResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: ListWebhooks
      tags:
      - Webhooks
    post:
      description: Returns Webhook Details
      operationId: CreateWebhook
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      requestBody:
        $ref: '#/components/requestBodies/WebhookRequest'
      responses:
        "201":
          $ref: '#/components/responses/WebhookResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: CreateWebhook
      tags:
      - Webhooks
  /v1/registry/{registry_ref}/webhooks/{webhook_identifier}:
    delete:
      description: Delete a Webhook
      operationId: DeleteWebhook
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/webhookIdentifierPathParam'
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: DeleteWebhook
      tags:
      - Webhooks
    get:
      description: Returns Webhook Details
      operationId: GetWebhook
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/webhookIdentifierPathParam'
      responses:
        "200":
          $ref: '#/components/responses/WebhookResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: GetWebhook
      tags:
      - Webhooks
    put:
      description: Returns Webhook Details
      operationId: UpdateWebhook
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/webhookIdentifierPathParam'
      requestBody:
        $ref: '#/components/requestBodies/WebhookRequest'
      responses:
        "201":
          $ref: '#/components/responses/WebhookResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: UpdateWebhook
      tags:
      - Webhooks
  /v1/registry/{registry_ref}/webhooks/{webhook_identifier}/executions:
    get:
      description: Returns Webhook Execution Details List
      operationId: ListWebhookExecutions
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/webhookIdentifierPathParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      responses:
        "200":
          $ref: '#/components/responses/ListWebhooksExecutionResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: ListWebhookExecutions
      tags:
      - Webhooks
  /v1/registry/{registry_ref}/webhooks/{webhook_identifier}/executions/{webhook_execution_id}:
    get:
      description: Returns Webhook Execution Details
      operationId: GetWebhookExecution
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/webhookIdentifierPathParam'
      - $ref: '#/components/parameters/webhookExecutionIdPathParam'
      responses:
        "200":
          $ref: '#/components/responses/WebhookExecutionResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: GetWebhookExecution
      tags:
      - Webhooks
  /v1/registry/{registry_ref}/webhooks/{webhook_identifier}/executions/{webhook_execution_id}/retrigger:
    get:
      description: Retrigger Webhook Execution
      operationId: ReTriggerWebhookExecution
      parameters:
      - $ref: '#/components/parameters/registryRefPathParam'
      - $ref: '#/components/parameters/webhookIdentifierPathParam'
      - $ref: '#/components/parameters/webhookExecutionIdPathParam'
      responses:
        "200":
          $ref: '#/components/responses/WebhookExecutionResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: ReTriggerWebhookExecution
      tags:
      - Webhooks
  /v1/replication/rules:
    get:
      description: List all replication rules
      operationId: listReplicationRules
      parameters:
      - $ref: '#/components/parameters/spaceRefQueryParam'
      responses:
        "200":
          $ref: '#/components/responses/ListReplicationRuleResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List replication rules
      tags:
      - Replication
    post:
      description: Create a replication rule
      operationId: createReplicationRule
      parameters:
      - $ref: '#/components/parameters/spaceRefQueryParam'
      requestBody:
        $ref: '#/components/requestBodies/ReplicationRuleRequest'
      responses:
        "200":
          $ref: '#/components/responses/ReplicationRuleResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Create a replication rule
      tags:
      - Replication
  /v1/replication/rules/{id}:
    delete:
      description: Delete a replication rule
      operationId: deleteReplicationRule
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Delete a replication rule
      tags:
      - Replication
    get:
      description: Get a replication rule
      operationId: getReplicationRule
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/ReplicationRuleResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get a replication rule
      tags:
      - Replication
    put:
      description: Update a replication rule
      operationId: updateReplicationRule
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/ReplicationRuleRequest'
      responses:
        "200":
          $ref: '#/components/responses/ReplicationRuleResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Update a replication rule
      tags:
      - Replication
  /v1/replication/rules/{id}/migration/images:
    get:
      description: List migration images given an id
      operationId: listMigrationImages
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      responses:
        "200":
          $ref: '#/components/responses/ListMigrationImageResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List migration images
      tags:
      - Replication
  /v1/replication/rules/{id}/migration/images/{image_id}/logs:
    get:
      operationId: getMigrationLogsForImage
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - in: path
        name: image_id
        required: true
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/PlainTextResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get migration logs for an image
      tags:
      - Replication
  /v1/replication/rules/{id}/migration/start:
    post:
      description: Start migration given an id
      operationId: startMigration
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Start migration
      tags:
      - Replication
  /v1/replication/rules/{id}/migration/stop:
    post:
      description: Stop migration given an id
      operationId: stopMigration
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Stop migration
      tags:
      - Replication
  /v1/spaces/{space_ref}/artifact/stats:
    get:
      description: Get artifact stats
      operationId: GetArtifactStatsForSpace
      parameters:
      - $ref: '#/components/parameters/spaceRefPathParam'
      - $ref: '#/components/parameters/fromDateParam'
      - $ref: '#/components/parameters/toDateParam'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactStatsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get artifact stats
      tags:
      - Spaces
  /v1/spaces/{space_ref}/artifacts:
    get:
      description: Lists all the artifacts
      operationId: GetAllArtifacts
      parameters:
      - $ref: '#/components/parameters/spaceRefPathParam'
      - $ref: '#/components/parameters/RegistryIdentifierParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      - $ref: '#/components/parameters/searchTerm'
      - $ref: '#/components/parameters/latestVersion'
      - $ref: '#/components/parameters/deployedArtifact'
      - $ref: '#/components/parameters/packageTypeParam'
      responses:
        "200":
          $ref: '#/components/responses/ListArtifactResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List artifacts
      tags:
      - Spaces
  /v1/spaces/{space_ref}/details:
    get:
      description: Get storage details for given space
      operationId: GetStorageDetails
      parameters:
      - $ref: '#/components/parameters/spaceRefPathParam'
      responses:
        "200":
          $ref: '#/components/responses/StorageDetailsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get storage details for given space
      tags:
      - Spaces
  /v1/spaces/{space_ref}/labels:
    get:
      operationId: listSpaceLabels
      parameters:
      - description: The page to return.
        in: query
        name: page
        schema:
          default: 1
          minimum: 1
          type: integer
      - description: The maximum number of results to return.
        in: query
        name: limit
        schema:
          default: 30
          maximum: 100
          minimum: 1
          type: integer
      - description: The result should inherit entities from parent spaces.
        in: query
        name: inherited
        schema:
          default: false
          type: boolean
      - description: The substring which is used to filter the labels by their key.
        in: query
        name: query
        schema:
          type: string
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TypesLabel'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
    post:
      operationId: defineSpaceLabel
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                color:
                  $ref: '#/components/schemas/EnumLabelColor'
                description:
                  type: string
                key:
                  type: string
                type:
                  $ref: '#/components/schemas/EnumLabelType'
              type: object
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypesLabel'
          description: Created
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
    put:
      operationId: saveSpaceLabel
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                label:
                  $ref: '#/components/schemas/TypesSaveLabelInput'
                values:
                  items:
                    $ref: '#/components/schemas/TypesSaveLabelValueInput'
                  type: array
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypesLabelWithValues'
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
  /v1/spaces/{space_ref}/labels/{key}:
    delete:
      operationId: deleteSpaceLabel
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      - in: path
        name: key
        required: true
        schema:
          type: string
      responses:
        "204":
          description: No Content
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
    get:
      operationId: findSpaceLabel
      parameters:
      - description: The result should include label values.
        in: query
        name: include_values
        schema:
          default: false
          type: boolean
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      - in: path
        name: key
        required: true
        schema:
          type: string
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypesLabelWithValues'
          description: Created
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
    patch:
      operationId: updateSpaceLabel
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      - in: path
        name: key
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                color:
                  $ref: '#/components/schemas/EnumLabelColor'
                description:
                  type: string
                key:
                  type: string
                type:
                  $ref: '#/components/schemas/EnumLabelType'
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypesLabel'
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
  /v1/spaces/{space_ref}/labels/{key}/values:
    get:
      operationId: listSpaceLabelValues
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      - in: path
        name: key
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TypesLabelValue'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
    post:
      operationId: defineSpaceLabelValue
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      - in: path
        name: key
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                color:
                  $ref: '#/components/schemas/EnumLabelColor'
                value:
                  type: string
              type: object
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypesLabelValue'
          description: Created
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
  /v1/spaces/{space_ref}/labels/{key}/values/{value}:
    delete:
      operationId: deleteSpaceLabelValue
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      - in: path
        name: key
        required: true
        schema:
          type: string
      - in: path
        name: value
        required: true
        schema:
          type: string
      responses:
        "204":
          description: No Content
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
    patch:
      operationId: updateSpaceLabelValue
      parameters:
      - in: path
        name: space_ref
        required: true
        schema:
          type: string
      - in: path
        name: key
        required: true
        schema:
          type: string
      - in: path
        name: value
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                color:
                  $ref: '#/components/schemas/EnumLabelColor'
                value:
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypesLabelValue'
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Forbidden
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Not Found
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
          description: Internal Server Error
      tags:
      - Spaces
  /v1/spaces/{space_ref}/registries:
    get:
      description: Lists all the registries.
      operationId: GetAllRegistries
      parameters:
      - $ref: '#/components/parameters/spaceRefPathParam'
      - $ref: '#/components/parameters/packageTypeParam'
      - $ref: '#/components/parameters/RegistryTypeParam'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/sortOrder'
      - $ref: '#/components/parameters/sortField'
      - $ref: '#/components/parameters/searchTerm'
      - $ref: '#/components/parameters/recursiveParam'
      - $ref: '#/components/parameters/scopeParam'
      responses:
        "200":
          $ref: '#/components/responses/ListRegistryResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List registries
      tags:
      - Spaces
  /v2/artifacts:
    get:
      description: Lists all the  Versions.
      operationId: ListVersions
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/OrgIdentifier'
      - $ref: '#/components/parameters/ProjectIdentifier'
      - $ref: '#/components/parameters/RegistryIdentifiersParam'
      - $ref: '#/components/parameters/PackageParam'
      - $ref: '#/components/parameters/MetadataFilter'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/SortOrder'
      - $ref: '#/components/parameters/SortField'
      - $ref: '#/components/parameters/SearchTerm'
      - $ref: '#/components/parameters/PackageTypeParam'
      - $ref: '#/components/parameters/DeleteFilterParam'
      responses:
        "200":
          $ref: '#/components/responses/ListVersionResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List Versions
      tags:
      - Registry V2
      x-internal: true
  /v2/copy:
    post:
      description: Copy Artifact
      operationId: Copy
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/SrcOrgIdentifier'
      - $ref: '#/components/parameters/SrcProjectIdentifier'
      - $ref: '#/components/parameters/SrcRegistryIdentifierParam'
      - $ref: '#/components/parameters/SrcArtifact'
      - $ref: '#/components/parameters/SrcVersion'
      - $ref: '#/components/parameters/TargetOrgIdentifier'
      - $ref: '#/components/parameters/TargetProjectIdentifier'
      - $ref: '#/components/parameters/TargetRegistryIdentifierParam'
      - $ref: '#/components/parameters/artifactTypeParam'
      - $ref: '#/components/parameters/FiltersParam'
      responses:
        "200":
          $ref: '#/components/responses/CopyResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Copy Artifact
      tags:
      - Registry V2
      x-internal: true
  /v2/files/{file_name}:
    get:
      description: Download file using file path
      operationId: GetFile
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/RegistryIdentifier'
      - $ref: '#/components/parameters/FilePath'
      - $ref: '#/components/parameters/FileName'
      responses:
        "200":
          $ref: '#/components/responses/DownloadFileResponse'
        "302":
          $ref: '#/components/responses/Redirect'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Download file using file path
      tags:
      - Registry V2
      x-internal: true
  /v2/files/bulk-download:
    post:
      description: Create a bulk download request
      operationId: CreateBulkDownloadRequest
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      requestBody:
        $ref: '#/components/requestBodies/BulkDownloadFilesRequest'
      responses:
        "200":
          $ref: '#/components/responses/CreateBulkDownloadRequestResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Create a bulk download request
      tags:
      - Registry V2
      x-internal: true
  /v2/files/bulk-download/{download_id}:
    get:
      description: Get bulk download request status
      operationId: GetBulkDownloadRequestStatus
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/DownloadId'
      responses:
        "200":
          $ref: '#/components/responses/GetBulkDownloadRequestStatusResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get bulk download request status
      tags:
      - Registry V2
      x-internal: true
  /v2/files/search:
    get:
      description: Search all the files.
      operationId: SearchFiles
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/RegistryIdentifier'
      - $ref: '#/components/parameters/Query'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      responses:
        "200":
          $ref: '#/components/responses/ListFilesResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Search Files
      tags:
      - Registry V2
      x-internal: true
  /v2/metadata:
    delete:
      description: |
        Delete metadata key-value pairs for a specific entity.
        This endpoint allows you to delete existing metadata for packages, versions, or registry-level entities.
        The operation supports deleting existing metadata in a single request.
      operationId: DeleteMetadata
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequest'
      responses:
        "200":
          $ref: '#/components/responses/Success'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Delete Metadata
      tags:
      - Registry V2
      x-internal: true
    get:
      description: |
        Retrieves all metadata key-value pairs associated with a specific entity.
        This endpoint returns metadata for packages, versions, or registry-level entities based on the provided path.
      operationId: GetMetadata
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/RegistryIdentifier'
      - $ref: '#/components/parameters/PathParam'
      - $ref: '#/components/parameters/PackageParam'
      - $ref: '#/components/parameters/VersionParam'
      - $ref: '#/components/parameters/FiltersParam'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Metadata
      tags:
      - Registry V2
      x-internal: true
    post:
      description: |
        Creates new metadata or overwrites existing metadata key-value pairs for a specific entity.
        This endpoint allows you to add new metadata or overwrites existing metadata for packages, versions,
        or registry-level entities.
        The operation supports both creating new metadata entries and updating existing ones in a single request.
      operationId: UpdateMetadata
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequest'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Update Metadata
      tags:
      - Registry V2
      x-internal: true
    put:
      description: |
        Saves metadata key-value pairs for a specific entity.
        This endpoint allows you to save metadata for packages, versions, or registry-level entities.
        This operation will remove existing metadata and save the new metadata. It is an idempotent operation.
      operationId: SaveMetadata
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequest'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Save Metadata
      tags:
      - Registry V2
      x-internal: true
  /v2/metadata/keys:
    get:
      description: Retrieve a paginated list of all available metadata keys.
      operationId: GetMetadataKeys
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/OrgIdentifier'
      - $ref: '#/components/parameters/ProjectIdentifier'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/SearchTerm'
      responses:
        "200":
          $ref: '#/components/responses/MetadataKeysResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Metadata Keys
      tags:
      - Registry V2
      x-internal: true
  /v2/metadata/values:
    get:
      description: Retrieve all possible values for a specific metadata key.
      operationId: GetMetadataValues
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/OrgIdentifier'
      - $ref: '#/components/parameters/ProjectIdentifier'
      - $ref: '#/components/parameters/KeyParam'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/SearchTerm'
      responses:
        "200":
          $ref: '#/components/responses/MetadataValuesResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Get Metadata Values
      tags:
      - Registry V2
      x-internal: true
  /v2/oci/tags:
    post:
      description: Add OCI Artifact Tags.
      operationId: AddOciArtifactTags
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/OrgIdentifier'
      - $ref: '#/components/parameters/ProjectIdentifier'
      - $ref: '#/components/parameters/RegistryIdentifier'
      requestBody:
        $ref: '#/components/requestBodies/AddTagsRequest'
      responses:
        "200":
          $ref: '#/components/responses/AddTagsResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: Add tags to OCI artifact
      tags:
      - Registry V2
      x-internal: true
  /v2/packages:
    get:
      description: Lists all the Image/Package
      operationId: ListPackages
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/OrgIdentifier'
      - $ref: '#/components/parameters/ProjectIdentifier'
      - $ref: '#/components/parameters/RegistryIdentifiersParam'
      - $ref: '#/components/parameters/MetadataFilter'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/SortOrder'
      - $ref: '#/components/parameters/SortField'
      - $ref: '#/components/parameters/SearchTerm'
      - $ref: '#/components/parameters/ArtifactTypeParam'
      - $ref: '#/components/parameters/PackageTypeParam'
      - $ref: '#/components/parameters/DeleteFilterParam'
      responses:
        "200":
          $ref: '#/components/responses/ListPackageResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List Image/Package
      tags:
      - Registry V2
      x-internal: true
  /v2/registries:
    get:
      description: Lists all the registries.
      operationId: ListRegistries
      parameters:
      - $ref: '#/components/parameters/AccountIdentifier'
      - $ref: '#/components/parameters/OrgIdentifier'
      - $ref: '#/components/parameters/ProjectIdentifier'
      - $ref: '#/components/parameters/PackageTypeParam'
      - $ref: '#/components/parameters/RegistryTypeParam'
      - $ref: '#/components/parameters/MetadataFilter'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/SortOrder'
      - $ref: '#/components/parameters/SortField'
      - $ref: '#/components/parameters/SearchTerm'
      - $ref: '#/components/parameters/RegistryScope'
      - $ref: '#/components/parameters/DeleteFilterParam'
      responses:
        "200":
          $ref: '#/components/responses/ListRegistryResponse'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthenticated'
        "403":
          $ref: '#/components/responses/Unauthorized'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
      summary: List registries
      tags:
      - Registry V2
      x-internal: true
  /v3/build-info:
    post:
      description: Adds build info generated by CLI after package installation.
      operationId: AddBuildInfoV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/BuildInfoRequestV3'
      responses:
        "201":
          description: Build info added successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Add build info
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/build-info/pipeline/details:
    get:
      description: Returns all pipeline build info details.
      operationId: ListPipelineBuildInfoDetailsV3
      parameters:
      - $ref: '#/components/parameters/PackageNameFilterParamV3'
      - $ref: '#/components/parameters/VersionFilterParamV3'
      - $ref: '#/components/parameters/RegistryIdFilterParamV3'
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PipelineIdFilterParamV3'
      - $ref: '#/components/parameters/ScanIDQueryParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/ProjectsOptionalListParamV3'
      - $ref: '#/components/parameters/SecurityViolationCategoriesOptionalListParamV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryScopeV3'
      responses:
        "200":
          $ref: '#/components/responses/ListPipelineBuildInfoDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List pipeline build info details
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/bulk-download:
    post:
      description: Create a bulk download request
      operationId: CreateBulkDownloadRequestV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/BulkDownloadFilesRequestV3'
      responses:
        "202":
          $ref: '#/components/responses/CreateBulkDownloadRequestAcceptedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Create a bulk download request
      tags:
      - Registry V3 - Transfer
      x-internal: true
  /v3/bulk-download/{id}:
    get:
      description: Get bulk download request status
      operationId: GetBulkDownloadRequestStatusV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/GetBulkDownloadRequestStatusResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get bulk download request status
      tags:
      - Registry V3 - Transfer
      x-internal: true
  /v3/bulkdelete:
    post:
      description: Execute bulk delete operation
      operationId: BulkDeleteV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/BulkDeleteRequestV3'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDeleteResponseV3'
          description: Bulk delete executed successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Execute bulk delete
      tags:
      - Registry V3 - Bulk Deletion
      x-internal: true
  /v3/config/package-types:
    get:
      description: |
        Lists per-package-type UI configuration and capability flags for
        the Harness Artifact Registry, such as whether the upstream
        resource-cache TTL feature is currently active for the account.
        Bounded, non-paginated catalog — one entry per known package type.
        Use `package_types` to narrow the response to specific package
        types.
      operationId: ListPackageTypeConfigsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListPackageTypeConfigsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Package Type Configs
      tags:
      - Registry V3 - System
      x-internal: true
  /v3/copy:
    post:
      description: Copy resources
      operationId: CopyResourcesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/CopyResourcesRequestV3'
      responses:
        "200":
          description: Copied successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Copy resources
      tags:
      - Registry V3 - Transfer
      x-internal: false
  /v3/files:
    get:
      description: List files.
      operationId: ListFilesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/RegistryIdOptionalParamV3'
      - $ref: '#/components/parameters/PackageIdOptionalParamV3'
      - $ref: '#/components/parameters/VersionIdOptionalParamV3'
      - $ref: '#/components/parameters/ConanRecipeRevisionOptionalParamV3'
      - $ref: '#/components/parameters/ConanPackageRevisionOptionalParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/SearchTermV3'
      responses:
        "200":
          $ref: '#/components/responses/ListFilesResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Search Files
      tags:
      - Registry V3 - Files
      x-internal: false
  /v3/files/{id}:
    get:
      description: |
        Retrieves details for a single file by its id, including its downloadUrl (GET /files/{id}/content) and Content-Type. Following downloadUrl applies Content-Type and either inline preview or an attachment download.
      operationId: GetFileDetailsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/FileDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get file details
      tags:
      - Registry V3 - Files
      x-internal: false
  /v3/files/{id}/content:
    get:
      description: Download a file using its id.
      operationId: GetFileV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/DownloadFileResponseV3'
        "302":
          $ref: '#/components/responses/RedirectV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Download file using file id
      tags:
      - Registry V3 - Files
      x-internal: false
  /v3/files/{id}/metadata:
    get:
      description: Retrieves all metadata for a file.
      operationId: GetFileMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get File Metadata
      tags:
      - Registry V3 - Files
      x-internal: false
    post:
      description: Creates or overwrites metadata for a file.
      operationId: UpsertFileMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Upsert File Metadata
      tags:
      - Registry V3 - Files
      x-internal: false
    put:
      description: Replaces all metadata for a file.
      operationId: SaveFileMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Replace File Metadata
      tags:
      - Registry V3 - Files
      x-internal: false
  /v3/files/search:
    post:
      description: |
        Search files across a registry using a POSIX regular expression matched server-side against the full node path. Filter payload is sent in the request body so that regex characters such as `?`, `&`, `+`, `#` and `%` do not need URL-encoding and are not truncated by proxies. Backs the CLI bulk-download flow: the server performs regex filtering and the client parallelizes the individual file downloads.
      operationId: SearchRegistryFilesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      requestBody:
        $ref: '#/components/requestBodies/SearchRegistryFilesRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/ListFilesResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Search Registry Files by path regex
      tags:
      - Registry V3 - Files
      x-internal: true
  /v3/filters:
    get:
      description: |
        List filter definitions available for the requested `resource_type`
        (REGISTRY, PACKAGE, or VERSION).

        Filters returned depend on the scope inferred from the supplied
        identifiers (ACCOUNT / ORG / PROJECT). For PACKAGE and VERSION
        resource types, if `package_type` is provided the response is
        augmented with type-specific filters (e.g. Docker, Maven, npm).
        `package_type` is ignored when `resource_type=REGISTRY`.
      operationId: ListFiltersV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/FilterResourceTypeParamV3'
      - $ref: '#/components/parameters/PackageTypeFilterParamV3'
      - $ref: '#/components/parameters/FilterIdOptionalParamV3'
      - $ref: '#/components/parameters/SearchTermV3'
      responses:
        "200":
          $ref: '#/components/responses/ListFiltersResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Filters
      tags:
      - Registry V3 - Filters
      x-internal: false
  /v3/filters/options:
    get:
      description: |
        List the selectable values for a single filter identified by
        `filter_id`. Same authorization and scoping semantics as
        `GET /filters`. `package_type` is only meaningful for filters on
        PACKAGE and VERSION resources and is ignored otherwise;
        `search_term` narrows the returned options in place of
        pagination.
      operationId: ListFilterOptionsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/FilterResourceTypeParamV3'
      - $ref: '#/components/parameters/FilterIdParamV3'
      - $ref: '#/components/parameters/PackageTypeFilterParamV3'
      - $ref: '#/components/parameters/OptionValuesParamV3'
      - $ref: '#/components/parameters/SearchTermV3'
      responses:
        "200":
          $ref: '#/components/responses/ListFilterOptionsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Filter Options
      tags:
      - Registry V3 - Filters
      x-internal: false
  /v3/internal/registries/{registry_name}/files:
    get:
      description: List files belonging to a registry.
      operationId: ListRegistryFilesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/RegistryNamePathParamV3'
      - $ref: '#/components/parameters/PackageNameFilterParamV3'
      - $ref: '#/components/parameters/VersionFilterParamV3'
      - $ref: '#/components/parameters/FilePathFilterParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/SearchTermV3'
      responses:
        "200":
          $ref: '#/components/responses/ListFilesResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Registry Files
      tags:
      - Registry V3 - Files
      x-internal: true
  /v3/internal/search/backfill:
    post:
      operationId: TriggerBackfillV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/BackfillTriggerRequestV3'
      responses:
        "202":
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/BackfillTriggerDataV3'
                required:
                - data
                type: object
          description: Accepted — backfill task created.
        "409":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Conflict — backfill already running for this account.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Trigger ES search backfill for an account
      tags:
      - Registry V3 - Internal
      x-internal: true
  /v3/internal/search/backfill/state:
    get:
      operationId: GetBackfillStateV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/BackfillStateDataV3'
                required:
                - data
                type: object
          description: Backfill state per entity type.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get backfill state by account
      tags:
      - Registry V3 - Internal
      x-internal: true
  /v3/internal/search/backfill/status/{job_id}:
    get:
      operationId: GetBackfillTaskStatusV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - in: path
        name: job_id
        required: true
        schema:
          type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/BackfillTaskStatusDataV3'
                required:
                - data
                type: object
          description: Job status.
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Task not found.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get backfill task status
      tags:
      - Registry V3 - Internal
      x-internal: true
  /v3/internal/search/trigram-indexes:
    get:
      description: |
        Report whether each trigram index exists and is valid, read from the Postgres catalog,
        alongside the state of the most recent build job. An index reported as exists=true and
        valid=false is never used by the planner but is still maintained on every write, and
        needs a rebuild.

        Any authenticated caller may read it.
      operationId: GetTrigramIndexStatusV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/TrigramIndexStatusDataV3'
                required:
                - data
                type: object
          description: Current index and build-job state.
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Unauthenticated — caller has no valid session.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get global search trigram index status
      tags:
      - Registry V3 - Internal
      x-internal: true
    post:
      description: |
        Trigger the build of the pg_trgm GIN indexes backing global search. The build runs
        asynchronously as a job and returns immediately once accepted; CREATE INDEX CONCURRENTLY
        does not block reads or writes, but it is minutes of extra I/O on a large environment,
        which is why it is triggered deliberately rather than at boot.

        Idempotent: an index that already exists, is valid, and whose definition still matches the
        DDL this job would issue is skipped. An index left INVALID by an interrupted build is
        dropped and rebuilt. An index whose definition has *diverged* fails the job instead of
        being rebuilt silently - a rebuild is minutes to hours of I/O, so the operator is told to
        drop it explicitly. Safe to call repeatedly.

        Note this is an environment-wide operation. The account identifier on the request is for
        routing/audit only - it neither scopes nor authorizes the work, since the indexes cover
        every tenant in the database. Any authenticated caller may trigger it.
      operationId: TriggerTrigramIndexBuildV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      responses:
        "202":
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/TrigramIndexBuildDataV3'
                required:
                - data
                type: object
          description: Accepted — index build job created.
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Unauthenticated — caller has no valid session.
        "409":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: |
            Conflict — a build that indexes `nodes` is already in flight. This includes the
            registry-roots build (`POST /internal/tree/registry-roots-index`), not just a repeat
            of this one: two CREATE INDEX CONCURRENTLY runs on one table wait out each other's
            transaction snapshots, pushing both toward their deadlines. Wait for the in-flight
            build to finish - the error names it - and retry.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Trigger the global search trigram index build
      tags:
      - Registry V3 - Internal
      x-internal: true
  /v3/internal/tree/registry-roots-index:
    get:
      description: |
        Report whether idx_nodes_registry_roots exists and is valid, read from the Postgres
        catalog, alongside the state of the most recent build job. Reported as exists=true and
        valid=false when an interrupted CONCURRENTLY build left it INVALID - never used by the
        planner but still maintained on every write, and in need of a rebuild.

        Any authenticated caller may read it.
      operationId: GetRegistryRootsIndexStatusV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/RegistryRootsIndexStatusDataV3'
                required:
                - data
                type: object
          description: Current index and build-job state.
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Unauthenticated — caller has no valid session.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get tree-view registry-roots index status
      tags:
      - Registry V3 - Internal
      x-internal: true
    post:
      description: |
        Trigger the build of idx_nodes_registry_roots, the partial btree backing root-node
        listing in the tree view. The build runs asynchronously as a job and returns immediately
        once accepted; CREATE INDEX CONCURRENTLY does not block reads or writes, unlike a plain
        CREATE INDEX, which would hold a SHARE lock on `nodes` for the whole build.

        Idempotent: an index that already exists, is valid, and whose definition still matches the
        DDL this job would issue is skipped. An index left INVALID by an interrupted build is
        dropped and rebuilt. An index whose definition has *diverged* fails the job instead of
        being rebuilt silently - a rebuild is minutes to hours of I/O, so the operator is told to
        drop it explicitly. Safe to call repeatedly.

        Note this is an environment-wide operation. The account identifier on the request is for
        routing/audit only - it neither scopes nor authorizes the work, since the index covers
        every tenant in the database. Any authenticated caller may trigger it.
      operationId: TriggerRegistryRootsIndexBuildV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      responses:
        "202":
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/RegistryRootsIndexBuildDataV3'
                required:
                - data
                type: object
          description: Accepted — index build job created.
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Unauthenticated — caller has no valid session.
        "409":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: |
            Conflict — a build that indexes `nodes` is already in flight. This includes the
            trigram build (`POST /internal/search/trigram-indexes`), not just a repeat of this
            one: two CREATE INDEX CONCURRENTLY runs on one table wait out each other's
            transaction snapshots, pushing both toward their deadlines. Wait for the in-flight
            build to finish - the error names it - and retry.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Trigger the tree-view registry-roots index build
      tags:
      - Registry V3 - Internal
      x-internal: true
  /v3/lifecycle/executions:
    get:
      description: Lists lifecycle executions for the given scope, optionally filtered
        by policy.
      operationId: ListLifecycleExecutionsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/LifecycleScopeParamV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/LifecycleExecutionStatusParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListLifecycleExecutionsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List lifecycle executions
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
    post:
      description: Triggers a dry-run execution for a lifecycle rule.
      operationId: CreateLifecycleExecutionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LifecycleDryRunRequestBodyV3'
        required: true
      responses:
        "201":
          $ref: '#/components/responses/LifecycleExecutionCreatedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Trigger a dry-run lifecycle execution
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
  /v3/lifecycle/executions/{executionId}:
    get:
      description: Returns a specific lifecycle execution by ID.
      operationId: GetLifecycleExecutionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/ExecutionIdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/LifecycleExecutionResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get a lifecycle execution
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
  /v3/lifecycle/executions/{executionId}/items:
    get:
      description: Lists the artifact-level items evaluated during a lifecycle execution.
      operationId: ListLifecycleExecutionItemsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/LifecycleExecutionItemStatusParamV3'
      - $ref: '#/components/parameters/LifecycleScopeParamV3'
      - $ref: '#/components/parameters/ExecutionIdPathParamV3'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLifecycleExecutionItemsResponseV3'
          description: Execution items list.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List lifecycle execution items
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
  /v3/lifecycle/executions/{executionId}/revert:
    post:
      description: |
        Reverts (restores) all artifacts that were soft-deleted by a specific lifecycle
        execution. Only artifacts with outcome "DELETED" are restored. Artifacts that were
        already hard-deleted or have been modified since the execution cannot be restored.
        Returns a summary of the revert operation including counts of successfully restored
        and failed artifacts.
      operationId: RevertLifecycleExecutionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/ExecutionIdPathParamV3'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevertLifecycleExecutionResponseV3'
          description: Revert operation completed.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Revert deleted artifacts from a lifecycle execution
      tags:
      - Registry V3 - Lifecycle
      x-internal: true
  /v3/lifecycle/rules:
    get:
      description: Lists lifecycle rules for the given scope.
      operationId: ListLifecycleRulesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/LifecycleScopeParamV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/LifecycleActionParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListLifecycleRulesResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List lifecycle rules
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
    post:
      description: Creates a new lifecycle rule.
      operationId: CreateLifecycleRuleV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LifecycleRuleRequestBodyV3'
        required: true
      responses:
        "201":
          $ref: '#/components/responses/LifecycleRuleCreatedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Create a lifecycle rule
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
  /v3/lifecycle/rules/{id}:
    delete:
      description: Deletes a lifecycle rule. Only the owner scope may delete.
      operationId: DeleteLifecycleRuleV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "204":
          description: Lifecycle rule deleted successfully.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Delete a lifecycle rule
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
    get:
      description: Returns a specific lifecycle rule by ID.
      operationId: GetLifecycleRuleV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/LifecycleRuleResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get a lifecycle rule
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
    patch:
      description: Partially updates a lifecycle rule. Only provided fields are modified.
      operationId: PatchLifecycleRuleV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LifecycleRulePatchBodyV3'
        required: true
      responses:
        "200":
          $ref: '#/components/responses/LifecycleRuleResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Partially update a lifecycle rule
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
    put:
      description: Updates an existing lifecycle rule.
      operationId: UpdateLifecycleRuleV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LifecycleRuleRequestBodyV3'
        required: true
      responses:
        "200":
          $ref: '#/components/responses/LifecycleRuleUpdatedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Update a lifecycle rule
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
  /v3/lifecycle/stats:
    get:
      description: Returns aggregate lifecycle execution metrics for the given scope.
      operationId: GetLifecycleStatsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/LifecycleScopeParamV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/LifecycleActionParamV3'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LifecycleStatsResponseV3'
          description: Lifecycle stats.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get lifecycle stats
      tags:
      - Registry V3 - Lifecycle
      x-internal: false
  /v3/metadata/{id}:
    delete:
      description: |
        Delete metadata key-value pairs by ID of metadata
      operationId: DeleteMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          description: Metadata deleted successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Delete Metadata
      tags:
      - Registry V3 - Metadata
      x-internal: false
  /v3/metadata/keys:
    get:
      description: Retrieve a paginated list of all available metadata keys.
      operationId: GetMetadataKeysV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SearchTermV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataKeysResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Metadata Keys
      tags:
      - Registry V3 - Metadata
      x-internal: false
  /v3/metadata/values:
    get:
      description: Retrieve all possible values for a specific metadata key.
      operationId: GetMetadataValuesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/KeyParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SearchTermV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataValuesResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Metadata Values
      tags:
      - Registry V3 - Metadata
      x-internal: false
  /v3/packages:
    get:
      description: Lists Packages
      operationId: ListPackagesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/MetadataFilterListParamV3'
      - $ref: '#/components/parameters/PackageKindQueryParamV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/DeleteFilterParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/IncludeMetaParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListPackageResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Packages
      tags:
      - Registry V3 - Packages
      x-internal: false
  /v3/packages/{id}:
    delete:
      description: Delete a package/image. force=false (soft delete) is not supported
        for UPSTREAM registries.
      operationId: DeletePackageV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ForceParamV3'
      responses:
        "200":
          description: Deleted successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Delete a Package
      tags:
      - Registry V3 - Packages
      x-internal: true
  /v3/packages/{id}/metadata:
    get:
      description: Retrieves all metadata for a package.
      operationId: GetPackageMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Package Metadata
      tags:
      - Registry V3 - Packages
      x-internal: false
    post:
      description: Creates or overwrites metadata for a package.
      operationId: UpsertPackageMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Upsert Package Metadata
      tags:
      - Registry V3 - Packages
      x-internal: false
    put:
      description: Replaces all metadata for a package.
      operationId: SavePackageMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Replace Package Metadata
      tags:
      - Registry V3 - Packages
      x-internal: false
  /v3/packages/{id}/restore:
    post:
      description: Restore a previously soft-deleted package/image by ID
      operationId: RestorePackageV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          description: Restored successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Restore a Soft-Deleted Package
      tags:
      - Registry V3 - Packages
      x-internal: true
  /v3/packages/{id}/terraform-backend/force-unlock:
    post:
      description: |
        Admin force-clears a Terraform Backend workspace lock (the workspace is the package identified by id). Idempotent — succeeds even if no lock is held. A reason is required and is recorded on the audit trail.
      operationId: ForceUnlockTerraformBackendV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForceUnlockTerraformBackendRequestV3'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForceUnlockTerraformBackendResponseV3'
          description: Lock cleared successfully.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Force-Unlock a Terraform Backend Workspace
      tags:
      - Registry V3 - Packages
      x-internal: true
  /v3/packages/rebuild-index:
    post:
      description: Trigger an asynchronous rebuild of the package index for the given
        package. The rebuild runs in the background; this endpoint returns immediately
        once the request is accepted. Package index rebuild is package-type specific
        — registries whose package type does not maintain a rebuildable per-package
        index return 405.
      operationId: RebuildPackageIndexV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RebuildPackageIndexRequestV3'
        description: Request body containing package ID to rebuild index for
        required: true
      responses:
        "202":
          $ref: '#/components/responses/RebuildPackageIndexAcceptedV3'
        "405":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Package index rebuild is not supported for this registry's
            package type.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Rebuild the index for a package
      tags:
      - Registry V3 - Packages
      x-internal: false
  /v3/packages/stats:
    post:
      description: Get statistics (artifactsCount, size, downloadCount) for a list
        of packages by their UUIDs.
      operationId: GetPackagesStatsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/PackagesStatsRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/PackagesStatsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get statistics for multiple packages
      tags:
      - Registry V3 - Packages
      x-internal: false
  /v3/principals:
    get:
      description: Lists Principals
      operationId: ListPrincipalsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/PrincipalTypeFilterParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListPrincipalsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Principals
      tags:
      - Registry V3 - Principals
      x-internal: false
  /v3/registries:
    get:
      description: Lists registries.
      operationId: ListRegistriesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryTypeParamV3'
      - $ref: '#/components/parameters/MetadataFilterListParamV3'
      - $ref: '#/components/parameters/RegistryScopeV3'
      - $ref: '#/components/parameters/DeleteFilterParamV3'
      - $ref: '#/components/parameters/SigningKeyIdFilterParamV3'
      - $ref: '#/components/parameters/IsInternalFilterParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/IncludeMetaParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListRegistryResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List registries
      tags:
      - Registry V3 - Registries
      x-internal: false
  /v3/registries/{id}:
    delete:
      description: Delete a registry (soft or hard delete based on deleteType parameter)
      operationId: DeleteRegistryV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ForceParamV3'
      responses:
        "200":
          description: Deleted successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Delete a Registry
      tags:
      - Registry V3 - Registries
      x-internal: true
  /v3/registries/{id}/metadata:
    get:
      description: Retrieves all metadata for a registry.
      operationId: GetRegistryMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Registry Metadata
      tags:
      - Registry V3 - Registries
      x-internal: false
    post:
      description: Creates or overwrites metadata for a registry.
      operationId: UpsertRegistryMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Upsert Registry Metadata
      tags:
      - Registry V3 - Registries
      x-internal: false
    put:
      description: Replaces all metadata for a registry.
      operationId: SaveRegistryMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Replace Registry Metadata
      tags:
      - Registry V3 - Registries
      x-internal: false
  /v3/registries/{id}/migrate:
    post:
      description: Migrate a generic registry to raw registry type. This will change
        the registry type from GENERIC to RAW and delete all images associated with
        the registry.
      operationId: MigrateRegistryV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          description: Migrated successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Migrate Generic Registry to Raw Registry
      tags:
      - Registry V3 - Registries
      x-internal: true
  /v3/registries/{id}/public-key:
    get:
      description: |
        Returns the public key for the signing key attached to a registry.
        This is a public endpoint (no auth required) used by package managers
        (apt, apk) to fetch the repository signing key.
      operationId: GetRegistryPublicKeyV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          content:
            text/plain:
              schema:
                example: |
                  -----BEGIN PGP PUBLIC KEY BLOCK-----
                  ...
                  -----END PGP PUBLIC KEY BLOCK-----
                type: string
          description: Public key content
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get registry public key
      tags:
      - Registry V3 - Registries
  /v3/registries/{id}/rebuild-index:
    post:
      description: Trigger an asynchronous rebuild of the repository index for the
        given registry. The rebuild runs in the background; this endpoint returns
        immediately once the request is accepted. Index rebuild is package-type specific
        — it is currently supported only for HELM_HTTP registries. Registries whose
        package type does not maintain a rebuildable index return 405.
      operationId: RebuildRegistryIndexV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "202":
          $ref: '#/components/responses/RebuildRegistryIndexAcceptedV3'
        "405":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Index rebuild is not supported for this registry's package
            type.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Rebuild the index for a registry
      tags:
      - Registry V3 - Registries
      x-internal: false
  /v3/registries/{id}/restore:
    post:
      description: Restore a previously soft-deleted registry by ID
      operationId: RestoreRegistryV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          description: Restored successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Restore a Soft-Deleted Registry
      tags:
      - Registry V3 - Registries
      x-internal: true
  /v3/registries/stats:
    post:
      description: Get statistics (packageCount, size, downloadCount, artifactsCount)
        for a list of registries by their UUIDs.
      operationId: GetRegistriesStatsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/RegistryScopeV3'
      requestBody:
        $ref: '#/components/requestBodies/RegistriesStatsRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/RegistriesStatsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get statistics for multiple registries
      tags:
      - Registry V3 - Registries
      x-internal: false
  /v3/scans:
    get:
      description: Get the list of artifact scan result for a particular scope
      operationId: GetArtifactScansV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/PolicySetRefParamV3'
      - $ref: '#/components/parameters/SecurityViolationCategoriesOptionalListParamV3'
      - $ref: '#/components/parameters/ScanIDQueryParamV3'
      - $ref: '#/components/parameters/ScanStatusParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/RegistryScopeV3'
      responses:
        "200":
          $ref: '#/components/responses/ListArtifactScanResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get the list of artifact scan result for a particular scope
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/{id}/details:
    get:
      description: Get the details of a artifact scan
      operationId: GetArtifactScanDetailsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/PolicySetRefParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ArtifactScanDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get the details of a artifact scan
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/bulk-evaluate:
    post:
      description: Triggers firewall policy evaluation for multiple artifacts
      operationId: InitiateBulkScanEvaluationV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/BulkScanEvaluationRequestV3'
      responses:
        "202":
          $ref: '#/components/responses/BulkScanEvaluationAcceptedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Initiate bulk scan evaluation
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/bulk-evaluate-sync:
    post:
      description: |
        Synchronously evaluates firewall policies for up to 50 artifacts and returns the scan result for each one. No data is written to the database.
      operationId: BulkEvaluateArtifactsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/BulkScanEvaluateSyncRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/BulkScanEvaluateSyncResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Synchronous bulk artifact scan evaluation (no DB write)
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/bulk-evaluate/{evaluation_id}:
    get:
      description: Returns the status of a bulk scan evaluation
      operationId: GetBulkScanEvaluationStatusV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/EvaluationIdParamV3'
      responses:
        "200":
          $ref: '#/components/responses/BulkScanEvaluationStatusResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get bulk scan evaluation status
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/evaluate:
    post:
      description: Re-evaluate artifact scan
      operationId: EvaluateArtifactScanV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/ArtifactScanEvaluateRequestV3'
      responses:
        "202":
          $ref: '#/components/responses/ArtifactScanEvaluateRequestAcceptedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Re-evaluate artifact scan
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/exceptions:
    get:
      description: List firewall exceptions with optional filters
      operationId: ListFirewallExceptionsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/FirewallExceptionStatusFilterParamV3'
      - $ref: '#/components/parameters/PackageNameFilterParamV3'
      - $ref: '#/components/parameters/VersionFilterParamV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/ExceptionIdFilterParamV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      responses:
        "200":
          $ref: '#/components/responses/ListFirewallExceptionResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List firewall exceptions
      tags:
      - Registry V3 - Firewall
      x-internal: false
    post:
      description: Create a firewall exception for an artifact
      operationId: CreateFirewallExceptionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/FirewallExceptionCreateRequestV3'
      responses:
        "201":
          $ref: '#/components/responses/FirewallExceptionCreatedV3'
        "409":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Duplicate exception.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Create a firewall exception
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/exceptions/{id}:
    delete:
      description: Delete a firewall exception by ID
      operationId: DeleteFirewallExceptionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "204":
          description: Firewall exception deleted successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Delete a firewall exception
      tags:
      - Registry V3 - Firewall
      x-internal: false
    put:
      description: Update a firewall exception. Only allowed when status is PENDING.
      operationId: UpdateFirewallExceptionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/FirewallExceptionUpdateRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/FirewallExceptionUpdatedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Update a firewall exception
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/exceptions/{id}/status:
    put:
      description: Update the status of a firewall exception (approve or reject)
      operationId: UpdateStatusFirewallExceptionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/FirewallExceptionApprovalRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/FirewallExceptionApprovedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Update status of a firewall exception
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/scans/versions:
    get:
      description: List versions for a specific package in a registry, for use when
        creating firewall exceptions
      operationId: ListFirewallExceptionVersionsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/RegistryIdFilterParamV3'
      - $ref: '#/components/parameters/PackageNameFilterParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      responses:
        "200":
          $ref: '#/components/responses/ListFirewallExceptionVersionsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List versions for firewall exceptions
      tags:
      - Registry V3 - Firewall
      x-internal: false
  /v3/signing-keys:
    get:
      description: |
        Lists signing keys for the current account/org/project with filtering and pagination.
        Results are ordered by creation time (newest first).
      operationId: ListSigningKeysV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/SigningKeyTypesFilterParamV3'
      - $ref: '#/components/parameters/SigningKeyStatusesFilterParamV3'
      - $ref: '#/components/parameters/SigningKeysScopeParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListSigningKeysResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List signing keys
      tags:
      - Registry V3 - Signing Keys
  /v3/signing-keys/{id}:
    delete:
      description: |
        Soft-deletes a signing key by marking it as DELETED. The key metadata is retained
        for audit purposes. The key must not be attached to any registry: if it is, the
        request fails with 409 and the error message lists every registry to detach first.
      operationId: DeleteSigningKeyV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "204":
          description: Signing key deleted successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Delete signing key (soft delete)
      tags:
      - Registry V3 - Signing Keys
    get:
      description: Retrieves detailed information about a specific signing key by
        ID.
      operationId: GetSigningKeyV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/SigningKeyDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get signing key details
      tags:
      - Registry V3 - Signing Keys
    patch:
      description: |
        Updates a signing key's status.
      operationId: UpdateSigningKeyV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateKeyRequestV3'
        required: true
      responses:
        "200":
          $ref: '#/components/responses/SigningKeyDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Update signing key
      tags:
      - Registry V3 - Signing Keys
  /v3/signing-keys/{id}/public-key:
    get:
      description: |
        Returns the public key for a signing key in ASCII-armored format
        (PGP for GPG keys, PEM for RSA keys). Used by clients to verify
        signatures.

        By default the key is returned inline as `text/plain`. Pass
        `download=true` to receive it as a file attachment instead, with a
        `Content-Disposition` header and a key-type-specific content type
        (`application/pgp-keys` with a `.asc` filename for GPG keys,
        `application/x-pem-file` with a `.rsa.pub` filename for RSA keys).
      operationId: GetSigningKeyPublicKeyV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/PublicKeyDownloadQueryParamV3'
      responses:
        "200":
          content:
            application/pgp-keys:
              schema:
                format: binary
                type: string
            application/x-pem-file:
              schema:
                format: binary
                type: string
            text/plain:
              schema:
                example: |
                  -----BEGIN PGP PUBLIC KEY BLOCK-----
                  ...
                  -----END PGP PUBLIC KEY BLOCK-----
                type: string
          description: |
            Public key content. Returned inline as `text/plain` by default, or
            as a file attachment when `download=true`.
          headers:
            Content-Disposition:
              description: |
                Attachment header with a filename based on key type. Only set
                when `download=true`.
              schema:
                example: attachment; filename="my-key.asc"
                type: string
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get public key
      tags:
      - Registry V3 - Signing Keys
  /v3/signing-keys/by-name/{key_name}:
    get:
      description: Retrieves a signing key by its exact name within the specified
        space scope.
      operationId: GetSigningKeyByNameV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - description: Exact name of the signing key
        in: path
        name: key_name
        required: true
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/SigningKeyDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get signing key by name
      tags:
      - Registry V3 - Signing Keys
      x-internal: true
  /v3/signing-keys/generate:
    post:
      description: |
        Generates a new signing key (GPG or RSA), stores it in Harness Secret Manager,
        and persists metadata to the database. The private key is never stored in the database.
      operationId: GenerateSigningKeyV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateKeyRequestV3'
        required: true
      responses:
        "201":
          $ref: '#/components/responses/SigningKeyDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Generate a new signing key
      tags:
      - Registry V3 - Signing Keys
  /v3/signing-keys/import:
    post:
      description: |
        Imports an existing signing key from Harness Secret Manager by validating it
        and storing metadata in the database. The private key remains in the user-provided
        secret reference (not copied).
      operationId: ImportSigningKeyV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportKeyRequestV3'
        required: true
      responses:
        "201":
          $ref: '#/components/responses/SigningKeyDetailsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Import an existing signing key
      tags:
      - Registry V3 - Signing Keys
  /v3/signing-keys/summary:
    get:
      description: |
        Returns aggregate signing key counts for the requested scope: the total
        number of keys, the number of registries referencing a key in that
        scope, and the number of ACTIVE keys expiring within the next 30 days.

        Counts apply to the requested scope only — they are not rolled up from
        parent or child scopes.
      operationId: GetSigningKeySummaryV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      responses:
        "200":
          $ref: '#/components/responses/SigningKeySummaryResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get signing key summary
      tags:
      - Registry V3 - Signing Keys
  /v3/system/info:
    get:
      description: |
        Returns system-level information for the Harness Artifact Registry,
        including the base registry URL for the account.
        Use this endpoint to discover the correct registry hostname
        for pulling and pushing artifacts.
      operationId: GetSystemInfoV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      responses:
        "200":
          $ref: '#/components/responses/SystemInfoResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get System Info
      tags:
      - Registry V3 - System
      x-internal: false
  /v3/tree/nodes/{node_id}/children:
    get:
      description: |
        Lists immediate children of a specific node (package/version/folder).
        Returns child nodes for tree navigation.
      operationId: ListNodeChildrenV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/NodeIdPathParamV3'
      - $ref: '#/components/parameters/TreeCursorParamV3'
      - $ref: '#/components/parameters/TreeSizeParamV3'
      - $ref: '#/components/parameters/TreeDeletedFilterParamV3'
      - $ref: '#/components/parameters/TreeCompactParamV3'
      responses:
        "200":
          $ref: '#/components/responses/TreeResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List node children
      tags:
      - Registry V3 - Tree View
      x-internal: false
  /v3/tree/registries/{registry_id}/nodes:
    get:
      description: |
        Lists top-level packages/folders under a specific registry.
        Returns immediate children of the registry for tree navigation.
      operationId: ListRegistryNodesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/RegistryIdPathParamV3'
      - $ref: '#/components/parameters/TreeCursorParamV3'
      - $ref: '#/components/parameters/TreeSizeParamV3'
      - $ref: '#/components/parameters/TreeDeletedFilterParamV3'
      - $ref: '#/components/parameters/TreeCompactParamV3'
      responses:
        "200":
          $ref: '#/components/responses/TreeResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List registry nodes
      tags:
      - Registry V3 - Tree View
      x-internal: false
  /v3/tree/roots:
    get:
      description: |
        Lists all registries at the root level with optional search and filters.
        Returns a hierarchical view of registries for tree navigation.

        `scope` is only accepted here, and is resolved exactly as it is for
        `ListRegistriesV3`: the current space, plus its ancestors or descendants. It has no
        equivalent on the levels below, because those are already bounded to the single
        registry named in the path.
      operationId: ListTreeRootsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/RegistryScopeV3'
      - $ref: '#/components/parameters/TreeCursorParamV3'
      - $ref: '#/components/parameters/TreeSizeParamV3'
      - $ref: '#/components/parameters/TreeDeletedFilterParamV3'
      - description: |
          Search term to filter registries by name (case-insensitive substring match).
          Search is supported at the root (registry) level only - there is no search across
          artifacts, images, versions or files, since that requires scanning unbounded
          subtrees. Cross-node search is planned via the Elasticsearch-backed index.
        in: query
        name: search
        schema:
          type: string
      - description: Filter by registry type
        in: query
        name: registry_type
        schema:
          type: string
      - description: Filter by package type
        in: query
        name: package_type
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/TreeResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List tree roots (registries)
      tags:
      - Registry V3 - Tree View
      x-internal: false
  /v3/versions:
    get:
      description: Lists versions of packages
      operationId: ListVersionsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      - $ref: '#/components/parameters/RegistryIdListOptionalParamV3'
      - $ref: '#/components/parameters/PackageIdListOptionalParamV3'
      - $ref: '#/components/parameters/PackageTypeListParamV3'
      - $ref: '#/components/parameters/DeleteFilterParamV3'
      - $ref: '#/components/parameters/MetadataFilterListParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - $ref: '#/components/parameters/IncludeMetaParamV3'
      - $ref: '#/components/parameters/UploadedByParamV3'
      - $ref: '#/components/parameters/PackageKindQueryParamV3'
      - $ref: '#/components/parameters/TagsListParamV3'
      - $ref: '#/components/parameters/RegistryTypeFilterParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ListVersionResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List versions of packages
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}:
    delete:
      description: Delete a version. force=false (soft delete) is not supported for
        UPSTREAM registries.
      operationId: DeleteVersionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ForceParamV3'
      responses:
        "200":
          description: Deleted successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Delete a Version
      tags:
      - Registry V3 - Versions
      x-internal: true
  /v3/versions/{id}/conan/recipe-revisions:
    get:
      description: List finalized Conan recipe revisions for a version.
      operationId: ListConanRecipeRevisionsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      responses:
        "200":
          $ref: '#/components/responses/ConanRecipeRevisionsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Conan Recipe Revisions
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/conan/recipe-revisions/{recipe_revision_id}/details:
    get:
      description: Get a Conan recipe revision (RREV) detail.
      operationId: GetConanRecipeRevisionDetailV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ConanRecipeRevisionPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ConanRecipeRevisionDetailResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Conan Recipe Revision Detail
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/conan/recipe-revisions/{recipe_revision_id}/packages:
    get:
      description: List the packages (PKGIDs) under a Conan recipe revision.
      operationId: ListConanPackagesV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ConanRecipeRevisionPathParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      responses:
        "200":
          $ref: '#/components/responses/ConanPackagesResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Conan Packages of a Recipe Revision
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/conan/recipe-revisions/{recipe_revision_id}/packages/{package_id}/details:
    get:
      description: Get a Conan package (PKGID) detail with its package revisions.
      operationId: GetConanPackageDetailV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ConanRecipeRevisionPathParamV3'
      - $ref: '#/components/parameters/ConanPackageIdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ConanPackageDetailResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Conan Package Detail
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/conan/recipe-revisions/{recipe_revision_id}/packages/{package_id}/package-revisions:
    get:
      description: List the package revisions (PREVs) under a Conan package.
      operationId: ListConanPackageRevisionsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ConanRecipeRevisionPathParamV3'
      - $ref: '#/components/parameters/ConanPackageIdPathParamV3'
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      responses:
        "200":
          $ref: '#/components/responses/ConanPackageRevisionsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List Conan Package Revisions of a Package
      tags:
      - Registry V3 - Versions
      x-internal: false
  ? /v3/versions/{id}/conan/recipe-revisions/{recipe_revision_id}/packages/{package_id}/package-revisions/{package_revision_id}/details
  : get:
      description: Get a Conan package revision (PREV) detail.
      operationId: GetConanPackageRevisionDetailV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - $ref: '#/components/parameters/ConanRecipeRevisionPathParamV3'
      - $ref: '#/components/parameters/ConanPackageIdPathParamV3'
      - $ref: '#/components/parameters/ConanPackageRevisionPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/ConanPackageRevisionDetailResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Conan Package Revision Detail
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/deployments:
    get:
      description: |
        List Harness CD deployments for a specific version. Returns the environments and services that are actively running this version, together with aggregate prod/non-prod counts in `meta`. For OCI-based package types (DOCKER, HELM) the artifact is identified by `image:tag` — supply `package_tag` or an empty response is returned. For all other package types the artifact is identified by `package_name/version_name`.
      operationId: ListVersionDeploymentsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      - description: |
          Filter by environment type. Allowed values: `PRODUCTION`, `PRE_PRODUCTION`.
        in: query
        name: env_type
        schema:
          enum:
          - PRODUCTION
          - PRE_PRODUCTION
          type: string
      - $ref: '#/components/parameters/PageNumberV3'
      - $ref: '#/components/parameters/PageSizeV3'
      - $ref: '#/components/parameters/SortV3'
      - $ref: '#/components/parameters/SearchTermV3'
      - description: |
          Tag to use when identifying the artifact in CD. Currently used for Docker images: provide the tag (e.g. `latest`) so the artifact is resolved as `image:tag`. For OCI-based package types (DOCKER, HELM), if this parameter is omitted no deployment data is returned.
        in: query
        name: package_tag
        schema:
          type: string
      responses:
        "200":
          $ref: '#/components/responses/ListVersionDeploymentsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: List deployments for a version
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/metadata:
    get:
      description: Retrieves all metadata for a version.
      operationId: GetVersionMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Version Metadata
      tags:
      - Registry V3 - Versions
      x-internal: false
    post:
      description: Creates or overwrites metadata for a version.
      operationId: UpsertVersionMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Upsert Version Metadata
      tags:
      - Registry V3 - Versions
      x-internal: false
    put:
      description: Replaces all metadata for a version.
      operationId: SaveVersionMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/MetadataRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/MetadataResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Replace Version Metadata
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/restore:
    post:
      description: Restore a previously soft-deleted version by ID
      operationId: RestoreVersionV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          description: Restored successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Restore a Soft-Deleted Version
      tags:
      - Registry V3 - Versions
      x-internal: true
  /v3/versions/{id}/tags:
    post:
      description: Add tags to version of package. Currently supported for only OCI
        package.
      operationId: AddVersionTagsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      requestBody:
        $ref: '#/components/requestBodies/AddTagsRequestV3'
      responses:
        "204":
          description: Tags added successfully
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Add tags to version of package
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/{id}/terraform-backend/rollback:
    post:
      description: |
        Promotes a historical Terraform Backend state version as the current state by copying it forward. The promoted state is written with a new serial. The operation is rejected while the workspace is locked.
      operationId: RollbackTerraformBackendV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          description: Rollback successful.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Roll Back a Terraform Backend Workspace
      tags:
      - Registry V3 - Packages
      x-internal: false
  /v3/versions/{id}/terraform-backend/state:
    get:
      description: |
        Returns the raw Terraform state (JSON) captured at a specific version of a Terraform Backend workspace. Resolves the version id to its serial and streams the state file stored at that serial, enabling a version to be diffed against an earlier one. The state bytes are always streamed through this service, including when the content is stored remotely, so that browser clients can read the response directly.
      operationId: GetTerraformBackendStateV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/IdPathParamV3'
      responses:
        "200":
          $ref: '#/components/responses/TerraformBackendStateResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get Terraform Backend state for a version
      tags:
      - Registry V3 - Versions
      x-internal: true
  /v3/versions/rebuild-metadata:
    post:
      description: Trigger metadata rebuild for all versions in a registry
      operationId: RebuildVersionMetadataV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RebuildVersionMetadataRequestV3'
        description: Request body containing registry ID to rebuild metadata
        required: true
      responses:
        "202":
          $ref: '#/components/responses/RebuildVersionMetadataAcceptedV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Rebuild metadata for all versions in a registry
      tags:
      - Registry V3 - Versions
      x-internal: false
  /v3/versions/stats:
    post:
      description: Get statistics (deploymentMetadata, downloadCount, fileCount, scanStatus,
        scanID, size, artifactKey) for a list of versions by their UUIDs.
      operationId: GetVersionsStatsV3
      parameters:
      - $ref: '#/components/parameters/AccountIdentifierV3'
      - $ref: '#/components/parameters/OrgIdentifierV3'
      - $ref: '#/components/parameters/ProjectIdentifierV3'
      requestBody:
        $ref: '#/components/requestBodies/VersionsStatsRequestV3'
      responses:
        "200":
          $ref: '#/components/responses/VersionsStatsResponseV3'
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV3'
          description: Error response.
      summary: Get statistics for multiple versions
      tags:
      - Registry V3 - Versions
      x-internal: false
servers:
- url: /api
tags:
- description: APIs to create, update, list registries
  name: Registries
- description: APIs to get, list artifacts
  name: Artifacts
- description: APIs to get details of docker artifacts
  name: Docker Artifacts
- description: APIs to get details of helm artifacts
  name: Helm Artifacts
- description: APIs to create, update, list webhooks
  name: Webhooks
- description: registry V2 endpoints
  name: Registry V2
- description: V3 registries endpoints
  name: Registry V3 - Registries
- description: V3 packages endpoints
  name: Registry V3 - Packages
- description: V3 versions endpoints
  name: Registry V3 - Versions
- description: V3 files endpoints
  name: Registry V3 - Files
- description: V3 metadata endpoints
  name: Registry V3 - Metadata
- description: V3 firewall endpoints
  name: Registry V3 - Firewall
- description: V3 transfer endpoints
  name: Registry V3 - Transfer
- description: V3 system-level endpoints for registry configuration and discovery
  name: Registry V3 - System
- description: V3 lifecycle rule endpoints
  name: Registry V3 - Lifecycle
- description: V3 tree view endpoints for hierarchical navigation
  name: Registry V3 - Tree View
- description: V3 internal admin endpoints for search backfill
  name: Registry V3 - Internal
- description: V3 principal endpoints
  name: Registry V3 - Principal
- description: V3 signing key management endpoints
  name: Registry V3 - Signing Keys
