Błędy
API SentiSnap wykorzystuje konwencjonalne kody statusu HTTP i zwraca błędy w spójnym formacie JSON.
| Kod | Opis |
|---|---|
200 | Sukces |
201 | Utworzono (zasób utworzony pomyślnie) |
204 | Brak zawartości (pomyślne usunięcie) |
400 | Nieprawidłowe żądanie (nieprawidłowe parametry) |
401 | Brak autoryzacji (nieprawidłowy lub brakujący klucz API) |
403 | Dostęp zabroniony (niewystarczające uprawnienia) |
404 | Nie znaleziono |
429 | Zbyt wiele żądań (przekroczono limit zapytań) |
500 | Wewnętrzny błąd serwera |
Format odpowiedzi błędu
Wszystkie błędy mają następującą strukturę:
{
"error": {
"code": "error_code",
"message": "Human-readable error message",
"details": {}
}
}Kody błędów
Błędy uwierzytelniania
| Kod | HTTP | Opis |
|---|---|---|
unauthorized | 401 | Brak nagłówka Authorization |
invalid_api_key | 401 | Nieprawidłowy format klucza API lub klucz nie został znaleziony |
expired_api_key | 401 | Klucz API wygasł |
revoked_api_key | 401 | Klucz API został unieważniony |
Błędy autoryzacji
| Kod | HTTP | Opis |
|---|---|---|
forbidden | 403 | Ogólna odmowa dostępu |
insufficient_scope | 403 | Klucz API nie posiada wymaganego uprawnienia |
Błędy żądania
| Kod | HTTP | Opis |
|---|---|---|
validation_error | 400 | Nieprawidłowe parametry żądania |
not_found | 404 | Zasób nie został znaleziony |
rate_limit_exceeded | 429 | Przekroczono limit zapytań |
Błędy serwera
| Kod | HTTP | Opis |
|---|---|---|
internal_error | 500 | Wewnętrzny błąd serwera |
Szczegóły błędów walidacji
W przypadku błędów walidacji pole details zawiera szczegółowe informacje o błędach poszczególnych pól:
{
"error": {
"code": "validation_error",
"message": "Validation failed",
"details": [
{
"path": [
"url"
],
"message": "Invalid url"
},
{
"path": [
"events"
],
"message": "Required"
}
]
}
}Przykład obsługi błędów
async function makeApiRequest(endpoint) {
const response = await fetch(
`https://public-api.sentisnap.com/v1${endpoint}`,
{
headers: {
'Authorization': `Bearer ${API_KEY}`
}
}
);
if (!response.ok) {
const error = await response.json();
switch (error.error.code) {
case 'invalid_api_key':
throw new Error('Please check your API key');
case 'rate_limit_exceeded':
const retryAfter = response.headers.get('Retry-After');
throw new Error(`Rate limited. Retry after ${retryAfter} seconds`);
case 'not_found':
return null;
default:
throw new Error(error.error.message);
}
}
return response.json();
}