NDC 21.3 Teknik Rehber – Flight API Entegrasyonu

NDC 21.3 için pratik ve geliştirici odaklı bir teknik rehber: kavramlar, temel mesajlar, XML yapısı, uçtan uca entegrasyon akışı ve sık görülen hatalar.

Kategori: NDC · GDS · Flight APIs

1. NDC 21.3 neden önemli?

NDC (New Distribution Capability), hava yolu dağıtım sürecini modernleştirmek için IATA tarafından oluşturulmuş bir standarttır. Geleneksel GDS arama & fiyatlama süreçlerinin aksine NDC tamamen offer & order modeline dayanır.

21.3 versiyonu bugün üretimde en çok kullanılan ve en stabil NDC sürümlerinden biridir.

Bir flight search engine, OTA platformu veya B2B travel sistemi geliştiriyorsanız NDC ile:

  • Uçuş arama ve fiyatlama
  • Offer üzerinden rezervasyon (order) oluşturma
  • Ancillary satışı (bagaj, koltuk, yemek vb.)
  • Order görüntüleme, iptal, değişiklik

gibi işlemleri desteklemeniz gerekir.

2. Temel kavramlar: Offer ve Order

NDC’de direkt “uçuş + fiyat” değil, Offer üzerinden işlem yapılır.

  1. Arama (Offer üretimi)
  2. OfferPrice ile fiyat doğrulama
  3. OrderCreate ile sipariş / rezervasyon oluşturma
  4. OrderRetrieve ile görüntüleme

3. NDC 21.3 entegrasyonunda kullanılan mesajlar

  • AirShoppingRQ / RS – uçuş arama
  • OfferPriceRQ / RS – fiyat doğrulama
  • OrderCreateRQ / RS – rezervasyon oluşturma
  • OrderRetrieveRQ / RS – order detaylarını alma
  • OrderCancel / Change – iptal / değişiklik
  • SeatAvailability / ServiceList – koltuk & ancillary

4. Uçtan uca tipik NDC akışı

  1. AirShoppingRQ: arama → offer listesi
  2. OfferPriceRQ: seçilen offer’ın fiyat doğrulaması
  3. OrderCreateRQ: PNR/order oluşturma
  4. Payment/Ticketing: sağlayıcıya göre değişir
  5. OrderRetrieveRQ: kullanıcıya bilet detaylarının gösterilmesi

5. Basit bir AirShoppingRQ örneği

<AirShoppingRQ Version="21.3">
  <Document>
    <Name>gosuware-ndc-client</Name>
  </Document>

  <Party>
    <Sender>
      <TravelAgencySender>
        <Name>Gosuware Demo</Name>
        <IATA_Number>12345678</IATA_Number>
      </TravelAgencySender>
    </Sender>
  </Party>

  <CoreQuery>
    <OriginDestinations>
      <OriginDestination>
        <Departure>
          <AirportCode>IST</AirportCode>
          <Date>2025-06-01</Date>
        </Departure>
        <Arrival>
          <AirportCode>LHR</AirportCode>
        </Arrival>
      </OriginDestination>
    </OriginDestinations>
  </CoreQuery>

  <Travelers>
    <Traveler>
      <AnonymousTraveler>
        <PTC>ADT</PTC>
      </AnonymousTraveler>
    </Traveler>
  </Travelers>
</AirShoppingRQ>

Gerçek NDC servislerinde namespace, OfferItemID, DataLists gibi birçok ek alan bulunur. Basit örneği daha anlaşılır olması için minimal tuttum.

6. Backend tasarımı: NDC 21.3 nasıl konumlandırılmalı?

6.1. Sağlayıcı katmanını izole edin

  • XML → internal model dönüşümü tek bir modülde olsun
  • NdcClient veya ProviderAdapter kullanın
  • XML yapıları domain logic’e bulaşmasın

6.2. Versioning & feature flags

  • 21.3 değerini config ile yönetin
  • Farklı airline versiyonlarına adaptörle yaklaşın

6.3. Logging & observability

  • Correlation ID → her çağrıya ekleyin
  • Hataları “airline error” vs “technical error” diye ayrıştırın
  • Sensitive data’yı loglamayın

6.4. Error handling & idempotency

  • Timeout → retry with backoff
  • OrderCreate → idempotent key şart
  • Yarı yolda duran akışlar için kompansasyon

7. Test stratejisi

Gerçek dünya projelerinde test çevreleri (sandbox) genelde çok sınırlı:

  • Kısıtlı test dataları
  • Gerçek dışı availability
  • Prod gibi davranmayan uç noktalar

Bu yüzden kendi test stratejinizi kurmalısınız:

  • Tüm NDC mesajları için contract test
  • Uçtan uca akış testleri
  • Hata ve edge-case senaryoları

Gosuware olarak üzerinde çalıştığım bir fikir: Birden fazla GDS/NDC sağlayıcısını tek arayüzle test edebileceğiniz gerçekçi bir sandbox ortamı.

8. Gerçek projelerde sık görülen hatalar

  • NDC XML'in tüm servislere yayılması
  • OfferPrice yapılmadan booking'e geçmek
  • Hataların yakalanmaması
  • Loglama & correlation eksikliği
  • Cache kullanılmaması

9. Yardım gerekirse

Eğer NDC 21.3 entegrasyonu planlıyor veya mevcut bir entegrasyonu iyileştirmek istiyorsanız, hizmet sayfalarımıza göz atabilir veya iletişim formundan bana ulaşabilirsiniz.

Entegrasyon sürecinizi değerlendirmek isterseniz, iletişime geçebilirsiniz.