Błędy
Partner API używa standardowych kodów stanu HTTP i treści odpowiedzi w formacie JSON, aby wyjaśnić, dlaczego żądanie się nie powiodło.
Struktura odpowiedzi z błędem
Większość błędów API zwraca treść JSON z komunikatem oraz, jeśli są dostępne, szczegółami w formie strukturalnej.
{
"success": false,
"message": "Request body.members[0].member_id is required"
}
Niektóre punkty końcowe specyficzne dla domeny zwracają jawny stan i przyczynę. Na przykład błędy kontroli dostępu zawierają pola takie jak reason, door_id, facility_id i event_id.
{
"status": "failed",
"reason": "device_offline",
"door_id": "00000000000000000000000000000007",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"event_id": "00000000-0000-0000-0000-000000000045"
}
Kody stanu
400 Bad Request
Żądanie ma nieprawidłowy format lub brakuje w nim wymaganych pól. Popraw żądanie przed ponowieniem.
401 Unauthorized
Uwierzytelnianie nie powiodło się. Sprawdź, czy używasz HTTP Basic Auth z tajnym kluczem API jako nazwą użytkownika i pustym hasłem.
403 Forbidden
Klucz jest prawidłowy, ale operacja jest niedozwolona. Typowe przyczyny to użycie klucza tylko do odczytu w operacji zapisu lub próba dostępu do obiektu, w którym Twoja integracja nie jest włączona.
404 Not Found
Nie znaleziono żądanego zasobu lub nie jest on dostępny dla Twojej integracji.
409 Conflict
Żądanie jest sprzeczne z bieżącym stanem zasobu. W przypadku kontroli dostępu może to oznaczać na przykład, że kontroler drzwi/bramy jest w trybie serwisowym.
422 Unprocessable Entity
Żądanie zawiera prawidłowy JSON, ale nie przechodzi walidacji semantycznej. Popraw dane przed ponowieniem.
429 Too Many Requests
Integracja przekroczyła udokumentowany limit liczby żądań. Ponów próbę z wykładniczym wydłużaniem odstępów.
500 Internal Server Error
Performance Hub nie mógł zrealizować żądania z powodu błędu wewnętrznego. Ponów próbę z wydłużaniem odstępów. Jeśli problem nie ustąpi, skontaktuj się z pomocą techniczną, podając punkt końcowy, znacznik czasu i treść odpowiedzi.
503 Service Unavailable
Zależna usługa lub urządzenie jest niedostępne. W przypadku otwierania kontrolera drzwi/bramy może to oznaczać, że kontroler jest offline.
504 Gateway Timeout
Upłynął limit czasu operacji. W przypadku otwierania kontrolera drzwi/bramy oznacza to, że otwarcie nie zostało potwierdzone przed upływem limitu czasu.
Błędy Access Time Windows
Walidacja okien kończy się niepowodzeniem, zanim nieprawidłowa migawka zostanie zapisana. Typowe przyczyny, w przypadku których ponawianie nie pomoże:
- Brak
access_time_windows_revision, gdy obecne jestaccess_time_windows. - Wartości epoki w postaci ciągu znaków, liczby zmiennoprzecinkowej lub prawdopodobnie w milisekundach.
- Nieprawidłowa strefa czasowa IANA, odwrócony przedział, zduplikowany
external_id, nakładające się bloki tygodniowe lub niepodzielony blok nocny. - Wartość wykraczająca poza udokumentowane limity liczby, długości lub zakresu.
Powtórzona wersja z inną znormalizowaną zawartością powoduje błąd 409 Conflict. Uzgodnij dane z najnowszym wiarygodnym stanem i przydziel nowszą wersję; nie ponawiaj w kółko konfliktowej pary. Starsza wersja jest zgłaszana jako pominięta nieaktualna migawka i nie może nadpisać nowszego stanu. Nieznany lub niezmapowany scope_key powoduje odmowę autoryzacji i należy go traktować jako alert konfiguracyjny.
Jeśli dostarczenie przekroczy limit czasu lub otrzyma przejściowy błąd 5xx, ponów dokładnie tę samą znormalizowaną migawkę z tą samą wersją. Jeśli pobranie danych ze źródła nie powiodło się, całkowicie pomiń pole okien; nigdy nie zastępuj go pustą tablicą.
Wskazówki dotyczące ponawiania
Te błędy ponawiaj z ograniczonym wykładniczym wydłużaniem odstępów:
429500502503504
Tych błędów nie ponawiaj bezrefleksyjnie:
400401403404409422
W przypadku kontroli dostępu zawsze traktuj odpowiedzi o przekroczeniu limitu czasu i stanie offline jako nieudane otwarcia, chyba że Twoje własne reguły dostępu i procesy bezpieczeństwa stanowią inaczej.
Informacje, które należy przekazać pomocy technicznej
Kontaktując się z pomocą techniczną, podaj:
- Punkt końcowy i metodę HTTP.
- Znacznik czasu i strefę czasową.
- Identyfikator klucza partnera, a nie tajny klucz.
- Użyty identyfikator obiektu.
- Identyfikator rekordu źródłowego z Twojego systemu.
- Stan i treść odpowiedzi.
event_idlubcommand_id, jeśli są dostępne.