Hatalar ve sınırlar
Hata biçimi
Hatalar standart HTTP durum kodlarıyla ve hep aynı gövdeyle döner:
{
"error": {
"code": "invalid_request",
"message": "Request is not valid.",
"details": { "date": "Must be between today and 400 days ahead." }
},
"request_id": "a91f03c2d4e5b6f7"
}Kodunuzda error.code kullanın — message değişebilir. details düzeltilmesi gereken alanları listeler. Hata metinleri İngilizcedir.
| HTTP | error.code | Anlamı | Tekrar denenir mi? |
|---|---|---|---|
| 400 | invalid_json | Gövde geçerli JSON değil. | Hayır — isteği düzeltin. |
| 401 | unauthorized | Anahtar yok ya da geçersiz. | Hayır. |
| 403 | forbidden / ip_not_allowed | Hesap aktif değil, canlı onaylanmadı ya da IP izinli değil. | Hayır. |
| 404 | not_found | Bilinmeyen uç nokta ya da rezervasyon. | Hayır. |
| 405 | method_not_allowed | Yanlış HTTP yöntemi. | Hayır. |
| 409 | not_cancellable | Zaten iptal edilmiş ya da tamamlanmış. | Hayır. |
| 409 | not_offered | Rezervasyonda açık teklif yok (kabul / ret). | Hayır. |
| 409 | not_instant | instant_only istendi (ya da hesabınız yalnız anında onaylı) ve rezervasyon anında onaylanamıyor. Hiçbir şey oluşturulmadı; error.details.reason: no_price, short_notice ya da credit_limit. | Hayır — başka araç ya da saat önerin. |
| 409 | idempotency_conflict | Idempotency-Key farklı bir gövdeyle kullanıldı. | Hayır — yeni anahtar kullanın. |
| 409 | request_in_progress | Aynı Idempotency-Key hâlâ işleniyor. | Evet, bir saniye sonra. |
| 410 | offer_expired | Teklif 30 dakikadan eski. | Yeniden fiyat sorun. |
| 413 | payload_too_large | Gövde 64 KB'tan büyük. | Hayır. |
| 415 | unsupported_media_type | Content-Type: application/json eksik. | Hayır. |
| 422 | invalid_request / invalid_offer | Doğrulama hatası; details alanına bakın. | Hayır — isteği düzeltin. |
| 429 | rate_limited | Çok fazla istek. | Evet, Retry-After saniye sonra. |
| 500 | server_error | Bizim tarafta beklenmeyen hata. | Evet, artan aralıklarla. Sürerse request_id ile bize yazın. |
Hız sınırları
Her anahtar varsayılan olarak dakikada 120 istek gönderebilir. Her cevapta şu başlıklar bulunur:
| Başlık | Anlamı |
|---|---|
X-RateLimit-Limit | Dakikada izin verilen istek. |
X-RateLimit-Remaining | Bu dakikada kalan istek. |
Retry-After | 429 cevabında: beklenecek saniye. |
Daha yüksek sınır gerekirse Sorular bölümünden isteyin. Sık değişmeyen verileri önbelleğe alın: GET /vehicle-types ve GET /locations sonuçları bir gün saklanabilir.
Idempotency
Tekrar güvenliği: ağlar kopabilir. Bir POST isteğini güvenle tekrarlamak için Idempotency-Key başlığı gönderin (1–80 karakter: harf, rakam, - _ : .), örneğin sipariş numaranız:
Idempotency-Key: order-10045- İlk istek normal işlenir, cevabı 48 saat saklanır.
- Aynı anahtar ve aynı gövdeyle tekrar gelirse saklanan cevap aynı HTTP koduyla (rezervasyonda
201) veIdempotent-Replayed: truebaşlığıyla döner — ikinci rezervasyon açılmaz. - Aynı anahtar farklı gövdeyle gelirse
409 idempotency_conflictdöner; ilk istek hâlâ işlenirken gelen tekrar409 request_in_progressalır (bir saniye sonra deneyin). - Doğrulama hataları saklanmaz; isteği düzeltip aynı anahtarla tekrar deneyebilirsiniz.
Zaman aşımı
İsteklerin çoğu bir saniyenin çok altında tamamlanır; iş ortağı müsaitliği içeren fiyat sorguları 10 saniyeye kadar sürebilir. İstemci zaman aşımını 30 saniye yapın; POST /bookings zaman aşımına uğrarsa aynı Idempotency-Key ile tekrar gönderin.
Sürümler
Bu sürüm 1'dir (/api/v1). v1 içinde sadece geriye uyumlu değişiklik yaparız: yeni uç noktalar, yeni isteğe bağlı istek alanları, yeni cevap alanları ve yeni seçenek değerleri. Kodunuz bilmediği alan ve değerlere dayanıklı olsun. Uyumu bozan değişiklikler yeni bir sürümle ve çok önceden duyurularak gelir.