{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/amadeus/refs/heads/main/json-schema/hotel-search-hotel-offer-schema.json", "title": "HotelOffer", "description": "Hotel Offer", "type": "object", "properties": { "type": { "title": "Type", "description": "data type", "type": "string", "enum": [ "hotel-offer" ] }, "id": { "description": "Unique identifier of this offer. Might be valid for a temporary period only.", "example": "TSXOJ6LFQ2", "type": "string", "minLength": 2, "maxLength": 100, "pattern": "^[A-Z0-9]*$" }, "checkInDate": { "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).", "example": "2020-12-30", "type": "string", "format": "date" }, "checkOutDate": { "description": "check-out date of the stay (hotel local date). Format YYYY-MM-DD\nThe lowest accepted value is `checkInDate`+1.", "example": "2020-12-31", "type": "string", "format": "date" }, "roomQuantity": { "description": "number of rooms (1-9)", "example": "1", "type": "string" }, "rateCode": { "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", "example": "RAC", "type": "string", "minLength": 3, "maxLength": 3, "pattern": "^[A-Z0-9*]{3}$" }, "rateFamilyEstimated": { "title": "HotelProduct_RateFamily", "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", "type": "object", "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" } } }, "category": { "description": "Special Rate Category\nExamples:\n ASSOCIATION\n FAMILY_PLAN", "example": "FAMILY_PLAN", "type": "string" }, "description": { "title": "QualifiedFreeText", "description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language", "type": "object", "properties": { "text": { "description": "Free Text", "example": "A description", "type": "string" }, "lang": { "description": "see RFC 5646", "example": "fr-FR", "type": "string" } } }, "commission": { "title": "HotelProduct_Commission", "type": "object", "properties": { "percentage": { "description": "Percentage of the commission paid to the travel seller. Value is between 0 and 100", "type": "string", "pattern": "^\\\\d+(\\\\.\\\\d+)?$", "example": 50 }, "amount": { "description": "Amount of the commission paid to the travel seller. The amount is always linked to the currency code of the offer", "type": "string", "pattern": "^\\\\d+(\\\\.\\\\d+)?$", "example": "199.50" }, "description": { "title": "QualifiedFreeText", "description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language", "type": "object", "properties": { "text": { "description": "Free Text", "example": "A description", "type": "string" }, "lang": { "description": "see RFC 5646", "example": "fr-FR", "type": "string" } } } } }, "boardType": { "title": "BoardType", "description": "The included Breakfast/Meals", "type": "string", "enum": [ "ROOM_ONLY", "BREAKFAST", "HALF_BOARD", "FULL_BOARD", "ALL_INCLUSIVE", "BUFFET_BREAKFAST", "CARIBBEAN_BREAKFAST", "CONTINENTAL_BREAKFAST", "ENGLISH_BREAKFAST", "FULL_BREAKFAST", "DINNER_BED_AND_BREAKFAST", "LUNCH", "DINNER", "FAMILY_PLAN", "AS_BROCHURED", "SELF_CATERING", "BERMUDA", "AMERICAN", "FAMILY_AMERICAN", "MODIFIED" ] }, "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" }, "typeEstimated": { "title": "HotelProduct_EstimatedRoomType", "description": "estimated room category, bed type and number of beds in the room. This information has been parsed from the room description, and is thus only provided for informational purposes", "type": "object", "properties": { "category": { "description": "Category code", "type": "string", "example": "string-value" }, "beds": { "description": "Number of beds in the room (1-9)", "type": "integer", "format": "int32", "example": 1 }, "bedType": { "description": "Type of the bed", "type": "string", "example": "string-value" } } }, "description": { "title": "QualifiedFreeText", "description": "Specific type to convey a list of string for specific information type ( via qualifier) in specific character set, or language", "type": "object", "properties": { "text": { "description": "Free Text", "example": "A description", "type": "string" }, "lang": { "description": "see RFC 5646", "example": "fr-FR", "type": "string" } } } } }, "guests": { "title": "HotelProduct_Guests", "type": "object", "properties": { "adults": { "description": "number of adult guests (1-9) per room", "example": 2, "type": "integer", "minimum": 1, "maximum": 9, "format": "int32" }, "childAges": { "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.", "type": "array", "items": { "type": "integer", "minimum": 0, "maximum": 20, "format": "int32" } } } }, "price": { "title": "HotelProduct_HotelPrice", "description": "price information", "type": "object", "properties": { "currency": { "description": "currency Code apply to all elements of the price", "type": "string", "example": "EUR" }, "sellingTotal": { "description": "sellingTotal = Total + margins + markup + totalFees - discounts", "type": "string", "example": "199.50" }, "total": { "description": "total = base + totalTaxes", "type": "string", "example": "199.50" }, "base": { "type": "string", "example": "string-value" }, "taxes": { "type": "array", "items": { "$ref": "#/definitions/Tax" } }, "markups": { "type": "array", "items": { "$ref": "#/definitions/Markup" } }, "variations": { "title": "HotelProduct_PriceVariations", "description": "Daily price variations and the average daily price (when available) is shown here", "type": "object", "properties": { "average": { "$ref": "#/definitions/Price" }, "changes": { "description": "A collection of price periods if the daily price changes during the stay", "type": "array", "items": { "$ref": "#/definitions/HotelProduct_PriceVariation" } } } } } }, "policies": { "title": "HotelProduct_PolicyDetails", "description": "Booking Rules", "type": "object", "properties": { "paymentType": { "title": "PaymentType", "description": "payment type. Guarantee means Pay at Check Out. Check the `methods` in `guarantee` or `deposit` or `prepay`.", "type": "string", "enum": [ "GUARANTEE", "DEPOSIT", "PREPAY", "HOLDTIME" ] }, "guarantee": { "title": "HotelProduct_GuaranteePolicy", "description": "the guarantee policy information applicable to the offer. It includes accepted payments", "type": "object", "properties": { "description": { "$ref": "#/definitions/QualifiedFreeText" }, "acceptedPayments": { "$ref": "#/definitions/HotelProduct_PaymentPolicy" } } }, "deposit": { "title": "HotelProduct_DepositPolicy", "description": "the deposit/prepay policy information applicable to the offer. It includes accepted payments, deadline and the amount due", "type": "object", "properties": { "amount": { "description": "Deposit-Prepay amount", "type": "string", "pattern": "^\\\\d+(\\\\.\\\\d+)?$", "example": "199.50" }, "deadline": { "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", "type": "string", "format": "date-time", "example": "2026-08-15T10:30:00Z" }, "description": { "$ref": "#/definitions/QualifiedFreeText" }, "acceptedPayments": { "$ref": "#/definitions/HotelProduct_PaymentPolicy" } } }, "prepay": { "title": "HotelProduct_DepositPolicy", "description": "the deposit/prepay policy information applicable to the offer. It includes accepted payments, deadline and the amount due", "type": "object", "properties": { "amount": { "description": "Deposit-Prepay amount", "type": "string", "pattern": "^\\\\d+(\\\\.\\\\d+)?$", "example": "199.50" }, "deadline": { "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", "type": "string", "format": "date-time", "example": "2026-08-15T10:30:00Z" }, "description": { "$ref": "#/definitions/QualifiedFreeText" }, "acceptedPayments": { "$ref": "#/definitions/HotelProduct_PaymentPolicy" } } }, "holdTime": { "title": "HotelProduct_HoldPolicy", "description": "the hold policy", "type": "object", "properties": { "deadline": { "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", "type": "string", "format": "date-time", "example": "2026-08-15T10:30:00Z" } }, "required": [ "deadline" ] }, "cancellations": { "type": "array", "items": { "$ref": "#/definitions/HotelProduct_CancellationPolicy" } }, "checkInOut": { "title": "HotelProduct_CheckInOutPolicy", "type": "object", "properties": { "checkIn": { "description": "Check-in From time limit in ISO-8601 format [http://www.w3.org/TR/xmlschema-2/#time]", "example": "13:00:00", "type": "string" }, "checkInDescription": { "$ref": "#/definitions/QualifiedFreeText" }, "checkOut": { "description": "Check-out Until time limit in ISO-8601 format [http://www.w3.org/TR/xmlschema-2/#time]", "example": "11:00:00", "type": "string" }, "checkOutDescription": { "$ref": "#/definitions/QualifiedFreeText" } } } } }, "self": { "description": "A self link to the object. Use this to refresh the Offer price", "example": "https://test.travel.api.amadeus.com/v2/shopping/hotel-offers/63A93695B58821ABB0EC2B33FE9FAB24D72BF34B1BD7D707293763D8D9378FC3", "type": "string" } }, "required": [ "id", "rateCode", "room", "price" ] }