List Image Tags

JFrog Security User Guide

ft:sourceType
Ftml

Description: Lists all image tags according to specified filters
Note: The API returns vulnerabilities only if the image comes from a trusted registry. Filters by CVE and by components will only return images from trusted registries.
Security: Requires a valid user with a "Read" permission
Usage: POST /runtime/api/v1/images/tags
Consumes: application/json
Produces: application/json

Request body

NameTypeRequired/OptionalDescription
limitintmandatoryKey-based pagination - number of rows per request
next_keystringoptionalId from the previous request, empty on the first request
order_bystringoptionalAvailable options: name, repository_path, registry, risks
filtersfilterObjoptionalFilter the results by the available filters listed in filter_object

filterObj:

NameTypeRequired/OptionalDescription
time_periodstringoptionalDefault: now Available options: now, 1 hour, 24 hours, 3 days, 7 days, 10 days
cve_idarray[string]optionalCVE identifier
riskarrayoptionalAvailable filters: malicious, untrusted_registry, integrity_violation, critical_applicable
componentArray[filterComponentObj]optionalYou can only filter by the components of the image's vulnerabilities.
applicabilityarray[string]optionalContextual Analysis result. Possible values: not_scanned, applicable, not_applicable, undetermined, rescan_required, upgrade_required, not_covered
severityarray[string]optionalSeverity level of the issue (e.g., "High")

filterComponentObj:

NameTypeRequired/OptionalDescription
namestringoptionalComponent name
versionstringoptionalComponent version; if not provided, all versions are returned

Response body

NameTypeDescription
total_countintThe total number of images tags that match the filter quarry
paginationpaginationObjPagination info for the request
images_tagsimageTagsObjImages tags that match the filter quarry

paginationObj:

NameTypeDescription
limitintKey-based pagination - number of rows per request
next_keystringId from the previous request, empty on the first request

imageTagsObj:

NameTypeDescription
namestringImage name
tagstringImage tag
architecturestringThe image architecture (e.g., "amd64")
registrystringThe user environment (e.g., "jfrog.com")
repository_pathstringPath to the artifact (as expected to be found in Artifactory)
runtime_statusstringPossible values: running, stopped, unknown
scan_infoscanInfoObjInformation on whether the image was scanned
risksArray of risk_enumPossible values: malicious, untrusted_registry, integrity_violation, critical_applicable_cves
vulnerabilitiesArray[vulnObj]An array of the vulnerabilities detected on the image tag
malicious_packagesArray[maliciousObj]An array of malicious packages detected on the image tag
workloadsArray[workloadObj]
image_digeststringRepresents the cryptographic hash (SHA256) of the image, which includes image content.

scanInfoObj**:**

NameTypeDescription
scabooleanIndicates whether the image was scanned for sca

vulnObj**:**

NameTypeDescription
cve_idstringCVE identifier
xray_idstringXray identifier
severitystringSeverity level of the issue (e.g., "High")
cvss_v2stringCVSS version 2 score
cvss_v3stringCVSS version 3 score
applicabilitystringContextual Analysis result. Possible values: not_scanned, applicable, not_applicable, undetermined, rescan_required, upgrade_required, not_covered
componentsarray[componentObj]The components information

maliciousObj:

NameTypeDescription
xray_idstringXray identifier
componentsarray[componentObj]The component information

componentObj:

NameTypeDescription
component_idstringThe component identifier in the Xray format (e.g., "gav://com.thoughtworks.xstream:xstream:1.4.5")
namestringComponent name
versionstringComponent version

workloadObj:

NameTypeDescription
namestringWorkload name
namespacestringWorkload namespace
clusterstringCluster name

Response codes:

Status codeDescriptionMessage
200OK
400Bad request - Required fields are missing
403Permission denied
404Not found
500Internal server error

Examples

Example request

{
  "limit": 1
}

Example request

{
  "limit": 1,
  "next_key": "1"
}

Example request

{
  "filters": {
    "component": [
      {
        "name": "rexml",
        "version": "3.2.5"
      }
    ]
  }
}

Example request

{
  "filters": {
    "time_period": "now",
    "cve_id": [
      "CVE-2013-7285"
    ]
  }
}

Example request

{
  "filters": {
    "severity": [
      "Critical",
      "High"
    ]
  }
}

Example request

{
  "filters": {
    "risk": [
      "untrusted_registry",
      "integrity_violation"
    ]
  }
}

Example request

{
  "filters": {
    "applicability": [
      "applicable"
    ]
  }
}

Example successful response

200 OK

{
    "image_tags": [
        {
            "architecture": "amd64",
            "malicious_packages": [],
            "name": "webgoat",
            "registry": "jfrog.com",
            "repository_path": "docker-local/webgoat",
            "risks": [
                "critical_applicable_cves"
            ],
            "runtime_status": "running",
            "scan_info": {
                "sca": true
            },
            "tag": "latest",
            "vulnerabilities": [
                {
                    "applicability": "applicable",
                    "components": [
                        {
                            "id": "gav://com.thoughtworks.xstream:xstream:1.4.5",
                            "name": "com.thoughtworks.xstream:xstream",
                            "version": "1.4.5"
                        }
                    ],
                    "cve_id": "CVE-2013-7285",
                    "cvss_v2": "7.5",
                    "cvss_v3": "9.8",
                    "severity": "Critical",
                    "xray_id": "XRAY-60282"
                }
            ],
            "workloads": [
                {
                    "cluster": "runtime-cluster",
                    "name": "webgoat",
                    "namespace": "production"
                }
            ]
        }
    ],
    "pagination": {
        "limit": 1,
        "next_key": "1"
    },
    "total_count": 2
}

Example successful response

200 OK

{
    "image_tags": [
        {
            "architecture": "arm64",
            "malicious_packages": [
                {
                    "components": [
                        {
                            "id": "pypi://ecopower:1.3",
                            "name": "ecopower",
                            "version": "1.3"
                        }
                    ],
                    "xray_id": "XRAY-198184"
                },
                {
                    "components": [
                        {
                            "id": "pypi://zlibsrc:1.1",
                            "name": "zlibsrc",
                            "version": "1.1"
                        }
                    ],
                    "xray_id": "XRAY-249065"
                }
            ],
            "name": "demo-security",
            "registry": "jfrog.com",
            "repository_path": "docker-local/jfrog",
            "risks": [
                "critical_applicable_cves",
                "malicious"
            ],
            "runtime_status": "running",
            "scan_info": {
                "sca": true
            },
            "tag": "latest",
            "vulnerabilities": [
                {
                    "applicability": "not_applicable",
                    "components": [
                        {
                            "id": "pypi://pycrypto:2.6.1",
                            "name": "pycrypto",
                            "version": "2.6.1"
                        }
                    ],
                    "cve_id": "CVE-2013-7459",
                    "cvss_v2": "7.5",
                    "cvss_v3": "9.8",
                    "severity": "Critical",
                    "xray_id": "XRAY-84306"
                }
            ],
            "workloads": [
                {
                    "cluster": "runtime-cluster",
                    "name": "demosecurity",
                    "namespace": "production"
                }
            ]
        }
    ],
    "pagination": {
        "limit": 1,
        "next_key": "1"
    },
    "total_count": 38
}

Example error response:

400 Bad Request

{
    "message": "limit should be between 1 and 100"
}