io.atcr.hold.subscribeScanJobs
Subscribe to vulnerability scan jobs via WebSocket. Scanners connect to receive pending scan jobs and send back results. Authenticated via shared secret (query parameter or X-Scanner-Secret header).
Details · subscription
| Kind | subscription |
|---|---|
| Authority | hold.atcr.io |
| Indexed |
Subscription
subscription · WebSocketParameters
query stringcursor
integerSequence number to resume from. If omitted, starts from latest. Use -1 to receive only new jobs.
Messages
DAG-CBOR frames#scanJob
objectA scan job dispatched from hold to scanner. Sent as a JSON WebSocket message.
#scanResult
objectA scan result sent from scanner back to hold. Sent as a JSON WebSocket message.
Errors
InvalidSecret
Scanner shared secret is invalid
#scanJob
objectA scan job dispatched from hold to scanner. Sent as a JSON WebSocket message.
Properties
Manifest digest (e.g., sha256:abc123...)
maxLength: 128
DID of the hold where the image is stored
HTTP endpoint of the hold for blob downloads
priority
integerScan priority (lower = higher priority). Tier-based scheduling.
Repository name (e.g., myapp)
maxLength: 256
Monotonic sequence number for cursor-based resumption
tag
stringOptional tag that triggered the scan
maxLength: 256
Message type discriminator
maxLength: 32const: "scan_job"
DID of the image owner
#scanResult
objectA scan result sent from scanner back to hold. Sent as a JSON WebSocket message.
Properties
Manifest digest that was scanned
maxLength: 128
error
stringError message if scan failed
maxLength: 1024
sbom
bytesSBOM blob (SPDX JSON format, max 100MB)
maxLength: 104857600
scannerVersion
stringScanner version string
maxLength: 64
Vulnerability count summary
Message type discriminator
maxLength: 32const: "scan_result"
vulnReport
bytesGrype vulnerability report blob (JSON, max 100MB)
maxLength: 104857600
#vulnSummary
objectProperties
Count of critical severity vulnerabilities
minimum: 0
Count of high severity vulnerabilities
minimum: 0
Count of low severity vulnerabilities
minimum: 0
Count of medium severity vulnerabilities
minimum: 0
Total vulnerability count
minimum: 0
Similar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
io.atcr.hold.scan
recordVulnerability scan results for a container manifest. Stored in the hold's embedded PDS. Record key is deterministic: the manifest digest hex without the 'sha256:' prefix, so re-scans upsert the existing record.