Następujące sekcje opisują obsługę błędów dla API Open Cloud. Z powodu różnic w implementacji pomiędzy punktami końcowymi a warstwami walidacji, odpowiedzi błędów mogą znacznie różnić się formatem.
Błędy bramki
W przypadku problemów z autoryzacją lub routowaniem, zarówno API Open Cloud v1, jak i v2 mogą zwracać błędy w tym formacie:
Przykład błędu bramki
{
"errors": [
{
"code": 0,
"message": "Nieprawidłowy klucz API"
}
]
}
Open Cloud v2
API Open Cloud v2 zazwyczaj stosują jednolity format błędów, gdy błąd występuje wewnątrz samego punktu końcowego API.
Standardowy format błędu v2
API Open Cloud v2 zwracają błędy w tym formacie:
- code - Ciąg reprezentujący typ błędu (np. INVALID_ARGUMENT, NOT_FOUND).
- message - Czytelny dla człowieka komunikat wyjaśniający błąd.
- details - Opcjonalna tablica zawierająca dodatkowe informacje specyficzne dla błędu.
Przykład błędu v2
{
"code": "INVALID_ARGUMENT",
"message": "Nieprawidłowe ID użytkownika w żądaniu."
}
Przykład błędu v2 z szczegółami
{
"code": "INVALID_ARGUMENT",
"message": "Podany filtr jest nieprawidłowy.",
"details": [
{
...
}
]
}
Kody błędów v2
Poniższa tabela opisuje możliwe wartości dla code w odpowiedziach API v2.
| Kod | Status HTTP | Opis |
|---|---|---|
| INVALID_ARGUMENT | 400 | Przekazałeś nieprawidłowy argument, taki jak nieprawidłowy universeId. Mogą również brakować lub być nieprawidłowe nagłówki, takie jak Content-Length i Content-Type. |
| PERMISSION_DENIED | 403 | Twoje żądanie nie ma wystarczających uprawnień lub zakresu, aby wykonać operację. |
| NOT_FOUND | 404 | System nie może znaleźć określonych zasobów, takich jak wpis w magazynie danych. |
| ABORTED | 409 | Operacja została przerwana. |
| RESOURCE_EXHAUSTED | 429 | Nie masz wystarczającej kwoty, aby wykonać operację, zazwyczaj z powodu wysyłania zbyt wielu żądań. |
| CANCELLED | 499 | System przerywa żądanie, zazwyczaj z powodu przekroczenia limitu czasu po stronie klienta. |
| INTERNAL | 500 | Błąd wewnętrzny serwera, zazwyczaj z powodu błędu serwera. |
| NOT_IMPLEMENTED | 501 | Serwer nie implementuje metody API. |
| UNAVAILABLE | 503 | Usługa jest niedostępna, zazwyczaj zwracana, gdy serwer jest wyłączony. |
Open Cloud v1
API Open Cloud v1 mają niespójne formaty odpowiedzi błędów. Format zależy od konkretnego punktu końcowego, rodzaju błędu i miejsca, w którym błąd występuje w potoku przetwarzania żądania.
Większość punktów końcowych v1 zwraca błędy w jednym z tych trzech formatów:
Przykład błędu v1 z polem błędu
{
"error": "INVALID_ARGUMENT",
"message": "Nieprawidłowy kursor.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
Przykład błędu v1 z polem kodu
{
"code": "INVALID_ARGUMENT",
"message": "Nieprawidłowy kursor."
}
Przykład szczegółowego błędu walidacji v1
{
"errors": {
"assetId": ["Wartość 'a' jest nieprawidłowa."]
},
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Wystąpił jeden lub więcej błędów walidacji.",
"status": 400,
"extensions": {
"traceId": "00-427917f0fc3b8375ee33e4603a7f0693-f3f6ad560ff1a122-00"
}
}
Kody błędów v1
Poniższa tabela opisuje możliwe wartości dla error lub code w odpowiedziach API v1:
| Kod statusu HTTP | Błąd | Opisy |
|---|---|---|
| 400 | INVALID_ARGUMENT | Przekazałeś nieprawidłowy argument, taki jak nieprawidłowy universeId. Mogą również brakować lub być nieprawidłowe nagłówki, takie jak Content-Length i Content-Type. |
| 403 | INSUFFICIENT_SCOPE | Żądanie wymaga wyższych uprawnień niż te, które zapewnia token dostępu. |
| 403 | PERMISSION_DENIED | Twoje żądanie nie ma wystarczającego zakresu, aby wykonać operację. |
| 404 | NOT_FOUND | System nie może znaleźć określonych zasobów, takich jak magazyn danych. |
| 409 | ABORTED | Operacja została przerwana z powodu konfliktu, takiego jak publikacja miejsca, które nie jest częścią wszechświata. |
| 429 | RESOURCE_EXHAUSTED | Nie masz wystarczającej kwoty, aby wykonać operację, zazwyczaj z powodu wysyłania zbyt wielu żądań. |
| 499 | CANCELLED | System przerywa żądanie, zazwyczaj z powodu przekroczenia limitu czasu po stronie klienta. |
| 500 | INTERNAL | Błąd wewnętrzny serwera. Zazwyczaj błąd serwera. |
| 501 | NOT_IMPLEMENTED | Serwer nie implementuje metody API. |
| 503 | UNAVAILABLE | Usługa niedostępna. Zazwyczaj serwer jest wyłączony. |