# Legacy names and twins

> Every previous spelling a request still accepts and every snake_case twin a response adds, per endpoint, listed from the API's own map.

Source: https://fx-port.com/docs/legacy-names

FX-Port's names are `snake_case`. Older endpoints took, or returned, other spellings (`searchId`, `offerId`, `bookingType` ...). Nothing was removed: this page lists, **per endpoint**, every previous spelling a request still accepts and the `snake_case` twin a response adds next to its older key. The tables are generated from the API's own map, so they are always exact. The rules behind them are in [Conventions and naming](https://fx-port.com/docs/conventions.md#naming).


> [!TIP]
> New code should send the names in the second column of the request tables, and read the twins of the response tables. A request that uses a previous spelling still works and is answered with a `warnings` array that names the spelling to use. Add `?naming=snake` to any request to get every response key in `snake_case`.


Machine readers can fetch the same map as JSON from `GET /api/v1/conventions/naming` (no key needed).

## Flights


### POST /api/v1/flights/book_flight
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `agentId` | `agent_id` |
| `bookingType` | `booking_type` |
| `commissionOverride` | `commission_override` |
| `contact` | `contact_details` |
| `contact_details.emailAddress` | `contact_details.email` |
| `contact_details.mobile` | `contact_details.phone_number` |
| `contact_details.phone` | `contact_details.phone_number` |
| `contact_details.phoneNumber` | `contact_details.phone_number` |
| `contactDetails` | `contact_details` |
| `contacts` | `contact_details` |
| `offerId` | `offer_id` |
| `passengers[].born_on` | `passengers[].date_of_birth` |
| `passengers[].bornOn` | `passengers[].date_of_birth` |
| `passengers[].dateOfBirth` | `passengers[].date_of_birth` |
| `passengers[].dob` | `passengers[].date_of_birth` |
| `passengers[].documents` | `passengers[].identity_documents` |
| `passengers[].family_name` | `passengers[].last_name` |
| `passengers[].familyName` | `passengers[].last_name` |
| `passengers[].firstName` | `passengers[].first_name` |
| `passengers[].given_name` | `passengers[].first_name` |
| `passengers[].givenName` | `passengers[].first_name` |
| `passengers[].identity_documents[].documentNumber` | `passengers[].identity_documents[].number` |
| `passengers[].identity_documents[].expires_on` | `passengers[].identity_documents[].expiry_date` |
| `passengers[].identity_documents[].expiryDate` | `passengers[].identity_documents[].expiry_date` |
| `passengers[].identity_documents[].issuing_country_code` | `passengers[].identity_documents[].issuing_country` |
| `passengers[].identity_documents[].issuingCountry` | `passengers[].identity_documents[].issuing_country` |
| `passengers[].identity_documents[].issuingCountryCode` | `passengers[].identity_documents[].issuing_country` |
| `passengers[].identity_documents[].unique_identifier` | `passengers[].identity_documents[].number` |
| `passengers[].identityDocuments` | `passengers[].identity_documents` |
| `passengers[].lastName` | `passengers[].last_name` |
| `passengers[].passengerType` | `passengers[].type` |
| `passengers[].surname` | `passengers[].last_name` |
| `searchId` | `search_id` |
| `sendEmail` | `send_email` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `booking.reference` | `order_id` |
| `exchangeRate` | `exchange_rate` |
| `meta.supportHold` | `support_hold` |
| `meta.supportVoid` | `support_void` |
| `meta.voidDeadline` | `void_deadline` |
| `offerId` | `offer_id` |
| `passengers[].bornOn` | `date_of_birth` |
| `passengers[].familyName` | `last_name` |
| `passengers[].givenName` | `first_name` |
| `passengers[].id` | `passenger_id` |
| `passengers[].phoneNumber` | `phone_number` |
| `passengers[].type` | `passenger_type` |
| `pricing.agencyCommission` | `agency_commission` |
| `pricing.b2bPrice` | `b2b_price` |
| `pricing.basePrice` | `base_price` |
| `pricing.finalPrice` | `final_price` |
| `pricing.taxesAndFees` | `taxes_and_fees` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |
| `searchId` | `search_id` |
| `supplier.id` | `supplier_id` |
| `supplier.name` | `supplier_name` |
| `supplier.offerId` | `supplier_offer_id` |
| `travelerPricing[].travelerId` | `passenger_id` |
| `travelerPricing[].travelerType` | `passenger_type` |

### POST /api/v1/flights/cancel_order
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `orderId` | `order_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `meta.supportHold` | `support_hold` |
| `meta.supportVoid` | `support_void` |
| `meta.voidDeadline` | `void_deadline` |
| `orderId` | `order_id` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |
| `supplier.id` | `supplier_id` |
| `supplier.name` | `supplier_name` |
| `supplier.offerId` | `supplier_offer_id` |

### POST /api/v1/flights/cancel_quote
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `orderId` | `order_id` |
| `supplierId` | `supplier_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `cancellation.cancellationId` | `cancellation_id` |
| `cancellation.orderId` | `order_id` |
| `exchangeRate` | `exchange_rate` |
| `orderId` | `order_id` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |

### POST /api/v1/flights/confirm_cancel
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `cancellationId` | `cancellation_id` |
| `orderId` | `order_id` |
| `supplierId` | `supplier_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `confirmation.cancellationId` | `cancellation_id` |
| `confirmation.orderId` | `order_id` |
| `exchangeRate` | `exchange_rate` |
| `orderId` | `order_id` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |

### POST /api/v1/flights/flexible_search
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `acdExemptCompanyId` | `acd_exempt_company_id` |
| `agencyId` | `agency_id` |
| `agentId` | `agent_id` |
| `airline_exclude` | `excluded_airlines` |
| `airline_include` | `included_airlines` |
| `airlineExclude` | `excluded_airlines` |
| `airlineInclude` | `included_airlines` |
| `airlines` | `preferred_airlines` |
| `cabinClass` | `cabin_class` |
| `checkedBags` | `checked_bags` |
| `departureDate` | `departure_date` |
| `direct` | `nonstop` |
| `exclude_airline` | `excluded_airlines` |
| `exclude_airlines` | `excluded_airlines` |
| `excludeAirlines` | `excluded_airlines` |
| `excluded_airline` | `excluded_airlines` |
| `excludedAirlines` | `excluded_airlines` |
| `filters.airline_exclude` | `filters.excluded_airlines` |
| `filters.airline_include` | `filters.included_airlines` |
| `filters.airlineExclude` | `filters.excluded_airlines` |
| `filters.airlineInclude` | `filters.included_airlines` |
| `filters.airlines` | `filters.preferred_airlines` |
| `filters.exclude_airline` | `filters.excluded_airlines` |
| `filters.exclude_airlines` | `filters.excluded_airlines` |
| `filters.excludeAirlines` | `filters.excluded_airlines` |
| `filters.excluded_airline` | `filters.excluded_airlines` |
| `filters.excludedAirlines` | `filters.excluded_airlines` |
| `filters.include_airline` | `filters.included_airlines` |
| `filters.include_airlines` | `filters.included_airlines` |
| `filters.includeAirlines` | `filters.included_airlines` |
| `filters.included_airline` | `filters.included_airlines` |
| `filters.includedAirlines` | `filters.included_airlines` |
| `filters.preferredAirlines` | `filters.preferred_airlines` |
| `flexibleOnly` | `flexible_only` |
| `fromCc` | `from_cc` |
| `include_airline` | `included_airlines` |
| `include_airlines` | `included_airlines` |
| `includeAirlines` | `included_airlines` |
| `included_airline` | `included_airlines` |
| `includedAirlines` | `included_airlines` |
| `loyalty_program_accounts[].accountNumber` | `loyalty_program_accounts[].account_number` |
| `loyalty_program_accounts[].airline_code` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].airlineCode` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].airlineIataCode` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].family_name` | `loyalty_program_accounts[].last_name` |
| `loyalty_program_accounts[].familyName` | `loyalty_program_accounts[].last_name` |
| `loyalty_program_accounts[].firstName` | `loyalty_program_accounts[].first_name` |
| `loyalty_program_accounts[].given_name` | `loyalty_program_accounts[].first_name` |
| `loyalty_program_accounts[].givenName` | `loyalty_program_accounts[].first_name` |
| `loyalty_program_accounts[].lastName` | `loyalty_program_accounts[].last_name` |
| `loyalty_program_accounts[].membership_number` | `loyalty_program_accounts[].account_number` |
| `loyalty_program_accounts[].membershipNumber` | `loyalty_program_accounts[].account_number` |
| `loyalty_program_accounts[].program_owner` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].programOwner` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].surname` | `loyalty_program_accounts[].last_name` |
| `loyaltyProgramAccounts` | `loyalty_program_accounts` |
| `maxPrice` | `max_price` |
| `maxSuppliers` | `max_suppliers` |
| `passengers.childAges` | `passengers.child_ages` |
| `passengers.infantAges` | `passengers.infant_ages` |
| `passengers.seatedInfantAges` | `passengers.seated_infant_ages` |
| `passengers.seatedInfants` | `passengers.seated_infants` |
| `passengers.toddlers` | `passengers.seated_infants` |
| `passengers.young` | `passengers.young_adults` |
| `passengers.youngAdultAges` | `passengers.young_adult_ages` |
| `passengers.youngAdults` | `passengers.young_adults` |
| `preferredAirlines` | `preferred_airlines` |
| `preferredSuppliers` | `preferred_suppliers` |
| `returnDate` | `return_date` |
| `segments[].date` | `segments[].departure_date` |
| `segments[].departure` | `segments[].departure_date` |
| `segments[].departureDate` | `segments[].departure_date` |
| `supplierId` | `supplier_id` |
| `supplierIds` | `supplier_ids` |
| `toCc` | `to_cc` |
| `travelers` | `passengers` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.exchangeRate` (events: supplier_result, supplier_start) | `exchange_rate` |
| `data.meta.filtersApplied` (events: supplier_result, supplier_start) | `filters_applied` |
| `data.meta.supplierId` (events: supplier_result, supplier_start) | `supplier_id` |
| `data.meta.supportHold` (events: supplier_result, supplier_start) | `support_hold` |
| `data.meta.supportVoid` (events: supplier_result, supplier_start) | `support_void` |
| `data.meta.voidDeadline` (events: supplier_result, supplier_start) | `void_deadline` |
| `data.processingTime` (events: supplier_result, supplier_start) | `processing_time` |
| `data.requestId` (events: supplier_result, supplier_start) | `request_id` |
| `data.results.offers[].id` (events: supplier_result, supplier_start) | `offer_id` |
| `data.results.offers[].pricing.agencyCommission` (events: supplier_result, supplier_start) | `agency_commission` |
| `data.results.offers[].pricing.b2bPrice` (events: supplier_result, supplier_start) | `b2b_price` |
| `data.results.offers[].pricing.basePrice` (events: supplier_result, supplier_start) | `base_price` |
| `data.results.offers[].pricing.finalPrice` (events: supplier_result, supplier_start) | `final_price` |
| `data.results.offers[].pricing.taxesAndFees` (events: supplier_result, supplier_start) | `taxes_and_fees` |
| `data.results.offers[].supportHold` (events: supplier_result, supplier_start) | `support_hold` |
| `data.results.offers[].supportVoid` (events: supplier_result, supplier_start) | `support_void` |
| `data.results.offers[].travelerPricing[].travelerId` (events: supplier_result, supplier_start) | `passenger_id` |
| `data.results.offers[].travelerPricing[].travelerType` (events: supplier_result, supplier_start) | `passenger_type` |
| `data.results.offers[].voidDeadline` (events: supplier_result, supplier_start) | `void_deadline` |
| `data.searchId` (events: supplier_result, supplier_start) | `search_id` |
| `data.searchType` (events: supplier_result, supplier_start) | `search_type` |
| `failures[].supplierId` | `supplier_id` |
| `offers[].id` (events: offers_chunk) | `offer_id` |
| `offers[].pricing.agencyCommission` (events: offers_chunk) | `agency_commission` |
| `offers[].pricing.b2bPrice` (events: offers_chunk) | `b2b_price` |
| `offers[].pricing.basePrice` (events: offers_chunk) | `base_price` |
| `offers[].pricing.finalPrice` (events: offers_chunk) | `final_price` |
| `offers[].pricing.taxesAndFees` (events: offers_chunk) | `taxes_and_fees` |
| `offers[].supportHold` (events: offers_chunk) | `support_hold` |
| `offers[].supportVoid` (events: offers_chunk) | `support_void` |
| `offers[].travelerPricing[].travelerId` (events: offers_chunk) | `passenger_id` |
| `offers[].travelerPricing[].travelerType` (events: offers_chunk) | `passenger_type` |
| `offers[].voidDeadline` (events: offers_chunk) | `void_deadline` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |
| `searchType` | `search_type` |
| `successfulSuppliers[].supplierId` (events: summary) | `supplier_id` |
| `supplierId` (events: error, flex_prices, offers_chunk, supplier_complete, supplier_result, supplier_start) | `supplier_id` |
| `suppliers[].exchangeRate` | `exchange_rate` |
| `suppliers[].filtersApplied` | `filters_applied` |
| `suppliers[].flexPrices.matrix[].agencyCommission` | `agency_commission` |
| `suppliers[].flexPrices.matrix[].b2bPrice` | `b2b_price` |
| `suppliers[].flexPrices.matrix[].basePrice` | `base_price` |
| `suppliers[].flexPrices.matrix[].finalPrice` | `final_price` |
| `suppliers[].flexPrices.matrix[].taxesAndFees` | `taxes_and_fees` |
| `suppliers[].meta.processingTime` | `processing_time` |
| `suppliers[].meta.supplierId` | `supplier_id` |
| `suppliers[].meta.supplierName` | `supplier_name` |
| `suppliers[].results.offers[].id` | `offer_id` |
| `suppliers[].results.offers[].pricing.agencyCommission` | `agency_commission` |
| `suppliers[].results.offers[].pricing.b2bPrice` | `b2b_price` |
| `suppliers[].results.offers[].pricing.basePrice` | `base_price` |
| `suppliers[].results.offers[].pricing.finalPrice` | `final_price` |
| `suppliers[].results.offers[].pricing.taxesAndFees` | `taxes_and_fees` |
| `suppliers[].results.offers[].supportHold` | `support_hold` |
| `suppliers[].results.offers[].supportVoid` | `support_void` |
| `suppliers[].results.offers[].travelerPricing[].travelerId` | `passenger_id` |
| `suppliers[].results.offers[].travelerPricing[].travelerType` | `passenger_type` |
| `suppliers[].results.offers[].voidDeadline` | `void_deadline` |
| `suppliers[].searchId` | `search_id` |
| `suppliers[].supportHold` | `support_hold` |
| `suppliers[].supportVoid` | `support_void` |
| `suppliers[].voidDeadline` | `void_deadline` |

### POST /api/v1/flights/get_acd_documents
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `orderId` | `booking_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `acd.booking_id` | `pnr` |
| `booking_id` | `pnr` |
| `requestId` | `request_id` |

### POST /api/v1/flights/get_booking
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `includeApiResponse` | `include_api_response` |
| `orderId` | `booking_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `booking.amadeus_id` | `order_id` |
| `booking.booking_id` | `pnr` |
| `booking.bucket_link` | `pdf_url` |
| `booking.bucket_link_no_price` | `pdf_url_no_price` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |

### POST /api/v1/flights/get_order_quote
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `orderId` | `order_id` |
| `supplierId` | `supplier_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `exchangeRate` | `exchange_rate` |
| `orderId` | `order_id` |
| `orderQuote.bookingReference` | `pnr` |
| `orderQuote.orderId` | `order_id` |
| `orderQuote.pricing.agencyCommission` | `agency_commission` |
| `orderQuote.pricing.b2bPrice` | `b2b_price` |
| `orderQuote.pricing.basePrice` | `base_price` |
| `orderQuote.pricing.finalPrice` | `final_price` |
| `orderQuote.pricing.taxesAndFees` | `taxes_and_fees` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |
| `supplier.id` | `supplier_id` |
| `supplier.name` | `supplier_name` |

### POST /api/v1/flights/get_ticket
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `orderId` | `booking_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `download_url` | `pdf_url` |
| `download_url_no_price` | `pdf_url_no_price` |
| `requestId` | `request_id` |

### POST /api/v1/flights/get_ticket_number
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `orderId` | `booking_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `booking_id` | `pnr` |
| `requestId` | `request_id` |
| `supplier_order_id` | `order_id` |

### POST /api/v1/flights/pay_order
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `orderId` | `order_id` |
| `paymentType` | `payment_type` |
| `priceGuaranteed` | `price_guaranteed` |
| `supplierId` | `supplier_id` |
| `threeDSecureSessionId` | `three_d_secure_session_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `booking.reference` | `order_id` |
| `exchangeRate` | `exchange_rate` |
| `meta.supportHold` | `support_hold` |
| `meta.supportVoid` | `support_void` |
| `meta.voidDeadline` | `void_deadline` |
| `orderId` | `order_id` |
| `passengers[].bornOn` | `date_of_birth` |
| `passengers[].familyName` | `last_name` |
| `passengers[].givenName` | `first_name` |
| `passengers[].id` | `passenger_id` |
| `passengers[].phoneNumber` | `phone_number` |
| `passengers[].type` | `passenger_type` |
| `pricing.agencyCommission` | `agency_commission` |
| `pricing.b2bPrice` | `b2b_price` |
| `pricing.basePrice` | `base_price` |
| `pricing.finalPrice` | `final_price` |
| `pricing.taxesAndFees` | `taxes_and_fees` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |
| `supplier.id` | `supplier_id` |
| `supplier.name` | `supplier_name` |
| `supplier.offerId` | `supplier_offer_id` |
| `travelerPricing[].travelerId` | `passenger_id` |
| `travelerPricing[].travelerType` | `passenger_type` |

### POST /api/v1/flights/price_flight
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `offerId` | `offer_id` |
| `searchId` | `search_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `exchangeRate` | `exchange_rate` |
| `offerId` | `offer_id` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |
| `results.offers[].id` | `offer_id` |
| `results.offers[].pricing.agencyCommission` | `agency_commission` |
| `results.offers[].pricing.b2bPrice` | `b2b_price` |
| `results.offers[].pricing.basePrice` | `base_price` |
| `results.offers[].pricing.finalPrice` | `final_price` |
| `results.offers[].pricing.taxesAndFees` | `taxes_and_fees` |
| `results.offers[].supplier.id` | `supplier_id` |
| `results.offers[].supplier.name` | `supplier_name` |
| `results.offers[].supplier.originalId` | `supplier_offer_id` |
| `results.offers[].supportHold` | `support_hold` |
| `results.offers[].supportVoid` | `support_void` |
| `results.offers[].travelerPricing[].travelerId` | `passenger_id` |
| `results.offers[].travelerPricing[].travelerType` | `passenger_type` |
| `results.offers[].voidDeadline` | `void_deadline` |

### POST /api/v1/flights/upload_acd_documents
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `agencyId` | `agency_id` |
| `bookingId` | `booking_id` |
| `document` | `documents` |
| `file` | `documents` |
| `files` | `documents` |
| `orderId` | `booking_id` |
| `traveler_id` | `traveler_ids` |
| `travelerId` | `traveler_ids` |
| `travelerIds` | `traveler_ids` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `acd.booking_id` | `pnr` |
| `booking_id` | `pnr` |
| `requestId` | `request_id` |

### POST /api/v1/get_flights
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `acdExemptCompanyId` | `acd_exempt_company_id` |
| `agencyId` | `agency_id` |
| `agentId` | `agent_id` |
| `airline_exclude` | `excluded_airlines` |
| `airline_include` | `included_airlines` |
| `airlineExclude` | `excluded_airlines` |
| `airlineInclude` | `included_airlines` |
| `airlines` | `preferred_airlines` |
| `cabinClass` | `cabin_class` |
| `checkedBags` | `checked_bags` |
| `departureDate` | `departure_date` |
| `direct` | `nonstop` |
| `exclude_airline` | `excluded_airlines` |
| `exclude_airlines` | `excluded_airlines` |
| `excludeAirlines` | `excluded_airlines` |
| `excluded_airline` | `excluded_airlines` |
| `excludedAirlines` | `excluded_airlines` |
| `filters.airline_exclude` | `filters.excluded_airlines` |
| `filters.airline_include` | `filters.included_airlines` |
| `filters.airlineExclude` | `filters.excluded_airlines` |
| `filters.airlineInclude` | `filters.included_airlines` |
| `filters.airlines` | `filters.preferred_airlines` |
| `filters.exclude_airline` | `filters.excluded_airlines` |
| `filters.exclude_airlines` | `filters.excluded_airlines` |
| `filters.excludeAirlines` | `filters.excluded_airlines` |
| `filters.excluded_airline` | `filters.excluded_airlines` |
| `filters.excludedAirlines` | `filters.excluded_airlines` |
| `filters.include_airline` | `filters.included_airlines` |
| `filters.include_airlines` | `filters.included_airlines` |
| `filters.includeAirlines` | `filters.included_airlines` |
| `filters.included_airline` | `filters.included_airlines` |
| `filters.includedAirlines` | `filters.included_airlines` |
| `filters.preferredAirlines` | `filters.preferred_airlines` |
| `flexibleOnly` | `flexible_only` |
| `fromCc` | `from_cc` |
| `include_airline` | `included_airlines` |
| `include_airlines` | `included_airlines` |
| `includeAirlines` | `included_airlines` |
| `included_airline` | `included_airlines` |
| `includedAirlines` | `included_airlines` |
| `loyalty_program_accounts[].accountNumber` | `loyalty_program_accounts[].account_number` |
| `loyalty_program_accounts[].airline_code` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].airlineCode` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].airlineIataCode` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].family_name` | `loyalty_program_accounts[].last_name` |
| `loyalty_program_accounts[].familyName` | `loyalty_program_accounts[].last_name` |
| `loyalty_program_accounts[].firstName` | `loyalty_program_accounts[].first_name` |
| `loyalty_program_accounts[].given_name` | `loyalty_program_accounts[].first_name` |
| `loyalty_program_accounts[].givenName` | `loyalty_program_accounts[].first_name` |
| `loyalty_program_accounts[].lastName` | `loyalty_program_accounts[].last_name` |
| `loyalty_program_accounts[].membership_number` | `loyalty_program_accounts[].account_number` |
| `loyalty_program_accounts[].membershipNumber` | `loyalty_program_accounts[].account_number` |
| `loyalty_program_accounts[].program_owner` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].programOwner` | `loyalty_program_accounts[].airline_iata_code` |
| `loyalty_program_accounts[].surname` | `loyalty_program_accounts[].last_name` |
| `loyaltyProgramAccounts` | `loyalty_program_accounts` |
| `maxPrice` | `max_price` |
| `maxSuppliers` | `max_suppliers` |
| `passengers.childAges` | `passengers.child_ages` |
| `passengers.infantAges` | `passengers.infant_ages` |
| `passengers.seatedInfantAges` | `passengers.seated_infant_ages` |
| `passengers.seatedInfants` | `passengers.seated_infants` |
| `passengers.toddlers` | `passengers.seated_infants` |
| `passengers.young` | `passengers.young_adults` |
| `passengers.youngAdultAges` | `passengers.young_adult_ages` |
| `passengers.youngAdults` | `passengers.young_adults` |
| `preferredAirlines` | `preferred_airlines` |
| `preferredSuppliers` | `preferred_suppliers` |
| `returnDate` | `return_date` |
| `segments[].date` | `segments[].departure_date` |
| `segments[].departure` | `segments[].departure_date` |
| `segments[].departureDate` | `segments[].departure_date` |
| `supplierId` | `supplier_id` |
| `supplierIds` | `supplier_ids` |
| `toCc` | `to_cc` |
| `travelers` | `passengers` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.exchangeRate` (events: supplier_result, supplier_start) | `exchange_rate` |
| `data.meta.filtersApplied` (events: supplier_result, supplier_start) | `filters_applied` |
| `data.meta.supplierId` (events: supplier_result, supplier_start) | `supplier_id` |
| `data.meta.supportHold` (events: supplier_result, supplier_start) | `support_hold` |
| `data.meta.supportVoid` (events: supplier_result, supplier_start) | `support_void` |
| `data.meta.voidDeadline` (events: supplier_result, supplier_start) | `void_deadline` |
| `data.processingTime` (events: supplier_result, supplier_start) | `processing_time` |
| `data.requestId` (events: supplier_result, supplier_start) | `request_id` |
| `data.results.offers[].id` (events: supplier_result, supplier_start) | `offer_id` |
| `data.results.offers[].pricing.agencyCommission` (events: supplier_result, supplier_start) | `agency_commission` |
| `data.results.offers[].pricing.b2bPrice` (events: supplier_result, supplier_start) | `b2b_price` |
| `data.results.offers[].pricing.basePrice` (events: supplier_result, supplier_start) | `base_price` |
| `data.results.offers[].pricing.finalPrice` (events: supplier_result, supplier_start) | `final_price` |
| `data.results.offers[].pricing.taxesAndFees` (events: supplier_result, supplier_start) | `taxes_and_fees` |
| `data.results.offers[].supportHold` (events: supplier_result, supplier_start) | `support_hold` |
| `data.results.offers[].supportVoid` (events: supplier_result, supplier_start) | `support_void` |
| `data.results.offers[].travelerPricing[].travelerId` (events: supplier_result, supplier_start) | `passenger_id` |
| `data.results.offers[].travelerPricing[].travelerType` (events: supplier_result, supplier_start) | `passenger_type` |
| `data.results.offers[].voidDeadline` (events: supplier_result, supplier_start) | `void_deadline` |
| `data.searchId` (events: supplier_result, supplier_start) | `search_id` |
| `data.searchType` (events: supplier_result, supplier_start) | `search_type` |
| `failures[].supplierId` | `supplier_id` |
| `offers[].id` (events: offers_chunk) | `offer_id` |
| `offers[].pricing.agencyCommission` (events: offers_chunk) | `agency_commission` |
| `offers[].pricing.b2bPrice` (events: offers_chunk) | `b2b_price` |
| `offers[].pricing.basePrice` (events: offers_chunk) | `base_price` |
| `offers[].pricing.finalPrice` (events: offers_chunk) | `final_price` |
| `offers[].pricing.taxesAndFees` (events: offers_chunk) | `taxes_and_fees` |
| `offers[].supportHold` (events: offers_chunk) | `support_hold` |
| `offers[].supportVoid` (events: offers_chunk) | `support_void` |
| `offers[].travelerPricing[].travelerId` (events: offers_chunk) | `passenger_id` |
| `offers[].travelerPricing[].travelerType` (events: offers_chunk) | `passenger_type` |
| `offers[].voidDeadline` (events: offers_chunk) | `void_deadline` |
| `processingTime` | `processing_time` |
| `requestId` | `request_id` |
| `searchType` | `search_type` |
| `successfulSuppliers[].supplierId` (events: summary) | `supplier_id` |
| `supplierId` (events: error, flex_prices, offers_chunk, supplier_complete, supplier_result, supplier_start) | `supplier_id` |
| `suppliers[].exchangeRate` | `exchange_rate` |
| `suppliers[].filtersApplied` | `filters_applied` |
| `suppliers[].flexPrices.matrix[].agencyCommission` | `agency_commission` |
| `suppliers[].flexPrices.matrix[].b2bPrice` | `b2b_price` |
| `suppliers[].flexPrices.matrix[].basePrice` | `base_price` |
| `suppliers[].flexPrices.matrix[].finalPrice` | `final_price` |
| `suppliers[].flexPrices.matrix[].taxesAndFees` | `taxes_and_fees` |
| `suppliers[].meta.processingTime` | `processing_time` |
| `suppliers[].meta.supplierId` | `supplier_id` |
| `suppliers[].meta.supplierName` | `supplier_name` |
| `suppliers[].results.offers[].id` | `offer_id` |
| `suppliers[].results.offers[].pricing.agencyCommission` | `agency_commission` |
| `suppliers[].results.offers[].pricing.b2bPrice` | `b2b_price` |
| `suppliers[].results.offers[].pricing.basePrice` | `base_price` |
| `suppliers[].results.offers[].pricing.finalPrice` | `final_price` |
| `suppliers[].results.offers[].pricing.taxesAndFees` | `taxes_and_fees` |
| `suppliers[].results.offers[].supportHold` | `support_hold` |
| `suppliers[].results.offers[].supportVoid` | `support_void` |
| `suppliers[].results.offers[].travelerPricing[].travelerId` | `passenger_id` |
| `suppliers[].results.offers[].travelerPricing[].travelerType` | `passenger_type` |
| `suppliers[].results.offers[].voidDeadline` | `void_deadline` |
| `suppliers[].searchId` | `search_id` |
| `suppliers[].supportHold` | `support_hold` |
| `suppliers[].supportVoid` | `support_void` |
| `suppliers[].voidDeadline` | `void_deadline` |


## Hotels


### POST /api/v1/hotels/book_hotel
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `bookHash` | `book_hash` |
| `bookingId` | `booking_id` |
| `hotelId` | `hotel_id` |
| `partner_order_id` | `booking_id` |
| `partnerOrderId` | `booking_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `balanceDebited` | `balance_debited` |
| `bookingId` | `booking_id` |
| `checkinDate` | `checkin` |
| `checkoutDate` | `checkout` |
| `hotelId` | `hotel_id` |
| `partnerOrderId` | `partner_order_id` |
| `payoutCreated` | `payout_created` |
| `postProcessing.bucketLink` | `voucher_url` |
| `pricing.agencyCommission` | `agency_commission` |
| `pricing.currency` | `agency_currency` |
| `pricing.supplierCurrency` | `supplier_currency` |
| `pricing.totalPrice` | `total_price` |
| `processingTime` | `processing_time` |
| `transactionCreated` | `transaction_created` |

### POST /api/v1/hotels/cancel_hotel
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `bookingId` | `booking_id` |
| `partner_order_id` | `booking_id` |
| `partnerOrderId` | `booking_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `bookingId` | `booking_id` |
| `bookingStatus` | `booking_status` |
| `processingTime` | `processing_time` |
| `refund.agencyAmount` | `agency_refund_amount` |
| `refund.cancellationType` | `cancellation_type` |
| `refund.currency` | `agency_currency` |
| `refund.providerAmount` | `supplier_refund_amount` |
| `refund.providerCurrency` | `supplier_currency` |
| `refund.travelerAmount` | `traveler_refund_amount` |
| `refundProcessed` | `refund_processed` |

### POST /api/v1/hotels/details
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `detailLevel` | `detail_level` |
| `hotelIds` | `hotel_ids` |
| `ids` | `hotel_ids` |
| `imagesLimit` | `images_limit` |

### POST /api/v1/hotels/get_hotel_info
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `detailLevel` | `detail_level` |
| `hid` | `hotel_id` |
| `hotelId` | `hotel_id` |
| `hotelIds` | `hotel_ids` |
| `id` | `hotel_id` |
| `ids` | `hotel_ids` |
| `imagesLimit` | `images_limit` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data[].checkIn` | `check_in_time` |
| `data[].checkOut` | `check_out_time` |
| `data[].hotelChain` | `hotel_chain` |
| `data[].isClosed` | `is_closed` |
| `data[].postalCode` | `postal_code` |
| `data[].region.countryCode` | `country_code` |
| `data[].starCertificate` | `star_certificate` |
| `data[].starRating` | `star_rating` |

### POST /api/v1/hotels/get_rates
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `check_in` | `checkin` |
| `check_out` | `checkout` |
| `checkin_date` | `checkin` |
| `checkinDate` | `checkin` |
| `checkout_date` | `checkout` |
| `checkoutDate` | `checkout` |
| `hotelId` | `hotel_id` |
| `id` | `hotel_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.hotelId` | `hotel_id` |
| `data.rates[].bookHash` | `book_hash` |
| `data.rates[].cancellationPolicy.freeCancellationBefore` | `free_cancellation_before` |
| `data.rates[].dailyPrices` | `daily_prices` |
| `data.rates[].exchangeRate` | `exchange_rate` |
| `data.rates[].matchHash` | `match_hash` |
| `data.rates[].pricing.agencyCommission` | `agency_commission` |
| `data.rates[].pricing.agencyCurrency` | `agency_currency` |
| `data.rates[].pricing.supplierCurrency` | `supplier_currency` |
| `data.rates[].pricing.totalPrice` | `total_price` |
| `processingTime` | `processing_time` |

### GET /api/v1/hotels/get_voucher
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `bookingId` | `booking_id` |
| `partner_order_id` | `booking_id` |
| `partnerOrderId` | `booking_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.bookingId` | `booking_id` |
| `data.voucherUrl` | `voucher_url` |
| `data.voucherUrlNoPrice` | `voucher_url_no_price` |
| `data.voucherUrlWithPrice` | `voucher_url_with_price` |

### POST /api/v1/hotels/pre_book
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `bookHash` | `book_hash` |
| `hash` | `book_hash` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.hotelId` | `hotel_id` |
| `data.rates[].bookHash` | `book_hash` |
| `data.rates[].cancellationPolicy.freeCancellationBefore` | `free_cancellation_before` |
| `data.rates[].dailyPrices` | `daily_prices` |
| `data.rates[].exchangeRate` | `exchange_rate` |
| `data.rates[].matchHash` | `match_hash` |
| `data.rates[].pricing.agencyCommission` | `agency_commission` |
| `data.rates[].pricing.agencyCurrency` | `agency_currency` |
| `data.rates[].pricing.supplierCurrency` | `supplier_currency` |
| `data.rates[].pricing.totalPrice` | `total_price` |
| `formData.partnerOrderId` | `partner_order_id` |
| `partnerOrderId` | `booking_id` |
| `partnerOrderId` | `partner_order_id` |
| `priceChanged` | `price_changed` |

### POST /api/v1/hotels/search
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `detailLevel` | `detail_level` |
| `hotelIds` | `hotel_ids` |
| `ids` | `hotel_ids` |
| `imagesLimit` | `images_limit` |

### POST /api/v1/hotels/search_advanced
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `check_in` | `checkin` |
| `check_out` | `checkout` |
| `checkin_date` | `checkin` |
| `checkinDate` | `checkin` |
| `checkout_date` | `checkout` |
| `checkoutDate` | `checkout` |
| `hotelId` | `hotel_id` |
| `id` | `hotel_id` |


## eSIMs


### GET /api/v1/esims/bookings

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `pagination.pages` | `total_pages` |

### GET /api/v1/esims/bookings/{booking_id}/setup-instructions

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.code` | `order_id` |
| `data.total_price` | `retail_price` |

### GET /api/v1/esims/bookings/{booking_id}/verify

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `isOwner` | `is_owner` |

### POST /api/v1/esims/orders
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `customer_email` | `email` |
| `customer_first_name` | `first_name` |
| `customer_last_name` | `last_name` |
| `customer_phone` | `phone` |
| `user_id` | `agent_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `balanceDebited` | `balance_debited` |
| `data.order.code` | `order_id` |
| `data.order.total_price` | `retail_price` |
| `payoutCreated` | `payout_created` |
| `transactionCreated` | `transaction_created` |

### GET /api/v1/esims/packages
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `filter[type]` | `type` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data[].balance_debit_amount` | `b2b_price` |
| `data[].id` | `package_id` |
| `data[].price` | `base_price` |
| `meta.agency_currency` | `currency` |

### GET /api/v1/esims/topup-packages/{iccid}

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.data[].balance_debit_amount` | `b2b_price` |
| `data.data[].id` | `package_id` |
| `data.data[].total_price` | `retail_price` |

### POST /api/v1/esims/topups
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `customer_email` | `email` |
| `customer_first_name` | `first_name` |
| `customer_last_name` | `last_name` |
| `customer_phone` | `phone` |
| `user_id` | `agent_id` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `balanceDebited` | `balance_debited` |
| `data.topup.code` | `order_id` |
| `data.topup.total_price` | `retail_price` |
| `payoutCreated` | `payout_created` |
| `transactionCreated` | `transaction_created` |


## Account and suppliers


### GET /api/v1/balances

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data[].currency_code` | `currency` |
| `meta.agencyId` | `agency_id` |
| `meta.financialOperationsEnabled` | `financial_operations_enabled` |

### GET /api/v1/balances/{balance_id}/history
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `from` | `date_from` |
| `from_date` | `date_from` |
| `to` | `date_to` |
| `to_date` | `date_to` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data[].balanceId` | `balance_id` |
| `data[].bookingRecordId` | `booking_record_id` |
| `data[].createdAt` | `created_at` |
| `meta.agencyId` | `agency_id` |
| `meta.balanceCurrency` | `balance_currency` |
| `meta.balanceId` | `balance_id` |
| `meta.financialOperationsEnabled` | `financial_operations_enabled` |
| `pagination.hasMore` | `has_more` |

### GET /api/v1/bookings/{booking_id}

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data.agencyCommission` | `agency_commission` |
| `data.agencyId` | `agency_id` |
| `data.agentId` | `agent_id` |
| `data.arrivalDate` | `arrival_date` |
| `data.balanceOperations` | `balance_operations` |
| `data.balanceOperations[].createdAt` | `created_at` |
| `data.bookingId` | `booking_id` |
| `data.bookingMode` | `booking_mode` |
| `data.checkinDate` | `checkin` |
| `data.checkoutDate` | `checkout` |
| `data.createdAt` | `created_at` |
| `data.customerEmail` | `customer_email` |
| `data.flightNumber` | `flight_number` |
| `data.hotelId` | `hotel_id` |
| `data.hotelName` | `hotel_name` |
| `data.netPrice` | `b2b_price` |
| `data.orderId` | `order_id` |
| `data.packageName` | `package_name` |
| `data.providerName` | `provider_name` |
| `data.receiptUrl` | `receipt_url` |
| `data.requireAcd` | `require_acd` |
| `data.supplierId` | `supplier_id` |
| `data.totalPrice` | `total_price` |
| `data.travelerPricing` | `traveler_pricing` |
| `data.updatedAt` | `updated_at` |
| `data.voucherUrl` | `voucher_url` |
| `data.voucherUrlNoPrice` | `voucher_url_no_price` |
| `data.voucherUrlWithPrice` | `voucher_url_with_price` |
| `meta.agencyId` | `agency_id` |

### GET /api/v1/history
**Request**: the previous spelling still works; use the name in the second column.

| Previous spelling | Use |
|---|---|
| `from` | `date_from` |
| `from_date` | `date_from` |
| `to` | `date_to` |
| `to_date` | `date_to` |

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `data[].agencyCommission` | `agency_commission` |
| `data[].agencyId` | `agency_id` |
| `data[].agentId` | `agent_id` |
| `data[].arrivalDate` | `arrival_date` |
| `data[].bookingId` | `booking_id` |
| `data[].bookingMode` | `booking_mode` |
| `data[].checkinDate` | `checkin` |
| `data[].checkoutDate` | `checkout` |
| `data[].createdAt` | `created_at` |
| `data[].customerEmail` | `customer_email` |
| `data[].flightNumber` | `flight_number` |
| `data[].hotelId` | `hotel_id` |
| `data[].hotelName` | `hotel_name` |
| `data[].netPrice` | `b2b_price` |
| `data[].orderId` | `order_id` |
| `data[].packageName` | `package_name` |
| `data[].providerName` | `provider_name` |
| `data[].receiptUrl` | `receipt_url` |
| `data[].requireAcd` | `require_acd` |
| `data[].supplierId` | `supplier_id` |
| `data[].totalPrice` | `total_price` |
| `data[].updatedAt` | `updated_at` |
| `data[].voucherUrl` | `voucher_url` |
| `data[].voucherUrlNoPrice` | `voucher_url_no_price` |
| `data[].voucherUrlWithPrice` | `voucher_url_with_price` |
| `meta.agencyId` | `agency_id` |
| `pagination.hasMore` | `has_more` |

### GET /api/v1/suppliers

**Response**: the key stays, and the snake_case twin is added next to it.

| Key | Twin |
|---|---|
| `meta.permissionRequired` | `permission_required` |
| `products[].suppliers[].voidDeadline` | `void_deadline` |
