Amadeus · Schema

HotelOffer

Hotel Offer

TravelTravel TechnologyReservationsFlightsHotelsAirlinesHospitalityTours and ActivitiesCars and TransfersDestination ContentItinerary ManagementTrip PlanningArtificial IntelligenceMarket Insights
View JSON Schema on GitHub

JSON Schema

hotel-booking-hotel-offer-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-offer-schema.json",
  "title": "HotelOffer",
  "description": "Hotel Offer",
  "allOf": [
    {
      "type": "object",
      "properties": {
        "type": {
          "description": "data type set to hotel-offer",
          "type": "string",
          "example": "hotel-offer",
          "default": "hotel-offer",
          "enum": [
            "hotel-offer"
          ]
        },
        "id": {
          "type": "string",
          "pattern": "^[A-Z0-9]*$",
          "minLength": 2,
          "maxLength": 100,
          "example": "63A93695B58821ABB0EC2B33FE9FAB24D72BF34B1BD7D707293763D8D9378FC3",
          "description": "Unique identifier of this offer. Might be valid for a temporary period only."
        }
      },
      "required": [
        "id"
      ]
    },
    {
      "description": "Hotel Offer\n",
      "type": "object",
      "title": "HotelProduct",
      "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": {
              "$ref": "#/definitions/QualifiedFreeText"
            }
          }
        },
        "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": {
              "$ref": "#/definitions/QualifiedFreeText"
            }
          }
        },
        "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": {
              "$ref": "#/definitions/HotelProduct_DepositPolicy"
            },
            "prepay": {
              "$ref": "#/definitions/HotelProduct_DepositPolicy"
            },
            "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"
      ]
    }
  ]
}