{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hotel-engine/json-schema/hotel-engine-v1-find-availability-request-schema.json",
  "title": "Shop_Lodging_Service_FindAvailabilityRequest_v1",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hotel-engine-lodgingshoppingservice-api-openapi.yml#/components/schemas/v1FindAvailabilityRequest",
  "type": "object",
  "properties": {
    "continuationToken": {
      "type": "string",
      "description": "A [BestOffer.continuation_token].\nPassing a continuation_token allows you to continue the shopping flow from a BestOffers search with the necessary search context preserved."
    },
    "singleProperty": {
      "$ref": "#/$defs/v1FindAvailabilityPropertyRequest",
      "description": "A request to find availability for a [Property] directly, skipping the BestOffers search."
    }
  },
  "$defs": {
    "v1AnonymousAdult": {
      "type": "object",
      "description": "An adult traveler whose personal details have not yet been collected.",
      "title": "Common_AnonymousAdult_v1"
    },
    "v1AnonymousChild": {
      "type": "object",
      "properties": {
        "age": {
          "type": "integer",
          "format": "int32",
          "description": "The child's age on the date of travel.\nIf the child's birthday is during travel, use the age they will be at the end of travel."
        },
        "birthdate": {
          "type": "string",
          "title": "An ISO-8601-compliant date representing the child's birthdate.\nSee https://en.wikipedia.org/wiki/ISO_8601#Dates"
        }
      },
      "description": "A child traveler whose personal details have not yet been collected.\nA child's age is necessary to retrieve the correct prices.\nFailure to provide an accurate age may result in loss of bookings or refusal to provide service to the traveler.",
      "title": "Common_AnonymousChild_v1"
    },
    "v1AnonymousTraveler": {
      "type": "object",
      "properties": {
        "adult": {
          "$ref": "#/$defs/v1AnonymousAdult"
        },
        "child": {
          "$ref": "#/$defs/v1AnonymousChild"
        }
      },
      "description": "A traveler whose personal details have not yet been collected.",
      "title": "Common_AnonymousTraveler_v1"
    },
    "v1FindAvailabilityPropertyRequest": {
      "type": "object",
      "properties": {
        "propertyId": {
          "type": "string",
          "title": "The Engine [Property] ID"
        },
        "checkInDate": {
          "type": "string",
          "title": "An ISO-8601-compliant date on which you will check in to the property.\nSee https://en.wikipedia.org/wiki/ISO_8601#Dates",
          "pattern": "^(?<year>[0-9]{4})-(?<month>(?:0[1-9])|(?:1[0-2]))-(?<day>(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))$"
        },
        "checkOutDate": {
          "type": "string",
          "title": "An ISO-8601-compliant date on which you will check out of the property.\nSee https://en.wikipedia.org/wiki/ISO_8601#Dates",
          "pattern": "^(?<year>[0-9]{4})-(?<month>(?:0[1-9])|(?:1[0-2]))-(?<day>(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))$"
        },
        "numRooms": {
          "type": "integer",
          "format": "int32",
          "default": "1",
          "title": "The number of rooms to book.\nMay not exceed 8",
          "maximum": 8.0,
          "minimum": 1.0
        },
        "currencyCode": {
          "type": "string",
          "title": "The 3-character ISO-4217 alphabetic currency code to be used to convey pricing information.\nhttps://www.iso.org/iso-4217-currency-codes.html",
          "pattern": "^[A-Z]{3}$"
        },
        "travelers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/$defs/v1AnonymousTraveler"
          },
          "description": "Describes the travelers for whom you are searching.\nChanges to the quantity or age of travelers has an impact on the Offer price.\nFailure to properly identify your travelers may incur additional charges at checkin or cancellation of the booking."
        },
        "salesChannel": {
          "$ref": "#/$defs/v1SalesChannel",
          "title": "If available, the sales channel for the customer"
        }
      },
      "description": "A request to find availability for a single [Property].",
      "title": "Shop_Lodging_Service_FindAvailabilityPropertyRequest_v1"
    },
    "v1SalesChannel": {
      "type": "string",
      "enum": [
        "SALES_CHANNEL_UNKNOWN",
        "SALES_CHANNEL_MOBILE_NATIVE",
        "SALES_CHANNEL_MOBILE_WEB",
        "SALES_CHANNEL_WEB"
      ],
      "default": "SALES_CHANNEL_UNKNOWN",
      "description": "- SALES_CHANNEL_UNKNOWN: The sales channel cannot be determined.\n - SALES_CHANNEL_MOBILE_NATIVE: The customer is shopping via a mobile application.\n - SALES_CHANNEL_MOBILE_WEB: The customer is shopping via a mobile web browser.\n - SALES_CHANNEL_WEB: The customer is shopping via a web browser on a desktop or laptop computer.",
      "title": "Common_SalesChannel_v1"
    }
  }
}