One image's bill of materials (browser session)
import requests
url = "https://api.platform.ankra.app/org/security/sbom/image"
headers = {"cookie": "ankra_session="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: 'ankra_session='}};
fetch('https://api.platform.ankra.app/org/security/sbom/image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.platform.ankra.app/org/security/sbom/image \
--cookie ankra_session={
"image": {
"image_identity": "<string>",
"image_ref": "<string>",
"image_repository": "<string>",
"image_tag": "<string>",
"image_digest": "<string>",
"registry": "<string>",
"os_family": "<string>",
"os_name": "<string>",
"bom_format": "<string>",
"spec_version": "<string>",
"component_count": 123,
"dependency_count": 123,
"workloads": 123,
"clusters": 123,
"namespaces": [
"<string>"
],
"observed": 123,
"actionable": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"known_exploited": 123,
"license_exposure": {
"network_copyleft": 123,
"source_available": 123,
"copyleft": 123,
"weak_copyleft": 123,
"permissive": 123,
"unknown": 123
},
"generated_at": "2023-11-07T05:31:56Z",
"first_seen_at": "2023-11-07T05:31:56Z",
"last_seen_at": "2023-11-07T05:31:56Z"
},
"components": [
{
"name": "<string>",
"version": "<string>",
"package_type": "<string>",
"component_type": "<string>",
"purl": "<string>",
"licenses": [
"<string>"
],
"license_risk": "network_copyleft",
"images": 123,
"workloads": 123,
"clusters": 123,
"vulnerable_findings": 123,
"actionable_findings": 123,
"known_exploited": 123
}
],
"pagination": {
"page": 123,
"page_size": 123,
"total_count": 123,
"total_pages": 123
},
"facets": {
"package_type": [
{
"count": 123,
"value": "<string>"
}
],
"license_risk": [
{
"count": 123,
"value": "<string>"
}
]
},
"workloads": [
{
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cluster_name": "<string>",
"report_scope": "namespaced",
"workload_kind": "<string>",
"workload_namespace": "<string>",
"workload_name": "<string>",
"container_name": "<string>",
"last_seen_at": "2023-11-07T05:31:56Z"
}
]
}{
"detail": "<string>"
}{
"detail": "permission_denied",
"permission": "<string>",
"scope_type": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Security
One image's bill of materials (browser session)
One image by identity (its digest, or repository:tag when the scanner knew no digest): the image, a page of its components with the findings that name them, and every workload container currently running it.
GET
/
org
/
security
/
sbom
/
image
One image's bill of materials (browser session)
import requests
url = "https://api.platform.ankra.app/org/security/sbom/image"
headers = {"cookie": "ankra_session="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: 'ankra_session='}};
fetch('https://api.platform.ankra.app/org/security/sbom/image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.platform.ankra.app/org/security/sbom/image \
--cookie ankra_session={
"image": {
"image_identity": "<string>",
"image_ref": "<string>",
"image_repository": "<string>",
"image_tag": "<string>",
"image_digest": "<string>",
"registry": "<string>",
"os_family": "<string>",
"os_name": "<string>",
"bom_format": "<string>",
"spec_version": "<string>",
"component_count": 123,
"dependency_count": 123,
"workloads": 123,
"clusters": 123,
"namespaces": [
"<string>"
],
"observed": 123,
"actionable": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"known_exploited": 123,
"license_exposure": {
"network_copyleft": 123,
"source_available": 123,
"copyleft": 123,
"weak_copyleft": 123,
"permissive": 123,
"unknown": 123
},
"generated_at": "2023-11-07T05:31:56Z",
"first_seen_at": "2023-11-07T05:31:56Z",
"last_seen_at": "2023-11-07T05:31:56Z"
},
"components": [
{
"name": "<string>",
"version": "<string>",
"package_type": "<string>",
"component_type": "<string>",
"purl": "<string>",
"licenses": [
"<string>"
],
"license_risk": "network_copyleft",
"images": 123,
"workloads": 123,
"clusters": 123,
"vulnerable_findings": 123,
"actionable_findings": 123,
"known_exploited": 123
}
],
"pagination": {
"page": 123,
"page_size": 123,
"total_count": 123,
"total_pages": 123
},
"facets": {
"package_type": [
{
"count": 123,
"value": "<string>"
}
],
"license_risk": [
{
"count": 123,
"value": "<string>"
}
]
},
"workloads": [
{
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cluster_name": "<string>",
"report_scope": "namespaced",
"workload_kind": "<string>",
"workload_namespace": "<string>",
"workload_name": "<string>",
"container_name": "<string>",
"last_seen_at": "2023-11-07T05:31:56Z"
}
]
}{
"detail": "<string>"
}{
"detail": "permission_denied",
"permission": "<string>",
"scope_type": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Browser session. Mutations also require X-Ankra-CSRF.
Query Parameters
Required range:
1 <= x <= 10000Values above 100 are clamped to 100.
Required range:
x >= 1Ecosystem filter, repeatable (deb, apk, rpm, npm, pypi, golang, maven, ...).
Only components in these licence tiers (network_copyleft, source_available, copyleft, weak_copyleft, permissive, unknown); repeat or comma-separate to combine.
Available options:
name, version, package_type, images, workloads, clusters, vulnerable, actionable Available options:
asc, desc Response
Successful response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes