Use this endpoint when you need the full booking record: itinerary pages,
confirmation emails and vouchers, support tools, customer history and finance
reconciliation. It sits at the end of the flow (search, rooms, prebook, book)
and is how you read back what was booked.
The offer that was booked. Equals booked_offer.offer_id.
Informational. Send it to Confirm Hold when you confirm a held booking.
data.booked_offer
The offer exactly as accepted at booking time: hotel and dates in quote_context (hotel, check_in, check_out), rooms, pricing, payment terms and the cancellation policy that applied. It does not change after booking.
Build the itinerary from it. This is what the guest agreed to.
data.booked_offer.rooms[]
One entry per booked room, with room_allocation_id, provider_room and optional unifystays_room.
unifystays_room can be null. Display provider_room then. Never use room mapping as reservation identity.
data.guests[]
Every guest with guest_id, guest_type (ADULT, CHILD, INFANT), is_lead_guest, room_allocation_id and answers[].
Join to a room with room_allocation_id. Contains personal data.
data.guests[].answers[]
What you submitted for each booking requirement: requirement_id, code (such as FIRST_NAME), value.
Show the guest names from the FIRST_NAME and LAST_NAME answers.
The policy in force now. When the supplier reports a final policy after booking, it replaces the one in booked_offer (policy_stage: "FINAL").
Show the policy and free_cancellation_until. To cancel, get a quote. Do not compute the charge yourself.
data.cancellation_outcome.status
NOT_REQUESTED, PENDING (supplier processing), CANCELLED, REJECTED (supplier refused, booking stays active) or UNKNOWN (answer uncertain, being verified).
Show the right message. Read again while PENDING or UNKNOWN.
data.cancellation_outcome.charge
The charge applied, as Money. null when none was reported (this does not mean zero).
Display after cancellation.
data.cancellation_outcome.display_charge
charge in the booking’s display currency, frozen when the cancellation was recorded.
Show it next to charge. null when charge is null.
data.cancellation_outcome.display_fx
The rate behind display_charge. It is the booking’s frozen rate, or the rate frozen with the cancellation when the charge was in another currency (then rate_updated_at is null).
Use for audit.
data.display_total
What the booking costs in the display currency it was made with, as Money, at the rate frozen when it was priced. Later exchange-rate changes never alter it.
Show it where you show the booking price. null for bookings made before display currencies existed.
data.display_fx
The frozen rate behind display_total: rate, rate_updated_at (when the exchange-rate source last updated it; null when it gave none) and frozen_at (when the booking froze it).
data.confirmed_details is what the supplier reports after booking. It is
null until that record has been read, for example while the booking is
PROCESSING. It is separate from booked_offer, which never changes.
Field
What it means
How to use it
supplier_status
The supplier’s own status text.
Display only. Use lifecycle.status for logic.
supplier_created_at, supplier_modified_at
When the supplier created or last changed the booking.
Support and audit.
check_in, check_out
Dates as the supplier holds them.
Compare with booked_offer.quote_context. Tell support if they differ.
is_cancellable
Whether the supplier says it can be cancelled.
Informational. Use available_actions for the decision.
rooms[]
Room name, meal plan, bed configuration, adults, children and quantity as the supplier confirmed them.
Show on the voucher if you want the supplier’s wording.
pricing
payable_total, selling_total, refunded_total, vat_total, each Money or null.
Reconciliation. All amounts are amount_minor with currency_exponent.
payment
Supplier payment type, who pays, paid time, due, pending and invoice ID.
Reconciliation. Supplier-defined text.
voucher_comment
A comment the supplier wants on the voucher.
Print it when present.
Booking details contain guest personal data and supplier confirmation
information. Call this endpoint from trusted backend services only and limit
who can see the data.
The Money object is always { amount_minor, currency, currency_exponent }.
17700 with exponent 2 is 177.00.
ISO 4217 currency for display amounts (display_ledger, display_amount, commercial_display). Optional: defaults to your organization's display currency, USD unless configured. Read pricing.display_currency in the response.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Unifystays API","colors":{"primary":"#0F766E","light":"#14B8A6","dark":"#134E4A"},"navbar":{"links":[{"href":"https://unifystays.com","label":"Portal"},{"href":"mailto:support@unifystays.com","label":"Support"}]},"contextual":{"options":["copy","download-spec","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"unifystays","hasAudioNarration":false,"actualSubdomain":"unifystays","customDomains":["docs.unifystays.com"],"gitSource":{"type":"github","owner":"ronakonline","repo":"unifystay","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae836724729f9837cf0d8e4","collectionId":"17105c7f-831f-4751-8445-71739bb329ae","liveDeploymentHistoryId":"6ae836724729f9837cf0d8e4","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae836724729f9837cf0d8e4","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API Reference","count":29},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"Bookings","count":8},{"language":"default","tag":"Search \u0026 hotels","count":7},{"language":"default","tag":"Webhook endpoints","count":7},{"language":"default","tag":"Build your integration","count":5},{"language":"default","tag":"Webhook logs","count":4},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"Destination \u0026 master data","count":2},{"language":"default","tag":"Operate","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/get-booking-details","slug":"/api-reference/get-booking-details","pageMetadata":{"title":"Get Booking Details","description":"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.","openapi":"reference/openapi.json GET /hotels/book/{booking_id}/details","href":"/api-reference/get-booking-details"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Info,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use this endpoint when you need the full booking record: itinerary pages,\nconfirmation emails and vouchers, support tools, customer history and finance\nreconciliation. It sits at the end of the flow (search, rooms, prebook, book)\nand is how you read back what was booked.`}),`\n`,_jsx(Heading,{level:`2`,id:`status-details-or-idempotency-lookup`,children:`Status, details or idempotency lookup?`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`You want to…`}),_jsx(_components.th,{children:`Call`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Poll a booking that is in progress`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/api-reference/get-booking-status`,children:`Get Booking Status`}),`. It is lightweight.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Show the itinerary, guests, voucher data or the cancellation policy`}),_jsx(_components.td,{children:`This endpoint.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Recover after Create Booking timed out and you have no `,_jsx(_components.code,{children:`booking_id`})]}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/api-reference/get-booking-by-idempotency-key`,children:`Find Booking by Idempotency-Key`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Browse many bookings`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/api-reference/list-bookings`,children:`List Bookings`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`request-example`,children:`Request example`}),`\n`,`\n`,_jsx(Heading,{level:`2`,id:`response-example`,children:`Response example`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`booked_offer`}),` is the full offer object from rooms and prebook. It is shortened\nhere to the fields used in this page.`]}),`\n`,`\n`,_jsx(Heading,{level:`2`,id:`field-guide`,children:`Field guide`}),`\n`,_jsx(Heading,{level:`3`,id:`offer-and-guests`,children:`Offer and guests`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.booking_id`})}),_jsx(_components.td,{children:`The Unifystays booking ID.`}),_jsx(_components.td,{children:`Your key for this booking.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.accepted_offer_id`})}),_jsxs(_components.td,{children:[`The offer that was booked. Equals `,_jsx(_components.code,{children:`booked_offer.offer_id`}),`.`]}),_jsx(_components.td,{children:`Informational. Send it to Confirm Hold when you confirm a held booking.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.booked_offer`})}),_jsxs(_components.td,{children:[`The offer exactly as accepted at booking time: hotel and dates in `,_jsx(_components.code,{children:`quote_context`}),` (`,_jsx(_components.code,{children:`hotel`}),`, `,_jsx(_components.code,{children:`check_in`}),`, `,_jsx(_components.code,{children:`check_out`}),`), `,_jsx(_components.code,{children:`rooms`}),`, pricing, payment terms and the cancellation policy that applied. It does not change after booking.`]}),_jsx(_components.td,{children:`Build the itinerary from it. This is what the guest agreed to.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.booked_offer.rooms[]`})}),_jsxs(_components.td,{children:[`One entry per booked room, with `,_jsx(_components.code,{children:`room_allocation_id`}),`, `,_jsx(_components.code,{children:`provider_room`}),` and optional `,_jsx(_components.code,{children:`unifystays_room`}),`.`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`unifystays_room`}),` can be `,_jsx(_components.code,{children:`null`}),`. Display `,_jsx(_components.code,{children:`provider_room`}),` then. Never use room mapping as reservation identity.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.guests[]`})}),_jsxs(_components.td,{children:[`Every guest with `,_jsx(_components.code,{children:`guest_id`}),`, `,_jsx(_components.code,{children:`guest_type`}),` (`,_jsx(_components.code,{children:`ADULT`}),`, `,_jsx(_components.code,{children:`CHILD`}),`, `,_jsx(_components.code,{children:`INFANT`}),`), `,_jsx(_components.code,{children:`is_lead_guest`}),`, `,_jsx(_components.code,{children:`room_allocation_id`}),` and `,_jsx(_components.code,{children:`answers[]`}),`.`]}),_jsxs(_components.td,{children:[`Join to a room with `,_jsx(_components.code,{children:`room_allocation_id`}),`. Contains personal data.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.guests[].answers[]`})}),_jsxs(_components.td,{children:[`What you submitted for each booking requirement: `,_jsx(_components.code,{children:`requirement_id`}),`, `,_jsx(_components.code,{children:`code`}),` (such as `,_jsx(_components.code,{children:`FIRST_NAME`}),`), `,_jsx(_components.code,{children:`value`}),`.`]}),_jsxs(_components.td,{children:[`Show the guest names from the `,_jsx(_components.code,{children:`FIRST_NAME`}),` and `,_jsx(_components.code,{children:`LAST_NAME`}),` answers.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`references-which-number-to-show`,children:`References: which number to show`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.booking_id`})}),_jsx(_components.td,{children:`Unifystays booking ID.`}),_jsx(_components.td,{children:`Your own key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.supplier_booking_id`})}),_jsxs(_components.td,{children:[`The supplier’s primary booking or order ID. `,_jsx(_components.code,{children:`null`}),` until assigned.`]}),_jsx(_components.td,{children:`Store it. Quote it to support or to the supplier.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.supplier_booking_code`})}),_jsxs(_components.td,{children:[`A distinct secondary supplier code. `,_jsx(_components.code,{children:`null`}),` when the supplier has only one.`]}),_jsx(_components.td,{children:`Store it when present.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.hotel_confirmation_number`})}),_jsxs(_components.td,{children:[`The hotel’s own confirmation number. `,_jsx(_components.code,{children:`null`}),` until the hotel confirms. Can arrive after `,_jsx(_components.code,{children:`CONFIRMED`}),`.`]}),_jsx(_components.td,{children:`Show it to the guest as the hotel confirmation number.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.client_reference`})}),_jsx(_components.td,{children:`A reference Unifystays generated and sent to the supplier, when one exists.`}),_jsxs(_components.td,{children:[`Not your order reference. Key on `,_jsx(_components.code,{children:`booking_id`}),`.`]})]})]})]}),`\n`,_jsx(_components.p,{children:`These three are different things. Do not treat them as interchangeable.`}),`\n`,_jsx(Heading,{level:`3`,id:`lifecycle`,children:`Lifecycle`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.status`}),`, `,_jsx(_components.code,{children:`is_terminal`})]}),_jsx(_components.td,{children:`The booking status and whether it is final.`}),_jsxs(_components.td,{children:[`Meanings are in `,_jsx(_components.a,{href:`/api-reference/get-booking-status#booking-statuses`,children:`Get Booking Status`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.lifecycle.processing_reason`})}),_jsxs(_components.td,{children:[`Why it is not simply done, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(_components.td,{children:[`See `,_jsx(_components.a,{href:`/api-reference/get-booking-status#what-to-do-next`,children:`Get Booking Status`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.action_required`}),`, `,_jsx(_components.code,{children:`available_actions`})]}),_jsx(_components.td,{children:`Whether a person must act, and what you can do.`}),_jsxs(_components.td,{children:[`Drive your buttons from `,_jsx(_components.code,{children:`available_actions`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.review_expires_at`}),`, `,_jsx(_components.code,{children:`hold_deadline_at`})]}),_jsx(_components.td,{children:`Review quote deadline, or the hold deadline.`}),_jsx(_components.td,{children:`Show when present.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.created_at`}),`, `,_jsx(_components.code,{children:`updated_at`}),`, `,_jsx(_components.code,{children:`completed_at`})]}),_jsxs(_components.td,{children:[`ISO 8601 UTC times. `,_jsx(_components.code,{children:`completed_at`}),` is `,_jsx(_components.code,{children:`null`}),` while in progress.`]}),_jsx(_components.td,{children:`Display or log.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.failure`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`code`}),` and a generic `,_jsx(_components.code,{children:`message`}),`. `,_jsx(_components.code,{children:`null`}),` unless the booking has a failure code.`]}),_jsxs(_components.td,{children:[`Branch on `,_jsx(_components.code,{children:`code`}),`. Do not show or parse `,_jsx(_components.code,{children:`message`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`voucher`,children:`Voucher`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.available`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),` when the booking is `,_jsx(_components.code,{children:`CONFIRMED`}),` and the hotel confirmation number is known.`]}),_jsxs(_components.td,{children:[`Show a ready voucher only when `,_jsx(_components.code,{children:`true`}),`. Otherwise show “confirmed, hotel number to follow” and read again later.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.hotel_confirmation_number`})}),_jsx(_components.td,{children:`The number to print on the voucher.`}),_jsx(_components.td,{children:`Print it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.note`})}),_jsx(_components.td,{children:`A note from the hotel or supplier about the confirmation.`}),_jsx(_components.td,{children:`Show when present.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.url`})}),_jsxs(_components.td,{children:[`A hosted voucher link. Currently always `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(_components.td,{children:[`Build the voucher yourself from `,_jsx(_components.code,{children:`booked_offer`}),`, `,_jsx(_components.code,{children:`guests`}),` and `,_jsx(_components.code,{children:`references`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`cancellation`,children:`Cancellation`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.current_cancellation`})}),_jsxs(_components.td,{children:[`The policy in force now. When the supplier reports a final policy after booking, it replaces the one in `,_jsx(_components.code,{children:`booked_offer`}),` (`,_jsx(_components.code,{children:`policy_stage: \"FINAL\"`}),`).`]}),_jsxs(_components.td,{children:[`Show the policy and `,_jsx(_components.code,{children:`free_cancellation_until`}),`. To cancel, get a `,_jsx(_components.a,{href:`/api-reference/cancellation-quote`,children:`quote`}),`. Do not compute the charge yourself.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.status`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`NOT_REQUESTED`}),`, `,_jsx(_components.code,{children:`PENDING`}),` (supplier processing), `,_jsx(_components.code,{children:`CANCELLED`}),`, `,_jsx(_components.code,{children:`REJECTED`}),` (supplier refused, booking stays active) or `,_jsx(_components.code,{children:`UNKNOWN`}),` (answer uncertain, being verified).`]}),_jsxs(_components.td,{children:[`Show the right message. Read again while `,_jsx(_components.code,{children:`PENDING`}),` or `,_jsx(_components.code,{children:`UNKNOWN`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.charge`})}),_jsxs(_components.td,{children:[`The charge applied, as Money. `,_jsx(_components.code,{children:`null`}),` when none was reported (this does not mean zero).`]}),_jsx(_components.td,{children:`Display after cancellation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.display_charge`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`charge`}),` in the booking’s display currency, frozen when the cancellation was recorded.`]}),_jsxs(_components.td,{children:[`Show it next to `,_jsx(_components.code,{children:`charge`}),`. `,_jsx(_components.code,{children:`null`}),` when `,_jsx(_components.code,{children:`charge`}),` is `,_jsx(_components.code,{children:`null`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.display_fx`})}),_jsxs(_components.td,{children:[`The rate behind `,_jsx(_components.code,{children:`display_charge`}),`. It is the booking’s frozen rate, or the rate frozen with the cancellation when the charge was in another currency (then `,_jsx(_components.code,{children:`rate_updated_at`}),` is `,_jsx(_components.code,{children:`null`}),`).`]}),_jsx(_components.td,{children:`Use for audit.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.display_total`})}),_jsx(_components.td,{children:`What the booking costs in the display currency it was made with, as Money, at the rate frozen when it was priced. Later exchange-rate changes never alter it.`}),_jsxs(_components.td,{children:[`Show it where you show the booking price. `,_jsx(_components.code,{children:`null`}),` for bookings made before display currencies existed.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.display_fx`})}),_jsxs(_components.td,{children:[`The frozen rate behind `,_jsx(_components.code,{children:`display_total`}),`: `,_jsx(_components.code,{children:`rate`}),`, `,_jsx(_components.code,{children:`rate_updated_at`}),` (when the exchange-rate source last updated it; `,_jsx(_components.code,{children:`null`}),` when it gave none) and `,_jsx(_components.code,{children:`frozen_at`}),` (when the booking froze it).`]}),_jsx(_components.td,{children:`Use for audit.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.confirmed_details.pricing.display_payable_total`}),`, `,_jsx(_components.code,{children:`display_selling_total`}),`, `,_jsx(_components.code,{children:`display_refunded_total`}),`, `,_jsx(_components.code,{children:`display_vat_total`})]}),_jsxs(_components.td,{children:[`The matching `,_jsx(_components.code,{children:`pricing`}),` amounts in the display currency, at the booking’s frozen rate.`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`null`}),` when the source amount is `,_jsx(_components.code,{children:`null`}),` or in a different currency than the booking.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.current_cancellation.penalties[].display_amount`})}),_jsx(_components.td,{children:`Each penalty in the display currency, at the booking’s frozen rate.`}),_jsxs(_components.td,{children:[`Show with the policy. `,_jsx(_components.code,{children:`null`}),` when no frozen rate exists.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`confirmed-details-supplier’s-post-booking-record`,children:`Confirmed details (supplier’s post-booking record)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`data.confirmed_details`}),` is what the supplier reports after booking. It is\n`,_jsx(_components.code,{children:`null`}),` until that record has been read, for example while the booking is\n`,_jsx(_components.code,{children:`PROCESSING`}),`. It is separate from `,_jsx(_components.code,{children:`booked_offer`}),`, which never changes.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`supplier_status`})}),_jsx(_components.td,{children:`The supplier’s own status text.`}),_jsxs(_components.td,{children:[`Display only. Use `,_jsx(_components.code,{children:`lifecycle.status`}),` for logic.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`supplier_created_at`}),`, `,_jsx(_components.code,{children:`supplier_modified_at`})]}),_jsx(_components.td,{children:`When the supplier created or last changed the booking.`}),_jsx(_components.td,{children:`Support and audit.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`check_in`}),`, `,_jsx(_components.code,{children:`check_out`})]}),_jsx(_components.td,{children:`Dates as the supplier holds them.`}),_jsxs(_components.td,{children:[`Compare with `,_jsx(_components.code,{children:`booked_offer.quote_context`}),`. Tell support if they differ.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`is_cancellable`})}),_jsx(_components.td,{children:`Whether the supplier says it can be cancelled.`}),_jsxs(_components.td,{children:[`Informational. Use `,_jsx(_components.code,{children:`available_actions`}),` for the decision.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`rooms[]`})}),_jsx(_components.td,{children:`Room name, meal plan, bed configuration, adults, children and quantity as the supplier confirmed them.`}),_jsx(_components.td,{children:`Show on the voucher if you want the supplier’s wording.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pricing`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`payable_total`}),`, `,_jsx(_components.code,{children:`selling_total`}),`, `,_jsx(_components.code,{children:`refunded_total`}),`, `,_jsx(_components.code,{children:`vat_total`}),`, each Money or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(_components.td,{children:[`Reconciliation. All amounts are `,_jsx(_components.code,{children:`amount_minor`}),` with `,_jsx(_components.code,{children:`currency_exponent`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`payment`})}),_jsx(_components.td,{children:`Supplier payment type, who pays, paid time, due, pending and invoice ID.`}),_jsx(_components.td,{children:`Reconciliation. Supplier-defined text.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`voucher_comment`})}),_jsx(_components.td,{children:`A comment the supplier wants on the voucher.`}),_jsx(_components.td,{children:`Print it when present.`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Booking details contain guest personal data and supplier confirmation\ninformation. Call this endpoint from trusted backend services only and limit\nwho can see the data.`})}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The Money object is always `,_jsx(_components.code,{children:`{ amount_minor, currency, currency_exponent }`}),`.\n`,_jsx(_components.code,{children:`17700`}),` with exponent `,_jsx(_components.code,{children:`2`}),` is `,_jsx(_components.code,{children:`177.00`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`next-step`,children:`Next step`}),`\n`,_jsxs(_components.p,{children:[`To cancel, use `,_jsx(_components.a,{href:`/api-reference/cancellation-quote`,children:`Quote Cancellation`}),` and then\n`,_jsx(_components.a,{href:`/api-reference/cancel-booking`,children:`Cancel Booking`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get Booking Details","description":"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.","openapi":"reference/openapi.json GET /hotels/book/{booking_id}/details","href":"/api-reference/get-booking-details"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,RequestExample,ResponseExample,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use this endpoint when you need the full booking record: itinerary pages,\nconfirmation emails and vouchers, support tools, customer history and finance\nreconciliation. It sits at the end of the flow (search, rooms, prebook, book)\nand is how you read back what was booked.`}),`\n`,_jsx(Heading,{level:`2`,id:`status-details-or-idempotency-lookup`,children:`Status, details or idempotency lookup?`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`You want to…`}),_jsx(_components.th,{children:`Call`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Poll a booking that is in progress`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/api-reference/get-booking-status`,children:`Get Booking Status`}),`. It is lightweight.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Show the itinerary, guests, voucher data or the cancellation policy`}),_jsx(_components.td,{children:`This endpoint.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Recover after Create Booking timed out and you have no `,_jsx(_components.code,{children:`booking_id`})]}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/api-reference/get-booking-by-idempotency-key`,children:`Find Booking by Idempotency-Key`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Browse many bookings`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/api-reference/list-bookings`,children:`List Bookings`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`request-example`,children:`Request example`}),`\n`,_jsx(RequestExample,{children:_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$UNIFYSTAYS_BASE_URL`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/hotels/book/ubk_eGQ0dW9uV1Vi/details\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"x-api-key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$UNIFYSTAYS_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`response-example`,children:`Response example`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`booked_offer`}),` is the full offer object from rooms and prebook. It is shortened\nhere to the fields used in this page.`]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:``,numberOfLines:`82`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`82`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"contract_version\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Booking confirmed.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"booking_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ubk_eGQ0dW9uV1Vi\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accepted_offer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"off_65db5f20d91b47d3a73d834dfa44c50e\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"booked_offer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"offer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"off_65db5f20d91b47d3a73d834dfa44c50e\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"revision\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"quote_context\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"hotel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"13553916\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Ramada Plaza by Wyndham Dubai Deira\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"check_in\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-26\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"check_out\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-28\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"nights\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"rooms\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"room_allocation_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ra_957cff0ac25243f29eb43bc32eb82136\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"mapping_status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"UNMAPPED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unifystays_room\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"provider_room\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Standard Room, 2 Twin Beds\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"guests\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"guest_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"guest_1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"guest_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ADULT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"is_lead_guest\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"room_allocation_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ra_957cff0ac25243f29eb43bc32eb82136\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"answers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requirement_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"br_first_name_all_guests_2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"FIRST_NAME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Meera\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"references\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"booking_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ubk_eGQ0dW9uV1Vi\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"client_reference\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"US-1776255131000\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"supplier_booking_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TJ202487947162\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"supplier_booking_code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"hotel_confirmation_number\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"HCN-482910\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"lifecycle\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"CONFIRMED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"is_terminal\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-15T12:12:11.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"updated_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-15T12:15:11.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"completed_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-15T12:15:11.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"processing_reason\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"action_required\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"available_actions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"GET_DETAILS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"CANCEL\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"review_expires_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"hold_deadline_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"voucher\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"available\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"hotel_confirmation_number\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"HCN-482910\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"note\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"current_cancellation\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"refundability\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"REFUNDABLE\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"policy_stage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"FINAL\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"free_cancellation_until\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"local_datetime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-20T23:59:59\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timezone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"UTC\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"utc_datetime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-05-20T23:59:59.000Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"policy_text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Free cancellation until 20 May 2026.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"penalties\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"no_show\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"cancellation_outcome\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"NOT_REQUESTED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"charge\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"failure\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"confirmed_details\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`field-guide`,children:`Field guide`}),`\n`,_jsx(Heading,{level:`3`,id:`offer-and-guests`,children:`Offer and guests`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.booking_id`})}),_jsx(_components.td,{children:`The Unifystays booking ID.`}),_jsx(_components.td,{children:`Your key for this booking.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.accepted_offer_id`})}),_jsxs(_components.td,{children:[`The offer that was booked. Equals `,_jsx(_components.code,{children:`booked_offer.offer_id`}),`.`]}),_jsx(_components.td,{children:`Informational. Send it to Confirm Hold when you confirm a held booking.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.booked_offer`})}),_jsxs(_components.td,{children:[`The offer exactly as accepted at booking time: hotel and dates in `,_jsx(_components.code,{children:`quote_context`}),` (`,_jsx(_components.code,{children:`hotel`}),`, `,_jsx(_components.code,{children:`check_in`}),`, `,_jsx(_components.code,{children:`check_out`}),`), `,_jsx(_components.code,{children:`rooms`}),`, pricing, payment terms and the cancellation policy that applied. It does not change after booking.`]}),_jsx(_components.td,{children:`Build the itinerary from it. This is what the guest agreed to.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.booked_offer.rooms[]`})}),_jsxs(_components.td,{children:[`One entry per booked room, with `,_jsx(_components.code,{children:`room_allocation_id`}),`, `,_jsx(_components.code,{children:`provider_room`}),` and optional `,_jsx(_components.code,{children:`unifystays_room`}),`.`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`unifystays_room`}),` can be `,_jsx(_components.code,{children:`null`}),`. Display `,_jsx(_components.code,{children:`provider_room`}),` then. Never use room mapping as reservation identity.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.guests[]`})}),_jsxs(_components.td,{children:[`Every guest with `,_jsx(_components.code,{children:`guest_id`}),`, `,_jsx(_components.code,{children:`guest_type`}),` (`,_jsx(_components.code,{children:`ADULT`}),`, `,_jsx(_components.code,{children:`CHILD`}),`, `,_jsx(_components.code,{children:`INFANT`}),`), `,_jsx(_components.code,{children:`is_lead_guest`}),`, `,_jsx(_components.code,{children:`room_allocation_id`}),` and `,_jsx(_components.code,{children:`answers[]`}),`.`]}),_jsxs(_components.td,{children:[`Join to a room with `,_jsx(_components.code,{children:`room_allocation_id`}),`. Contains personal data.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.guests[].answers[]`})}),_jsxs(_components.td,{children:[`What you submitted for each booking requirement: `,_jsx(_components.code,{children:`requirement_id`}),`, `,_jsx(_components.code,{children:`code`}),` (such as `,_jsx(_components.code,{children:`FIRST_NAME`}),`), `,_jsx(_components.code,{children:`value`}),`.`]}),_jsxs(_components.td,{children:[`Show the guest names from the `,_jsx(_components.code,{children:`FIRST_NAME`}),` and `,_jsx(_components.code,{children:`LAST_NAME`}),` answers.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`references-which-number-to-show`,children:`References: which number to show`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.booking_id`})}),_jsx(_components.td,{children:`Unifystays booking ID.`}),_jsx(_components.td,{children:`Your own key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.supplier_booking_id`})}),_jsxs(_components.td,{children:[`The supplier’s primary booking or order ID. `,_jsx(_components.code,{children:`null`}),` until assigned.`]}),_jsx(_components.td,{children:`Store it. Quote it to support or to the supplier.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.supplier_booking_code`})}),_jsxs(_components.td,{children:[`A distinct secondary supplier code. `,_jsx(_components.code,{children:`null`}),` when the supplier has only one.`]}),_jsx(_components.td,{children:`Store it when present.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.hotel_confirmation_number`})}),_jsxs(_components.td,{children:[`The hotel’s own confirmation number. `,_jsx(_components.code,{children:`null`}),` until the hotel confirms. Can arrive after `,_jsx(_components.code,{children:`CONFIRMED`}),`.`]}),_jsx(_components.td,{children:`Show it to the guest as the hotel confirmation number.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.references.client_reference`})}),_jsx(_components.td,{children:`A reference Unifystays generated and sent to the supplier, when one exists.`}),_jsxs(_components.td,{children:[`Not your order reference. Key on `,_jsx(_components.code,{children:`booking_id`}),`.`]})]})]})]}),`\n`,_jsx(_components.p,{children:`These three are different things. Do not treat them as interchangeable.`}),`\n`,_jsx(Heading,{level:`3`,id:`lifecycle`,children:`Lifecycle`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.status`}),`, `,_jsx(_components.code,{children:`is_terminal`})]}),_jsx(_components.td,{children:`The booking status and whether it is final.`}),_jsxs(_components.td,{children:[`Meanings are in `,_jsx(_components.a,{href:`/api-reference/get-booking-status#booking-statuses`,children:`Get Booking Status`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.lifecycle.processing_reason`})}),_jsxs(_components.td,{children:[`Why it is not simply done, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(_components.td,{children:[`See `,_jsx(_components.a,{href:`/api-reference/get-booking-status#what-to-do-next`,children:`Get Booking Status`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.action_required`}),`, `,_jsx(_components.code,{children:`available_actions`})]}),_jsx(_components.td,{children:`Whether a person must act, and what you can do.`}),_jsxs(_components.td,{children:[`Drive your buttons from `,_jsx(_components.code,{children:`available_actions`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.review_expires_at`}),`, `,_jsx(_components.code,{children:`hold_deadline_at`})]}),_jsx(_components.td,{children:`Review quote deadline, or the hold deadline.`}),_jsx(_components.td,{children:`Show when present.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.lifecycle.created_at`}),`, `,_jsx(_components.code,{children:`updated_at`}),`, `,_jsx(_components.code,{children:`completed_at`})]}),_jsxs(_components.td,{children:[`ISO 8601 UTC times. `,_jsx(_components.code,{children:`completed_at`}),` is `,_jsx(_components.code,{children:`null`}),` while in progress.`]}),_jsx(_components.td,{children:`Display or log.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.failure`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`code`}),` and a generic `,_jsx(_components.code,{children:`message`}),`. `,_jsx(_components.code,{children:`null`}),` unless the booking has a failure code.`]}),_jsxs(_components.td,{children:[`Branch on `,_jsx(_components.code,{children:`code`}),`. Do not show or parse `,_jsx(_components.code,{children:`message`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`voucher`,children:`Voucher`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.available`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),` when the booking is `,_jsx(_components.code,{children:`CONFIRMED`}),` and the hotel confirmation number is known.`]}),_jsxs(_components.td,{children:[`Show a ready voucher only when `,_jsx(_components.code,{children:`true`}),`. Otherwise show “confirmed, hotel number to follow” and read again later.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.hotel_confirmation_number`})}),_jsx(_components.td,{children:`The number to print on the voucher.`}),_jsx(_components.td,{children:`Print it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.note`})}),_jsx(_components.td,{children:`A note from the hotel or supplier about the confirmation.`}),_jsx(_components.td,{children:`Show when present.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.voucher.url`})}),_jsxs(_components.td,{children:[`A hosted voucher link. Currently always `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(_components.td,{children:[`Build the voucher yourself from `,_jsx(_components.code,{children:`booked_offer`}),`, `,_jsx(_components.code,{children:`guests`}),` and `,_jsx(_components.code,{children:`references`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`cancellation`,children:`Cancellation`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.current_cancellation`})}),_jsxs(_components.td,{children:[`The policy in force now. When the supplier reports a final policy after booking, it replaces the one in `,_jsx(_components.code,{children:`booked_offer`}),` (`,_jsx(_components.code,{children:`policy_stage: \"FINAL\"`}),`).`]}),_jsxs(_components.td,{children:[`Show the policy and `,_jsx(_components.code,{children:`free_cancellation_until`}),`. To cancel, get a `,_jsx(_components.a,{href:`/api-reference/cancellation-quote`,children:`quote`}),`. Do not compute the charge yourself.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.status`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`NOT_REQUESTED`}),`, `,_jsx(_components.code,{children:`PENDING`}),` (supplier processing), `,_jsx(_components.code,{children:`CANCELLED`}),`, `,_jsx(_components.code,{children:`REJECTED`}),` (supplier refused, booking stays active) or `,_jsx(_components.code,{children:`UNKNOWN`}),` (answer uncertain, being verified).`]}),_jsxs(_components.td,{children:[`Show the right message. Read again while `,_jsx(_components.code,{children:`PENDING`}),` or `,_jsx(_components.code,{children:`UNKNOWN`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.charge`})}),_jsxs(_components.td,{children:[`The charge applied, as Money. `,_jsx(_components.code,{children:`null`}),` when none was reported (this does not mean zero).`]}),_jsx(_components.td,{children:`Display after cancellation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.display_charge`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`charge`}),` in the booking’s display currency, frozen when the cancellation was recorded.`]}),_jsxs(_components.td,{children:[`Show it next to `,_jsx(_components.code,{children:`charge`}),`. `,_jsx(_components.code,{children:`null`}),` when `,_jsx(_components.code,{children:`charge`}),` is `,_jsx(_components.code,{children:`null`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.cancellation_outcome.display_fx`})}),_jsxs(_components.td,{children:[`The rate behind `,_jsx(_components.code,{children:`display_charge`}),`. It is the booking’s frozen rate, or the rate frozen with the cancellation when the charge was in another currency (then `,_jsx(_components.code,{children:`rate_updated_at`}),` is `,_jsx(_components.code,{children:`null`}),`).`]}),_jsx(_components.td,{children:`Use for audit.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.display_total`})}),_jsx(_components.td,{children:`What the booking costs in the display currency it was made with, as Money, at the rate frozen when it was priced. Later exchange-rate changes never alter it.`}),_jsxs(_components.td,{children:[`Show it where you show the booking price. `,_jsx(_components.code,{children:`null`}),` for bookings made before display currencies existed.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.display_fx`})}),_jsxs(_components.td,{children:[`The frozen rate behind `,_jsx(_components.code,{children:`display_total`}),`: `,_jsx(_components.code,{children:`rate`}),`, `,_jsx(_components.code,{children:`rate_updated_at`}),` (when the exchange-rate source last updated it; `,_jsx(_components.code,{children:`null`}),` when it gave none) and `,_jsx(_components.code,{children:`frozen_at`}),` (when the booking froze it).`]}),_jsx(_components.td,{children:`Use for audit.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`data.confirmed_details.pricing.display_payable_total`}),`, `,_jsx(_components.code,{children:`display_selling_total`}),`, `,_jsx(_components.code,{children:`display_refunded_total`}),`, `,_jsx(_components.code,{children:`display_vat_total`})]}),_jsxs(_components.td,{children:[`The matching `,_jsx(_components.code,{children:`pricing`}),` amounts in the display currency, at the booking’s frozen rate.`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`null`}),` when the source amount is `,_jsx(_components.code,{children:`null`}),` or in a different currency than the booking.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data.current_cancellation.penalties[].display_amount`})}),_jsx(_components.td,{children:`Each penalty in the display currency, at the booking’s frozen rate.`}),_jsxs(_components.td,{children:[`Show with the policy. `,_jsx(_components.code,{children:`null`}),` when no frozen rate exists.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`confirmed-details-supplier’s-post-booking-record`,children:`Confirmed details (supplier’s post-booking record)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`data.confirmed_details`}),` is what the supplier reports after booking. It is\n`,_jsx(_components.code,{children:`null`}),` until that record has been read, for example while the booking is\n`,_jsx(_components.code,{children:`PROCESSING`}),`. It is separate from `,_jsx(_components.code,{children:`booked_offer`}),`, which never changes.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`How to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`supplier_status`})}),_jsx(_components.td,{children:`The supplier’s own status text.`}),_jsxs(_components.td,{children:[`Display only. Use `,_jsx(_components.code,{children:`lifecycle.status`}),` for logic.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`supplier_created_at`}),`, `,_jsx(_components.code,{children:`supplier_modified_at`})]}),_jsx(_components.td,{children:`When the supplier created or last changed the booking.`}),_jsx(_components.td,{children:`Support and audit.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`check_in`}),`, `,_jsx(_components.code,{children:`check_out`})]}),_jsx(_components.td,{children:`Dates as the supplier holds them.`}),_jsxs(_components.td,{children:[`Compare with `,_jsx(_components.code,{children:`booked_offer.quote_context`}),`. Tell support if they differ.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`is_cancellable`})}),_jsx(_components.td,{children:`Whether the supplier says it can be cancelled.`}),_jsxs(_components.td,{children:[`Informational. Use `,_jsx(_components.code,{children:`available_actions`}),` for the decision.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`rooms[]`})}),_jsx(_components.td,{children:`Room name, meal plan, bed configuration, adults, children and quantity as the supplier confirmed them.`}),_jsx(_components.td,{children:`Show on the voucher if you want the supplier’s wording.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pricing`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`payable_total`}),`, `,_jsx(_components.code,{children:`selling_total`}),`, `,_jsx(_components.code,{children:`refunded_total`}),`, `,_jsx(_components.code,{children:`vat_total`}),`, each Money or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(_components.td,{children:[`Reconciliation. All amounts are `,_jsx(_components.code,{children:`amount_minor`}),` with `,_jsx(_components.code,{children:`currency_exponent`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`payment`})}),_jsx(_components.td,{children:`Supplier payment type, who pays, paid time, due, pending and invoice ID.`}),_jsx(_components.td,{children:`Reconciliation. Supplier-defined text.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`voucher_comment`})}),_jsx(_components.td,{children:`A comment the supplier wants on the voucher.`}),_jsx(_components.td,{children:`Print it when present.`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Booking details contain guest personal data and supplier confirmation\ninformation. Call this endpoint from trusted backend services only and limit\nwho can see the data.`})}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The Money object is always `,_jsx(_components.code,{children:`{ amount_minor, currency, currency_exponent }`}),`.\n`,_jsx(_components.code,{children:`17700`}),` with exponent `,_jsx(_components.code,{children:`2`}),` is `,_jsx(_components.code,{children:`177.00`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`next-step`,children:`Next step`}),`\n`,_jsxs(_components.p,{children:[`To cancel, use `,_jsx(_components.a,{href:`/api-reference/cancellation-quote`,children:`Quote Cancellation`}),` and then\n`,_jsx(_components.a,{href:`/api-reference/cancel-booking`,children:`Cancel Booking`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get Booking Details","description":"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.","openapi":"reference/openapi.json GET /hotels/book/{booking_id}/details","href":"/api-reference/get-booking-details"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Status, details or idempotency lookup?","slug":"status-details-or-idempotency-lookup","depth":2,"children":[]},{"title":"Request example","slug":"request-example","depth":2,"children":[]},{"title":"Response example","slug":"response-example","depth":2,"children":[]},{"title":"Field guide","slug":"field-guide","depth":2,"children":[{"title":"Offer and guests","slug":"offer-and-guests","depth":3,"children":[]},{"title":"References: which number to show","slug":"references-which-number-to-show","depth":3,"children":[]},{"title":"Lifecycle","slug":"lifecycle","depth":3,"children":[]},{"title":"Voucher","slug":"voucher","depth":3,"children":[]},{"title":"Cancellation","slug":"cancellation","depth":3,"children":[]},{"title":"Confirmed details (supplier’s post-booking record)","slug":"confirmed-details-supplier’s-post-booking-record","depth":3,"children":[]}]},{"title":"Next step","slug":"next-step","depth":2,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"2\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$UNIFYSTAYS_BASE_URL\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">/hotels/book/ubk_eGQ0dW9uV1Vi/details\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"x-api-key: \u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$UNIFYSTAYS_API_KEY\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"82\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"contract_version\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"success\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Booking confirmed.\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"booking_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ubk_eGQ0dW9uV1Vi\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"accepted_offer_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"off_65db5f20d91b47d3a73d834dfa44c50e\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"booked_offer\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"offer_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"off_65db5f20d91b47d3a73d834dfa44c50e\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"revision\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">2\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"quote_context\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"hotel\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"13553916\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"name\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Ramada Plaza by Wyndham Dubai Deira\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"check_in\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-05-26\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"check_out\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-05-28\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"nights\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">2\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"rooms\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"room_allocation_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ra_957cff0ac25243f29eb43bc32eb82136\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"mapping_status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"UNMAPPED\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"unifystays_room\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"provider_room\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"name\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Standard Room, 2 Twin Beds\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"guests\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"guest_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"guest_1\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"guest_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ADULT\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"is_lead_guest\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"room_allocation_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ra_957cff0ac25243f29eb43bc32eb82136\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"answers\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"requirement_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"br_first_name_all_guests_2\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"code\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"FIRST_NAME\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"value\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Meera\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"references\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"booking_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"ubk_eGQ0dW9uV1Vi\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"client_reference\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"US-1776255131000\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"supplier_booking_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"TJ202487947162\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"supplier_booking_code\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"hotel_confirmation_number\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"HCN-482910\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"lifecycle\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"CONFIRMED\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"is_terminal\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-04-15T12:12:11.000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"updated_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-04-15T12:15:11.000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"completed_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-04-15T12:15:11.000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"processing_reason\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"action_required\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"available_actions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"GET_DETAILS\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"CANCEL\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"review_expires_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"hold_deadline_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"voucher\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"available\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"url\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"hotel_confirmation_number\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"HCN-482910\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"note\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"current_cancellation\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"refundability\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"REFUNDABLE\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"policy_stage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"FINAL\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"free_cancellation_until\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"local_datetime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-05-20T23:59:59\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timezone\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"UTC\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"utc_datetime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-05-20T23:59:59.000Z\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"policy_text\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Free cancellation until 20 May 2026.\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"penalties\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"no_show\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"cancellation_outcome\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"NOT_REQUESTED\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"charge\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"failure\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"confirmed_details\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.","operationId":"HotelBookingController_getBookingDetail","parameters":["2f146cae-2b34-4be7-8f9c-e7015ddbf7b4","4b45b06e-3aa3-4c79-b416-c71893390d22","d9d1281a-ea7a-4f5c-a417-d954a9503135","8b45f3c6-e1ff-44fb-bda8-d746b232d4ee"],"responses":{"200":"416e5bd6-05ae-4b42-96ea-fb4bb358b456","404":"1ef06ff2-c69f-4ca6-acbb-373d9efd1932","406":"169410b2-b814-46a5-b563-96f84cdf97fa"},"summary":"Get full booking details","tags":["Hotels"],"method":"get","type":"path","servers":["58b3027e-a79b-4d2c-898a-ec7cc8ae6eae","32e511f6-5caf-4d51-acd6-ad4d164fb151"],"security":["71ce26d4-cf7b-4d3b-ab99-f95701a1c420"],"path":"/hotels/book/{booking_id}/details","baseUrlOptions":["https://api-sandbox.unifystays.com","https://api.unifystays.com"],"title":"Get full booking details","codeSamples":[],"requiredOnlyExamples":false,"requestExamples":[{"dropdown":false,"language":"shellscript","code":{"type":"pre","key":null,"ref":null,"props":{"className":"shiki shiki-themes github-light-default dark-plus","style":{"backgroundColor":"#ffffff","--shiki-dark-bg":"#0B0C0E","color":"#1f2328","--shiki-dark":"#D4D4D4"},"language":"shellscript","children":{"type":"code","key":null,"ref":null,"props":{"language":"shellscript","numberOfLines":"2","children":[{"type":"span","key":"0","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#953800","--shiki-dark":"#DCDCAA"},"children":"curl"}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":" \""}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#9CDCFE"},"children":"$UNIFYSTAYS_BASE_URL"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"/hotels/book/ubk_eGQ0dW9uV1Vi/details\""}},{"type":"span","key":"4","ref":null,"props":{"style":{"color":"#CF222E","--shiki-dark":"#D7BA7D"},"children":" \\"}}]}},"\n",{"type":"span","key":"2","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":" -H"}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":" \"x-api-key: "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#9CDCFE"},"children":"$UNIFYSTAYS_API_KEY"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\""}}]}},"\n"]}}}},"filename":""}],"requestExampleType":"mdx","responseExamples":[{"dropdown":false,"language":"json","code":{"type":"pre","key":null,"ref":null,"props":{"className":"shiki shiki-themes github-light-default dark-plus","style":{"backgroundColor":"#ffffff","--shiki-dark-bg":"#0B0C0E","color":"#1f2328","--shiki-dark":"#D4D4D4"},"language":"json","children":{"type":"code","key":null,"ref":null,"props":{"language":"json","numberOfLines":"82","children":[{"type":"span","key":"0","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":"{"}}}},"\n",{"type":"span","key":"2","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"contract_version\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"4","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"success\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"true"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"6","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"message\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"Booking confirmed.\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"8","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"data\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"10","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"booking_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"ubk_eGQ0dW9uV1Vi\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"12","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"accepted_offer_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"off_65db5f20d91b47d3a73d834dfa44c50e\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"14","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"booked_offer\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"16","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"offer_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"off_65db5f20d91b47d3a73d834dfa44c50e\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"18","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"revision\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"2"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"20","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"quote_context\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"22","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"hotel\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": { "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":"\"id\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"4","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"13553916\""}},{"type":"span","key":"5","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":", "}},{"type":"span","key":"6","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":"\"name\""}},{"type":"span","key":"7","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"8","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"Ramada Plaza by Wyndham Dubai Deira\""}},{"type":"span","key":"9","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}]}},"\n",{"type":"span","key":"24","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"check_in\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2026-05-26\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"26","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"check_out\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2026-05-28\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"28","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"nights\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"2"}}]}},"\n",{"type":"span","key":"30","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"32","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"rooms\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}}]}},"\n",{"type":"span","key":"34","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" {"}}}},"\n",{"type":"span","key":"36","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"room_allocation_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"ra_957cff0ac25243f29eb43bc32eb82136\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"38","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"mapping_status\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"UNMAPPED\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"40","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"unifystays_room\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"42","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"provider_room\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": { "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":"\"name\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"4","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"Standard Room, 2 Twin Beds\""}},{"type":"span","key":"5","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}]}},"\n",{"type":"span","key":"44","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"46","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" ]"}}}},"\n",{"type":"span","key":"48","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"50","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"guests\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}}]}},"\n",{"type":"span","key":"52","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" {"}}}},"\n",{"type":"span","key":"54","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"guest_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"guest_1\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"56","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"guest_type\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"ADULT\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"58","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"is_lead_guest\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"true"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"60","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"room_allocation_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"ra_957cff0ac25243f29eb43bc32eb82136\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"62","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"answers\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}}]}},"\n",{"type":"span","key":"64","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" {"}}}},"\n",{"type":"span","key":"66","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"requirement_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"br_first_name_all_guests_2\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"68","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"code\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"FIRST_NAME\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"70","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"value\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"Meera\""}}]}},"\n",{"type":"span","key":"72","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"74","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" ]"}}}},"\n",{"type":"span","key":"76","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"78","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" ],"}}}},"\n",{"type":"span","key":"80","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"references\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"82","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"booking_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"ubk_eGQ0dW9uV1Vi\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"84","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"client_reference\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"US-1776255131000\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"86","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"supplier_booking_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"TJ202487947162\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"88","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"supplier_booking_code\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"90","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"hotel_confirmation_number\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"HCN-482910\""}}]}},"\n",{"type":"span","key":"92","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"94","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"lifecycle\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"96","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"status\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"CONFIRMED\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"98","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"is_terminal\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"true"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"100","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"created_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2026-04-15T12:12:11.000Z\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"102","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"updated_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2026-04-15T12:15:11.000Z\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"104","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"completed_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2026-04-15T12:15:11.000Z\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"106","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"processing_reason\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"108","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"action_required\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"110","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"available_actions\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"GET_DETAILS\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":", "}},{"type":"span","key":"4","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"CANCEL\""}},{"type":"span","key":"5","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":"],"}}]}},"\n",{"type":"span","key":"112","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"review_expires_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"114","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"hold_deadline_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}}]}},"\n",{"type":"span","key":"116","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"118","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"voucher\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"120","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"available\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"true"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"122","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"url\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"124","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"hotel_confirmation_number\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"HCN-482910\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"126","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"note\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}}]}},"\n",{"type":"span","key":"128","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"130","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"current_cancellation\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"132","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"refundability\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"REFUNDABLE\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"134","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"policy_stage\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"FINAL\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"136","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"free_cancellation_until\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"138","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"local_datetime\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2026-05-20T23:59:59\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"140","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"timezone\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"UTC\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"142","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"utc_datetime\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"2026-05-20T23:59:59.000Z\""}}]}},"\n",{"type":"span","key":"144","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"146","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"policy_text\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"Free cancellation until 20 May 2026.\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"148","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"penalties\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": [],"}}]}},"\n",{"type":"span","key":"150","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"no_show\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}}]}},"\n",{"type":"span","key":"152","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"154","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"cancellation_outcome\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": { "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":"\"status\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"4","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"NOT_REQUESTED\""}},{"type":"span","key":"5","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":", "}},{"type":"span","key":"6","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":"\"charge\""}},{"type":"span","key":"7","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"8","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"9","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}]}},"\n",{"type":"span","key":"156","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"failure\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"158","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"confirmed_details\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}}]}},"\n",{"type":"span","key":"160","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"162","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":"}"}}}},"\n"]}}}},"filename":""}],"responseExampleType":"mdx"},"dependencies":{"parameters":{"2f146cae-2b34-4be7-8f9c-e7015ddbf7b4":{"name":"booking_id","required":true,"in":"path","description":"Unifystays booking ID returned by Create Booking (ubk_...).","schema":{"example":"ubk_eGQ0dW9uV1Vi","type":"string","isRequired":true,"description":"Unifystays booking ID returned by Create Booking (ubk_...).","uniqueKey":"","typeLabel":"string"}},"4b45b06e-3aa3-4c79-b416-c71893390d22":{"name":"language","description":"Enter language code(ex. en)","in":"header","schema":{}},"d9d1281a-ea7a-4f5c-a417-d954a9503135":{"name":"X-Unifystays-Contract-Version","in":"header","required":false,"description":"Hotel API contract version. Optional: 2 is the current version and the default.","schema":{"type":"string","enum":["2"],"default":"2","isRequired":false,"description":"Hotel API contract version. Optional: 2 is the current version and the default.","uniqueKey":"","typeLabel":"enum\u003cstring>"}},"8b45f3c6-e1ff-44fb-bda8-d746b232d4ee":{"name":"X-Unifystays-Currency","in":"header","required":false,"description":"ISO 4217 currency for display amounts (display_ledger, display_amount, commercial_display). Optional: defaults to your organization's display currency, USD unless configured. Read pricing.display_currency in the response.","schema":{"type":"string","minLength":3,"maxLength":3,"example":"EUR","isRequired":false,"description":"ISO 4217 currency for display amounts (display_ledger, display_amount, commercial_display). Optional: defaults to your organization's display currency, USD unless configured. Read pricing.display_currency in the response.","uniqueKey":"","typeLabel":"string"}}},"responses":{"416e5bd6-05ae-4b42-96ea-fb4bb358b456":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"contract_version":{"type":"string","example":"2","description":"Response contract version.","isRequired":true,"uniqueKey":"contract_version","typeLabel":"string"},"success":{"type":"boolean","example":true,"description":"True when the request succeeded.","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"message":{"type":"string","example":"Booking confirmed.","description":"Human-readable summary. Do not parse it.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"data":{"type":"object","description":"The full booking record.","required":["booking_id","accepted_offer_id","booked_offer","guests","references","lifecycle","voucher","current_cancellation","cancellation_outcome","failure","confirmed_details","display_total","display_fx"],"properties":{"booking_id":{"type":"string","example":"ubk_eGQ0dW9uV1Vi","description":"Unifystays booking ID returned by Create Booking.","isRequired":true,"uniqueKey":"data.booking_id","typeLabel":"string"},"accepted_offer_id":{"type":"string","example":"off_65db5f20d91b47d3a73d834dfa44c50e","description":"ID of the offer that was booked. Equals booked_offer.offer_id.","isRequired":true,"uniqueKey":"data.accepted_offer_id","typeLabel":"string"},"booked_offer":{"type":"object","description":"The offer exactly as it was accepted at booking time: hotel and dates (quote_context), rooms, pricing, payment terms and the cancellation policy that applied. It does not change after booking. Use it for the itinerary and for what the guest agreed to.","required":["offer_id","revision","offer_family_id","supersedes_offer_id","quote_context","provider_code","room_combination","rate_plan","rooms","lifecycle","pricing","payment","commercial","commercial_display","booking_requirements","cancellation","nightly_prices","promotions","benefits","notices","supplier_terms_and_conditions"],"properties":{"offer_id":{"type":"string","example":"off_01J...","description":"Unifystays ID of this offer (off_...). Use it as the list key and to match a prebook result with the offer it replaces. Not a booking key; book with booking_token.","isRequired":true,"uniqueKey":"data.booked_offer.offer_id","typeLabel":"string"},"revision":{"type":"number","example":1,"description":"Version of the offer. 1 for a room-search offer; the offer returned by Prebook has the next revision.","isRequired":true,"uniqueKey":"data.booked_offer.revision","typeLabel":"number"},"offer_family_id":{"oneOf":[{"type":"string","description":"Offers whose slots are the same room families in the same order share this id. Use it as the card key for multi-room searches. Null when any slot is a tmp_ room. Never use it for booking.","isRequired":true,"uniqueKey":"data.booked_offer.offer_family_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Offers whose slots are the same room families in the same order share this id. Use it as the card key for multi-room searches. Null when any slot is a tmp_ room. Never use it for booking.","isRequired":true,"uniqueKey":"data.booked_offer.offer_family_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.offer_family_id","typeLabel":"string | null"},"supersedes_offer_id":{"oneOf":[{"type":"string","description":"Immediate prior offer replaced by this one. Null for the initial rooms quote; prebook points to the rooms offer. Replace the old offer atomically.","isRequired":true,"uniqueKey":"data.booked_offer.supersedes_offer_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Immediate prior offer replaced by this one. Null for the initial rooms quote; prebook points to the rooms offer. Replace the old offer atomically.","isRequired":true,"uniqueKey":"data.booked_offer.supersedes_offer_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.supersedes_offer_id","typeLabel":"string | null"},"quote_context":{"type":"object","description":"The search this offer answers: hotel, dates, occupancy, residency, nationality and language. Echoed so you can verify the offer matches what the guest asked for.","required":["hotel","check_in","check_out","nights","rooms","residency","nationality","language"],"properties":{"hotel":{"type":"object","description":"The hotel this offer is for.","required":["id","name","address","address_local","city","state","country","postal_code","latitude","longitude","timezone"],"properties":{"id":{"type":"string","description":"Unifystays hotel ID.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.id","typeLabel":"string"},"name":{"type":"string","description":"Hotel name.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.name","typeLabel":"string"},"address":{"oneOf":[{"type":"string","description":"Hotel address, in English (Latin script) when a verified supplier address is available.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.address.oneOf.0","typeLabel":"string"},{"type":"null","description":"Hotel address, in English (Latin script) when a verified supplier address is available.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.address.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.address","typeLabel":"string | null"},"address_local":{"oneOf":[{"type":"string","description":"Catalogue address in the local script (e.g. Thai) when it is not Latin script; null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.address_local.oneOf.0","typeLabel":"string"},{"type":"null","description":"Catalogue address in the local script (e.g. Thai) when it is not Latin script; null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.address_local.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.address_local","typeLabel":"string | null"},"city":{"oneOf":[{"type":"string","description":"City. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.city.oneOf.0","typeLabel":"string"},{"type":"null","description":"City. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.city.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.city","typeLabel":"string | null"},"state":{"oneOf":[{"type":"string","description":"State or region. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.state.oneOf.0","typeLabel":"string"},{"type":"null","description":"State or region. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.state.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.state","typeLabel":"string | null"},"country":{"oneOf":[{"type":"string","description":"Country code (ISO 3166-1 alpha-2). Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.country.oneOf.0","typeLabel":"string"},{"type":"null","description":"Country code (ISO 3166-1 alpha-2). Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.country.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.country","typeLabel":"string | null"},"postal_code":{"oneOf":[{"type":"string","description":"Postal code. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.postal_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Postal code. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.postal_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.postal_code","typeLabel":"string | null"},"latitude":{"oneOf":[{"type":"number","description":"Latitude. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.latitude.oneOf.0","typeLabel":"number"},{"type":"null","description":"Latitude. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.latitude.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.latitude","typeLabel":"number | null"},"longitude":{"oneOf":[{"type":"number","description":"Longitude. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.longitude.oneOf.0","typeLabel":"number"},{"type":"null","description":"Longitude. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.longitude.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.longitude","typeLabel":"number | null"},"timezone":{"oneOf":[{"type":"string","description":"IANA time zone of the hotel when known. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.timezone.oneOf.0","typeLabel":"string"},{"type":"null","description":"IANA time zone of the hotel when known. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel.timezone","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.hotel","typeLabel":"object"},"check_in":{"type":"string","description":"Check-in date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.check_in","typeLabel":"string"},"check_out":{"type":"string","description":"Check-out date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.check_out","typeLabel":"string"},"nights":{"type":"number","description":"Number of nights.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.nights","typeLabel":"number"},"rooms":{"description":"Occupancy of each room, in request order.","type":"array","items":{"type":"object","properties":{"adults":{"type":"number","description":"Adults in the room.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.rooms.items.[INDEX].adults","typeLabel":"number"},"child_ages":{"description":"Ages of the children in the room.","type":"array","items":{"type":"number","uniqueKey":"data.booked_offer.quote_context.rooms.items.[INDEX].child_ages.items.[INDEX]","typeLabel":"number"},"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.rooms.items.[INDEX].child_ages","typeLabel":"number[]"}},"required":["adults","child_ages"],"uniqueKey":"data.booked_offer.quote_context.rooms.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.rooms","typeLabel":"object[]"},"residency":{"oneOf":[{"type":"string","description":"Residency country used for the quote (ISO 3166-1 alpha-2).","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.residency.oneOf.0","typeLabel":"string"},{"type":"null","description":"Residency country used for the quote (ISO 3166-1 alpha-2).","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.residency.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.residency","typeLabel":"string | null"},"nationality":{"oneOf":[{"type":"string","description":"Nationality used for the quote (ISO 3166-1 alpha-2).","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.nationality.oneOf.0","typeLabel":"string"},{"type":"null","description":"Nationality used for the quote (ISO 3166-1 alpha-2).","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.nationality.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.nationality","typeLabel":"string | null"},"language":{"oneOf":[{"type":"string","description":"Language code from the request. Null when none was sent.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.language.oneOf.0","typeLabel":"string"},{"type":"null","description":"Language code from the request. Null when none was sent.","isRequired":true,"uniqueKey":"data.booked_offer.quote_context.language.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.quote_context.language","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.quote_context","typeLabel":"object"},"provider_code":{"type":"string","example":"TBO","description":"Supplier that sells the offer, for example TRIPJACK.","isRequired":true,"uniqueKey":"data.booked_offer.provider_code","typeLabel":"string"},"room_combination":{"type":"object","description":"How the rooms array is composed. The complete rooms array is always one atomic offer.","required":["normalized_type","supplier_code","supplier_name"],"properties":{"normalized_type":{"type":"string","enum":["SINGLE_ROOM","SAME_ROOM_TYPE","MIXED_ROOM_TYPES","FIXED_COMBINATION","OTHER","UNKNOWN"],"description":"Normalized description of the room composition. The complete rooms array is always one atomic offer.","isRequired":true,"uniqueKey":"data.booked_offer.room_combination.normalized_type","typeLabel":"enum\u003cstring>"},"supplier_code":{"oneOf":[{"type":"string","description":"Opaque supplier-native combination code retained for diagnostics and future mappings. Prefer normalized_type for application logic.","isRequired":true,"uniqueKey":"data.booked_offer.room_combination.supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque supplier-native combination code retained for diagnostics and future mappings. Prefer normalized_type for application logic.","isRequired":true,"uniqueKey":"data.booked_offer.room_combination.supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.room_combination.supplier_code","typeLabel":"string | null"},"supplier_name":{"oneOf":[{"type":"string","description":"Supplier-native display label, when supplied.","isRequired":true,"uniqueKey":"data.booked_offer.room_combination.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier-native display label, when supplied.","isRequired":true,"uniqueKey":"data.booked_offer.room_combination.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.room_combination.supplier_name","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.room_combination","typeLabel":"object"},"rate_plan":{"oneOf":[{"type":"object","description":"Rate eligibility and selling classification. Supplier fields are opaque and nullable; use normalized_type and restriction flags for logic.","required":["normalized_type","supplier_code","supplier_name","qualification","is_package","is_fenced"],"properties":{"normalized_type":{"type":"string","enum":["PUBLIC","NEGOTIATED","CORPORATE","MEMBER","MOBILE","PACKAGE","PROMOTIONAL","GOVERNMENT","GROUP","OTHER","UNKNOWN"],"description":"Rate class: PUBLIC, NEGOTIATED, CORPORATE, MEMBER, MOBILE, PACKAGE, PROMOTIONAL, GOVERNMENT, GROUP, OTHER, or UNKNOWN. UNKNOWN means the supplier did not say; do not assume PUBLIC.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.normalized_type","typeLabel":"enum\u003cstring>"},"supplier_code":{"oneOf":[{"type":"string","description":"Opaque supplier-native rate-plan identifier. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque supplier-native rate-plan identifier. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.supplier_code","typeLabel":"string | null"},"supplier_name":{"oneOf":[{"type":"string","description":"Supplier-native display name. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier-native display name. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.supplier_name","typeLabel":"string | null"},"qualification":{"oneOf":[{"type":"string","description":"Supplier-defined eligibility condition. Display it when present; do not infer eligibility from null.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.qualification.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier-defined eligibility condition. Display it when present; do not infer eligibility from null.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.qualification.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.qualification","typeLabel":"string | null"},"is_package":{"type":"boolean","description":"True when the rate is sold as part of a package.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.is_package","typeLabel":"boolean"},"is_fenced":{"type":"boolean","description":"True when the supplier restricts how the rate may be sold. Show qualification when it is present.","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0.is_fenced","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rate_plan.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rate_plan","typeLabel":"object | null"},"rooms":{"description":"One entry per requested room, in request order. Book all of them together; they cannot be split across offers.","type":"array","items":{"type":"object","properties":{"room_allocation_id":{"type":"string","example":"ra_2c1fb39ed54742f28d95bd8bc5f4375d","description":"Opaque identity for this exact quoted room slot. Preserved through prebook and booking.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].room_allocation_id","typeLabel":"string"},"provider_room":{"type":"object","description":"The seller's own room: name, beds, capacity and the attributes the seller sent. Always show its beds and maximum guests on the offer row.","required":["provider_code","provider_hotel_id","id","name","supplier_name","description","description_format","detail_status","room_type","room_category","size","amenities","images","bed_configurations","bed_summary","occupancy","bathroom","views","features","extra_bed","child_bed"],"properties":{"provider_code":{"type":"string","example":"TRIPJACK","description":"Supplier that sells this room, for example TRIPJACK. Display as the seller name if you wish.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.provider_code","typeLabel":"string"},"provider_hotel_id":{"oneOf":[{"type":"string","example":"100000249368","description":"The supplier's ID for the hotel. Null when not supplied. Informational.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.provider_hotel_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"100000249368","description":"The supplier's ID for the hotel. Null when not supplied. Informational.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.provider_hotel_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.provider_hotel_id","typeLabel":"string | null"},"id":{"oneOf":[{"type":"string","example":"10024615989","description":"The supplier's ID for this room type. Null when the supplier sends none. Informational; do not use it as a booking key.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.id.oneOf.0","typeLabel":"string"},{"type":"null","example":"10024615989","description":"The supplier's ID for this room type. Null when the supplier sends none. Informational; do not use it as a booking key.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.id","typeLabel":"string | null"},"name":{"type":"string","example":"Aloft Studio, King","description":"Room name to display on the offer row, in the seller's words. For a catalogue room it can change as names are normalised; do not use it as an identity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.name","typeLabel":"string"},"supplier_name":{"oneOf":[{"type":"string","description":"Room name exactly as the supplier sent it. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room name exactly as the supplier sent it. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.supplier_name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","description":"Room description. Null when none. Render according to description_format.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room description. Null when none. Render according to description_format.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.description","typeLabel":"string | null"},"description_format":{"oneOf":[{"type":"string","enum":["HTML","TEXT"],"description":"HTML = sanitized HTML to render; TEXT = plain text to escape. Null when description is null.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.description_format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["HTML","TEXT"],"description":"HTML = sanitized HTML to render; TEXT = plain text to escape. Null when description is null.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.description_format.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.description_format","typeLabel":"enum\u003cstring> | null"},"detail_status":{"type":"string","enum":["NONE","PARTIAL","COMPLETE"],"description":"NONE: only id and name are known. PARTIAL: some structured detail is present; any field may still be null. COMPLETE: reserved; not emitted today.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.detail_status","typeLabel":"enum\u003cstring>"},"room_type":{"oneOf":[{"type":"object","description":"Room type classification (for example SUITE). Null when unknown.","required":["normalized_code","supplier_code","supplier_name"],"properties":{"normalized_code":{"type":"string","enum":["ROOM","SUITE","STUDIO","APARTMENT","VILLA","DORM","STANDARD","SUPERIOR","DELUXE","EXECUTIVE","PREMIUM","FAMILY","OTHER","UNKNOWN"],"example":"SUPERIOR","description":"Unifystays classification. New values may be added; treat an unknown value as OTHER.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0.normalized_code","typeLabel":"enum\u003cstring>"},"supplier_code":{"oneOf":[{"type":"string","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0.supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0.supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0.supplier_code","typeLabel":"string | null"},"supplier_name":{"oneOf":[{"type":"string","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0.supplier_name","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_type","typeLabel":"object | null"},"room_category":{"oneOf":[{"type":"object","description":"Room category classification (for example DELUXE). Null when unknown.","required":["normalized_code","supplier_code","supplier_name"],"properties":{"normalized_code":{"type":"string","enum":["ROOM","SUITE","STUDIO","APARTMENT","VILLA","DORM","STANDARD","SUPERIOR","DELUXE","EXECUTIVE","PREMIUM","FAMILY","OTHER","UNKNOWN"],"example":"SUPERIOR","description":"Unifystays classification. New values may be added; treat an unknown value as OTHER.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0.normalized_code","typeLabel":"enum\u003cstring>"},"supplier_code":{"oneOf":[{"type":"string","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0.supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0.supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0.supplier_code","typeLabel":"string | null"},"supplier_name":{"oneOf":[{"type":"string","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0.supplier_name","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.room_category","typeLabel":"object | null"},"size":{"oneOf":[{"type":"object","description":"Room size. Null when unknown.","required":["value","unit"],"properties":{"value":{"oneOf":[{"type":"number","description":"Room size number. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.0.value.oneOf.0","typeLabel":"number"},{"type":"null","description":"Room size number. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.0.value.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.0.value","typeLabel":"number | null"},"unit":{"oneOf":[{"type":"string","example":"sqm","description":"Unit of value, for example sqm. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.0.unit.oneOf.0","typeLabel":"string"},{"type":"null","example":"sqm","description":"Unit of value, for example sqm. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.0.unit.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.0.unit","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.size","typeLabel":"object | null"},"amenities":{"description":"Amenities the seller lists for the room. Empty array when none were supplied.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"2403","description":"Supplier amenity id. For UNIFYSTAYS rooms this is the amenity code (same as normalized_code).","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].id","typeLabel":"string"},"normalized_code":{"oneOf":[{"type":"string","example":"WHEELCHAIR_ACCESSIBLE","description":"Stable upper-case amenity code. New codes may be added; treat an unrecognised code as a plain labelled amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].normalized_code.oneOf.0","typeLabel":"string"},{"type":"null","example":"WHEELCHAIR_ACCESSIBLE","description":"Stable upper-case amenity code. New codes may be added; treat an unrecognised code as a plain labelled amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].normalized_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].normalized_code","typeLabel":"string | null"},"supplier_code":{"oneOf":[{"type":"string","example":"2403","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","example":"2403","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].supplier_code","typeLabel":"string | null"},"name":{"type":"string","example":"Free WiFi","description":"Amenity name to display.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].name","typeLabel":"string"},"category":{"oneOf":[{"type":"string","enum":["GENERAL","ACCESSIBILITY","OUTDOOR","KITCHEN","BATHROOM","CONNECTIVITY","SAFETY"],"description":"Grouping for display. Null when the source does not categorise the amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].category.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["GENERAL","ACCESSIBILITY","OUTDOOR","KITCHEN","BATHROOM","CONNECTIVITY","SAFETY"],"description":"Grouping for display. Null when the source does not categorise the amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX].category","typeLabel":"enum\u003cstring> | null"}},"required":["id","normalized_code","supplier_code","name","category"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.amenities","typeLabel":"object[]"},"images":{"description":"Room images from the seller. Empty array when none.","type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Image URL. Treat it as opaque; do not rewrite or strip it.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX].url","typeLabel":"string"},"caption":{"oneOf":[{"type":"string","description":"Caption when supplied. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX].caption.oneOf.0","typeLabel":"string"},{"type":"null","description":"Caption when supplied. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX].caption.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX].caption","typeLabel":"string | null"},"is_primary":{"oneOf":[{"type":"boolean","description":"True for the lead image of the room. Null when the source does not say.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX].is_primary.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True for the lead image of the room. Null when the source does not say.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX].is_primary.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX].is_primary","typeLabel":"boolean | null"}},"required":["url","caption","is_primary"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.images","typeLabel":"object[]"},"bed_configurations":{"description":"Supplier-provided bedding choices. An empty array means dependable bedding data was not supplied; it does not mean the room has no bed.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"bed_1","description":"Identifies this layout within the room.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].id","typeLabel":"string"},"bed_count":{"oneOf":[{"type":"number","example":1,"description":"Total number of beds in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bed_count.oneOf.0","typeLabel":"number"},{"type":"null","example":1,"description":"Total number of beds in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bed_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bed_count","typeLabel":"number | null"},"bedroom_count":{"oneOf":[{"type":"number","example":1,"description":"Number of bedrooms in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bedroom_count.oneOf.0","typeLabel":"number"},{"type":"null","example":1,"description":"Number of bedrooms in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bedroom_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bedroom_count","typeLabel":"number | null"},"beds":{"description":"The beds in this layout, one entry per bed type.","type":"array","items":{"type":"object","properties":{"type":{"oneOf":[{"type":"string","example":"King","description":"Bed type as the supplier named it, for display. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].type.oneOf.0","typeLabel":"string"},{"type":"null","example":"King","description":"Bed type as the supplier named it, for display. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].type","typeLabel":"string | null"},"normalized_type":{"oneOf":[{"type":"string","enum":["SINGLE","DOUBLE","QUEEN","KING","TWIN","SOFA_BED","BUNK","OTHER"],"description":"Null when the bed type is not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].normalized_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["SINGLE","DOUBLE","QUEEN","KING","TWIN","SOFA_BED","BUNK","OTHER"],"description":"Null when the bed type is not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].normalized_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].normalized_type","typeLabel":"enum\u003cstring> | null"},"supplier_type":{"oneOf":[{"type":"string","description":"The supplier's raw bed-type value. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].supplier_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"The supplier's raw bed-type value. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].supplier_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].supplier_type","typeLabel":"string | null"},"quantity":{"oneOf":[{"type":"number","example":1,"description":"Number of beds of this type. Null means unknown, not zero.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].quantity.oneOf.0","typeLabel":"number"},{"type":"null","example":1,"description":"Number of beds of this type. Null means unknown, not zero.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].quantity","typeLabel":"number | null"},"width_min_cm":{"oneOf":[{"type":"number","example":151,"description":"Minimum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].width_min_cm.oneOf.0","typeLabel":"number"},{"type":"null","example":151,"description":"Minimum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].width_min_cm.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].width_min_cm","typeLabel":"number | null"},"width_max_cm":{"oneOf":[{"type":"number","example":180,"description":"Maximum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].width_max_cm.oneOf.0","typeLabel":"number"},{"type":"null","example":180,"description":"Maximum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].width_max_cm.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX].width_max_cm","typeLabel":"number | null"}},"required":["type","normalized_type","supplier_type","quantity","width_min_cm","width_max_cm"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].beds","typeLabel":"object[]"},"bed_type_guaranteed":{"oneOf":[{"type":"boolean","description":"True only when the supplier explicitly guarantees this bedding. False means described but not guaranteed; null means unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bed_type_guaranteed.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True only when the supplier explicitly guarantees this bedding. False means described but not guaranteed; null means unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bed_type_guaranteed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].bed_type_guaranteed","typeLabel":"boolean | null"},"selected":{"oneOf":[{"type":"boolean","description":"True for the layout this offer is sold with. Null when not known, and always null on catalogue (UNIFYSTAYS) rooms, where layouts are alternatives.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].selected.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True for the layout this offer is sold with. Null when not known, and always null on catalogue (UNIFYSTAYS) rooms, where layouts are alternatives.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].selected.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX].selected","typeLabel":"boolean | null"}},"required":["id","bed_count","bedroom_count","beds","bed_type_guaranteed","selected"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_configurations","typeLabel":"object[]"},"bed_summary":{"oneOf":[{"type":"string","example":"1 king bed or 2 single beds","description":"English display text for the bedding. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_summary.oneOf.0","typeLabel":"string"},{"type":"null","example":"1 king bed or 2 single beds","description":"English display text for the bedding. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_summary.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bed_summary","typeLabel":"string | null"},"occupancy":{"oneOf":[{"type":"object","description":"Room capacity as the seller states it. Null when unknown.","required":["max_allowed"],"properties":{"max_allowed":{"type":"object","description":"The room's capacity as the seller states it. This is capacity, not the occupancy you searched for (that is in the slot's occupancy).","required":["total","adults","children","infants"],"properties":{"total":{"oneOf":[{"type":"number","example":3,"description":"Maximum guests in the room, all ages. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.total.oneOf.0","typeLabel":"number"},{"type":"null","example":3,"description":"Maximum guests in the room, all ages. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.total","typeLabel":"number | null"},"adults":{"oneOf":[{"type":"number","example":3,"description":"Maximum adults. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.adults.oneOf.0","typeLabel":"number"},{"type":"null","example":3,"description":"Maximum adults. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.adults.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.adults","typeLabel":"number | null"},"children":{"oneOf":[{"type":"number","example":2,"description":"Maximum children. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.children.oneOf.0","typeLabel":"number"},{"type":"null","example":2,"description":"Maximum children. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.children.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.children","typeLabel":"number | null"},"infants":{"oneOf":[{"type":"number","description":"Maximum infants. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.infants.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum infants. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.infants.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed.infants","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0.max_allowed","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.occupancy","typeLabel":"object | null"},"bathroom":{"oneOf":[{"type":"object","description":"Bathroom details. Null when unknown.","required":["type","count"],"properties":{"type":{"oneOf":[{"type":"string","enum":["PRIVATE","SHARED","ENSUITE"],"description":"Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.0.type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["PRIVATE","SHARED","ENSUITE"],"description":"Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.0.type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.0.type","typeLabel":"enum\u003cstring> | null"},"count":{"oneOf":[{"type":"number","description":"Number of bathrooms. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.0.count.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of bathrooms. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.0.count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.0.count","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.bathroom","typeLabel":"object | null"},"views":{"description":"Views from the room. Empty array when none were supplied.","type":"array","items":{"type":"object","properties":{"normalized_code":{"type":"string","example":"CITY","description":"Unifystays view code, for example CITY. New codes may be added; fall back to name.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].normalized_code","typeLabel":"string"},"supplier_code":{"oneOf":[{"type":"string","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].supplier_code","typeLabel":"string | null"},"name":{"type":"string","description":"View name to display.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].name","typeLabel":"string"},"partial":{"oneOf":[{"type":"boolean","description":"True when the view is known to be partial; null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].partial.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the view is known to be partial; null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].partial.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX].partial","typeLabel":"boolean | null"}},"required":["normalized_code","supplier_code","name","partial"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.views","typeLabel":"object[]"},"features":{"oneOf":[{"type":"object","description":"Boolean features (balcony, smoking, accessible...). Null when none were supplied.","required":["balcony","smoking","accessible","club_access","connecting_room"],"properties":{"balcony":{"oneOf":[{"type":"boolean","description":"True when the room has a balcony. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.balcony.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the room has a balcony. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.balcony.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.balcony","typeLabel":"boolean | null"},"smoking":{"oneOf":[{"type":"string","enum":["SMOKING","NON_SMOKING","MIXED"],"description":"MIXED means smoking status depends on the room allocated. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.smoking.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["SMOKING","NON_SMOKING","MIXED"],"description":"MIXED means smoking status depends on the room allocated. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.smoking.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.smoking","typeLabel":"enum\u003cstring> | null"},"accessible":{"oneOf":[{"type":"boolean","description":"True for an accessible (wheelchair-friendly) room. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.accessible.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True for an accessible (wheelchair-friendly) room. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.accessible.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.accessible","typeLabel":"boolean | null"},"club_access":{"oneOf":[{"type":"boolean","description":"True when the rate includes club or lounge access. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.club_access.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the rate includes club or lounge access. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.club_access.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.club_access","typeLabel":"boolean | null"},"connecting_room":{"oneOf":[{"type":"boolean","description":"True when the room connects to another. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.connecting_room.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the room connects to another. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.connecting_room.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0.connecting_room","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.features","typeLabel":"object | null"},"extra_bed":{"oneOf":[{"type":"object","description":"Extra-bed rules. Null when unknown.","required":["available","included","charge_applicable"],"properties":{"available":{"oneOf":[{"type":"boolean","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.available.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.available.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.available","typeLabel":"boolean | null"},"included":{"oneOf":[{"type":"boolean","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.included.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.included.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.included","typeLabel":"boolean | null"},"charge_applicable":{"oneOf":[{"type":"boolean","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.charge_applicable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.charge_applicable.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0.charge_applicable","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.extra_bed","typeLabel":"object | null"},"child_bed":{"oneOf":[{"type":"object","description":"Child-bed or cot rules. Null when unknown.","required":["available","included","charge_applicable"],"properties":{"available":{"oneOf":[{"type":"boolean","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.available.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.available.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.available","typeLabel":"boolean | null"},"included":{"oneOf":[{"type":"boolean","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.included.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.included.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.included","typeLabel":"boolean | null"},"charge_applicable":{"oneOf":[{"type":"boolean","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.charge_applicable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.charge_applicable.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0.charge_applicable","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room.child_bed","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].provider_room","typeLabel":"object"},"mapping_status":{"type":"string","enum":["MAPPED","AMBIGUOUS","UNMAPPED","CONFLICT"],"example":"MAPPED","description":"MAPPED when the slot is placed in a built room family; UNMAPPED for a tmp_ room that is valid for this search only. AMBIGUOUS and CONFLICT are reserved. Diagnostics only: every offer stays bookable through its booking_token.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_status","typeLabel":"enum\u003cstring>"},"mapping_details":{"type":"object","description":"How the slot was placed in a room family. Diagnostics only.","required":["source","confidence","algorithm_version","reason_codes"],"properties":{"source":{"oneOf":[{"type":"string","enum":["MANUAL","AUTO"],"description":"MANUAL when a person confirmed the placement, AUTO when it was matched automatically. Null for a tmp_ room.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.source.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["MANUAL","AUTO"],"description":"MANUAL when a person confirmed the placement, AUTO when it was matched automatically. Null for a tmp_ room.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.source.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.source","typeLabel":"enum\u003cstring> | null"},"confidence":{"oneOf":[{"type":"number","example":0.93,"description":"Reserved; currently null.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.confidence.oneOf.0","typeLabel":"number"},{"type":"null","example":0.93,"description":"Reserved; currently null.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.confidence.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.confidence","typeLabel":"number | null"},"algorithm_version":{"oneOf":[{"type":"string","example":"ROOM_RULES_V5","description":"Version label of the matching rules. Null for a tmp_ room. Diagnostics only.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.algorithm_version.oneOf.0","typeLabel":"string"},{"type":"null","example":"ROOM_RULES_V5","description":"Version label of the matching rules. Null for a tmp_ room. Diagnostics only.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.algorithm_version.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.algorithm_version","typeLabel":"string | null"},"reason_codes":{"example":["GLOBAL_CATALOGUE_ASSIGNMENT","ASSIGNMENT_STABLE","BED_EXACT"],"description":"Why the slot was placed here. Diagnostics only; the list of codes can change, do not branch on it.","type":"array","items":{"type":"string","uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.reason_codes.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details.reason_codes","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].mapping_details","typeLabel":"object"},"unifystays_room":{"oneOf":[{"type":"object","description":"Always null. Use unifystays_room_id and unifystays_family_id.","required":["provider_code","provider_hotel_id","id","name","supplier_name","description","description_format","detail_status","room_type","room_category","size","amenities","images","bed_configurations","bed_summary","occupancy","bathroom","views","features","extra_bed","child_bed"],"properties":{"provider_code":{"type":"string","example":"TRIPJACK","description":"Supplier that sells this room, for example TRIPJACK. Display as the seller name if you wish.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.provider_code","typeLabel":"string"},"provider_hotel_id":{"oneOf":[{"type":"string","example":"100000249368","description":"The supplier's ID for the hotel. Null when not supplied. Informational.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.provider_hotel_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"100000249368","description":"The supplier's ID for the hotel. Null when not supplied. Informational.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.provider_hotel_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.provider_hotel_id","typeLabel":"string | null"},"id":{"oneOf":[{"type":"string","example":"10024615989","description":"The supplier's ID for this room type. Null when the supplier sends none. Informational; do not use it as a booking key.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.id.oneOf.0","typeLabel":"string"},{"type":"null","example":"10024615989","description":"The supplier's ID for this room type. Null when the supplier sends none. Informational; do not use it as a booking key.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.id","typeLabel":"string | null"},"name":{"type":"string","example":"Aloft Studio, King","description":"Room name to display on the offer row, in the seller's words. For a catalogue room it can change as names are normalised; do not use it as an identity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.name","typeLabel":"string"},"supplier_name":{"oneOf":[{"type":"string","description":"Room name exactly as the supplier sent it. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room name exactly as the supplier sent it. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.supplier_name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","description":"Room description. Null when none. Render according to description_format.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room description. Null when none. Render according to description_format.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.description","typeLabel":"string | null"},"description_format":{"oneOf":[{"type":"string","enum":["HTML","TEXT"],"description":"HTML = sanitized HTML to render; TEXT = plain text to escape. Null when description is null.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.description_format.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["HTML","TEXT"],"description":"HTML = sanitized HTML to render; TEXT = plain text to escape. Null when description is null.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.description_format.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.description_format","typeLabel":"enum\u003cstring> | null"},"detail_status":{"type":"string","enum":["NONE","PARTIAL","COMPLETE"],"description":"NONE: only id and name are known. PARTIAL: some structured detail is present; any field may still be null. COMPLETE: reserved; not emitted today.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.detail_status","typeLabel":"enum\u003cstring>"},"room_type":{"oneOf":[{"type":"object","description":"Room type classification (for example SUITE). Null when unknown.","required":["normalized_code","supplier_code","supplier_name"],"properties":{"normalized_code":{"type":"string","enum":["ROOM","SUITE","STUDIO","APARTMENT","VILLA","DORM","STANDARD","SUPERIOR","DELUXE","EXECUTIVE","PREMIUM","FAMILY","OTHER","UNKNOWN"],"example":"SUPERIOR","description":"Unifystays classification. New values may be added; treat an unknown value as OTHER.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0.normalized_code","typeLabel":"enum\u003cstring>"},"supplier_code":{"oneOf":[{"type":"string","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0.supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0.supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0.supplier_code","typeLabel":"string | null"},"supplier_name":{"oneOf":[{"type":"string","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0.supplier_name","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_type","typeLabel":"object | null"},"room_category":{"oneOf":[{"type":"object","description":"Room category classification (for example DELUXE). Null when unknown.","required":["normalized_code","supplier_code","supplier_name"],"properties":{"normalized_code":{"type":"string","enum":["ROOM","SUITE","STUDIO","APARTMENT","VILLA","DORM","STANDARD","SUPERIOR","DELUXE","EXECUTIVE","PREMIUM","FAMILY","OTHER","UNKNOWN"],"example":"SUPERIOR","description":"Unifystays classification. New values may be added; treat an unknown value as OTHER.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0.normalized_code","typeLabel":"enum\u003cstring>"},"supplier_code":{"oneOf":[{"type":"string","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0.supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0.supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0.supplier_code","typeLabel":"string | null"},"supplier_name":{"oneOf":[{"type":"string","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier's own label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0.supplier_name","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.room_category","typeLabel":"object | null"},"size":{"oneOf":[{"type":"object","description":"Room size. Null when unknown.","required":["value","unit"],"properties":{"value":{"oneOf":[{"type":"number","description":"Room size number. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.0.value.oneOf.0","typeLabel":"number"},{"type":"null","description":"Room size number. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.0.value.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.0.value","typeLabel":"number | null"},"unit":{"oneOf":[{"type":"string","example":"sqm","description":"Unit of value, for example sqm. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.0.unit.oneOf.0","typeLabel":"string"},{"type":"null","example":"sqm","description":"Unit of value, for example sqm. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.0.unit.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.0.unit","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.size","typeLabel":"object | null"},"amenities":{"description":"Amenities the seller lists for the room. Empty array when none were supplied.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"2403","description":"Supplier amenity id. For UNIFYSTAYS rooms this is the amenity code (same as normalized_code).","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].id","typeLabel":"string"},"normalized_code":{"oneOf":[{"type":"string","example":"WHEELCHAIR_ACCESSIBLE","description":"Stable upper-case amenity code. New codes may be added; treat an unrecognised code as a plain labelled amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].normalized_code.oneOf.0","typeLabel":"string"},{"type":"null","example":"WHEELCHAIR_ACCESSIBLE","description":"Stable upper-case amenity code. New codes may be added; treat an unrecognised code as a plain labelled amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].normalized_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].normalized_code","typeLabel":"string | null"},"supplier_code":{"oneOf":[{"type":"string","example":"2403","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","example":"2403","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].supplier_code","typeLabel":"string | null"},"name":{"type":"string","example":"Free WiFi","description":"Amenity name to display.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].name","typeLabel":"string"},"category":{"oneOf":[{"type":"string","enum":["GENERAL","ACCESSIBILITY","OUTDOOR","KITCHEN","BATHROOM","CONNECTIVITY","SAFETY"],"description":"Grouping for display. Null when the source does not categorise the amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].category.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["GENERAL","ACCESSIBILITY","OUTDOOR","KITCHEN","BATHROOM","CONNECTIVITY","SAFETY"],"description":"Grouping for display. Null when the source does not categorise the amenity.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX].category","typeLabel":"enum\u003cstring> | null"}},"required":["id","normalized_code","supplier_code","name","category"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.amenities","typeLabel":"object[]"},"images":{"description":"Room images from the seller. Empty array when none.","type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Image URL. Treat it as opaque; do not rewrite or strip it.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX].url","typeLabel":"string"},"caption":{"oneOf":[{"type":"string","description":"Caption when supplied. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX].caption.oneOf.0","typeLabel":"string"},{"type":"null","description":"Caption when supplied. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX].caption.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX].caption","typeLabel":"string | null"},"is_primary":{"oneOf":[{"type":"boolean","description":"True for the lead image of the room. Null when the source does not say.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX].is_primary.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True for the lead image of the room. Null when the source does not say.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX].is_primary.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX].is_primary","typeLabel":"boolean | null"}},"required":["url","caption","is_primary"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.images","typeLabel":"object[]"},"bed_configurations":{"description":"Supplier-provided bedding choices. An empty array means dependable bedding data was not supplied; it does not mean the room has no bed.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"bed_1","description":"Identifies this layout within the room.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].id","typeLabel":"string"},"bed_count":{"oneOf":[{"type":"number","example":1,"description":"Total number of beds in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bed_count.oneOf.0","typeLabel":"number"},{"type":"null","example":1,"description":"Total number of beds in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bed_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bed_count","typeLabel":"number | null"},"bedroom_count":{"oneOf":[{"type":"number","example":1,"description":"Number of bedrooms in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bedroom_count.oneOf.0","typeLabel":"number"},{"type":"null","example":1,"description":"Number of bedrooms in this layout. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bedroom_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bedroom_count","typeLabel":"number | null"},"beds":{"description":"The beds in this layout, one entry per bed type.","type":"array","items":{"type":"object","properties":{"type":{"oneOf":[{"type":"string","example":"King","description":"Bed type as the supplier named it, for display. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].type.oneOf.0","typeLabel":"string"},{"type":"null","example":"King","description":"Bed type as the supplier named it, for display. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].type","typeLabel":"string | null"},"normalized_type":{"oneOf":[{"type":"string","enum":["SINGLE","DOUBLE","QUEEN","KING","TWIN","SOFA_BED","BUNK","OTHER"],"description":"Null when the bed type is not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].normalized_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["SINGLE","DOUBLE","QUEEN","KING","TWIN","SOFA_BED","BUNK","OTHER"],"description":"Null when the bed type is not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].normalized_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].normalized_type","typeLabel":"enum\u003cstring> | null"},"supplier_type":{"oneOf":[{"type":"string","description":"The supplier's raw bed-type value. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].supplier_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"The supplier's raw bed-type value. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].supplier_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].supplier_type","typeLabel":"string | null"},"quantity":{"oneOf":[{"type":"number","example":1,"description":"Number of beds of this type. Null means unknown, not zero.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].quantity.oneOf.0","typeLabel":"number"},{"type":"null","example":1,"description":"Number of beds of this type. Null means unknown, not zero.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].quantity","typeLabel":"number | null"},"width_min_cm":{"oneOf":[{"type":"number","example":151,"description":"Minimum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].width_min_cm.oneOf.0","typeLabel":"number"},{"type":"null","example":151,"description":"Minimum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].width_min_cm.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].width_min_cm","typeLabel":"number | null"},"width_max_cm":{"oneOf":[{"type":"number","example":180,"description":"Maximum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].width_max_cm.oneOf.0","typeLabel":"number"},{"type":"null","example":180,"description":"Maximum bed width in centimetres when stated. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].width_max_cm.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX].width_max_cm","typeLabel":"number | null"}},"required":["type","normalized_type","supplier_type","quantity","width_min_cm","width_max_cm"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].beds","typeLabel":"object[]"},"bed_type_guaranteed":{"oneOf":[{"type":"boolean","description":"True only when the supplier explicitly guarantees this bedding. False means described but not guaranteed; null means unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bed_type_guaranteed.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True only when the supplier explicitly guarantees this bedding. False means described but not guaranteed; null means unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bed_type_guaranteed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].bed_type_guaranteed","typeLabel":"boolean | null"},"selected":{"oneOf":[{"type":"boolean","description":"True for the layout this offer is sold with. Null when not known, and always null on catalogue (UNIFYSTAYS) rooms, where layouts are alternatives.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].selected.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True for the layout this offer is sold with. Null when not known, and always null on catalogue (UNIFYSTAYS) rooms, where layouts are alternatives.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].selected.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX].selected","typeLabel":"boolean | null"}},"required":["id","bed_count","bedroom_count","beds","bed_type_guaranteed","selected"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_configurations","typeLabel":"object[]"},"bed_summary":{"oneOf":[{"type":"string","example":"1 king bed or 2 single beds","description":"English display text for the bedding. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_summary.oneOf.0","typeLabel":"string"},{"type":"null","example":"1 king bed or 2 single beds","description":"English display text for the bedding. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_summary.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bed_summary","typeLabel":"string | null"},"occupancy":{"oneOf":[{"type":"object","description":"Room capacity as the seller states it. Null when unknown.","required":["max_allowed"],"properties":{"max_allowed":{"type":"object","description":"The room's capacity as the seller states it. This is capacity, not the occupancy you searched for (that is in the slot's occupancy).","required":["total","adults","children","infants"],"properties":{"total":{"oneOf":[{"type":"number","example":3,"description":"Maximum guests in the room, all ages. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.total.oneOf.0","typeLabel":"number"},{"type":"null","example":3,"description":"Maximum guests in the room, all ages. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.total","typeLabel":"number | null"},"adults":{"oneOf":[{"type":"number","example":3,"description":"Maximum adults. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.adults.oneOf.0","typeLabel":"number"},{"type":"null","example":3,"description":"Maximum adults. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.adults.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.adults","typeLabel":"number | null"},"children":{"oneOf":[{"type":"number","example":2,"description":"Maximum children. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.children.oneOf.0","typeLabel":"number"},{"type":"null","example":2,"description":"Maximum children. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.children.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.children","typeLabel":"number | null"},"infants":{"oneOf":[{"type":"number","description":"Maximum infants. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.infants.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum infants. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.infants.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed.infants","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0.max_allowed","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.occupancy","typeLabel":"object | null"},"bathroom":{"oneOf":[{"type":"object","description":"Bathroom details. Null when unknown.","required":["type","count"],"properties":{"type":{"oneOf":[{"type":"string","enum":["PRIVATE","SHARED","ENSUITE"],"description":"Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.0.type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["PRIVATE","SHARED","ENSUITE"],"description":"Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.0.type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.0.type","typeLabel":"enum\u003cstring> | null"},"count":{"oneOf":[{"type":"number","description":"Number of bathrooms. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.0.count.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of bathrooms. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.0.count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.0.count","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.bathroom","typeLabel":"object | null"},"views":{"description":"Views from the room. Empty array when none were supplied.","type":"array","items":{"type":"object","properties":{"normalized_code":{"type":"string","example":"CITY","description":"Unifystays view code, for example CITY. New codes may be added; fall back to name.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].normalized_code","typeLabel":"string"},"supplier_code":{"oneOf":[{"type":"string","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier-native code. Null for UNIFYSTAYS rooms.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].supplier_code","typeLabel":"string | null"},"name":{"type":"string","description":"View name to display.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].name","typeLabel":"string"},"partial":{"oneOf":[{"type":"boolean","description":"True when the view is known to be partial; null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].partial.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the view is known to be partial; null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].partial.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX].partial","typeLabel":"boolean | null"}},"required":["normalized_code","supplier_code","name","partial"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.views","typeLabel":"object[]"},"features":{"oneOf":[{"type":"object","description":"Boolean features (balcony, smoking, accessible...). Null when none were supplied.","required":["balcony","smoking","accessible","club_access","connecting_room"],"properties":{"balcony":{"oneOf":[{"type":"boolean","description":"True when the room has a balcony. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.balcony.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the room has a balcony. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.balcony.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.balcony","typeLabel":"boolean | null"},"smoking":{"oneOf":[{"type":"string","enum":["SMOKING","NON_SMOKING","MIXED"],"description":"MIXED means smoking status depends on the room allocated. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.smoking.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["SMOKING","NON_SMOKING","MIXED"],"description":"MIXED means smoking status depends on the room allocated. Null when not known.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.smoking.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.smoking","typeLabel":"enum\u003cstring> | null"},"accessible":{"oneOf":[{"type":"boolean","description":"True for an accessible (wheelchair-friendly) room. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.accessible.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True for an accessible (wheelchair-friendly) room. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.accessible.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.accessible","typeLabel":"boolean | null"},"club_access":{"oneOf":[{"type":"boolean","description":"True when the rate includes club or lounge access. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.club_access.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the rate includes club or lounge access. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.club_access.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.club_access","typeLabel":"boolean | null"},"connecting_room":{"oneOf":[{"type":"boolean","description":"True when the room connects to another. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.connecting_room.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the room connects to another. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.connecting_room.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0.connecting_room","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.features","typeLabel":"object | null"},"extra_bed":{"oneOf":[{"type":"object","description":"Extra-bed rules. Null when unknown.","required":["available","included","charge_applicable"],"properties":{"available":{"oneOf":[{"type":"boolean","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.available.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.available.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.available","typeLabel":"boolean | null"},"included":{"oneOf":[{"type":"boolean","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.included.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.included.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.included","typeLabel":"boolean | null"},"charge_applicable":{"oneOf":[{"type":"boolean","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.charge_applicable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.charge_applicable.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0.charge_applicable","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.extra_bed","typeLabel":"object | null"},"child_bed":{"oneOf":[{"type":"object","description":"Child-bed or cot rules. Null when unknown.","required":["available","included","charge_applicable"],"properties":{"available":{"oneOf":[{"type":"boolean","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.available.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when this bed can be added. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.available.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.available","typeLabel":"boolean | null"},"included":{"oneOf":[{"type":"boolean","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.included.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the bed is included in the price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.included.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.included","typeLabel":"boolean | null"},"charge_applicable":{"oneOf":[{"type":"boolean","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.charge_applicable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the hotel charges for the bed. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.charge_applicable.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0.charge_applicable","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0.child_bed","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room","typeLabel":"object | null"},"occupancy":{"type":"object","description":"Adults and child ages quoted for this slot, copied from your request in the same order.","required":["adults","child_ages"],"example":{"adults":2,"child_ages":[7]},"properties":{"adults":{"type":"number","example":2,"minimum":1,"description":"Number of adults in the room.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].occupancy.adults","typeLabel":"number"},"child_ages":{"example":[7],"description":"Age of each child in the room. Empty array when no children.","type":"array","items":{"type":"number","uniqueKey":"data.booked_offer.rooms.items.[INDEX].occupancy.child_ages.items.[INDEX]","typeLabel":"number"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].occupancy.child_ages","typeLabel":"number[]"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].occupancy","typeLabel":"object"},"meal_plan":{"type":"object","description":"Meal plan of this room slot.","required":["code","supplier_code","supplier_name","label","is_breakfast_included","is_child_meal_included"],"properties":{"code":{"type":"string","enum":["RO","BB","HB","FB","AI","OTHER","UNKNOWN"],"example":"BB","description":"Normalized meal plan. RO room only, BB breakfast, HB half board, FB full board, AI all inclusive, OTHER another plan (read label), UNKNOWN not stated.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.code","typeLabel":"enum\u003cstring>"},"supplier_code":{"oneOf":[{"type":"string","example":"breakfast","description":"The supplier's raw meal code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.supplier_code.oneOf.0","typeLabel":"string"},{"type":"null","example":"breakfast","description":"The supplier's raw meal code. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.supplier_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.supplier_code","typeLabel":"string | null"},"supplier_name":{"oneOf":[{"type":"string","example":"Breakfast","description":"The supplier's own meal label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.supplier_name.oneOf.0","typeLabel":"string"},{"type":"null","example":"Breakfast","description":"The supplier's own meal label. Null when not supplied.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.supplier_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.supplier_name","typeLabel":"string | null"},"label":{"type":"string","example":"Bed \u0026 Breakfast","description":"English label to display, for example Bed \u0026 Breakfast.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.label","typeLabel":"string"},"is_breakfast_included":{"type":"boolean","example":true,"description":"True when breakfast is included in the price.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.is_breakfast_included","typeLabel":"boolean"},"is_child_meal_included":{"oneOf":[{"type":"boolean","description":"True when meals for children are included. Null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.is_child_meal_included.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when meals for children are included. Null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.is_child_meal_included.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan.is_child_meal_included","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].meal_plan","typeLabel":"object"},"inclusions":{"description":"Inclusions of this room slot (for example free WiFi). Empty array when none.","type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"free_wifi","description":"Machine code of the inclusion (for example free_wifi). New codes can appear; treat unknown codes as plain labels.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].inclusions.items.[INDEX].code","typeLabel":"string"},"label":{"type":"string","example":"Free WiFi","description":"Inclusion text to show to the guest.","isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].inclusions.items.[INDEX].label","typeLabel":"string"}},"required":["code","label"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].inclusions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms.items.[INDEX].inclusions","typeLabel":"object[]"},"unifystays_family_id":{"oneOf":[{"type":"string","example":"4120552","description":"The family this slot's room belongs to (equals unifystays_room_id for a family-level seller). A tmp_ id is valid for this search only.","uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_family_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"4120552","description":"The family this slot's room belongs to (equals unifystays_room_id for a family-level seller). A tmp_ id is valid for this search only.","uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_family_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_family_id","typeLabel":"string | null"},"unifystays_room_id":{"oneOf":[{"type":"string","example":"4120552","description":"Id of the room object this slot belongs to (data.unifystays_rooms, or rooms[] on the provider_options event). A tmp_ id is valid for this search only. Display identity only; book with booking_token and room_allocation_id.","uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"4120552","description":"Id of the room object this slot belongs to (data.unifystays_rooms, or rooms[] on the provider_options event). A tmp_ id is valid for this search only. Display identity only; book with booking_token and room_allocation_id.","uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.rooms.items.[INDEX].unifystays_room_id","typeLabel":"string | null"}},"required":["room_allocation_id","provider_room","mapping_status","mapping_details","unifystays_room","occupancy","meal_plan","inclusions"],"uniqueKey":"data.booked_offer.rooms.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.rooms","typeLabel":"object[]"},"lifecycle":{"type":"object","description":"Validity, availability and booking modes of the offer.","required":["stage","quoted_at","expires_at","prebook_required","price_guaranteed","availability","rooms_remaining","on_request","available_booking_modes","hold_allowed","hold_deadline","post_booking_actions"],"properties":{"stage":{"type":"string","enum":["ROOMS","PREBOOK"],"description":"Where the offer is in the flow: ROOMS (from room search) or PREBOOK (rechecked at prebook).","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.stage","typeLabel":"enum\u003cstring>"},"quoted_at":{"type":"string","description":"When Unifystays obtained this offer from the supplier (ISO 8601, UTC).","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.quoted_at","typeLabel":"string"},"expires_at":{"type":"string","description":"When the offer stops being valid (ISO 8601, UTC): 15 minutes after quoted_at, or earlier when the supplier sets an earlier expiry. Do not send a booking_token after this time; search again.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.expires_at","typeLabel":"string"},"prebook_required":{"type":"boolean","description":"True when you must call Prebook before booking. Always true for a rooms-stage offer.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.prebook_required","typeLabel":"boolean"},"price_guaranteed":{"type":"boolean","description":"True only when the supplier guarantees this price. False at room search: the price and availability are confirmed by prebook.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.price_guaranteed","typeLabel":"boolean"},"availability":{"type":"string","enum":["AVAILABLE","SOLD_OUT","ON_REQUEST","UNKNOWN"],"description":"AVAILABLE, SOLD_OUT, ON_REQUEST (the supplier confirms after booking), or UNKNOWN.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.availability","typeLabel":"enum\u003cstring>"},"rooms_remaining":{"oneOf":[{"type":"object","description":"Rooms left at this rate when the supplier says so, for urgency messages. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.rooms_remaining.oneOf.0","typeLabel":"object"},{"type":"null","description":"Rooms left at this rate when the supplier says so, for urgency messages. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.rooms_remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.rooms_remaining","typeLabel":"object | null"},"on_request":{"type":"boolean","description":"True when the booking is not instantly confirmed and the supplier confirms later.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.on_request","typeLabel":"boolean"},"available_booking_modes":{"type":"array","description":"Booking modes certified for this exact offer. Rooms-stage offers normally expose INSTANT only; prebook may add HOLD.","items":{"type":"string","enum":["INSTANT","HOLD"],"uniqueKey":"data.booked_offer.lifecycle.available_booking_modes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.available_booking_modes","typeLabel":"enum\u003cstring>[]"},"hold_allowed":{"type":"boolean","description":"True when the offer can be held without payment. Always false at room search; prebook can report true.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_allowed","typeLabel":"boolean"},"hold_deadline":{"oneOf":[{"type":"object","description":"Time by which a held booking must be confirmed. Null when no hold is possible.","required":["local_datetime","timezone","utc_datetime"],"properties":{"local_datetime":{"type":"string","example":"2026-05-18T23:59:59","description":"Date and time exactly as the supplier stated it, without an offset (ISO 8601, for example 2026-05-18T23:59:59). It is wall-clock time in the zone named by timezone. Show this to the guest.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0.local_datetime","typeLabel":"string"},"timezone":{"oneOf":[{"type":"string","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0.timezone.oneOf.0","typeLabel":"string"},{"type":"null","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0.timezone","typeLabel":"string | null"},"utc_datetime":{"oneOf":[{"type":"string","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0.utc_datetime.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0.utc_datetime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0.utc_datetime","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.hold_deadline","typeLabel":"object | null"},"post_booking_actions":{"type":"array","description":"Post-booking actions supported by this provider for the offer. An empty array means no provider API is certified for those actions.","items":{"type":"string","enum":["STATUS","CANCEL","CONFIRM_HOLD"],"uniqueKey":"data.booked_offer.lifecycle.post_booking_actions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle.post_booking_actions","typeLabel":"enum\u003cstring>[]"}},"isRequired":true,"uniqueKey":"data.booked_offer.lifecycle","typeLabel":"object"},"pricing":{"type":"object","description":"The price of the whole offer. native_ledger is authoritative (supplier currency, integer minor units). usd_ledger is the same lines converted to USD, or null when a rate is missing.","required":["price_basis","breakdown_status","native_ledger","usd_ledger","display_currency","display_ledger","conversion"],"properties":{"price_basis":{"type":"string","enum":["NET","GROSS","COMMISSIONABLE","UNKNOWN"],"description":"Commercial nature of the supplier's price as the supplier declares it: NET, GROSS, COMMISSIONABLE or UNKNOWN. It does not change how you read the ledger; use commercial for the supplier's own reference values.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.price_basis","typeLabel":"enum\u003cstring>"},"breakdown_status":{"type":"string","enum":["COMPLETE","PARTIAL","NOT_PROVIDED","ESTIMATED"],"description":"How complete the itemisation is. COMPLETE: all charges are itemised. PARTIAL: some charges may not be itemised. NOT_PROVIDED: the supplier gave no breakdown. ESTIMATED: part of the breakdown is estimated. The totals are reliable in every case.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.breakdown_status","typeLabel":"enum\u003cstring>"},"native_ledger":{"type":"object","description":"Authoritative supplier/property obligations in their native currencies. Its lines already reconcile to its totals and must not be added to commercial fields.","required":["primary_currency","totals","lines"],"properties":{"primary_currency":{"type":"string","example":"USD","description":"Main currency of the ledger (ISO 4217). Offers priced in several currencies have one totals entry per currency.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.primary_currency","typeLabel":"string"},"totals":{"description":"One total per currency present in the lines. Usually exactly one.","type":"array","items":{"type":"object","properties":{"currency":{"type":"string","example":"USD","description":"ISO 4217 currency of this total.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Decimal places of the currency.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].currency_exponent","typeLabel":"number"},"payable_to_supplier":{"type":"object","description":"Sum of the lines with collection_location SUPPLIER: the amount settled through the supplier for this booking.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_to_supplier.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_to_supplier.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_to_supplier.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_to_supplier","typeLabel":"object"},"payable_at_property":{"type":"object","description":"Sum of the lines with collection_location PROPERTY: charges the guest pays at the hotel. Show them to the guest as 'pay at hotel'.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_at_property.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_at_property.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_at_property.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].payable_at_property","typeLabel":"object"},"total":{"type":"object","description":"payable_to_supplier plus payable_at_property: everything the guest ends up paying for the stay, split by who collects it.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].total.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].total.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].total.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX].total","typeLabel":"object"}},"required":["currency","currency_exponent","payable_to_supplier","payable_at_property","total"],"uniqueKey":"data.booked_offer.pricing.native_ledger.totals.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.totals","typeLabel":"object[]"},"lines":{"description":"Complete payable ledger. Accommodation is represented by room_rate lines; no separate base price exists.","type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["room_rate","tax","fee","adjustment","other"],"description":"Type of charge: room_rate (the accommodation; exactly one per ledger), tax, fee, adjustment, other.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].category","typeLabel":"enum\u003cstring>"},"code":{"type":"string","example":"city_tax","description":"Supplier's code for the charge, lower case (for example city_tax). Informational.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].code","typeLabel":"string"},"normalized_code":{"type":"string","example":"CITY_TAX","description":"Unifystays code for the charge (for example CITY_TAX, RESORT_FEE, SERVICE_FEE, VAT, ROOM_RATE, OTHER_TAX). New codes can appear; fall back to description for unknown ones.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].normalized_code","typeLabel":"string"},"description":{"type":"string","example":"City tax","description":"Charge name to show to the guest, in English.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].description","typeLabel":"string"},"amount":{"type":"object","description":"Amount of the line in minor units, in the ledger's currency. Lines already reconcile to the ledger totals: do not add them to anything else.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].amount.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].amount","typeLabel":"object"},"collection_location":{"type":"string","enum":["SUPPLIER","PROPERTY"],"description":"Who collects the line. SUPPLIER: paid through the supplier (counts in payable_to_supplier). PROPERTY: the guest pays the hotel on arrival or departure (counts in payable_at_property).","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].collection_location","typeLabel":"enum\u003cstring>"},"included_in_quoted_total":{"type":"boolean","example":false,"description":"True when the supplier's quoted rate already contains this line, so it is not an extra charge. False when it is charged on top of the quoted rate (typically taxes and fees collected at the property).","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].included_in_quoted_total","typeLabel":"boolean"},"scope":{"type":"object","description":"What the amount covers (whole stay, per room, per person...).","required":["basis","room_allocation_id","guest_type","quantity"],"properties":{"basis":{"type":"string","enum":["PER_STAY","PER_ROOM","PER_ROOM_PER_NIGHT","PER_PERSON","PER_PERSON_PER_NIGHT"],"description":"What the amount covers. PER_STAY: the whole stay. PER_ROOM / PER_ROOM_PER_NIGHT: each room (per night). PER_PERSON / PER_PERSON_PER_NIGHT: each guest (per night). The amount is already the total for that scope.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.basis","typeLabel":"enum\u003cstring>"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.room_allocation_id","typeLabel":"string | null"},"guest_type":{"oneOf":[{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.guest_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.guest_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.guest_type","typeLabel":"enum\u003cstring> | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope.quantity","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].scope","typeLabel":"object"},"mandatory":{"oneOf":[{"type":"boolean","description":"True when the charge is compulsory, false when optional, null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].mandatory.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the charge is compulsory, false when optional, null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].mandatory.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].mandatory","typeLabel":"boolean | null"},"source_amount":{"type":"object","description":"USD ledger only: the original amount in the supplier currency before conversion.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].source_amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].source_amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].source_amount.currency_exponent","typeLabel":"number"}},"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].source_amount","typeLabel":"object"},"is_estimated":{"type":"boolean","description":"USD ledger only: true when the line was converted from another currency with an exchange rate (so the USD value is an estimate), false when the source was already USD.","uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX].is_estimated","typeLabel":"boolean"}},"required":["category","code","normalized_code","description","amount","collection_location","included_in_quoted_total","scope","mandatory"],"uniqueKey":"data.booked_offer.pricing.native_ledger.lines.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger.lines","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.native_ledger","typeLabel":"object"},"usd_ledger":{"oneOf":[{"type":"object","description":"The same logical native-ledger lines converted completely to USD. Null when any required FX rate is unavailable.","required":["primary_currency","totals","lines"],"properties":{"primary_currency":{"type":"string","example":"USD","description":"Main currency of the ledger (ISO 4217). Offers priced in several currencies have one totals entry per currency.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.primary_currency","typeLabel":"string"},"totals":{"description":"One total per currency present in the lines. Usually exactly one.","type":"array","items":{"type":"object","properties":{"currency":{"type":"string","example":"USD","description":"ISO 4217 currency of this total.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Decimal places of the currency.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].currency_exponent","typeLabel":"number"},"payable_to_supplier":{"type":"object","description":"Sum of the lines with collection_location SUPPLIER: the amount settled through the supplier for this booking.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier","typeLabel":"object"},"payable_at_property":{"type":"object","description":"Sum of the lines with collection_location PROPERTY: charges the guest pays at the hotel. Show them to the guest as 'pay at hotel'.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_at_property.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_at_property.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_at_property.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].payable_at_property","typeLabel":"object"},"total":{"type":"object","description":"payable_to_supplier plus payable_at_property: everything the guest ends up paying for the stay, split by who collects it.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].total.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].total.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].total.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX].total","typeLabel":"object"}},"required":["currency","currency_exponent","payable_to_supplier","payable_at_property","total"],"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.totals","typeLabel":"object[]"},"lines":{"description":"Complete payable ledger. Accommodation is represented by room_rate lines; no separate base price exists.","type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["room_rate","tax","fee","adjustment","other"],"description":"Type of charge: room_rate (the accommodation; exactly one per ledger), tax, fee, adjustment, other.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].category","typeLabel":"enum\u003cstring>"},"code":{"type":"string","example":"city_tax","description":"Supplier's code for the charge, lower case (for example city_tax). Informational.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].code","typeLabel":"string"},"normalized_code":{"type":"string","example":"CITY_TAX","description":"Unifystays code for the charge (for example CITY_TAX, RESORT_FEE, SERVICE_FEE, VAT, ROOM_RATE, OTHER_TAX). New codes can appear; fall back to description for unknown ones.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].normalized_code","typeLabel":"string"},"description":{"type":"string","example":"City tax","description":"Charge name to show to the guest, in English.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].description","typeLabel":"string"},"amount":{"type":"object","description":"Amount of the line in minor units, in the ledger's currency. Lines already reconcile to the ledger totals: do not add them to anything else.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].amount.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].amount","typeLabel":"object"},"collection_location":{"type":"string","enum":["SUPPLIER","PROPERTY"],"description":"Who collects the line. SUPPLIER: paid through the supplier (counts in payable_to_supplier). PROPERTY: the guest pays the hotel on arrival or departure (counts in payable_at_property).","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].collection_location","typeLabel":"enum\u003cstring>"},"included_in_quoted_total":{"type":"boolean","example":false,"description":"True when the supplier's quoted rate already contains this line, so it is not an extra charge. False when it is charged on top of the quoted rate (typically taxes and fees collected at the property).","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].included_in_quoted_total","typeLabel":"boolean"},"scope":{"type":"object","description":"What the amount covers (whole stay, per room, per person...).","required":["basis","room_allocation_id","guest_type","quantity"],"properties":{"basis":{"type":"string","enum":["PER_STAY","PER_ROOM","PER_ROOM_PER_NIGHT","PER_PERSON","PER_PERSON_PER_NIGHT"],"description":"What the amount covers. PER_STAY: the whole stay. PER_ROOM / PER_ROOM_PER_NIGHT: each room (per night). PER_PERSON / PER_PERSON_PER_NIGHT: each guest (per night). The amount is already the total for that scope.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.basis","typeLabel":"enum\u003cstring>"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.room_allocation_id","typeLabel":"string | null"},"guest_type":{"oneOf":[{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.guest_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.guest_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.guest_type","typeLabel":"enum\u003cstring> | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope.quantity","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].scope","typeLabel":"object"},"mandatory":{"oneOf":[{"type":"boolean","description":"True when the charge is compulsory, false when optional, null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].mandatory.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the charge is compulsory, false when optional, null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].mandatory.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].mandatory","typeLabel":"boolean | null"},"source_amount":{"type":"object","description":"USD ledger only: the original amount in the supplier currency before conversion.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].source_amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].source_amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].source_amount.currency_exponent","typeLabel":"number"}},"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].source_amount","typeLabel":"object"},"is_estimated":{"type":"boolean","description":"USD ledger only: true when the line was converted from another currency with an exchange rate (so the USD value is an estimate), false when the source was already USD.","uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX].is_estimated","typeLabel":"boolean"}},"required":["category","code","normalized_code","description","amount","collection_location","included_in_quoted_total","scope","mandatory"],"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0.lines","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.usd_ledger","typeLabel":"object | null"},"display_currency":{"type":"string","example":"EUR","description":"Currency of display_ledger: the organization's display currency (USD unless the organization chose another, or sent the X-Unifystays-Currency header).","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_currency","typeLabel":"string"},"display_ledger":{"oneOf":[{"type":"object","description":"The same logical native-ledger lines converted completely to display_currency. Identical to usd_ledger when display_currency is USD. Null when any required FX rate is unavailable.","required":["primary_currency","totals","lines"],"properties":{"primary_currency":{"type":"string","example":"USD","description":"Main currency of the ledger (ISO 4217). Offers priced in several currencies have one totals entry per currency.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.primary_currency","typeLabel":"string"},"totals":{"description":"One total per currency present in the lines. Usually exactly one.","type":"array","items":{"type":"object","properties":{"currency":{"type":"string","example":"USD","description":"ISO 4217 currency of this total.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Decimal places of the currency.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].currency_exponent","typeLabel":"number"},"payable_to_supplier":{"type":"object","description":"Sum of the lines with collection_location SUPPLIER: the amount settled through the supplier for this booking.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_to_supplier","typeLabel":"object"},"payable_at_property":{"type":"object","description":"Sum of the lines with collection_location PROPERTY: charges the guest pays at the hotel. Show them to the guest as 'pay at hotel'.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_at_property.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_at_property.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_at_property.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].payable_at_property","typeLabel":"object"},"total":{"type":"object","description":"payable_to_supplier plus payable_at_property: everything the guest ends up paying for the stay, split by who collects it.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].total.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].total.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].total.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX].total","typeLabel":"object"}},"required":["currency","currency_exponent","payable_to_supplier","payable_at_property","total"],"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.totals","typeLabel":"object[]"},"lines":{"description":"Complete payable ledger. Accommodation is represented by room_rate lines; no separate base price exists.","type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["room_rate","tax","fee","adjustment","other"],"description":"Type of charge: room_rate (the accommodation; exactly one per ledger), tax, fee, adjustment, other.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].category","typeLabel":"enum\u003cstring>"},"code":{"type":"string","example":"city_tax","description":"Supplier's code for the charge, lower case (for example city_tax). Informational.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].code","typeLabel":"string"},"normalized_code":{"type":"string","example":"CITY_TAX","description":"Unifystays code for the charge (for example CITY_TAX, RESORT_FEE, SERVICE_FEE, VAT, ROOM_RATE, OTHER_TAX). New codes can appear; fall back to description for unknown ones.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].normalized_code","typeLabel":"string"},"description":{"type":"string","example":"City tax","description":"Charge name to show to the guest, in English.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].description","typeLabel":"string"},"amount":{"type":"object","description":"Amount of the line in minor units, in the ledger's currency. Lines already reconcile to the ledger totals: do not add them to anything else.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].amount.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].amount","typeLabel":"object"},"collection_location":{"type":"string","enum":["SUPPLIER","PROPERTY"],"description":"Who collects the line. SUPPLIER: paid through the supplier (counts in payable_to_supplier). PROPERTY: the guest pays the hotel on arrival or departure (counts in payable_at_property).","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].collection_location","typeLabel":"enum\u003cstring>"},"included_in_quoted_total":{"type":"boolean","example":false,"description":"True when the supplier's quoted rate already contains this line, so it is not an extra charge. False when it is charged on top of the quoted rate (typically taxes and fees collected at the property).","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].included_in_quoted_total","typeLabel":"boolean"},"scope":{"type":"object","description":"What the amount covers (whole stay, per room, per person...).","required":["basis","room_allocation_id","guest_type","quantity"],"properties":{"basis":{"type":"string","enum":["PER_STAY","PER_ROOM","PER_ROOM_PER_NIGHT","PER_PERSON","PER_PERSON_PER_NIGHT"],"description":"What the amount covers. PER_STAY: the whole stay. PER_ROOM / PER_ROOM_PER_NIGHT: each room (per night). PER_PERSON / PER_PERSON_PER_NIGHT: each guest (per night). The amount is already the total for that scope.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.basis","typeLabel":"enum\u003cstring>"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.room_allocation_id","typeLabel":"string | null"},"guest_type":{"oneOf":[{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.guest_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.guest_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.guest_type","typeLabel":"enum\u003cstring> | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope.quantity","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].scope","typeLabel":"object"},"mandatory":{"oneOf":[{"type":"boolean","description":"True when the charge is compulsory, false when optional, null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].mandatory.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the charge is compulsory, false when optional, null when the supplier does not say.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].mandatory.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].mandatory","typeLabel":"boolean | null"},"source_amount":{"type":"object","description":"USD ledger only: the original amount in the supplier currency before conversion.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].source_amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].source_amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].source_amount.currency_exponent","typeLabel":"number"}},"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].source_amount","typeLabel":"object"},"is_estimated":{"type":"boolean","description":"USD ledger only: true when the line was converted from another currency with an exchange rate (so the USD value is an estimate), false when the source was already USD.","uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX].is_estimated","typeLabel":"boolean"}},"required":["category","code","normalized_code","description","amount","collection_location","included_in_quoted_total","scope","mandatory"],"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0.lines","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.display_ledger","typeLabel":"object | null"},"conversion":{"type":"object","description":"FX rates used for usd_ledger and display_ledger.","required":["status","missing_currencies","rates"],"properties":{"status":{"type":"string","enum":["AVAILABLE","UNAVAILABLE"],"description":"AVAILABLE when every currency could be converted and usd_ledger and display_ledger are present. UNAVAILABLE when a rate is missing and both are null.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.status","typeLabel":"enum\u003cstring>"},"missing_currencies":{"description":"Currencies without a rate, including the display currency when its rate is the one missing. Empty when status is AVAILABLE.","type":"array","items":{"type":"string","uniqueKey":"data.booked_offer.pricing.conversion.missing_currencies.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.missing_currencies","typeLabel":"string[]"},"rates":{"description":"Rates used for both usd_ledger and display_ledger: for each native currency, the pair to USD and, when different, the pair to the display currency. Empty when status is UNAVAILABLE.","type":"array","items":{"type":"object","properties":{"base_currency":{"type":"string","example":"AED","description":"Currency that was converted.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.rates.items.[INDEX].base_currency","typeLabel":"string"},"quote_currency":{"type":"string","example":"USD","description":"Currency the base currency was converted into: USD, or the organization's display currency; see PricingDto.display_currency.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.rates.items.[INDEX].quote_currency","typeLabel":"string"},"rate":{"type":"number","example":0.272294,"description":"Units of quote_currency for one unit of base_currency, used to build usd_ledger or display_ledger.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.rates.items.[INDEX].rate","typeLabel":"number"},"rate_updated_at":{"oneOf":[{"type":"string","description":"When the rate was last refreshed (ISO 8601). Null for USD or when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.rates.items.[INDEX].rate_updated_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"When the rate was last refreshed (ISO 8601). Null for USD or when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.rates.items.[INDEX].rate_updated_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.rates.items.[INDEX].rate_updated_at","typeLabel":"string | null"}},"required":["base_currency","quote_currency","rate","rate_updated_at"],"uniqueKey":"data.booked_offer.pricing.conversion.rates.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion.rates","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing.conversion","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.booked_offer.pricing","typeLabel":"object"},"payment":{"type":"object","description":"Who pays, where and when.","required":["settlement_channel","payer","supplier_payment_type","payable_at","collection_timing","requires_card_data","requires_cvc","requires_vcc","security_deposit"],"properties":{"settlement_channel":{"type":"string","enum":["SUPPLIER_ACCOUNT","PROPERTY"],"description":"How the supplier is paid. SUPPLIER_ACCOUNT: through your account with the supplier. PROPERTY: the guest pays the hotel.","isRequired":true,"uniqueKey":"data.booked_offer.payment.settlement_channel","typeLabel":"enum\u003cstring>"},"payer":{"type":"string","enum":["AGENCY","GUEST","UNKNOWN"],"description":"Who pays. AGENCY: you (the agency). GUEST: the guest pays directly. UNKNOWN.","isRequired":true,"uniqueKey":"data.booked_offer.payment.payer","typeLabel":"enum\u003cstring>"},"supplier_payment_type":{"type":"string","description":"The supplier's own payment label (for example deposit or agency_credit). Informational; do not branch on it.","isRequired":true,"uniqueKey":"data.booked_offer.payment.supplier_payment_type","typeLabel":"string"},"payable_at":{"type":"string","enum":["SUPPLIER","PROPERTY"],"description":"Where the main amount is collected: SUPPLIER or PROPERTY. Charges collected at the property are marked in the pricing ledger.","isRequired":true,"uniqueKey":"data.booked_offer.payment.payable_at","typeLabel":"enum\u003cstring>"},"collection_timing":{"type":"string","enum":["AT_BOOKING","BEFORE_CHECK_IN","AT_CHECK_IN","AT_CHECK_OUT","ON_INVOICE","UNKNOWN"],"description":"When the money is collected: AT_BOOKING, BEFORE_CHECK_IN, AT_CHECK_IN, AT_CHECK_OUT, ON_INVOICE, or UNKNOWN.","isRequired":true,"uniqueKey":"data.booked_offer.payment.collection_timing","typeLabel":"enum\u003cstring>"},"requires_card_data":{"type":"boolean","description":"True when the guest's card details are needed. Offers that require a card are not returned, so this is false on offers you receive.","isRequired":true,"uniqueKey":"data.booked_offer.payment.requires_card_data","typeLabel":"boolean"},"requires_cvc":{"type":"boolean","description":"True when a card security code is needed. False on offers you receive.","isRequired":true,"uniqueKey":"data.booked_offer.payment.requires_cvc","typeLabel":"boolean"},"requires_vcc":{"type":"boolean","description":"True when a virtual card must be issued to the supplier. False on offers you receive.","isRequired":true,"uniqueKey":"data.booked_offer.payment.requires_vcc","typeLabel":"boolean"},"security_deposit":{"oneOf":[{"type":"object","description":"Refundable or non-refundable security/guarantee deposit when explicitly supplied. This is distinct from an opaque supplier payment type named deposit.","required":["amount","display_amount","refundable"],"properties":{"amount":{"type":"object","description":"Deposit amount.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.amount.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.amount","typeLabel":"object"},"display_amount":{"oneOf":[{"type":"object","description":"The deposit converted to the display currency (pricing.display_currency). Null when no exchange rate is available; never a made-up zero.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.display_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.display_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.display_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.display_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.display_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.display_amount","typeLabel":"object | null"},"refundable":{"oneOf":[{"type":"boolean","description":"True when the deposit is refunded; null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.refundable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the deposit is refunded; null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.refundable.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0.refundable","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.payment.security_deposit","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.payment","typeLabel":"object"},"commercial":{"type":"object","description":"Supplier reference values (net, gross, commission...). Never add these to the ledger.","required":["supplier_charge_total","display_total","gross_total","net_total","commission_total","agent_reward","recommended_selling_total","minimum_selling_total","original_total","discount_total","vat"],"properties":{"supplier_charge_total":{"oneOf":[{"type":"object","description":"Amount the supplier expects to debit or invoice to the agency. Informational settlement evidence; never add it to a pricing ledger.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.supplier_charge_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.supplier_charge_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.supplier_charge_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.supplier_charge_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.supplier_charge_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.supplier_charge_total","typeLabel":"object | null"},"display_total":{"oneOf":[{"type":"object","description":"Supplier-provided amount intended for display; not an additional charge.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.display_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.display_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.display_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.display_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.display_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.display_total","typeLabel":"object | null"},"gross_total":{"oneOf":[{"type":"object","description":"Supplier-stated gross amount before commission deduction.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.gross_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.gross_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.gross_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.gross_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.gross_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.gross_total","typeLabel":"object | null"},"net_total":{"oneOf":[{"type":"object","description":"Supplier-stated net agency cost.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.net_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.net_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.net_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.net_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.net_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.net_total","typeLabel":"object | null"},"commission_total":{"oneOf":[{"type":"object","description":"Supplier-stated agency commission; not derived by Unifystays.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.commission_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.commission_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.commission_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.commission_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.commission_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.commission_total","typeLabel":"object | null"},"agent_reward":{"oneOf":[{"type":"object","description":"Separate supplier reward, cashback, or incentive.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.agent_reward.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.agent_reward.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.agent_reward.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.agent_reward.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.agent_reward.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.agent_reward","typeLabel":"object | null"},"recommended_selling_total":{"oneOf":[{"type":"object","description":"Supplier-recommended customer selling price.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.recommended_selling_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.recommended_selling_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.recommended_selling_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.recommended_selling_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.recommended_selling_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.recommended_selling_total","typeLabel":"object | null"},"minimum_selling_total":{"oneOf":[{"type":"object","description":"Supplier-enforced minimum customer selling price.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.minimum_selling_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.minimum_selling_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.minimum_selling_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.minimum_selling_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.minimum_selling_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.minimum_selling_total","typeLabel":"object | null"},"original_total":{"oneOf":[{"type":"object","description":"Supplier price before discount or promotion.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.original_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.original_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.original_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.original_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.original_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.original_total","typeLabel":"object | null"},"discount_total":{"oneOf":[{"type":"object","description":"Supplier-stated discount amount.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.discount_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.discount_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.discount_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.discount_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.discount_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.discount_total","typeLabel":"object | null"},"vat":{"oneOf":[{"type":"object","description":"VAT details as the supplier states them. Null when not supplied.","required":["included","applied","amount","rate"],"properties":{"included":{"oneOf":[{"type":"boolean","description":"True when VAT is included in the quoted price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.included.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when VAT is included in the quoted price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.included.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.included","typeLabel":"boolean | null"},"applied":{"oneOf":[{"type":"boolean","description":"True when VAT applies. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.applied.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when VAT applies. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.applied.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.applied","typeLabel":"boolean | null"},"amount":{"oneOf":[{"type":"object","description":"VAT amount when the supplier states it. Null otherwise.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.amount","typeLabel":"object | null"},"rate":{"oneOf":[{"type":"number","description":"VAT rate in percent when stated. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"VAT rate in percent when stated. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0.rate","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial.vat","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial","typeLabel":"object"},"commercial_display":{"oneOf":[{"type":"object","description":"The same supplier reference values as `commercial`, with every amount converted to the display currency (pricing.display_currency). An amount with no exchange rate is null. Null when `commercial` is hidden. Never add these to the ledger.","required":["supplier_charge_total","display_total","gross_total","net_total","commission_total","agent_reward","recommended_selling_total","minimum_selling_total","original_total","discount_total","vat"],"properties":{"supplier_charge_total":{"oneOf":[{"type":"object","description":"Amount the supplier expects to debit or invoice to the agency. Informational settlement evidence; never add it to a pricing ledger.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.supplier_charge_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.supplier_charge_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.supplier_charge_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.supplier_charge_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.supplier_charge_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.supplier_charge_total","typeLabel":"object | null"},"display_total":{"oneOf":[{"type":"object","description":"Supplier-provided amount intended for display; not an additional charge.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.display_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.display_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.display_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.display_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.display_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.display_total","typeLabel":"object | null"},"gross_total":{"oneOf":[{"type":"object","description":"Supplier-stated gross amount before commission deduction.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.gross_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.gross_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.gross_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.gross_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.gross_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.gross_total","typeLabel":"object | null"},"net_total":{"oneOf":[{"type":"object","description":"Supplier-stated net agency cost.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.net_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.net_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.net_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.net_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.net_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.net_total","typeLabel":"object | null"},"commission_total":{"oneOf":[{"type":"object","description":"Supplier-stated agency commission; not derived by Unifystays.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.commission_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.commission_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.commission_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.commission_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.commission_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.commission_total","typeLabel":"object | null"},"agent_reward":{"oneOf":[{"type":"object","description":"Separate supplier reward, cashback, or incentive.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.agent_reward.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.agent_reward.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.agent_reward.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.agent_reward.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.agent_reward.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.agent_reward","typeLabel":"object | null"},"recommended_selling_total":{"oneOf":[{"type":"object","description":"Supplier-recommended customer selling price.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.recommended_selling_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.recommended_selling_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.recommended_selling_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.recommended_selling_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.recommended_selling_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.recommended_selling_total","typeLabel":"object | null"},"minimum_selling_total":{"oneOf":[{"type":"object","description":"Supplier-enforced minimum customer selling price.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.minimum_selling_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.minimum_selling_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.minimum_selling_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.minimum_selling_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.minimum_selling_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.minimum_selling_total","typeLabel":"object | null"},"original_total":{"oneOf":[{"type":"object","description":"Supplier price before discount or promotion.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.original_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.original_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.original_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.original_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.original_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.original_total","typeLabel":"object | null"},"discount_total":{"oneOf":[{"type":"object","description":"Supplier-stated discount amount.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.discount_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.discount_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.discount_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.discount_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.discount_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.discount_total","typeLabel":"object | null"},"vat":{"oneOf":[{"type":"object","description":"VAT details as the supplier states them. Null when not supplied.","required":["included","applied","amount","rate"],"properties":{"included":{"oneOf":[{"type":"boolean","description":"True when VAT is included in the quoted price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.included.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when VAT is included in the quoted price. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.included.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.included","typeLabel":"boolean | null"},"applied":{"oneOf":[{"type":"boolean","description":"True when VAT applies. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.applied.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when VAT applies. Null when unknown.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.applied.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.applied","typeLabel":"boolean | null"},"amount":{"oneOf":[{"type":"object","description":"VAT amount when the supplier states it. Null otherwise.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.amount","typeLabel":"object | null"},"rate":{"oneOf":[{"type":"number","description":"VAT rate in percent when stated. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"VAT rate in percent when stated. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0.rate","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0.vat","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.commercial_display.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.commercial_display","typeLabel":"object | null"},"booking_requirements":{"description":"Guest and booking fields that will be needed at booking. Plan your checkout form from this list.","type":"array","items":{"type":"object","properties":{"requirement_id":{"type":"string","example":"br_first_name_all_guests_2","description":"Opaque offer-bound id that must be echoed in a booking guest answer.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].requirement_id","typeLabel":"string"},"code":{"type":"string","example":"FIRST_NAME","description":"Stable normalized field code. New certified codes may be added without changing the booking request schema.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].code","typeLabel":"string"},"label":{"type":"string","example":"First name","description":"English label for the field.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].label","typeLabel":"string"},"value_type":{"type":"string","enum":["TEXT","EMAIL","PHONE","DATE","ENUM","COUNTRY_CODE","IDENTIFIER"],"description":"Kind of value to collect: TEXT, EMAIL, PHONE, DATE (YYYY-MM-DD), ENUM (pick from allowed_values), COUNTRY_CODE (ISO 3166-1 alpha-2) or IDENTIFIER (document number).","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].value_type","typeLabel":"enum\u003cstring>"},"scope":{"type":"string","enum":["LEAD_GUEST","ALL_GUESTS","ADULT","CHILD","INFANT"],"description":"Guests to whom this requirement applies. LEAD_GUEST: the first guest only. ALL_GUESTS: every guest. ADULT, CHILD, INFANT: guests of that type. room_allocation_ids can narrow it to specific rooms.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].scope","typeLabel":"enum\u003cstring>"},"room_allocation_ids":{"description":"Rooms the requirement applies to. Empty means all rooms in the offer.","type":"array","items":{"type":"string","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].room_allocation_ids.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].room_allocation_ids","typeLabel":"string[]"},"required":{"type":"boolean","description":"True when the value must be provided at booking.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].required","typeLabel":"boolean"},"allowed_values":{"description":"The values to offer when value_type is ENUM. Empty for free input.","type":"array","items":{"type":"string","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].allowed_values.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].allowed_values","typeLabel":"string[]"},"description":{"oneOf":[{"type":"string","description":"Extra explanation to show next to the field. Null when none.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Extra explanation to show next to the field. Null when none.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].description","typeLabel":"string | null"},"constraints":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"min_length":{"oneOf":[{"type":"number","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.min_length.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.min_length.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.min_length","typeLabel":"number | null"},"max_length":{"oneOf":[{"type":"number","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.max_length.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.max_length.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.max_length","typeLabel":"number | null"},"pattern":{"oneOf":[{"type":"string","description":"ECMAScript regular expression the whole value must match. Compile with `pattern_flags`.","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.pattern.oneOf.0","typeLabel":"string"},{"type":"null","description":"ECMAScript regular expression the whole value must match. Compile with `pattern_flags`.","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.pattern.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.pattern","typeLabel":"string | null"},"pattern_flags":{"oneOf":[{"type":"string","example":"u","description":"RegExp flags for `pattern` (e.g. \"u\" for Unicode property classes such as \\p{L}).","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.pattern_flags.oneOf.0","typeLabel":"string"},{"type":"null","example":"u","description":"RegExp flags for `pattern` (e.g. \"u\" for Unicode property classes such as \\p{L}).","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.pattern_flags.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.pattern_flags","typeLabel":"string | null"},"min_age":{"oneOf":[{"type":"number","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.min_age.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.min_age.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.min_age","typeLabel":"number | null"},"max_age":{"oneOf":[{"type":"number","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.max_age.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.max_age.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0.max_age","typeLabel":"number | null"}},"description":"Validation hints for the value: length range, a regular expression (pattern with pattern_flags), and an age range for guests. Null when there are no hints. Validate in your form; the booking API checks them again.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":false,"properties":{"min_length":{"oneOf":[{"type":"number"},{"type":"null"}]},"max_length":{"oneOf":[{"type":"number"},{"type":"null"}]},"pattern":{"oneOf":[{"type":"string","description":"ECMAScript regular expression the whole value must match. Compile with `pattern_flags`."},{"type":"null","description":"ECMAScript regular expression the whole value must match. Compile with `pattern_flags`."}]},"pattern_flags":{"oneOf":[{"type":"string","example":"u","description":"RegExp flags for `pattern` (e.g. \"u\" for Unicode property classes such as \\p{L})."},{"type":"null","example":"u","description":"RegExp flags for `pattern` (e.g. \"u\" for Unicode property classes such as \\p{L})."}]},"min_age":{"oneOf":[{"type":"number"},{"type":"null"}]},"max_age":{"oneOf":[{"type":"number"},{"type":"null"}]}},"description":"Validation hints for the value: length range, a regular expression (pattern with pattern_flags), and an age range for guests. Null when there are no hints. Validate in your form; the booking API checks them again.","isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX].constraints","typeLabel":"object | null"}},"required":["requirement_id","code","label","value_type","scope","room_allocation_ids","required","allowed_values","description","constraints"],"uniqueKey":"data.booked_offer.booking_requirements.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.booking_requirements","typeLabel":"object[]"},"cancellation":{"type":"object","description":"Cancellation policy to show to the guest.","required":["refundability","policy_stage","free_cancellation_until","policy_text","penalties","no_show"],"properties":{"refundability":{"type":"string","enum":["REFUNDABLE","PARTIALLY_REFUNDABLE","NON_REFUNDABLE","UNKNOWN"],"description":"REFUNDABLE: cancellable with no charge at some point. PARTIALLY_REFUNDABLE: cancellable but some penalty windows charge money. NON_REFUNDABLE: no refund. UNKNOWN: reserved for when the supplier gives no policy.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.refundability","typeLabel":"enum\u003cstring>"},"policy_stage":{"type":"string","enum":["INDICATIVE","RECHECKED","FINAL"],"description":"How firm the policy is. INDICATIVE: from the room search, can still change. RECHECKED: confirmed by the supplier at prebook. FINAL: the supplier's final terms. Show the policy from prebook before the guest pays.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.policy_stage","typeLabel":"enum\u003cstring>"},"free_cancellation_until":{"oneOf":[{"type":"object","description":"Last moment the guest can cancel without a charge. Null when there is no free-cancellation period (or the supplier did not state one). Display it with the time zone.","required":["local_datetime","timezone","utc_datetime"],"properties":{"local_datetime":{"type":"string","example":"2026-05-18T23:59:59","description":"Date and time exactly as the supplier stated it, without an offset (ISO 8601, for example 2026-05-18T23:59:59). It is wall-clock time in the zone named by timezone. Show this to the guest.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0.local_datetime","typeLabel":"string"},"timezone":{"oneOf":[{"type":"string","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0.timezone.oneOf.0","typeLabel":"string"},{"type":"null","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0.timezone","typeLabel":"string | null"},"utc_datetime":{"oneOf":[{"type":"string","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0.utc_datetime.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0.utc_datetime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0.utc_datetime","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.free_cancellation_until","typeLabel":"object | null"},"policy_text":{"type":"string","description":"Ready-to-show English summary generated from the fields (for example Non-refundable; cancellation penalties apply.). The penalties list is the precise rule.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.policy_text","typeLabel":"string"},"penalties":{"description":"Penalty windows in the order the supplier sent them. Render them as a timeline: from, to and the charge. Empty when the supplier sent no windows.","type":"array","items":{"type":"object","properties":{"from":{"type":"object","description":"Start of this penalty window (inclusive).","required":["local_datetime","timezone","utc_datetime"],"properties":{"local_datetime":{"type":"string","example":"2026-05-18T23:59:59","description":"Date and time exactly as the supplier stated it, without an offset (ISO 8601, for example 2026-05-18T23:59:59). It is wall-clock time in the zone named by timezone. Show this to the guest.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from.local_datetime","typeLabel":"string"},"timezone":{"oneOf":[{"type":"string","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from.timezone.oneOf.0","typeLabel":"string"},{"type":"null","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from.timezone","typeLabel":"string | null"},"utc_datetime":{"oneOf":[{"type":"string","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from.utc_datetime.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from.utc_datetime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from.utc_datetime","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].from","typeLabel":"object"},"to":{"oneOf":[{"type":"object","description":"Exclusive end of this penalty window when supplied. Null means the rule runs until check-in or beyond, not that the policy is incomplete.","required":["local_datetime","timezone","utc_datetime"],"properties":{"local_datetime":{"type":"string","example":"2026-05-18T23:59:59","description":"Date and time exactly as the supplier stated it, without an offset (ISO 8601, for example 2026-05-18T23:59:59). It is wall-clock time in the zone named by timezone. Show this to the guest.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0.local_datetime","typeLabel":"string"},"timezone":{"oneOf":[{"type":"string","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0.timezone.oneOf.0","typeLabel":"string"},{"type":"null","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0.timezone","typeLabel":"string | null"},"utc_datetime":{"oneOf":[{"type":"string","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0.utc_datetime.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0.utc_datetime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0.utc_datetime","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].to","typeLabel":"object | null"},"charge_basis":{"type":"string","enum":["FIXED_AMOUNT","PERCENTAGE","NIGHTS","FULL_STAY","UNKNOWN"],"description":"How the penalty is calculated. FIXED_AMOUNT: a fixed sum (native_amount). PERCENTAGE: percentage of the basis in calculation_basis. NIGHTS: number_of_nights nights. FULL_STAY: the whole stay. UNKNOWN: the supplier gave no usable rule; show description.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].charge_basis","typeLabel":"enum\u003cstring>"},"percentage":{"oneOf":[{"type":"number","description":"Percentage charged when charge_basis is PERCENTAGE (for example 50 means 50%). Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].percentage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Percentage charged when charge_basis is PERCENTAGE (for example 50 means 50%). Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].percentage.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].percentage","typeLabel":"number | null"},"number_of_nights":{"oneOf":[{"type":"number","description":"Number of nights charged when charge_basis is NIGHTS. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].number_of_nights.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of nights charged when charge_basis is NIGHTS. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].number_of_nights.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].number_of_nights","typeLabel":"number | null"},"native_amount":{"oneOf":[{"type":"object","description":"Penalty amount in the supplier currency when it can be computed. 0 means a free-cancellation window. Null when the amount cannot be computed (for example a percentage of a basis other than the total); then show percentage / number_of_nights and description.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].native_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].native_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].native_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].native_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].native_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].native_amount","typeLabel":"object | null"},"usd_amount":{"oneOf":[{"type":"object","description":"native_amount converted to USD. Null when native_amount is null or no exchange rate is available.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].usd_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].usd_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].usd_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].usd_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].usd_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].usd_amount","typeLabel":"object | null"},"display_amount":{"oneOf":[{"type":"object","description":"native_amount converted to the display currency. Null when native_amount is null or no exchange rate is available. Same as usd_amount when the display currency is USD.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].display_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].display_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].display_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].display_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].display_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].display_amount","typeLabel":"object | null"},"conversion_status":{"type":"string","enum":["AVAILABLE","UNAVAILABLE"],"description":"AVAILABLE when usd_amount is filled; UNAVAILABLE when it is null.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].conversion_status","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Short label for the window: Free cancellation window (amount 0) or Cancellation penalty. Do not parse.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].description","typeLabel":"string"},"calculation_basis":{"type":"string","enum":["TOTAL","ROOM_RATE","FIRST_NIGHT","NIGHTLY_RATE","SUPPLIER_DEFINED","UNKNOWN"],"description":"What a percentage or nights charge is applied to. TOTAL: the total payable to the supplier. ROOM_RATE, FIRST_NIGHT, NIGHTLY_RATE: that part of the rate. SUPPLIER_DEFINED or UNKNOWN: the supplier did not say exactly.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].calculation_basis","typeLabel":"enum\u003cstring>"},"scope":{"type":"object","description":"What the penalty covers. Usually PER_STAY with all other fields null.","required":["basis","room_allocation_id","guest_type","quantity"],"properties":{"basis":{"type":"string","enum":["PER_STAY","PER_ROOM","PER_ROOM_PER_NIGHT","PER_PERSON","PER_PERSON_PER_NIGHT"],"description":"What the amount covers. PER_STAY: the whole stay. PER_ROOM / PER_ROOM_PER_NIGHT: each room (per night). PER_PERSON / PER_PERSON_PER_NIGHT: each guest (per night). The amount is already the total for that scope.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.basis","typeLabel":"enum\u003cstring>"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.room_allocation_id","typeLabel":"string | null"},"guest_type":{"oneOf":[{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.guest_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.guest_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.guest_type","typeLabel":"enum\u003cstring> | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope.quantity","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX].scope","typeLabel":"object"}},"required":["from","to","charge_basis","percentage","number_of_nights","native_amount","usd_amount","display_amount","conversion_status","description","calculation_basis","scope"],"uniqueKey":"data.booked_offer.cancellation.penalties.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.penalties","typeLabel":"object[]"},"no_show":{"oneOf":[{"type":"object","description":"No-show terms when the supplier states them. Null when none were supplied; that does not mean a no-show is free.","required":["trigger","applies_from_local_time","penalty"],"properties":{"trigger":{"type":"string","enum":["NO_SHOW"],"description":"Always NO_SHOW.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.trigger","typeLabel":"enum\u003cstring>"},"applies_from_local_time":{"oneOf":[{"type":"string","example":"18:00:00","description":"Supplier-local no-show cutoff time when supplied. No date or timezone is inferred.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.applies_from_local_time.oneOf.0","typeLabel":"string"},{"type":"null","example":"18:00:00","description":"Supplier-local no-show cutoff time when supplied. No date or timezone is inferred.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.applies_from_local_time.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.applies_from_local_time","typeLabel":"string | null"},"penalty":{"oneOf":[{"type":"object","description":"Charge triggered by a no-show. Null means no monetary no-show charge was supplied; it never means a zero charge was inferred.","required":["charge_basis","native_amount","usd_amount","display_amount","conversion_status","calculation_basis","scope"],"properties":{"charge_basis":{"type":"string","enum":["FIXED_AMOUNT","UNKNOWN"],"description":"FIXED_AMOUNT when native_amount is filled; UNKNOWN otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.charge_basis","typeLabel":"enum\u003cstring>"},"native_amount":{"oneOf":[{"type":"object","description":"No-show charge in the supplier currency.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount","typeLabel":"object | null"},"usd_amount":{"oneOf":[{"type":"object","description":"No-show charge converted to USD. Null when no exchange rate is available.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount","typeLabel":"object | null"},"display_amount":{"oneOf":[{"type":"object","description":"native_amount converted to the display currency. Null when native_amount is null or no exchange rate is available. Same as usd_amount when the display currency is USD.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount","typeLabel":"object | null"},"conversion_status":{"type":"string","enum":["AVAILABLE","UNAVAILABLE","NOT_REQUIRED"],"description":"AVAILABLE when usd_amount is filled, UNAVAILABLE when no rate was available, NOT_REQUIRED when there is nothing to convert.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.conversion_status","typeLabel":"enum\u003cstring>"},"calculation_basis":{"type":"string","enum":["SUPPLIER_DEFINED"],"description":"Always SUPPLIER_DEFINED: the amount is whatever the supplier states.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.calculation_basis","typeLabel":"enum\u003cstring>"},"scope":{"type":"object","description":"What the no-show charge covers; always the whole stay.","required":["basis","room_allocation_id","guest_type","quantity"],"properties":{"basis":{"type":"string","enum":["PER_STAY","PER_ROOM","PER_ROOM_PER_NIGHT","PER_PERSON","PER_PERSON_PER_NIGHT"],"description":"What the amount covers. PER_STAY: the whole stay. PER_ROOM / PER_ROOM_PER_NIGHT: each room (per night). PER_PERSON / PER_PERSON_PER_NIGHT: each guest (per night). The amount is already the total for that scope.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.basis","typeLabel":"enum\u003cstring>"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.room_allocation_id","typeLabel":"string | null"},"guest_type":{"oneOf":[{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.guest_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.guest_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.guest_type","typeLabel":"enum\u003cstring> | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.quantity","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0.scope","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0.penalty","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.cancellation.no_show","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer.cancellation","typeLabel":"object"},"nightly_prices":{"description":"Per-night price breakdown when the supplier gives one. Empty array when not supplied. Display only; the ledger is authoritative.","type":"array","items":{"type":"object","properties":{"date":{"oneOf":[{"type":"string","description":"Night date (YYYY-MM-DD). Null when the supplier does not date the night.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].date.oneOf.0","typeLabel":"string"},{"type":"null","description":"Night date (YYYY-MM-DD). Null when the supplier does not date the night.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].date","typeLabel":"string | null"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the amount belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the amount belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].room_allocation_id","typeLabel":"string | null"},"amount":{"type":"object","description":"Amount for the night (integer minor units with currency_exponent). It is a display breakdown; the ledger is the authoritative price.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].amount.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].amount.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].amount.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].amount","typeLabel":"object"},"display_amount":{"oneOf":[{"type":"object","description":"The night's amount converted to the display currency (pricing.display_currency). Null when no exchange rate is available.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].display_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].display_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].display_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].display_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].display_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].display_amount","typeLabel":"object | null"},"scope":{"type":"string","enum":["OFFER","ROOM_ALLOCATION"],"description":"OFFER when the amount covers all rooms, ROOM_ALLOCATION when it covers one room slot.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].scope","typeLabel":"enum\u003cstring>"},"component":{"type":"string","enum":["ROOM_RATE","PAYABLE_TO_SUPPLIER","UNKNOWN"],"description":"Meaning of the nightly amount. PAYABLE_TO_SUPPLIER excludes separately collected property charges.","isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX].component","typeLabel":"enum\u003cstring>"}},"required":["date","room_allocation_id","amount","display_amount","scope","component"],"uniqueKey":"data.booked_offer.nightly_prices.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.nightly_prices","typeLabel":"object[]"},"promotions":{"description":"Supplier promotions applied to the rate. Empty array when none.","type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Promotion code from the supplier.","isRequired":true,"uniqueKey":"data.booked_offer.promotions.items.[INDEX].code","typeLabel":"string"},"title":{"type":"string","description":"Promotion title to show.","isRequired":true,"uniqueKey":"data.booked_offer.promotions.items.[INDEX].title","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Promotion detail. Null when none.","isRequired":true,"uniqueKey":"data.booked_offer.promotions.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Promotion detail. Null when none.","isRequired":true,"uniqueKey":"data.booked_offer.promotions.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.promotions.items.[INDEX].description","typeLabel":"string | null"}},"required":["code","title","description"],"uniqueKey":"data.booked_offer.promotions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.promotions","typeLabel":"object[]"},"benefits":{"description":"Extra benefits included in the rate (for example late check-out). Empty array when none.","type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"free_wifi","description":"Machine code of the inclusion (for example free_wifi). New codes can appear; treat unknown codes as plain labels.","isRequired":true,"uniqueKey":"data.booked_offer.benefits.items.[INDEX].code","typeLabel":"string"},"label":{"type":"string","example":"Free WiFi","description":"Inclusion text to show to the guest.","isRequired":true,"uniqueKey":"data.booked_offer.benefits.items.[INDEX].label","typeLabel":"string"}},"required":["code","label"],"uniqueKey":"data.booked_offer.benefits.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.benefits","typeLabel":"object[]"},"notices":{"description":"Notices for the guest. Always show those with must_display true.","type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Notice code. Informational.","isRequired":true,"uniqueKey":"data.booked_offer.notices.items.[INDEX].code","typeLabel":"string"},"severity":{"type":"string","enum":["INFO","WARNING","REQUIRED"],"description":"INFO: helpful. WARNING: may affect the guest's decision. REQUIRED: a condition the supplier requires the guest to be told.","isRequired":true,"uniqueKey":"data.booked_offer.notices.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"scope":{"type":"string","enum":["OFFER","ROOM","PAYMENT","CANCELLATION","HOTEL"],"description":"What the notice is about: the whole OFFER, a ROOM, the PAYMENT, the CANCELLATION policy, or the HOTEL.","isRequired":true,"uniqueKey":"data.booked_offer.notices.items.[INDEX].scope","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"Notice text to show, in the supplier's wording.","isRequired":true,"uniqueKey":"data.booked_offer.notices.items.[INDEX].text","typeLabel":"string"},"must_display":{"type":"boolean","description":"True when you must show the text to the guest before they book. Always honour it.","isRequired":true,"uniqueKey":"data.booked_offer.notices.items.[INDEX].must_display","typeLabel":"boolean"}},"required":["code","severity","scope","text","must_display"],"uniqueKey":"data.booked_offer.notices.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.booked_offer.notices","typeLabel":"object[]"},"supplier_terms_and_conditions":{"oneOf":[{"type":"object","description":"Full supplier terms. Null when none. You decide where to show them (for example a link at checkout).","required":["type","format","text"],"properties":{"type":{"type":"string","enum":["SUPPLIER_TERMS_AND_CONDITIONS"],"description":"Always SUPPLIER_TERMS_AND_CONDITIONS.","isRequired":true,"uniqueKey":"data.booked_offer.supplier_terms_and_conditions.oneOf.0.type","typeLabel":"enum\u003cstring>"},"format":{"type":"string","enum":["PLAIN_TEXT","HTML"],"description":"PLAIN_TEXT (escape it) or HTML (already sanitised; render it).","isRequired":true,"uniqueKey":"data.booked_offer.supplier_terms_and_conditions.oneOf.0.format","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"Complete supplier-authored terms. Consumers decide whether and where to display them.","isRequired":true,"uniqueKey":"data.booked_offer.supplier_terms_and_conditions.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.booked_offer.supplier_terms_and_conditions.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.booked_offer.supplier_terms_and_conditions.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.booked_offer.supplier_terms_and_conditions","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.booked_offer","typeLabel":"object"},"guests":{"description":"All guests of the booking with the answers you submitted. Link each guest to a room with room_allocation_id.","type":"array","items":{"type":"object","properties":{"guest_id":{"type":"string","example":"guest_1","description":"The guest_id you sent in the booking request.","isRequired":true,"uniqueKey":"data.guests.items.[INDEX].guest_id","typeLabel":"string"},"guest_type":{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest category as submitted at booking time.","isRequired":true,"uniqueKey":"data.guests.items.[INDEX].guest_type","typeLabel":"enum\u003cstring>"},"is_lead_guest":{"type":"boolean","example":true,"description":"True for the single lead guest of the booking.","isRequired":true,"uniqueKey":"data.guests.items.[INDEX].is_lead_guest","typeLabel":"boolean"},"room_allocation_id":{"type":"string","example":"ra_957cff0ac25243f29eb43bc32eb82136","description":"The room this guest is assigned to. Matches a room_allocation_id in booked_offer.rooms.","isRequired":true,"uniqueKey":"data.guests.items.[INDEX].room_allocation_id","typeLabel":"string"},"answers":{"description":"The answers submitted for this guest, one per booking requirement.","type":"array","items":{"type":"object","properties":{"requirement_id":{"type":"string","example":"br_first_name_all_guests_2","description":"The requirement_id you answered at booking time, copied from the offer's booking_requirements.","isRequired":true,"uniqueKey":"data.guests.items.[INDEX].answers.items.[INDEX].requirement_id","typeLabel":"string"},"code":{"type":"string","example":"FIRST_NAME","description":"What the answer is (for example FIRST_NAME, LAST_NAME). OTHER when the requirement has no specific code.","isRequired":true,"uniqueKey":"data.guests.items.[INDEX].answers.items.[INDEX].code","typeLabel":"string"},"value":{"type":"string","example":"Meera","description":"The value you submitted for this requirement.","isRequired":true,"uniqueKey":"data.guests.items.[INDEX].answers.items.[INDEX].value","typeLabel":"string"}},"required":["requirement_id","code","value"],"uniqueKey":"data.guests.items.[INDEX].answers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.guests.items.[INDEX].answers","typeLabel":"object[]"}},"required":["guest_id","guest_type","is_lead_guest","room_allocation_id","answers"],"uniqueKey":"data.guests.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.guests","typeLabel":"object[]"},"references":{"type":"object","description":"The identifiers for this booking at Unifystays and the supplier.","required":["booking_id","client_reference","supplier_booking_id","supplier_booking_code","hotel_confirmation_number"],"properties":{"booking_id":{"type":"string","example":"ubk_eGQ0dW9uV1Vi","description":"Unifystays booking ID. Use it as your key for this booking.","isRequired":true,"uniqueKey":"data.references.booking_id","typeLabel":"string"},"client_reference":{"oneOf":[{"type":"string","example":"US-1776255131000","description":"Reference string Unifystays generated for this booking and sent to the supplier, when one exists. Null otherwise. It is not your own order reference; key on booking_id.","isRequired":true,"uniqueKey":"data.references.client_reference.oneOf.0","typeLabel":"string"},{"type":"null","example":"US-1776255131000","description":"Reference string Unifystays generated for this booking and sent to the supplier, when one exists. Null otherwise. It is not your own order reference; key on booking_id.","isRequired":true,"uniqueKey":"data.references.client_reference.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.references.client_reference","typeLabel":"string | null"},"supplier_booking_id":{"oneOf":[{"type":"string","example":"TJ202487947162","description":"Supplier's primary booking/order ID, used to locate the reservation at the supplier. Null until the supplier assigns one. Quote it to support; show it to the guest only as the supplier reference.","isRequired":true,"uniqueKey":"data.references.supplier_booking_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"TJ202487947162","description":"Supplier's primary booking/order ID, used to locate the reservation at the supplier. Null until the supplier assigns one. Quote it to support; show it to the guest only as the supplier reference.","isRequired":true,"uniqueKey":"data.references.supplier_booking_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.references.supplier_booking_id","typeLabel":"string | null"},"supplier_booking_code":{"oneOf":[{"type":"string","example":"REZ6A5A81E9","description":"Supplier's distinct secondary booking code. Null when the supplier returns only one reference. Not interchangeable with supplier_booking_id.","isRequired":true,"uniqueKey":"data.references.supplier_booking_code.oneOf.0","typeLabel":"string"},{"type":"null","example":"REZ6A5A81E9","description":"Supplier's distinct secondary booking code. Null when the supplier returns only one reference. Not interchangeable with supplier_booking_id.","isRequired":true,"uniqueKey":"data.references.supplier_booking_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.references.supplier_booking_code","typeLabel":"string | null"},"hotel_confirmation_number":{"oneOf":[{"type":"string","example":"HCN-482910","description":"The hotel's own confirmation number. Null until the property confirms; it can arrive after the booking is CONFIRMED, so re-read this endpoint. Show it to the guest as the hotel confirmation number when present.","isRequired":true,"uniqueKey":"data.references.hotel_confirmation_number.oneOf.0","typeLabel":"string"},{"type":"null","example":"HCN-482910","description":"The hotel's own confirmation number. Null until the property confirms; it can arrive after the booking is CONFIRMED, so re-read this endpoint. Show it to the guest as the hotel confirmation number when present.","isRequired":true,"uniqueKey":"data.references.hotel_confirmation_number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.references.hotel_confirmation_number","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.references","typeLabel":"object"},"lifecycle":{"type":"object","description":"Status and next steps. Same meaning as the fields on Get Booking Status.","required":["status","is_terminal","created_at","updated_at","completed_at","processing_reason","action_required","available_actions","review_expires_at","hold_deadline_at"],"properties":{"status":{"type":"string","enum":["AWAITING_REVIEW","PROCESSING","CONFIRMED","ON_HOLD","FAILED","CANCELLATION_PENDING","CANCELLED"],"example":"CONFIRMED","description":"Booking status. AWAITING_REVIEW: waiting for approval in the portal, nothing booked. PROCESSING: being booked with the supplier. CONFIRMED: booked. ON_HOLD: held, needs confirming before hold_deadline_at. FAILED: not booked. CANCELLATION_PENDING: cancellation requested, supplier still processing. CANCELLED: cancelled.","isRequired":true,"uniqueKey":"data.lifecycle.status","typeLabel":"enum\u003cstring>"},"is_terminal":{"type":"boolean","example":true,"description":"True for CONFIRMED, ON_HOLD, FAILED and CANCELLED. False for AWAITING_REVIEW, PROCESSING and CANCELLATION_PENDING. A terminal booking can still change: CONFIRMED can be cancelled, ON_HOLD can be confirmed.","isRequired":true,"uniqueKey":"data.lifecycle.is_terminal","typeLabel":"boolean"},"created_at":{"type":"string","example":"2026-04-15T12:12:11.000Z","description":"When the booking was created (ISO 8601, UTC).","isRequired":true,"uniqueKey":"data.lifecycle.created_at","typeLabel":"string"},"updated_at":{"type":"string","example":"2026-04-15T12:15:11.000Z","description":"When the booking last changed (ISO 8601, UTC).","isRequired":true,"uniqueKey":"data.lifecycle.updated_at","typeLabel":"string"},"completed_at":{"oneOf":[{"type":"string","example":"2026-04-15T12:15:11.000Z","description":"When the booking reached its final outcome (ISO 8601, UTC). Null while it is still in progress.","isRequired":true,"uniqueKey":"data.lifecycle.completed_at.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-04-15T12:15:11.000Z","description":"When the booking reached its final outcome (ISO 8601, UTC). Null while it is still in progress.","isRequired":true,"uniqueKey":"data.lifecycle.completed_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.lifecycle.completed_at","typeLabel":"string | null"},"processing_reason":{"oneOf":[{"type":"string","example":null,"enum":["SUPPLIER_CONFIRMATION_PENDING","HOTEL_CONFIRMATION_PENDING","CANCELLATION_PENDING","RECONCILIATION_REQUIRED","HOLD_CONFIRMATION_REQUIRED","MANUAL_REVIEW_REQUIRED","MANAGED_FULFILLMENT_PENDING"],"description":"Why the booking is not simply done, or null when nothing is pending. SUPPLIER_CONFIRMATION_PENDING: waiting for the supplier. HOTEL_CONFIRMATION_PENDING: supplier confirmed, hotel number not yet received. CANCELLATION_PENDING: supplier is processing a cancellation. RECONCILIATION_REQUIRED: the outcome is uncertain and Unifystays is verifying it; contact support if it persists. HOLD_CONFIRMATION_REQUIRED: the booking is on hold and needs confirming. MANUAL_REVIEW_REQUIRED: waiting for approval in the portal. MANAGED_FULFILLMENT_PENDING: recorded, not yet submitted to a supplier.","isRequired":true,"uniqueKey":"data.lifecycle.processing_reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","example":null,"enum":["SUPPLIER_CONFIRMATION_PENDING","HOTEL_CONFIRMATION_PENDING","CANCELLATION_PENDING","RECONCILIATION_REQUIRED","HOLD_CONFIRMATION_REQUIRED","MANUAL_REVIEW_REQUIRED","MANAGED_FULFILLMENT_PENDING"],"description":"Why the booking is not simply done, or null when nothing is pending. SUPPLIER_CONFIRMATION_PENDING: waiting for the supplier. HOTEL_CONFIRMATION_PENDING: supplier confirmed, hotel number not yet received. CANCELLATION_PENDING: supplier is processing a cancellation. RECONCILIATION_REQUIRED: the outcome is uncertain and Unifystays is verifying it; contact support if it persists. HOLD_CONFIRMATION_REQUIRED: the booking is on hold and needs confirming. MANUAL_REVIEW_REQUIRED: waiting for approval in the portal. MANAGED_FULFILLMENT_PENDING: recorded, not yet submitted to a supplier.","isRequired":true,"uniqueKey":"data.lifecycle.processing_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.lifecycle.processing_reason","typeLabel":"enum\u003cstring> | null"},"action_required":{"type":"boolean","example":false,"description":"True when a person has to act: available_actions contains CONFIRM_HOLD, CONTACT_SUPPORT or REVIEW_BOOKING. False when waiting is enough.","isRequired":true,"uniqueKey":"data.lifecycle.action_required","typeLabel":"boolean"},"available_actions":{"type":"array","example":["GET_DETAILS","CANCEL"],"description":"What you can do now. GET_STATUS: keep polling. GET_DETAILS: details are readable. CANCEL: quote and cancel. CONFIRM_HOLD: call Confirm Hold. CONTACT_SUPPORT: the outcome needs Unifystays support. REVIEW_BOOKING: approve or reject in the portal.","items":{"type":"string","enum":["GET_STATUS","GET_DETAILS","CANCEL","CONFIRM_HOLD","CONTACT_SUPPORT","REVIEW_BOOKING"],"uniqueKey":"data.lifecycle.available_actions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"data.lifecycle.available_actions","typeLabel":"enum\u003cstring>[]"},"review_expires_at":{"oneOf":[{"type":"string","example":null,"description":"While AWAITING_REVIEW: the deadline of the current supplier quote (ISO 8601, UTC). Null otherwise.","isRequired":true,"uniqueKey":"data.lifecycle.review_expires_at.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"description":"While AWAITING_REVIEW: the deadline of the current supplier quote (ISO 8601, UTC). Null otherwise.","isRequired":true,"uniqueKey":"data.lifecycle.review_expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.lifecycle.review_expires_at","typeLabel":"string | null"},"hold_deadline_at":{"oneOf":[{"type":"string","example":null,"description":"While ON_HOLD: the time by which you must confirm the hold (ISO 8601). Null otherwise.","isRequired":true,"uniqueKey":"data.lifecycle.hold_deadline_at.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"description":"While ON_HOLD: the time by which you must confirm the hold (ISO 8601). Null otherwise.","isRequired":true,"uniqueKey":"data.lifecycle.hold_deadline_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.lifecycle.hold_deadline_at","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.lifecycle","typeLabel":"object"},"voucher":{"type":"object","description":"What you need to produce a voucher.","required":["available","url","hotel_confirmation_number","note"],"properties":{"available":{"type":"boolean","example":true,"description":"True when the booking is CONFIRMED and the hotel confirmation number is known. Use it to decide whether to show a ready voucher; if false, show the booking as confirmed with the hotel number still to come.","isRequired":true,"uniqueKey":"data.voucher.available","typeLabel":"boolean"},"url":{"oneOf":[{"type":"string","example":null,"description":"Link to a hosted voucher. Currently always null; build the voucher from references and booked_offer.","isRequired":true,"uniqueKey":"data.voucher.url.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"description":"Link to a hosted voucher. Currently always null; build the voucher from references and booked_offer.","isRequired":true,"uniqueKey":"data.voucher.url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.voucher.url","typeLabel":"string | null"},"hotel_confirmation_number":{"oneOf":[{"type":"string","example":"HCN-482910","description":"The hotel confirmation number to print on the voucher. Same value as references.hotel_confirmation_number. Null until the hotel confirms.","isRequired":true,"uniqueKey":"data.voucher.hotel_confirmation_number.oneOf.0","typeLabel":"string"},{"type":"null","example":"HCN-482910","description":"The hotel confirmation number to print on the voucher. Same value as references.hotel_confirmation_number. Null until the hotel confirms.","isRequired":true,"uniqueKey":"data.voucher.hotel_confirmation_number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.voucher.hotel_confirmation_number","typeLabel":"string | null"},"note":{"oneOf":[{"type":"string","example":null,"description":"Free-text note from the hotel or supplier about the confirmation, when one was supplied. Null otherwise.","isRequired":true,"uniqueKey":"data.voucher.note.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"description":"Free-text note from the hotel or supplier about the confirmation, when one was supplied. Null otherwise.","isRequired":true,"uniqueKey":"data.voucher.note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.voucher.note","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.voucher","typeLabel":"object"},"current_cancellation":{"type":"object","description":"The cancellation policy in force now. Once the supplier reports the final policy after booking, it replaces the one in booked_offer (policy_stage FINAL). To cancel, always request a cancellation quote; do not compute the charge from this policy yourself.","required":["refundability","policy_stage","free_cancellation_until","policy_text","penalties","no_show"],"properties":{"refundability":{"type":"string","enum":["REFUNDABLE","PARTIALLY_REFUNDABLE","NON_REFUNDABLE","UNKNOWN"],"description":"REFUNDABLE: cancellable with no charge at some point. PARTIALLY_REFUNDABLE: cancellable but some penalty windows charge money. NON_REFUNDABLE: no refund. UNKNOWN: reserved for when the supplier gives no policy.","isRequired":true,"uniqueKey":"data.current_cancellation.refundability","typeLabel":"enum\u003cstring>"},"policy_stage":{"type":"string","enum":["INDICATIVE","RECHECKED","FINAL"],"description":"How firm the policy is. INDICATIVE: from the room search, can still change. RECHECKED: confirmed by the supplier at prebook. FINAL: the supplier's final terms. Show the policy from prebook before the guest pays.","isRequired":true,"uniqueKey":"data.current_cancellation.policy_stage","typeLabel":"enum\u003cstring>"},"free_cancellation_until":{"oneOf":[{"type":"object","description":"Last moment the guest can cancel without a charge. Null when there is no free-cancellation period (or the supplier did not state one). Display it with the time zone.","required":["local_datetime","timezone","utc_datetime"],"properties":{"local_datetime":{"type":"string","example":"2026-05-18T23:59:59","description":"Date and time exactly as the supplier stated it, without an offset (ISO 8601, for example 2026-05-18T23:59:59). It is wall-clock time in the zone named by timezone. Show this to the guest.","isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0.local_datetime","typeLabel":"string"},"timezone":{"oneOf":[{"type":"string","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0.timezone.oneOf.0","typeLabel":"string"},{"type":"null","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0.timezone","typeLabel":"string | null"},"utc_datetime":{"oneOf":[{"type":"string","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0.utc_datetime.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0.utc_datetime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0.utc_datetime","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.free_cancellation_until","typeLabel":"object | null"},"policy_text":{"type":"string","description":"Ready-to-show English summary generated from the fields (for example Non-refundable; cancellation penalties apply.). The penalties list is the precise rule.","isRequired":true,"uniqueKey":"data.current_cancellation.policy_text","typeLabel":"string"},"penalties":{"description":"Penalty windows in the order the supplier sent them. Render them as a timeline: from, to and the charge. Empty when the supplier sent no windows.","type":"array","items":{"type":"object","properties":{"from":{"type":"object","description":"Start of this penalty window (inclusive).","required":["local_datetime","timezone","utc_datetime"],"properties":{"local_datetime":{"type":"string","example":"2026-05-18T23:59:59","description":"Date and time exactly as the supplier stated it, without an offset (ISO 8601, for example 2026-05-18T23:59:59). It is wall-clock time in the zone named by timezone. Show this to the guest.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from.local_datetime","typeLabel":"string"},"timezone":{"oneOf":[{"type":"string","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from.timezone.oneOf.0","typeLabel":"string"},{"type":"null","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from.timezone","typeLabel":"string | null"},"utc_datetime":{"oneOf":[{"type":"string","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from.utc_datetime.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from.utc_datetime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from.utc_datetime","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].from","typeLabel":"object"},"to":{"oneOf":[{"type":"object","description":"Exclusive end of this penalty window when supplied. Null means the rule runs until check-in or beyond, not that the policy is incomplete.","required":["local_datetime","timezone","utc_datetime"],"properties":{"local_datetime":{"type":"string","example":"2026-05-18T23:59:59","description":"Date and time exactly as the supplier stated it, without an offset (ISO 8601, for example 2026-05-18T23:59:59). It is wall-clock time in the zone named by timezone. Show this to the guest.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0.local_datetime","typeLabel":"string"},"timezone":{"oneOf":[{"type":"string","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0.timezone.oneOf.0","typeLabel":"string"},{"type":"null","example":"UTC","description":"IANA time zone of local_datetime (for example Asia/Kolkata) when known. Null when the supplier gave no zone; then utc_datetime is also null and you should show local_datetime as is.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0.timezone.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0.timezone","typeLabel":"string | null"},"utc_datetime":{"oneOf":[{"type":"string","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0.utc_datetime.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-05-18T23:59:59.000Z","description":"The same moment in UTC (ISO 8601 with Z). Null when the time zone is unknown. Use it for deadline logic and countdowns, never for display without a zone.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0.utc_datetime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0.utc_datetime","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].to","typeLabel":"object | null"},"charge_basis":{"type":"string","enum":["FIXED_AMOUNT","PERCENTAGE","NIGHTS","FULL_STAY","UNKNOWN"],"description":"How the penalty is calculated. FIXED_AMOUNT: a fixed sum (native_amount). PERCENTAGE: percentage of the basis in calculation_basis. NIGHTS: number_of_nights nights. FULL_STAY: the whole stay. UNKNOWN: the supplier gave no usable rule; show description.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].charge_basis","typeLabel":"enum\u003cstring>"},"percentage":{"oneOf":[{"type":"number","description":"Percentage charged when charge_basis is PERCENTAGE (for example 50 means 50%). Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].percentage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Percentage charged when charge_basis is PERCENTAGE (for example 50 means 50%). Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].percentage.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].percentage","typeLabel":"number | null"},"number_of_nights":{"oneOf":[{"type":"number","description":"Number of nights charged when charge_basis is NIGHTS. Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].number_of_nights.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of nights charged when charge_basis is NIGHTS. Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].number_of_nights.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].number_of_nights","typeLabel":"number | null"},"native_amount":{"oneOf":[{"type":"object","description":"Penalty amount in the supplier currency when it can be computed. 0 means a free-cancellation window. Null when the amount cannot be computed (for example a percentage of a basis other than the total); then show percentage / number_of_nights and description.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].native_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].native_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].native_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].native_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].native_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].native_amount","typeLabel":"object | null"},"usd_amount":{"oneOf":[{"type":"object","description":"native_amount converted to USD. Null when native_amount is null or no exchange rate is available.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].usd_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].usd_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].usd_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].usd_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].usd_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].usd_amount","typeLabel":"object | null"},"display_amount":{"oneOf":[{"type":"object","description":"native_amount converted to the display currency. Null when native_amount is null or no exchange rate is available. Same as usd_amount when the display currency is USD.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].display_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].display_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].display_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].display_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].display_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].display_amount","typeLabel":"object | null"},"conversion_status":{"type":"string","enum":["AVAILABLE","UNAVAILABLE"],"description":"AVAILABLE when usd_amount is filled; UNAVAILABLE when it is null.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].conversion_status","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Short label for the window: Free cancellation window (amount 0) or Cancellation penalty. Do not parse.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].description","typeLabel":"string"},"calculation_basis":{"type":"string","enum":["TOTAL","ROOM_RATE","FIRST_NIGHT","NIGHTLY_RATE","SUPPLIER_DEFINED","UNKNOWN"],"description":"What a percentage or nights charge is applied to. TOTAL: the total payable to the supplier. ROOM_RATE, FIRST_NIGHT, NIGHTLY_RATE: that part of the rate. SUPPLIER_DEFINED or UNKNOWN: the supplier did not say exactly.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].calculation_basis","typeLabel":"enum\u003cstring>"},"scope":{"type":"object","description":"What the penalty covers. Usually PER_STAY with all other fields null.","required":["basis","room_allocation_id","guest_type","quantity"],"properties":{"basis":{"type":"string","enum":["PER_STAY","PER_ROOM","PER_ROOM_PER_NIGHT","PER_PERSON","PER_PERSON_PER_NIGHT"],"description":"What the amount covers. PER_STAY: the whole stay. PER_ROOM / PER_ROOM_PER_NIGHT: each room (per night). PER_PERSON / PER_PERSON_PER_NIGHT: each guest (per night). The amount is already the total for that scope.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.basis","typeLabel":"enum\u003cstring>"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.room_allocation_id","typeLabel":"string | null"},"guest_type":{"oneOf":[{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.guest_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.guest_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.guest_type","typeLabel":"enum\u003cstring> | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope.quantity","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.current_cancellation.penalties.items.[INDEX].scope","typeLabel":"object"}},"required":["from","to","charge_basis","percentage","number_of_nights","native_amount","usd_amount","display_amount","conversion_status","description","calculation_basis","scope"],"uniqueKey":"data.current_cancellation.penalties.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.current_cancellation.penalties","typeLabel":"object[]"},"no_show":{"oneOf":[{"type":"object","description":"No-show terms when the supplier states them. Null when none were supplied; that does not mean a no-show is free.","required":["trigger","applies_from_local_time","penalty"],"properties":{"trigger":{"type":"string","enum":["NO_SHOW"],"description":"Always NO_SHOW.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.trigger","typeLabel":"enum\u003cstring>"},"applies_from_local_time":{"oneOf":[{"type":"string","example":"18:00:00","description":"Supplier-local no-show cutoff time when supplied. No date or timezone is inferred.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.applies_from_local_time.oneOf.0","typeLabel":"string"},{"type":"null","example":"18:00:00","description":"Supplier-local no-show cutoff time when supplied. No date or timezone is inferred.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.applies_from_local_time.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.applies_from_local_time","typeLabel":"string | null"},"penalty":{"oneOf":[{"type":"object","description":"Charge triggered by a no-show. Null means no monetary no-show charge was supplied; it never means a zero charge was inferred.","required":["charge_basis","native_amount","usd_amount","display_amount","conversion_status","calculation_basis","scope"],"properties":{"charge_basis":{"type":"string","enum":["FIXED_AMOUNT","UNKNOWN"],"description":"FIXED_AMOUNT when native_amount is filled; UNKNOWN otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.charge_basis","typeLabel":"enum\u003cstring>"},"native_amount":{"oneOf":[{"type":"object","description":"No-show charge in the supplier currency.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.native_amount","typeLabel":"object | null"},"usd_amount":{"oneOf":[{"type":"object","description":"No-show charge converted to USD. Null when no exchange rate is available.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.usd_amount","typeLabel":"object | null"},"display_amount":{"oneOf":[{"type":"object","description":"native_amount converted to the display currency. Null when native_amount is null or no exchange rate is available. Same as usd_amount when the display currency is USD.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.display_amount","typeLabel":"object | null"},"conversion_status":{"type":"string","enum":["AVAILABLE","UNAVAILABLE","NOT_REQUIRED"],"description":"AVAILABLE when usd_amount is filled, UNAVAILABLE when no rate was available, NOT_REQUIRED when there is nothing to convert.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.conversion_status","typeLabel":"enum\u003cstring>"},"calculation_basis":{"type":"string","enum":["SUPPLIER_DEFINED"],"description":"Always SUPPLIER_DEFINED: the amount is whatever the supplier states.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.calculation_basis","typeLabel":"enum\u003cstring>"},"scope":{"type":"object","description":"What the no-show charge covers; always the whole stay.","required":["basis","room_allocation_id","guest_type","quantity"],"properties":{"basis":{"type":"string","enum":["PER_STAY","PER_ROOM","PER_ROOM_PER_NIGHT","PER_PERSON","PER_PERSON_PER_NIGHT"],"description":"What the amount covers. PER_STAY: the whole stay. PER_ROOM / PER_ROOM_PER_NIGHT: each room (per night). PER_PERSON / PER_PERSON_PER_NIGHT: each guest (per night). The amount is already the total for that scope.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.basis","typeLabel":"enum\u003cstring>"},"room_allocation_id":{"oneOf":[{"type":"string","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.room_allocation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room slot the charge belongs to. Null when it covers the whole offer.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.room_allocation_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.room_allocation_id","typeLabel":"string | null"},"guest_type":{"oneOf":[{"type":"string","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.guest_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ADULT","CHILD","INFANT"],"description":"Guest type the charge applies to. Null when it applies to everyone.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.guest_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.guest_type","typeLabel":"enum\u003cstring> | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of units the charge was calculated on (for example guests or nights) when the supplier states it. Null otherwise.","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope.quantity","typeLabel":"number | null"}},"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0.scope","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0.penalty","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.current_cancellation.no_show.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.current_cancellation.no_show","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.current_cancellation","typeLabel":"object"},"cancellation_outcome":{"type":"object","description":"The result of a cancellation, once one was requested.","required":["status","charge","display_charge","display_fx"],"properties":{"status":{"type":"string","enum":["NOT_REQUESTED","PENDING","CANCELLED","REJECTED","UNKNOWN"],"description":"NOT_REQUESTED: no cancellation was made. PENDING: the supplier is still processing it. CANCELLED: done. REJECTED: the supplier refused; the booking stays active. UNKNOWN: the supplier's answer is uncertain and is being verified; re-read until it settles.","isRequired":true,"uniqueKey":"data.cancellation_outcome.status","typeLabel":"enum\u003cstring>"},"charge":{"oneOf":[{"type":"object","description":"The cancellation charge applied, when the supplier reported one. Null when none was reported (it does not mean zero was charged).","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.cancellation_outcome.charge.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.cancellation_outcome.charge.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.cancellation_outcome.charge.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.cancellation_outcome.charge.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.cancellation_outcome.charge.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.cancellation_outcome.charge","typeLabel":"object | null"},"display_charge":{"oneOf":[{"type":"object","description":"charge in the booking's display currency, frozen when the cancellation was recorded. Null when charge is null or no frozen rate exists.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_charge.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_charge.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_charge.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.cancellation_outcome.display_charge.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_charge.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.cancellation_outcome.display_charge","typeLabel":"object | null"},"display_fx":{"oneOf":[{"type":"object","description":"The rate behind display_charge: the booking's frozen rate, or the rate frozen with the cancellation when the charge was in another currency. Null when display_charge is null.","required":["rate","rate_updated_at","frozen_at"],"properties":{"rate":{"type":"number","example":0.0096,"description":"Units of the display currency for one unit of the booking currency, frozen on the booking. Later exchange-rate changes never alter it.","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx.oneOf.0.rate","typeLabel":"number"},"rate_updated_at":{"oneOf":[{"type":"string","example":null,"description":"When the exchange-rate source last updated this rate (ISO 8601, UTC). Null when the source gave no timestamp. Unrelated to when the booking froze it.","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx.oneOf.0.rate_updated_at.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"description":"When the exchange-rate source last updated this rate (ISO 8601, UTC). Null when the source gave no timestamp. Unrelated to when the booking froze it.","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx.oneOf.0.rate_updated_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx.oneOf.0.rate_updated_at","typeLabel":"string | null"},"frozen_at":{"type":"string","example":"2026-10-26T09:30:00.000Z","description":"When the rate was frozen on the booking (ISO 8601, UTC): the booking's creation time, or the moment it was re-rated after a supplier currency change. On a cancellation charge converted at its own rate, when that rate was fixed.","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx.oneOf.0.frozen_at","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.cancellation_outcome.display_fx","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.cancellation_outcome","typeLabel":"object"},"failure":{"oneOf":[{"type":"object","description":"Why the booking failed. Null unless the booking has a failure code.","required":["code","message"],"properties":{"code":{"type":"string","example":"OFFER_UNAVAILABLE","description":"Machine-readable failure code. Branch on this value; see the error codes page.","isRequired":true,"uniqueKey":"data.failure.oneOf.0.code","typeLabel":"string"},"message":{"type":"string","example":"Booking could not be confirmed.","description":"Generic human-readable text. Do not parse it; use code instead.","isRequired":true,"uniqueKey":"data.failure.oneOf.0.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.failure.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.failure.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.failure","typeLabel":"object | null"},"confirmed_details":{"oneOf":[{"type":"object","description":"What the supplier reports after booking (confirmed room, amounts, payment). Null until the supplier's post-booking record has been read, for example while PROCESSING or if the supplier gives none.","required":["supplier_status","supplier_created_at","supplier_modified_at","check_in","check_out","is_cancellable","rooms","pricing","payment","voucher_comment"],"properties":{"supplier_status":{"oneOf":[{"type":"string","description":"The supplier's own status text for the booking. Not a Unifystays status; use lifecycle.status for logic. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_status.oneOf.0","typeLabel":"string"},{"type":"null","description":"The supplier's own status text for the booking. Not a Unifystays status; use lifecycle.status for logic. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_status.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_status","typeLabel":"string | null"},"supplier_created_at":{"oneOf":[{"type":"string","description":"When the supplier created the booking, as reported by the supplier. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_created_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"When the supplier created the booking, as reported by the supplier. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_created_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_created_at","typeLabel":"string | null"},"supplier_modified_at":{"oneOf":[{"type":"string","description":"When the supplier last modified the booking, as reported by the supplier. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_modified_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"When the supplier last modified the booking, as reported by the supplier. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_modified_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.supplier_modified_at","typeLabel":"string | null"},"check_in":{"oneOf":[{"type":"string","description":"Check-in date as the supplier holds it (YYYY-MM-DD). Compare with booked_offer.quote_context.check_in. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.check_in.oneOf.0","typeLabel":"string"},{"type":"null","description":"Check-in date as the supplier holds it (YYYY-MM-DD). Compare with booked_offer.quote_context.check_in. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.check_in.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.check_in","typeLabel":"string | null"},"check_out":{"oneOf":[{"type":"string","description":"Check-out date as the supplier holds it (YYYY-MM-DD). Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.check_out.oneOf.0","typeLabel":"string"},{"type":"null","description":"Check-out date as the supplier holds it (YYYY-MM-DD). Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.check_out.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.check_out","typeLabel":"string | null"},"is_cancellable":{"oneOf":[{"type":"boolean","description":"Whether the supplier currently says the booking can be cancelled. Null when the supplier does not say. For the cancel decision, rely on lifecycle.available_actions containing CANCEL.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.is_cancellable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether the supplier currently says the booking can be cancelled. Null when the supplier does not say. For the cancel decision, rely on lifecycle.available_actions containing CANCEL.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.is_cancellable.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.is_cancellable","typeLabel":"boolean | null"},"rooms":{"description":"Rooms as confirmed by the supplier after booking.","type":"array","items":{"type":"object","properties":{"supplier_room_id":{"oneOf":[{"type":"string","description":"The supplier's own room identifier. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].supplier_room_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The supplier's own room identifier. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].supplier_room_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].supplier_room_id","typeLabel":"string | null"},"supplier_room_name":{"oneOf":[{"type":"string","description":"Room name as the supplier confirmed it. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].supplier_room_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Room name as the supplier confirmed it. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].supplier_room_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].supplier_room_name","typeLabel":"string | null"},"meal_plan_name":{"oneOf":[{"type":"string","description":"Meal plan as the supplier confirmed it (for example Breakfast). Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].meal_plan_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Meal plan as the supplier confirmed it (for example Breakfast). Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].meal_plan_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].meal_plan_name","typeLabel":"string | null"},"bed_configuration":{"oneOf":[{"type":"string","description":"Bedding as the supplier confirmed it. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].bed_configuration.oneOf.0","typeLabel":"string"},{"type":"null","description":"Bedding as the supplier confirmed it. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].bed_configuration.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].bed_configuration","typeLabel":"string | null"},"adults":{"oneOf":[{"type":"number","description":"Adults in this room as confirmed by the supplier.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].adults.oneOf.0","typeLabel":"number"},{"type":"null","description":"Adults in this room as confirmed by the supplier.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].adults.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].adults","typeLabel":"number | null"},"children":{"oneOf":[{"type":"number","description":"Children in this room as confirmed by the supplier.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].children.oneOf.0","typeLabel":"number"},{"type":"null","description":"Children in this room as confirmed by the supplier.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].children.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].children","typeLabel":"number | null"},"quantity":{"oneOf":[{"type":"number","description":"Number of rooms of this type. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].quantity.oneOf.0","typeLabel":"number"},{"type":"null","description":"Number of rooms of this type. Null when not provided.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].quantity.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX].quantity","typeLabel":"number | null"}},"required":["supplier_room_id","supplier_room_name","meal_plan_name","bed_configuration","adults","children","quantity"],"uniqueKey":"data.confirmed_details.oneOf.0.rooms.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.rooms","typeLabel":"object[]"},"pricing":{"type":"object","description":"Amounts the supplier reports after booking.","required":["payable_total","display_payable_total","selling_total","display_selling_total","refunded_total","display_refunded_total","vat_total","display_vat_total"],"properties":{"payable_total":{"oneOf":[{"type":"object","description":"What the supplier says is payable for the stay, as reported after booking. Null when the supplier did not report it.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.payable_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.payable_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.payable_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.payable_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.payable_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.payable_total","typeLabel":"object | null"},"display_payable_total":{"oneOf":[{"type":"object","description":"payable_total in the booking's display currency, at the rate frozen for the booking. Null when payable_total is null or is in a different currency than the booking.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_payable_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_payable_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_payable_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_payable_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_payable_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_payable_total","typeLabel":"object | null"},"selling_total":{"oneOf":[{"type":"object","description":"The supplier's selling amount, when reported. Null otherwise. Null when the supplier did not report it.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.selling_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.selling_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.selling_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.selling_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.selling_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.selling_total","typeLabel":"object | null"},"display_selling_total":{"oneOf":[{"type":"object","description":"selling_total in the booking's display currency, at the rate frozen for the booking. Null when selling_total is null or is in a different currency than the booking.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_selling_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_selling_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_selling_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_selling_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_selling_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_selling_total","typeLabel":"object | null"},"refunded_total":{"oneOf":[{"type":"object","description":"Amount the supplier reports as refunded. Null when none was reported. Null when the supplier did not report it.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.refunded_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.refunded_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.refunded_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.refunded_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.refunded_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.refunded_total","typeLabel":"object | null"},"display_refunded_total":{"oneOf":[{"type":"object","description":"refunded_total in the booking's display currency, at the rate frozen for the booking. Null when refunded_total is null or is in a different currency than the booking.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_refunded_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_refunded_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_refunded_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_refunded_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_refunded_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_refunded_total","typeLabel":"object | null"},"vat_total":{"oneOf":[{"type":"object","description":"VAT total reported by the supplier. Null when none was reported. Null when the supplier did not report it.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.vat_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.vat_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.vat_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.vat_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.vat_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.vat_total","typeLabel":"object | null"},"display_vat_total":{"oneOf":[{"type":"object","description":"vat_total in the booking's display currency, at the rate frozen for the booking. Null when vat_total is null or is in a different currency than the booking.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_vat_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_vat_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_vat_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_vat_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_vat_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing.display_vat_total","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.pricing","typeLabel":"object"},"payment":{"type":"object","description":"Payment information the supplier reports after booking.","required":["supplier_payment_type","payment_by","paid_at","payment_due","payment_pending","invoice_id"],"properties":{"supplier_payment_type":{"oneOf":[{"type":"string","description":"How the supplier says the booking is paid. Supplier-defined text.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.supplier_payment_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"How the supplier says the booking is paid. Supplier-defined text.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.supplier_payment_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.supplier_payment_type","typeLabel":"string | null"},"payment_by":{"oneOf":[{"type":"string","description":"Who pays, as stated by the supplier. Supplier-defined text.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_by.oneOf.0","typeLabel":"string"},{"type":"null","description":"Who pays, as stated by the supplier. Supplier-defined text.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_by.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_by","typeLabel":"string | null"},"paid_at":{"oneOf":[{"type":"string","description":"When payment was made, as reported by the supplier. Null if unpaid or unknown.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.paid_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"When payment was made, as reported by the supplier. Null if unpaid or unknown.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.paid_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.paid_at","typeLabel":"string | null"},"payment_due":{"oneOf":[{"type":"string","description":"Payment due date, as reported by the supplier. Null when none.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_due.oneOf.0","typeLabel":"string"},{"type":"null","description":"Payment due date, as reported by the supplier. Null when none.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_due.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_due","typeLabel":"string | null"},"payment_pending":{"oneOf":[{"type":"string","description":"Amount or date still pending payment, as reported by the supplier. Null when none.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_pending.oneOf.0","typeLabel":"string"},{"type":"null","description":"Amount or date still pending payment, as reported by the supplier. Null when none.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_pending.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.payment_pending","typeLabel":"string | null"},"invoice_id":{"oneOf":[{"type":"string","description":"Supplier invoice ID, when one was issued. Null otherwise.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.invoice_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Supplier invoice ID, when one was issued. Null otherwise.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.invoice_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment.invoice_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.payment","typeLabel":"object"},"voucher_comment":{"oneOf":[{"type":"string","description":"Comment the supplier wants printed on the voucher. Show it to the guest when present. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.voucher_comment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Comment the supplier wants printed on the voucher. Show it to the guest when present. Null when not reported.","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.voucher_comment.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0.voucher_comment","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.confirmed_details.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.confirmed_details","typeLabel":"object | null"},"display_total":{"oneOf":[{"type":"object","description":"What the booking costs in the display currency it was made with, at the rate frozen when it was priced. Null for bookings made before display currencies existed.","required":["amount_minor","currency","currency_exponent"],"properties":{"amount_minor":{"type":"number","example":17700,"description":"Integer amount in minor units of the currency. Divide by 10 to the power of currency_exponent: 17700 with exponent 2 is 177.00; a zero-decimal currency such as JPY has exponent 0. Never treat it as a decimal amount.","isRequired":true,"uniqueKey":"data.display_total.oneOf.0.amount_minor","typeLabel":"number"},"currency":{"type":"string","example":"USD","description":"ISO 4217 currency code of the amount (upper case). Native-ledger amounts are in the supplier's currency; usd_ledger amounts are USD.","isRequired":true,"uniqueKey":"data.display_total.oneOf.0.currency","typeLabel":"string"},"currency_exponent":{"type":"number","example":2,"description":"Number of decimal places of the currency (2 for USD, 0 for JPY, 3 for KWD). Use it to format amount_minor.","isRequired":true,"uniqueKey":"data.display_total.oneOf.0.currency_exponent","typeLabel":"number"}},"isRequired":true,"uniqueKey":"data.display_total.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.display_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.display_total","typeLabel":"object | null"},"display_fx":{"oneOf":[{"type":"object","description":"The frozen rate behind display_total. Null when display_total is null.","required":["rate","rate_updated_at","frozen_at"],"properties":{"rate":{"type":"number","example":0.0096,"description":"Units of the display currency for one unit of the booking currency, frozen on the booking. Later exchange-rate changes never alter it.","isRequired":true,"uniqueKey":"data.display_fx.oneOf.0.rate","typeLabel":"number"},"rate_updated_at":{"oneOf":[{"type":"string","example":null,"description":"When the exchange-rate source last updated this rate (ISO 8601, UTC). Null when the source gave no timestamp. Unrelated to when the booking froze it.","isRequired":true,"uniqueKey":"data.display_fx.oneOf.0.rate_updated_at.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"description":"When the exchange-rate source last updated this rate (ISO 8601, UTC). Null when the source gave no timestamp. Unrelated to when the booking froze it.","isRequired":true,"uniqueKey":"data.display_fx.oneOf.0.rate_updated_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.display_fx.oneOf.0.rate_updated_at","typeLabel":"string | null"},"frozen_at":{"type":"string","example":"2026-10-26T09:30:00.000Z","description":"When the rate was frozen on the booking (ISO 8601, UTC): the booking's creation time, or the moment it was re-rated after a supplier currency change. On a cancellation charge converted at its own rate, when that rate was fixed.","isRequired":true,"uniqueKey":"data.display_fx.oneOf.0.frozen_at","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.display_fx.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"data.display_fx.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.display_fx","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["contract_version","success","message","data"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"contract_version":"2","success":true,"message":"Booking confirmed.","data":{"booking_id":"ubk_eGQ0dW9uV1Vi","accepted_offer_id":"off_65db5f20d91b47d3a73d834dfa44c50e","booked_offer":{"offer_id":"off_01J...","revision":1,"offer_family_id":"\u003cstring>","supersedes_offer_id":"\u003cstring>","quote_context":{"hotel":{"id":"\u003cstring>","name":"\u003cstring>","address":"\u003cstring>","address_local":"\u003cstring>","city":"\u003cstring>","state":"\u003cstring>","country":"\u003cstring>","postal_code":"\u003cstring>","latitude":123,"longitude":123,"timezone":"\u003cstring>"},"check_in":"\u003cstring>","check_out":"\u003cstring>","nights":123,"rooms":[{"adults":123,"child_ages":[123]}],"residency":"\u003cstring>","nationality":"\u003cstring>","language":"\u003cstring>"},"provider_code":"TBO","room_combination":{"normalized_type":"SINGLE_ROOM","supplier_code":"\u003cstring>","supplier_name":"\u003cstring>"},"rate_plan":{"normalized_type":"PUBLIC","supplier_code":"\u003cstring>","supplier_name":"\u003cstring>","qualification":"\u003cstring>","is_package":true,"is_fenced":true},"rooms":[{"room_allocation_id":"ra_2c1fb39ed54742f28d95bd8bc5f4375d","provider_room":{"provider_code":"TRIPJACK","provider_hotel_id":"100000249368","id":"10024615989","name":"Aloft Studio, King","supplier_name":"\u003cstring>","description":"\u003cstring>","description_format":"HTML","detail_status":"NONE","room_type":{"normalized_code":"SUPERIOR","supplier_code":"\u003cstring>","supplier_name":"\u003cstring>"},"room_category":{"normalized_code":"SUPERIOR","supplier_code":"\u003cstring>","supplier_name":"\u003cstring>"},"size":{"value":123,"unit":"sqm"},"amenities":[{"id":"2403","normalized_code":"WHEELCHAIR_ACCESSIBLE","supplier_code":"2403","name":"Free WiFi","category":"GENERAL"}],"images":[{"url":"\u003cstring>","caption":"\u003cstring>","is_primary":true}],"bed_configurations":[{"id":"bed_1","bed_count":1,"bedroom_count":1,"beds":[{"type":"King","normalized_type":"SINGLE","supplier_type":"\u003cstring>","quantity":1,"width_min_cm":151,"width_max_cm":180}],"bed_type_guaranteed":true,"selected":true}],"bed_summary":"1 king bed or 2 single beds","occupancy":{"max_allowed":{"total":3,"adults":3,"children":2,"infants":123}},"bathroom":{"type":"PRIVATE","count":123},"views":[{"normalized_code":"CITY","supplier_code":"\u003cstring>","name":"\u003cstring>","partial":true}],"features":{"balcony":true,"smoking":"SMOKING","accessible":true,"club_access":true,"connecting_room":true},"extra_bed":{"available":true,"included":true,"charge_applicable":true},"child_bed":{"available":true,"included":true,"charge_applicable":true}},"mapping_status":"MAPPED","mapping_details":{"source":"MANUAL","confidence":0.93,"algorithm_version":"ROOM_RULES_V5","reason_codes":["GLOBAL_CATALOGUE_ASSIGNMENT","ASSIGNMENT_STABLE","BED_EXACT"]},"unifystays_room":{"provider_code":"TRIPJACK","provider_hotel_id":"100000249368","id":"10024615989","name":"Aloft Studio, King","supplier_name":"\u003cstring>","description":"\u003cstring>","description_format":"HTML","detail_status":"NONE","room_type":{"normalized_code":"SUPERIOR","supplier_code":"\u003cstring>","supplier_name":"\u003cstring>"},"room_category":{"normalized_code":"SUPERIOR","supplier_code":"\u003cstring>","supplier_name":"\u003cstring>"},"size":{"value":123,"unit":"sqm"},"amenities":[{"id":"2403","normalized_code":"WHEELCHAIR_ACCESSIBLE","supplier_code":"2403","name":"Free WiFi","category":"GENERAL"}],"images":[{"url":"\u003cstring>","caption":"\u003cstring>","is_primary":true}],"bed_configurations":[{"id":"bed_1","bed_count":1,"bedroom_count":1,"beds":[{"type":"King","normalized_type":"SINGLE","supplier_type":"\u003cstring>","quantity":1,"width_min_cm":151,"width_max_cm":180}],"bed_type_guaranteed":true,"selected":true}],"bed_summary":"1 king bed or 2 single beds","occupancy":{"max_allowed":{"total":3,"adults":3,"children":2,"infants":123}},"bathroom":{"type":"PRIVATE","count":123},"views":[{"normalized_code":"CITY","supplier_code":"\u003cstring>","name":"\u003cstring>","partial":true}],"features":{"balcony":true,"smoking":"SMOKING","accessible":true,"club_access":true,"connecting_room":true},"extra_bed":{"available":true,"included":true,"charge_applicable":true},"child_bed":{"available":true,"included":true,"charge_applicable":true}},"occupancy":{"adults":2,"child_ages":[7]},"meal_plan":{"code":"BB","supplier_code":"breakfast","supplier_name":"Breakfast","label":"Bed \u0026 Breakfast","is_breakfast_included":true,"is_child_meal_included":true},"inclusions":[{"code":"free_wifi","label":"Free WiFi"}],"unifystays_family_id":"4120552","unifystays_room_id":"4120552"}],"lifecycle":{"stage":"ROOMS","quoted_at":"\u003cstring>","expires_at":"\u003cstring>","prebook_required":true,"price_guaranteed":true,"availability":"AVAILABLE","rooms_remaining":{},"on_request":true,"available_booking_modes":["INSTANT"],"hold_allowed":true,"hold_deadline":{"local_datetime":"2026-05-18T23:59:59","timezone":"UTC","utc_datetime":"2026-05-18T23:59:59.000Z"},"post_booking_actions":["STATUS"]},"pricing":{"price_basis":"NET","breakdown_status":"COMPLETE","native_ledger":{"primary_currency":"USD","totals":[{"currency":"USD","currency_exponent":2,"payable_to_supplier":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"payable_at_property":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"total":{"amount_minor":17700,"currency":"USD","currency_exponent":2}}],"lines":[{"category":"room_rate","code":"city_tax","normalized_code":"CITY_TAX","description":"City tax","amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"collection_location":"SUPPLIER","included_in_quoted_total":false,"scope":{"basis":"PER_STAY","room_allocation_id":"\u003cstring>","guest_type":"ADULT","quantity":123},"mandatory":true,"source_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"is_estimated":true}]},"usd_ledger":{"primary_currency":"USD","totals":[{"currency":"USD","currency_exponent":2,"payable_to_supplier":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"payable_at_property":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"total":{"amount_minor":17700,"currency":"USD","currency_exponent":2}}],"lines":[{"category":"room_rate","code":"city_tax","normalized_code":"CITY_TAX","description":"City tax","amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"collection_location":"SUPPLIER","included_in_quoted_total":false,"scope":{"basis":"PER_STAY","room_allocation_id":"\u003cstring>","guest_type":"ADULT","quantity":123},"mandatory":true,"source_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"is_estimated":true}]},"display_currency":"EUR","display_ledger":{"primary_currency":"USD","totals":[{"currency":"USD","currency_exponent":2,"payable_to_supplier":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"payable_at_property":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"total":{"amount_minor":17700,"currency":"USD","currency_exponent":2}}],"lines":[{"category":"room_rate","code":"city_tax","normalized_code":"CITY_TAX","description":"City tax","amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"collection_location":"SUPPLIER","included_in_quoted_total":false,"scope":{"basis":"PER_STAY","room_allocation_id":"\u003cstring>","guest_type":"ADULT","quantity":123},"mandatory":true,"source_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"is_estimated":true}]},"conversion":{"status":"AVAILABLE","missing_currencies":["\u003cstring>"],"rates":[{"base_currency":"AED","quote_currency":"USD","rate":0.272294,"rate_updated_at":"\u003cstring>"}]}},"payment":{"settlement_channel":"SUPPLIER_ACCOUNT","payer":"AGENCY","supplier_payment_type":"\u003cstring>","payable_at":"SUPPLIER","collection_timing":"AT_BOOKING","requires_card_data":true,"requires_cvc":true,"requires_vcc":true,"security_deposit":{"amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"refundable":true}},"commercial":{"supplier_charge_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"gross_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"net_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"commission_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"agent_reward":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"recommended_selling_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"minimum_selling_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"original_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"discount_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"vat":{"included":true,"applied":true,"amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"rate":123}},"commercial_display":{"supplier_charge_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"gross_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"net_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"commission_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"agent_reward":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"recommended_selling_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"minimum_selling_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"original_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"discount_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"vat":{"included":true,"applied":true,"amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"rate":123}},"booking_requirements":[{"requirement_id":"br_first_name_all_guests_2","code":"FIRST_NAME","label":"First name","value_type":"TEXT","scope":"LEAD_GUEST","room_allocation_ids":["\u003cstring>"],"required":true,"allowed_values":["\u003cstring>"],"description":"\u003cstring>","constraints":{"min_length":123,"max_length":123,"pattern":"\u003cstring>","pattern_flags":"u","min_age":123,"max_age":123}}],"cancellation":{"refundability":"REFUNDABLE","policy_stage":"INDICATIVE","free_cancellation_until":{"local_datetime":"2026-05-18T23:59:59","timezone":"UTC","utc_datetime":"2026-05-18T23:59:59.000Z"},"policy_text":"\u003cstring>","penalties":[{"from":{"local_datetime":"2026-05-18T23:59:59","timezone":"UTC","utc_datetime":"2026-05-18T23:59:59.000Z"},"to":{"local_datetime":"2026-05-18T23:59:59","timezone":"UTC","utc_datetime":"2026-05-18T23:59:59.000Z"},"charge_basis":"FIXED_AMOUNT","percentage":123,"number_of_nights":123,"native_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"usd_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"conversion_status":"AVAILABLE","description":"\u003cstring>","calculation_basis":"TOTAL","scope":{"basis":"PER_STAY","room_allocation_id":"\u003cstring>","guest_type":"ADULT","quantity":123}}],"no_show":{"trigger":"NO_SHOW","applies_from_local_time":"18:00:00","penalty":{"charge_basis":"FIXED_AMOUNT","native_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"usd_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"conversion_status":"AVAILABLE","calculation_basis":"SUPPLIER_DEFINED","scope":{"basis":"PER_STAY","room_allocation_id":"\u003cstring>","guest_type":"ADULT","quantity":123}}}},"nightly_prices":[{"date":"\u003cstring>","room_allocation_id":"\u003cstring>","amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"scope":"OFFER","component":"ROOM_RATE"}],"promotions":[{"code":"\u003cstring>","title":"\u003cstring>","description":"\u003cstring>"}],"benefits":[{"code":"free_wifi","label":"Free WiFi"}],"notices":[{"code":"\u003cstring>","severity":"INFO","scope":"OFFER","text":"\u003cstring>","must_display":true}],"supplier_terms_and_conditions":{"type":"SUPPLIER_TERMS_AND_CONDITIONS","format":"PLAIN_TEXT","text":"\u003cstring>"}},"guests":[{"guest_id":"guest_1","guest_type":"ADULT","is_lead_guest":true,"room_allocation_id":"ra_957cff0ac25243f29eb43bc32eb82136","answers":[{"requirement_id":"br_first_name_all_guests_2","code":"FIRST_NAME","value":"Meera"}]}],"references":{"booking_id":"ubk_eGQ0dW9uV1Vi","client_reference":"US-1776255131000","supplier_booking_id":"TJ202487947162","supplier_booking_code":"REZ6A5A81E9","hotel_confirmation_number":"HCN-482910"},"lifecycle":{"status":"CONFIRMED","is_terminal":true,"created_at":"2026-04-15T12:12:11.000Z","updated_at":"2026-04-15T12:15:11.000Z","completed_at":"2026-04-15T12:15:11.000Z","processing_reason":null,"action_required":false,"available_actions":["GET_DETAILS","CANCEL"],"review_expires_at":null,"hold_deadline_at":null},"voucher":{"available":true,"url":null,"hotel_confirmation_number":"HCN-482910","note":null},"current_cancellation":{"refundability":"REFUNDABLE","policy_stage":"INDICATIVE","free_cancellation_until":{"local_datetime":"2026-05-18T23:59:59","timezone":"UTC","utc_datetime":"2026-05-18T23:59:59.000Z"},"policy_text":"\u003cstring>","penalties":[{"from":{"local_datetime":"2026-05-18T23:59:59","timezone":"UTC","utc_datetime":"2026-05-18T23:59:59.000Z"},"to":{"local_datetime":"2026-05-18T23:59:59","timezone":"UTC","utc_datetime":"2026-05-18T23:59:59.000Z"},"charge_basis":"FIXED_AMOUNT","percentage":123,"number_of_nights":123,"native_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"usd_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"conversion_status":"AVAILABLE","description":"\u003cstring>","calculation_basis":"TOTAL","scope":{"basis":"PER_STAY","room_allocation_id":"\u003cstring>","guest_type":"ADULT","quantity":123}}],"no_show":{"trigger":"NO_SHOW","applies_from_local_time":"18:00:00","penalty":{"charge_basis":"FIXED_AMOUNT","native_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"usd_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_amount":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"conversion_status":"AVAILABLE","calculation_basis":"SUPPLIER_DEFINED","scope":{"basis":"PER_STAY","room_allocation_id":"\u003cstring>","guest_type":"ADULT","quantity":123}}}},"cancellation_outcome":{"status":"NOT_REQUESTED","charge":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_charge":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_fx":{"rate":0.0096,"rate_updated_at":null,"frozen_at":"2026-10-26T09:30:00.000Z"}},"failure":{"code":"OFFER_UNAVAILABLE","message":"Booking could not be confirmed."},"confirmed_details":{"supplier_status":"\u003cstring>","supplier_created_at":"\u003cstring>","supplier_modified_at":"\u003cstring>","check_in":"\u003cstring>","check_out":"\u003cstring>","is_cancellable":true,"rooms":[{"supplier_room_id":"\u003cstring>","supplier_room_name":"\u003cstring>","meal_plan_name":"\u003cstring>","bed_configuration":"\u003cstring>","adults":123,"children":123,"quantity":123}],"pricing":{"payable_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_payable_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"selling_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_selling_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"refunded_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_refunded_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"vat_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_vat_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2}},"payment":{"supplier_payment_type":"\u003cstring>","payment_by":"\u003cstring>","paid_at":"\u003cstring>","payment_due":"\u003cstring>","payment_pending":"\u003cstring>","invoice_id":"\u003cstring>"},"voucher_comment":"\u003cstring>"},"display_total":{"amount_minor":17700,"currency":"USD","currency_exponent":2},"display_fx":{"rate":0.0096,"rate_updated_at":null,"frozen_at":"2026-10-26T09:30:00.000Z"}}}}},"exampleType":"generated"}},"headers":{"X-Unifystays-Contract-Version":{"description":"Hotel contract version of this response.","schema":{"type":"string","enum":["2"]}}},"exampleType":"generated"},"1ef06ff2-c69f-4ca6-acbb-373d9efd1932":{"description":"Booking not found.","headers":{"X-Unifystays-Contract-Version":{"description":"Hotel contract version of this response.","schema":{"type":"string","enum":["2"]}}},"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"169410b2-b814-46a5-b563-96f84cdf97fa":{"description":"CONTRACT_VERSION_UNSUPPORTED","headers":{"X-Unifystays-Contract-Version":{"description":"Hotel contract version of this response.","schema":{"type":"string","enum":["2"]}}},"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"71ce26d4-cf7b-4d3b-ab99-f95701a1c420":{"x-api-key":{"type":"apiKey","in":"header","name":"x-api-key","description":"Environment-specific API key created in the Unifystays portal","scopes":[],"schemeName":"x-api-key"}}},"servers":{"58b3027e-a79b-4d2c-898a-ec7cc8ae6eae":{"url":"https://api-sandbox.unifystays.com","description":"Sandbox"},"32e511f6-5caf-4d51-acd6-ad4d164fb151":{"url":"https://api.unifystays.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Environment-specific API key created in the Unifystays portal","scopes":[],"schemeName":"x-api-key"},"schema":{"title":"x-api-key","type":"string","description":"Environment-specific API key created in the Unifystays portal","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"x-api-key","name":"x-api-key"}],"title":"x-api-key"}]},"originalFileLocation":"reference/openapi.json"},"subdomain":"unifystays","siteName":"Unifystays API","title":"Get Booking Details - Unifystays API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T07:16:55.237Z","originalFileLocation":"api-reference/get-booking-details.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Unifystays API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/unifystays/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/unifystays/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/unifystays/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/unifystays/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get Booking Details - Unifystays API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Unifystays API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.unifystays.com/api-reference/get-booking-details\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://unifystays.mintlify.app/_mintlify/api/og/v2?division=Bookings\u0026amp;title=Get+Booking+Details\u0026amp;description=Retrieve+the+complete+itinerary%2C+rooms%2C+guests%2C+pricing%2C+supplier+information%2C+and+booking+timeline.\u0026amp;theme=8157bd32ddef625e2bd30aba\u0026amp;signature=7f01a324cc5be2197b42f4b118c16eb2f492311f753e9dbea9ca667037227ba5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get Booking Details - Unifystays API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://unifystays.mintlify.app/_mintlify/api/og/v2?division=Bookings\u0026amp;title=Get+Booking+Details\u0026amp;description=Retrieve+the+complete+itinerary%2C+rooms%2C+guests%2C+pricing%2C+supplier+information%2C+and+booking+timeline.\u0026amp;theme=8157bd32ddef625e2bd30aba\u0026amp;signature=7f01a324cc5be2197b42f4b118c16eb2f492311f753e9dbea9ca667037227ba5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/unifystays/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Unifystays API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0F766E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.unifystays.com/api-reference/get-booking-details\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/get-booking-details.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.unifystays.com/#organization\",\"name\":\"Unifystays API\",\"url\":\"https://docs.unifystays.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.unifystays.com#website\",\"name\":\"Unifystays API\",\"url\":\"https://docs.unifystays.com\",\"publisher\":{\"@id\":\"https://docs.unifystays.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.unifystays.com/api-reference/get-booking-details#webpage\",\"url\":\"https://docs.unifystays.com/api-reference/get-booking-details\",\"name\":\"Get Booking Details\",\"description\":\"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.\",\"dateModified\":\"2026-10-26T07:16:55.237Z\",\"isPartOf\":{\"@id\":\"https://docs.unifystays.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.unifystays.com/api-reference/get-booking-details#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.unifystays.com/api-reference/get-booking-details#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Bookings\",\"item\":\"https://docs.unifystays.com/api-reference/create-booking\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get Booking Details\",\"item\":\"https://docs.unifystays.com/api-reference/get-booking-details\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.unifystays.com/api-reference/get-booking-details#apireference\",\"headline\":\"Get Booking Details\",\"name\":\"Get Booking Details\",\"description\":\"Retrieve the complete itinerary, rooms, guests, pricing, supplier information, and booking timeline.\",\"url\":\"https://docs.unifystays.com/api-reference/get-booking-details\",\"mainEntityOfPage\":{\"@id\":\"https://docs.unifystays.com/api-reference/get-booking-details#webpage\"},\"dateModified\":\"2026-10-26T07:16:55.237Z\",\"publisher\":{\"@id\":\"https://docs.unifystays.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.unifystays.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Unifystays API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Unifystays API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"Overview","href":"/api-reference/overview"}]},{"group":"Destination \u0026 master data","pages":[{"title":"Destination Autocomplete","openapi":"reference/openapi.json GET /destinations/autocomplete","href":"/api-reference/destination-autocomplete"},{"title":"List Nationalities","openapi":"reference/openapi.json GET /master-data/nationalities","href":"/api-reference/nationalities"}]},{"group":"Search \u0026 hotels","pages":[{"title":"Get Hotel Filters","openapi":"reference/openapi.json GET /hotels/filters","href":"/api-reference/hotel-filters"},{"title":"Search Hotels","openapi":"reference/openapi.json POST /hotels/search","href":"/api-reference/search-hotels"},{"title":"Get Search Price Updates","openapi":"reference/openapi.json GET /hotels/search/{searchId}/prices","href":"/api-reference/search-price-updates"},{"title":"Get Hotel Content","openapi":"reference/openapi.json GET /hotels/{hotelId}/content","href":"/api-reference/hotel-content"},{"title":"Get Room Options","openapi":"reference/openapi.json POST /hotels/{hotel_id}/rooms","href":"/api-reference/hotel-rooms"},{"title":"Stream Room Updates","openapi":"reference/openapi.json GET /hotels/{hotel_id}/rooms/stream/{stream_id}","href":"/api-reference/hotel-room-stream"},{"title":"Prebook a Room","openapi":"reference/openapi.json POST /hotels/prebook","href":"/api-reference/prebook"}]},{"group":"Bookings","pages":[{"title":"Create Booking","openapi":"reference/openapi.json POST /hotels/book","href":"/api-reference/create-booking"},{"title":"Confirm Hold","openapi":"reference/openapi.json POST /hotels/book/{booking_id}/confirm-hold","href":"/api-reference/confirm-hold"},{"title":"List Bookings","openapi":"reference/openapi.json GET /hotels/book","href":"/api-reference/list-bookings"},{"title":"Get Booking Status","openapi":"reference/openapi.json GET /hotels/book/{booking_id}","href":"/api-reference/get-booking-status"},{"title":"Find Booking by Idempotency-Key","description":"Recover a booking whose create response never reached you.","openapi":"reference/openapi.json GET /hotels/book/by-idempotency-key","href":"/api-reference/get-booking-by-idempotency-key"},{"title":"Get Booking Details","openapi":"reference/openapi.json GET /hotels/book/{booking_id}/details","href":"/api-reference/get-booking-details"},{"title":"Quote Cancellation","description":"Retrieve and lock the current cancellation consequence before cancelling.","openapi":"reference/openapi.json POST /hotels/book/{booking_id}/cancellation-quote","href":"/api-reference/cancellation-quote"},{"title":"Cancel Booking","openapi":"reference/openapi.json POST /hotels/book/{booking_id}/cancel","href":"/api-reference/cancel-booking"}]},{"group":"Webhook endpoints","pages":[{"title":"Create Webhook Endpoint","openapi":"reference/openapi.json POST /webhooks/endpoints","href":"/api-reference/webhooks/create-endpoint"},{"title":"List Webhook Endpoints","openapi":"reference/openapi.json GET /webhooks/endpoints","href":"/api-reference/webhooks/list-endpoints"},{"title":"Get Webhook Endpoint","openapi":"reference/openapi.json GET /webhooks/endpoints/{endpoint_id}","href":"/api-reference/webhooks/get-endpoint"},{"title":"Update Webhook Endpoint","openapi":"reference/openapi.json PATCH /webhooks/endpoints/{endpoint_id}","href":"/api-reference/webhooks/update-endpoint"},{"title":"Delete Webhook Endpoint","openapi":"reference/openapi.json DELETE /webhooks/endpoints/{endpoint_id}","href":"/api-reference/webhooks/delete-endpoint"},{"title":"Rotate Webhook Secret","openapi":"reference/openapi.json POST /webhooks/endpoints/{endpoint_id}/rotate-secret","href":"/api-reference/webhooks/rotate-secret"},{"title":"Send Test Webhook","openapi":"reference/openapi.json POST /webhooks/endpoints/{endpoint_id}/test","href":"/api-reference/webhooks/test-endpoint"}]},{"group":"Webhook logs","pages":[{"title":"List Webhook Events","openapi":"reference/openapi.json GET /webhooks/events","href":"/api-reference/webhooks/list-events"},{"title":"List Webhook Deliveries","openapi":"reference/openapi.json GET /webhooks/deliveries","href":"/api-reference/webhooks/list-deliveries"},{"title":"Get Webhook Delivery","openapi":"reference/openapi.json GET /webhooks/deliveries/{delivery_id}","href":"/api-reference/webhooks/get-delivery"},{"title":"Replay Webhook Delivery","openapi":"reference/openapi.json POST /webhooks/deliveries/{delivery_id}/replay","href":"/api-reference/webhooks/replay-delivery"}]}]}]},"basePath":"","title":"Get Booking Details - Unifystays API","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}