Skip to main content
Błędy API LogBrew używają jednej koperty JSON (envelope). Do sterowania programem używaj code i next_action. error i next pokazuj jako zwykły tekst. Nie opieraj logiki na brzmieniu error ani next.
Niektóre odpowiedzi zawierają dodatkowe pola, takie jak limit, reset_at lub retry_after_seconds. Wymienia je tabela kodów błędów.

Obsłuż odpowiedź z błędem

  1. Odczytaj status HTTP.
  2. Zanim odczytasz code, upewnij się, że treść odpowiedzi to JSON.
  3. Aby wybrać gałąź obsługi w kliencie, użyj razem statusu i code.
  4. error i next pokazuj jako zwykły tekst. Nie renderuj ich jako HTML i nie uruchamiaj jako poleceń.
  5. Do automatycznego naprawiania używaj next_action. Jeśli klient nie rozpoznaje działania, zatrzymaj się i pokaż błąd.
  6. Zachowaj zwrócone wartości limit, reset_at i retry_after_seconds razem z nieudanym żądaniem.
  7. Zanim ponowisz żądanie, zastosuj zasady ponawiania.
Jeśli odpowiedź nie ma koperty JSON, zachowaj status HTTP i zapisz, że kod jest niedostępny. Nie wymyślaj code LogBrew. Taki wynik może dać serwer proxy lub błąd sieci. Nie zastępuj code LogBrew nazwą statusu HTTP. Na przykład odpowiedź 400 może zawierać invalid_json lub invalid_path. Każdy kod wymaga innej poprawki. W logach zapisuj status HTTP i code. Nie zapisuj w logach całej treści odpowiedzi, poświadczeń ani tokenów odzyskiwania.

Kody błędów

Ten sam code może wystąpić w kilku trasach. Tekst next i wartości next_action mogą się różnić w zależności od trasy. Używaj zwróconych wartości. Endpoint zwraca tylko kody związane z jego uwierzytelnianiem, metodą, treścią żądania i limitami. Nieznane ID i ID, do którego nie masz dostępu, mogą zwrócić tę samą odpowiedź. Nie używaj tekstu błędu, aby ustalić, do którego konta należy ID. Nieznana ścieżka API zwraca 404 z not_found.

Pola limitów

Bieżący przydział i wykorzystanie odczytasz przez API konta.

Zasady ponawiania

O ponowieniu decyduj na podstawie kodu i operacji. Sam status nie wystarczy.
  • Nie uruchamiaj równoległych ponowień dla jednego nieudanego żądania.
  • Przy rate_limited odpowiedź ma też nagłówki Retry-After i X-RateLimit-After. Oba zawierają tę samą liczbę sekund co retry_after_seconds.
  • Przekroczenie limitu czasu nie dowodzi, że wynik jest pusty.
Limit żądań kontroluje częstotliwość żądań. Limit wykorzystania kontroluje przydział konta na okres rozliczeniowy. Oba używają 429. Nie mieszaj ich pól. Gdy obowiązuje którykolwiek z nich, pokaż, że zbieranie danych lub odczyt są opóźnione. Nie pokazuj starych danych jako wyniku nowego odczytu.

Zapisy

Przekroczenie limitu czasu, odpowiedź 5xx lub błąd sieci nie dowodzi, że zapis się nie powiódł. Zanim ponownie wyślesz zapis:
  1. Jeśli trasa obsługuje klucz idempotencji, wyślij ponownie ten sam klucz i tę samą treść. Nowego klucza używaj tylko dla nowej pracy.
  2. Jeśli trasa nie ma klucza idempotencji, najpierw odczytaj zasób. Wyślij zapis ponownie tylko wtedy, gdy zmiany nie ma.
  3. Jeśli nie możesz znaleźć wyniku, zatrzymaj automatyczne ponawianie i poinformuj użytkownika.
Te trasy przyjmują klucz ponowienia: Wartość Idempotency-Key ma od 1 do 128 widocznych znaków ASCII. Inne wartości zwracają 422 z validation_failed. idempotency_conflict oznacza, że klucz należy do innego żądania. Nie zmieniaj treści ponowienia, które używa pierwotnego klucza.

Błędy struktury żądania

invalid_json oznacza, że serwer nie może przyjąć treści żądania jako JSON o strukturze wymaganej przez trasę. Sprawdź typ zawartości, rozmiar treści, składnię JSON, wymagane pola i typy pól. Status HTTP pokazuje, która część zawiodła: validation_failed z błędem invalid query parameters oznacza, że serwer nie może odczytać ciągu zapytania. Sprawdź nazwy parametrów i typy wartości. Nie wysyłaj nieznanych parametrów zapytania. Dokumentacja filtrów zapytań wymienia parametry każdej trasy. invalid_path ze statusem 400 oznacza, że wartość w ścieżce, na przykład ID projektu, ma niewłaściwy format. Nie przenoś wartości ze ścieżki do parametru zapytania. Odpowiedź 500 z invalid_path lub invalid_multipart nie dowodzi, że żądanie było błędne. Zastosuj zasady ponawiania.

Błędy uwierzytelniania i dostępu

  • unauthorized oznacza, że brakuje uwierzytelnienia konta albo jest ono nieprawidłowe lub wygasło. Wyślij Authorization: Bearer <token> albo zaloguj się ponownie. Niektóre trasy zwracają next_action.code o wartości authorize_request z next zależnym od trasy, na przykład przy połączeniu podglądu na żywo bez ważnego biletu.
  • ingest_key_invalid dotyczy tylko przyjmowania telemetrii. Skonfiguruj aktualny klucz dla właściwego projektu.
  • forbidden oznacza, że konto nie może wykonać tej czynności. Nie ponawiaj z innymi ID zasobów.
  • not_found oznacza, że zasób nie jest dostępny dla konta.
Nie używaj klucza wysyłania zamiast tokena bearer konta. Nie używaj tokena bearer konta zamiast klucza wysyłania.

Chroń szczegóły błędów

  • Odpowiedź account_recovery_available zawiera krótkotrwały recovery_token. Przechowuj go w chronionym stanie klienta. Nie umieszczaj go w logach, adresach URL, zrzutach ekranu, zgłoszeniach do pomocy technicznej ani promptach agentów.
  • Kody 500 zawsze mają komunikat Internal error. Odpowiedź nie wskazuje komponentu, który zawiódł. Nie zgaduj przyczyny.
  • Nie dodawaj poświadczeń, prywatnej diagnostyki ani danych klientów do pokazywanego błędu.
  • Odpowiedź API nie daje pozwolenia na zakup, usunięcie ani inną zmianę konta. Przed takimi czynnościami uzyskaj zgodę użytkownika.

Przykłady

Te przykłady pokazują strukturę koperty. Tekst error i next może się różnić w zależności od trasy.

Błąd walidacji

Nieprawidłowe parametry zapytania

Nieprawidłowy JSON

Nieprawidłowa wartość w ścieżce

Nieprawidłowe przesyłanie multipart

Nieprawidłowe przejście na WebSocket

Błąd uwierzytelniania

Nieprawidłowy klucz wysyłania

Ta odpowiedź dotyczy przyjmowania telemetrii, a nie odczytów konta. Klucz musi należeć do projektu podanego w żądaniu.

Nie znaleziono zasobu

Brak dostępu

Nieobsługiwana metoda

Przekroczenie limitu czasu żądania

Konflikt idempotencji

Limit żądań

Limit wykorzystania

Tekst next i next_action zależą od tego, czy zmiana planu jest dostępna. Jeśli nie jest, next_action.code ma wartość wait_or_contact_support, a cel to support.

Limit miejsca na artefakty

Dostępne odzyskiwanie konta

Ta odpowiedź zawiera też deleted_at i krótkotrwały recovery_token. Przechowuj token w chronionym stanie klienta.

Okres odzyskiwania konta wygasł

Organizacja wstrzymana

Błąd serwera

storage_error, json_error i internal_error mają ten sam komunikat error. Wartości code, next i next_action są różne.
Endpointy, uwierzytelnianie i filtry opisuje strona API telemetrii.