CRAnotify Documentazione

Riferimento API v1

L’API pubblica di CRAnotify è una superficie B2B ristretta e deliberata: registra un segnale di sicurezza in ingresso, legge il catalogo prodotti e il punteggio di conformità, e riceve le distinte base dalle pipeline. Restituisce sempre JSON. Ogni chiamata è autenticata con una chiave API della tua organizzazione ed è limitata a quella organizzazione: una chiave non vede mai i dati di un altro cliente, e il tenant arriva dalla chiave, mai dal corpo della richiesta. Per esplorare gli endpoint in modo interattivo usa la console su https://api.cranotify.eu/swagger, generata dalla stessa specifica OpenAPI 3 (https://api.cranotify.eu/swagger/openapi.json).

Guida alle chiavi. Creazione, permessi, rotazione e revoca delle chiavi sono descritti in API e chiavi di integrazione. Qui si documenta il contratto degli endpoint.

Indirizzo di base

In produzione l’API risponde sull’host dedicato api.<dominio>. Le tre letture e l’apertura di un incidente rispondono lì anche nella forma breve /v1:

https://api.cranotify.eu/v1/products

Su ogni host (compreso quello unificato di sviluppo) gli stessi endpoint rispondono sotto il prefisso completo /api/v1/external. L’ingestione delle distinte base è disponibile solo in questa forma completa. La specifica scaricata riporta l’indirizzo dell’host che l’ha servita.

Autenticazione

Presenta la chiave nell’header X-CRA-API-Key oppure come bearer token. I due modi sono equivalenti.

X-CRA-API-Key: cra_live_…
# in alternativa
Authorization: Bearer cra_live_…

Sugli endpoint di lettura sono ammessi solo GET; l’apertura di un incidente e l’ingestione SBOM accettano solo POST. Un metodo diverso riceve 405.

Permessi (scope)

Ogni chiave porta uno o più permessi; il permesso richiesto è specifico dell’endpoint. Non esistono chiavi «tuttofare»: una chiave di sola lettura non può aprire un incidente né inviare una SBOM.

PermessoSblocca
incidents:writeRegistrare un segnale di sicurezza in ingresso.
products:readLeggere il catalogo prodotti con stato SBOM e livello di rischio.
compliance:readLeggere il punteggio di conformità dell’organizzazione.
products:writeInviare una distinta base dalle pipeline.

Endpoint

La superficie pubblica è composta da quattro endpoint. Non c’è impaginazione: gli elenchi tornano interi con il loro conteggio.

Metodo e percorsoPermessoDescrizione
POST /api/v1/external/incidentsincidents:writeRegistra un segnale di sicurezza in ingresso (INCOMING). Non crea un caso: nessuna awareness, nessun orologio 24h/72h. La trasformazione in caso è una decisione umana nella console.
GET /api/v1/external/productsproducts:readCatalogo prodotti con stato della distinta base e livello di rischio derivato dai casi attivi. Risponde {"products":[…],"count":N}.
GET /api/v1/external/compliance-scorecompliance:readKPI di conformità in tempo reale: CRA Health Score a regole, MTTN medio, copertura SBOM, timer 24h/72h attivi.
POST /api/v1/external/products/{sku}/sbomproducts:writeIngestione di una SBOM CycloneDX/SPDX per il prodotto indicato dallo SKU. Converge sullo stesso modello versionato per release degli upload web e CLI (vedi Distinta base).

Sull’host dedicato api.cranotify.eu le prime tre rispondono anche nella forma breve /v1/incidents, /v1/products, /v1/compliance-score.

Non esistono endpoint di lettura dei casi, del profilo della chiave, del registro o di verifica del registro dall’API pubblica: sono operazioni della sola console. L’API non restituisce alcuna busta impaginata.

Limite di frequenza

Ogni chiave ha un limite di 100 richieste al minuto. Oltre soglia la risposta è 429 con gli header X-RateLimit-Limit, X-RateLimit-Remaining e Retry-After.

Esempi

# Catalogo prodotti
curl -H "X-CRA-API-Key: cra_live_…" https://api.cranotify.eu/v1/products

# Punteggio di conformità
curl -H "Authorization: Bearer cra_live_…" https://api.cranotify.eu/v1/compliance-score

# Apertura di un segnale in ingresso
curl -X POST -H "X-CRA-API-Key: cra_live_…" -H "Content-Type: application/json" \
     -d '{"title":"…","description":"…"}' \
     https://api.cranotify.eu/v1/incidents

# Invio di una SBOM per uno SKU
curl -X POST -H "X-CRA-API-Key: cra_live_…" -H "Content-Type: application/json" \
     --data-binary @sbom.cyclonedx.json \
     https://api.cranotify.eu/api/v1/external/products/SKU-123/sbom

Che cosa l’API non espone

Il catalogo prodotti riporta metadati e stato di conformità, mai i segreti dell’organizzazione. L’identità e il recapito di chi ha segnalato una vulnerabilità, le note del Privilege Vault, i segreti TOTP e le chiavi di archiviazione non sono raggiungibili dall’API pubblica.

Codici di errore

CodiceSignificato
401Chiave assente, errata, revocata o scaduta.
403Chiave valida ma priva del permesso richiesto.
405Metodo non ammesso sull’endpoint.
422Corpo non valido: campi mancanti sull’apertura di un incidente, oppure SBOM che non è né CycloneDX né SPDX.
429Limite di frequenza superato (100/min per chiave).

Specifica e console API

Console APILa pagina https://api.cranotify.eu/swagger (/docs resta un alias) mostra ogni endpoint, i parametri, gli schemi e gli esempi. È servita da noi, senza CDN.
Specifica OpenAPI 3Il documento grezzo è su https://api.cranotify.eu/swagger/openapi.json — importalo in Postman, Insomnia o in un generatore di client.

Non hai trovato la risposta?

L’assistenza risponde entro un giorno lavorativo. Indica il codice dell’organizzazione e, se la richiesta riguarda un case, il suo numero.

Documentazione aggiornata al 5 agosto 2026 · Note legali · Privacy · support@cranotify.eu