Bu doküman, Sioux Global tarafından sağlanan Reservation API servisine bağlanacak istemci sistem için entegrasyon bilgilerini içerir.
Bu API yalnızca rezervasyon listeleme ve rezervasyon status güncelleme işlemleri için tasarlanmıştır.
status ve hotelId filtresi ile)https://reservationapi.siouxglobal.comhttps://reservationapi.codebw.comGET /healthz
API yalnızca izin verilen istemci çıkış IP adreslerinden gelen istekleri kabul eder.
Hata durumu:
403 Forbidden{"title":"Forbidden","status":403,"detail":"IP address is not allowed."}
Reservations endpoint’leri için her istekte aşağıdaki header zorunludur:
X-Api-KeyÖrnek:
X-Api-Key: <PROD_API_KEY>
Hata durumları:
401 Unauthorized / “Missing API key.”401 Unauthorized / “Invalid API key.”Content-Type: application/jsonNot (Alan Formatları): Aşağıdaki alanlar belirli kod/format standartlarına göre tutulur:
Nationality (Guest) → 2 karakter ülke kodu (ISO 3166-1 alpha-2). Örn: TR, DE, GBCountryCode / Market→ 2 karakter ülke kodu (ISO 3166-1 alpha-2)CurrencyCode → 3 karakter para birimi kodu (ISO 4217). Örn: USD, EUR, TRY, GBP2026-01-20T10:15:00Rezervasyon durumları integer olarak tutulur. Aşağıdaki tablo, status kodlarının anlamlarını belirtir:
| Status | Açıklama |
|---|---|
1 | Pending |
2 | New Reservation |
3 | Modification |
4 | Confirmed |
5 | Declined |
6 | Cancelled |
7 | Pending Cancellation |
Not (Guests): Misafir kayıtlarındaki Gender alanı aşağıdaki değerleri alır:
1 = Mr.2 = Ms.3 = ChildGET ve PUT işlemlerinde kullanılabilecek status değerleri yalnızca aşağıdakilerdir:
2, 3, 4, 5, 6, 7
Kural 1 (Geçersiz Status): İstek body içinde gönderilen status değeri bu liste dışında ise istek reddedilir.
Hata kodu: 400 Bad Request
Örnek Hata Yanıtı (Geçersiz Status):
{
"title": "Bad Request",
"status": 400,
"detail": "Invalid status value. Allowed values: 2,3,4,5,6,7."
}
Kural 2 (Kilit): Rezervasyonun mevcut status değeri 4 (Confirmed) veya 6 (Cancelled) ise PUT işlemi yapılamaz.
Hata kodu: 409 Conflict
Kural 3 (Güncellenebilir Alanlar): Status güncelleme endpoint’i üzerinden aşağıdaki alanlar güncellenebilir:
Status (zorunlu)Description (opsiyonel)ConfirmedBy (opsiyonel)Opsiyonel alanlar gönderilmezse mevcut değer korunur.
Özet: İstemci sadece izinli değerleri gönderir; ayrıca 4 (Confirmed) veya 6 (Cancelled) olan kayıtlar için PUT işlemi yapılamaz.
| HTTP |
GET /api/reservationsGET /api/reservations?hotelId={hotelId}GET /api/reservations?status={status}GET /api/reservations?status={status}&hotelId={hotelId} |
|---|---|
| Query Parametre |
status (opsiyonel, int): Sadece belirtilen status değerindeki rezervasyonları getirir.hotelId (opsiyonel, int): Sadece belirtilen otele ait rezervasyonları getirir. |
| Başarılı Yanıt |
200 OKJSON array
Yanıt alanları (minimum):
id (int), status (int) |
Not: GET /api/reservations (parametre verilmezse) yalnızca 2, 3, 7 status değerindeki kayıtları döner.
Not (hotelId): GET /api/reservations?hotelId={hotelId} isteğinde status parametresi verilmezse yalnızca 2, 3, 7 status değerindeki kayıtlar döner.
Örnek curl (status):
curl -k "https://reservationapi.siouxglobal.com/api/reservations?status=2" \
-H "X-Api-Key: <PROD_API_KEY>"
Örnek curl (hotelId):
curl -k "https://reservationapi.siouxglobal.com/api/reservations?hotelId=123" \
-H "X-Api-Key: <PROD_API_KEY>"
Örnek curl (status + hotelId):
curl -k "https://reservationapi.siouxglobal.com/api/reservations?status=2&hotelId=123" \
-H "X-Api-Key: <PROD_API_KEY>"
Örnek curl (parametre yok):
curl -k "https://reservationapi.siouxglobal.com/api/reservations" \
-H "X-Api-Key: <PROD_API_KEY>"
| HTTP | PUT /api/reservations/{id}/status |
|---|---|
| Path Parametre | id (int): Rezervasyon Id |
| Güncellenebilir Alanlar |
|
| Request Body |
Genişletilmiş Örnek (Opsiyonel Alanlar ile):
Not:
description ve confirmedBy opsiyoneldir.
Gönderilmezse mevcut değer korunur.
|
| Başarılı Yanıt | 204 No Content |
| HTTP | GET /api/reservations/{id}/hotel-pdf |
|---|---|
| Path Parametre | id (int): Rezervasyon Id |
| Header |
X-Api-Key: <PROD_API_KEY> (zorunlu)IP Allowlist uygulanır.
|
| Başarılı Yanıt |
200 OKContent-Type: application/pdfResponse body: PDF binary
|
| Hata Durumları |
404 Not Found → Rezervasyon bulunamadı401 Unauthorized → API Key yok/yanlış403 Forbidden → IP allowlist dışı |
Örnek curl (PDF indir):
curl -k -L "https://reservationapi.siouxglobal.com/api/reservations/123/hotel-pdf" \
-H "X-Api-Key: <PROD_API_KEY>" \
-o reservation_123.pdf
| HTTP | GET /api/reservations/hotels |
|---|---|
| Header |
X-Api-Key: <PROD_API_KEY> (zorunlu)IP Allowlist uygulanır.
|
| Başarılı Yanıt |
200 OKJSON array
Yanıt alanları:
id (int), hotelName (string) |
| Örnek Yanıt |
|
Örnek curl (otel listesi):
curl -k "https://reservationapi.siouxglobal.com/api/reservations/hotels" \
-H "X-Api-Key: <PROD_API_KEY>"
Kilit kuralı status update işlemi için geçerlidir.
Kural:
4 (Confirmed) veya 6 (Cancelled) ise PUT işlemi yapılamaz.Hata durumu:
409 Conflict{
"title": "Conflict",
"status": 409,
"detail": "Reservation is locked (Status=4 or Status=6). Update is not allowed."
}
| HTTP | GET /healthz |
|---|---|
| Güvenlik |
✅ IP Allowlist uygulanır
❌ X-Api-Key gerekmez
|
| Başarılı Yanıt | 200 OK — Body: "OK" |
200 OK → Listeleme başarılı204 No Content → Status güncelleme başarılı400 Bad Request → İstek formatı/parametre hatası (ör. izinli status listesi dışında değer)401 Unauthorized → API Key yok veya yanlış403 Forbidden → IP allowlist dışı404 Not Found → Rezervasyon bulunamadı409 Conflict → Kilit kuralı nedeniyle güncelleme reddedildi<PROD_API_KEY> gizli bilgidir; public repo, mail zinciri veya ticket içine açık şekilde yazılmamalıdır.