Uitgebreide referentie van alle foutcodes in de Blue GraphQL API, georganiseerd per categorie
De GraphQL API van Blue retourneert fouten in een gestandaardiseerd formaat volgens de GraphQL-specificatie. Wanneer er een fout optreedt, bevat de reactie een errors
array met gedetailleerde informatie over wat er misging.
Voorbeeld van een foutreactie
{
"errors": [
{
"message": "Todo was not found.",
"extensions": {
"code": "TODO_NOT_FOUND"
}
}
]
}
Foutstructuur
Elk foutobject bevat:
- bericht: Een leesbare beschrijving van de fout
- extensions.code: Een machine-leesbare foutcode voor programmatische verwerking
Productiefoutveiligheid
Blue implementeert een veiligheidssysteem voor foutblootstelling:
- Veilige fouten: Toon werkelijke foutcodes en berichten aan klanten
- Niet-veilige fouten: Retourneer generieke
INTERNAL_SERVER_ERROR
om gevoelige details te verbergen
- Hulpbron niet gevonden: Alle
*_NOT_FOUND
fouten worden als veilig beschouwd en altijd blootgesteld
Foutcategorieën
Blue definieert 108 aangepaste foutcodes, georganiseerd in de volgende categorieën:
Authenticatie- en autorisatiefouten
Foutcode |
Bericht |
Beschrijving |
UNAUTHENTICATED |
"Authenticatie vereist." |
Verzoek vereist authenticatie, maar er is geen opgegeven |
FORBIDDEN |
"U bent niet geautoriseerd." |
Geauthenticeerd maar mist vereiste machtigingen |
Hulpbron niet gevonden fouten (52 totaal)
Kernbronnen
Foutcode |
Bericht |
Beschrijving |
TODO_NOT_FOUND |
"Todo niet gevonden." |
Record/todo bestaat niet of gebruiker heeft geen toegang |
TODO_LIST_NOT_FOUND |
"Todo-lijst niet gevonden." |
Lijst bestaat niet of gebruiker heeft geen toegang |
PROJECT_NOT_FOUND |
"Project niet gevonden." |
Project bestaat niet of gebruiker heeft geen toegang |
COMPANY_NOT_FOUND |
"Bedrijf niet gevonden." |
Bedrijf bestaat niet of gebruiker heeft geen toegang |
USER_NOT_FOUND |
"Gebruiker niet gevonden." |
Gebruiker bestaat niet in het systeem |
Foutcode |
Bericht |
Beschrijving |
CUSTOM_FIELD_NOT_FOUND |
"Aangepast veld niet gevonden." |
Aangepast veld bestaat niet |
CUSTOM_FIELD_OPTION_NOT_FOUND |
"Aangepaste veldoptie niet gevonden." |
Selecteer veldoptie bestaat niet |
FORM_NOT_FOUND |
"Formulier niet gevonden." |
Formuliersjabloon bestaat niet |
FORM_FIELD_NOT_FOUND |
"Formulierveld niet gevonden." |
Formulierveld bestaat niet |
Projectcomponenten
Foutcode |
Bericht |
Beschrijving |
TAG_NOT_FOUND |
"Tag niet gevonden." |
Tag bestaat niet in project |
AUTOMATION_NOT_FOUND |
"Automatisering niet gevonden." |
Automatiseringsregel bestaat niet |
CHART_NOT_FOUND |
"Grafiek niet gevonden." |
Dashboardgrafiek bestaat niet |
WEBHOOK_NOT_FOUND |
"Webhook niet gevonden." |
Webhook-configuratie bestaat niet |
TEMPLATE_NOT_FOUND |
"Sjabloon niet gevonden." |
Projectsjabloon bestaat niet |
Opmerkingen en activiteiten
Foutcode |
Bericht |
Beschrijving |
COMMENT_NOT_FOUND |
"Opmerking niet gevonden." |
Opmerking bestaat niet |
ACTIVITY_NOT_FOUND |
"Activiteit niet gevonden." |
Activiteitslogboekitem bestaat niet |
REACTION_NOT_FOUND |
"Reactie niet gevonden." |
Opmerkingreactie bestaat niet |
Andere bronnen
Foutcode |
Bericht |
Beschrijving |
FILE_NOT_FOUND |
"Bestand niet gevonden." |
Bestandsbijlage bestaat niet |
SUBSCRIPTION_NOT_FOUND |
"Abonnement niet gevonden." |
Factureringsabonnement bestaat niet |
INVOICE_NOT_FOUND |
"Factuur niet gevonden." |
Factuurrecord bestaat niet |
CHECKLIST_NOT_FOUND |
"Checklist niet gevonden." |
Checklist bestaat niet |
CHECKLIST_ITEM_NOT_FOUND |
"Checklistitem niet gevonden." |
Checklistitem bestaat niet |
PROJECT_ROLE_NOT_FOUND |
"Projectrol niet gevonden." |
Aangepaste projectrol bestaat niet |
PROJECT_ACCESS_NOT_FOUND |
"Projecttoegang niet gevonden." |
Gebruiker heeft geen projecttoegang |
NOTIFICATION_NOT_FOUND |
"Melding niet gevonden." |
Melding bestaat niet |
DASHBOARD_NOT_FOUND |
"Dashboard niet gevonden." |
Dashboard bestaat niet |
KEY_NOT_FOUND |
"Sleutel niet gevonden." |
Instellingen sleutel bestaat niet |
Validatiefouten
Foutcode |
Bericht |
Beschrijving |
BAD_USER_INPUT |
"Ongeldige invoer." |
Algemene invoervalidatiefout |
VALIDATION_ERROR |
"Ongeldige parameters" |
Verzoekparameters zijn niet gevalideerd |
BAD_EMAIL |
"U moet een geldig e-mailadres invoeren." |
Ongeldig e-mailformaat |
INVALID_IDS |
"Ongeldige id's." |
Een of meer ID's in het verzoek zijn ongeldig |
PHONE_INVALID |
"Telefoon is ongeldig." |
Ongeldig telefoonnummerformaat |
URL_INVALID |
"URL is ongeldig." |
Ongeldig URL-formaat |
INVALID_RECURRING_DUE_DATE |
"Ongeldige vervaldatum voor terugkerende taak" |
Validatie van de datum voor terugkerende taken is mislukt |
INVALID_COLOR |
"Ongeldige kleur" |
Kleurwaarde komt niet overeen met het verwachte formaat |
Bedrijfslogica-fouten
Limieten en quota
Foutcode |
Bericht |
Beschrijving |
COMPANY_LIMIT |
"U heeft de bedrijfsgrens voor uw account bereikt." |
Maximale bedrijven bereikt |
PROJECT_LIMIT |
"U heeft de projectgrens voor uw bedrijf bereikt." |
Maximale projecten bereikt |
USER_LIMIT |
"U heeft de gebruikerslimiet voor uw bedrijf bereikt." |
Maximale gebruikers bereikt |
PROJECT_TEMPLATE_LIMIT |
"U heeft de sjabloonlimiet voor uw bedrijf bereikt." |
Maximale sjablonen bereikt |
CUSTOM_FIELD_LIMIT |
"Limiet voor aangepaste velden bereikt." |
Maximale aangepaste velden bereikt |
TODO_LIST_LIMIT |
"U heeft de lijstlimiet voor uw project bereikt." |
Maximale lijsten per project |
TOO_MANY_TODOS |
"Te veel todo's." |
Recordlimiet overschreden |
TOO_MANY_OPTIONS |
"Te veel opties." |
Limiet voor selectievakopties overschreden |
MAX_FILE_SIZE |
"Maximale bestandsgrootte is 4,8 GB" |
Limiet voor bestandsoverdracht overschreden |
Hulpbronconflicten
Foutcode |
Bericht |
Beschrijving |
TAG_ALREADY_EXISTS |
"Tag bestaat al." |
Tag met dezelfde naam bestaat in project |
COMPANY_SLUG_ALREADY_EXISTS |
"Bedrijf bestaat al." |
Bedrijfsslag/URL is bezet |
USER_ALREADY_EXISTS |
"Gebruiker bestaat al." |
Gebruikers-e-mailadres is al geregistreerd |
ALREADY_INVITED |
"De gebruiker is al uitgenodigd." |
Gebruiker heeft al een openstaande uitnodiging |
USER_ALREADY_IN_PROJECT |
"Gebruiker is al aan dit project toegevoegd." |
Gebruiker heeft al toegang tot het project |
FILE_TYPE_NOT_ALLOWED |
"Bestandstype niet toegestaan." |
Geüpload bestandstype is beperkt |
Toegangs- en machtigingsfouten
Foutcode |
Bericht |
Beschrijving |
UNABLE_TO_DELETE_ONLY_ADMIN |
"Kan de enige Admin in het bedrijf niet verwijderen." |
Laatste admin kan niet worden verwijderd |
UNABLE_TO_UPDATE_OWNER |
"Kan de EIGENAAR niet bijwerken." |
Machtigingen van de eigenaar kunnen niet worden gewijzigd |
TODO_LIST_IS_HIDDEN |
"Todo-lijst is verborgen." |
Lijst is verborgen voor de rol van de gebruiker |
COMPANY_NOT_ACTIVE |
"Bedrijf is niet actief." |
Bedrijfsabonnement is inactief |
PROJECT_NOT_ACTIVE |
"Project is niet actief." |
Project is gearchiveerd/inactief |
Gegevensintegriteitsfouten
Foutcode |
Bericht |
Beschrijving |
UNABLE_TO_DELETE_LIST_WITH_TODOS |
"Kan lijst met todo's niet verwijderen." |
Lijst moet leeg zijn om te verwijderen |
UNABLE_TO_DELTE_FILE |
"Kan bestand niet verwijderen." |
Verwijderen van bestand mislukt (typefout in code) |
UNABLE_TO_MOVE_TODO |
"Kan todo niet verplaatsen." |
Kan record niet tussen lijsten verplaatsen |
DEPENDENCY_HAS_DEPENDENCY |
"Afhankelijkheid heeft afhankelijkheid" |
Circulaire afhankelijkheid gedetecteerd |
TODO_DEPENDS_ON_ITSELF |
"Todo hangt van zichzelf af" |
Zelf-refererende afhankelijkheid |
Stripe/Betaalfouten
Foutcode |
Bericht |
Beschrijving |
STRIPE_CREATING_CUSTOMER |
"Fout bij het aanmaken van klant in Stripe." |
Aanmaak van Stripe-klant mislukt |
STRIPE_ALREADY_SUBSCRIBED |
"Al geabonneerd." |
Actief abonnement bestaat |
STRIPE_MISSING_PAYMENT_METHOD |
"Ontbrekende betaalmethode." |
Geen betaalmethode op bestand |
STRIPE_CREATING_SUBSCRIPTION |
"Fout bij het aanmaken van abonnement in Stripe." |
Aanmaak van abonnement mislukt |
STRIPE_UPDATING_SUBSCRIPTION |
"Fout bij het bijwerken van abonnement in Stripe." |
Bijwerken van abonnement mislukt |
STRIPE_CHECKOUT_SESSION |
"Fout bij het aanmaken van checkout-sessie in Stripe." |
Aanmaak van checkout-sessie mislukt |
STRIPE_CUSTOMER_PORTAL |
"Fout bij het aanmaken van klantportaal in Stripe." |
Aanmaak van portaal-sessie mislukt |
STRIPE_TAX_ID |
"Kan belasting-ID niet opslaan" |
Validatie/opslag van belasting-ID mislukt |
PAYMENT_REQUIRED |
"Betaling vereist." |
Functie vereist actief abonnement |
NO_PAYMENT_REQUIRED |
"Geen betaling vereist." |
Betaling niet nodig voor operatie |
Authenticatie- en sessiefouten
Foutcode |
Bericht |
Beschrijving |
INVALID_CREDENTIALS |
"Ongeldige inloggegevens." |
Gebruikersnaam/wachtwoord onjuist |
EXPIRED_RESET_TOKEN |
"Reset-token is verlopen." |
Wachtwoord reset-token is verlopen |
OAUTH_FAILED |
"OAuth-proces mislukt." |
OAuth-authenticatie mislukt |
SAML_NOT_ENABLED |
"SSO (SAML) is niet ingeschakeld." |
SAML SSO niet geconfigureerd |
SSO_AUTO_PROVISION_DISABLED |
"Automatische provisioning is uitgeschakeld." |
Kan SSO-gebruikers niet automatisch aanmaken |
Snelheidsbeperkingen
Snelheidsbeperkingen worden afgehandeld door het graphql-rate-limit
pakket met verschillende configuraties:
Limiettype |
Venster |
Max. Verzoeken |
Toegepast op |
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 |
Wanneer u wordt beperkt, ontvangt u een standaard GraphQL-fout met een bericht dat aangeeft dat de limiet is overschreden.
Systeem- en interne fouten
Foutcode |
Bericht |
Beschrijving |
INTERNAL_SERVER_ERROR |
"Interne serverfout." |
Algemene fout voor niet-veilige fouten in productie |
UNKNOWN_ERROR |
"Onbekende fout." |
Onverwachte fout opgetreden |
RESOLVER_NOT_FOUND |
"Resolver niet gevonden" |
GraphQL-resolver ontbreekt |
FIELD_NOT_IN_SCHEMA |
"Veld niet in schema" |
Aangevraagd veld bestaat niet |
Beste praktijken voor foutafhandeling
Client-side afhandeling
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
}
}
}
Veelvoorkomende foutscenario's
- Authenticatie vereist:
UNAUTHENTICATED
- Gebruiker moet inloggen
- Toestemming geweigerd:
FORBIDDEN
- Gebruiker mist vereiste rol/machtiging
- Hulpbron niet gevonden:
*_NOT_FOUND
- Hulpbron bestaat niet of gebruiker kan er geen toegang toe krijgen
- Validatie mislukt:
VALIDATION_ERROR
, BAD_USER_INPUT
- Controleer invoerparameters
- Snelheidslimiet overschreden: Controleer snelheidslimietheaders en implementeer terugval
- Betaling vereist:
PAYMENT_REQUIRED
- Functie vereist abonnement
Gerelateerde documentatie