Riferimento APIGestione degli errori

Gestione degli errori

Formato errore

La maggior parte degli errori API restituisce un oggetto JSON con una singola stringa error. Questo riferimento copre codici HTTP, messaggi di validazione, retry e gestione degli errori negli handler webhook.

{ "error": "Monitor not found" }

Alcuni errori includono campi aggiuntivi:

Errori di limite di velocità (429) includono un campo retry_after_seconds:

{
  "error": "Too many requests",
  "retry_after_seconds": 60
}

Errori token OAuth seguono RFC 6749 e includono error_description:

{
  "error": "invalid_client",
  "error_description": "Invalid client credentials"
}

Codici di stato HTTP

StatoSignificato
400Richiesta errata: campi mancanti o non validi
401Non autenticato: token mancante, non valido o scaduto
403Vietato: token valido ma autorizzazioni insufficienti o limite del piano raggiunto
404Risorsa non trovata
429Tariffa limitata: fai marcia indietro e riprova
500Errore interno del server: temporaneo, riprova con backoff
503Servizio non disponibile: la dipendenza upstream (ad esempio il provider OAuth) è inattiva

Messaggi di errore comuni

MessaggioStatoCosa è successo
"Authorization header missing or invalid"401Nessuna intestazione Authorization: Bearer <token>
"Invalid or expired token"401Il token è scaduto o è stato manomesso: autenticarsi nuovamente
"Invalid API key"401La chiave API utilizzata per generare questo token è stata revocata
"Monitor not found"404Nel tuo team non esiste alcun monitor con questo ID
"Your plan allows a maximum of N monitors"403Aggiorna il tuo piano per creare più monitor
"Too many requests"429Hai superato il limite di tariffa: consulta il campo retry_after_seconds
"Internal server error"500Errore temporaneo del server: riprova con backoff esponenziale

Gestione degli errori nel codice

const res = await fetch('https://www.diffhook.com/api/monitors', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${accessToken}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload),
})

if (!res.ok) {
  const body = await res.json()
  const message = body.error

  if (res.status === 429) {
    const retryAfter = body.retry_after_seconds ?? 60
    // wait and retry
  } else if (res.status === 401) {
    // re-authenticate with POST /api/oauth/token
  } else {
    console.error(message)
  }
}

Errori 5xx

Gli errori del server sono temporanei. Riprova con un backoff esponenziale: la maggior parte si risolve in pochi secondi. Se un 500 o 503 persiste per più di qualche minuto, controlla la nostra pagina di stato o invia un'e-mail a support@diffhook.com.