openapi: 3.2.0 info: title: Harness Registry V2 API version: '1.0' description: The Harness Software Delivery Platform uses OpenAPI Specification v3.0. contact: name: API Support email: contact@harness.io url: https://harness.io/ x-logo: url: https://mma.prnewswire.com/media/779232/Harnes_logo_horizontal.jpg?p=facebook altText: Harness termsOfService: https://harness.io/terms-of-use/ servers: - url: https://app.harness.io description: Harness host URL - url: https://{vanity} description: Vanity URL variables: vanity: default: app.harness.io security: - x-api-key: [] tags: - description: registry V2 endpoints name: Registry V2 paths: /har/api/v2/artifacts: get: description: Lists all the Versions. operationId: ListVersions parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $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/RegistrySearchTerm' - $ref: '#/components/parameters/PackageTypeParam' - $ref: '#/components/parameters/DeleteFilterParam' responses: '200': $ref: '#/components/responses/ListVersionResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: List Versions tags: - Registry V2 x-internal: true /har/api/v2/copy: post: operationId: Copy parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $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/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Copy Artifact tags: - Registry V2 x-internal: true /har/api/v2/files/{file_name}: get: operationId: GetFile parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $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/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Download file using file path tags: - Registry V2 x-internal: true /har/api/v2/files/bulk-download: post: operationId: CreateBulkDownloadRequest parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' requestBody: $ref: '#/components/requestBodies/BulkDownloadFilesRequest' responses: '200': $ref: '#/components/responses/CreateBulkDownloadRequestResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Create a bulk download request tags: - Registry V2 x-internal: true /har/api/v2/files/bulk-download/{download_id}: get: operationId: GetBulkDownloadRequestStatus parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $ref: '#/components/parameters/DownloadId' responses: '200': $ref: '#/components/responses/GetBulkDownloadRequestStatusResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Get bulk download request status tags: - Registry V2 x-internal: true /har/api/v2/files/search: get: description: Search all the files. operationId: SearchFiles parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $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/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Search Files tags: - Registry V2 x-internal: true /har/api/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/RegistryAccountIdentifier' requestBody: $ref: '#/components/requestBodies/MetadataRequest' responses: '200': $ref: '#/components/responses/Success' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' 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/RegistryAccountIdentifier' - $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/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' 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/RegistryAccountIdentifier' requestBody: $ref: '#/components/requestBodies/MetadataRequest' responses: '200': $ref: '#/components/responses/MetadataResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' 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/RegistryAccountIdentifier' requestBody: $ref: '#/components/requestBodies/MetadataRequest' responses: '200': $ref: '#/components/responses/MetadataResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Save Metadata tags: - Registry V2 x-internal: true /har/api/v2/metadata/keys: get: description: Retrieve a paginated list of all available metadata keys. operationId: GetMetadataKeys parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $ref: '#/components/parameters/OrgIdentifier' - $ref: '#/components/parameters/ProjectIdentifier' - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/RegistrySearchTerm' responses: '200': $ref: '#/components/responses/MetadataKeysResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Get Metadata Keys tags: - Registry V2 x-internal: true /har/api/v2/metadata/values: get: description: Retrieve all possible values for a specific metadata key. operationId: GetMetadataValues parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $ref: '#/components/parameters/OrgIdentifier' - $ref: '#/components/parameters/ProjectIdentifier' - $ref: '#/components/parameters/KeyParam' - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/RegistrySearchTerm' responses: '200': $ref: '#/components/responses/MetadataValuesResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Get Metadata Values tags: - Registry V2 x-internal: true /har/api/v2/oci/tags: post: description: Add OCI Artifact Tags. operationId: AddOciArtifactTags parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $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/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: Add tags to OCI artifact tags: - Registry V2 x-internal: true /har/api/v2/packages: get: description: Lists all the Image/Package operationId: ListPackages parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $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/RegistrySearchTerm' - $ref: '#/components/parameters/ArtifactTypeParam' - $ref: '#/components/parameters/PackageTypeParam' - $ref: '#/components/parameters/DeleteFilterParam' responses: '200': $ref: '#/components/responses/ListPackageResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: List Image/Package tags: - Registry V2 x-internal: true /har/api/v2/registries: get: description: Lists all the registries. operationId: ListRegistries parameters: - $ref: '#/components/parameters/RegistryAccountIdentifier' - $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/RegistrySearchTerm' - $ref: '#/components/parameters/RegistryScope' - $ref: '#/components/parameters/DeleteFilterParam' responses: '200': $ref: '#/components/responses/ListRegistryResponse' '400': $ref: '#/components/responses/RegistryBadRequest' '401': $ref: '#/components/responses/RegistryUnauthenticated' '403': $ref: '#/components/responses/RegistryUnauthorized' '404': $ref: '#/components/responses/RegistryNotFound' '500': $ref: '#/components/responses/RegistryInternalServerError' summary: List registries tags: - Registry V2 x-internal: true components: responses: RegistryUnauthorized: content: application/json: schema: $ref: '#/components/schemas/RegistryError' description: Access denied due to insufficient permissions CreateBulkDownloadRequestResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/CreateBulkDownloadRequestResponseOutput' status: $ref: '#/components/schemas/RegistryStatus' required: - status - data type: object description: Response containing status of bulk download operation RegistryUnauthenticated: content: application/json: schema: $ref: '#/components/schemas/RegistryError' description: Authentication failed or missing credentials ListVersionResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/ListVersion' status: $ref: '#/components/schemas/RegistryStatus' required: - status - data type: object description: response for list version 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/RegistryStatus' required: - status - data type: object description: Paginated response containing all possible values for a specific metadata key CopyResponse: content: application/json: schema: properties: status: $ref: '#/components/schemas/RegistryStatus' required: - status type: object description: Response containing status of copy operation DownloadFileResponse: content: application/octet-stream: schema: format: binary type: string description: Response containing file content RegistryInternalServerError: content: application/json: schema: $ref: '#/components/schemas/RegistryError' description: An unexpected server error occurred ListRegistryResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/ListRegistry' status: $ref: '#/components/schemas/RegistryStatus' required: - status - data type: object description: response for list registry Redirect: description: Temporary Redirect headers: Location: description: The URL of the redirected resource schema: format: uri type: string 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 MetadataResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/MetadataOutput' status: $ref: '#/components/schemas/RegistryStatus' required: - status - data type: object description: Response containing all metadata entries for the requested entity MetadataKeysResponse: content: application/json: schema: properties: data: items: description: A unique metadata key name example: environment type: string type: array status: $ref: '#/components/schemas/RegistryStatus' required: - status - data type: object description: Paginated response containing all available metadata keys in the registry RegistryBadRequest: content: application/json: schema: $ref: '#/components/schemas/RegistryError' description: The request was invalid or malformed RegistryNotFound: content: application/json: schema: $ref: '#/components/schemas/RegistryError' description: The requested resource was not found GetBulkDownloadRequestStatusResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/BulkDownloadRequestStatusOutput' status: $ref: '#/components/schemas/RegistryStatus' required: - status - data type: object description: Response containing status of bulk download operation AddTagsResponse: content: application/json: schema: properties: status: $ref: '#/components/schemas/RegistryStatus' required: - status type: object description: response for add tags request Success: content: application/json: schema: properties: status: $ref: '#/components/schemas/RegistryStatus' required: - status type: object description: Generic success response ListPackageResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/ListPackage' status: $ref: '#/components/schemas/RegistryStatus' required: - status - data type: object description: response for list package schemas: CreateBulkDownloadRequestResponseOutput: properties: downloadId: description: Unique identifier for the download request example: 12345678-1234-1234-1234-123456789012 type: string required: - downloadId type: object BulkDownloadRequestStatus: description: Status of the bulk download operation enum: - pending - processing - success - failed type: string PackageType: description: refers to package enum: - DOCKER - MAVEN - PYTHON - GENERIC - HELM - NUGET - NPM - RPM - CARGO - COMPOSER - GO - HUGGINGFACE - CONDA - DART - SWIFT - PUPPET - RUBY - CRAN - RAW - HELM_HTTP - DEBIAN - CONAN - TERRAFORM type: string 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 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 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 RegistryArtifactType: description: refers to artifact type enum: - model - dataset - module - provider type: string DeploymentMetadata: properties: nonProdEnvCount: type: integer prodEnvCount: type: integer required: - prodEnvCount - nonProdEnvCount type: object 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 FileMetadata: description: File Metadata properties: downloadUrl: type: string filename: type: string id: type: string sha256: type: string required: - id - downloadUrl - sha256 - filename 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 RegistryError: 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 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 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 MetadataType: description: Indicates if metadata was manually added (MANUAL) or system-generated (AUTO) enum: - MANUAL - AUTO example: MANUAL type: string RegistryType: description: refers to type of registry i.e virtual or upstream discriminator: propertyName: type enum: - VIRTUAL - UPSTREAM type: string AddTags: properties: package: type: string tags: items: type: string type: array version: type: string required: - version - tags - package type: object VersionMetadata: description: Version Metadata properties: artifactKey: additionalProperties: true type: object artifactType: $ref: '#/components/schemas/RegistryArtifactType' 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 PackageMetadata: description: Package Metadata properties: artifactType: $ref: '#/components/schemas/RegistryArtifactType' 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 PerformedBy: description: Principal who performed the relevant action properties: email: type: string name: type: string required: - name - email type: object ArtifactEntityMetadata: additionalProperties: true description: Artifact Entity Metadata type: object RegistryStatus: description: Request processing status indicator enum: - SUCCESS - FAILURE - ERROR type: string 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 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 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 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 requestBodies: MetadataRequest: content: application/json: schema: $ref: '#/components/schemas/MetadataInput' description: Request body containing metadata key-value pairs to add or update BulkDownloadFilesRequest: content: application/json: schema: $ref: '#/components/schemas/BulkDownloadFilesRequestInput' description: request to bulk download files AddTagsRequest: content: application/json: schema: $ref: '#/components/schemas/AddTags' description: request to add tags to a manifest parameters: RegistryTypeParam: description: Registry Type in: query name: type schema: enum: - VIRTUAL - UPSTREAM type: string PackageParam: description: 'Name of the package Example: `nginx` or `redis` ' in: query name: package schema: type: string SrcArtifact: description: Name of the package/artifact in: query name: src_artifact 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 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 SrcVersion: description: Version of the package/artifact in: query name: src_version 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 RegistrySearchTerm: 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 DownloadId: description: Download ID in: path name: download_id required: true schema: type: string RegistryAccountIdentifier: 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 Query: description: "Advanced search expression (query language).\n\nQuery structure\n- A query clause consists of a field followed by an operator followed by a value.\n Example clause: `email:\"amy@rocketrides.io\"`\n - field: `email`\n - operator: `:`\n - value: `amy@rocketrides.io`\n\nOperators\n- `:` exact match operator (case sensitive): `field:value`\n\nCombining clauses\n- You can combine up to 10 query clauses.\n- Clauses can be separated by a space or by using `AND` / `OR` keywords.\n- You can’t combine `AND` and `OR` in the same query.\n- Parentheses are not supported.\n- If clauses are separated by a space, clauses are combined using `AND` logic.\n\nSupported query fields for files search api\n- `package` (string)\n- `version` (string)\n- `groupId` (string)\n- `artifactId` (string)\n- `classifier` (string)\n- `extension` (string)\n- `fileName` (string)\n\nExamples\n- `query=package:\"usd\" AND version:\"1.0.0\"`\n- `query=fileName:\"report\" OR extension:\"zip\"`\n" in: query name: query required: true schema: type: string TargetOrgIdentifier: description: 'Unique identifier for the organization within the account. Example: `default` or `engineering_org` ' in: query name: target_org_identifier 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 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 ProjectIdentifier: description: 'Unique identifier for the project within the organization. Example: `my_project` or `frontend_services` ' in: query name: project_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 FileName: description: Name of file to download in: path name: file_name required: true 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 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 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 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 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 DeleteFilterParam: in: query name: deleted schema: default: EXCLUDE enum: - EXCLUDE - INCLUDE - ONLY type: string SrcRegistryIdentifierParam: description: Source Registry name in: query name: src_registry_identifier required: true schema: type: string artifactTypeParam: description: artifact type. in: query name: artifact_type schema: enum: - model - dataset - module - provider type: string 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 VersionParam: description: 'Name of the package version Example: `latest` or `1.1.1` ' in: query name: version schema: type: string 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 MetadataFilter: description: Filter by metadata using key:value format in: query name: metadata schema: items: type: string type: array OrgIdentifier: description: 'Unique identifier for the organization within the account. Example: `default` or `engineering_org` ' in: query name: org_identifier schema: type: string PackageTypeParam: description: Registry Package Type in: query name: package_type schema: items: type: string type: array FilePath: description: Full path of file to download in: query name: path required: true schema: type: string 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 securitySchemes: x-api-key: name: x-api-key type: apiKey in: header description: API key is a token provided while making the API calls. This is used to authenticate the client at the exposed endpoint. externalDocs: description: Find out more about Swagger url: http://swagger.io x-stoplight: id: oc91t4vrfnjyi x-tagGroups: - name: Organizations tags: - Organization - name: Projects tags: - Org Project - Project - name: Secrets tags: - Account Secret - Org Secret - Project Secret - Secrets - name: Connectors tags: - Account Connector - Org Connector - Project Connector - Connectors - GoogleSecretManagerConnector - name: Roles tags: - Account Roles - Organization Roles - Project Roles - Roles - name: Resource Groups tags: - Account Resource Groups - Organization Resource Groups - Project Resource Groups - Filter Resource Groups - Harness Resource Group - Zendesk - name: Role Assignments tags: - Account Role Assignments - Org Role Assignments - Project Role Assignments - Role Assignments - name: Platform tags: - Access Control List - Account Banner - Account Banner - Account Licensed Modules - Account License Type - Account Webhooks - AccountSetting - Accounts - Analyze Account Access Policy - Analyze Organization Access Policy - Analyze Project Access Policy - ApiKey - Audit - AuditFilters - Authentication Settings - Canny - Devops Essentials License Data By Account - EULA - Filter - Harness Resource Type - Invite - IP Allowlist - Nextgen Ldap - Notification Channels - Notification Rules - OIDC - Oidc-Access-Token - Oidc-ID-Token - Org Webhooks - Permissions - Project Webhooks - Secret Managers - Service Account - Setting - SMTP - Source Code Manager - Token - User - User Group - Variables - name: Delegate tags: - Agent mTLS Endpoint Management - Delegate Download Resource - Delegate Group Tags Resource - Delegate Setup Resource - Delegate Token Resource - name: Pipelines tags: - Pipelines - Input Sets - Approvals - Pipeline Execution - Pipeline Dashboard - Pipeline Input Set - Pipeline - Pipeline Execution Details - Pipeline Execute - Pipeline Refresh - Pipeline data retention - Triggers - TriggersEvents - Webhook Triggers - Webhook Event Handler - DryRunPipeline - name: Artifact Registry tags: - Registries - Artifacts - Docker Artifacts - Helm Artifacts - quarantine - Webhooks - Spaces - Replication - Registry V3 - Registries - Registry V3 - Packages - Registry V3 - Versions - Registry V3 - Files - Registry V3 - Metadata - Registry V3 - Firewall - Registry V3 - Transfer - name: Database DevOps tags: - Database Schema - Database Instance - Deployed State - Execution Config - Migration State - name: CD tags: - K8s Release Service Mapping - CustomDeployment - Environments - EnvironmentGroup - Infrastructures - Usage - File Store - Service Dashboard - ServiceOverrides - Rollback - tas - name: Deployment Freeze tags: - Freeze CRUD - Freeze Evaluation - Freeze Schema - name: Services tags: - Account Services - Org Services - Project Services - Services - name: Rancher Infrastructures tags: - Account Rancher Infrastructure - Org Rancher Infrastructure - Project Rancher Infrastructure - name: Templates tags: - Account Template - Org Template - Project Template - Templates - Global Templates - name: GitOps tags: - Agents - Application - Applications - Certificates - Clusters - Dashboard Aggregates - Dashboards - GnuPGP Keys - GPG Keys - Hosts - Project mappings - Projects - Reconciler - Repositories - Repository Certificates - Repository credentials - ValidateHost - name: GitX tags: - GitX Webhooks - Org Gitx Webhooks - Project Gitx Webhooks - name: CACM tags: - Anomalies Ignorelist Rule - Anomalies - BI Dashboards - Budgets - Budget Groups - Cost Categories - Cloud Accounts - K8S Connectors Metadata - Notification Settings v2 - Overview - Data Job Status - Recommendation cost settings - Unit Metric - Anomaly Comments - Cloud and AI cost anomaly details - Cloud and AI cost anomalies v2 - Cost Details - Currency Preferences - External Data Provider - AiEngine - CACM governance cost settings - Governance Enforcement Recommendation APIs - Governance Alert - Governance Overview - Governance Recommendation APIs - RuleEnforcement - Rule Executions - Rule - Rule Sets - Perspectives Folders - Perspective Reports - Perspectives - Cost Category Jira Project Mapping - Recommendations Details - Recommendations - Recommendation Jira - Recommendation Preferences - Recommendation Presets - Recommendation Servicenow - Recommendation Tags - Recommendation Ignore List - AutoStopping Rules - AutoStopping Rules V2 - AutoStopping Load Balancers - AutoStopping Fixed Schedules - AutoStopping Alerts - Commitment Orchestrator Events APIs - name: Feature Flags tags: - API Keys - Feature Flags - Targets - Target Groups - Environment Perspectives - Anomalies - Proxy - Tags - name: SRM tags: - Monitored Services - SLOs dashboard - NG SLOs - SLOs - Downtime - Srm Notification - name: Internal Developer Portal - IDP tags: - Entities - Teams - CatalogCustomProperties - Scores - DataSource - KubernetesDataPoints - AggregationRules - AppConfig - PluginInfo - LayoutProxy - Kinds - LayoutsV3 - LayoutsV4 - name: Environment Management - IDP tags: - Environment - Infrastructure - Instance - name: Custom Dashboards tags: - aida - dashboards - downloads - embed - folders - name: Policy Management tags: - dashboard - examples - policies - evaluate - evaluations - policysets - system - name: Code tags: - repository - status_checks - pullreq - upload - webhook - resource - rules - labels - name: IaCM tags: - usage - approvals - costs - executions - module-registry - workspaces - settings - tf-standard-backend - variables - name: STO tags: - Exemptions - Issues - Scans - Products - Test Targets - Target Variants - name: SEI tags: - Collection categories - Collections - Contributors - DORA - name: Git Sync (deprecated) tags: - Git Branches - Git Full Sync - Git Sync Settings - Git Sync - Git Sync Errors - name: Error Models tags: - Error Response - Governance Metadata - name: Supply Chain Security tags: - integration - PipelineInfraConfig - SBOM - Integration Step Config - Delete Step Config - Delete Repositories - Pipeline Store Config - Evidence Vault [Beta] - name: Release Management tags: - Release Groups - Releases - Orchestration Processes - Orchestration Activities - Orchestration Executions - Conflicts - Freeze - Reports - Uploads - name: Resilience Testing tags: - Actions - Action Templates - Chaos Components - Chaos Hubs - ChaosGuard Conditions - ChaosGuard Rules - DR Tests - Experiments - Experiment Templates - Faults - Fault Templates - Chaos Infrastructure - Health - Network Maps - Onboarding - Probes - Probe Templates - Chaos Recommendations - Risks