Gazella B2B API Dokümantasyonu
Sürüm: Haziran 2026 · Entegrasyon (Integration) Servisleri
Bu doküman, Gazella B2B API entegrasyon servislerinin kullanımını, örnek istek/yanıtları ve birlikte gelen Postman koleksiyonunu açıklar. Örneklerde gerçek test verileri kullanılmıştır.
Güvenlik nedeniyle API anahtarı bu dokümanda paylaşılmaz. Gazella tarafından ayrıca sağlanacaktır. Tüm isteklerde header içinde
X-API-KEY olarak gönderiniz.https://b2b.api.gazella.com/api/Integration/https://gazellab2bapi.caretta.net/api/Integration/1. Genel Bilgiler
Dokümanda belirtilen API servislerini kullanabilmek için Gazella tarafından sağlanacak olan APIKEY parametresi gereklidir.
| Konu | Değer |
|---|---|
| Base URL | https://gazellab2bapi.caretta.net/api/Integration/ |
| Kimlik Doğrulama | Header içinde X-API-KEY |
| Content-Type | application/json |
| Content-Encoding | UTF-8 |
| Yanıt Formatı | JSON |
Önemli kurallar:
- API'ye yapılacak tüm isteklerde UTF-8 encoding kullanılmalıdır.
- API tarafından dönülen tüm cevaplar JSON formatındadır.
- Bu API'deki tüm metotları web tabanlı uygulamanızın sunucu tarafında kullanınız.
- APIKEY değeri her istekte header bilgisinde gönderilmelidir. Key adı
X-API-KEY, değeri ise size verilmiş olan APIKEY'dir.
Ortak Yanıt Yapısı
Tüm servis yanıtlarında işlemin durumunu belirten alanlar yer alır. statusCode değerlerinin karşılıkları için İstek Durum Kodları bölümüne bakınız.
{
"statusCode": 200,
"statusDescription": "İşleminiz başarı ile yapıldı"
}
2. Postman Koleksiyonu
Bu doküman ile birlikte Gazella API (Integration).postman_collection.json dosyası gelir. Postman'de Import → File ile doğrudan içe aktarabilirsiniz (şema: Collection v2.1.0).
Yapı
Koleksiyon 6 klasörden oluşur; her klasör bir endpoint'e karşılık gelir ve içinde birden fazla örnek istek bulunur. Kimlik doğrulama koleksiyon seviyesinde X-API-KEY API Key auth olarak tanımlıdır; tüm istekler bunu otomatik miras alır.
Koleksiyon Değişkenleri
Variables sekmesinden düzenlenebilir:
| Değişken | Örnek Değer | Açıklama |
|---|---|---|
baseUrl |
https://gazellab2bapi.caretta.net/api/Integration |
Tüm isteklerin kök adresi |
apiKey |
(Gazella tarafından ayrıca sağlanır) | X-API-KEY header değeri |
tourCode |
22-00040 |
Örnek tur kodu |
packageCode1 |
000874-000042 |
Örnek paket kodu 1 |
packageCode2 |
000887-000042 |
Örnek paket kodu 2 |
packageCode3 |
000877-000042 |
Örnek paket kodu 3 |
3. Endpoint'ler
Aşağıdaki tüm isteklerde header olarak
X-API-KEY: <APIKEY>gönderilmelidir.
3.1 Integration/CreateOrder
Gazella B2B sisteminde sipariş oluşturur. İstek sonucu dönen yanıtta orderNumber değeri bulunur; bu değer ile Gazella tarafında sipariş sorgulaması yapabilirsiniz.
| URL | {baseUrl}/CreateOrder |
| Method | POST |
| Content-Type | application/json |
Request Parametreleri
| Alan | Zorunluluk | Tip | Açıklama |
|---|---|---|---|
packageCode |
Zorunlu | string | Paket turların paket kodu. |
note |
Opsiyonel | string | Siparişe ait not bilgisi. |
agencyOrderNumber |
Opsiyonel | string | Acentenin kendi sistemindeki sipariş numarası. |
userPaxes |
Zorunlu | array | Yolcu listesi. Aşağıdaki alanları içerir. |
userPaxes içindeki alanlar:
| Alan | Zorunluluk | Tip | Açıklama |
|---|---|---|---|
countryName |
Zorunlu | string | Ülke adı. Örn: "Türkiye" |
userPaxType |
Zorunlu | int | Pax tipi: Adult=1, Child=2 (2–11,99 yaş), Baby=3 (0–1,99 yaş). |
email |
Zorunlu | string | E-posta. Maks. 50 karakter. |
name |
Zorunlu | string | Ad. Maks. 50 karakter. |
surname |
Zorunlu | string | Soyad. Maks. 30 karakter. |
phoneNumber |
Koşullu | string | Telefon. Maks. 15 karakter. Yetişkin (Adult) ise zorunludur. Örn: 5555555555 |
genderId |
Zorunlu | int | Cinsiyet: Male=1, Female=2, Other=3. |
birthDate |
Zorunlu | string | Doğum tarihi. Format: YYYY-MM-DD. Örn: 1993-04-29 |
tckn |
Koşullu | string | T.C. Kimlik No. Yetişkin (Adult) ise zorunludur. |
passportNo |
Opsiyonel | string | Pasaport numarası. |
passportExpireDate |
Opsiyonel | string | Pasaport son kullanma tarihi. Format: YYYY-MM-DD. Örn: 2027-04-19 |
Not: Bir siparişe en fazla 5 pax eklenebilir.
Örnek İstek — Tek Yetişkin
curl -X POST "https://gazellab2bapi.caretta.net/api/Integration/CreateOrder" \
-H "X-API-KEY: <APIKEY>" \
-H "Content-Type: application/json" \
-d '{
"packageCode": "000874-000042",
"note": "Tek yetiskin sipariş notu",
"agencyOrderNumber": "222222",
"userPaxes": [
{
"countryName": "Türkiye",
"userPaxType": 1,
"email": "info@caretta.net",
"name": "Caretta",
"surname": "Caretta",
"phoneNumber": "5555555555",
"genderId": 1,
"birthDate": "1993-04-29",
"tckn": "31256952812",
"passportNo": "TR35-PST2027",
"passportExpireDate": "2027-04-19"
}
]
}'
Örnek İstek — Yetişkin + Çocuk
{
"packageCode": "000874-000042",
"note": "Yetişkin + çocuk siparişi",
"agencyOrderNumber": "222224",
"userPaxes": [
{
"countryName": "Türkiye", "userPaxType": 1,
"email": "yetiskin@caretta.net", "name": "Mehmet", "surname": "Demir",
"phoneNumber": "5556667788", "genderId": 1,
"birthDate": "1988-03-10", "tckn": "31256952812"
},
{
"countryName": "Türkiye", "userPaxType": 2,
"email": "cocuk@caretta.net", "name": "Elif", "surname": "Demir",
"genderId": 2, "birthDate": "2016-09-05"
}
]
}
Çocuk (
userPaxType=2) ve bebek (userPaxType=3) içinphoneNumbervetcknzorunlu değildir.
Örnek Yanıt
{
"statusCode": 200,
"statusDescription": "İşleminiz başarı ile yapıldı",
"orderNumber": 10268
}
3.2 Integration/GetTourPriceAndCapacity
packageCode bilgisine göre ilgili tur ürününün fiyat, otel ve kapasite bilgilerini döner.
| URL | {baseUrl}/GetTourPriceAndCapacity |
| Method | GET |
| Content-Type | application/json |
Query Parametreleri
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
packageCode |
Zorunlu | Paket kodu. Örn: 000874-000042 |
Örnek İstek
curl "https://gazellab2bapi.caretta.net/api/Integration/GetTourPriceAndCapacity?packageCode=000874-000042" \
-H "X-API-KEY: <APIKEY>"
Örnek Yanıt
{
"data": {
"tourCode": "22-00040",
"title": "Mistik Fas Ve Sahra Çölü",
"packageCode": "000874-000042",
"tourCategoryId": 1,
"tourTransportTypeId": 1,
"price": 1690,
"currencyType": "EUR",
"startDate": "2026-10-16T00:00:00",
"endDate": "2026-10-23T00:00:00",
"capacityPerson": 9987,
"capacityRoom": 4993,
"definiteDeparture": false,
"commissionRate": 0.00,
"useable": true,
"mininumPax": 10,
"departureFlight": "TK617 İstanbul-Kazablanka 12:15-15:05",
"returnFlight": "TK620 Marakeş-İstanbul 16:05-23:05",
"hotel": {
"name": "4* ve 5* Oteller",
"code": "000042",
"capacityRoom": 0
},
"campaigns": [],
"flights": [
{
"type": 1,
"value": "TK617 İstanbul-Kazablanka 12:15-15:05",
"flightNumber": "TK617",
"airlineCompanyName": "Türk Hava Yolları",
"departureCityName": "İstanbul",
"departureHour": "12:15",
"arrivalCityName": "Kazablanka",
"arrivalHour": "15:05"
},
{
"type": 2,
"value": "TK620 Marakeş-İstanbul 16:05-23:05",
"flightNumber": "TK620",
"airlineCompanyName": "Türk Hava Yolları",
"departureCityName": "Marakeş",
"departureHour": "16:05",
"arrivalCityName": "İstanbul",
"arrivalHour": "23:05"
}
],
"prices": [
{ "typeId": 1, "price": 2140.00, "currencyType": "EUR" },
{ "typeId": 2, "price": 1690.00, "currencyType": "EUR" },
{ "typeId": 3, "price": 1690.00, "currencyType": "EUR" }
]
},
"statusCode": 200,
"statusDescription": "İşleminiz başarıyla tamamlandı.",
"isSuccess": true
}
Alan Açıklamaları
| Alan | Açıklama |
|---|---|
capacityPerson |
Tur ürününe ait kalan kontenjan (kişi). |
capacityRoom |
Tur ürününe ait kalan toplam kapasite. |
hotel.capacityRoom |
Otele ait kalan toplam kapasite. |
departureFlight / returnFlight |
Gidiş / dönüş uçuş bilgisi. |
flights |
Pakete bağlı uçuş listesi. type: Gidiş=1, Dönüş=2, Tur içi=3. |
prices |
Tur fiyatları. typeId: Single=1, Double=2, Triple=3, Child=5, Baby=6, DoubleChild=7. |
campaigns |
Tur tarihine denk gelen kampanyalar. discountType 1=Yüzdesel, 2=Miktarsal; amount uygulanacak indirim miktarı. |
3.3 Integration/GetAllTourPriceAndCapacity
Satış başlangıç tarihi bugünden büyük olan tüm tur ürünlerinin fiyat/otel/kapasite bilgilerini listeler.
| URL | {baseUrl}/GetAllTourPriceAndCapacity |
| Method | GET |
| Content-Type | application/json |
Query Parametreleri (Opsiyonel)
| Parametre | Açıklama |
|---|---|
tourCode |
Tur kodu bazında filtreleme. Örn: 22-00040 |
pageSize |
Tek seferde istenen kayıt sayısı. Örn: 100 |
pageNumber |
Sayfa numarası. Örn: 1 |
Query parametreleri gönderilmezse tüm kayıtlar döner. Yanıtta sayfalama için
totalRecordCountalanı bulunur.
Örnek İstekler
# Tüm kayıtlar
curl "https://gazellab2bapi.caretta.net/api/Integration/GetAllTourPriceAndCapacity" \
-H "X-API-KEY: <APIKEY>"
# Filtreli + sayfalı
curl "https://gazellab2bapi.caretta.net/api/Integration/GetAllTourPriceAndCapacity?tourCode=22-00040&pageSize=100&pageNumber=1" \
-H "X-API-KEY: <APIKEY>"
Örnek Yanıt (kısaltılmış)
{
"totalRecordCount": 100,
"data": [
{
"title": "Mistik Fas Ve Sahra Çölü",
"packageCode": "000874-000042",
"tourCode": "22-00040",
"price": 1690,
"currencyType": "EUR",
"commissionRate": 0.00,
"startDate": "2026-10-16T00:00:00",
"endDate": "2026-10-23T00:00:00",
"capacityPerson": 9987,
"capacityRoom": 4993,
"definiteDeparture": false,
"tourCategoryId": 1,
"tourTransportTypeId": 1,
"hotel": { "name": "4* ve 5* Oteller", "code": "000042", "capacityRoom": 0 },
"prices": [
{ "typeId": 1, "price": 2140.00, "currencyType": "EUR" },
{ "typeId": 2, "price": 1690.00, "currencyType": "EUR" }
],
"campaigns": [],
"flights": []
}
],
"statusCode": 200,
"statusDescription": "İşleminiz başarıyla tamamlandı."
}
Alan açıklamaları 3.2 ile aynıdır. Ek olarak totalRecordCount toplam kayıt sayısını verir.
3.4 Integration/GetAllB2BToursDetails
Satış başlangıç tarihi bugünden büyük olan turları listeler.
| URL | {baseUrl}/GetAllB2BToursDetails |
| Method | POST |
| Content-Type | application/json |
Query Parametreleri (Opsiyonel)
| Parametre | Açıklama |
|---|---|
pageSize |
Tek seferde istenen kayıt sayısı. Örn: 100 |
pageNumber |
Sayfa numarası. Örn: 1 |
Query parametreleri gönderilmezse tüm kayıtlar döner. Yanıtta
totalRecordCountalanı bulunur.
Örnek İstek
curl -X POST "https://gazellab2bapi.caretta.net/api/Integration/GetAllB2BToursDetails?pageSize=100&pageNumber=1" \
-H "X-API-KEY: <APIKEY>" \
-H "Content-Type: application/json"
Örnek Yanıt (kısaltılmış)
{
"totalRecordCount": 12,
"data": [
{
"tourName": "Baştan Başa Fas",
"tourOperator": "Gazella",
"tourCode": "22-00012",
"tourProductCode": "000878",
"tourCategoryId": 1,
"tourTransportTypeId": 1,
"hotelCode": "000042",
"hotelName": "4* ve 5* Oteller",
"startDate": "2029-10-16T00:00:00",
"packageCode": "000878-000042",
"commissionRate": 0.00
},
{
"tourName": "Mistik Fas Ve Sahra Çölü",
"tourOperator": "Gazella Nomads",
"tourCode": "22-00040",
"tourProductCode": "000874",
"tourCategoryId": 1,
"tourTransportTypeId": 1,
"hotelCode": "000042",
"hotelName": "4* ve 5* Oteller",
"startDate": "2026-10-16T00:00:00",
"packageCode": "000874-000042",
"commissionRate": 0.00
}
],
"statusCode": 200,
"statusDescription": "İşleminiz başarıyla tamamlandı."
}
3.5 Integration/GetB2BTourDetailsWithTourCode
Tur koduna göre, satış başlangıç tarihi bugünden büyük olan turları (ilgili tüm paket varyantları ile) döner.
| URL | {baseUrl}/GetB2BTourDetailsWithTourCode |
| Method | POST |
| Content-Type | application/json |
Request Parametreleri
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
tourCode |
Zorunlu | Tur kodu. Query parametresi olarak gönderilir. Örn: 22-00040 |
Örnek İstek
curl -X POST "https://gazellab2bapi.caretta.net/api/Integration/GetB2BTourDetailsWithTourCode?tourCode=22-00040" \
-H "X-API-KEY: <APIKEY>" \
-H "Content-Type: application/json"
Örnek Yanıt
Bu servis ilgili tur koduna ait tüm paket varyantlarını döndürür.
{
"data": [
{
"tourName": "Mistik Fas Ve Sahra Çölü",
"tourOperator": "Gazella Nomads",
"tourCode": "22-00040",
"tourProductCode": "000874",
"tourCategoryId": 1,
"tourTransportTypeId": 1,
"hotelCode": "000042",
"hotelName": "4* ve 5* Oteller",
"startDate": "2026-10-16T00:00:00",
"packageCode": "000874-000042",
"commissionRate": 0.00
},
{
"tourName": "Mistik Fas Ve Sahra Çölü",
"tourOperator": "Gazella Nomads",
"tourCode": "22-00040",
"tourProductCode": "000887",
"tourCategoryId": 1,
"tourTransportTypeId": 1,
"hotelCode": "000042",
"hotelName": "4* ve 5* Oteller",
"startDate": "2060-10-16T00:00:00",
"packageCode": "000887-000042",
"commissionRate": 0.00
}
],
"statusCode": 200,
"statusDescription": "İşleminiz başarıyla tamamlandı."
}
3.6 Integration/GetTourDetail
Tur koduna göre ilgili turun detay bilgilerini (program, dahil/hariç hizmetler, oteller) döner.
| URL | {baseUrl}/GetTourDetail |
| Method | GET |
| Content-Type | application/json |
Query Parametreleri
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
code |
Zorunlu | Turun kod bilgisi. Query parametresi olarak gönderilmelidir. Örn: 22-00040 |
Örnek İstek
curl "https://gazellab2bapi.caretta.net/api/Integration/GetTourDetail?code=22-00040" \
-H "X-API-KEY: <APIKEY>"
Örnek Yanıt (kısaltılmış)
{
"data": {
"title": "Mistik Fas Ve Sahra Çölü",
"code": "22-00040",
"tourCategoryId": 1,
"tourTransportTypeId": 1,
"commissionRate": 0.00,
"generalInfo": "<p><strong>Otellerimiz</strong> ... <strong>Vize Bilgileri</strong> Türk vatandaşları 90 güne kadar vizeden muaftır. ... (HTML içerik)",
"programs": [
{
"sort": 1,
"title": "İstanbul - Kazablanka",
"description": "Turumuz kişiye özel aracın sizi adresinizden alması ile başlıyor. ... (program açıklaması)"
},
{
"sort": 2,
"title": "Rabat – Volubilis – Meknes – Fez",
"description": "Kahvaltının ardından Rabat şehir turumuzu gerçekleştiriyoruz. ..."
}
],
"includedServices": [
{ "sort": 1, "text": "THY ile İstanbul – Kazablanka / Marakeş – İstanbul uçak biletleri" },
{ "sort": 2, "text": "4* ve 5* otellerde konaklama (kahvaltı ve akşam yemekleri dahil)" },
{ "sort": 3, "text": "Türkçe Rehberlik Hizmeti" }
],
"excludedServices": [
{ "sort": 1, "text": "Yurtdışı Çıkış Harç Pulu" },
{ "sort": 2, "text": "Öğle yemekleri" },
{ "sort": 3, "text": "Ekstra turlar" }
],
"hotels": [
{ "title": "4* ve 5* Oteller", "code": "000042", "city": null }
]
},
"statusCode": 200,
"statusDescription": "İşleminiz başarıyla tamamlandı.",
"isSuccess": true
}
Alan Açıklamaları
| Alan | Açıklama |
|---|---|
generalInfo |
Tur ile ilgili genel bilgiler (HTML içerebilir). |
programs |
Turun günlük program bilgilerini içeren liste. |
includedServices |
Fiyata dahil hizmetler. |
excludedServices |
Fiyata dahil olmayan hizmetler. |
hotels |
Tur üzerinde tanımlı otel bilgileri. |
4. Tipler ve Açıklamalar
| Tip | Değerler |
|---|---|
| UserPaxType | Adult = 1, Child = 2, Baby = 3 |
| GenderId | Male = 1, Female = 2, Other = 3 |
| Flights.Type | Gidiş = 1, Dönüş = 2, Tur içi = 3 |
| Prices.Type | Single = 1 (tek yetişkin pp), Double = 2 (iki yetişkin pp), Triple = 3 (üç yetişkin pp), Child = 5 (çocuk pp), Baby = 6 (bebek pp), DoubleChild = 7 (iki çocuk pp) |
| TourApprovalStatus / TourProductApprovalStatus | AwaitingApproval = 1, Approved = 2, Rejected = 3 |
| Campaign DiscountType | Yüzdesel = 1, Miktarsal = 2 |
| TourCategoryId | Yurt Dışı = 1, Yurt İçi = 2, Cruise = 5 |
| TourTransportTypeId | Uçak = 1, Otobüs = 2, Gemi = 3, Tren = 4, Tekne = 5, Uçaksız Paket = 6 |
5. İstek Durum Kodları
| Kod | Açıklama |
|---|---|
| 200 | İşleminiz başarı ile yapıldı. |
| 500 | İşleminiz yapılırken hata oluştu. Sunucu taraflı hata oluşmuş olabilir. |
| 1000 | Paket kodu formatı geçersiz. |
| 1001 | Lütfen yolcu bilgisi giriniz. |
| 1002 | Ülke adı boş bırakılamaz. |
| 1003 | Ad boş bırakılamaz. |
| 1004 | Soyad boş bırakılamaz. |
| 1005 | Lütfen geçerli bir doğum tarihi giriniz. |
| 1006 | Email adresi boş bırakılamaz. |
| 1007 | Lütfen geçerli bir telefon numarası giriniz. |
| 1008 | Lütfen geçerli bir T.C. Kimlik numarası giriniz. |
| 1020 | Otel bulunamadı. |
| 1021 | Tur ürünü bulunamadı. |
| 1022 | Tur ürününe ait otel bulunamadı. |
| 1023 | Bu tura şu an rezervasyon yapılamamaktadır. |
| 1024 | Seçilen otelin kontenjanı dolmuştur. Lütfen başka bir oteli deneyiniz. |
| 1025 | Tur ürününün kapasitesi kalmamıştır. |
| 1026 | Maksimum pax sayısını aştınız. 5'ten fazla pax ekleyemezsiniz. |
| 1027 | Tur ürünü kullanılabilir değil. |
| 1028 | Lütfen pax tipini ve doğum tarihini kontrol ediniz. |
| 1029 | Tur bulunamadı. |
| 1030 | Pax tipine uygun fiyat bulunamadı. |
6. Notlar
GetAllTourPriceAndCapacityservisi query parametresi olaraktourCode,pageSizevepageNumberdestekler. Örn:GetAllTourPriceAndCapacity?tourCode=22-00040&pageSize=100&pageNumber=1GetAllB2BToursDetailsservisi query parametresi olarakpageSizevepageNumberdestekler. Örn:GetAllB2BToursDetails?pageSize=100&pageNumber=1GetAllTourPriceAndCapacityveGetAllB2BToursDetailsservislerinin yanıt modelindetotalRecordCountalanı bulunur.
7. Ek: Test Değerleri
Aşağıdaki değerler test ortamı için kullanılabilir:
| Alan | Değer |
|---|---|
| APIKEY | Gazella tarafından ayrıca sağlanır (dokümanda paylaşılmaz) |
| tourCode | 22-00040 |
| packageCode | 000874-000042, 000887-000042, 000877-000042 |
Uyarı: APIKEY gizli bir bilgidir; herkese açık kaynak kodu depolarında veya paylaşılan ortamlarda saklanmamalıdır.
Bu doküman, Gazella B2B API Dokümantasyonu ve birlikte gelen Postman koleksiyonu temel alınarak hazırlanmıştır.