Registry V3 Firewall
V3 firewall endpoints
Adds build info generated by CLI after package installation.
Unique identifier for the Harness account.
Request to add build info
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.
DOCKERUUID of the registry to add build info for
Status of the evaluation
Build info added successfully
No content
Error response.
POST /api/v3/build-info?account_identifier=text HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 325
{
"metadata": [
{
"nodeKey": "text",
"parentNodeKey": "text"
}
],
"packageType": "DOCKER",
"pipelineContext": {
"executionId": "text",
"orgId": "text",
"pipelineId": "text",
"projectId": "text",
"stageId": "text",
"stepId": "text"
},
"registryId": "123e4567-e89b-12d3-a456-426614174000",
"rootPackage": {
"name": "text",
"version": "text"
},
"status": "PENDING"
}No content
Returns all pipeline build info details.
Filter by package name
Filter by version
Filter by registry ID
Unique identifier for the Harness account.
Unique identifier for the organization within the account.
Example: default or engineering_org
Unique identifier for the project within the organization.
Example: my_project or frontend_services
Filter by pipeline identifier
Scan Identifier
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
0The number of items to return per page.
Controls the page size for paginated results.
Example: size=50 returns up to 50 items per page
20Filter by projects
Filter by categories
Registry Package Type
Scope of registries to list
- none – current space only (default) * ancestors – current space plus all parent spaces * descendants – current space plus all child spaces
If omitted,noneis assumed.
Response containing pipeline build info details
Pagination metadata.
pageselects which page of results to return (0 = first page).sizecontrols how many items are returned per page.hasMoreis true if more results exist after this page.
True if more results exist after this page.
trueThe current page (0-indexed)
0Number of items per page
20Error response.
GET /api/v3/build-info/pipeline/details?account_identifier=text HTTP/1.1
Accept: */*
{
"hasMore": true,
"page": 0,
"size": 20,
"meta": {
"totalBlockedDependencies": 1,
"totalBlockedPipelines": 1
},
"pipelineData": [
{
"lastExecutionTime": 1,
"orgIdentifier": "text",
"packageType": "DOCKER",
"pipelineExecutionIdentifier": "text",
"pipelineIdentifier": "text",
"projectIdentifier": "text",
"rootPackageName": "text",
"rootPackageVersion": "text",
"securityViolationCategories": [
"Security"
],
"stageIdentifier": "text",
"stepIdentifier": "text",
"violations": [
{
"package": "text",
"purl": "text",
"scanId": "text",
"securityViolationCategories": [
"Security"
],
"status": "BLOCKED"
}
]
}
]
}Get the list of artifact scan result for a particular scope
Unique identifier for the Harness account.
Unique identifier for the organization within the account.
Example: default or engineering_org
Unique identifier for the project within the organization.
Example: my_project or frontend_services
Registry Package Type
Unique id for the registry. Note: This parameter should have one id if package query param is provided
["12345678-1234-1234-1234-123456789012","aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"]Unique reference for the opa policy set. Example: my-policy or account.my-policy
Filter by categories
Scan Identifier
Status of an artifact scan evaluation.
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
0The number of items to return per page.
Controls the page size for paginated results.
Example: size=50 returns up to 50 items per page
20The 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
Search term for filtering results.
Example: search_term=prod might match keys like "production", "prod-env", etc.
Scope of registries to list
- none – current space only (default) * ancestors – current space plus all parent spaces * descendants – current space plus all child spaces
If omitted,noneis assumed.
Response containing list of artifact scan
The total number of items
1The total number of pages
100The current page
0The number of items per page
1Error response.
GET /api/v3/scans?account_identifier=text HTTP/1.1
Accept: */*
{
"data": [
{
"RegistryOrgId": "text",
"RegistryProjectId": "text",
"buildDetails": [
{
"lastExecutionTime": 1,
"latestExecutionId": "text",
"pipelineId": "text",
"rootPackage": "text",
"stageId": "text",
"stepId": "text"
}
],
"exemptionStatus": {
"createdAt": 1736360000123,
"expirationAt": 1736360000123,
"id": "123e4567-e89b-12d3-a456-426614174000",
"status": "PENDING"
},
"id": "text",
"lastEvaluatedAt": "text",
"lastEvaluatedBy": "text",
"packageName": "text",
"packageType": "DOCKER",
"parentRegistryId": "text",
"parentRegistryName": "text",
"parentRegistryOrgId": "text",
"parentRegistryProjectId": "text",
"policySets": [
{
"policySetName": "text",
"policySetRef": "text"
}
],
"purl": "text",
"registryId": "text",
"registryName": "text",
"rootPackages": [
"text"
],
"scanStatus": "BLOCKED",
"securityViolationCategories": [
"Security"
],
"totalAffectedPipelines": 1,
"version": "text",
"versionId": "text"
}
],
"itemCount": 1,
"meta": {
"blockedCount": 95,
"totalCount": 5,
"warnCount": 5
},
"pageCount": 100,
"pageIndex": 0,
"pageSize": 1
}Get the details of a artifact scan
Unique identifier for the Harness account.
Unique reference for the opa policy set. Example: my-policy or account.my-policy
Response containing details of artifact scan
Error response.
GET /api/v3/scans/{id}/details?account_identifier=text HTTP/1.1
Accept: */*
{
"data": {
"buildDetails": [
{
"lastExecutionTime": 1,
"latestExecutionId": "text",
"pipelineId": "text",
"rootPackage": "text",
"stageId": "text",
"stepId": "text"
}
],
"createdAt": "text",
"exemptionStatus": {
"createdAt": 1736360000123,
"expirationAt": 1736360000123,
"id": "123e4567-e89b-12d3-a456-426614174000",
"status": "PENDING"
},
"fixVersionDetails": {
"currentVersion": "1.2.0",
"fixVersion": "1.2.2",
"fixVersionAvailable": true
},
"id": "123e4567-e89b-12d3-a456-426614174000",
"lastEvaluatedAt": "text",
"packageName": "text",
"packageType": "DOCKER",
"parentRegistryId": "123e4567-e89b-12d3-a456-426614174000",
"parentRegistryName": "text",
"parentRegistryOrgId": "text",
"parentRegistryProjectId": "text",
"policySetFailureDetails": [
{
"policyFailureDetails": [
{
"vulnerabilities": [
{
"cveId": "text",
"cvssScore": 1,
"cvssThreshold": 1
}
]
}
],
"policySetName": "text",
"policySetRef": "text"
}
],
"purl": "text",
"registryId": "123e4567-e89b-12d3-a456-426614174000",
"registryName": "text",
"registryOrgId": "text",
"registryProjectId": "text",
"rootPackages": [
"text"
],
"scanStatus": "BLOCKED",
"version": "text",
"versionId": "123e4567-e89b-12d3-a456-426614174000"
}
}Triggers firewall policy evaluation for multiple artifacts
Unique identifier for the Harness account.
Unique identifier for the organization within the account.
Example: default or engineering_org
Unique identifier for the project within the organization.
Example: my_project or frontend_services
Request to initiate bulk scan evaluation
Registry identifier
Bulk scan evaluation request accepted for processing
Error response.
POST /api/v3/scans/bulk-evaluate?account_identifier=text HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 107
{
"artifacts": [
{
"packageName": "text",
"version": "text"
}
],
"registryId": "123e4567-e89b-12d3-a456-426614174000"
}{
"data": {
"evaluationId": "text"
}
}Synchronously evaluates firewall policies for up to 50 artifacts and returns the scan result for each one. No data is written to the database.
Unique identifier for the Harness account.
Unique identifier for the organization within the account.
Example: default or engineering_org
Unique identifier for the project within the organization.
Example: my_project or frontend_services
Request body for synchronous bulk artifact scan evaluation. Maximum 50 artifacts per request. No data is written to the database.
Registry identifier
When true, skip the cached scan result and force a fresh OPA evaluation
Synchronous bulk scan evaluation response
Error response.
POST /api/v3/scans/bulk-evaluate-sync?account_identifier=text HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 124
{
"artifacts": [
{
"packageName": "text",
"version": "text"
}
],
"registryId": "123e4567-e89b-12d3-a456-426614174000",
"skipCache": true
}{
"data": [
{
"buildDetails": [
{
"lastExecutionTime": 1,
"latestExecutionId": "text",
"pipelineId": "text",
"rootPackage": "text",
"stageId": "text",
"stepId": "text"
}
],
"createdAt": "text",
"exemptionStatus": {
"createdAt": 1736360000123,
"expirationAt": 1736360000123,
"id": "123e4567-e89b-12d3-a456-426614174000",
"status": "PENDING"
},
"fixVersionDetails": {
"currentVersion": "1.2.0",
"fixVersion": "1.2.2",
"fixVersionAvailable": true
},
"id": "123e4567-e89b-12d3-a456-426614174000",
"lastEvaluatedAt": "text",
"packageName": "text",
"packageType": "DOCKER",
"parentRegistryId": "123e4567-e89b-12d3-a456-426614174000",
"parentRegistryName": "text",
"parentRegistryOrgId": "text",
"parentRegistryProjectId": "text",
"policySetFailureDetails": [
{
"policyFailureDetails": [
{
"vulnerabilities": [
{
"cveId": "text",
"cvssScore": 1,
"cvssThreshold": 1
}
]
}
],
"policySetName": "text",
"policySetRef": "text"
}
],
"purl": "text",
"registryId": "123e4567-e89b-12d3-a456-426614174000",
"registryName": "text",
"registryOrgId": "text",
"registryProjectId": "text",
"rootPackages": [
"text"
],
"scanStatus": "BLOCKED",
"version": "text",
"versionId": "123e4567-e89b-12d3-a456-426614174000"
}
]
}Returns the status of a bulk scan evaluation
Bulk evaluation identifier
Unique identifier for the Harness account.
Unique identifier for the organization within the account.
Example: default or engineering_org
Unique identifier for the project within the organization.
Example: my_project or frontend_services
Bulk scan evaluation status response
Error response.
GET /api/v3/scans/bulk-evaluate/{evaluation_id}?account_identifier=text HTTP/1.1
Accept: */*
{
"data": {
"error": "text",
"evaluationId": "text",
"scans": [
{
"packageName": "text",
"scanId": "123e4567-e89b-12d3-a456-426614174000",
"scanStatus": "ALLOWED",
"version": "text"
}
],
"status": "PENDING"
}
}Re-evaluate artifact scan
Unique identifier for the Harness account.
Input for re-evaluate artifact scan. Exactly one of scanId or versionId must be provided.
Scan identifier
Artifact version identifier
Artifact scan evaluate request accepted for processing
Error response.
POST /api/v3/scans/evaluate?account_identifier=text HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 36
{
"scanId": "text",
"versionId": "text"
}{
"data": {
"status": "PENDING"
}
}List firewall exceptions with optional filters
Unique identifier for the Harness account.
Unique identifier for the organization within the account.
Example: default or engineering_org
Unique identifier for the project within the organization.
Example: my_project or frontend_services
Status of the firewall exception
Filter by package name
Filter by version
Registry Package Type
Unique id for the registry. Note: This parameter should have one id if package query param is provided
["12345678-1234-1234-1234-123456789012","aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"]Filter by firewall exception ID
Search term for filtering results.
Example: search_term=prod might match keys like "production", "prod-env", etc.
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
0The number of items to return per page.
Controls the page size for paginated results.
Example: size=50 returns up to 50 items per page
20The 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
Response containing list of firewall exceptions
Pagination metadata.
pageselects which page of results to return (0 = first page).sizecontrols how many items are returned per page.hasMoreis true if more results exist after this page.
True if more results exist after this page.
trueThe current page (0-indexed)
0Number of items per page
20Error response.
GET /api/v3/scans/exceptions?account_identifier=text HTTP/1.1
Accept: */*
{
"hasMore": true,
"page": 0,
"size": 20,
"items": [
{
"businessJustification": "text",
"createdAt": 1,
"createdBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"exceptionId": "123e4567-e89b-12d3-a456-426614174000",
"expirationAt": 1,
"expireAfter": 1,
"notes": "text",
"packageName": "text",
"packageType": "text",
"registryId": "text",
"registryName": "text",
"remediationPlan": "text",
"status": "PENDING",
"statusChangedAt": 1,
"statusChangedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"updatedAt": 1,
"updatedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"versionId": "text",
"versionList": [
"text"
],
"versionScanMap": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
],
"meta": {
"approvedCount": 25,
"expiredCount": 10,
"pendingCount": 10,
"rejectedCount": 5,
"totalCount": 50
}
}Create a firewall exception for an artifact
Unique identifier for the Harness account.
Request to create a firewall exception
Business justification for the exception
Number of days after approval when the exception expires. Null means never expires.
Name of the package
UUID of the registry
Plan for remediation (optional)
List of versions to except. Empty array means all versions.
Firewall exception created successfully
Firewall exception details
Business justification for the exception
Unix timestamp (milliseconds) when created
Unique identifier for the exception
Unix timestamp (milliseconds) when the exception expires. Computed at approval time.
Number of days after approval when the exception expires
Note from approver (if approved/rejected)
Name of the package
type of the package
Registry identifier
Name of the registry
Plan for remediation
Status of the firewall exception
Unix timestamp (milliseconds) when status was changed
Unix timestamp (milliseconds) when last updated
Version identifier
List of versions covered by exception
Duplicate exception.
Error response.
POST /api/v3/scans/exceptions?account_identifier=text HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 169
{
"businessJustification": "text",
"expireAfter": 1,
"packageName": "text",
"registryId": "123e4567-e89b-12d3-a456-426614174000",
"remediationPlan": "text",
"versionList": [
"text"
]
}{
"businessJustification": "text",
"createdAt": 1,
"createdBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"exceptionId": "123e4567-e89b-12d3-a456-426614174000",
"expirationAt": 1,
"expireAfter": 1,
"notes": "text",
"packageName": "text",
"packageType": "text",
"registryId": "text",
"registryName": "text",
"remediationPlan": "text",
"status": "PENDING",
"statusChangedAt": 1,
"statusChangedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"updatedAt": 1,
"updatedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"versionId": "text",
"versionList": [
"text"
],
"versionScanMap": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}Update a firewall exception. Only allowed when status is PENDING.
Unique identifier for the Harness account.
Request to update a firewall exception. Only allowed when status is PENDING.
Updated business justification for the exception
Number of days after approval when the exception expires. Null means never expires.
Updated plan for remediation
Updated list of versions to except. Empty array means all versions.
Firewall exception updated successfully
Firewall exception details
Business justification for the exception
Unix timestamp (milliseconds) when created
Unique identifier for the exception
Unix timestamp (milliseconds) when the exception expires. Computed at approval time.
Number of days after approval when the exception expires
Note from approver (if approved/rejected)
Name of the package
type of the package
Registry identifier
Name of the registry
Plan for remediation
Status of the firewall exception
Unix timestamp (milliseconds) when status was changed
Unix timestamp (milliseconds) when last updated
Version identifier
List of versions covered by exception
Error response.
PUT /api/v3/scans/exceptions/{id}?account_identifier=text HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 96
{
"businessJustification": "text",
"expireAfter": 1,
"remediationPlan": "text",
"versionList": [
"text"
]
}{
"businessJustification": "text",
"createdAt": 1,
"createdBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"exceptionId": "123e4567-e89b-12d3-a456-426614174000",
"expirationAt": 1,
"expireAfter": 1,
"notes": "text",
"packageName": "text",
"packageType": "text",
"registryId": "text",
"registryName": "text",
"remediationPlan": "text",
"status": "PENDING",
"statusChangedAt": 1,
"statusChangedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"updatedAt": 1,
"updatedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"versionId": "text",
"versionList": [
"text"
],
"versionScanMap": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}Delete a firewall exception by ID
Unique identifier for the Harness account.
Firewall exception deleted successfully
No content
Error response.
DELETE /api/v3/scans/exceptions/{id}?account_identifier=text HTTP/1.1
Accept: */*
No content
Update the status of a firewall exception (approve or reject)
Unique identifier for the Harness account.
Request to approve or reject a firewall exception
Note from approver explaining the decision
Status of the firewall exception
Firewall exception status updated successfully
Firewall exception details
Business justification for the exception
Unix timestamp (milliseconds) when created
Unique identifier for the exception
Unix timestamp (milliseconds) when the exception expires. Computed at approval time.
Number of days after approval when the exception expires
Note from approver (if approved/rejected)
Name of the package
type of the package
Registry identifier
Name of the registry
Plan for remediation
Status of the firewall exception
Unix timestamp (milliseconds) when status was changed
Unix timestamp (milliseconds) when last updated
Version identifier
List of versions covered by exception
Error response.
PUT /api/v3/scans/exceptions/{id}/status?account_identifier=text HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 35
{
"notes": "text",
"status": "PENDING"
}{
"businessJustification": "text",
"createdAt": 1,
"createdBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"exceptionId": "123e4567-e89b-12d3-a456-426614174000",
"expirationAt": 1,
"expireAfter": 1,
"notes": "text",
"packageName": "text",
"packageType": "text",
"registryId": "text",
"registryName": "text",
"remediationPlan": "text",
"status": "PENDING",
"statusChangedAt": 1,
"statusChangedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"updatedAt": 1,
"updatedBy": {
"display_name": "text",
"email": "text",
"type": "text",
"uid": "text"
},
"versionId": "text",
"versionList": [
"text"
],
"versionScanMap": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}List versions for a specific package in a registry, for use when creating firewall exceptions
Unique identifier for the Harness account.
Filter by registry ID
Filter by package name
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
0The number of items to return per page.
Controls the page size for paginated results.
Example: size=50 returns up to 50 items per page
20Response containing list of versions for firewall exceptions
Pagination metadata.
pageselects which page of results to return (0 = first page).sizecontrols how many items are returned per page.hasMoreis true if more results exist after this page.
True if more results exist after this page.
trueThe current page (0-indexed)
0Number of items per page
20A list of versions
Error response.
GET /api/v3/scans/versions?account_identifier=text HTTP/1.1
Accept: */*
{
"hasMore": true,
"page": 0,
"size": 20,
"items": [
"text"
]
}Last updated
Was this helpful?