Skip to content

ENISA Reporting — GraphQL

The ENISA SRP module exposes a GraphQL query surface over the same relational store as the REST API. It is read-only and is a query projection — there is no separate graph database.

  • Endpoint: POST /api/v1/enisa/graphql (requires a FLEET API key with the enisa:read scope — GraphQL is read-only)
  • Playground: GET /api/v1/enisa/graphql/playground (public)
FieldReturns
notificationsAll notification cases, newest first
notification(id: UUID!)A single case (or null)
notification.revisionsThe case’s full revision history (graph traversal)
obligationsThe obligation matrix for the current schema version
schemaVersionThe current matrix / OpenAPI schema version
{
notification(id: "00000000-0000-0000-0000-000000000000") {
notificationType
reporter
revisions {
stage
title
cveId
vulnNature
submittedAt
}
}
}
{
"data": {
"notification": {
"notificationType": "VULNERABILITY",
"reporter": "ACME CSIRT",
"revisions": [
{ "stage": "EARLY_WARNING_24H", "title": "RCE in parser", "cveId": "CVE-2026-0001", "vulnNature": null },
{ "stage": "UPDATE_72H", "title": "RCE in parser", "cveId": "CVE-2026-0001", "vulnNature": "memory safety" }
]
}
}
}

Note the carried-forward title/cveId on the 72h revision.

{ notifications { id notificationType reporter createdAt } }
{
schemaVersion
obligations { notificationType fieldId stage obligation }
}

GraphQL enum values are upper snake case:

  • notificationType: VULNERABILITY, INCIDENT
  • stage: EARLY_WARNING_24H, UPDATE_72H, FINAL
  • obligation: OBLIGATORY, COPIED, OPTIONAL, OBLIGATORY_IF_AVAILABLE, AUTOMATED

The playground page is public, but queries hit the protected endpoint. Add your key in the playground’s HTTP Headers panel:

{ "Authorization": "Bearer fleet_xxxxxxxx…" }