Versions
v5
Glossary

API Type Glossary

The following types are references throughout the documentations and are defined here for convenience.

Type definitions are written in a Pseudo-TypeScript style. This is done to provide a more accurate representation of the types and to provide a more consistent experience when reading the documentation.

Public ID

A public ID is a UUID v5 unique identifier for a particular object. It is used to identify the object in the API and is used to retrieve the object from the API.

Type Definition

type PublicID = string;

Airport IATA Code

A 3-letter IATA code for an airport. Visit Airline and Location Code Search (opens in a new tab) for more information.

Type Definition

type AirportIATA = string;

Airline IATA Code

A 2-Alphanumeric IATA code for an airline. Visit Airline and Location Code Search (opens in a new tab) for more information.

Type Definition

type AirlineIATA = string;

Cabin Code

A 1-2 letter code identifying a cabin class. The following are the possible values:

  • Y: Economy
  • PY: Premium Economy
  • J: Business or First Class

Type Definition

type CabinCode = "Y" | "PY" | "J";

Passenger Code

Represents the age range of a passenger.

  • ADT: Adult
  • CHD: Child
  • INF: Infant (Currently Not Supported)

Type Definition

type PassengerCode = "ADT" | "CHD" | "INF";

Passenger Gender

Represents a passenger's gender.

  • F: Female
  • M: Male
  • X: Other genders

Type Definition

type PassengerGender = "F" | "M" | "X";

Session

A session that contexluizes a search or an order.

Sub Properties

  • flow: (FLIGHT | FLIGHT_BOOKING | HOTEL | HOTEL_BOOKING) The type of the session. FLIGHT_BOOKING indicates the session is used to retrieve information about an existing flight booking. HOTEL indicates a hotel search session. HOTEL_BOOKING indicates the session is used to retrieve information about an existing hotel booking.
  • public: (Public ID) The public ID of the session.
  • expireAt: (string) The date and time when the session will expire.
  • createdAt: (string) The date and time when the session was created.

Type Definition

interface Session {
  flow: "FLIGHT" | "FLIGHT_BOOKING" | "HOTEL" | "HOTEL_BOOKING";
  public: PublicID;
  expireAt: string;
  createdAt: string;
}

Example

{
  "flow": "FLIGHT_BOOKING",
  "id": "60d67317-2529-4e10-ae3e-9ba5c0746a3b",
  "expireAt": "2023-03-17T23:05:24.944Z",
  "createdAt": "2023-03-17T21:05:24.945Z"
}

Brand Name

An alphanumeric string containing the name of a brand. The names of brands will vary depending on the airline, the route and other factors.

🛎 It is advised not to assume the existence of any brand or associating the name of a brand with particular characteristics.

Type Definition

type BrandName = string;

Departure Arrival Information

Represents a departure or arrival information from or to an airport.

Sub Properties

  • airport_name: (string) The name of the airport.
  • airport_code: (Airport IATA Code) The IATA code of the airport.
  • airport_city_name: (string) The name of the city where the airport is located.
  • date_time: (string) The date and time of the flight departing from this airport.
  • terminal: (string?) The terminal of the airport.

Type Definition

interface DepartureArrivalInformation {
  airport_code: AirportIATA;
  airport_name: string;
  airport_city_name: string;
  date_time: string;
  terminal?: string;
}

Example

{
  "airport_code": "YEG",
  "airport_name": "Edmonton International Airport",
  "airport_city_name": "Edmonton",
  "date_time": "2023-05-16 07:00:00",
  "terminal": null
}

Flight Airport Information

Represents an airport visit within an itinerary. Will contain a layover time, if the airport is a layover airport.

Sub Properties

  • airport_name: (string) The name of the airport.
  • airport_code: (Airport IATA Code) The IATA code of the airport.
  • airport_city_name: (string) The name of the city where the airport is located.
  • date_time: (string) The date and time of the flight departing from this airport.
  • flight_number: (string?) The flight number of the flight departing from this airport.
  • layover_time: (string?) If this is a layover airport, the length of the layover in H.i format.

Type Definition

interface FlightAirportInformation {
  airport_name: string;
  airport_code: AirportIATA;
  airport_city_name: string;
  date_time: string;
  flight_number: string;
  layover_time?: `${number}.${number}`;
}

Example

{
  "airport_code": "YVR",
  "airport_name": "Vancouver International Airport",
  "airport_city_name": "Vancouver",
  "date_time": "2023-04-15 23:15:00",
  "flight_number": "",
  "layover_time": ""
}

Flight Airline Information

Represents an airline associated with a particular segment. Might be a marketing airline or an operating airline.

Sub Properties

  • airline_name: (string) The name of the airline.
  • airline_code: (Airline IATA Code) The IATA code of the airline.
  • flight_number: (string) The flight number associated with the segment.
  • alliance: (string) The name of the alliance the airline is a member of.

Type Definition

interface FlightAirlineInformation {
  airline_name: string;
  airline_code: AirlineIATA;
  flight_number: string;
  alliance?: "Star Alliance" | "SkyTeam" | "OneWorld" | string;
}

Example

{
  "airline_code": "DL",
  "airline_name": "Delta Air Lines",
  "flight_number": "4083",
  "alliance": "SkyTeam"
}

Segment Equipment Information

Represents an aircraft associated with a particular segment.

Sub Properties

  • code: (string) The IATA code of the aircraft.
  • name: (string?) The name of the aircraft.
  • graphic: (string?) The URL to an image of the aircraft.

Type Definition

interface SegmentEquipmentInformation {
  code: string;
  name?: string;
  graphic?: string;
}

Example

{
  "code": "73H",
  "name": "Boeing 737-800",
  "graphic": "https://bnwassets.s3.amazonaws.com/images/aircrafts/WS/73H.png"
}

Flight Brand Information

Represents a particular brand associated with a flight. This object indicates most characteristics of the ticket being sold.

Sub Properties

  • price_information: (Brand Price Information) The pricing information for the brand.
  • fare_information: (Brand Fare Information) Information about what the brand offers.
  • excluded: (boolean) Whether or not the brand is excluded from the search, based on the search preferences.
  • brand: (string) The name of the brand.
  • cabin: (string) The code for the cabin where the brand is located.
  • public: (Public ID) The public ID of the brand.

Type Definition

interface FlightBrandInformation {
  price_information: BrandPriceInformation;
  fare_information: BrandFareInformation;
  excluded?: boolean;
  brand: string;
  cabin: string;
  public: PublicID;
}

Brand Fare Information

Provides information about the fare associated with a brand.

Sub Properties

  • offerings: (Array<string>) A list of notable features of the fare.
  • cabin_codes: (Array<Record>?) A list of cabin codes associated with each segment of the flights.

    🛎 This is present because a brand might be marketed as a certain cabin, but the actual cabin might be different in certain segments of the entire itinerary.

    • cabin_codes[].departure : (Airport IATA Code) The IATA code of the airport which the segment departs from.
    • cabin_codes[].arrival : (Airport IATA Code) The IATA code of the airport which the segment arrives at.
    • cabin_codes[].cabinClass : (Cabin Code) The cabin code for the segment with the given departure and arrival airports.
  • rewards: (Brand Rewards Information?) The estimated rewards earned for purchasing the brand.
  • discount: (Brand Discount Information?) The discount information for the brand. This is only present if the brand is discounted, but for a more explicit way to check if a brand is discounted, use the discount.indicator property.

Type Definition

interface BrandFareInformation {
  offerings: string[];
  cabin_codes?: {
    departure: AirportIATA;
    arrival: AirportIATA;
    cabinClass: CabinCode;
  }[];
  rewards?: BrandRewardsInformation;
  discount?: BrandDiscountInformation;
}

Brand Price Information

Represents the pricing information for a particular brand.

Sub Properties

  • total_amount: (string) The total amount of the brand in the currency indicated.
  • base_amount: (string) The base amount of the brand in the currency indicated.
  • starting_fare_amount: (string) The lowest return pricing for the brand in the currency indicated. This takes into account the only the brands and fares that can be combined with the brand in question.
  • currency: (string) The ISO 4217 (opens in a new tab) currency code of the prices.
  • tax: (Price Tax Information) An object containing the tax information for the brand.
  • surcharge: (Price Surcharge Information) An object containing the surcharges information for the brand.

Type Definition

interface BrandPriceInformation {
  total_amount: string;
  base_amount: string;
  starting_fare_amount: string;
  currency: string;
  tax: PriceTaxInformation;
  surcharge: PriceSurchargeInformation;
}

Price Tax Information

Contains the total and the breakdown of the taxes for a particular price.

Sub Properties

  • total_tax : (string) The total amount of tax in the context of its parent.
  • tax : (Array<Charge Information>)

Type Definition

interface PriceTaxInformation {
  total_tax: string;
  tax: Array<ChargeInformation>;
}

Price Surcharge Information

Contains the total and the breakdown of the surcharges for a particular price.

Sub Properties

  • total_surcharge : (string) The total amount of surcharges in the context of its parent.
  • surcharge : (Array<Charge Information>)

Type Definition

interface PriceSurchargeInformation {
  total_surcharge: string;
  surcharge: Array<ChargeInformation>;
}

Charge Information

Represents an additional tax/surcharge that applies to a brand's price.

Sub Properties

  • amount: (string) The amount of the charge in the currency indicated in the parent.
  • code: (string) The code provided for the charge.
  • description: (string?) A description explaining what the charge is, according to its code.

Type Definition

interface ChargeInformation {
  amount: string;
  code: string;
  description?: string;
}

Brand Rewards Information

Represents estimated rewards earned when purchasing a brand.

Sub Properties

  • program: (Record) An object containing the reward program information.
    • program.title : (string) The name of the reward program.
    • program.code : (string) The code identifying the program.
    • program.image : (string?) The URL to the logo of the reward program.
  • amount: (string) The amount of rewards in the program's unit of measurement.

Type Definition

interface BrandRewardsInformation {
  program: {
    title: string;
    code: string;
    image?: string;
  };
  amount: string;
}

Brand Discount Information

If a discount or a corporate code is applied to a brand, this object will contain information about the discount.

Sub Properties

  • program: (Record) An object containing the reward program information.
    • program.title : (string) The name of the discount program.
    • program.identifier : (string?) A unique identifier for the discount program.
    • program.image : (string?) The URL to the logo of the discount program.
  • indicator: (true) Property explicitly indicating the application of a discount.
  • type: (string) The type of discount applied to the brand.
    • Possible values:
      • CONTRACT: Indicates a custom set of negotiated discounts. Usually used for larger corporate accounts.
      • ACCOUNT: Indicates a more general purpose discount. Usually used for smaller corporate accounts.
      • GENERAL: Indicates a general-purpose discount. Usually used for public discounts.
  • code: (string?) The code used to apply the discount.

Type Definition

interface BrandDiscountInformation {
  program: {
    title: string;
    identifier?: string;
    image?: string;
  };
  type: "CONTRACT" | "ACCOUNT" | "GENERAL";
  code?: string;
  indicator: true;
}

Example

{
  "program": {
    "title": "AC for Business",
    "identifier": "ACB",
    "image": "https://bnwassets.s3.amazonaws.com/images/airline-logos/logo_air_AC_32x32.gif"
  },
  "indicator": true,
  "type": "ACCOUNT",
  "code": "ACB123"
}

Itinerary Price Information

Represents pricing of an itinerary, including seats and ancillaries.

Sub Properties

  • itinerary_price.total_amount: (string) The total amount. This is the sum of the base_amount, tax, and surcharge.
  • itinerary_price.base_amount: (string) The base amount. It is the sum of the base prices for the flights and seats.
  • itinerary_price.currency: (string) The ISO 4217 (opens in a new tab) currency code of the prices.
  • itinerary_price.tax: (Price Tax Information) An object containing the tax information.
  • itinerary_price.surcharge: (Price Surcharge Information) An object containing the surcharge information.

Type Definition

interface ItineraryPriceInformation {
  total_amount: string;
  base_amount: string;
  currency: string;
  tax: PriceTaxInformation;
  surcharge: PriceSurchargeInformation;
}

Pricing Itinerary Price Information

Pricing Itinerary Price contains information about pricing of an itinerary in a pricing call. It is the same as Itinerary Price Information, but has information about the strategy and changes of the pricing.

Sub Properties

It looks just like Itinerary Price Information but it also contains:

  • pricing_strategy: (Pricing Strategy) The pricing strategy used to calculate the price. The strategies are automatically chosen by the API in order to ensure compatibility with the airline's pricing rules and to minimize pricing.
  • change_indicator: (Price Change?) If the price has changed from the previous steps, this object will contain the information about the change.

Type Definition

type PricingItineraryPriceInformation = ItineraryPriceInformation & {
  pricing_strategy: PricingStrategy;
  change_indicator: PriceChange;
};

Segment Information

Contains information about one segment of a bound. A segment is an individual flight between two airports. Each bound will have one or more segments. A direct bound will only have one segment.

Sub Properties

  • departure_information: (Departure Arrival Information) An object containing information about the departure and its airport.
  • arrival_information: (Departure Arrival Information) An object containing information about the arrival and its airport.
  • marketing_airline_information: (Flight Airline Information) An object containing information about the airline marketing the fares.
  • marketing_airline_information: (Flight Airline Information?) An object containing information about the airline operating the fares. Operating airline might not be present for fares that are operated by their marketing airline.
  • additional_information: (Record) An object containing additional information about the segment.
    • additional_information.equipment: (Segment Equipment Information?) An object containing information about the equipment used on this segment.
    • additional_information.flight_detail: (Record?) Object containing some additional information about the segment.
      • additional_information.flight_detail.duration: (string?) The duration of the flight in minutes.
      • additional_information.flight_detail.stop_quantity: (number?) the number of stops on this flight. This is not the same as the number of segments, as this is inside a segment. This is in case of a indirect flight.
  • emission: (number?) The total amount of CO2 emitted by this flight in KgCO2e per passenger.
  • distance: (number?) The distance of the flight in miles.

Type Definition

export interface SegmentInformation {
  departure_information: DepartureArrivalInformation;
  arrival_information: DepartureArrivalInformation;
  marketing_airline_information: FlightAirlineInformation;
  operating_airline_information?: FlightAirlineInformation;
  additional_information: {
    equipment?: SegmentEquipmentInformation;
    flight_detail?: {
      duration?: string;
      stop_quantity?: number;
    };
  };
  emission?: number;
  distance?: number;
}

Example

{
  "departure_information": {
    "airport_code": "YVR",
    "airport_name": "Vancouver International Airport",
    "airport_city_name": "Vancouver",
    "date_time": "2023-07-21 18:10",
    "terminal": "M"
  },
  "arrival_information": {
    "airport_code": "YYZ",
    "airport_name": "Lester B. Pearson International Airport",
    "airport_city_name": "Toronto",
    "date_time": "2023-07-22 01:43",
    "terminal": "1"
  },
  "marketing_airline_information": {
    "airline_code": "AC",
    "airline_name": "Air Canada",
    "flight_number": "124",
    "alliance": "Star Alliance"
  },
  "operating_airline_information": {
    "airline_code": "AC",
    "airline_name": "Air Canada",
    "flight_number": null,
    "alliance": "Star Alliance"
  },
  "additional_information": {
    "equipment": {
      "code": "321",
      "name": "Airbus A321",
      "graphic": "https://bnwassets.s3.amazonaws.com/images/aircrafts/AC/321.png"
    },
    "flight_detail": {
      "duration": 273,
      "original_duration_form": "PT04H33M",
      "stop_quantity": "0"
    }
  },
  "emission": 244.37,
  "distance": 1977.49
}

Flight Fare

A flight fare is a representation of a bound. It may contain one or more segments. It will also contain different Brands, one of which will have to be selected.

Sub Properties

  • public: (Public ID) The public ID of the flight fare. This will be used to select and retrieve the flight.
  • expireAt: (string) The time in which the flight will expire. This will hold the same as the expireAt property of your Session.
  • airports: (Array<Flight Airport Information>) An array representing all of the airports visited.
  • sort_field: (Record) An object containing general information about the flight.
    • sort_field.departure_date_time: (string) The date and time of the flight's departure.
    • sort_field.arrival_date_time: (string) The date and time of the flight's arrival.
    • sort_field.airline: (Array<string>) An array containing unique names of the airlines that are flying on this flight.
    • sort_field.stops: (number) The number of stops on this flight.
    • sort_field.elapse_time: (string) The length of the flight in H.i format.
    • sort_field.alliance: (Array<string>) An array containing unique names of the alliances that the airlines on this flight are a part of.
    • sort_field.emission: (number?) The total amount of CO2 emitted by this flight in KgCO2e per passenger.
  • segments: (Array<Segment Information>) An array of objects representing the flight segments.
  • brand_information: (Record<Cabin Code, Record< Brand Name ,Brand Information> >) An object containing information about the brands available for each cabin.

Type Definition

interface FlightFare {
  public: Public;
  expireAt: string;
  airports: FlightAirportInformation[];
  sort_field: {
    departure_date_time: string;
    arrival_date_time: string;
    airline: string[];
    stops: number;
    elapse_time: string;
    alliance: FlightAirlineInformation["allliance"];
    emission?: number;
  };
  segments: SegmentInformation[];
  brand_information: Record<
    CabinCode,
    Record<BrandName, FlightBrandInformation>
  >;
}

Example

{
  "airports": [
    {
      "airport_code": "YUL",
      "airport_name": "Montreal / Pierre Elliott Trudeau International Airport",
      "airport_city_name": "Montreal",
      "date_time": "2023-04-15 20:30:00",
      "flight_number": "772",
      "layover_time": ""
    },
    {
      "airport_code": "YVR",
      "airport_name": "Vancouver International Airport",
      "airport_city_name": "Vancouver",
      "date_time": "2023-04-15 23:15:00",
      "flight_number": "",
      "layover_time": ""
    }
  ],
  "sort_field": {
    "departure_date_time": "2023-04-15 20:30:00",
    "arrival_date_time": "2023-04-15 23:15:00",
    "airline": ["Air Transat"],
    "stops": 0,
    "elapse_time": "5.45",
    "cheapest_price": "0.00",
    "alliances": [],
    "emission": 255.55
  },
  "segments": [
    {
      "departure_information": {
        "airport_code": "YUL",
        "airport_name": "Montreal / Pierre Elliott Trudeau International Airport",
        "airport_city_name": "Montreal",
        "date_time": "2023-04-15 20:30:00",
        "terminal": null
      },
      "arrival_information": {
        "airport_code": "YVR",
        "airport_name": "Vancouver International Airport",
        "airport_city_name": "Vancouver",
        "date_time": "2023-04-15 23:15:00",
        "terminal": "M"
      },
      "marketing_airline_information": {
        "airline_code": "TS",
        "airline_name": "Air Transat",
        "flight_number": "772",
        "alliance": null
      },
      "operating_airline_information": {
        "airline_code": "TS",
        "airline_name": "Air Transat",
        "flight_number": "772",
        "alliance": null
      },
      "additional_information": {
        "equipment": {
          "code": "32Q",
          "name": "Airbus A321neo",
          "graphic": null
        },
        "e_ticket": "true",
        "mileage": "2295",
        "flight_detail": {
          "duration": "345"
        }
      },
      "emission": 255.55,
      "distance": 2295
    }
  ],
  "brand_information": {
    "Y": {
      "economy budget": {
        "price_information": {
          "total_amount": "163.41",
          "base_amount": "70.00",
          "starting_fare_amount": "0.00",
          "currency": "CAD",
          "tax": {
            "total_tax": "93.41",
            "tax": [
              {
                "amount": "7.11",
                "code": "XG",
                "description": "Goods And Services Tax (gst)"
              },
              {
                "amount": "35.00",
                "code": "SQ",
                "description": "Airport Improvement Fee (aif), (domestic/international)"
              },
              {
                "amount": "14.18",
                "code": "XQ",
                "description": "Quebec Sales Tax"
              },
              {
                "amount": "30.00",
                "code": "YQ",
                "description": "Airline Fuel And Insurance Surcharge"
              },
              {
                "amount": "7.12",
                "code": "CA",
                "description": "Air Travellers Security Charge (domestic/international)"
              }
            ]
          },
          "surcharge": {
            "total_surcharge": "0.00",
            "surcharge": []
          }
        },
        "fare_information": {
          "offerings": [
            "Paid Alcoholic Drinks and Free Non-Alcoholic Drinks",
            "On-demand Entertainment Available",
            "Paid Light Meal",
            "All Rows have Power/usb Available",
            "255.55 KgCo2e total emissions"
          ],
          "discount": null,
          "cabin_codes": [
            {
              "departure": "YUL",
              "arrival": "YVR",
              "cabinClass": "Y"
            }
          ],
          "rewards": null
        },
        "media_information": [],
        "baggage_information": {
          "free_baggages": [
            {
              "messages": ["Free 0 for segments "],
              "charge": "0.00",
              "piece": "0"
            }
          ],
          "charged_baggages": [
            {
              "messages": [
                "UP TO 50 POUNDS/23 KILOGRAMS",
                "UP TO 62 LINEAR INCHES/158 LINEAR CENTIMETERS"
              ],
              "charge": "40.00",
              "piece": "1"
            },
            {
              "messages": [
                "UP TO 50 POUNDS/23 KILOGRAMS",
                "UP TO 62 LINEAR INCHES/158 LINEAR CENTIMETERS"
              ],
              "charge": "70.00",
              "piece": "2"
            },
            {
              "messages": [
                "UP TO 50 POUNDS/23 KILOGRAMS",
                "UP TO 62 LINEAR INCHES/158 LINEAR CENTIMETERS"
              ],
              "charge": "225.00",
              "piece": "3"
            },
            {
              "messages": [
                "UP TO 50 POUNDS/23 KILOGRAMS",
                "UP TO 62 LINEAR INCHES/158 LINEAR CENTIMETERS"
              ],
              "charge": "225.00",
              "piece": "3"
            }
          ]
        },
        "optional_information": {
          "offer": {
            "offer_id": null,
            "offer_expiration": "2023-04-10T23:22:28.079883Z"
          }
        },
        "excluded": false,
        "expireAt": "2023-04-10T23:23:29.711Z",
        "brand": "economy budget",
        "cabin": "Y",
        "createdAt": "2023-04-10T21:23:29.950Z",
        "public": "9407ae91-625f-4e81-9188-584c979b744f"
      }
    },
    "PY": {
      "club standard": {
        "price_information": {
          "total_amount": "623.31",
          "base_amount": "470.00",
          "starting_fare_amount": "459.90",
          "currency": "CAD",
          "tax": {
            "total_tax": "153.31",
            "tax": [
              {
                "amount": "27.11",
                "code": "XG",
                "description": "Goods And Services Tax (gst)"
              },
              {
                "amount": "35.00",
                "code": "SQ",
                "description": "Airport Improvement Fee (aif), (domestic/international)"
              },
              {
                "amount": "54.08",
                "code": "XQ",
                "description": "Quebec Sales Tax"
              },
              {
                "amount": "30.00",
                "code": "YQ",
                "description": "Airline Fuel And Insurance Surcharge"
              },
              {
                "amount": "7.12",
                "code": "CA",
                "description": "Air Travellers Security Charge (domestic/international)"
              }
            ]
          },
          "surcharge": {
            "total_surcharge": "0.00",
            "surcharge": []
          }
        },
        "fare_information": {
          "offerings": [
            "Free Alcoholic Drinks and Free Non-Alcoholic Drinks",
            "On-demand Entertainment Available",
            "Free Premium Meal",
            "All Rows have Power/usb Available",
            "Fully refundable",
            "2 checked bags free",
            "383.325 KgCo2e total emissions"
          ],
          "discount": null,
          "cabin_codes": [
            {
              "departure": "YUL",
              "arrival": "YVR",
              "cabinClass": "PY"
            }
          ],
          "rewards": null
        },
        "media_information": [],
        "baggage_information": {
          "free_baggages": [
            {
              "messages": ["Free 2 for segments "],
              "charge": "0.00",
              "piece": "2"
            }
          ],
          "charged_baggages": []
        },
        "optional_information": {
          "offer": {
            "offer_id": null,
            "offer_expiration": "2023-04-10T23:22:28.079883Z"
          }
        },
        "excluded": false,
        "expireAt": "2023-04-10T23:23:29.711Z",
        "brand": "club standard",
        "cabin": "PY",
        "createdAt": "2023-04-10T21:23:29.951Z",
        "public": "21959f67-db5c-43b0-899a-f2b44dea25f3"
      },
      "club flex": {
        "price_information": {
          "total_amount": "1175.19",
          "base_amount": "950.00",
          "starting_fare_amount": "1011.78",
          "currency": "CAD",
          "tax": {
            "total_tax": "225.19",
            "tax": [
              {
                "amount": "51.11",
                "code": "XG",
                "description": "Goods And Services Tax (gst)"
              },
              {
                "amount": "35.00",
                "code": "SQ",
                "description": "Airport Improvement Fee (aif), (domestic/international)"
              },
              {
                "amount": "101.96",
                "code": "XQ",
                "description": "Quebec Sales Tax"
              },
              {
                "amount": "30.00",
                "code": "YQ",
                "description": "Airline Fuel And Insurance Surcharge"
              },
              {
                "amount": "7.12",
                "code": "CA",
                "description": "Air Travellers Security Charge (domestic/international)"
              }
            ]
          },
          "surcharge": {
            "total_surcharge": "0.00",
            "surcharge": []
          }
        },
        "fare_information": {
          "offerings": [
            "Free Alcoholic Drinks and Free Non-Alcoholic Drinks",
            "On-demand Entertainment Available",
            "Free Premium Meal",
            "All Rows have Power/usb Available",
            "Fully refundable",
            "2 checked bags free",
            "383.325 KgCo2e total emissions"
          ],
          "discount": null,
          "cabin_codes": [
            {
              "departure": "YUL",
              "arrival": "YVR",
              "cabinClass": "PY"
            }
          ],
          "rewards": null
        },
        "media_information": [],
        "baggage_information": {
          "free_baggages": [
            {
              "messages": ["Free 2 for segments "],
              "charge": "0.00",
              "piece": "2"
            }
          ],
          "charged_baggages": []
        },
        "optional_information": {
          "offer": {
            "offer_id": null,
            "offer_expiration": "2023-04-10T23:22:28.079883Z"
          }
        },
        "excluded": false,
        "expireAt": "2023-04-10T23:23:29.711Z",
        "brand": "club flex",
        "cabin": "PY",
        "createdAt": "2023-04-10T21:23:29.952Z",
        "public": "8d504db7-544c-4679-93de-fdb88efe8e55"
      }
    }
  },
  "expireAt": "2023-04-10T23:23:29.711Z",
  "createdAt": "2023-04-10T21:23:36.239Z",
  "public": "eb02945c-f793-4c00-8053-edd756de4b15"
}

Itinerary Flight Fare

An itinerary flight fare is a representation of a bound that has already been selected. It looks just like the Flight Fare, but it only has a single Brand Information; the one that has been selected.

Sub Properties

It contains the same properties as a Flight Fare, with the exception of its brand_information:

  • brand_information: (Brand Information) The object containing the selected brand information.

Type Definition

type ItineraryFlightFare = Omit<FlightFare, "brand_information"> & {
  brand_information: FlightBrandInformation;
};

Example

{
  "airports": [
    {
      "airport_code": "YUL",
      "airport_name": "Montreal / Pierre Elliott Trudeau International Airport",
      "airport_city_name": "Montreal",
      "date_time": "2023-05-15 22:00:00",
      "flight_number": "8533",
      "layover_time": ""
    },
    {
      "airport_code": "YYC",
      "airport_name": "Calgary International Airport",
      "airport_city_name": "Calgary",
      "date_time": "2023-05-16 04:00:00",
      "flight_number": "8591",
      "layover_time": "03.30"
    },
    {
      "airport_code": "YVR",
      "airport_name": "Vancouver International Airport",
      "airport_city_name": "Vancouver",
      "date_time": "2023-05-16 04:05:00",
      "flight_number": "",
      "layover_time": ""
    }
  ],
  "sort_field": {
    "departure_date_time": "2023-05-15 22:00:00",
    "arrival_date_time": "2023-05-16 04:05:00",
    "airline": ["WestJet"],
    "stops": 1,
    "elapse_time": "9.05",
    "cheapest_price": "34.49",
    "alliances": [],
    "emission": 313.54
  },
  "segments": [
    {
      "departure_information": {
        "airport_code": "YUL",
        "airport_name": "Montreal / Pierre Elliott Trudeau International Airport",
        "airport_city_name": "Montreal",
        "date_time": "2023-05-15 22:00:00",
        "terminal": null
      },
      "arrival_information": {
        "airport_code": "YYC",
        "airport_name": "Calgary International Airport",
        "airport_city_name": "Calgary",
        "date_time": "2023-05-16 00:30:00",
        "terminal": null
      },
      "marketing_airline_information": {
        "airline_code": "WS",
        "airline_name": "WestJet",
        "flight_number": "8533",
        "alliance": null
      },
      "operating_airline_information": {
        "airline_code": "WS",
        "airline_name": "WestJet",
        "flight_number": "8533",
        "alliance": null
      },
      "additional_information": {
        "equipment": {
          "code": "73H",
          "name": "Boeing 737-800",
          "graphic": "https://bnwassets.s3.amazonaws.com/images/aircrafts/WS/73H.png"
        },
        "mileage": "1873",
        "flight_detail": {
          "duration": "270"
        }
      },
      "emission": 255.22,
      "distance": 1873
    },
    {
      "departure_information": {
        "airport_code": "YYC",
        "airport_name": "Calgary International Airport",
        "airport_city_name": "Calgary",
        "date_time": "2023-05-16 04:00:00",
        "terminal": null
      },
      "arrival_information": {
        "airport_code": "YVR",
        "airport_name": "Vancouver International Airport",
        "airport_city_name": "Vancouver",
        "date_time": "2023-05-16 04:05:00",
        "terminal": null
      },
      "marketing_airline_information": {
        "airline_code": "WS",
        "airline_name": "WestJet",
        "flight_number": "8591",
        "alliance": null
      },
      "operating_airline_information": {
        "airline_code": "WS",
        "airline_name": "WestJet",
        "flight_number": "8591",
        "alliance": null
      },
      "additional_information": {
        "equipment": {
          "code": "73H",
          "name": "Boeing 737-800",
          "graphic": "https://bnwassets.s3.amazonaws.com/images/aircrafts/WS/73H.png"
        },
        "mileage": "428",
        "flight_detail": {
          "duration": "65"
        }
      },
      "emission": 58.32,
      "distance": 428
    }
  ],
  "brand_information": {
    "price_information": {
      "total_amount": "191.00",
      "base_amount": "124.00",
      "starting_fare_amount": "34.49",
      "currency": "CAD",
      "tax": {
        "total_tax": "67.00",
        "tax": [
          {
            "amount": "8.31",
            "code": "XG",
            "description": "Goods And Services Tax (gst)"
          },
          {
            "amount": "35.00",
            "code": "SQ",
            "description": "Airport Improvement Fee (aif), (domestic/international)"
          },
          {
            "amount": "16.57",
            "code": "XQ",
            "description": "Quebec Sales Tax"
          },
          {
            "amount": "7.12",
            "code": "CA",
            "description": "Air Travellers Security Charge (domestic/international)"
          }
        ]
      },
      "surcharge": {
        "total_surcharge": "0.00",
        "surcharge": []
      }
    },
    "fare_information": {
      "offerings": ["313.54 KgCo2e total emissions"],
      "discount": null,
      "cabin_codes": [
        {
          "departure": "YUL",
          "arrival": "YYC",
          "cabinClass": "Y"
        },
        {
          "departure": "YYC",
          "arrival": "YVR",
          "cabinClass": "Y"
        }
      ],
      "rewards": null
    },
    "excluded": false,
    "expireAt": "2023-04-12T23:51:17.988Z",
    "createdAt": "2023-04-12T21:51:18.204Z",
    "public": "d692a169-f37f-49a6-91da-b94a43cce0cc"
  },
  "createdAt": "2023-04-12T21:51:22.513Z",
  "public": "a5e56c0d-681c-4253-b6bb-fd0d7b0795ae",
  "expireAt": "2023-04-12T23:51:17.988Z"
}

Order Flight Fare

An Order flight fare is a representation of a bound that has already been ordered. It looks just like the Itinerary Flight Fare, but it may also have some additional information.

Sub Properties

It contains the same properties as a Itinerary Flight Fare, but also contains:

  • check_in: (Record?) Information about the check in process.
    • check_in.check_in_link: (string?) Link to airline's check in page.
    • check_in.check_in_window: (Array?) Date and time of the beginning and the end of the check in window.

Type Definition

type OrderFlightFare = ItineraryFlightFare & {
  check_in?: {
    check_in_link?: string;
    check_in_window?: [string, string];
  };
};

Seat Row

An array representing a row of seat/seat-like objects on the aircraft.

Type Definition

type SeatRow = Array<SeatLike>;

Seat-Like

Represents a single seat or a logical placeholder for a seat.

Sub Properties

  • position: (string) The position and the entity of the seat
    • Possible values:
      • AISLE
      • CENTER
      • WINDOW
      • EXIT-DOOR
      • EXIT
      • WING
      • HALLWAY
      • WALL
      • EMPTY
  • rowIndex: (number) The index of the row which the seat is in, starting from 0.
  • columnIndex: (number) The index of the seat in the row, starting from 0.
  • row: (string) The actual row number of the seat on the aircraft. This property is not necessarily in sequential order, or even numeric. Use rowIndex for any logical operations.
  • selectable: (boolean) Whether the seat is selectable or not. Only seats with this property set to true can be selected.
  • expireAt: (string?) The date and time at which the seat will expire.
  • public: (Public ID) The public ID of the seat-like.
  • seat: (Seat?) The seat information if the seat-like is an actual seat.

Type Definition

interface SeatLike {
  seat?: Seat;
  position:
    | "ASILE"
    | "CENTER"
    | "WINDOW"
    | "EXIT-DOOR"
    | "EXIT"
    | "WING"
    | "HALLWAY"
    | "WALL"
    | "EMPTY";
  row: string;
  rowIndex: number;
  columnIndex: number;
  selectable: boolean;
  expireAt: string;
}

Example

{
  "position": "CENTER",
  "rowIndex": 3,
  "seatIndex": 5,
  "selectable": true,
  "seat": {
      "row": "8",
      "column": "E",
      "position": "CENTER",
      "status": "free",
      "preferred": false,
      "description": "CENTER Seat",
      "service_type": "SEAT",
      "price": {
          "total_price": "0.00",
          "total_tax": "0.00",
          "currency": "CAD",
      }
  },
  "expireAt": "2023-04-14T23:32:21.703Z",
  "createdAt": "2023-04-14T22:33:43.512Z",
  "public": "7d089afb-548f-46c9-924b-98bba090e4bd"
},

Seat

Represents information about an actual seat.

Sub Properties

  • position: (string) The position and the entity of the seat
    • Possible values:
      • AISLE
      • CENTER
      • WINDOW
      • EXIT-DOOR
      • EXIT
      • WING
      • HALLWAY
      • WALL
      • EMPTY
  • row: (string) The actual row number of the seat on the aircraft. This property is not necessarily in sequential order, or even numeric. Use rowIndex for any logical operations.
  • column: (string) The actual column of the seat on the aircraft. This property is usually a single character, but can be a number or a string.
  • status: (string) The status of the seat.
    • Possible values:
      • paid: The seat is paid for.
      • free: The seat is free.
  • preferred: (boolean) Whether the seat is preferred or a standard seat.
  • description: (Public ID) The public ID of the seat-like.
  • price: (Record?) The price of the seat.
    • total_price: (string) The total price of the seat.
    • total_tax: (string) The total tax of the seat.
    • currency: (string) The ISO 4217 (opens in a new tab) currency code of the seat.
    • base_price: (string?) The base price of the seat.

Type Definition

interface Seat {
  row: string;
  column: string;
  price: {
    total_price: string;
    total_tax: string;
    currency: string;
    base_price: string;
  };
  position: string;
  status: "paid" | "free";
  preferred: boolean;
  description: string;
}

Example

{
  "row": "8",
  "column": "E",
  "position": "CENTER",
  "status": "free",
  "preferred": false,
  "description": "CENTER Seat",
  "service_type": "SEAT",
  "price": {
      "total_price": "0.00",
      "base_price": "0.00",
      "total_tax": "0.00",
      "currency": "CAD",
  }
},

Selected Seat-Like

Sub Properties

Represents seat like, after it has been selected by the passenger. It contains the same properties as a Seat-Like, but also contains:

  • bound: (number) The index of the bound to which the seat-like belongs.
  • segment: (number) The index of the segment, within the bound, to which the seat-like belongs.
  • passenger: (Record) Information of the passenger to which the seat-like now belongs.
    • public : (Public ID) The public ID of the passenger.

Type Definition

type SelectedSeatLike = SeatLike & {
  bound: number;
  segment: number;
  passenger: {
    public: PublicID;
  };
};

Order Seat-Like

Sub Properties

Represents seat like, after it has been ordered. It contains the same properties as a Selected Seat-Like, but also contains:

  • confirmed: (boolean?) Whether or not the seat has been confirmed by the airline.

Type Definition

type OrderSeatLike = SelectedSeatLike & {
  confirmed?: boolean;
};

Pricing Strategy

Depending on the selected fares, the pricing strategy will indicate whether the selected fares were priced as a bundle or as individual fares. The possible values are:

  • BUNDLED: The fares were priced as a bundle.
  • SEPARATE: The fares were priced as individual fares.

Type Definition

type PricingStrategy = "BUNDLED" | "SEPARATE";

Price Change

Sub Properties

Represents change in the price of a fare. It contains the following properties:

  • difference: (string) The difference in price in the currency of its context.
  • type: (string) Whether the price has increased or decreased.
    • Possible values:
      • MORE: The price has increased.
      • LESS: The price has decreased.
  • reason: (Price Change Reason) The reason for the price change.

Type Definition

interface PriceChange {
  difference: string;
  type: "MORE" | "LESS";
  reason: PriceChangeReason;
}

Example

{
  "difference": "20.00",
  "reason": "REPRICED",
  "type": "MORE"
}

Price Change Reason

Indicates the reason for a price change. The possible values are:

  • BUNDLED: The price has changed as a result of bundling previously unbundled fares.
  • REPRICED: The price has changed due to cached pricing or a change of price by the vendor.

Type Definition

type PriceChangeReason = "BUNDLED" | "REPRICED";

Passenger Information

Object describing a passenger.

Sub Properties

  • phone_number: (string) Passenger's phone number in the E.164 (opens in a new tab) format.
  • email: (string) Passenger's email.
  • code: (Passenger Code) Passenger's age range code.
  • personal_info: (Record) Passenger's personal information
    • personal_info.date_of_birth: (string) Passenger's date of birth ISO8601 (opens in a new tab) date format.
    • personal_info.first_name: (string) Passenger's first name.
    • personal_info.last_name: (string) Passenger's last name.
    • personal_info.middle_name: (string?) Passenger's middle name.
    • personal_info.gender: (Passenger Gender) Passenger's gender code.
  • frequent_flyer: (Flight Frequent Flyer Information?) Passenger's frequent flyer information.

Type Definition

interface PassengerInformation {
  code: PassengerCode;
  email: string;
  phone_number: string;
  passenger_id: string;
  frequent_flyer?: FlightFrequentFlyerInformation;
  personal_info: {
    first_name: string;
    last_name: string;
    middle_name?: string;
    gender: PassengerGender;
    date_of_birth: string;
  };
}

Flight Frequent Flyer Information

A Passenger's frequent flyer information.

Sub Properties

  • program_id: (string) Passenger's frequent flyer program id, must be an IATA airline code.
  • id: (string) Passenger's frequent flyer id.

Type Definition

interface FlightFrequentFlyerInformation {
  program_id: string;
  id: string;
}

Validation

The following programs have specific validation rules for the id field:

program_idid validation
AC/^[0-9]{9}$/

Flight Order Passenger Information

Flight Order Passenger Information contains information about passengers within a flight order. It is the same as Passenger Information, but it also potentially has a ticket_number attached to it.

Sub Properties

It looks just like Passenger Information but it also contains:

  • ticket_number: (string?) Passenger's ticket number, if available.

Type Definition

type FlightOrderPassengerInformation = PassengerInformation & {
  ticket_number?: string;
};

Payment Card Type

Represents the supported payment card types.

Possible Values

  • visa: Visa payment card
  • masterCard: MasterCard payment card
  • discover: Discover payment card
  • jcb: JCB payment card
  • diners: Diners Club payment card
  • americanExpress: American Express payment card

Type Definition

type PaymentCardType = "visa" | "masterCard" | "discover" | "jcb" | "diners" | "americanExpress";

Payment Information

Object describing a payment.

Sub Properties

  • code: (Payment Card Type) The TokenEx cardType (opens in a new tab).
  • first_name: (string) The first name of the cardholder.
  • last_name: (string) The last name of the cardholder.
  • token: (string) The payment token associated with the card.
  • expiry: (string) The expiry date of the card.
  • billing_information: (Record) An object containing the billing address details.
    • billing_information.unit: (string?) The unit number (optional).
    • billing_information.country: (string) ISO 3166 (opens in a new tab) code for the country.
    • billing_information.state: (string) The two letter abbreviation of the state/province.
    • billing_information.address: (string) The street address.
    • billing_information.city: (string) The name of the city.
    • billing_information.postal_code: (string) The postal code/zip code.

Type Definition

interface PaymentInformation {
  code: PaymentCardType;
  first_name: string;
  last_name: string;
  token: string;
  expiry: string;
  billing_information: {
    unit?: string;
    country: string;
    state: string;
    address: string;
    city: string;
    postal_code: string;
  };
}

Alternative Payment Information

Object describing an alternativePayment method.

Sub Properties

  • method: (VERTO) The alternative payment method. Currently only VERTO is supported.
  • payload: (Verto Payment Method Payload) The payload for the alternative payment method. Each method has its own payload structure.

Type Definition

interface AlternativePaymentInformation {
  code: "VERTO";
  payload: {
    sample: "payload";
  };
}

Verto Payment Method Payload

Object describing the payload for the Verto payment method.

Sub Properties

  • token: (string) The Verto token represneting the transaction.

Type Definition

interface VertoPaymentMethodPayload {
  token: string;
}

Fare Matching

Object describing a matching fare

Sub Properties

  • public : (Public ID) The public ID of the matching fare.
  • airline: (Array<string>) The marketing airlines of the flights included in the fare.
  • duration: (string) The flight duration of the fare (TODO: Includes stopover or not?).
  • departure: (string) The departure time of the fare.
  • departureAirport: (string) The departure location of the fare.
  • arrival: (string) The arrival time of the fare.
  • arrivalAirport: (string) The arrival location of the fare.
  • brands: (Array<Brand Matching>) The brands of the given fare that can be matched with the queried fares.

Type Definition

interface FareMatching {
  airline: string[];
  duration: string;
  departure: string;
  departureAirport: string;
  arrival: string;
  arrivalAirport: string;
  layovers: Record<string, string>;
  public: string;
  brands: BrandMatching[];
}

Brand Matching

Object describing a matching brand

Sub Properties

  • total_amount : (string) The total price of the brand.
  • starting_fare_amount : (string) For the first bound, this is the minimum priced itinerary that can be created with the given brand. For subsequent bounds, this is the price increase compared to the minimum branded fare for the given bound.
  • currency : (string) : The ISO 4217 (opens in a new tab) currency code of the total_amount and starting_fare_amount
  • name : (string) The airline's name for the given brand class.
  • cabin : (Cabin Code) The cabin to which the brand belongs.
  • offering : (string[]) All of the additional amenities offered with the flight
  • fare_matchings : (Array<Record>) The brands from the selectedFares with which the current brand can be matched.
    • fare_matchings[].public: (Public ID) The public ID of the fare given in selectedFares.
    • fare_matchings[].brand_matchings: (Array<Record>) The brands of the selectedFares with which the brand from fares[].brands[] can be matched.
      • fare_matchings[].brand_matchings[].public : (Public ID) The public ID of the given brand.
      • fare_matchings[].brand_matchings[].name : (string) The airline's name for the given brand class.
      • fare_matchings[].brand_matchings[].cabin : (Cabin Code) The cabin to which the brand belongs.

Type Definition

interface BrandMatching {
  public: string;
  total_amount: string;
  starting_fare_amount: string;
  name: string;
  cabin: string;
  currency: string;
  fare_matchings: Array<{
    public: string;
    brand_matchings: Record<string, string>;
  }>;
}

SDK Load Payload

This object is returned by the API in order to load the browser SDK. It contains the information required by the SDK to initialize.

Sub Properties

  • gateway : (string) The provider the SDK uses for its functionalities.
  • payload : (Record<string,any>) The details required by the provider for the initialization.

Type Definition

interface ThreeDSecureAction {
  gateway: string;
  payload: Record<string, any>;
}

3D Secure Action

Object describing a 3D Secure action that needs to be handled by the browser SDK.

Sub Properties

  • gateway : (string) The 3D Secure provider processing the authentication.
  • payload : (Record<string,any>) The details required by the provider for the authentication.
  • action : (three_d_s) The action that needs to be taken by the browser SDK.

Type Definition

interface ThreeDSecureAction {
  gateway: string;
  payload: Record<string, any>;
  action: "three_d_s";
}

3D Secure Success

This object is produced by the browser SDK after a successful 3D Secure authentication.

Sub Properties

  • gateway : (string) The payment provider processing the transaction.
  • payload : (Record<string,any>) The successful authentication details returned by the provider.
  • status : (success) The status of the 3D Secure authentication.

Type Definition

interface ThreeDSecureSuccess {
  gateway: string;
  payload: Record<string, any>;
  status: "success";
}

3D Secure Failure

This object is produced by the browser SDK after a failed 3D Secure authentication.

Sub Properties

  • gateway : (string) The payment provider processing the transaction.
  • status : (error) The status of the 3D Secure authentication.
  • error : (any?) The error object returned by the provider or the SDK, intended for tracking. This can may or may not be a JavaScript error object.
  • message : (string?) The error message returned by the provider or the SDK, intended for display to the user.

Type Definition

interface ThreeDSecureFailure {
  gateway: string;
  status: "error";
  error?: any;
  message?: string;
}

Risk Evaluation

This object represents the risk evaluation of an order upon completion of order.

Sub Properties

  • riskLevel : (string) The level of risk associated with the order.
  • riskScore : (string) The risk score associated with the order out of 100.

Type Definition

interface RiskEvaluation {
  riskLevel: 'highest' | 'elevated' | 'normal';
  riskScore: string;
}

Payment Authorization

This object represents the payment authorization attached to an order.

Sub Properties

  • gateway : (string) The payment gateway used for the transaction.
  • threeDsResult : (any?) Details of the 3D Secure authentication result. You can assume that 3DS was performed if this property is present.
  • public : (Public ID) The public ID of the fare given in selectedFares.
  • createdAt : (string) The timestamp when the payment authorization was created.

Type Definition

interface PaymentAuthorization {
  gateway: string;
  threeDsResult: any;
  public: string;
  createdAt: string;
}

Commission Details

The object describing the details of the commission calculation for a fare.

Sub Properties

  • calculation : (Record) Details of the commission calculation.
    • calculation : (Record) Additional calculation details.
      • calculation.calculation.rbd : (Array<string>) The RBD codes for the applicable fare class.
      • calculation.calculation.amount : (number) The commission amount/percentage.
      • calculation.calculation.type : (PERCENTAGE|FIXED) The type of commission calculation (e.g., percentage).
      • calculation.calculation.tour_code : (string?) The tour code associated with the commission calculation.
    • calculation.fare_combination_rule : (LOWEST|HIGHEST) Indicates whether the commission is applied to the highest or lowest fare in the itinerary.
    • calculation.applied_to : (BASE_FARE|TOTAL_FARE) Indicates whether the commission is applied to the base fare or total fare.
    • pax_type : (Array<PassengerCode>?) The passenger types to which the commission applies.
  • bookingRule : (string) The ID of the booking rule associated with the commission. Could be used for tracking purposes.
  • estimatedCommission : (string) The estimated commission amount in the currency of the fare.

Type Definition

interface CommissionDetails {
  calculation: {
    calculation: {
      rbd: string[];
      amount: number;
      type: "FIXED" | "PERCENTAGE"
      tour_code?: string;
    };
    fare_combination_rule: "LOWEST" | "HIGHEST";
    applied_to: "BASE_FARE" | "TOTAL_FARE";
    pax_type: PassengerCode[];
  };
  bookingRule: string;
  estimatedCommission: string;
}

Location Search Result

Represents a location result from the location auto-complete endpoint.

Sub Properties

  • type: (CITY | AIRPORT | REGION | HOTEL) The type of location result
  • name: (string) The name of the location or hotel
  • country: (string) The country where the location is situated
  • region: (string?) The region or state within the country
  • iata: (string?) IATA code for airport locations only
  • public: (Public ID) The public ID that can be used for hotel searches
  • score: (number?) Relevance score for the search result

Type Definition

interface LocationSearchResult {
  type: "CITY" | "AIRPORT" | "REGION" | "HOTEL";
  name: string;
  country: string;
  region?: string;
  iata?: string;
  public: PublicID;
  score?: number;
}

Example

{
  "type": "AIRPORT",
  "name": "Lester B. Pearson International Airport",
  "country": "Canada",
  "region": "Ontario",
  "iata": "YYZ",
  "public": "292104e4-5efe-44a5-9ac3-138faf2c52ef",
  "score": 8.8
}

Hotel Session Query

Represents the search parameters for creating a hotel session.

Sub Properties

  • location: (string) The public ID from a location search result
  • check_in_date: (string) Check-in date in YYYY-MM-DD format
  • check_out_date: (string) Check-out date in YYYY-MM-DD format
  • channel: (Channel Type) The booking channel type
  • device: (Device Type) The device type for the search

Type Definition

interface HotelSessionQuery {
  location: string;
  check_in_date: string;
  check_out_date: string;
  channel: ChannelType;
  device: DeviceType;
}

Example

{
  "location": "292104e4-5efe-44a5-9ac3-138faf2c52ef",
  "check_in_date": "2025-10-08",
  "check_out_date": "2025-10-12",
  "channel": "MEMBER",
  "device": "MOBILE"
}

Hotel Preferences

Represents preferences for hotel searches and bookings.

Sub Properties

  • account_id: (string?) UUID for the user account

Type Definition

interface HotelPreferences {
  account_id?: string;
}

Example

{
  "account_id": "e3b34b0e-e812-41fc-a247-35ba3106af2d"
}

Channel Type

Represents the booking channel type for hotel reservations.

Possible Values

  • AGENT: Travel agent bookings
  • CORPORATE: Corporate travel bookings
  • GUEST: Direct guest bookings
  • MEMBER: Loyalty member bookings

Type Definition

type ChannelType = "AGENT" | "CORPORATE" | "GUEST" | "MEMBER";

Device Type

Represents the device type for search and booking operations.

Possible Values

  • DESKTOP: Desktop computer access
  • MOBILE: Mobile device access

Type Definition

type DeviceType = "DESKTOP" | "MOBILE";

Hotel Search Status

Represents the status of a hotel search operation or individual search stream.

Possible Values

  • IN_PROGRESS: Search is currently running
  • COMPLETED: Search has finished successfully
  • ERRORED: Search encountered an error
  • TIMED_OUT: Search exceeded time limits

Type Definition

type HotelSearchStatus = "IN_PROGRESS" | "COMPLETED" | "ERRORED" | "TIMED_OUT";

Hotel Search Stream

Represents an individual search stream from a hotel content provider.

Sub Properties

  • id: (string) Unique identifier for this search stream
  • credential_id: (string) Identifier for the provider credential used
  • status: (Hotel Search Status) Status of this specific stream
  • error: (string?) Error message if the stream encountered an error
  • modifierError: (string?) Modifier-specific error information if applicable

Type Definition

interface HotelSearchStream {
  id: string;
  credential_id: string;
  status: HotelSearchStatus;
  error?: string;
  modifierError?: string;
}

Example

{
  "id": "stream_001",
  "credential_id": "provider_001",
  "status": "COMPLETED",
  "error": null,
  "modifierError": null
}

Hotel Search Response

Represents the response from hotel search initiation and status endpoints.

Sub Properties

  • status: (Hotel Search Status) Overall status of the search across all streams
  • error: (string?) General error information for the entire search
  • timeoutError: (string?) Timeout-specific error information if the search timed out
  • streams: (Array<Hotel Search Stream>) List of search streams from different providers

Type Definition

interface HotelSearchResponse {
  status: HotelSearchStatus;
  error?: string;
  timeoutError?: string;
  streams: HotelSearchStream[];
}

Example

{
  "status": "COMPLETED",
  "error": null,
  "timeoutError": null,
  "streams": [
    {
      "id": "stream_001",
      "credential_id": "provider_001",
      "status": "COMPLETED",
      "error": null,
      "modifierError": null
    }
  ]
}

Hotel Availability Response

Represents the response from the hotel availability endpoint with incremental update support.

Sub Properties

  • new: (Array<Hotel Availability>) Newly added hotel properties since the last timestamp
  • updated: (Array<Hotel Availability>) Updated hotel properties since the last timestamp
  • timestamp: (string) Current timestamp for subsequent incremental requests
  • status: (Hotel Search Status) Current status of the hotel search process

Type Definition

interface HotelAvailabilityResponse {
  new: HotelAvailability[];
  updated: HotelAvailability[];
  timestamp: string;
  status: HotelSearchStatus;
}

Example

{
  "new": [],
  "updated": [],
  "timestamp": "2025-01-24T21:55:30Z",
  "status": "COMPLETED"
}

Hotel Availability

Represents hotel availability information with rates from a specific provider.

Sub Properties

  • hotel_information: (Hotel Information Preview) Detailed information about the hotel
  • credential_id: (string) Identifier for the provider credential
  • provider: (string) Name of the hotel content provider
  • rates_info: (Array<Hotel Rate Info>) List of available rates for the hotel
  • expireAt: (string) Hotel availability expiration timestamp
  • public: (Public ID) Public identifier for the hotel availability
  • createdAt: (string) Creation timestamp
  • updatedAt: (string) Last update timestamp

Type Definition

interface HotelAvailability {
  hotel_information: HotelInformationPreview;
  credential_id: string;
  provider: string;
  rates_info: HotelRateInfo[];
  expireAt: string;
  public: PublicID;
  createdAt: string;
  updatedAt: string;
}

Hotel Information Preview

Represents basic hotel information provided during search results.

Sub Properties

  • hotel_name: (string) Name of the hotel
  • rating: (string?) Hotel star rating as a string
  • distance: (Hotel Distance?) Distance information from search location coordinates
  • logo: (Hotel Image?) Hotel logo information
  • chain_code: (string?) Hotel chain code
  • hotel_code: (string) Unique hotel identifier code
  • master_chain_name: (string?) Name of the master hotel chain
  • master_chain_code: (string?) Code of the master hotel chain
  • address: (Hotel Address?) Hotel address information

Type Definition

interface HotelInformationPreview {
  hotel_name: string;
  rating?: string;
  distance?: HotelDistance;
  logo?: HotelImage;
  chain_code?: string;
  hotel_code: string;
  master_chain_name?: string;
  master_chain_code?: string;
  address?: HotelAddress;
}

Example

{
  "hotel_name": "Fairmont Hotel Vancouver",
  "rating": "5",
  "distance": {
    "distance": "0.5",
    "UOM": "KM"
  },
  "logo": {
    "src": "https://example.com/fairmont-logo.png",
    "alt": "Fairmont Hotel Vancouver"
  },
  "chain_code": "FM",
  "hotel_code": "YVRFM001",
  "master_chain_name": "Fairmont Hotels & Resorts",
  "master_chain_code": "FM",
  "address": {
    "address": "900 W Georgia St",
    "city_name": "Vancouver",
    "city_code": "YVR",
    "postal_code": "V6C 2W6",
    "country_name": "Canada",
    "country_code": "CA",
    "phone": ["+1-604-684-3131"],
    "fax": ["+1-604-662-1929"],
    "location": {
      "latitude": "49.2827",
      "longitude": "-123.1207"
    }
  }
}

Hotel Distance

Represents distance information from the search location to the hotel.

Sub Properties

  • distance: (string) Distance value as a string
  • UOM: (string) Unit of measurement (e.g., KM, MI)

Type Definition

interface HotelDistance {
  distance: string;
  UOM: string;
}

Example

{
  "distance": "0.5",
  "UOM": "KM"
}

Hotel Image

Represents hotel image information (logos, photos, etc.).

Sub Properties

  • src: (string) URL to the hotel image
  • alt: (string) Alternative text for the image

Type Definition

interface HotelImage {
  src: string;
  alt: string;
}

Example

{
  "src": "https://example.com/fairmont-logo.png",
  "alt": "Fairmont Hotel Vancouver"
}

Hotel Address

Represents comprehensive hotel address and contact information.

Sub Properties

  • address: (string) Street address of the hotel
  • city_name: (string) Name of the city where the hotel is located
  • city_code: (string) City code identifier
  • postal_code: (string) Postal or ZIP code
  • country_name: (string) Full name of the country
  • country_code: (string) ISO country code (e.g., CA, US)
  • phone: (Array<string>) Array of phone numbers for the hotel
  • fax: (Array<string>) Array of fax numbers for the hotel
  • location: (Record) Geographical coordinates of the hotel
    • location.latitude: (string) Latitude coordinate of the hotel
    • location.longitude: (string) Longitude coordinate of the hotel

Type Definition

interface HotelAddress {
  address: string;
  city_name: string;
  city_code: string;
  postal_code: string;
  country_name: string;
  country_code: string;
  phone: string[];
  fax: string[];
  location: {
    latitude: string;
    longitude: string;
  };
}

Example

{
  "address": "900 W Georgia St",
  "city_name": "Vancouver",
  "city_code": "YVR",
  "postal_code": "V6C 2W6",
  "country_name": "Canada",
  "country_code": "CA",
  "phone": ["+1-604-684-3131"],
  "fax": ["+1-604-662-1929"],
  "location": {
    "latitude": "49.2827",
    "longitude": "-123.1207"
  }
}

Hotel Rate Info

Represents detailed rate information for a hotel including pricing and terms.

Sub Properties

  • rate_description: (Hotel Rate Description) Description and terms of the rate
  • rate_price: (Hotel Rate Price?) Pricing information in client currency
  • local_rate_price: (Hotel Rate Price?) Pricing information in local currency
  • expireAt: (string) Rate expiration timestamp
  • createdAt: (string) Rate creation timestamp
  • public: (Public ID) Public identifier for the rate

Type Definition

interface HotelRateInfo {
  rate_description: HotelRateDescription;
  rate_price?: HotelRatePrice;
  local_rate_price?: HotelRatePrice;
  expireAt: string;
  createdAt: string;
  public: PublicID;
}

Hotel Rate Description

Represents the terms and conditions of a hotel rate.

Sub Properties

  • start_date: (string) Check-in date in YYYY-MM-DD format
  • end_date: (string) Check-out date in YYYY-MM-DD format
  • tax_inclusive: (boolean) Whether the rate includes taxes
  • number_of_nights: (number) Number of nights for the stay
  • refundable: (boolean) Whether the rate is refundable
  • discount_codes: (Array<string>) List of applicable discount codes
  • pay_at_hotel: (string?) Payment method information if paid at hotel or prepaid

Type Definition

interface HotelRateDescription {
  start_date: string;
  end_date: string;
  tax_inclusive: boolean;
  number_of_nights: number;
  refundable: boolean;
  discount_codes: string[];
  pay_at_hotel?: string;
}

Example

{
  "start_date": "2025-10-08",
  "end_date": "2025-10-12",
  "tax_inclusive": true,
  "number_of_nights": 4,
  "refundable": true,
  "discount_codes": [],
  "pay_at_hotel": null
}

Hotel Rate Price

Represents comprehensive pricing information for a hotel rate.

Sub Properties

  • fees: (Hotel Rate Fees) Fee information for the rate
  • taxes: (Hotel Rate Taxes) Tax information for the rate
  • commission: (Hotel Rate Commission?) Commission information for the rate
  • average_nightly_rate: (string) Average nightly rate including taxes
  • average_nightly_rate_before_tax: (string) Average nightly rate before taxes
  • amount_after_tax: (string) Total amount for the stay including taxes
  • amount_before_tax: (string) Total amount for the stay before taxes
  • currency: (string) Currency code for all amounts
  • discount: (Hotel Rate Price Discount?) Discount information showing pre-discount pricing

Type Definition

interface HotelRatePrice {
  fees: HotelRateFees;
  taxes: HotelRateTaxes;
  commission?: HotelRateCommission;
  average_nightly_rate: string;
  average_nightly_rate_before_tax: string;
  amount_after_tax: string;
  amount_before_tax: string;
  currency: string;
  discount?: HotelRatePriceDiscount;
}

Hotel Rate Fees

Represents fee information for a hotel rate.

Sub Properties

  • total: (string) Total fees amount as a string
  • description: (string?) Description of the fees

Type Definition

interface HotelRateFees {
  total: string;
  description?: string;
}

Example

{
  "total": "25.00",
  "description": "Resort fees"
}

Hotel Rate Taxes

Represents tax information for a hotel rate.

Sub Properties

  • total: (string) Total tax amount as a string
  • description: (string?) Description of the taxes

Type Definition

interface HotelRateTaxes {
  total: string;
  description?: string;
}

Example

{
  "total": "45.60",
  "description": "GST/HST"
}

Hotel Rate Commission

Represents commission information for a hotel rate.

Sub Properties

  • type: (PERCENTAGE | FIXED) Type of commission calculation
  • amount: (string) Commission amount or percentage as a string

Type Definition

interface HotelRateCommission {
  type: "PERCENTAGE" | "FIXED";
  amount: string;
}

Example

{
  "type": "PERCENTAGE",
  "amount": "10.0"
}

Hotel Rate Price Discount

Represents discount information showing pre-discount pricing for comparison.

Sub Properties

  • title: (string?) Title or name of the discount
  • amount_before_tax_before_discount: (string) Total amount for the stay before taxes and before discount applied
  • amount_before_discount: (string) Total amount for the stay after taxes but before discount applied
  • average_nightly_rate_before_tax_before_discount: (string) Average nightly rate before taxes and before discount applied
  • average_nightly_rate_before_discount: (string) Average nightly rate after taxes but before discount applied

Type Definition

interface HotelRatePriceDiscount {
  title?: string;
  amount_before_tax_before_discount: string;
  amount_before_discount: string;
  average_nightly_rate_before_tax_before_discount: string;
  average_nightly_rate_before_discount: string;
}

Hotel Check-In Information

Represents check-in and check-out procedures and instructions for a hotel.

Sub Properties

  • check_in: (Array<string>) Tuple of check-in time. If more than one option is available, the second element indicates the latest check-in time.
  • check_out: (Array<string>) Tuple of check-out time. If more than one option is available, the second element indicates the latest check-out time.
  • instructions: (Array<string>?) General check-in instructions
  • special_instructions: (Array<string>?) Special check-in instructions

Type Definition

interface HotelCheckInInformation {
  check_in: [string] | [string, string];
  check_out: [string] | [string, string];
  instructions?: string[];
  special_instructions?: string[];
}

Example

{
  "check_in": ["15:00", "16:00"],
  "check_out": ["11:00", "12:00"],
  "instructions": [
    "Photo identification and credit card required at check-in",
    "Guests must be 18 years or older to check in"
  ],
  "special_instructions": [
    "Valet parking available for additional fee",
    "Early check-in subject to availability"
  ]
}

Hotel Description

Represents descriptive text content with a title, used for hotel descriptions, policies, and fee information.

Sub Properties

  • title: (string) Title or heading for the description content
  • text: (string) Detailed description text content

Type Definition

interface HotelDescription {
  title: string;
  text: string;
}

Example

{
  "title": "Cancellation Policy",
  "text": "Cancellations must be made 24 hours prior to arrival to avoid penalty charges. Late cancellations will be charged one night's accommodation."
}

Hotel Property Details Response

Represents the comprehensive response from the hotel property details endpoint.

Sub Properties

  • hotel_information: (Hotel Information Preview) Basic hotel information (inherited from availability)
  • check_in_information: (Hotel Check-In Information) Check-in and check-out procedures
  • hotel_amenities: (Array<string>) List of hotel amenities and facilities
  • descriptions: (Array<Hotel Description>) Detailed hotel descriptions and information
  • policies: (Array<Hotel Description>) Hotel policies and terms
  • fees: (Array<Hotel Description>?) Additional fees and charges information
  • rates_info: (Array<Hotel Rate Info>) Available rates for this hotel property
  • expireAt: (string) Property details expiration timestamp
  • public: (Public ID) Public identifier for the hotel property details
  • createdAt: (string) Creation timestamp
  • updatedAt: (string) Last update timestamp

Type Definition

interface HotelPropertyDetailsResponse {
  hotel_information: HotelInformationPreview;
  check_in_information: HotelCheckInInformation;
  hotel_amenities: string[];
  descriptions: HotelDescription[];
  policies: HotelDescription[];
  fees?: HotelDescription[];
  rates_info: HotelRateInfo[];
  expireAt: string;
  public: PublicID;
  createdAt: string;
  updatedAt: string;
}

Room Type

Represents room type classification information.

Sub Properties

  • name: (string?) Name of the room type
  • code: (string?) Code identifier for the room type

Type Definition

interface RoomType {
  name?: string;
  code?: string;
}

Example

{
  "name": "Deluxe King Room",
  "code": "DLX_KING"
}

Bed Type

Represents bed configuration information for hotel rooms.

Sub Properties

  • type: (string) Type of bed (e.g., King, Queen, Twin)
  • count: (number) Number of beds of this type

Type Definition

interface BedType {
  type: string;
  count: number;
}

Example

{
  "type": "King",
  "count": 1
}

Rate Price Component Breakdown

Represents detailed breakdown information for rate pricing components.

Sub Properties

  • amount: (number) Breakdown amount as a number
  • text: (string) Description of this breakdown component

Type Definition

interface RatePriceComponentBreakdown {
  amount: number;
  text: string;
}

Example

{
  "amount": 75.00,
  "text": "Resort fee (per night)"
}

Enhanced Hotel Rate Fees

Represents enhanced fee information with detailed breakdowns (extends Hotel Rate Fees).

Sub Properties

Inherits from Hotel Rate Fees:

  • total: (string) Total fees amount as a string

Enhanced properties:

  • description: (Record?) Enhanced description object with additional details
    • description.text: (string) Detailed description of the fees
    • description.title: (string) Title for the fees section
    • description.link: (string?) Link for more information
    • description.link_text: (string?) Display text for the link
  • breakdown: (Array<Rate Price Component Breakdown>) Detailed breakdown of fee components

Type Definition

interface EnhancedHotelRateFees extends Omit<HotelRateFees, 'description'> {
  description?: {
    text: string;
    title: string;
    link?: string;
    link_text?: string;
  };
  breakdown: RatePriceComponentBreakdown[];
}

Example

{
  "total": "100.00",
  "description": {
    "text": "Resort fees include WiFi access, fitness center use, and pool access",
    "title": "Resort & Service Fees",
    "link": "https://example.com/fees-policy",
    "link_text": "View detailed fee policy"
  },
  "breakdown": [
    {
      "amount": 75.00,
      "text": "Resort fee (per night)"
    },
    {
      "amount": 25.00,
      "text": "Service fee (total stay)"
    }
  ]
}

Enhanced Hotel Rate Taxes

Represents enhanced tax information with detailed breakdowns (extends Hotel Rate Taxes).

Sub Properties

Inherits from Hotel Rate Taxes:

  • total: (string) Total tax amount as a string

Enhanced properties:

  • description: (Record?) Enhanced description object with additional details
    • description.text: (string) Detailed description of the taxes
    • description.title: (string) Title for the taxes section
    • description.link: (string?) Link for more information
    • description.link_text: (string?) Display text for the link
  • breakdown: (Array<Rate Price Component Breakdown>) Detailed breakdown of tax components

Type Definition

interface EnhancedHotelRateTaxes extends Omit<HotelRateTaxes, 'description'> {
  description?: {
    text: string;
    title: string;
    link?: string;
    link_text?: string;
  };
  breakdown: RatePriceComponentBreakdown[];
}

Example

{
  "total": "64.80",
  "description": {
    "text": "Government taxes and local city fees as required by law",
    "title": "Taxes & Government Fees",
    "link": null,
    "link_text": null
  },
  "breakdown": [
    {
      "amount": 48.60,
      "text": "GST/HST (13%)"
    },
    {
      "amount": 16.20,
      "text": "City occupancy tax"
    }
  ]
}

Enhanced Hotel Rate Price

Represents enhanced pricing information with detailed breakdowns (extends Hotel Rate Price).

Sub Properties

Inherits core pricing from Hotel Rate Price:

  • commission: (Hotel Rate Commission?) Commission information for the rate
  • average_nightly_rate: (string) Average nightly rate including taxes
  • average_nightly_rate_before_tax: (string) Average nightly rate before taxes
  • amount_after_tax: (string) Total amount for the stay including taxes
  • amount_before_tax: (string) Total amount for the stay before taxes
  • currency: (string) Currency code for all amounts
  • discount: (Hotel Rate Price Discount?) Discount information showing pre-discount pricing

Enhanced properties:

Type Definition

interface EnhancedHotelRatePrice extends Omit<HotelRatePrice, 'fees' | 'taxes'> {
  fees: EnhancedHotelRateFees;
  taxes: EnhancedHotelRateTaxes;
}

Hotel Cancellation Penalty

Represents a cancellation penalty with specific deadlines and amounts.

Sub Properties

  • amount: (string) Penalty amount as a string
  • currency: (string) Currency code for the penalty amount
  • deadline: (string) Deadline for when this penalty applies
  • percentage: (string?) Penalty as a percentage

Type Definition

interface HotelCancellationPenalty {
  amount: string;
  currency: string;
  deadline: string;
  percentage?: string;
}

Example

{
  "amount": "150.00",
  "currency": "CAD",
  "deadline": "2025-10-07T15:00:00",
  "percentage": null
}

Hotel Cancellation

Represents cancellation information including refundability and penalty structure.

Sub Properties

  • refundable: (boolean) Whether the rate is refundable
  • penalties: (Array<Hotel Cancellation Penalty>) List of cancellation penalties with deadlines

Type Definition

interface HotelCancellation {
  refundable: boolean;
  penalties: HotelCancellationPenalty[];
}

Example

{
  "refundable": true,
  "penalties": [
    {
      "amount": "0.00",
      "currency": "CAD",
      "deadline": "2025-10-07T15:00:00",
      "percentage": null
    },
    {
      "amount": "150.00",
      "currency": "CAD", 
      "deadline": "2025-10-08T15:00:00",
      "percentage": "50"
    }
  ]
}

Enhanced Hotel Rate Description

Represents enhanced rate description with cancellation information (extends Hotel Rate Description).

Sub Properties

Inherits from Hotel Rate Description:

  • start_date: (string) Check-in date in YYYY-MM-DD format
  • end_date: (string) Check-out date in YYYY-MM-DD format
  • tax_inclusive: (boolean) Whether the rate includes taxes
  • number_of_nights: (number) Number of nights for the stay
  • refundable: (boolean) Whether the rate is refundable
  • discount_codes: (Array<string>) List of applicable discount codes
  • pay_at_hotel: (string?) Payment method information if paid at hotel or prepaid

Enhanced properties:

  • cancellation: (Hotel Cancellation) Detailed cancellation policy and penalties
  • accepted_payment_cards: (Array<Payment Card Type>?) List of accepted payment card types for this hotel rate

Type Definition

interface EnhancedHotelRateDescription extends HotelRateDescription {
  cancellation: HotelCancellation;
  accepted_payment_cards?: PaymentCardType[];
}

Example

{
  "start_date": "2025-10-08",
  "end_date": "2025-10-12",
  "tax_inclusive": true,
  "number_of_nights": 4,
  "refundable": true,
  "discount_codes": [],
  "pay_at_hotel": null,
  "accepted_payment_cards": ["visa", "masterCard", "americanExpress"],
  "cancellation": {
    "refundable": true,
    "penalties": [
      {
        "amount": "0.00",
        "currency": "CAD",
        "deadline": "2025-10-07T15:00:00",
        "percentage": null
      },
      {
        "amount": "150.00",
        "currency": "CAD",
        "deadline": "2025-10-08T15:00:00",
        "percentage": "50"
      }
    ]
  }
}

Enhanced Hotel Rate Info

Represents enhanced rate information with detailed pricing breakdowns (extends Hotel Rate Info).

Sub Properties

Inherits from Hotel Rate Info:

  • expireAt: (string) Rate expiration timestamp
  • createdAt: (string) Rate creation timestamp
  • public: (Public ID) Public identifier for the rate

Enhanced properties:

Type Definition

interface EnhancedHotelRateInfo extends Omit<HotelRateInfo, 'rate_description' | 'rate_price' | 'local_rate_price'> {
  rate_description: EnhancedHotelRateDescription;
  rate_price?: EnhancedHotelRatePrice;
  local_rate_price?: EnhancedHotelRatePrice;
}

Hotel Room Details

Represents detailed information about a specific room type including configuration, amenities, and enhanced rate information.

Sub Properties

  • type: (Room Type) Room type classification
  • bed_types: (Array<Bed Type>) Available bed configurations
  • max_occupancy: (number?) Maximum number of guests allowed
  • non_smoking: (boolean?) Whether the room is non-smoking
  • amenities: (Array<string>?) Room-specific amenities
  • images: (Array<Hotel Image>?) Images of the room
  • rates: (Array<Enhanced Hotel Rate Info>) Available rates with enhanced pricing details
  • expireAt: (string) Room details expiration timestamp
  • public: (Public ID) Public identifier for the room details
  • createdAt: (string) Creation timestamp
  • updatedAt: (string) Last update timestamp

Type Definition

interface HotelRoomDetails {
  type: RoomType;
  bed_types: BedType[];
  max_occupancy?: number;
  non_smoking?: boolean;
  amenities?: string[];
  images?: HotelImage[];
  rates: EnhancedHotelRateInfo[];
  expireAt: string;
  public: PublicID;
  createdAt: string;
  updatedAt: string;
}

Hotel Booking Room Details

Represents detailed information about a booked room including rate information (extends Hotel Room Details).

Sub Properties

Inherits from Hotel Room Details:

  • type: (Room Type) Room type classification
  • bed_types: (Array<Bed Type>) Available bed configurations
  • max_occupancy: (number?) Maximum number of guests allowed
  • non_smoking: (boolean?) Whether the room is non-smoking
  • amenities: (Array<string>?) Room-specific amenities
  • images: (Array<Hotel Image>?) Images of the room
  • expireAt: (string) Room details expiration timestamp
  • public: (Public ID) Public identifier for the room details
  • createdAt: (string) Creation timestamp
  • updatedAt: (string) Last update timestamp

Modified properties:

Type Definition

interface HotelBookingRoomDetails extends Omit<HotelRoomDetails, 'rates'> {
  rate: EnhancedHotelRateInfo;
}

Hotel Order Hotel

Represents complete hotel information in booking context (extends Hotel Information Preview).

Sub Properties

Inherits from Hotel Information Preview:

Additional properties:

Type Definition

interface HotelOrderHotel {
  hotel_information: HotelInformationPreview;
  check_in_information: HotelCheckInInformation;
  hotel_amenities: string[];
  descriptions: HotelDescription[];
  policies: HotelDescription[];
  fees?: HotelDescription[];
}

Booking Reference

Represents booking reference codes from various systems.

Sub Properties

  • source: (string) Source system or provider of the reference
  • code: (string) Reference code or confirmation number

Type Definition

interface BookingReference {
  source: string;
  code: string;
}

Example

{
  "source": "SABRE",
  "code": "HTL123ABC"
}

Hotel Information Minimal

Represents minimal hotel information for efficient listing purposes.

Sub Properties

  • hotel_name: (string?) Name of the hotel property
  • master_chain_name: (string?) Master chain name
  • master_chain_code: (string?) Master chain code
  • hero: (Hotel Image?) Hotel hero image

Type Definition

interface HotelInformationMinimal {
  hotel_name?: string;
  master_chain_name?: string;
  master_chain_code?: string;
  hero?: HotelImage; 
}

Example

{
  "hotel_name": "Fairmont Hotel Vancouver",
  "master_chain_name": "Fairmont Hotels & Resorts",
  "master_chain_code": "FM",
  "hero": {
    "src": "https://example.com/fairmont-hero.jpg",
    "alt": "Fairmont Hotel Vancouver - Hero Image"
  }
}

Hotel Order Hotel Minimal

Represents minimal hotel information for listing purposes.

Sub Properties

Type Definition

interface HotelOrderHotelMinimal {
  hotel_information: HotelInformationMinimal;
}

Example

{
  "hotel_information": {
    "hotel_name": "Fairmont Hotel Vancouver",
    "master_chain_name": "Fairmont Hotels & Resorts",
    "master_chain_code": "FM",
    "hero": {
      "src": "https://example.com/fairmont-hero.jpg",
      "alt": "Fairmont Hotel Vancouver - Hero Image"
    }
  }
}

Hotel Rate Price Minimal

Represents minimal pricing information for efficient listing.

Sub Properties

  • average_nightly_rate: (string) Average nightly rate including taxes
  • average_nightly_rate_before_tax: (string) Average nightly rate before taxes
  • amount_after_tax: (string) Total amount for the stay including taxes
  • amount_before_tax: (string) Total amount for the stay before taxes
  • currency: (string) Currency code for all amounts

Type Definition

interface HotelRatePriceMinimal {
  average_nightly_rate: string;
  average_nightly_rate_before_tax: string;
  amount_after_tax: string;
  amount_before_tax: string;
  currency: string;
}

Example

{
  "average_nightly_rate": "143.05",
  "average_nightly_rate_before_tax": "128.75",
  "amount_after_tax": "572.20",
  "amount_before_tax": "515.00",
  "currency": "CAD"
}

Hotel Booking Rate Details Minimal

Represents minimal rate details for listing purposes.

Sub Properties

Type Definition

interface HotelBookingRateDetailsMinimal {
  rate_price?: HotelRatePriceMinimal;
  local_rate_price?: HotelRatePriceMinimal;
  public: PublicID;
}

Example

{
  "rate_price": {
    "average_nightly_rate": "143.05",
    "average_nightly_rate_before_tax": "128.75",
    "amount_after_tax": "572.20",
    "amount_before_tax": "515.00",
    "currency": "CAD"
  },
  "local_rate_price": null,
  "public": "bd28b356-8602-4e91-a653-e60da9027dc7"
}

Hotel Booking Room Details Minimal

Represents minimal room details for efficient listing purposes.

Sub Properties

Type Definition

interface HotelBookingRoomDetailsMinimal {
  type: RoomType;
  bed_types: BedType[];
  max_occupancy?: number;
  rate: HotelBookingRateDetailsMinimal;
  public: PublicID;
}

Example

{
  "type": {
    "name": "Deluxe King Room",
    "code": "DLX_KING"
  },
  "bed_types": [
    {
      "type": "King",
      "count": 1
    }
  ],
  "max_occupancy": 2,
  "rate": {
    "rate_price": {
      "average_nightly_rate": "143.05",
      "average_nightly_rate_before_tax": "128.75",
      "amount_after_tax": "572.20",
      "amount_before_tax": "515.00",
      "currency": "CAD"
    },
    "local_rate_price": null,
    "public": "c6f74438-6b63-4485-8fa1-3f9f0e970792"
  },
  "public": "bd28b356-8602-4e91-a653-e60da9027dc7"
}

Refund Type

Represents the type of refund policy for hotel cancellations.

Possible Values

  • REFUND_OR_RETAIN: Partial refund with some amounts retained
  • FORFEIT: No refund available (full forfeiture)
  • RESERVATION: No charges have been made, so no refund applicable
  • UNKNOWN: Refund policy cannot be determined

Type Definition

type RefundType = "REFUND_OR_RETAIN" | "FORFEIT" | "RESERVATION" | "UNKNOWN";

Refund Item Type

Represents whether a refund amount is returned to the customer or retained by the vendor.

Possible Values

  • REFUND: Amount refunded to the original payment method
  • RETAIN: Amount retained as credit or voucher for future use

Type Definition

type RefundItemType = "REFUND" | "RETAIN";

Refund Item

Represents an individual refund or retention item in the cancellation breakdown.

Sub Properties

  • type: (Refund Item Type) Whether the amount is refunded or retained
  • amount: (number) Refund or retention amount
  • currency: (string) Currency code for the amount
  • expiration: (string?) Expiration date for retained credits

Type Definition

interface RefundItem {
  type: RefundItemType;
  amount: number;
  currency: string;
  expiration?: string;
}

Example

{
  "type": "REFUND",
  "amount": 450.00,
  "currency": "CAD",
  "expiration": null
}

Hotel Cancel Refund

Represents complete refund information for a hotel cancellation.

Sub Properties

  • type: (Refund Type) Overall refund policy type
  • items: (Array<Refund Item>) Detailed breakdown of refund items
  • vendor: (string?) Vendor handling the refund

Type Definition

interface HotelCancelRefund {
  type: RefundType;
  items: RefundItem[];
  vendor?: string;
}

Hotel Check Cancel Response

Represents the response from checking hotel cancellation eligibility.

Sub Properties

  • locator: (string) Booking locator or confirmation number
  • refund: (Hotel Cancel Refund) Detailed refund information for the cancellation check

Type Definition

interface HotelCheckCancelResponse {
  locator: string;
  refund: HotelCancelRefund;
}

Hotel Cancel Response

Represents the response from performing an actual hotel booking cancellation.

Sub Properties

  • success: (boolean) Whether the cancellation was successful
  • locator: (string) Booking locator or confirmation number
  • refund: (Hotel Cancel Refund) Detailed refund information for the completed cancellation

Type Definition

interface HotelCancelResponse {
  success: boolean;
  locator: string;
  refund: HotelCancelRefund;
}