Booking Holdings · JSON Structure

Demand Api Orders Preview Product Output Structure

The returned information of the product selected

Type: object Properties: 9
AccommodationsAirlinesCar RentalsHospitalityHotelsRestaurantsTravel

OrdersPreviewProductOutput is a JSON Structure definition published by Booking Holdings, describing 9 properties. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

id bundle deal inventory policies price room third_party_inventory occupancy_mismatch

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/booking-holdings/refs/heads/main/json-structure/demand-api-orders-preview-product-output-structure.json",
  "name": "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": "int32"
    },
    "deal": {
      "description": "This specifies the deal tagging for the product.",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "discount_percentage": {
          "description": "Discount percentage of the applied deal.",
          "type": "int32",
          "minimum": 1
        },
        "public_price": {
          "description": "Original price of this product, before applying any discounts.",
          "type": "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": "datetime"
                  },
                  {
                    "type": "string",
                    "pattern": "now"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "price": {
                "description": "The cancellation fee.",
                "type": "object",
                "properties": {
                  "accommodation_currency": {
                    "type": "double"
                  },
                  "booker_currency": {
                    "type": "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": "double"
            },
            "booker_currency": {
              "type": "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": "double"
            },
            "booker_currency": {
              "type": "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": "int32",
                    "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": "double",
                    "nullable": true
                  },
                  "total_amount": {
                    "description": "The total price for this charge.",
                    "type": "object",
                    "properties": {
                      "accommodation_currency": {
                        "type": "double"
                      },
                      "booker_currency": {
                        "type": "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": "double"
                      },
                      "booker_currency": {
                        "type": "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": "int32",
                    "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": "double",
                    "nullable": true
                  },
                  "total_amount": {
                    "description": "The total price for this charge.",
                    "type": "object",
                    "properties": {
                      "accommodation_currency": {
                        "type": "double"
                      },
                      "booker_currency": {
                        "type": "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": "double"
                      },
                      "booker_currency": {
                        "type": "double"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "total": {
          "description": "The total price. Includes all extra charges.",
          "type": "object",
          "properties": {
            "accommodation_currency": {
              "type": "double"
            },
            "booker_currency": {
              "type": "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": "double",
      "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": "int32",
              "minimum": 0
            },
            "children": {
              "description": "The ages of the children. Null or absent if no children fit.",
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "int32",
                "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": "int32",
              "minimum": 0
            },
            "children": {
              "description": "The ages of the children. Null or absent if no children fit.",
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "int32",
                "minimum": 0,
                "maximum": 17
              }
            }
          },
          "required": [
            "number_of_adults",
            "children"
          ]
        }
      },
      "required": [
        "allocated",
        "unallocated"
      ]
    }
  }
}