Chybove kody
Prehled vsech chybovych odpovedi API.
HTTP stavove kody
| Kod | Nazev | Popis |
|---|---|---|
| 200 | OK | Uspesny pozadavek |
| 201 | Created | Zdroj uspesne vytvoren |
| 400 | Bad Request | Chybny pozadavek (chybi parametry) |
| 401 | Unauthorized | Chybi nebo neplatna autentizace |
| 403 | Forbidden | Nedostatecna opravneni |
| 404 | Not Found | Zdroj nenalezen |
| 409 | Conflict | Konflikt (napr. kolize terminu) |
| 429 | Too Many Requests | Prekrocen limit pozadavku |
| 500 | Internal Server Error | Interni chyba serveru |
Chybove kody aplikace
Autentizace
| Kod | Popis | Reseni |
|---|---|---|
API_KEY_MISSING | Chybi hlavicka X-API-Key | Pridejte hlavicku s API klicem |
API_KEY_INVALID | Neplatny API klic | Zkontrolujte spravnost klice |
API_KEY_INACTIVE | API klic je deaktivovany | Aktivujte klic v nastaveni |
PROJECT_INACTIVE | Projekt neni aktivni | Kontaktujte podporu |
PROJECT_MISMATCH | API klic nepatri k projektu | Pouzijte spravny klic pro projekt |
Opravneni
| Kod | Popis | Reseni |
|---|---|---|
PERMISSION_DENIED | Nedostatecna opravneni | Pridejte potrebna opravneni ke klici |
Rezervace
| Kod | Popis | Reseni |
|---|---|---|
CUSTOMER_BLACKLISTED | Zakaznik je na blacklistu | Kontaktujte provozovatele |
DOUBLE_BOOKING | Kolize s existujici rezervaci | Vyberte jiny termin nebo stul |
INVALID_STATUS_TRANSITION | Neplatny prechod statusu | Zkontrolujte aktualni status |
SLOT_NOT_AVAILABLE | Termin neni dostupny | Vyberte jiny termin |
Format chybove odpovedi
{
"error": "Error Type",
"message": "Lidsky citelny popis chyby",
"code": "ERROR_CODE"
}
Priklady
Chybejici autentizace
{
"error": "Unauthorized",
"message": "Missing X-API-Key header",
"code": "API_KEY_MISSING"
}
Nedostatecna opravneni
{
"error": "Forbidden",
"message": "API key does not have write permission",
"code": "PERMISSION_DENIED"
}
Neplatny pozadavek
{
"error": "Bad Request",
"message": "Required fields: email, date, from, to"
}
Konflikt
{
"error": "Conflict",
"message": "Table is already reserved for this time slot",
"code": "DOUBLE_BOOKING"
}
Zpracovani chyb
JavaScript
async function apiCall(url, options = {}) {
const response = await fetch(url, {
...options,
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json',
...options.headers
}
});
const data = await response.json();
if (!response.ok) {
const error = new Error(data.message || 'API error');
error.code = data.code;
error.status = response.status;
throw error;
}
return data;
}
// Pouziti
try {
const result = await apiCall('/api/v1/projekt/reservations', {
method: 'POST',
body: JSON.stringify({ ... })
});
} catch (error) {
switch (error.code) {
case 'DOUBLE_BOOKING':
alert('Tento termin je jiz obsazen. Vyberte prosim jiny.');
break;
case 'CUSTOMER_BLACKLISTED':
alert('Nelze vytvorit rezervaci. Kontaktujte provozovatele.');
break;
case 'PERMISSION_DENIED':
console.error('API klic nema potrebna opravneni');
break;
default:
console.error('Neocekavana chyba:', error.message);
}
}
PHP
function apiCall($url, $method = 'GET', $body = null) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . API_KEY,
'Content-Type: application/json'
],
CURLOPT_CUSTOMREQUEST => $method
]);
if ($body) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);
if ($httpCode >= 400) {
throw new Exception(
$data['message'] ?? 'API error',
$httpCode
);
}
return $data;
}
// Pouziti
try {
$result = apiCall('https://api.zarezervujto.cz/api/v1/projekt/info');
} catch (Exception $e) {
error_log('API chyba: ' . $e->getMessage());
}
Rate limiting
Pri prekroceni limitu pozadavku obdrzite:
{
"error": "Too Many Requests",
"message": "Rate limit exceeded. Try again in 60 seconds.",
"retryAfter": 60
}
Hlavicky
| Hlavicka | Popis |
|---|---|
X-RateLimit-Limit | Max pocet pozadavku |
X-RateLimit-Remaining | Zbyvajici pocet pozadavku |
X-RateLimit-Reset | Unix timestamp resetovani |
Retry-After | Pocet sekund do dalsiho pokusu |
Doporuceni
- Implementujte exponential backoff pri chybach 429
- Cachovejte odpovedi kde je to mozne
- Pouzivejte webhooky misto pollingu