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
- Odczytaj status HTTP.
- Zanim odczytasz
code, upewnij się, że treść odpowiedzi to JSON. - Aby wybrać gałąź obsługi w kliencie, użyj razem statusu i
code. errorinextpokazuj jako zwykły tekst. Nie renderuj ich jako HTML i nie uruchamiaj jako poleceń.- Do automatycznego naprawiania używaj
next_action. Jeśli klient nie rozpoznaje działania, zatrzymaj się i pokaż błąd. - Zachowaj zwrócone wartości
limit,reset_atiretry_after_secondsrazem z nieudanym żądaniem. - Zanim ponowisz żądanie, zastosuj zasady ponawiania.
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 samcode 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_limitedodpowiedź ma też nagłówkiRetry-AfteriX-RateLimit-After. Oba zawierają tę samą liczbę sekund coretry_after_seconds. - Przekroczenie limitu czasu nie dowodzi, że wynik jest pusty.
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:
- 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.
- Jeśli trasa nie ma klucza idempotencji, najpierw odczytaj zasób. Wyślij zapis ponownie tylko wtedy, gdy zmiany nie ma.
- Jeśli nie możesz znaleźć wyniku, zatrzymaj automatyczne ponawianie i poinformuj użytkownika.
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
unauthorizedoznacza, że brakuje uwierzytelnienia konta albo jest ono nieprawidłowe lub wygasło. WyślijAuthorization: Bearer <token>albo zaloguj się ponownie. Niektóre trasy zwracająnext_action.codeo wartościauthorize_requestznextzależnym od trasy, na przykład przy połączeniu podglądu na żywo bez ważnego biletu.ingest_key_invaliddotyczy tylko przyjmowania telemetrii. Skonfiguruj aktualny klucz dla właściwego projektu.forbiddenoznacza, że konto nie może wykonać tej czynności. Nie ponawiaj z innymi ID zasobów.not_foundoznacza, że zasób nie jest dostępny dla konta.
Chroń szczegóły błędów
- Odpowiedź
account_recovery_availablezawiera krótkotrwałyrecovery_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
500zawsze mają komunikatInternal 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. Teksterror 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
Tekstnext 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.
