Booking Detail
Booking confirmation detail (agent-authenticated and public guest views)
📄️ Booking confirmation (guest)
Public booking-confirmation view keyed by booking id — the guest's confirmation page. 404 when the booking is not a confirmed reservation (e.g. a paid-but-failed booking that was compensated to CANCELLED): there is no confirmation to show. The guest's money-aware status (refund pending, etc.) is served by the payment/booking status poll instead.
📄️ Booking detail (agent)
The full booking as the confirmation view, for an authenticated CRS user. Carries the booking agency's agent cashback on top of the guest view: `payment.cashbackRedeemed` / `payment.amountPayable` for the post-tax settlement split, and an `agentCashback` block with what the booking earned. `payment.grandTotal` is the gross invoice either way and is never reduced by cashback, so collect `amountPayable` when it is present. All of it is absent for a non-agency booking or an agency excluded from the loyalty programme, and `agentCashback` is additionally absent until the cashback earn path is enabled — handle it as nullable rather than assuming a block.