Read confirmed booking
const url = 'https://quikstik-core.fly.dev/bookings/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'GET', headers: { 'x-tenant-id': '2489E9AD-2EE2-8E00-8EC9-32D5F69181C0', Authorization: 'Bearer <token>' }};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://quikstik-core.fly.dev/bookings/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>' \ --header 'x-tenant-id: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0'Reads a confirmed booking by id, scoped to the caller’s tenant (resolved from the verified
session — another tenant’s booking is 404, never visible). The booking id is the confirmed
booking-intent’s id. A confirmed Booking is a distinct entity from the booking-intent hold:
it is departure- and obligation-bound. Fail-closed: if no durable read backend is wired the
route returns 503 (nothing is fabricated).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”Tenant identifier (UUID).
Authn/authz semantics are intentionally TBD for this contract slice; this header exists to keep the contract explicitly multi-tenant from day 0.
Responses
Section titled “Responses”Booking
A confirmed booking — departure- and obligation-bound. Distinct from BookingIntent (the
pre-confirmation hold). tenant_id is intentionally absent from the wire: the read is
tenant-scoped from the verified session.
object
The confirmed booking-intent’s id (a confirmed booking reuses the hold’s id).
The payment obligation this booking is bound to.
Lifecycle status (snake_case wire vocabulary, shared with the booking-intent read).
cancelled reflects an operator trip cancellation or a customer-initiated cancellation;
the refund disposition is the ledger’s truth.
The group checkout this booking belongs to, if any.
Creation time (epoch milliseconds).
Last-update time (epoch milliseconds).
The OTA’s own booking reference, normalised (BR-1453533133 for Viator, GYG-… for
GetYourGuide) — what the OTA’s mail and relay alias name. Absent for storefront bookings
and for OTA bookings not yet backfilled.
Example
{ "status": "created"}Missing or invalid session bearer token
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}The session’s effect authority does not cover this operation
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}No such booking for the caller’s tenant
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}No durable backend is wired for this operation (fail-closed)
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}