Plans: Every plan. Refused with 402 while the workspace is read-only. Who: anyone with an API token for the
product family; owners and admins create tokens.
POST /api/v1/vex stores one VEX document for the product family the token belongs to, binds its statements to the
family’s components and matches the family again. It takes the same CI upload token as
POST /api/v1/sboms. Send the same file again and Pharus answers with the document it already
has, so retries are safe. What Pharus does with the statements is on VEX from other tools.
Example
/api/v1/sboms as usual: Pharus keeps its
vulnerabilities as the SBOM’s VEX document.
Headers
The query parameter
version works when there is no X-Pharus-Version header.
Body
The raw VEX document, plain or compressed. Not a multipart form, and not wrapped in another JSON object.- OpenVEX, such as govulncheck’s
-format openvexoutput. - CSAF 2.0 VEX.
- CycloneDX JSON 1.4–1.7 with a
vulnerabilitiessection: a VEX document, Dependency-Track’s VDR, or Trivy and Grype output. - At most 4 MB as sent, 50 MB decompressed, and 50 000 statements.
Responses
202 Accepted
A new document was stored. Matching runs after the response.200 OK
The family already has a document with exactly these bytes. Nothing new was stored,replaced is 0, and
duplicate is true.
Errors
Errors return{ "error", "message" }, sometimes with detail. See the error format.