# Get artifact overview

Artifact detail overview for the selected version (target variant): identity, latest-execution tiles, and per-digest severity matrix.

Endpoint: GET /sto/api/v2/artifacts/{id}/overview
Version: 1.0
Security: 

## Query parameters:

  - `accountId` (string, required)
    Harness Account ID
    Example: "abcdef1234567890ghijkl"

  - `orgId` (string, required)
    Harness Organization ID
    Example: "example_org"

  - `projectId` (string, required)
    Harness Project ID
    Example: "example_project"

  - `variantId` (string)
    Optional version scope; when omitted, uses the tracked version
    Example: "xyz987zyx654wvu321tsr9"

## Path parameters:

  - `id` (string, required)
    Artifact target id
    Example: "abcdef1234567890ghijkl"

## Response 200 fields (application/json):

  - `baselineVariantId` (string)
    Baseline variant id when set
    Example: "abcdef1234567890ghijkl"

  - `deployments` (object, required)
    Live CD instance counts from UDP cd:instance. Join is scan.artifact_fingerprint ↔ digest (STO hex plus sha256: prefix). Tags are not used. Prod is env_type Production; all other env_type values are nonProd.
    Example: {"nonProd":10,"prod":8,"total":18}

  - `deployments.nonProd` (integer, required)
    Instances whose env_type is not Production
    Example: 10

  - `deployments.prod` (integer, required)
    Instances whose env_type is Production
    Example: 8

  - `deployments.total` (integer, required)
    Live instances matching scanned digests
    Example: 18

  - `digestFindingsMatrix` (object, required)
    Active findings by severity across unique content digests of a version. At most 5 rows, newest scanned first. Missing fingerprints collapse to one version-name row using the latest no-fingerprint execution only. Unassigned is always 0 (folded into info on execution_summary).
    Example: {"columnTotals":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"grandTotal":120,"rows":[{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32},{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32},{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32},{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32}]}

  - `digestFindingsMatrix.columnTotals` (object, required)
    Counts by severity.
    Example: {"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0}

  - `digestFindingsMatrix.columnTotals.critical` (integer, required)
    Critical count
    Example: 3

  - `digestFindingsMatrix.columnTotals.high` (integer, required)
    High count
    Example: 4

  - `digestFindingsMatrix.columnTotals.info` (integer, required)
    Info count
    Example: 1

  - `digestFindingsMatrix.columnTotals.low` (integer, required)
    Low count
    Example: 2

  - `digestFindingsMatrix.columnTotals.medium` (integer, required)
    Medium count
    Example: 5

  - `digestFindingsMatrix.columnTotals.unassigned` (integer, required)
    Unassigned count

  - `digestFindingsMatrix.grandTotal` (integer, required)
    CHML total across returned rows
    Example: 120

  - `digestFindingsMatrix.rows` (array, required)
    Up to 5 unique digest/version labels, newest scanned first
    Example: [{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32},{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32},{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32},{"digest":"sha256:c38108674664dnekvnke","label":"sha256:c38108674664dnekvnke","severityCounts":{"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0},"total":32}]

  - `digestFindingsMatrix.rows.digest` (string)
    Content digest. Omitted when unavailable; a missing digest is the version-name row.
    Example: "sha256:c38108674664dnekvnke"

  - `digestFindingsMatrix.rows.label` (string, required)
    Unique display key: digest when present, otherwise the version name. At most one row per label.
    Example: "sha256:c38108674664dnekvnke"

  - `digestFindingsMatrix.rows.severityCounts` (object, required)
    Counts by severity.
    Example: {"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0}

  - `digestFindingsMatrix.rows.total` (integer, required)
    CHML total (info and unassigned excluded)
    Example: 32

  - `digests` (array, required)
    All distinct content digests for this version across succeeded scans, newest scanned first. Not capped; digestFindingsMatrix is a separate 5-row widget.
    Example: ["sha256:c38108674664dnekvnke","sha256:aa11bb22cc33"]

  - `executionId` (string)
    CI execution identifier. With pipelineId and the request org/project, FE can construct a Harness execution URL when executionUrl is empty.
    Example: "abcdef1234567890ghijkl"

  - `executionSource` (string)
    CI/CD platform of the last execution (harness, jenkins, github_actions, gitlab_ci, ...). Distinct from artifact/repo registry source. Omitted when unknown.
    Example: "harness"

  - `executionUrl` (string)
    Deep link from scan metadata (non-Harness). For Harness, often empty; FE constructs from pipelineId, executionId, and the request org/project.
    Example: "https://jenkins.example.com/job/42"

  - `hasShiftLeftScan` (boolean, required)
    True when cached ShiftLeft package counts exist for the scoped execution

  - `isBaseline` (boolean, required)
    Whether the scoped version is the baseline
    Example: true

  - `name` (string, required)
    Artifact name
    Example: "harness/payments-api"

  - `occurrenceSeverityCounts` (object, required)
    Counts by severity.
    Example: {"critical":3,"high":4,"info":1,"low":2,"medium":5,"unassigned":0}

  - `pipelineId` (string)
    Harness pipeline identifier (not the pretty pipelineName). Used with executionId to construct a Harness execution URL when executionUrl is empty.
    Example: "Security_Gate"

  - `registryUrl` (string)
    Registry URL for the scoped version's latest execution. Omitted when unknown.
    Example: "app.harness.io/ng/module/har/harness/payments-api"

  - `sbomCount` (integer, required)
    ShiftLeft/Qwiet package count (oss + container) for the scoped execution. 0 when unavailable.
    Example: 135

  - `scannedAt` (integer)
    Latest execution start time in milliseconds since Unix epoch
    Example: 1751793300000

  - `source` (string)
    Artifact source for the scoped version's latest execution. Omitted when unknown. Values are snake_case: docker_hub, harness, aws_ecr, google, azure, github, jfrog_artifactory, docker_v2, local_image, local_archive.
    Example: "harness"

  - `targetId` (string, required)
    Artifact target id
    Example: "abcdef1234567890ghijkl"

  - `type` (string, required)
    Target type
    Enum: "container", "instance", "configuration"

  - `variantId` (string)
    Scoped version id
    Example: "xyz987zyx654wvu321tsr9"

  - `variantName` (string)
    Version or tag name
    Example: "v4.11.3"

  - `versionsCount` (integer, required)
    Number of scanned versions for this artifact
    Example: 3

## Response 400 fields (application/json):

  - `message` (string, required)
    Example: "Not Found"

  - `status` (integer)
    Example: 404


