FlightBooking
HTTP trigger for FlightBookingOrchestrator (Domain/FlightBookingOrchestrator.cs) -- the customer-facing entry point for the ondgo.gds/ondgo.booking extraction (docs/MICROSERVICES_DECOMPOSITION.md). Accepts exactly two real caller types, both wired from day one (see Infrastructure/Auth/BookingAuthExtensions.cs's doc comment for why there's no OpenIddict inbound scheme, unlike every other extracted host):
- Real human end-users: the same legacy JwtBearer token they already hold everywhere else in this codebase; WalletId is derived from that token's own "defaultWallet" claim, never trusted from client-supplied body input.
- Travel-agency B2B partners (external callers, confirmed directly with the user): the ApiKey scheme (Infrastructure/Auth/AgencyApiKeyAuthenticationHandler.cs). WalletId is derived from the "wallet_id" claim the handler sets from the agency tenant's OWN Wallet.WalletId -- an agency books and pays out of its own account, mirroring TicketIssuanceOrchestrator's IAgencyWalletService model exactly -- never from client-supplied body input either, for the same "don't trust the caller to name an arbitrary wallet" reasoning as the customer path.
Routed through ondgo.gateway at /flights (ondgo.gateway/Startup.cs's flights_cluster -- this doc comment previously claimed otherwise; confirmed stale against the actual gateway config during the Search port below and corrected here). Book/Cancel are still not called by anything live -- ondgo.api/Controllers/Tickets/TicketOSController.cs remains the live flight-booking code, completely untouched by this pass.
Search connected GDS providers for available flights on a route and date, for one airline tenant per call.
Ticketing strangler Phase 1 (2026-09-02, docs/MICROSERVICES_DECOMPOSITION.md) --
Confirms baggage/seat pricing for a selected offer before booking. Requires an Idempotency-Key header.
Ticketing strangler Phase 2 (2026-09-02, docs/MICROSERVICES_DECOMPOSITION.md) -- extras/
Read-only PNR/booking history lookup, for an agency agent looking up an existing booking. Not part of the purchase flow.
Ticketing strangler Phase 3 (2026-09-02, docs/MICROSERVICES_DECOMPOSITION.md) -- booking
Books a selected offer and debits your wallet. Asynchronous: returns immediately with an attemptId to poll, or subscribe to webhooks. Requires an Idempotency-Key header.
Books a selected offer and debits your wallet. Asynchronous: returns immediately with an attemptId to poll, or subscribe to webhooks. Requires an Idempotency-Key header.
Gets the current status of a booking attempt you created, by id.
IDOR fix (2026-08-30 security review, CONFIRMED): this looked up an attempt by id
Cancels a completed booking and refunds your wallet on a successful cancellation. Asynchronous: returns immediately, poll or use webhooks for the final outcome.
The second original money-safety finding this extraction closes (no refund on
Registers a webhook for booking lifecycle events (flight_booking.completed/failed), scoped to your own wallet.
Registers a webhook for booking lifecycle events (flight_booking.completed/failed), scoped to your own wallet.
Lists your own registered webhooks.
Lists your own registered webhooks.
Gets one of your own registered webhooks by id.
Gets one of your own registered webhooks by id.
Updates one of your own registered webhooks.
Updates one of your own registered webhooks.
Deletes one of your own registered webhooks.
Deletes one of your own registered webhooks.