Skip to main content

GET /api/findings, List Findings

Returns paginated vulnerability findings. Query parameters:

GET /api/findings/:id, Get Finding Detail

Returns a single finding by its numeric ID.
Error responses:

PATCH /api/findings/:id/status, Update Finding Status

Sets the workflow status on a finding (e.g. open / triaged / closed). The status field is opaque to the server — any string is accepted.
Since v0.5.3 the status is a real lifecycle, matching vigolium finding mark: draft → triaged → confirmed → fixed, with false_positive and accepted_risk as dismissed exits. Dismissed findings are left out of the --fail-on gate, scan diff and finding --new-since by default.

POST /api/findings/:id/verify, Verify a Finding

Added in v0.5.3 — vigolium finding verify over REST (operator and admin). Re-runs the module behind one finding against the request it originally scanned and records whether it reproduces. :id is the numeric ID or the finding hash (12+ character prefix); the lookup is scoped to X-Project-UUID, so a finding from another project returns 404 (error_code: finding_not_found). The call is synchronous — it answers when the module run ends. Request body (all optional):
The response is the same result object vigolium finding verify -j emits.

DELETE /api/findings/:id, Delete Finding

Deletes a single finding by its numeric ID. Associated finding_records junction rows are also removed.
Response:

Finding Fields

additional_evidence

Type: string[] (optional, omitted when empty) Stores extra HTTP request/response pairs associated with a finding. Each entry is a single string containing a raw request and raw response separated by the delimiter \n---------\n. This field is populated in two ways:
  1. Modules and extensions: A module or JS extension can attach supplementary evidence when creating a finding (e.g., multiple payloads tried, confirmation requests, or baseline comparisons).
  2. Deduplication: When duplicate findings are merged (same module_id, severity, and matched_at URL), the request/response pairs from the removed duplicates are automatically collected into the surviving finding’s additional_evidence.
Example entry format:
To parse an entry, split on \n---------\n, the first part is the request, the second is the response.