Transfer sipariş endpoint'leri, arama tekliflerinden rezervasyon oluşturur ve sonrasını yönetir: güncel durumu alma, iptal uygunluğunu kontrol etme ve iptal etme.
Bir arama teklifinden transfer rezervasyonu oluşturur. Sipariş pendingPayment durumunda başlar; yanıt, ödeme adımında ödenecek tam tutarı içerir.
POST /transfer/ordersBu endpoint kimlik doğrulama gerektirir. Authorization başlığında JWT erişim jetonunuzu ekleyin:
Authorization: Bearer ERIŞIM_JETONUNUZEntegre acente sistemleri, son kullanıcının IP adresini X-Forwarded-For başlığı ile iletmelidir. Bu bilgi denetim ve güvenlik amaçları için gereklidir.
| Alan | Tür | Gerekli | Açıklama |
|---|---|---|---|
searchId | string | Evet | Transfer aramasından gelen arama kimliği |
code | string | Evet | Arama sonuçlarından seçilen teklif kodu |
passengers | array | Evet | Yolcu listesi; tam olarak bir yolcu primary: true olmalı |
billing | object | Hayır | Özel fatura bilgileri (aşağıdaki Fatura bölümüne bakın) |
flightNumber | string | Hayır | Gidiş alışı için uçuş numarası (havalimanı alışlarında şiddetle tavsiye edilir) |
returnFlightNumber | string | Hayır | Dönüş alışı için uçuş numarası (gidiş-dönüşlerde) |
Alış bir havalimanındaysa flightNumber gönderin. Tedarikçiler bu bilgiyle uçağın gerçek varış saatini takip eder ve rötarlarda alışı ayarlar; verilmezse sürücü yalnızca planlanan saatte bekler.
Tam olarak bir yolcu primary: true olarak işaretlenmelidir; bu, yolculuğun iletişim yolcusudur. Her yolcunun bir adı ve tam olarak bir kimlik belgesi (identityNumber veya passportNo) olmalıdır. Kalan alanlar yalnızca birincil yolcu için zorunludur.
| Alan | Tür | Gerekli | Açıklama |
|---|---|---|---|
primary | boolean | Evet | İletişim yolcusu işareti. Tam olarak biri true olmalı |
firstName | string | Evet | Yolcu adı |
lastName | string | Evet | Yolcu soyadı |
gender | string | Yalnız birincil | M veya F |
birthDate | string | Yalnız birincil | Doğum tarihi (YYYY-MM-DD formatı) |
nationality | string | Yalnız birincil | ISO ülke kodu (2 karakter) |
email | string | Yalnız birincil | Geçerli e-posta adresi |
phone | string | Yalnız birincil | E.164 formatında telefon numarası |
identityNumber | string | İkisinden biri | 11 haneli kimlik numarası (Türk vatandaşları için) |
passportNo | string | İkisinden biri | Pasaport numarası (uluslararası yolcular için) |
billing isteğe bağlıdır. Gönderilmediğinde fatura, organizasyonunuzun kayıtlı fatura adresine kesilir; organizasyon için kayıtlı fatura adresi yoksa istek 5003 hatasıyla reddedilir.
billing göndermek için acenteniz adına özel fatura (custom billing) yetkisinin açık olması gerekir. Bu yetki yoksa fatura nesnesi geçerli olsa bile istek 5004 hatasıyla reddedilir. Özel fatura yetkisi için Yolcu360 ile iletişime geçin.
Gönderildiğinde transfer faturası araç kiralama faturasından daha katıdır: taxIdentifier ve zipCode her zaman zorunludur (bireysel faturada kimlik numarasını kullanın) ve line en az 5 karakter olmalıdır.
| Alan | Tür | Gerekli | Açıklama |
|---|---|---|---|
type | string | Evet | Adres tipi: individual, privateCompany veya corporateCompany |
firstName | string | Evet | Fatura adı (corporateCompany için şirket adı) |
lastName | string | Koşullu | Fatura soyadı. Tip corporateCompany değilse zorunlu |
email | string | Evet | Fatura e-posta adresi |
phone | string | Evet | E.164 formatında fatura telefonu |
countryCode | string | Evet | ISO ülke kodu (2 karakter) |
countryName | string | Evet | Tam ülke adı |
adm1 | string | Evet | 1. seviye idari bölge (il) |
adm2 | string | Hayır | 2. seviye idari bölge (ilçe) |
line | string | Evet | Adres satırı (en az 5 karakter) |
zipCode | string | Evet | Posta kodu |
taxIdentifier | string | Evet | Vergi numarası (bireysel için kimlik numarası) |
taxDivision | string | Şirket tipleri | Vergi dairesi. privateCompany ve corporateCompany için zorunlu |
curl -X POST https://api.pro.yolcu360.com/api/v1/transfer/orders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ERIŞIM_JETONUNUZ" \
-H "X-Forwarded-For: 203.0.113.195" \
-d '{
"searchId": "0ba0fea9-1e98-43ce-a69b-e895e2bc68a6",
"code": "9972a93a-707e-403e-928e-cbb68a65584f",
"flightNumber": "TK2021",
"passengers": [
{
"primary": true,
"firstName": "John",
"lastName": "Doe",
"gender": "M",
"birthDate": "1990-01-15",
"nationality": "US",
"passportNo": "AB1234567",
"email": "john.doe@example.com",
"phone": "+905551234567"
},
{
"primary": false,
"firstName": "Jane",
"lastName": "Doe",
"identityNumber": "11111111110"
}
],
"billing": {
"type": "individual",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+905551234567",
"countryCode": "TR",
"countryName": "Turkey",
"adm1": "Istanbul",
"adm2": "Beyoglu",
"line": "Kocatepe Mah. Taksim Square No:1",
"zipCode": "34437",
"taxIdentifier": "11111111110"
}
}'Başarılı Yanıt (201 Created):
Yanıt siparişin kendisidir; sipariş detayı ve ödeme yanıtıyla aynı şekildedir. product burada kısaltılmıştır; yapısı aşağıdaki sipariş detayındakiyle aynıdır.
{
"orderId": "YLPB_0503",
"status": "pendingPayment",
"paymentRequirement": {
"amount": 145200,
"currency": "TRY"
},
"flightNumber": "TK2021",
"product": {
"code": "9972a93a-707e-403e-928e-cbb68a65584f",
"appointment": {
"pickup": {"lat": 41.276146, "lon": 28.728735, "name": "Istanbul Airport (IST)"},
"dropoff": {"lat": 41.037003, "lon": 28.985092, "name": "Taksim Square"},
"pickupTime": "2027-06-15T10:00:00+03:00",
"passengerCount": 2
},
"vehicle": {"name": "Minivan", "seatCount": 6, "baggageCount": 6},
"pricing": {"currency": "TRY", "total": {"amount": 145200, "currency": "TRY"}},
"cancellationPolicies": [
{"type": "freeCancel", "until": "2027-06-15T09:00:00+03:00", "description": "You can cancel your transfer free of charge up to 1 hour before departure."}
]
},
"passengers": [
{"primary": true, "firstName": "John", "lastName": "Doe", "gender": "M", "birthDate": "1990-01-15", "nationality": "US", "passportNo": "AB1234567", "email": "john.doe@example.com", "phone": "+905551234567"},
{"primary": false, "firstName": "Jane", "lastName": "Doe", "identityNumber": "11111111110"}
]
}| Alan | Tür | Açıklama |
|---|---|---|
orderId | string | Transfer sipariş kimliği (YLPB_xxxx). Sonraki tüm transfer çağrılarında bunu kullanın |
status | string | Sipariş yaşam döngüsü durumu; oluşturmanın hemen ardından her zaman pendingPayment |
paymentRequirement | object | Ödeme adımında ödenecek tam tutar, en küçük para biriminde. Yalnızca oluşturma yanıtında döner |
flightNumber | string | İstekte verilen uçuş numarası |
returnFlightNumber | string | İstekte verilen dönüş uçuş numarası (gidiş-dönüşlerde) |
product | object | Rezerve edilen teklif, arama yanıtındaki ürünle aynı yapıda |
passengers | array | İstekte verilen yolcu bilgileri |
Sipariş artık pendingPayment durumundadır ve ödeme gelmezse oluşturmadan yaklaşık bir saat sonra sona erer. Transfer Ödemesi ile devam edin.
Bir transfer siparişinin güncel durumunu alır: yaşam döngüsü durumu, rezerve edilen ürün ve yolcular.
GET /transfer/orders/{orderId}Bu endpoint kimlik doğrulama gerektirir. Authorization başlığında JWT erişim jetonunuzu ekleyin.
| Parametre | Tür | Gerekli | Açıklama |
|---|---|---|---|
orderId | string | Evet | Transfer sipariş kimliği |
curl -X GET https://api.pro.yolcu360.com/api/v1/transfer/orders/YLPB_0503 \
-H "Authorization: Bearer ERIŞIM_JETONUNUZ"Başarılı Yanıt (200 OK):
{
"orderId": "YLPB_0503",
"status": "reserved",
"vendorReservationId": "227699",
"flightNumber": "TK2021",
"product": {
"code": "9972a93a-707e-403e-928e-cbb68a65584f",
"appointment": {
"pickup": {
"lat": 41.276146,
"lon": 28.728735,
"name": "Istanbul Airport (IST)"
},
"dropoff": {
"lat": 41.037003,
"lon": 28.985092,
"name": "Taksim Square"
},
"pickupTime": "2027-06-15T10:00:00+03:00",
"passengerCount": 2
},
"onewayDistance": 41662,
"onewayDuration": 2727,
"vehicle": {
"name": "Minivan",
"seatCount": 6,
"baggageCount": 6,
"image": "https://cdn.example.com/assets/images/van.png"
},
"pricing": {
"currency": "TRY",
"fees": [
{
"amount": 132000,
"currency": "TRY",
"type": "oneway",
"charge": "advance",
"description": "Outbound Trip Amount"
},
{
"amount": 13200,
"currency": "TRY",
"type": "commission",
"charge": "advance",
"description": "commission"
}
],
"vendorTotal": {
"amount": 0,
"currency": "TRY"
},
"paymentTotal": {
"amount": 145200,
"currency": "TRY"
},
"discountTotal": {
"amount": 0,
"currency": "TRY"
},
"total": {
"amount": 145200,
"currency": "TRY"
}
},
"rules": [
{
"type": "freeCancellation",
"description": "Free Cancellation"
},
{
"type": "waitForFree",
"description": "First 15 minutes of waiting free"
},
{
"type": "safeTripWithInvoice",
"description": "Safe trip with invoice"
}
],
"cancellationPolicies": [
{
"type": "freeCancel",
"until": "2027-06-15T09:00:00+03:00",
"description": "You can cancel your transfer free of charge up to 1 hour before departure."
}
]
},
"passengers": [
{
"primary": true,
"firstName": "John",
"lastName": "Doe",
"gender": "M",
"birthDate": "1990-01-15",
"nationality": "US",
"passportNo": "AB1234567",
"email": "john.doe@example.com",
"phone": "+905551234567"
},
{
"primary": false,
"firstName": "Jane",
"lastName": "Doe",
"identityNumber": "11111111110"
}
]
}| Alan | Tür | Açıklama |
|---|---|---|
orderId | string | Transfer sipariş kimliği |
status | string | Sipariş yaşam döngüsü durumu (aşağıdaki tabloya bakın) |
vendorReservationId | string | Tedarikçi rezervasyon referansı. Sipariş reserved olduktan sonra döner; pendingPayment'ta alan yoktur |
flightNumber | string | Sipariş oluşturmada verilen uçuş numarası |
returnFlightNumber | string | Sipariş oluşturmada verilen dönüş uçuş numarası (gidiş-dönüşlerde) |
product | object | Rezerve edilen teklif, arama yanıtındaki ürünle aynı yapıda |
passengers | array | Sipariş oluşturmada verilen yolcu bilgileri |
| Durum | Açıklama |
|---|---|
pendingPayment | Sipariş oluşturuldu, ödeme bekleniyor. Ödenmezse yaklaşık bir saat sonra sona erer |
reserved | Ödeme tamamlandı ve transfer tedarikçi ile onaylandı |
canceled | Sipariş acente veya tedarikçi tarafından iptal edildi |
expired | Sipariş zamanında ödenmedi ve otomatik olarak sona erdi |
failed | Rezervasyon tamamlanamadı |
Ödeme yanıtı, tahsilat sonrası geri okunan güncel siparişi zaten taşır; ödemeden sonra ayrıca detay çağrısı gerekmez. Bu endpoint'i siparişi sonradan yeniden kontrol etmek için kullanın: reserved bir sipariş sonradan da düşebilir (örneğin tedarikçi tarafı iptal); bu nedenle alış saatinden önce durumu yeniden kontrol etmeniz önerilir.
vendorReservationId reserved durumundan itibaren mevcuttur ve iptal sonrasında da siparişte kalır. Tedarikçi tarafında sonradan düşen siparişte eksik olabilir.
Siparişin iptal edilip edilemeyeceğini ve ne kadar iade yapılacağını kontrol eder. Bu endpoint siparişi değiştirmez.
POST /transfer/orders/{orderId}/cancel_eligibilityBu endpoint kimlik doğrulama gerektirir. Authorization başlığında JWT erişim jetonunuzu ekleyin.
| Parametre | Tür | Gerekli | Açıklama |
|---|---|---|---|
orderId | string | Evet | Kontrol edilecek siparişin kimliği |
curl -X POST https://api.pro.yolcu360.com/api/v1/transfer/orders/YLPB_0503/cancel_eligibility \
-H "Authorization: Bearer ERIŞIM_JETONUNUZ"Başarılı Yanıt (200 OK):
{
"orderId": "YLPB_0503",
"cancellable": true,
"refundAmount": {
"amount": 145200,
"currency": "TRY"
}
}| Alan | Tür | Açıklama |
|---|---|---|
orderId | string | Transfer sipariş kimliği |
cancellable | boolean | Siparişin şu anda iptal edilip edilemeyeceği |
refundAmount | object | Sipariş şimdi iptal edilirse iade edilecek tutar, en küçük para biriminde. Uygulanamadığında dönmez |
refundAmount, varsa iptal cezası uygulanmış hâlidir (teklifin cancellationPolicies alanına bakın) ve fiilen ödenen tutarla sınırlıdır. Transfer uygunluk yanıtının araç kiralamadakinden daha zengin olduğunu unutmayın: refundable bayrağı yerine somut iade tutarını döndürür.
Bir transfer siparişini iptal eder. İptal tedarikçiye iletilir; 200 yanıtı yalnızca tedarikçi iptali kabul ettiğinde döner. İade, kredi limitinize otomatik olarak yapılır.
POST /transfer/orders/{orderId}/cancelBu endpoint kimlik doğrulama gerektirir. Authorization başlığında JWT erişim jetonunuzu ekleyin.
| Parametre | Tür | Gerekli | Açıklama |
|---|---|---|---|
orderId | string | Evet | İptal edilecek siparişin kimliği |
curl -X POST https://api.pro.yolcu360.com/api/v1/transfer/orders/YLPB_0503/cancel \
-H "Authorization: Bearer ERIŞIM_JETONUNUZ"Başarılı Yanıt (200 OK):
{
"orderId": "YLPB_0503",
"status": "canceled"
}Tedarikçi iptali reddederse veya sipariş iptal edilebilir bir durumda değilse (örneğin zaten iptal edilmişse) endpoint 8012 hatası döndürür:
{
"code": 8012,
"description": "Transfer order cannot be canceled",
"details": {
"orderId": "YLPB_0503",
"status": "canceled"
}
}Sürprizlerden kaçınmak için iptalden önce yukarıdaki iptal uygunluğu endpoint'ini çağırın ve 8012 hatasını yeniden denenebilir bir durum olarak görmeyin: iptal gerekli olduğu hâlde sürekli başarısız oluyorsa destek ile iletişime geçin.