{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-demand/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Accommodations migration to Demand API v3.3","siteUrl":"https://developers.booking.com"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"accommodations-migration-to-demand-api-v33","__idx":0},"children":["Accommodations migration to Demand API v3.3"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Review the changes introduced in Demand API v3.3 for accommodations and update the endpoints, fields, objects, enum values, and integration behaviour affected by the release."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"introduction","__idx":1},"children":["Introduction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Demand API v3.3 introduces new accommodation discovery capabilities, enhanced sustainability metadata, expanded deal tagging, and updated occupancy information."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The real-time autocomplete capability, previously available in Beta, is now available as stable functionality in v3.3."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this guide to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Identify the changes that affect your integration."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Review the changes relevant to integrations migrating from v3.1, v3.2 stable, or v3.2 Beta."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Update accommodation response models and enum handling."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add real-time autocomplete to guided search flows."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Display enhanced sustainability and seasonal deal information."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate the updated occupancy and check-in information."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Remove fields and enum values that are no longer supported in v3.3."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Before you start"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Review the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/migration-guide/v3.3/changes"},"children":["Demand API v3.3 migration overview"]}," for the complete release scope and API availability model."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Changes to order modification and order modification preview, including modifications to accommodation orders, are covered in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/migration-guide/v3.3/orders/intro"},"children":["Orders migration guide"]},"."]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"accommodation-capability-availability-after-the-v33-launch","__idx":2},"children":["Accommodation capability availability after the v3.3 launch"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Capability"},"children":["Capability"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v3.2 stable"},"children":["v3.2 stable"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v3.3 stable"},"children":["v3.3 stable"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Accommodation search and details"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✓ Available"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✓ Available"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Continue using /accommodations/search and /accommodations/details."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Real-time autocomplete"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✗ Not available as stable functionality"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✓ Available"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["/common/autocomplete is promoted from Beta to v3.3 stable."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sustainability metadata"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✓ Available"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✓ Available"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["v3.3 adds certification logo metadata and makes certification information available without additional access requirements."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Seasonal deal tagging"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✓ Available"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✓ Available"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["v3.3 provides more explicit deal tags for seasonal deals."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Accommodation search, availability, booking, and post-booking management remain available as stable functionality in both v3.2 and v3.3."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-changes-in-v33","__idx":3},"children":["What changes in v3.3"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Area"},"children":["Area"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Change in v3.3"},"children":["Change in v3.3"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Action"},"children":["Action"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Autocomplete"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Real-time autocomplete is available as stable functionality through /common/autocomplete."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Replace any Beta endpoint configuration with the v3.3 stable endpoint."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sustainability"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Accommodation details include certification metadata, including certification names and logo URLs."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update response models and use the metadata to provide clearer sustainability information to travellers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Deal tagging"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Deal tags are more explicit and include seasonal deal categories."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update enum mappings and presentation logic. Do not treat the deal tag enum as closed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Occupancy metadata"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Room occupancy information uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occupancy_total"]}," and age-based child rules."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update consumers of maximum_occupancy and distinguish children who count towards the total occupancy limit."]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"real-time-autocomplete","__idx":4},"children":["Real-time autocomplete"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"style":{"backgroundColor":"#16a34a","color":"white","fontSize":"0.8rem","padding":"0.2rem 0.5rem","borderRadius":"4px"}},"children":["Stable in v3.3"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The /common/autocomplete endpoint supports low-latency, as-you-type destination suggestions and typo-tolerant search experiences."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use it to help travellers find valid search criteria before starting an accommodation search."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Typical uses include:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Suggesting cities, regions, countries, airports, or other supported destinations while the traveller types."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Correcting minor spelling mistakes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Reducing invalid location searches."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Helping travellers reach a valid location identifier more quickly."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When integrating autocomplete:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Debounce requests generated by user input."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Display returned suggestion names in the traveller’s selected language where available."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use returned location identifiers when constructing accommodation search requests."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle an empty result without treating it as an API failure."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not assume that a suggestion represents an accommodation search result."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/open-api/3.3/demand-api/commonautocomplete"},"children":["Autocomplete API reference"]}," for the request and response schema."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sustainability-certification-metadata","__idx":5},"children":["Sustainability certification metadata"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"style":{"backgroundColor":"#16a34a","color":"white","fontSize":"0.8rem","padding":"0.2rem 0.5rem","borderRadius":"4px"}},"children":["Enhanced in v3.3"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The /accommodations/details response includes additional sustainability certification metadata without requiring separate access to the sustainability programme."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"handle-new-sustainability-fields","__idx":6},"children":["Handle new sustainability fields"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The certification object can now include logo_url."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ensure that:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Additional response fields do not cause deserialisation failures."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A missing logo URL is handled safely."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Certification names and logos are displayed together only when both are available."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/accommodations/sustainability/about"},"children":["Sustainability certifications guide"]}," for details."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"breaking-changes-to-review","__idx":7},"children":["Breaking changes to review"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"style":{"backgroundColor":"#dc2626","color":"white","fontSize":"0.8rem","padding":"0.2rem 0.5rem","borderRadius":"4px"}},"children":["Breaking change"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following changes require code updates when migrating to v3.3."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"seasonal-deal-tagging","__idx":8},"children":["Seasonal deal tagging"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In v3.3, seasonal deals are represented using more specific deal tags."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your v3.2 integration explicitly handles ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["seasonal_deal"]},", review that mapping against the v3.3 enum values."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deal.tags"]}," array can include tags such as:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["early_year_deal"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["flash_deal"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getaway_deal"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["late_escape_deal"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limited_time_deal"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["logged_in_deal"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mobile_rate"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Update your integration to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Accept the new deal tag values."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Map tags to traveller-facing labels only where appropriate."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Avoid treating an unknown tag as an error."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Avoid assuming that one product has only one applicable deal."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Keep the original price and discount information separate from the deal tag."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unknown future tags should not cause the complete accommodation result to be rejected."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See more details in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/accommodations/discounts"},"children":["Deals dedicated guide"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"occupancy-metadata","__idx":9},"children":["Occupancy metadata"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The v3.3 accommodation details response provides a more precise representation of room occupancy limits."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This change applies to the static room occupancy information returned by /accommodations/details. It does not change the basic guest input structure used by accommodation search and availability requests."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/accommodations/occupancy-allocation"},"children":["Occupancy and allocation guide"]}," for details."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"maximum-occupancy","__idx":10},"children":["Maximum occupancy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In previous versions, room occupancy could be represented using separate adult and total limits:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"maximum_occupancy\": {\n    \"adults\": 2,\n    \"children\": [\n      {\n        \"total\": 1,\n        \"from_age\": 3,\n        \"to_age\": 12,\n        \"free_stay\": true\n      }\n    ],\n    \"total\": 3\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In v3.3, the response uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occupancy_total"]}," and more explicit child rules:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"maximum_occupancy\": {\n    \"occupancy_total\": 3,\n    \"children\": [\n      {\n        \"from_age\": 3,\n        \"to_age\": 12,\n        \"amount\": 1,\n        \"included_in_total\": true\n      }\n    ]\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Update consumers of room occupancy metadata from:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.adults"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.total"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.children[].total"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.children[].free_stay"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.occupancy_total"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.children[].from_age"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.children[].to_age"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.children[].amount"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum_occupancy.children[].included_in_total"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Update your data model and presentation logic to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Apply included_in_total when calculating whether the room can accommodate the requested guests."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enforce the child limit represented by amount."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle multiple age brackets."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Avoid assuming that all children count towards the total occupancy limit."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"removed-fields-and-enum-values","__idx":11},"children":["Removed fields and enum values"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Demand API v3.3 removes fields and enum values that were deprecated in v3.2."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before upgrading, check whether your integration sends, reads, stores, or validates the following value."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Location"},"children":["Location"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Deprecated value"},"children":["Deprecated value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Context"},"children":["Context"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v3.3 action"},"children":["v3.3 action"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["accommodations/search"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filters.cancellation_type"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The cancellation_type field remains supported; only the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}," enum value is removed."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Remove ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}," from requests, validation rules, generated SDK models, and application logic."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"remove-the-non_refundable-cancellation-filter","__idx":12},"children":["Remove the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}," cancellation filter"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}," value is removed from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filters.cancellation_type"]}," in /accommodations/search."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To return only products that can be cancelled for free, use free_cancellation."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To include products regardless of their cancellation type, omit the cancellation_type filter."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, replace:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"filters\": {\n    \"cancellation_type\": \"non_refundable\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["with:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"filters\": {\n    \"cancellation_type\": \"free_cancellation\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Alternatively, omit cancellation_type when you do not want to filter by cancellation type."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"endpoint-changes","__idx":13},"children":["Endpoint changes"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v3.2 endpoint or capability"},"children":["v3.2 endpoint or capability"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v3.3 endpoint or capability"},"children":["v3.3 endpoint or capability"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Migration action"},"children":["Migration action"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Accommodation search"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["/accommodations/search"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Continue using the endpoint. Update response handling for the v3.3 deal tags and remove the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}," cancellation filter value."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Accommodation availability"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["/accommodations/availability"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Continue using the endpoint. Review occupancy mismatch and response handling."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Accommodation details"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["/accommodations/details"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Continue using the endpoint. Add sustainability certification metadata, updated occupancy metadata, and check-in information."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Location autocomplete"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Beta autocomplete endpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use /common/autocomplete in the v3.3 stable API."]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"migration-checklist","__idx":14},"children":["Migration checklist"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-changes","__idx":15},"children":["Request changes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace Beta autocomplete configuration with /common/autocomplete."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Remove ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}," from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filters.cancellation_type"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Continue sending the existing accommodation search and availability request structures."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm that price filter objects contain at least a minimum or maximum value when the price filter is used."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-changes","__idx":16},"children":["Response changes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add support for sustainability certification logo URLs."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Update deal tag mappings and enum validation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace the previous maximum occupancy representation with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occupancy_total"]}," and age-based child rules."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle occupancy_mismatch as a warning that requires an application decision."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"integration-behaviour","__idx":17},"children":["Integration behaviour"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use autocomplete suggestions to guide travellers towards valid search criteria."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not treat an empty autocomplete response as an API failure."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not assume that every accommodation has sustainability certifications."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not use deal tags to calculate prices."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not assume that all children count towards ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occupancy_total"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not treat occupancy_mismatch as an automatic order-blocking error."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle unknown enum values and newly introduced response fields safely."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"testing-recommendations","__idx":18},"children":["Testing recommendations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/getting-started/sandbox"},"children":["Demand API sandbox"]}," to validate your accommodation integration before switching to production."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The sandbox provides test accommodation inventory for validating search, availability, pricing, occupancy, cancellation policies, and booking behaviour."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use the test accommodation IDs listed in the sandbox guide rather than production accommodation IDs."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Sandbox limitations"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sandbox has request-rate limits. Accommodation booking tests that involve payments require a real credit card; charges are temporary and are automatically cancelled according to the sandbox payment process."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Do not use sandbox accommodation IDs with the production environment."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"search-and-autocomplete","__idx":19},"children":["Search and autocomplete"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Search for destinations using /common/autocomplete."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test partial input and minor spelling errors."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test empty autocomplete results."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use returned location identifiers in accommodation search requests."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm that search results remain valid when autocomplete is not used."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm that requests no longer send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filters.cancellation_type"]}," with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non_refundable"]}," value."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"accommodation-details","__idx":20},"children":["Accommodation details"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retrieve details with and without sustainability information."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that certification names and logo URLs are parsed correctly."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test accommodations with no certifications."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test rooms with multiple child age brackets."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify accommodation details using a sandbox test accommodation with multiple occupancy configurations."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify occupancy calculations when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["included_in_total"]}," is true and false."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"search-and-availability","__idx":21},"children":["Search and availability"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test standard adult and child occupancy requests."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test products that return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occupancy_mismatch"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm that allocated and unallocated guests are displayed correctly."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate price filters with both minimum and maximum values."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm that an empty price filter object is rejected."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test seasonal and non-seasonal deal tags."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm that unknown deal tags do not break response processing."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate that price calculations use the price object rather than deal tags."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"whats-next","__idx":22},"children":["What’s next"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/open-api/3.3/demand-api/accommodations/accommodations/details"},"children":["Version 3.3 Accommodations API reference"]}," — For the complete endpoint schemas and examples."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/accommodations/look-accommodation-details"},"children":["Accommodation details guide"]}," — For retrieving property and room information."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/accommodations/discounts"},"children":["Deals dedicated guide"]}," — For displaying deal information."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/accommodations/sustainability/about"},"children":["Sustainability certifications guide"]}," — For sustainability programme information."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/accommodations/occupancy-allocation"},"children":["Occupancy and allocation guide"]}," — For occupancy information and examples."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/migration-guide/v3.3/orders/intro"},"children":["Orders migration guide"]}," — For changes affecting order modification and preview."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/demand/docs/support/error-handling/about-errors"},"children":["Error handling guide"]}," — For common errors and recovery strategies."]}]}]}]},"headings":[{"value":"Accommodations migration to Demand API v3.3","id":"accommodations-migration-to-demand-api-v33","depth":1},{"value":"Introduction","id":"introduction","depth":2},{"value":"Accommodation capability availability after the v3.3 launch","id":"accommodation-capability-availability-after-the-v33-launch","depth":2},{"value":"What changes in v3.3","id":"what-changes-in-v33","depth":2},{"value":"Real-time autocomplete","id":"real-time-autocomplete","depth":2},{"value":"Sustainability certification metadata","id":"sustainability-certification-metadata","depth":2},{"value":"Handle new sustainability fields","id":"handle-new-sustainability-fields","depth":3},{"value":"Breaking changes to review","id":"breaking-changes-to-review","depth":2},{"value":"Seasonal deal tagging","id":"seasonal-deal-tagging","depth":3},{"value":"Occupancy metadata","id":"occupancy-metadata","depth":3},{"value":"Maximum occupancy","id":"maximum-occupancy","depth":4},{"value":"Removed fields and enum values","id":"removed-fields-and-enum-values","depth":3},{"value":"Remove the non_refundable cancellation filter","id":"remove-the-non_refundable-cancellation-filter","depth":4},{"value":"Endpoint changes","id":"endpoint-changes","depth":2},{"value":"Migration checklist","id":"migration-checklist","depth":2},{"value":"Request changes","id":"request-changes","depth":3},{"value":"Response changes","id":"response-changes","depth":3},{"value":"Integration behaviour","id":"integration-behaviour","depth":3},{"value":"Testing recommendations","id":"testing-recommendations","depth":2},{"value":"Search and autocomplete","id":"search-and-autocomplete","depth":3},{"value":"Accommodation details","id":"accommodation-details","depth":3},{"value":"Search and availability","id":"search-and-availability","depth":3},{"value":"What’s next","id":"whats-next","depth":2}],"frontmatter":{"title":"Accommodations migration to Demand API v3.3","description":"Migrate an accommodation integration to Demand API v3.3. Review stable capabilities, sustainability metadata, autocomplete, occupancy changes, seasonal deal tags, and removed fields.","tags":["accommodations","migration","demand api","v3.3","autocomplete","sustainability","occupancy"],"keywords":["accommodations v3.3","migrate accommodations api","Demand API v3.2 to v3.3","accommodation autocomplete","sustainability certification","accommodation occupancy"],"api":["/accommodations/search","/accommodations/availability","/accommodations/details","/common/autocomplete"],"x-redocly":{"seo":{"title":"Migrate accommodation integrations to Demand API v3.3","description":"Learn how to migrate accommodation integrations from Demand API v3.1, v3.2, or v3.2 Beta to Demand API v3.3."},"audience":["developer","partner","integrator"],"apiVersion":["v3.3"],"product":["accommodations"]},"seo":{"title":"Accommodations migration to Demand API v3.3"}},"lastModified":"2026-11-13T10:55:59.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/demand/docs/migration-guide/v3.3/accommodations/intro","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}