Amadeus · Schema

HotelProduct

Hotel Offer

TravelTravel TechnologyReservationsFlightsHotelsAirlinesHospitalityTours and ActivitiesCars and TransfersDestination ContentItinerary ManagementTrip PlanningArtificial IntelligenceMarket Insights

Properties

Name Type Description
checkInDate string check-in date of the stay (hotel local date). Format YYYY-MM-DD The lowest accepted value is today date (no dates in the past).
checkOutDate string check-out date of the stay (hotel local date). Format YYYY-MM-DD The lowest accepted value is `checkInDate`+1.
roomQuantity integer number of rooms (1-9)
rateCode string Special Rate - Provider Response Code (3 chars) Examples * RAC - Rack * BAR - Best Available Rate * PRO - Promotional * COR - Corporate * GOV - Government (qualified) * AAA - AAA (qualified) * BNB - B
category string Special Rate Category Examples: ASSOCIATION FAMILY_PLAN
commission object
room object
guests object
price object price information
policies object Booking Rules
rateFamilyEstimated object The estimated rate code family of the offer. Grouping various rate plan codes that belongs to the same family and indicates the type of the rate
View JSON Schema on GitHub

JSON Schema

hotel-booking-hotel-product-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amadeus/refs/heads/main/json-schema/hotel-booking-hotel-product-schema.json",
  "title": "HotelProduct",
  "description": "Hotel Offer\n",
  "type": "object",
  "properties": {
    "checkInDate": {
      "type": "string",
      "format": "date",
      "example": "2020-12-30",
      "description": "check-in date of the stay (hotel local date). Format YYYY-MM-DD\nThe lowest accepted value is today date (no dates in the past).  "
    },
    "checkOutDate": {
      "type": "string",
      "format": "date",
      "example": "2020-12-31",
      "description": "check-out date of the stay (hotel local date). Format YYYY-MM-DD\nThe lowest accepted value is `checkInDate`+1. "
    },
    "roomQuantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9,
      "example": 1,
      "description": "number of rooms (1-9)"
    },
    "rateCode": {
      "type": "string",
      "description": "Special Rate - Provider Response Code (3 chars)\nExamples\n\n  * RAC - Rack\n\n  * BAR - Best Available Rate\n\n  * PRO - Promotional\n\n  * COR - Corporate\n\n  * GOV - Government (qualified)\n\n  * AAA - AAA (qualified)\n\n  * BNB - Bed and Breakfast\n\n  * PKG - Package\n\n  * TVL - Travel Industry\n\n  * SPC - Special Promo Rate\n\n  * WKD - Weekend\n\n  * CON - Convention\n\n  * SNR - Senior (Europe) (qualified)\n\n  * ARP - AARP - American Association of Retired People (50+) (qualified)\n\n  * SRS - Senior (qualified)\n\n  * ROR - Room Only Rate (no breakfast)\n\n  * FAM - Family\n\n  * DAY - Day rate\n",
      "pattern": "^[A-Z0-9*]{3}$",
      "minLength": 3,
      "maxLength": 3,
      "example": "RAC"
    },
    "category": {
      "type": "string",
      "description": "Special Rate Category\nExamples:\n  ASSOCIATION\n  FAMILY_PLAN\n",
      "example": "FAMILY_PLAN"
    },
    "commission": {
      "title": "HotelProduct_Commission",
      "type": "object",
      "properties": {
        "percentage": {
          "type": "string",
          "description": "Percentage of the commission paid to the travel seller. Value is between 0 and 100",
          "pattern": "^\\\\d+(\\\\.\\\\d+)?$",
          "example": 50
        },
        "amount": {
          "type": "string",
          "description": "Amount of the commission paid to the travel seller. The amount is always linked to the currency code of the offer",
          "pattern": "^\\\\d+(\\\\.\\\\d+)?$",
          "example": "199.50"
        },
        "description": {
          "type": "object",
          "description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language",
          "title": "QualifiedFreeText",
          "properties": {
            "text": {
              "type": "string",
              "description": "Free Text",
              "example": "Do you need and example ?"
            },
            "lang": {
              "type": "string",
              "description": "see RFC 5646",
              "example": "fr-FR"
            }
          }
        }
      }
    },
    "room": {
      "title": "HotelProduct_RoomDetails",
      "type": "object",
      "properties": {
        "type": {
          "description": "Room type code, 3 character identifier of the room.\nThe first character identifies the room type category. \nThe second numeric character identifies the number of beds. \nThe third character identifies the bed type. \nThere is a special case where ROH is returned, this value stands for Run Of House.",
          "type": "string",
          "pattern": "^[A-Z0-9*]{3}$",
          "example": "string-value"
        },
        "description": {
          "type": "object",
          "description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language",
          "title": "QualifiedFreeText",
          "properties": {
            "text": {
              "type": "string",
              "description": "Free Text",
              "example": "Do you need and example ?"
            },
            "lang": {
              "type": "string",
              "description": "see RFC 5646",
              "example": "fr-FR"
            }
          }
        }
      }
    },
    "guests": {
      "title": "HotelProduct_Guests",
      "type": "object",
      "properties": {
        "adults": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9,
          "example": 2,
          "description": "number of adult guests (1-9) per room"
        },
        "childAges": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20
          },
          "description": "Comma separated list of ages of each child at the time of check-out from the hotel. If several children have the same age, the ages will be repeated."
        }
      }
    },
    "price": {
      "title": "HotelProduct_HotelPrice",
      "description": "price information",
      "allOf": [
        {
          "type": "object",
          "description": "Price valuation information",
          "title": "Price",
          "properties": {
            "currency": {
              "type": "string",
              "description": "currency Code apply to all elements of the price",
              "example": "EUR"
            },
            "sellingTotal": {
              "type": "string",
              "description": "sellingTotal = Total + margins + markup + totalFees - discounts",
              "example": "199.50"
            },
            "total": {
              "type": "string",
              "description": "total = base + totalTaxes",
              "example": "199.50"
            },
            "base": {
              "type": "string",
              "example": "string-value"
            },
            "markups": {
              "type": "array",
              "items": {
                "title": "Markup",
                "type": "object",
                "description": "Markup applied to provide a service or a product to the client. Typical use case is to convey markup information set by the travel agent.",
                "properties": {
                  "amount": {
                    "type": "string",
                    "description": "Defines the monetary value with decimal position as a String.",
                    "example": "10"
                  }
                }
              }
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "taxes": {
              "type": "array",
              "items": {
                "title": "HotelProduct_HotelTax",
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "description": "Currency code of the tax"
                  },
                  "amount": {
                    "type": "string",
                    "description": "Amount of the tax"
                  },
                  "code": {
                    "description": "The tax code which identifies the tax.\n  Examples:\n  1=BED_TAX\n  2=CITY_TAX",
                    "type": "string"
                  },
                  "percentage": {
                    "type": "string",
                    "description": "percentage of the tax. Use together with pricingFrequency and pricingMode"
                  },
                  "included": {
                    "type": "boolean",
                    "description": "Is the tax included in the base amount"
                  },
                  "description": {
                    "type": "string",
                    "description": "Textual description of the tax"
                  },
                  "pricingFrequency": {
                    "description": "Specifies if the tax applies per stay or per night\n  - PER_STAY\n  - PER_NIGHT",
                    "type": "string"
                  },
                  "pricingMode": {
                    "description": "Specifies if the tax applies per occupant or per room\n  - PER_OCCUPANT\n  - PER_PRODUCT",
                    "type": "string"
                  }
                }
              }
            },
            "variations": {
              "title": "HotelProduct_PriceVariations",
              "type": "object",
              "description": "Daily price variations and the average daily price (when available) is shown here",
              "properties": {
                "changes": {
                  "description": "The collection of price periods.\nEven if the daily price is not changeing during the stay, this section is filled",
                  "type": "array",
                  "items": {
                    "title": "HotelProduct_PriceVariation",
                    "description": "Some prices may vary during a stay, thus here you can see the daily price per period of the stay",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "startDate": {
                            "description": "Begin date of the period\nFormat: YYYY-MM-DD",
                            "type": "string",
                            "format": "date"
                          },
                          "endDate": {
                            "description": "End date of the period\nFormat: YYYY-MM-DD",
                            "type": "string",
                            "format": "date"
                          }
                        },
                        "required": [
                          "startDate",
                          "endDate"
                        ]
                      },
                      {
                        "$ref": "#/definitions/Price"
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      ],
      "example": "199.50"
    },
    "policies": {
      "title": "HotelProduct_PolicyDetails",
      "type": "object",
      "description": "Booking Rules",
      "properties": {
        "paymentType": {
          "type": "string",
          "description": "payment type. Guarantee means Pay at Check Out. Check the `methods` in `guarantee` or `deposit` or `prepay`.",
          "example": "DEPOSIT",
          "enum": [
            "GUARANTEE",
            "DEPOSIT",
            "PREPAY",
            "HOLDTIME"
          ]
        },
        "guarantee": {
          "title": "HotelProduct_GuaranteePolicy",
          "type": "object",
          "description": "the guarantee policy information applicable to the offer. It includes accepted payments",
          "properties": {
            "description": {
              "$ref": "#/definitions/QualifiedFreeText"
            },
            "acceptedPayments": {
              "$ref": "#/definitions/HotelProduct_PaymentPolicy"
            }
          }
        },
        "deposit": {
          "title": "HotelProduct_DepositPolicy",
          "type": "object",
          "description": "the deposit/prepay policy information applicable to the offer. It includes accepted payments, deadline and the amount due",
          "properties": {
            "amount": {
              "type": "string",
              "description": "Deposit-Prepay amount",
              "pattern": "^\\\\d+(\\\\.\\\\d+)?$",
              "example": "199.50"
            },
            "deadline": {
              "type": "string",
              "format": "date-time",
              "description": "The date and time of the deadline in ISO 8601[https://www.w3.org/TR/NOTE-datetime]. \n Example: 2010-08-14T13:00:00\n Please note that this value is expressed in the hotels local time zone\n",
              "example": "2026-08-15T10:30:00Z"
            },
            "description": {
              "$ref": "#/definitions/QualifiedFreeText"
            },
            "acceptedPayments": {
              "$ref": "#/definitions/HotelProduct_PaymentPolicy"
            }
          }
        },
        "prepay": {
          "title": "HotelProduct_DepositPolicy",
          "type": "object",
          "description": "the deposit/prepay policy information applicable to the offer. It includes accepted payments, deadline and the amount due",
          "properties": {
            "amount": {
              "type": "string",
              "description": "Deposit-Prepay amount",
              "pattern": "^\\\\d+(\\\\.\\\\d+)?$",
              "example": "199.50"
            },
            "deadline": {
              "type": "string",
              "format": "date-time",
              "description": "The date and time of the deadline in ISO 8601[https://www.w3.org/TR/NOTE-datetime]. \n Example: 2010-08-14T13:00:00\n Please note that this value is expressed in the hotels local time zone\n",
              "example": "2026-08-15T10:30:00Z"
            },
            "description": {
              "$ref": "#/definitions/QualifiedFreeText"
            },
            "acceptedPayments": {
              "$ref": "#/definitions/HotelProduct_PaymentPolicy"
            }
          }
        },
        "holdTime": {
          "title": "HotelProduct_HoldPolicy",
          "type": "object",
          "description": "the hold policy",
          "properties": {
            "deadline": {
              "type": "string",
              "format": "date-time",
              "description": "The date and time of the deadline in ISO 8601[https://www.w3.org/TR/NOTE-datetime]. \n Example: 2010-08-14T13:00:00\n Please note that this value is expressed in the hotels local time zone\n",
              "example": "2026-08-15T10:30:00Z"
            }
          },
          "required": [
            "deadline"
          ]
        },
        "checkInOut": {
          "title": "HotelProduct_CheckInOutPolicy",
          "type": "object",
          "properties": {
            "checkIn": {
              "type": "string",
              "example": "13:00:00",
              "description": "Check-in From time limit in ISO-8601 format [http://www.w3.org/TR/xmlschema-2/#time]"
            },
            "checkInDescription": {
              "$ref": "#/definitions/QualifiedFreeText"
            },
            "checkOut": {
              "type": "string",
              "example": "11:00:00",
              "description": "Check-out Until time limit in ISO-8601 format [http://www.w3.org/TR/xmlschema-2/#time]"
            },
            "checkOutDescription": {
              "$ref": "#/definitions/QualifiedFreeText"
            }
          }
        },
        "cancellations": {
          "type": "array",
          "items": {
            "title": "HotelProduct_CancellationPolicy",
            "type": "object",
            "description": "Cancellation policies are optional in response (whether they apply or not according to the provider response returned at pricing or sell.   ",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "FULL_STAY"
                ],
                "description": "* FULL_STAY: the Penalty amount equals the `total` price.",
                "example": "FULL_STAY"
              },
              "amount": {
                "type": "string",
                "description": "Amount of the cancellation fee.",
                "pattern": "^\\\\d+(\\\\.\\\\d+)?$",
                "example": "199.50"
              },
              "numberOfNights": {
                "type": "integer",
                "format": "int32",
                "minimum": 0,
                "description": "Number of nights due as fee in case of cancellation.",
                "example": 1
              },
              "percentage": {
                "type": "string",
                "description": "Percentage of the total stay amount to be paid in case of cancellation. Value is between 0 and 100.",
                "pattern": "^\\\\d+(\\\\.\\\\d+)?$",
                "example": 50
              },
              "deadline": {
                "type": "string",
                "format": "date-time",
                "description": "Represents the deadline after which the penalty applies. DateTime is in ISO 8601 [https://www.w3.org/TR/NOTE-datetime].\nExample: 2010-08-14T12:00:00+01:00\nExample: 2010-08-14T12:00:00Z\nExample: 2010-08-14T12:00:00-01:00\nThe value is expressed in the hotel local time zone, with the added time zone difference. So you can compute the deadline in UTC(GMT) if desired.",
                "example": "2026-08-15T10:30:00Z"
              },
              "description": {
                "$ref": "#/definitions/QualifiedFreeText"
              }
            }
          }
        }
      }
    },
    "rateFamilyEstimated": {
      "title": "HotelProduct_RateFamily",
      "type": "object",
      "description": "The estimated rate code family of the offer. Grouping various rate plan codes that belongs to the same family and indicates the type of the rate",
      "properties": {
        "code": {
          "description": "The estimated rate family (PRO,FAM,GOV)",
          "type": "string",
          "pattern": "[A-Z0-9]{3}",
          "example": "string-value"
        },
        "type": {
          "description": "The type of the rate (public=P, negotiated=N, conditional=C)",
          "type": "string",
          "pattern": "[PNC]",
          "example": "string-value"
        }
      }
    }
  },
  "required": [
    "rateCode",
    "room",
    "price"
  ]
}