Booking Holdings · Schema

OrdersPreviewProductOutput

The returned information of the product selected

AccommodationsAirlinesCar RentalsHospitalityHotelsRestaurantsTravel

Properties

Name Type Description
id string Unique ID of the product.
bundle integer The bundle ID of the product comprising of value added products.
deal objectnull This specifies the deal tagging for the product.
inventory object
policies object The policies for this product.
price object The price components of this product. 'base' and 'extra_charges' are returned only when explicitly requested (via 'extras=extra_charges').
room number A signed long number that uniquely identifies an accommodation property room. The full list can be obtained by calling [accommodations/details](#/accommodations/details).
third_party_inventory boolean Boolean value is "true" if the product is facilitated by a Booking.com partner company and "false" otherwise.
occupancy_mismatch objectnull Details any mismatch between the requested occupancy and the product's capacity. -When one or more guests cannot be accommodated, the object contains those that can be accommodated (allocated) and tho
View JSON Schema on GitHub

JSON Schema

demand-api-orders-preview-product-output-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/booking-holdings/refs/heads/main/json-schema/demand-api-orders-preview-product-output-schema.json",
  "title": "OrdersPreviewProductOutput",
  "description": "The returned information of the product selected",
  "type": "object",
  "properties": {
    "id": {
      "description": "Unique ID of the product.",
      "type": "string"
    },
    "bundle": {
      "description": "The bundle ID of the product comprising of value added products.",
      "type": "integer"
    },
    "deal": {
      "description": "This specifies the deal tagging for the product.",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "discount_percentage": {
          "description": "Discount percentage of the applied deal.",
          "type": "integer",
          "minimum": 1
        },
        "public_price": {
          "description": "Original price of this product, before applying any discounts.",
          "type": "number",
          "format": "double"
        },
        "tags": {
          "description": "The tags of all the applied deals.",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "black_friday",
              "limited_time_deal",
              "logged_in_deal",
              "mobile_rate",
              "seasonal_deal"
            ]
          }
        }
      }
    },
    "inventory": {
      "type": "object",
      "properties": {
        "third_party": {
          "type": "boolean",
          "description": "Boolean value is \"true\" if the product is facilitated by a Booking.com partner company and \"false\" otherwise."
        },
        "type": {
          "description": "Type of inventory - either net or sell rates.",
          "type": "string",
          "enum": [
            "net",
            "sell"
          ]
        }
      }
    },
    "policies": {
      "description": "The policies for this product.",
      "type": "object",
      "properties": {
        "cancellation": {
          "description": "The cancellation policy schedule for this product.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "from": {
                "description": "The time from which this cancellation fee applies. `now` means from booking time.",
                "oneOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "string",
                    "pattern": "now"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "price": {
                "description": "The cancellation fee.",
                "type": "object",
                "properties": {
                  "accommodation_currency": {
                    "type": "number",
                    "format": "double"
                  },
                  "booker_currency": {
                    "type": "number",
                    "format": "double"
                  }
                }
              }
            }
          }
        },
        "meal_plan": {
          "description": "The meal plan policy for this product.",
          "type": "object",
          "properties": {
            "meals": {
              "description": "The meals included in the meal plan.",
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "breakfast",
                  "dinner",
                  "lunch"
                ]
              }
            },
            "plan": {
              "description": "The meal plan included in this product.",
              "type": "string",
              "enum": [
                "all_inclusive",
                "breakfast_included",
                "full_board",
                "half_board",
                "no_plan"
              ]
            }
          }
        }
      }
    },
    "price": {
      "description": "The price components of this product. 'base' and 'extra_charges' are returned only when explicitly requested (via 'extras=extra_charges').",
      "type": "object",
      "properties": {
        "base": {
          "description": "The base price. It does not include any extra charges.",
          "type": "object",
          "properties": {
            "accommodation_currency": {
              "type": "number",
              "format": "double"
            },
            "booker_currency": {
              "type": "number",
              "format": "double"
            }
          }
        },
        "chargeable_online": {
          "description": "The price that will be charged by Booking.com when online payments are used. This field does not apply to the \"pay_at_the_property\" timing.",
          "type": "object",
          "properties": {
            "accommodation_currency": {
              "type": "number",
              "format": "double"
            },
            "booker_currency": {
              "type": "number",
              "format": "double"
            }
          }
        },
        "extra_charges": {
          "description": "The charge breakdown. Includes taxes and fees.",
          "type": "object",
          "properties": {
            "conditional": {
              "description": "Charges that might apply under a specific condition.",
              "type": "array",
              "items": {
                "description": "Charges that might apply under a specific condition.",
                "type": "object",
                "properties": {
                  "charge": {
                    "description": "A signed integer number that uniquely identifies an accommodation charge type. Examples of charges are: VAT, City Tax, etc. The full list can be obtained by calling <a href=\"/demand/docs/open-api/demand-api/accommodations/accommodations/constants\" target=\"_blank\">accommodations/constants</a>.",
                    "type": "integer",
                    "minimum": 0
                  },
                  "condition": {
                    "description": "A signed integer number that uniquely identifies the condition ID. Find the full list in the <a href=\"/demand/docs/accommodations/prices-accommodations\" target=\"_blank\">Pricing guidelines</a>.",
                    "type": [
                      "integer",
                      "null"
                    ],
                    "minimum": 0
                  },
                  "mode": {
                    "description": "The mode of this charge. Determines how the price is calculated.",
                    "type": "string",
                    "enum": [
                      "calculated_amount",
                      "percentage",
                      "per_day",
                      "per_night",
                      "per_person_per_day",
                      "per_person_per_night",
                      "per_person_per_stay",
                      "per_stay"
                    ]
                  },
                  "percentage": {
                    "description": "The percentage of 'base' that this charge amounts to. Only applicable when 'mode' is 'percentage'.",
                    "type": "number",
                    "nullable": true
                  },
                  "total_amount": {
                    "description": "The total price for this charge.",
                    "type": "object",
                    "properties": {
                      "accommodation_currency": {
                        "type": "number",
                        "format": "double"
                      },
                      "booker_currency": {
                        "type": "number",
                        "format": "double"
                      }
                    }
                  },
                  "unit_amount": {
                    "description": "The price per unit for this charge. Only applicable when 'mode' is 'per_day', 'per_night', 'per_person_per_day', 'per_person_per_night', or 'per_person_per_stay'.",
                    "nullable": true,
                    "type": "object",
                    "properties": {
                      "accommodation_currency": {
                        "type": "number",
                        "format": "double"
                      },
                      "booker_currency": {
                        "type": "number",
                        "format": "double"
                      }
                    }
                  }
                }
              }
            },
            "non_conditional": {
              "description": "All non-conditional charges that will necessarily be paid",
              "type": "array",
              "items": {
                "description": "All non-conditional charges that will necessarily be paid",
                "type": "object",
                "properties": {
                  "charge": {
                    "description": "A signed integer number that uniquely identifies an accommodation charge type. Examples of charges are: VAT, City Tax, etc. The full list can be obtained by calling <a href=\"/demand/docs/open-api/demand-api/accommodations/accommodations/constants\" target=\"_blank\">accommodations/constants</a>.",
                    "type": "integer",
                    "minimum": 0
                  },
                  "chargeable_online": {
                    "description": "Whether this charge is chargeable online or not. Not applicable to \"pay_at_the_property\" timing.",
                    "type": "boolean"
                  },
                  "mode": {
                    "description": "The mode of this charge. Determines how the price is calculated.",
                    "type": "string",
                    "enum": [
                      "calculated_amount",
                      "incalculable",
                      "percentage",
                      "per_day",
                      "per_night",
                      "per_person_per_day",
                      "per_person_per_night",
                      "per_person_per_stay",
                      "per_stay"
                    ]
                  },
                  "percentage": {
                    "description": "The percentage of 'base' that this charge amounts to. Only applicable when 'mode' is 'percentage'.",
                    "type": "number",
                    "nullable": true
                  },
                  "total_amount": {
                    "description": "The total price for this charge.",
                    "type": "object",
                    "properties": {
                      "accommodation_currency": {
                        "type": "number",
                        "format": "double"
                      },
                      "booker_currency": {
                        "type": "number",
                        "format": "double"
                      }
                    }
                  },
                  "unit_amount": {
                    "description": "The price per unit for this charge. Only applicable when 'mode' is 'per_day', 'per_night', 'per_person_per_day', 'per_person_per_night', or 'per_person_per_stay'.",
                    "nullable": true,
                    "type": "object",
                    "properties": {
                      "accommodation_currency": {
                        "type": "number",
                        "format": "double"
                      },
                      "booker_currency": {
                        "type": "number",
                        "format": "double"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "total": {
          "description": "The total price. Includes all extra charges.",
          "type": "object",
          "properties": {
            "accommodation_currency": {
              "type": "number",
              "format": "double"
            },
            "booker_currency": {
              "type": "number",
              "format": "double"
            }
          }
        }
      }
    },
    "room": {
      "description": "A signed long number that uniquely identifies an accommodation property room. The full list can be obtained by calling [accommodations/details](#/accommodations/details).",
      "type": "number",
      "minimum": 1,
      "nullable": true
    },
    "third_party_inventory": {
      "description": "Boolean value is \"true\" if the product is facilitated by a Booking.com partner company and \"false\" otherwise.",
      "type": "boolean"
    },
    "occupancy_mismatch": {
      "description": "Details any mismatch between the requested occupancy and the product's capacity. \n-When one or more guests cannot be accommodated, the object contains those that can be accommodated (allocated) and those that cannot (unallocated). \n-If all requested guests fit, the object is null.",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "allocated": {
          "description": "The guests from the original request that the product can accommodate.",
          "type": "object",
          "properties": {
            "number_of_adults": {
              "description": "The number of adults.",
              "type": "integer",
              "minimum": 0
            },
            "children": {
              "description": "The ages of the children. Null or absent if no children fit.",
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 17
              }
            }
          },
          "required": [
            "number_of_adults",
            "children"
          ]
        },
        "unallocated": {
          "description": "The guests from the original request that could not be accommodated by this product.",
          "type": "object",
          "properties": {
            "number_of_adults": {
              "description": "The number of adults.",
              "type": "integer",
              "minimum": 0
            },
            "children": {
              "description": "The ages of the children. Null or absent if no children fit.",
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 17
              }
            }
          },
          "required": [
            "number_of_adults",
            "children"
          ]
        }
      },
      "required": [
        "allocated",
        "unallocated"
      ]
    }
  }
}