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"
  ]
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/hotel-booking-hotel-product"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.