Riferimento completo di tutti i codici di errore nell'API GraphQL di Blue, organizzato per categoria


Formato della Risposta di Errore

L'API GraphQL di Blue restituisce errori in un formato standardizzato seguendo la specifica GraphQL. Quando si verifica un errore, la risposta include un array errors con informazioni dettagliate su cosa è andato storto.

Esempio di Risposta di Errore

{
  "errors": [
    {
      "message": "Todo was not found.",
      "extensions": {
        "code": "TODO_NOT_FOUND"
      }
    }
  ]
}

Struttura dell'Errore

Ogni oggetto errore contiene:

  • message: Una descrizione leggibile dell'errore
  • extensions.code: Un codice di errore leggibile dalla macchina per la gestione programmatica

Sicurezza degli Errori in Produzione

Blue implementa un sistema di sicurezza per l'esposizione degli errori:

  • Errori Sicuri: Mostra codici di errore e messaggi reali ai clienti
  • Errori Non Sicuri: Restituisce INTERNAL_SERVER_ERROR generico per nascondere dettagli sensibili
  • Risorsa Non Trovata: Tutti gli errori *_NOT_FOUND sono considerati sicuri e sempre esposti

Categorie di Errore

Blue definisce 108 codici di errore personalizzati organizzati nelle seguenti categorie:

Errori di Autenticazione e Autorizzazione

Codice di Errore Messaggio Descrizione
UNAUTHENTICATED "Autenticazione richiesta." La richiesta richiede autenticazione ma non è stata fornita
FORBIDDEN "Non sei autorizzato." Autenticato ma privo delle autorizzazioni richieste

Errori di Risorsa Non Trovata (52 totali)

Risorse Core

Codice di Errore Messaggio Descrizione
TODO_NOT_FOUND "Todo non trovato." Il record/todo non esiste o l'utente non ha accesso
TODO_LIST_NOT_FOUND "Lista todo non trovata." La lista non esiste o l'utente non ha accesso
PROJECT_NOT_FOUND "Progetto non trovato." Il progetto non esiste o l'utente non ha accesso
COMPANY_NOT_FOUND "Azienda non trovata." L'azienda non esiste o l'utente non ha accesso
USER_NOT_FOUND "Utente non trovato." L'utente non esiste nel sistema

Campi e Moduli Personalizzati

Codice di Errore Messaggio Descrizione
CUSTOM_FIELD_NOT_FOUND "Campo personalizzato non trovato." Il campo personalizzato non esiste
CUSTOM_FIELD_OPTION_NOT_FOUND "Opzione campo personalizzato non trovata." L'opzione del campo di selezione non esiste
FORM_NOT_FOUND "Modulo non trovato." Il modello di modulo non esiste
FORM_FIELD_NOT_FOUND "Campo del modulo non trovato." Il campo del modulo non esiste

Componenti del Progetto

Codice di Errore Messaggio Descrizione
TAG_NOT_FOUND "Tag non trovato." Il tag non esiste nel progetto
AUTOMATION_NOT_FOUND "Automazione non trovata." La regola di automazione non esiste
CHART_NOT_FOUND "Grafico non trovato." Il grafico del dashboard non esiste
WEBHOOK_NOT_FOUND "Webhook non trovato." La configurazione del webhook non esiste
TEMPLATE_NOT_FOUND "Modello non trovato." Il modello di progetto non esiste

Commenti e Attività

Codice di Errore Messaggio Descrizione
COMMENT_NOT_FOUND "Commento non trovato." Il commento non esiste
ACTIVITY_NOT_FOUND "Attività non trovata." L'entrata del registro delle attività non esiste
REACTION_NOT_FOUND "Reazione non trovata." La reazione al commento non esiste

Altre Risorse

Codice di Errore Messaggio Descrizione
FILE_NOT_FOUND "File non trovato." L'allegato del file non esiste
SUBSCRIPTION_NOT_FOUND "Sottoscrizione non trovata." La sottoscrizione di fatturazione non esiste
INVOICE_NOT_FOUND "Fattura non trovata." Il record della fattura non esiste
CHECKLIST_NOT_FOUND "Checklist non trovata." La checklist non esiste
CHECKLIST_ITEM_NOT_FOUND "Elemento della checklist non trovato." L'elemento della checklist non esiste
PROJECT_ROLE_NOT_FOUND "Ruolo del progetto non trovato." Il ruolo personalizzato del progetto non esiste
PROJECT_ACCESS_NOT_FOUND "Accesso al progetto non trovato." L'accesso dell'utente al progetto non esiste
NOTIFICATION_NOT_FOUND "Notifica non trovata." La notifica non esiste
DASHBOARD_NOT_FOUND "Dashboard non trovata." Il dashboard non esiste
KEY_NOT_FOUND "Chiave non trovata." La chiave delle impostazioni non esiste

Errori di Validazione

Codice di Errore Messaggio Descrizione
BAD_USER_INPUT "Input non valido." Fallimento della validazione dell'input generico
VALIDATION_ERROR "Parametri non validi" I parametri della richiesta non hanno superato la validazione
BAD_EMAIL "Devi inserire un'email valida." Formato email non valido
INVALID_IDS "ID non validi." Uno o più ID nella richiesta non sono validi
PHONE_INVALID "Telefono non valido." Formato numero di telefono non valido
URL_INVALID "URL non valido." Formato URL non valido
INVALID_RECURRING_DUE_DATE "Data di scadenza non valida per il compito ricorrente" Fallimento della validazione della data del compito ricorrente
INVALID_COLOR "Colore non valido" Il valore del colore non corrisponde al formato previsto

Errori di Logica Aziendale

Limiti e Quote

Codice di Errore Messaggio Descrizione
COMPANY_LIMIT "Hai raggiunto il limite di aziende per il tuo account." Limite massimo di aziende raggiunto
PROJECT_LIMIT "Hai raggiunto il limite di progetti per la tua azienda." Limite massimo di progetti raggiunto
USER_LIMIT "Hai raggiunto il limite di utenti per la tua azienda." Limite massimo di utenti raggiunto
PROJECT_TEMPLATE_LIMIT "Hai raggiunto il limite di modelli per la tua azienda." Limite massimo di modelli raggiunto
CUSTOM_FIELD_LIMIT "Limite di campi personalizzati raggiunto." Limite massimo di campi personalizzati raggiunto
TODO_LIST_LIMIT "Hai raggiunto il limite di liste per il tuo progetto." Limite massimo di liste per progetto
TOO_MANY_TODOS "Troppe todo." Limite di record superato
TOO_MANY_OPTIONS "Troppe opzioni." Limite di opzioni del campo di selezione superato
MAX_FILE_SIZE "La dimensione massima del file è 4.8gb" Limite di dimensione del file caricato superato

Conflitti di Risorsa

Codice di Errore Messaggio Descrizione
TAG_ALREADY_EXISTS "Il tag esiste già." Esiste un tag con lo stesso nome nel progetto
COMPANY_SLUG_ALREADY_EXISTS "L'azienda esiste già." Lo slug/URL dell'azienda è già in uso
USER_ALREADY_EXISTS "L'utente esiste già." L'email dell'utente è già registrata
ALREADY_INVITED "L'utente è già stato invitato." L'utente ha già un invito in sospeso
USER_ALREADY_IN_PROJECT "L'utente è già in questo progetto." L'utente ha già accesso al progetto
FILE_TYPE_NOT_ALLOWED "Tipo di file non consentito." Il tipo di file caricato è vietato

Errori di Permesso e Accesso

Codice di Errore Messaggio Descrizione
UNABLE_TO_DELETE_ONLY_ADMIN "Impossibile eliminare l'unico Admin nell'azienda." Non è possibile rimuovere l'ultimo admin
UNABLE_TO_UPDATE_OWNER "Impossibile aggiornare il PROPRIETARIO." Non è possibile modificare i permessi del proprietario
TODO_LIST_IS_HIDDEN "La lista todo è nascosta." Lista nascosta dal ruolo dell'utente
COMPANY_NOT_ACTIVE "L'azienda non è attiva." Sottoscrizione dell'azienda inattiva
PROJECT_NOT_ACTIVE "Il progetto non è attivo." Il progetto è archiviato/inattivo

Errori di Integrità dei Dati

Codice di Errore Messaggio Descrizione
UNABLE_TO_DELETE_LIST_WITH_TODOS "Impossibile eliminare la lista con i todo." La lista deve essere vuota per essere eliminata
UNABLE_TO_DELTE_FILE "Impossibile eliminare il file." Eliminazione del file fallita (errore di battitura nel codice)
UNABLE_TO_MOVE_TODO "Impossibile spostare il todo." Impossibile spostare il record tra le liste
DEPENDENCY_HAS_DEPENDENCY "La dipendenza ha una dipendenza" Rilevata dipendenza circolare
TODO_DEPENDS_ON_ITSELF "Il todo dipende da se stesso" Dipendenza auto-referenziale

Errori di Stripe/Pagamento

Codice di Errore Messaggio Descrizione
STRIPE_CREATING_CUSTOMER "Errore durante la creazione del cliente in Stripe." Creazione del cliente Stripe fallita
STRIPE_ALREADY_SUBSCRIBED "Già sottoscritto." Esiste una sottoscrizione attiva
STRIPE_MISSING_PAYMENT_METHOD "Metodo di pagamento mancante." Nessun metodo di pagamento registrato
STRIPE_CREATING_SUBSCRIPTION "Errore durante la creazione della sottoscrizione in Stripe." Creazione della sottoscrizione fallita
STRIPE_UPDATING_SUBSCRIPTION "Errore durante l'aggiornamento della sottoscrizione in Stripe." Aggiornamento della sottoscrizione fallito
STRIPE_CHECKOUT_SESSION "Errore durante la creazione della sessione di checkout in Stripe." Creazione della sessione di checkout fallita
STRIPE_CUSTOMER_PORTAL "Errore durante la creazione del portale clienti in Stripe." Creazione della sessione del portale fallita
STRIPE_TAX_ID "Impossibile salvare l'ID fiscale" Validazione/salvataggio dell'ID fiscale fallito
PAYMENT_REQUIRED "Pagamento richiesto." La funzionalità richiede una sottoscrizione attiva
NO_PAYMENT_REQUIRED "Nessun pagamento richiesto." Il pagamento non è necessario per l'operazione

Errori di Autenticazione e Sessione

Codice di Errore Messaggio Descrizione
INVALID_CREDENTIALS "Credenziali non valide." Nome utente/password errati
EXPIRED_RESET_TOKEN "Il token di reset è scaduto." Il token di reset della password è scaduto
OAUTH_FAILED "Il processo OAuth è fallito." L'autenticazione OAuth è fallita
SAML_NOT_ENABLED "SSO (SAML) non è abilitato." SSO SAML non configurato
SSO_AUTO_PROVISION_DISABLED "L'auto provisioning è disabilitato." Impossibile creare automaticamente utenti SSO

Limitazione della Frequenza

La limitazione della frequenza è gestita dal pacchetto graphql-rate-limit con diverse configurazioni:

Tipo di Limite Finestra Max Richieste Applicato a
Standard 60s 500 Most queries/mutations
Sensitive 300s 10 Password reset, auth operations
Expensive 60s 20 Complex queries, bulk operations
Search 60s 60 Search operations
File Upload 60s 100 File upload operations

Quando si è limitati, riceverai un errore standard di GraphQL con un messaggio che indica che il limite è stato superato.

Errori di Sistema e Interni

Codice di Errore Messaggio Descrizione
INTERNAL_SERVER_ERROR "Errore interno del server." Errore generico per errori non sicuri in produzione
UNKNOWN_ERROR "Errore sconosciuto." Si è verificato un errore imprevisto
RESOLVER_NOT_FOUND "Risolutore non trovato" Risolutore GraphQL mancante
FIELD_NOT_IN_SCHEMA "Campo non presente nello schema" Il campo richiesto non esiste

Migliori Pratiche per la Gestione degli Errori

Gestione Lato Client

try {
  const result = await client.mutate({
    mutation: CREATE_TODO,
    variables: { input }
  });
} catch (error) {
  if (error.graphQLErrors?.length > 0) {
    const errorCode = error.graphQLErrors[0].extensions?.code;
    
    switch (errorCode) {
      case 'UNAUTHENTICATED':
        // Redirect to login
        break;
      case 'TODO_NOT_FOUND':
        // Show "Record not found" message
        break;
      case 'VALIDATION_ERROR':
        // Display validation errors
        break;
      default:
        // Show generic error message
    }
  }
}

Scenari Comuni di Errore

  1. Autenticazione Richiesta: UNAUTHENTICATED - L'utente deve effettuare il login
  2. Permesso Negato: FORBIDDEN - L'utente non ha il ruolo/permissi richiesti
  3. Risorsa Non Trovata: *_NOT_FOUND - La risorsa non esiste o l'utente non può accedervi
  4. Validazione Fallita: VALIDATION_ERROR, BAD_USER_INPUT - Controlla i parametri di input
  5. Limite di Frequenza Superato: Controlla le intestazioni di limitazione della frequenza e implementa un backoff
  6. Pagamento Richiesto: PAYMENT_REQUIRED - La funzionalità richiede una sottoscrizione

Documentazione Correlata

Assistente AI

Le risposte sono generate utilizzando l'IA e potrebbero contenere errori.

Come posso aiutarti?

Chiedimi qualsiasi cosa su Blue o su questa documentazione.

Invia per inviare • Maiusc+Invio per una nuova riga • ⌘I per aprire