Kompletna dokumentacja wszystkich kodów błędów w API GraphQL Blue, zorganizowana według kategorii


Format odpowiedzi błędu

API GraphQL Blue zwraca błędy w ustandaryzowanym formacie zgodnym ze specyfikacją GraphQL. Gdy wystąpi błąd, odpowiedź zawiera tablicę errors z szczegółowymi informacjami na temat tego, co poszło nie tak.

Przykład odpowiedzi błędu

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

Struktura błędu

Każdy obiekt błędu zawiera:

  • message: Opis błędu w formie czytelnej dla człowieka
  • extensions.code: Kod błędu w formacie zrozumiałym dla maszyn do obsługi programowej

Bezpieczeństwo błędów produkcyjnych

Blue wdraża system bezpieczeństwa dla ujawniania błędów:

  • Bezpieczne błędy: Wyświetlają rzeczywiste kody błędów i komunikaty klientom
  • Niebezpieczne błędy: Zwracają ogólny INTERNAL_SERVER_ERROR, aby ukryć wrażliwe szczegóły
  • Nie znaleziono zasobu: Wszystkie błędy *_NOT_FOUND są uważane za bezpieczne i zawsze ujawniane

Kategorie błędów

Blue definiuje 108 niestandardowych kodów błędów zorganizowanych w następujące kategorie:

Błędy uwierzytelniania i autoryzacji

Kod błędu Komunikat Opis
UNAUTHENTICATED "Wymagana autoryzacja." Żądanie wymaga autoryzacji, ale nie została podana
FORBIDDEN "Nie jesteś autoryzowany." Uwierzytelniony, ale brakuje wymaganych uprawnień

Błędy "Nie znaleziono zasobu" (łącznie 52)

Zasoby podstawowe

Kod błędu Komunikat Opis
TODO_NOT_FOUND "Todo nie zostało znalezione." Rekord/todo nie istnieje lub użytkownik nie ma dostępu
TODO_LIST_NOT_FOUND "Lista todo nie została znaleziona." Lista nie istnieje lub użytkownik nie ma dostępu
PROJECT_NOT_FOUND "Projekt nie został znaleziony." Projekt nie istnieje lub użytkownik nie ma dostępu
COMPANY_NOT_FOUND "Firma nie została znaleziona." Firma nie istnieje lub użytkownik nie ma dostępu
USER_NOT_FOUND "Użytkownik nie został znaleziony." Użytkownik nie istnieje w systemie

Niestandardowe pola i formularze

Kod błędu Komunikat Opis
CUSTOM_FIELD_NOT_FOUND "Niestandardowe pole nie zostało znalezione." Niestandardowe pole nie istnieje
CUSTOM_FIELD_OPTION_NOT_FOUND "Opcja niestandardowego pola nie została znaleziona." Opcja pola wyboru nie istnieje
FORM_NOT_FOUND "Formularz nie został znaleziony." Szablon formularza nie istnieje
FORM_FIELD_NOT_FOUND "Pole formularza nie zostało znalezione." Pole formularza nie istnieje

Komponenty projektu

Kod błędu Komunikat Opis
TAG_NOT_FOUND "Tag nie został znaleziony." Tag nie istnieje w projekcie
AUTOMATION_NOT_FOUND "Automatyzacja nie została znaleziona." Reguła automatyzacji nie istnieje
CHART_NOT_FOUND "Wykres nie został znaleziony." Wykres na pulpicie nie istnieje
WEBHOOK_NOT_FOUND "Webhook nie został znaleziony." Konfiguracja webhooka nie istnieje
TEMPLATE_NOT_FOUND "Szablon nie został znaleziony." Szablon projektu nie istnieje

Komentarze i aktywności

Kod błędu Komunikat Opis
COMMENT_NOT_FOUND "Komentarz nie został znaleziony." Komentarz nie istnieje
ACTIVITY_NOT_FOUND "Aktywność nie została znaleziona." Wpis w dzienniku aktywności nie istnieje
REACTION_NOT_FOUND "Reakcja nie została znaleziona." Reakcja na komentarz nie istnieje

Inne zasoby

Kod błędu Komunikat Opis
FILE_NOT_FOUND "Plik nie został znaleziony." Załącznik pliku nie istnieje
SUBSCRIPTION_NOT_FOUND "Subskrypcja nie została znaleziona." Subskrypcja rozliczeniowa nie istnieje
INVOICE_NOT_FOUND "Faktura nie została znaleziona." Rekord faktury nie istnieje
CHECKLIST_NOT_FOUND "Lista kontrolna nie została znaleziona." Lista kontrolna nie istnieje
CHECKLIST_ITEM_NOT_FOUND "Element listy kontrolnej nie został znaleziony." Element listy kontrolnej nie istnieje
PROJECT_ROLE_NOT_FOUND "Rola projektu nie została znaleziona." Niestandardowa rola projektu nie istnieje
PROJECT_ACCESS_NOT_FOUND "Dostęp do projektu nie został znaleziony." Dostęp użytkownika do projektu nie istnieje
NOTIFICATION_NOT_FOUND "Powiadomienie nie zostało znalezione." Powiadomienie nie istnieje
DASHBOARD_NOT_FOUND "Pulpit nawigacyjny nie został znaleziony." Pulpit nawigacyjny nie istnieje
KEY_NOT_FOUND "Klucz nie został znaleziony." Klucz ustawień nie istnieje

Błędy walidacji

Kod błędu Komunikat Opis
BAD_USER_INPUT "Nieprawidłowe dane wejściowe." Ogólny błąd walidacji danych wejściowych
VALIDATION_ERROR "Nieprawidłowe parametry" Parametry żądania nie przeszły walidacji
BAD_EMAIL "Musisz wprowadzić prawidłowy adres e-mail." Nieprawidłowy format adresu e-mail
INVALID_IDS "Nieprawidłowe identyfikatory." Jeden lub więcej identyfikatorów w żądaniu jest nieprawidłowych
PHONE_INVALID "Numer telefonu jest nieprawidłowy." Nieprawidłowy format numeru telefonu
URL_INVALID "URL jest nieprawidłowy." Nieprawidłowy format URL
INVALID_RECURRING_DUE_DATE "Nieprawidłowa data wykonania dla zadania cyklicznego" Walidacja daty zadania cyklicznego nie powiodła się
INVALID_COLOR "Nieprawidłowy kolor" Wartość koloru nie odpowiada oczekiwanemu formatowi

Błędy logiki biznesowej

Limity i kwoty

Kod błędu Komunikat Opis
COMPANY_LIMIT "Osiągnięto limit firm dla twojego konta." Osiągnięto maksymalną liczbę firm
PROJECT_LIMIT "Osiągnięto limit projektów dla twojej firmy." Osiągnięto maksymalną liczbę projektów
USER_LIMIT "Osiągnięto limit użytkowników dla twojej firmy." Osiągnięto maksymalną liczbę użytkowników
PROJECT_TEMPLATE_LIMIT "Osiągnięto limit szablonów dla twojej firmy." Osiągnięto maksymalną liczbę szablonów
CUSTOM_FIELD_LIMIT "Osiągnięto limit pól niestandardowych." Osiągnięto maksymalną liczbę pól niestandardowych
TODO_LIST_LIMIT "Osiągnięto limit list dla twojego projektu." Maksymalna liczba list na projekt
TOO_MANY_TODOS "Zbyt wiele todo." Przekroczono limit rekordów
TOO_MANY_OPTIONS "Zbyt wiele opcji." Przekroczono limit opcji pola wyboru
MAX_FILE_SIZE "Maksymalny rozmiar pliku to 4,8 GB" Przekroczono limit rozmiaru przesyłanego pliku

Konflikty zasobów

Kod błędu Komunikat Opis
TAG_ALREADY_EXISTS "Tag już istnieje." Tag o tej samej nazwie istnieje w projekcie
COMPANY_SLUG_ALREADY_EXISTS "Firma już istnieje." Slug/URL firmy jest zajęty
USER_ALREADY_EXISTS "Użytkownik już istnieje." Adres e-mail użytkownika jest już zarejestrowany
ALREADY_INVITED "Użytkownik jest już zaproszony." Użytkownik ma już oczekujące zaproszenie
USER_ALREADY_IN_PROJECT "Użytkownik jest już w tym projekcie." Użytkownik ma już dostęp do projektu
FILE_TYPE_NOT_ALLOWED "Typ pliku nie jest dozwolony." Typ przesyłanego pliku jest ograniczony

Błędy uprawnień i dostępu

Kod błędu Komunikat Opis
UNABLE_TO_DELETE_ONLY_ADMIN "Nie można usunąć jedynego administratora w firmie." Nie można usunąć ostatniego administratora
UNABLE_TO_UPDATE_OWNER "Nie można zaktualizować WŁAŚCICIELA." Nie można zmodyfikować uprawnień właściciela
TODO_LIST_IS_HIDDEN "Lista todo jest ukryta." Lista ukryta przed rolą użytkownika
COMPANY_NOT_ACTIVE "Firma nie jest aktywna." Subskrypcja firmy nieaktywna
PROJECT_NOT_ACTIVE "Projekt nie jest aktywny." Projekt jest zarchiwizowany/nieaktywny

Błędy integralności danych

Kod błędu Komunikat Opis
UNABLE_TO_DELETE_LIST_WITH_TODOS "Nie można usunąć listy z zadaniami." Lista musi być pusta, aby ją usunąć
UNABLE_TO_DELTE_FILE "Nie można usunąć pliku." Usunięcie pliku nie powiodło się (błąd w kodzie)
UNABLE_TO_MOVE_TODO "Nie można przenieść todo." Nie można przenieść rekordu między listami
DEPENDENCY_HAS_DEPENDENCY "Zależność ma zależność" Wykryto cykliczną zależność
TODO_DEPENDS_ON_ITSELF "Todo zależy od siebie" Zależność samoreferencyjna

Błędy Stripe/Płatności

Kod błędu Komunikat Opis
STRIPE_CREATING_CUSTOMER "Błąd podczas tworzenia klienta w Stripe." Tworzenie klienta Stripe nie powiodło się
STRIPE_ALREADY_SUBSCRIBED "Już subskrybowano." Aktywna subskrypcja istnieje
STRIPE_MISSING_PAYMENT_METHOD "Brak metody płatności." Brak metody płatności w pliku
STRIPE_CREATING_SUBSCRIPTION "Błąd podczas tworzenia subskrypcji w Stripe." Tworzenie subskrypcji nie powiodło się
STRIPE_UPDATING_SUBSCRIPTION "Błąd podczas aktualizacji subskrypcji w Stripe." Aktualizacja subskrypcji nie powiodła się
STRIPE_CHECKOUT_SESSION "Błąd podczas tworzenia sesji checkout w Stripe." Tworzenie sesji checkout nie powiodło się
STRIPE_CUSTOMER_PORTAL "Błąd podczas tworzenia portalu klienta w Stripe." Tworzenie sesji portalu nie powiodło się
STRIPE_TAX_ID "Nie można zapisać identyfikatora podatkowego" Walidacja/zapis identyfikatora podatkowego nie powiodła się
PAYMENT_REQUIRED "Wymagana płatność." Funkcja wymaga aktywnej subskrypcji
NO_PAYMENT_REQUIRED "Nie wymagana płatność." Płatność nie jest potrzebna do operacji

Błędy uwierzytelniania i sesji

Kod błędu Komunikat Opis
INVALID_CREDENTIALS "Nieprawidłowe dane uwierzytelniające." Nazwa użytkownika/hasło niepoprawne
EXPIRED_RESET_TOKEN "Token resetowania wygasł." Token resetowania hasła wygasł
OAUTH_FAILED "Proces OAuth nie powiódł się." Uwierzytelnienie OAuth nie powiodło się
SAML_NOT_ENABLED "SSO (SAML) nie jest włączone." SAML SSO nie jest skonfigurowane
SSO_AUTO_PROVISION_DISABLED "Automatyczne tworzenie jest wyłączone." Nie można automatycznie tworzyć użytkowników SSO

Ograniczenia szybkości

Ograniczenia szybkości są obsługiwane przez pakiet graphql-rate-limit z różnymi konfiguracjami:

Typ limitu Okno Maks. żądania Zastosowane do
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

Gdy wystąpi ograniczenie szybkości, otrzymasz standardowy błąd GraphQL z komunikatem wskazującym, że limit został przekroczony.

Błędy systemowe i wewnętrzne

Kod błędu Komunikat Opis
INTERNAL_SERVER_ERROR "Wewnętrzny błąd serwera." Ogólny błąd dla niebezpiecznych błędów w produkcji
UNKNOWN_ERROR "Nieznany błąd." Wystąpił nieoczekiwany błąd
RESOLVER_NOT_FOUND "Resolver nie został znaleziony" Brak resolvera GraphQL
FIELD_NOT_IN_SCHEMA "Pole nie znajduje się w schemacie" Żądane pole nie istnieje

Najlepsze praktyki obsługi błędów

Obsługa po stronie klienta

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
    }
  }
}

Typowe scenariusze błędów

  1. Wymagana autoryzacja: UNAUTHENTICATED - Użytkownik musi się zalogować
  2. Odmowa dostępu: FORBIDDEN - Użytkownik nie ma wymaganej roli/uprawnienia
  3. Nie znaleziono zasobu: *_NOT_FOUND - Zasób nie istnieje lub użytkownik nie ma do niego dostępu
  4. Walidacja nie powiodła się: VALIDATION_ERROR, BAD_USER_INPUT - Sprawdź parametry wejściowe
  5. Ograniczenie szybkości: Sprawdź nagłówki limitu szybkości i wdroż strategię opóźnienia
  6. Wymagana płatność: PAYMENT_REQUIRED - Funkcja wymaga subskrypcji

Powiązana dokumentacja

Asystent AI

Odpowiedzi są generowane przy użyciu sztucznej inteligencji i mogą zawierać błędy.

Jak mogę Ci pomóc?

Zapytaj mnie o cokolwiek dotyczącego Blue lub tej dokumentacji.

Wciśnij Enter, aby wysłać • Shift+Enter, aby dodać nową linię • ⌘I, aby otworzyć