Vulnerabilities
Each entry in the vulnerabilities section represents a single vulnerability finding and the human verdict about it.
| The verdict should reflect the most severe impact across all listed packages. If a package appears in multiple contexts, the analysis should focus on the highest-risk context. |
Vulnerability Entry
| Field | Type | Required | Description |
|---|---|---|---|
|
String |
Yes |
Primary identifier. Preferably a CVE ID. May be a scanner-specific ID if no CVE exists. Must be unique across all entries and aliases. |
|
String |
No |
Common name if one exists (e.g., "Log4Shell", "Heartbleed"). Displayed prominently in reports. |
|
Array of String |
No |
Alternative identifiers (e.g., GHSA IDs, scanner-specific IDs). Must not overlap with any |
|
Array of String |
Yes |
Release identifiers affected. Must reference IDs from the |
|
String |
No |
Brief human-readable description. Optional to allow quick stub entries during triage. |
|
Array of String (Package URL) |
Yes |
Package URLs of affected dependencies. See Finding Package URLs. |
|
Array of Report entries |
Yes |
Scanner reports that identified this vulnerability. |
|
Array of String |
No |
Tags for categorizing and scoping. Must reference tags defined in the |
|
String |
No |
Free-text analysis and rationale for the triage decision. |
|
String (date, |
No |
Date the analysis was performed. Must not be before the earliest report date. |
|
String |
No |
Additional information not related to the analysis itself. Not used in any output generation. |
|
String (enum) |
Conditional |
Severity assessment. Required when |
|
String (enum) |
No |
The human triage decision. See Verdicts and Justifications. Absence indicates under investigation. |
|
String (enum) |
Conditional |
Required when |
|
No |
Records that the underlying dependency was updated or the vulnerability was otherwise addressed. Independent of the verdict. |
Finding Package URLs
The packages field requires Package URLs (PURLs) identifying the affected dependencies.
PURLs follow the format pkg:<type>/<namespace>/<name>@<version>.
Common sources for obtaining the correct PURL:
- Scanner output
-
Most SCA scanners (Trivy, Snyk, Grype) include the PURL in their findings. This is the most reliable source, as it matches exactly what the scanner reported.
- Package registries
-
Registries such as Maven Central, npm, and PyPI list the coordinates needed to construct a PURL.
- Lock files
-
Dependency lock files (
package-lock.json,go.sum,Cargo.lock) contain the exact package coordinates and versions.
| Type | Example |
|---|---|
Maven |
|
npm |
|
Docker |
|
Go |
|
PyPI |
|
Generic |
|
Lifecycle
A vulnerability entry typically goes through the following stages:
- Stub entry
-
A minimal entry containing only required fields (
id,releases,packages,reports). Typically created during initial triage. - Under investigation
-
The implicit state when no
verdicthas been set. The finding is still being analyzed. - Analyzed
-
The entry has a
verdict,analysis, and any required conditional fields (severity,justification). Optionally includes aresolutionif the dependency was updated.
Report Entry
A record indicating that a specific scanner or source reported the finding.
| Field | Type | Required | Description |
|---|---|---|---|
|
String (enum) |
Yes |
The scanner or source type. See Supported Reporters. |
|
String (date, |
No |
Date the vulnerability was reported. When omitted, the CLI uses the current date during output generation. |
|
String |
No |
Description of the report source. Optional for scanner reporters. Required for reporter type |
|
Array of String |
No |
Scanner-specific vulnerability identifiers. Used for scanner-specific suppression files. |
|
No |
Scanner-specific suppression configuration. When present without |
Resolution Entry
Records that a dependency update or other corrective action was taken, independent of the verdict.
A vulnerability may be not affected (the verdict) yet still have a resolution (the dependency was updated defensively).
A vulnerability may be affected with a resolution indicating it was fixed in a subsequent release.
| Field | Type | Required | Description |
|---|---|---|---|
|
String |
Yes |
Release in which the resolution was applied. Must reference a release ID from the |
|
String (date, |
No |
Date the resolution was applied. |
|
String (URI) |
No |
Reference to the issue or ticket tracking the resolution. |
|
String |
No |
Brief description of how the vulnerability was resolved. |