Passa al contenuto principale
Versione: 1.0.0

Riferimento errori

Questa pagina documenta ogni errore che l'API Scan di Cert-IX può restituire, organizzato per categoria.

Formato della risposta​

{
"success": false,
"error": "Descrizione leggibile dell'errore",
"code": "CODICE_LEGGIBILE_DALLA_MACCHINA"
}

Codici di stato HTTP​

StatoCategoriaSignificato
400Errore del clientRichiesta non valida — JSON malformato, campi obbligatori mancanti
401AutenticazioneChiave API mancante, non valida, scaduta o revocata
403AutorizzazioneChiave valida ma scope insufficiente, IP non permesso o tipo di scansione non consentito
404Non trovatoLa risorsa non esiste o non appartiene al vostro tenant
409ConflittoConflitto di stato della risorsa (es.: annullare una scansione giĂ  completata)
429Limite di velocitĂ Limite di velocitĂ  o quota superata
500Errore del serverErrore interno — contattate il supporto se persiste
503Non disponibileServizio temporaneamente non disponibile — riprovate con backoff

Errori di autenticazione (401)​

CodiceMessaggioCausaSoluzione
MISSING_API_KEYLa chiave API è obbligatoriaNessun header X-API-Key fornitoAggiungete l'header X-API-Key alla vostra richiesta
INVALID_API_KEYChiave API non validaIl formato è errato o la chiave non esisteVerificate che la chiave inizi con cix_sk_
KEY_EXPIREDLa chiave API è scadutaLa chiave ha superato la sua data expiresAtCreate una nuova chiave o effettuate una rotazione
KEY_REVOKEDLa chiave API è stata revocataLa chiave è stata esplicitamente revocataCreate una nuova chiave
KEY_SUSPENDEDLa chiave API è stata sospesaLa chiave è stata sospesa da un amministratoreContattate l'amministratore della vostra organizzazione

Errori di autorizzazione (403)​

CodiceMessaggioCausaSoluzione
INSUFFICIENT_SCOPEScope insufficiente: richiede {scope}La chiave non ha lo scope richiestoCreate una nuova chiave con lo scope necessario
SCAN_TYPE_NOT_ALLOWEDTipo di scansione {type} non consentitoallowedScanTypes della chiave non include questo motoreAggiornate la chiave o createne una che permetta questo tipo
IP_NOT_ALLOWEDIP sorgente non è nella lista consentitaL'IP della richiesta non è in allowedIpAddressesAggiungete l'IP sorgente alla lista o rimuovete le restrizioni
TENANT_SUSPENDEDL'account del tenant è sospesoL'account della vostra organizzazione è stato sospesoContattate [email protected]

Errori di scansione (400 / 404 / 409)​

CodiceHTTPMessaggioSoluzione
SCAN_NOT_FOUND404Scansione non trovataVerificate l'ID della scansione e il parametro scanType
INVALID_SCAN_TYPE400Tipo di scansione non valido: {type}Usate un motore valido: nmap, zap, trivy, nuclei, nikto, sqlmap, wapiti, harvester, sublist3r, sentinel
INVALID_TARGET400Formato obiettivo non validoVerificate che l'obiettivo corrisponda al formato atteso
INVALID_PRIORITY400PrioritĂ  non valida: {value}Usate: critical, high, normal o low
SCAN_ALREADY_COMPLETED409La scansione è già completataNon è possibile annullare una scansione in stato terminale
SCAN_ALREADY_CANCELLED409La scansione è già annullataLa scansione è già stata annullata
SCAN_ALREADY_FAILED409La scansione è già fallitaNon è possibile annullare una scansione fallita
RESULTS_NOT_READY409I risultati non sono ancora disponibiliAttendete che la scansione raggiunga lo stato completed

Errori dei template (400 / 404)​

CodiceHTTPMessaggioSoluzione
TEMPLATE_NOT_FOUND404Template di scansione non trovatoVerificate l'ID del template
TEMPLATE_NAME_REQUIRED400Il nome del template è obbligatorioFornite un campo name
DUPLICATE_TEMPLATE_NAME400Il nome del template esiste giĂ Usate un nome univoco

Errori dei webhook (400 / 404)​

CodiceHTTPMessaggioSoluzione
WEBHOOK_NOT_FOUND404Webhook non trovatoVerificate l'ID del webhook
INVALID_WEBHOOK_URL400L'URL del webhook deve usare HTTPSAssicuratevi che il vostro URL inizi con https://
WEBHOOK_URL_UNREACHABLE400Impossibile raggiungere l'URL del webhookVerificate che il vostro endpoint sia raggiungibile pubblicamente
INVALID_WEBHOOK_EVENT400Tipo di evento non valido: {event}Usate eventi validi: scan.completed, scan.failed, scan.started, scan.cancelled
WEBHOOK_DISABLED409Webhook disattivato per fallimenti consecutiviRiattivate con PATCH e correggete il vostro endpoint

Errori di limite di velocità e quote (429)​

CodiceMessaggioSoluzione
RATE_LIMIT_EXCEEDEDLimite di velocitĂ  superato. Riprovate tra {N} secondi.Implementate backoff esponenziale; verificate l'header Retry-After
QUOTA_EXCEEDEDQuota mensile di scansioni superataAggiornate il vostro piano o attendete il prossimo periodo di fatturazione

Errori di validazione (400)​

CodiceMessaggioSoluzione
INVALID_JSONIl corpo della richiesta non è JSON validoVerificate la vostra sintassi JSON
MISSING_REQUIRED_FIELDCampo obbligatorio mancante: {field}Includete tutti i campi obbligatori
INVALID_FIELD_TYPEIl campo {field} deve essere di tipo {type}Correggete il tipo di dato del campo
INVALID_PAGELa pagina deve essere un intero positivoUsate page ≥ 1
INVALID_LIMITIl limite deve essere compreso tra 1 e 100Usate limit tra 1 e 100

Errori del server (500 / 503)​

CodiceMessaggioSoluzione
INTERNAL_ERRORSi è verificato un errore interno del serverRiprovate con backoff; contattate il supporto se persiste
SERVICE_UNAVAILABLEServizio temporaneamente non disponibileRiprovate con backoff; verificate status.cert-ix.com
DATABASE_ERRORL'operazione del database è fallitaRiprovate; contattate il supporto se persiste
KAFKA_ERRORL'operazione della coda messaggi è fallitaRiprovate; la coda potrebbe essere temporaneamente congestionata

Guida alla risoluzione dei problemi​

« 401 — MISSING_API_KEY »​

# âś… Corretto
curl -H "X-API-Key: cix_sk_..." https://api.cert-ix.com/scan-api/api/v1/scans

# ❌ Errato — chiave nei parametri URL
curl "https://api.cert-ix.com/scan-api/api/v1/scans?apiKey=cix_sk_..."

« 404 — SCAN_NOT_FOUND »​

Cause piĂą comuni:

  1. scanType errato — Se avete creato una scansione zap, dovete interrogare con ?scanType=zap
  2. ID scansione errato — Verificate l'UUID
  3. Tenant diverso — Le chiavi di organizzazioni diverse non possono vedere le scansioni delle altre

« 429 — RATE_LIMIT_EXCEEDED »​

Implementate backoff esponenziale:

import time

def richiesta_con_backoff(func, max_tentativi=5):
for tentativo in range(max_tentativi):
response = func()
if response.status_code != 429:
return response
retry_after = int(response.headers.get("Retry-After", 2 ** tentativo))
time.sleep(retry_after)
raise Exception("Numero massimo di tentativi superato")

Prossimi passi: