# Demand API v3.2 – Migration overview

**Plan, prepare, and execute your migration from v3.1 to v3.2. This section outlines the key architectural, design, and functional changes across all the API collections, highlighting stable and Beta updates.**

## API architecture and design

Version 3.2 represents a significant evolution of the Demand API, introducing a **Connected Trip framework**:

- **Multi-travel services support**: Accommodation, Car rental (Beta), Attractions (Beta)
- **Consistent resource structures**: Charges, currencies, inventory, identifiers.
- **Merged availability flows**: Single endpoint for availability and bulk availability, etc.


![changes diagram in-v3.2](/assets/changes-in-v3.2.4472d0c011cdff9850206f7df9d8f444f7568aa1961f8e7c41d08303b09205ea.8ae80680.jpg)

## What changes at a high level?

- **Accommodation improvements** - Clear pricing, enhanced room IDs, policies, and reporting fields.
- **Unified data structures** - Consistency across charges, currencies, and inventory.
- **Merged availability endpoints** - Simplified retrieval logic.
- **New travel services (Beta)** -  Car rental and Attractions, with aligned search, booking, and reporting flows.  ç
- **Unified inventory model** – The legacy `third_party_inventory` flag has been removed and replaced by a single, consistent `inventory` object across accommodation flows.


## Version 3.2 Stable

| Changes | Description/ benefit |
|  --- | --- |
| ✅ **accomm/availability & bulk endpoints merged** | * This reduces the number of calls required and simplifies the logic for availability retrieval.

 |
| ✅ **“Cancel for less” support** | * All partners can check eligibility for reduced cancellation fees.
([See the dedicated guide](/demand/docs/orders-api/cancel-for-less))

 |
| ✅ **More unmapped rates** | * Rates sourced directly from wholesalers are returned with clearer identifiers.

 |
| ✅ **Enhanced [orders/details endpoint](/demand/docs/open-api/3.2/demand-api/orders/orders/details)** | - Richer price breakdowns (`charges`, `display` price, conditional charges, online-payable flags)
- Multi-currency support - `currency.accommodation` and `currency.booker`
- Attraction reservations included alongside accommodation and car reservations.
- More fields to support reporting and financial reconciliation.

 |
| ✅ **Stronger accommodation model** | * Clearer pricing structures.
* Improved room identification.
* Additional data for reporting.

 |


### Inventory model changes Breaking changes

Version 3.2 introduces a **single, unified inventory model** across accommodation search, availability, and booking flows.

- The `third_party_inventory` boolean used in v3.1 has been **removed**.
- Inventory information is now exposed exclusively via the `inventory` object.



```json
inventory: {
  "third_party": true,
  "type": "net" | "sell"
}
```

**Why this changed**

* Removes ambiguity between rate source and pricing model.
* Simplifies downstream pricing, reporting, and attribution logic.


**Migration impact**

* Update all integrations that previously relied on `third_party_inventory`.
* Use `inventory.third_party` to detect third-party inventory.
* Use `inventory.type` to distinguish net vs sell rates.


This change applies to:

* /accommodations/search
* /accommodations/availability
* /orders/preview


## Version 3.2 Beta

### Car rental

We are expanding our API offering to include the **full car rental booking and post-booking capabilities**.

**New endpoints include:**

* [/cars/terms-and-conditions/](/demand/docs/open-api/3.2-beta/demand-api/cars/terms-and-conditions)
* [/orders/details/terms-and-conditions](/demand/docs/open-api/3.2-beta/demand-api/orders/cars-terms-and-conditions)
* [/cars/availability](/demand/docs/open-api/3.2-beta/demand-api/cars/availability) ([See guide for details](/demand/docs/cars/3.2/check-cars-availability))


These endpoints follow the familiar structure used for accommodation availability, preview, and booking.

* These endpoints are designed to support the [Search, look and book](/demand/docs/cars/overview#search-look-and-book-flow-v3.2---beta) for Car rentals.
* See the [v3.2 Beta Car rental API reference](/demand/docs/open-api/3.2-beta/demand-api/cars)


### Attractions

A new travel service offering that introduces attraction products with consistent pricing, availability, and booking patterns.

* These endpoints are designed to support the [Content, Search and Reporting flows](/demand/docs/attractions/about-attractions#integration-flows) for Attractions.
* See the [v3.2 Beta Attractions API reference](/demand/docs/open-api/3.2-beta/demand-api/attractions)


### Messaging

Version **3.2 Beta** refines the Messaging API, improving request validation, conversation structure, and field consistency.

- Standardised conversation (`conversation.id`) and participants.
- Unified message ID (`id`), `reply_to` removed.
- Improved attachments support (`attachments[]`)
- Stricter request validation: `accommodation` required + `conversation` OR `reservation` (`oneOf`)
- `/messages/latest/confirm` returns `confirmedMessages` for reliable tracking


See the [v3.2 Beta Attractions API reference](/demand/docs/open-api/3.2-beta/demand-api/messages)

## Key changes across endpoints

## Accommodations – Search, availability and orders/preview

| Area / Field | v3.1 | v3.2 | Migration note |
|  --- | --- | --- | --- |
| `accommodation.products.room` | Integer | String | Update parsing logic. Use `/accommodations/details` for full mapping. |
| `data.accommodation.currency` | Single string | Object (`accommodation`, `booker`) | Update all currency-handling logic. |
| Price fields | `price.book` | `price.display`, `price.total`, `price.charges[]` | Update pricing logic and UIs. |
| Cancellation | `special_conditions` | `partially_refundable` | Update enums and refund logic. |
| Charges | `extra_charges.included/excluded` | `charges[]`, `chargeable_online` | Adjust UI and checkout logic. |
| Inventory | `third_party_inventory` | `inventory.type`, `inventory.third_party` | Update inventory parsing and business logic for net vs sell rates and third-party sourcing. |


See dedicated [Accommodations Migration guide](/demand/docs/migration-guide/v3.2/accommodations/intro).

### Accommodations – Details endpoint (major updates)

- New extras flags including `refuses_free_cancellation_requests` (required for “Cancel for Less”).
- Reorganised nested structures:
  - `checkin_checkout_times`
  - `payment_methods`
- Improved product-level pricing breakdowns.
- Aligned schemas across travel services (charges, inventory, currency objects).


See dedicated [Accommodations/details Migration guide](/demand/docs/migration-guide/v3.2/accommodations/details).

### Orders – Multi-travel services, expanded structure

- `orders/details` can now include accommodation, car, and attraction reservations.
- More detailed charges and tax attributes.
- Consistent currency object (`currency.accommodation`, `currency.booker`, `currency.product`).
- New cancellation and partially refundable rule formats.


See dedicated [Orders Migration guide](/demand/docs/migration-guide/v3.2/orders/intro).

### Cars (Beta)

- New availability workflow aligned with accommodation structures.
- Additional terms and conditions structure.
- Standardised charges model (`charges[]`, online-payable indicators).
- Consistent pickup and return models.
- New preview + create flow via `/orders/preview` (Beta) and `/orders/create`.


See dedicated [Car rental migration guide](/demand/docs/migration-guide/v3.2/cars/intro).

### Attractions (Beta)

- New product collection with consistent cross-services patterns.
- Multi-currency support using the same structure as other travel services.
- Extended metadata (visitor types, timing, redemption instructions).
- Integrated into orders/details endpoint as a new travel service.


See dedicated [Attractions section](/demand/docs/attractions/about-attractions) with quick guide and use cases.

### Messaging (Beta)

| Endpoint | Field / Change | Migration note / Action required |
|  --- | --- | --- |
| **/messages/conversations** | Response: `data.conversations` → `data.conversation` | Update parsing logic to handle singular `conversation` object. |
|  | `messages[].reply_to` removed | Remove old threading logic; use `conversation.id` instead. |
|  | `messages[].sender` → participant ID | Map sender from `participants[].id` |
|  | Request: `accommodation` + one of `conversation` or `reservation` | Ensure request includes required fields; implement `oneOf` logic. |
| **/messages/latest** | `message` → `id` | Update message field mapping |
| **/messages/latest/confirm** | `confirmedMessages` added | Optional: store confirmed message IDs for acknowledgement tracking. |


See dedicated [Messaging migration guide](/demand/docs/migration-guide/v3.2/messaging/intro) for detailed examples, request/response samples, and integration tips.

## Choose your migration path

Use the guide relevant to your integration: