অধ্যায় ৭.১ — GDS (Amadeus, Sabre)
১. উদ্দেশ্য
GDS (Global Distribution System) — এয়ারলাইন ইনভেন্টরি এবং বুকিংয়ের কেন্দ্রীয় সিস্টেম। travoBooks Amadeus, Sabre, এবং Travelport সমর্থন করে।
২. সরবরাহকারী-অ্যাগনস্টিক আর্কিটেকচার
travoBooks-এ একটি SupplierClient interface যা প্রতিটি GDS-এর জন্য concrete implementation:
interface SupplierClient {
public function search(SearchRequest $req): SearchResponse;
public function priceQuote(PriceRequest $req): PriceResponse;
public function bookHold(HoldRequest $req): HoldResponse;
public function issueTicket(IssueRequest $req): IssueResponse;
public function void(VoidRequest $req): VoidResponse;
public function refund(RefundRequest $req): RefundResponse;
}
Implementations: AmadeusClient, SabreClient, TravelportClient, NDCClient।
৩. Amadeus
প্রোটোকল: SOAP + WS-Security
মূল এন্ডপয়েন্ট:
- Fare_MasterPricerTravelBoardSearch — flight search
- Air_SellFromRecommendation — booking
- Fare_PricePNRWithBookingClass — pricing
- DocIssuance_IssueTicket — ticketing
- Air_Cancel — cancellation
PHP ক্লায়েন্ট: IttAMASearch কাস্টম ক্লাস:
- SOAP envelope construction
- WS-Security headers (username + password digest)
- Response XML পার্সিং
- Fare family resolution per segment
- Roundtrip segment handling
৪. Sabre
প্রোটোকল: REST + OAuth2 Authentication: Bearer token (1 ঘণ্টা মেয়াদ) PCC (Pseudo City Code): প্রতি অনুরোধে অন্তর্ভুক্ত
মূল এন্ডপয়েন্ট:
- /v1/offers/shop — search
- /v2/passenger/records — PNR ব্যবস্থাপনা
- /v1.0.0/passenger/records/{pnr}/tickets — ticketing
৫. Travelport (uAPI)
প্রোটোকল: SOAP/REST API ফ্যামিলি: Universal API (uAPI), Galileo Web Services
৬. ক্রেডেনশিয়াল ম্যানেজমেন্ট
প্রতি সরবরাহকারী + প্রতি পার্টনার:
- supplier_credentials টেবিলে এনক্রিপ্টেড (AWS KMS)
- Office ID / PCC
- API username/password
- Endpoint URL (test/prod)
ডেভেলপমেন্ট-এ ক্রেডেনশিয়াল কখনো লগ করা হয় না।
৭. রিকোয়েস্ট/রেসপন্স লগিং
প্রতিটি GDS কল:
- supplier_request_log রো
- Request payload (PII মাস্কড)
- Response code & timing
- Booking ID, ticket numbers reference
ডিবাগিং, অরফান ট্র্যাকিং, পারফরম্যান্স মনিটরিংয়ের জন্য।
৮. ইস্যুয়েন্স প্যাটার্ন
(অধ্যায় ৪.১ এবং ৪.২ এ বিস্তারিত)
মূল নিয়ম: GDS কল ডিবি ট্রানজ্যাকশনের বাইরে। Reconciler অরফান টিকেট ধরে।
৯. রেট লিমিট
প্রতি GDS-এর rate limit (per second/minute/day)। travoBooks: - Token bucket per partner per supplier - Burst handling - 429 response → exponential backoff retry
১০. সাধারণ ফাঁদ
- ⚠️ ক্রেডেনশিয়াল লগে — অডিট ক্যাচ
- ⚠️ Test endpoint → production booking — ভুল ডেটা
- ⚠️ Retry idempotency ছাড়া — ডবল ইস্যুয়েন্স
- ⚠️ GDS timeout-এ failure assume — কখনো partial success