{
  "openapi": "3.0.0",
  "info": {
    "title": "Exely Connect APIs",
    "version": "1.0.0"
  },
  "servers": [],
  "paths": {
    "/v1/properties/{propertyId}/cancellation-rules": {
      "get": {
        "tags": [
          "CancellationRules"
        ],
        "summary": "Receive cancellation rules",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1024"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Cancellation rules",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentApi_CancellationRulesResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/content/"
        }
      ]
    },
    "/v1/properties": {
      "get": {
        "tags": [
          "ContentApi"
        ],
        "summary": "Receive property entity",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Key to continue viewing from the required spot\r\n\r\nThe number of accommodations in the response is limited, so you may not always be able to get them all within one request.\r\n\r\nTo continue from the spot you left off, use this option.\r\n\r\nThe value of this parameter can always be obtained from the response (‘next’ property).\r\n\r\nIf you do not specify this parameter, you will obtain accommodations from the very beginning of the list.\r\n\r\nAnalogue to pagination.",
            "schema": {
              "type": "string",
              "example": "UlUtNDE5NQ=="
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "The number of elements in the response.\r\n\r\nMaximum number of elements - 200 (default value)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 200
            }
          },
          {
            "name": "include",
            "in": "query",
            "description": "Add additional information to the response\r\n\r\n‘All’ value: information about the hotel, room types, rate plans and services\r\n\r\nEmpty value: ‘Id’ only",
            "schema": {
              "type": "string",
              "example": ""
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "Language code. Allowed values: 'en' (English).\r\n\r\nIf you do not specify this parameter, you will obtain accommodations in the property’s language.\r\n",
            "schema": {
              "type": "string",
              "example": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed description of accommodations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentApi_PropertyInfoPage"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/content/"
        }
      ]
    },
    "/v1/properties/{propertyId}": {
      "get": {
        "tags": [
          "ContentApi"
        ],
        "summary": "Receive description of a property",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1024"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "Language code. Allowed values: 'en' (English).\r\n\r\nIf you do not specify this parameter, you will obtain accommodations in the property’s language.\r\n",
            "schema": {
              "type": "string",
              "example": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Property detailed information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentApi_PropertyInfoType"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/content/"
        }
      ]
    },
    "/v1/meal-plans": {
      "get": {
        "tags": [
          "ContentApi"
        ],
        "summary": "Receive entity of possible meal options",
        "responses": {
          "200": {
            "description": "Meal entity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContentApi_MealPlan"
                  }
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/content/"
        }
      ]
    },
    "/v1/room-type-categories": {
      "get": {
        "tags": [
          "ContentApi"
        ],
        "summary": "Receive entity of possible room types",
        "responses": {
          "200": {
            "description": "Room type entity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContentApi_RoomTypeCategory"
                  }
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/content/"
        }
      ]
    },
    "/v1/room-amenity-categories": {
      "get": {
        "tags": [
          "ContentApi"
        ],
        "summary": "Receive entity of possible room amenities",
        "responses": {
          "200": {
            "description": "Receive entity of possible room amenities",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContentApi_RoomAmenitiesCategories"
                  }
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/content/"
        }
      ]
    },
    "/v1/properties/{propertyId}/extra-stay-rules": {
      "get": {
        "tags": [
          "ExtraStayRules"
        ],
        "summary": "Receive early check-in and late check-out rules",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1024"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Early check-in and late check-out rules",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentApi_ExtraStayRulesResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/content/"
        }
      ]
    },
    "/corporates": {
      "post": {
        "tags": [
          "CorporateApi"
        ],
        "summary": "Creates a corporate client",
        "requestBody": {
          "description": "Corporate client creation entity",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReferenceDataApi_CorporateRq"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReferenceDataApi_CorporateRq"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReferenceDataApi_CorporateRq"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceDataApi_CorporateRs"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://partner.tlintegration-eu.com/api/reference-data/"
        }
      ]
    },
    "/corporates/{corporateId}": {
      "get": {
        "tags": [
          "CorporateApi"
        ],
        "summary": "Retrieves corporate client information",
        "parameters": [
          {
            "name": "corporateId",
            "in": "path",
            "description": "Identifier of the corporate client",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceDataApi_CorporateRs"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://partner.tlintegration-eu.com/api/reference-data/"
        }
      ]
    },
    "/payment-methods": {
      "get": {
        "tags": [
          "PaymentMethods"
        ],
        "summary": "Get list of payment methods",
        "responses": {
          "200": {
            "description": "Payment methods",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceDataApi_PaymentMethodsResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://partner.tlintegration-eu.com/api/reference-data/"
        }
      ]
    },
    "/property-amenity-types": {
      "get": {
        "tags": [
          "PropertyAmenity"
        ],
        "summary": "Get list of property amenity types",
        "parameters": [
          {
            "name": "languageCode",
            "in": "query",
            "description": "Optional language code. Example: 'en' (English).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Property amenity types",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceDataApi_PropertyAmenityTypesResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://partner.tlintegration-eu.com/api/reference-data/"
        }
      ]
    },
    "/property-kinds": {
      "get": {
        "tags": [
          "PropertyKind"
        ],
        "summary": "Get list of property kinds",
        "parameters": [
          {
            "name": "languageCode",
            "in": "query",
            "description": "Optional language code. Example: 'en' (English).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Property kinds",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceDataApi_PropertyKindsResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://partner.tlintegration-eu.com/api/reference-data/"
        }
      ]
    },
    "/v1/properties/{propertyId}/bookings": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Receive booking summaries",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            },
            "example": "1024"
          },
          {
            "name": "continueToken",
            "in": "query",
            "description": "Use the token from the previous response to continue receiving booking summaries including new and updated ones.<br />\r\nThe token must not request bookings modified earlier than 2009-01-01T00:00:00Z.<br />\r\nFor the first request, the parameter must be empty.",
            "style": "form",
            "schema": {
              "type": "string"
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          },
          {
            "name": "count",
            "in": "query",
            "description": "Maximum mumber of booking summaries in response.<br />\r\nThe maximum allowed value is 1000 (default).",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1000
          },
          {
            "name": "lastModification",
            "in": "query",
            "description": "Enumerate booking summaries based on the last modification datetime, starting from the specified datetime in UTC.<br />\r\nBookings can be requested starting from 2009-01-01T00:00:00Z.<br />\r\nFor subsequent requests, the parameter must be empty.<br />\r\nSpecifying both continueToken and lastModification results in an error.<br />\r\nIf neither continueToken nor lastModification is specified, a search for all bookings starting from 2009-01-01T00:00:00Z (a full sync) is initiated.",
            "style": "form",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2023-06-20T10:41:04Z"
          }
        ],
        "responses": {
          "200": {
            "description": "Booking summary page",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationApi_BookingsPage"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/read-reservation/"
        }
      ]
    },
    "/v1/properties/{propertyId}/bookings/{number}": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Receive booking details",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            },
            "example": "7291"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Booking number",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            },
            "example": "20240303-7291-14573801"
          }
        ],
        "responses": {
          "200": {
            "description": "Response with booking details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationApi_GetBookingResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/read-reservation/"
        }
      ]
    },
    "/v1/properties/room-stays/search": {
      "post": {
        "tags": [
          "SearchRoomStays"
        ],
        "summary": "Search for the lowest priced accommodation options across all available accommodations.\r\nThe maximum number of accommodation to be searched - 200.",
        "requestBody": {
          "description": "Search parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SimpleSearchCriteria"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SimpleSearchCriteria"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SimpleSearchCriteria"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Accommodation options found for all available accommodations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchApi_AggregationSearchByPropertiesResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/search/"
        }
      ]
    },
    "/v1/properties/{propertyId}/room-stays": {
      "get": {
        "tags": [
          "SearchRoomStays"
        ],
        "summary": "Search for accommodation options by specific accommodation",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Accommodation ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "1024"
          },
          {
            "name": "arrivalDate",
            "in": "query",
            "description": "Check-in date.\r\n\r\nFormat complies with ISO-8601 YYYY-MM-DD",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-08-24"
            }
          },
          {
            "name": "departureDate",
            "in": "query",
            "description": "Check-out date.\r\n\r\nFormat complies with ISO-8601 YYYY-MM-DD",
            "required": true,
            "schema": {
              "type": "string",
              "example": "2026-08-25"
            }
          },
          {
            "name": "adults",
            "in": "query",
            "description": "Number of adults",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1
          },
          {
            "name": "childAges",
            "in": "query",
            "description": "Child age range",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result of a search for accommodation options by accommodation in general.<br/>Includes accommodation and services that can be used when booking",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchApi_SearchByPropertyResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/search/"
        }
      ]
    },
    "/v1/properties/{propertyId}/services": {
      "post": {
        "tags": [
          "SearchRoomStays"
        ],
        "summary": "Search for extra services by accommodation conditions",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Accommodation ID",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1024"
            }
          }
        ],
        "requestBody": {
          "description": "Search parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SearchServicesCriteria"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SearchServicesCriteria"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SearchServicesCriteria"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Result of a search for extra services by accommodation conditions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchApi_SearchExtraServicesByPropertyResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/search/"
        }
      ]
    },
    "/v1/properties/{propertyId}/extra-stays": {
      "post": {
        "tags": [
          "SearchRoomStays"
        ],
        "summary": "Search for extra stays by accommodation conditions",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Accommodation ID",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1024"
            }
          }
        ],
        "requestBody": {
          "description": "Search parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SearchExtraStaysCriteria"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SearchExtraStaysCriteria"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchApi_SearchExtraStaysCriteria"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Result of a search for extra stays by accommodation conditions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchApi_SearchExtraStaysByPropertyResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/search/"
        }
      ]
    },
    "/v2/properties/{propertyId}/obtain-accommodation-inventory": {
      "get": {
        "tags": [
          "Property"
        ],
        "summary": "Retrieves the accommodation inventory for a property.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ObtainAccommodationInventoryResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/companies": {
      "get": {
        "tags": [
          "PropertyCompany"
        ],
        "summary": "Retrieves the list of companies for a property.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindCompaniesResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/guests/search": {
      "get": {
        "tags": [
          "PropertyGuest"
        ],
        "summary": "Searches guest profiles by name, phone or room number.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "phone",
            "in": "query",
            "description": "Partial phone number to match",
            "schema": {
              "type": "string",
              "example": "91390"
            },
            "example": "91390"
          },
          {
            "name": "roomName",
            "in": "query",
            "description": "Room/suite display name.",
            "schema": {
              "type": "string",
              "example": "111"
            },
            "example": "111"
          },
          {
            "name": "name",
            "in": "query",
            "description": "Partial first or last name to match",
            "schema": {
              "type": "string",
              "example": "Jo"
            },
            "example": "Jo"
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.",
            "schema": {
              "type": "string",
              "example": "en"
            },
            "example": "en"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindGuestsResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/guests/{pmsPersonId}/loyalty-cards": {
      "get": {
        "tags": [
          "PropertyGuest"
        ],
        "summary": "Retrieves basic loyalty card details for a guest.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "pmsPersonId",
            "in": "path",
            "description": "Guest identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599627465719"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindGuestLoyaltyCardsResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/guests/{pmsPersonId}": {
      "get": {
        "tags": [
          "PropertyGuest"
        ],
        "summary": "Retrieves a guest profile by its PMS identifier.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "pmsPersonId",
            "in": "path",
            "description": "Guest identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599627465719"
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.",
            "schema": {
              "type": "string",
              "example": "en"
            },
            "example": "en"
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_GetGuestResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/guests/{pmsPersonId}/find-occupied-room-stays": {
      "get": {
        "tags": [
          "PropertyGuest"
        ],
        "summary": "Retrieves the list of stays for a given guest.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "pmsPersonId",
            "in": "path",
            "description": "Guest identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599627465719"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindGuestRoomStaysResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/guests/{pmsPersonId}/personal-document": {
      "put": {
        "tags": [
          "PropertyGuest"
        ],
        "summary": "Updates guest’s identity document details.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "pmsPersonId",
            "in": "path",
            "description": "Guest identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599627465719"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetGuestPersonalDocumentRequest"
                  }
                ],
                "description": "Request to set guest identity document details"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetGuestPersonalDocumentRequest"
                  }
                ],
                "description": "Request to set guest identity document details"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetGuestPersonalDocumentRequest"
                  }
                ],
                "description": "Request to set guest identity document details"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/guests/{pmsPersonId}/birth-address": {
      "put": {
        "tags": [
          "PropertyGuest"
        ],
        "summary": "Updates guest's place of birth details.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "pmsPersonId",
            "in": "path",
            "description": "Guest identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599627465719"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetGuestBirthAddressRequest"
                  }
                ],
                "description": "Request to set guest’s country of birth"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetGuestBirthAddressRequest"
                  }
                ],
                "description": "Request to set guest’s country of birth"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetGuestBirthAddressRequest"
                  }
                ],
                "description": "Request to set guest’s country of birth"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/guests/{pmsPersonId}/personal-document/files": {
      "post": {
        "tags": [
          "PropertyGuest"
        ],
        "summary": "Uploads guest’s identity document scan files.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "pmsPersonId",
            "in": "path",
            "description": "Guest identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599627465719"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_AddGuestPersonalDocumentFilesRequest"
                  }
                ],
                "description": "Request to upload one or more guest identity document files"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_AddGuestPersonalDocumentFilesRequest"
                  }
                ],
                "description": "Request to upload one or more guest identity document files"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_AddGuestPersonalDocumentFilesRequest"
                  }
                ],
                "description": "Request to upload one or more guest identity document files"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}": {
      "get": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Retrieves reservation details by reservation number.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.",
            "schema": {
              "type": "string",
              "example": "en"
            },
            "example": "en"
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_GetReservationResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/search": {
      "get": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Searches reservations by parameters; at least one time period must be specified.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "roomId",
            "in": "query",
            "description": "Room/suite identifier",
            "schema": {
              "type": "string",
              "example": "4503599627373585"
            },
            "example": "4503599627373585"
          },
          {
            "name": "state",
            "in": "query",
            "description": "Reservation status filter (\"Active\" or \"Cancelled\")",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Active"
            },
            "example": "Active"
          },
          {
            "name": "startModifyDateTime",
            "in": "query",
            "description": "Last modification of the reservation is on or after the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.\r\n\r\nLimit for \"Modify\" range is 365 days.",
            "schema": {
              "type": "string",
              "example": "2024-09-09T11:11"
            },
            "example": "2024-09-09T11:11"
          },
          {
            "name": "endModifyDateTime",
            "in": "query",
            "description": "Last modification of the reservation is on or before the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.\r\n\r\nLimit for \"Modify\" range is 365 days.",
            "schema": {
              "type": "string",
              "example": "2025-09-09T11:11"
            },
            "example": "2025-09-09T11:11"
          },
          {
            "name": "startAffectPeriodDateTime",
            "in": "query",
            "description": "Stay or part of stay is after the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.\r\n\r\nLimit for \"AffectPeriod\" range is 365 days",
            "schema": {
              "type": "string",
              "example": "2024-09-09T11:11"
            },
            "example": "2024-09-09T11:11"
          },
          {
            "name": "endAffectPeriodDateTime",
            "in": "query",
            "description": "Stay or part of stay is before the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.\r\n\r\nLimit for \"AffectPeriod\" range is 365 days",
            "schema": {
              "type": "string",
              "example": "2025-09-09T11:11"
            },
            "example": "2025-09-09T11:11"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindReservationsResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/find-available-rooms": {
      "get": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Searches available rooms for each stay in the reservation.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindReservationRoomsResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/assign-rooms": {
      "post": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Assigns room/suite for each stay in the reservation.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PmsApi_SetRoomStayRoomRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PmsApi_SetRoomStayRoomRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PmsApi_SetRoomStayRoomRequest"
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/check-in": {
      "post": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Assigns the actual check-in time for a stay.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "pmsRoomStayId",
            "in": "path",
            "description": "Room stay identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599628227391"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetActualCheckInDateTimeRequest"
                  }
                ],
                "description": "Request to set actual check-in time"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetActualCheckInDateTimeRequest"
                  }
                ],
                "description": "Request to set actual check-in time"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetActualCheckInDateTimeRequest"
                  }
                ],
                "description": "Request to set actual check-in time"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/check-out": {
      "post": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Assigns the actual check-out time for a stay.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "pmsRoomStayId",
            "in": "path",
            "description": "Room stay identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599628227391"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetActualCheckOutDateTimeRequest"
                  }
                ],
                "description": "Request to set actual check-out time"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetActualCheckOutDateTimeRequest"
                  }
                ],
                "description": "Request to set actual check-out time"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetActualCheckOutDateTimeRequest"
                  }
                ],
                "description": "Request to set actual check-out time"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/find-available-payment-systems": {
      "get": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Retrieves available payment methods for a stay.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "pmsRoomStayId",
            "in": "path",
            "description": "Room stay identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599628227391"
          },
          {
            "name": "action",
            "in": "query",
            "description": "Transaction type (\"Payment\" or \"Refund\")",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PmsApi_PaymentActionKind"
                }
              ],
              "example": "Payment"
            },
            "example": "Payment"
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.",
            "schema": {
              "type": "string",
              "example": "en"
            },
            "example": "en"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_GetPaymentSystemsForPaymentResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/process-payment": {
      "post": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Processes a payment for a stay.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "pmsRoomStayId",
            "in": "path",
            "description": "Room stay identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599628227391"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SavePaymentRequest"
                  }
                ],
                "description": "Request to process a payment"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SavePaymentRequest"
                  }
                ],
                "description": "Request to process a payment"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SavePaymentRequest"
                  }
                ],
                "description": "Request to process a payment"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/process-refund": {
      "post": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Processes a refund for a stay.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "pmsRoomStayId",
            "in": "path",
            "description": "Room stay identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599628227391"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SavePaymentRequest"
                  }
                ],
                "description": "Request to process a payment"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SavePaymentRequest"
                  }
                ],
                "description": "Request to process a payment"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SavePaymentRequest"
                  }
                ],
                "description": "Request to process a payment"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/room": {
      "put": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Assigns a room for a stay.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "pmsRoomStayId",
            "in": "path",
            "description": "Room stay identifier in PMS",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "4503599628227391"
          }
        ],
        "requestBody": {
          "description": "request",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetRoomRequest"
                  }
                ],
                "description": "Request to assign a room"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetRoomRequest"
                  }
                ],
                "description": "Request to assign a room"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PmsApi_SetRoomRequest"
                  }
                ],
                "description": "Request to assign a room"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/reservations/{number}/invoices": {
      "get": {
        "tags": [
          "PropertyReservation"
        ],
        "summary": "Retrieves all invoices related to a reservation.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "number",
            "in": "path",
            "description": "Reservation number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "22200222-111-99999999"
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.",
            "schema": {
              "type": "string",
              "example": "en"
            },
            "example": "en"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindInvoicesResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v2/properties/{propertyId}/rooms": {
      "get": {
        "tags": [
          "PropertyRoom"
        ],
        "summary": "Retrieves the list of rooms/suites for a property.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "roomTypeId",
            "in": "query",
            "description": "Room type identifier",
            "schema": {
              "type": "string",
              "example": "315367"
            },
            "example": "315367"
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of items to return (<=100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Pagination token for next page. \r\n\r\nToken is in the response if the number of items exceeds the limit. \r\n\r\nSend it back to get the next set of items. \r\n\r\nIf the request contains the token, other parameters passed in the query are ignored.",
            "schema": {
              "type": "string",
              "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
            },
            "example": "V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE="
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsApi_FindRoomsResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms"
        }
      ]
    },
    "/v1/properties/{propertyId}/daily-occupancy": {
      "get": {
        "tags": [
          "PropertyAnalytics"
        ],
        "summary": "Retrieves daily occupancy statistics for a property.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property Identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "5431"
          },
          {
            "name": "startStayDate",
            "in": "query",
            "description": "Start date of the stay period for reported statistics (ISO-8601 format YYYY-MM-DD).\r\nLimit for date range is 31 days",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-01-01"
            },
            "example": "2026-01-01"
          },
          {
            "name": "endStayDate",
            "in": "query",
            "description": "End date of the stay period for reported statistics. (ISO-8601 format YYYY-MM-DD).\r\nLimit for date range is 31 days",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-01-25"
            },
            "example": "2026-01-25"
          },
          {
            "name": "otbDate",
            "in": "query",
            "description": "Optional OTB (On-the-Books) snapshot date. If specified, the historical statistics will be filtered\r\nbased solely on the booking creation date",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2025-01-15"
            },
            "example": "2025-01-15"
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsAnalyticsApi_ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsAnalyticsApi_ApiResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsAnalyticsApi_GetDailyOccupancyResponse"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms-analytics"
        }
      ]
    },
    "/v1/properties/{propertyId}/bookings/{bookingId}": {
      "get": {
        "tags": [
          "Bookings"
        ],
        "summary": "Retrieves booking details. The bookingId is obtained from a pms_integration_storage:booking_changed webhook event.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2490"
          },
          {
            "name": "bookingId",
            "in": "path",
            "description": "Booking id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "606541"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_BookingRs"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms-integration-storage"
        }
      ]
    },
    "/v1/properties/{propertyId}/inventories/search": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Returns PMS inventory filtered by room type codes and date range.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2490"
          }
        ],
        "requestBody": {
          "description": "Search filters: room type codes and date range",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PmsIntegrationApi_SearchInventoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PmsIntegrationApi_SearchInventoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PmsIntegrationApi_SearchInventoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_SearchInventoryRs"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms-integration-storage"
        }
      ]
    },
    "/v1/properties/{propertyId}/inventories/blocks/{inventoryBlockId}": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Retrieves inventory block details. The inventoryBlockId is obtained from a pms_integration_storage:inventory_block_changed webhook event.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2490"
          },
          {
            "name": "inventoryBlockId",
            "in": "path",
            "description": "Inventory block id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "12345"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_InventoryBlockRs"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms-integration-storage"
        }
      ]
    },
    "/v1/properties/{propertyId}/calculate-stay-units": {
      "get": {
        "tags": [
          "Statistics"
        ],
        "summary": "Calculates the number of booked stay units (days or nights) for a given period and rate plan.",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2490"
          },
          {
            "name": "firstStayDate",
            "in": "query",
            "description": "First date of the period for calculation (inclusive) in ISO-8601 yyyy-MM-dd format, property local time",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2025-05-15"
          },
          {
            "name": "lastStayDate",
            "in": "query",
            "description": "Last date of the period for calculation (inclusive) in ISO-8601 yyyy-MM-dd format, property local time",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2025-08-15"
          },
          {
            "name": "pmsSideRatePlanCode",
            "in": "query",
            "description": "Rate plan code from PMS (**case-sensitive**). Specified rate plan is used to filter bookings for calculation",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "BAR1"
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_ErrorRs"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PmsIntegrationApi_BookedNightsCountRs"
                }
              }
            }
          }
        }
      },
      "servers": [
        {
          "url": "https://connect.hopenapi.com/api/pms-integration-storage"
        }
      ]
    }
  },
  "components": {
    "schemas": {
      "ContentApi_Address": {
        "required": [
          "countryCode"
        ],
        "type": "object",
        "properties": {
          "postalCode": {
            "type": "string",
            "description": "Postcode",
            "nullable": true,
            "example": "SW1A 1AA"
          },
          "countryCode": {
            "minLength": 1,
            "type": "string",
            "description": "Country code.\r\n\r\nCompliant with ISO 3166-1 Alpha3",
            "example": "GBR"
          },
          "region": {
            "type": "string",
            "description": "Region",
            "nullable": true,
            "example": "London"
          },
          "regionId": {
            "type": "string",
            "description": "Region ID",
            "nullable": true,
            "example": "020"
          },
          "cityName": {
            "type": "string",
            "description": "City name",
            "nullable": true,
            "example": "London"
          },
          "cityId": {
            "type": "string",
            "description": "City ID",
            "nullable": true,
            "example": "1"
          },
          "addressLine": {
            "type": "string",
            "description": "Property address including street and house number",
            "nullable": true,
            "example": "123 Main St."
          },
          "latitude": {
            "type": "number",
            "description": "Geographical latitude",
            "format": "double",
            "nullable": true,
            "example": 51.5074
          },
          "longitude": {
            "type": "number",
            "description": "Geographical longitude",
            "format": "double",
            "nullable": true,
            "example": -0.1278
          },
          "remark": {
            "type": "string",
            "description": "(Planned) Further information on how to get there",
            "nullable": true,
            "example": "Take the second left after the bridge"
          }
        },
        "additionalProperties": false,
        "description": "Property address"
      },
      "ContentApi_Amenity": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "Amenity code",
            "example": "wifi_internet"
          }
        },
        "additionalProperties": false,
        "description": "Room amenities"
      },
      "ContentApi_AmenityChargeType": {
        "enum": [
          "None",
          "Free",
          "Chargeable"
        ],
        "type": "string",
        "description": "Amenity charge type:\r\n\r\nNone - Charge type is not applicable or not specified\r\n\r\nFree - Amenity is free\r\n\r\nChargeable - Chargeable amenity\r\n"
      },
      "ContentApi_AmenityInfo": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "Amenity code",
            "example": "wifi_internet"
          },
          "name": {
            "type": "string",
            "description": "Amenity name",
            "nullable": true,
            "example": "Wi-Fi-internet"
          }
        },
        "additionalProperties": false,
        "description": "Room amenities"
      },
      "ContentApi_ArrivalDatesInfo": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "description": "Start date of the rule according to local hotel time.\r\nThe format complies with ISO-8601 YYYY-MM-DD",
            "format": "date-time",
            "example": "2026-08-25"
          },
          "endDate": {
            "type": "string",
            "description": "End date of the rule according to local hotel time.\r\nThe format complies with ISO-8601 YYYY-MM-DD",
            "format": "date-time",
            "example": "2026-08-25"
          },
          "isEndless": {
            "type": "boolean",
            "description": "Indicates that the rule is continuously active starting from StartDate",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "ContentApi_BeforeArrivalMatching": {
        "enum": [
          "NoMatter",
          "AtLeast",
          "NoMoreThan",
          "Between"
        ],
        "type": "string",
        "description": "Range before arrival:\r\n\r\nNoMatter - Not dependent on any specific time;\r\n\r\nAtLeast - More than or equal to beforeArrivalValue;\r\n\r\nNoMoreThan - Less than or equal to beforeArrivalValue;\r\n\r\nBetween - Within the period from beforeArrivalValue to beforeArrivalValueMax."
      },
      "ContentApi_CancellationRule": {
        "required": [
          "id",
          "propertyId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Cancellation rule Id",
            "example": "232241"
          },
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Property ID.",
            "example": "1024"
          },
          "referencePointKind": {
            "$ref": "#/components/schemas/ContentApi_ReferencePointKind"
          },
          "referencePointTime": {
            "type": "string",
            "description": "Time when the rule becomes active\r\nTime format complies with ISO-8601 hh:mm",
            "nullable": true,
            "example": "15:00"
          },
          "cancellationTerms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_CancellationTerm"
            },
            "description": "Cancellation terms",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContentApi_CancellationRulesResponse": {
        "type": "object",
        "properties": {
          "cancellationRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_CancellationRule"
            },
            "description": "Cancellation rules used by any rate plan.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Cancellation rules for a given property."
      },
      "ContentApi_CancellationTerm": {
        "type": "object",
        "properties": {
          "beforeArrivalMatching": {
            "$ref": "#/components/schemas/ContentApi_BeforeArrivalMatching"
          },
          "beforeArrivalUnit": {
            "$ref": "#/components/schemas/ContentApi_TimeUnit"
          },
          "beforeArrivalValue": {
            "type": "integer",
            "description": "Number of BeforeArrivalUnits before arrival",
            "format": "int32",
            "example": 24
          },
          "beforeArrivalValueMax": {
            "type": "integer",
            "description": "Upper limit of BeforeArrivalUnit before arrival (used only with BeforeArrivalMatching.Between)",
            "format": "int32"
          },
          "penaltyCalculationMethod": {
            "$ref": "#/components/schemas/ContentApi_PenaltyCalculationMethod"
          },
          "penaltyValue": {
            "type": "number",
            "description": "Penalty value",
            "format": "double",
            "example": 0
          },
          "penaltyValueCurrency": {
            "type": "string",
            "description": "Penalty currency",
            "nullable": true,
            "example": "RUB"
          },
          "arrivalDates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_ArrivalDatesInfo"
            },
            "description": "Date range when the rule is active",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContentApi_CompanyDetails": {
        "type": "object",
        "properties": {
          "legalEntityName": {
            "type": "string",
            "description": "Name of the legal entity or individual entrepreneur",
            "nullable": true,
            "example": "Google LLC"
          },
          "taxpayerIdentificationNumber": {
            "type": "string",
            "description": "Taxpayer Identification Number (TIN) of the property owner",
            "nullable": true,
            "example": "770493581"
          },
          "companyRegistrationNumber": {
            "type": "string",
            "description": "Company Registration Number (CRN)",
            "nullable": true,
            "example": "1027700132195"
          },
          "legalAddress": {
            "type": "string",
            "description": "Company Legal address",
            "nullable": true,
            "example": "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA"
          }
        },
        "additionalProperties": false,
        "description": "Basic information about the company, such as the name of the organization and Taxpayer Identification Number."
      },
      "ContentApi_ContactInfo": {
        "required": [
          "address"
        ],
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ContentApi_Address"
          },
          "phones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Phone"
            },
            "description": "(Planned) Property phone numbers",
            "nullable": true
          },
          "emails": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "(Planned) Hotel email addresses",
            "nullable": true,
            "example": [
              "email@example.com"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Contact details entity of a property"
      },
      "ContentApi_EntityState": {
        "enum": [
          "Active",
          "Inactive"
        ],
        "type": "string",
        "description": "EntityState:\r\n\r\nInactive - entity is unavailable\r\n\r\nActive - entity is available",
        "example": "Active"
      },
      "ContentApi_ExtraServiceSurchargeOption": {
        "enum": [
          "None",
          "All",
          "MealOnly"
        ],
        "type": "string",
        "description": "Extra services for which a surcharge applies in case of early check-in or late check-out:\r\n\r\nNone - No surcharge for extra services;\r\n\r\nAll - All extra services are provided for a surcharge;\r\n\r\nMealOnly - Only breakfast is provided for a surcharge in case of early check-in. Everything else requires no surcharge."
      },
      "ContentApi_ExtraStayChargeRate": {
        "required": [
          "currency",
          "rate"
        ],
        "type": "object",
        "properties": {
          "currency": {
            "minLength": 1,
            "type": "string",
            "description": "Charge rate currency."
          },
          "rate": {
            "type": "number",
            "description": "Charge rate amount.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Charge rate for early check-in and late check-out rules."
      },
      "ContentApi_ExtraStayChargeType": {
        "enum": [
          "Free",
          "Fixed",
          "Percent",
          "HourlyRate",
          "HourlyRateAutoCalculated",
          "Forbidden"
        ],
        "type": "string",
        "description": "Charge type for early check-in and late check-out rules:\r\n\r\nFree - free of charge;\r\n\r\nFixed - fixed rate;\r\n\r\nPercent - percentage of the daily rate;\r\n\r\nHourlyRate - hourly fixed rate;\r\n\r\nHourlyRateAutoCalculated - hourly auto-calculated price;\r\n\r\nForbidden - no early check-in/late check-out."
      },
      "ContentApi_ExtraStayPercentOptions": {
        "required": [
          "extraPlacementEnabled",
          "extraServiceOption",
          "percentage"
        ],
        "type": "object",
        "properties": {
          "percentage": {
            "type": "number",
            "description": "Percentage of the daily rate charged for early check-in or late check-out.",
            "format": "double"
          },
          "extraPlacementEnabled": {
            "type": "boolean",
            "description": "'true' if there is a surcharge for an extra guest; 'false' otherwise."
          },
          "extraServiceOption": {
            "$ref": "#/components/schemas/ContentApi_ExtraServiceSurchargeOption"
          }
        },
        "additionalProperties": false,
        "description": "Early check-in and late check-out rule options for the Percent charge type."
      },
      "ContentApi_ExtraStayRule": {
        "required": [
          "checkInTime",
          "checkOutTime",
          "earlyCheckInPeriods",
          "id",
          "lateCheckOutPeriods",
          "overridesPropertyCheckInTime",
          "overridesPropertyCheckOutTime",
          "propertyId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "An identifier used to reference this rule in rate plans."
          },
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Property ID.",
            "example": "1024"
          },
          "checkInTime": {
            "type": "string",
            "description": "Check-in time for this rule.",
            "format": "time",
            "example": "13:00"
          },
          "overridesPropertyCheckInTime": {
            "type": "boolean",
            "description": "'true' if CheckInTime overrides the property's default check-in time.\r\n'false' if CheckInTime returns the default check-in time."
          },
          "earlyCheckInPeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_ExtraStayRulePeriod"
            },
            "description": "Early check-in rules for each time period before CheckInTime."
          },
          "checkOutTime": {
            "type": "string",
            "description": "Check-out time for this rule.",
            "format": "time",
            "example": "10:00"
          },
          "overridesPropertyCheckOutTime": {
            "type": "boolean",
            "description": "'true' if CheckOutTime overrides the property's default check-out time.\r\n'false' if CheckOutTime returns the default check-out time."
          },
          "lateCheckOutPeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_ExtraStayRulePeriod"
            },
            "description": "Late check-out rules for each time period after CheckOutTime."
          }
        },
        "additionalProperties": false,
        "description": "Early check-in and late check-out rule."
      },
      "ContentApi_ExtraStayRulePeriod": {
        "required": [
          "chargeType",
          "endTime",
          "rates",
          "startTime"
        ],
        "type": "object",
        "properties": {
          "startTime": {
            "type": "string",
            "description": "The start time of this period.\r\nThe time interval includes the start time.\r\nThe first period starts at 00:00.",
            "format": "time",
            "example": "09:00"
          },
          "endTime": {
            "type": "string",
            "description": "The end time of this period.\r\nThe time interval excludes the end time.\r\nThe last period ends at 24:00.",
            "format": "time",
            "example": "13:00"
          },
          "chargeType": {
            "$ref": "#/components/schemas/ContentApi_ExtraStayChargeType"
          },
          "rates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_ExtraStayChargeRate"
            },
            "description": "Charge rates for Fixed and HourlyRate charge types."
          },
          "percentOptions": {
            "$ref": "#/components/schemas/ContentApi_ExtraStayPercentOptions"
          },
          "occupyQuota": {
            "type": "boolean",
            "description": "Indicates whether the quota is guaranteed to be occupied.\r\nIf set to true, the quota is guaranteed to be available.\r\nIf set to false, room availability is not guaranteed, even if the extra stay has been prepaid.",
            "example": false
          }
        },
        "additionalProperties": false,
        "description": "Early check-in or late check-out rule for a time period before CheckInTime or after CheckOutTime."
      },
      "ContentApi_ExtraStayRulesResponse": {
        "required": [
          "extraStayRules"
        ],
        "type": "object",
        "properties": {
          "extraStayRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_ExtraStayRule"
            },
            "description": "Early check-in and late check-out rules used by any rate plan."
          }
        },
        "additionalProperties": false,
        "description": "Early check-in and late check-out rules for a given property."
      },
      "ContentApi_MealPlan": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Meal plan code",
            "nullable": true,
            "example": "AllInclusive"
          },
          "name": {
            "type": "string",
            "description": "Meal plan name",
            "nullable": true,
            "example": "All inclusive"
          }
        },
        "additionalProperties": false,
        "description": "Meal plan description"
      },
      "ContentApi_OccupancyInfo": {
        "type": "object",
        "properties": {
          "adultBed": {
            "type": "integer",
            "description": "Guests with main occupancy",
            "format": "int32"
          },
          "extraBed": {
            "type": "integer",
            "description": "Extra beds in the room",
            "format": "int32"
          },
          "childWithoutBed": {
            "type": "integer",
            "description": "Child accommodation without bed",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Contain information about occupancy"
      },
      "ContentApi_PenaltyCalculationMethod": {
        "enum": [
          "PrepaymentPercent",
          "FirstNights",
          "NoPenalty",
          "FirstNightPercent",
          "Percent",
          "Fixed"
        ],
        "type": "string",
        "description": "Penalty calculation mode:\r\n\r\nNoPenalty - No penalty is applied.\r\n\r\nFirstNightPercent - The penalty is equal to a specified percentage of the cost of the first night.\r\n\r\nPrepaymentPercent - The penalty is equal to a specified percentage of the prepayment amount.\r\n\r\nFirstNights - The penalty is equal to the total cost of the first N nights.\r\n\r\nPercent - The penalty is equal to the specified percentage of the cost of the reservation (not currently used).\r\n\r\nFixed - The penalty is equal to a fixed amount (not currently used)."
      },
      "ContentApi_Phone": {
        "type": "object",
        "properties": {
          "phoneNumber": {
            "type": "string",
            "description": "Phone number",
            "nullable": true,
            "example": "+44 20 1234 5678"
          },
          "remark": {
            "type": "string",
            "description": "Comments to the phone number",
            "nullable": true,
            "example": "Voice Assistant"
          }
        },
        "additionalProperties": false,
        "description": "Property contact number"
      },
      "ContentApi_Placement": {
        "required": [
          "count",
          "kind"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/ContentApi_PlacementKind"
          },
          "count": {
            "type": "integer",
            "description": "Number of accommodations",
            "format": "int32",
            "example": 2
          },
          "minAge": {
            "type": "integer",
            "description": "Minimum age in the age group\r\n\r\nSpecified for child accommodation only\r\n(Kind = Child | ExtraChild | ChildBandWithoutBed)",
            "format": "int32",
            "nullable": true
          },
          "maxAge": {
            "type": "integer",
            "description": "Maximum age in the age group\r\n\r\nSpecified for child accommodation only\r\n\r\n(Kind = Child | ExtraChild | ChildBandWithoutBed)",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Accommodation in a room"
      },
      "ContentApi_PlacementKind": {
        "enum": [
          "Adult",
          "ExtraAdult",
          "Child",
          "ExtraChild",
          "ChildBandWithoutBed"
        ],
        "type": "string",
        "description": "Types of accommodations:\r\n\r\nAdult - adult with main occupancy\r\n\r\nExtraAdult - adult on extra bed\r\n\r\nChild - child with main occupancy\r\n\r\nExtraChild - child on extra bed\r\n\r\nChildBandWithoutBed - child without bed"
      },
      "ContentApi_PolicyInfo": {
        "required": [
          "checkInTime",
          "checkOutTime"
        ],
        "type": "object",
        "properties": {
          "checkInTime": {
            "minLength": 1,
            "type": "string",
            "description": "Local check-in time at the property.\r\n\r\nTome format complies with ISO-8601 hh:mm",
            "example": "14:00"
          },
          "checkOutTime": {
            "minLength": 1,
            "type": "string",
            "description": "Local check-out time at the property.\r\n\r\nTome format complies with ISO-8601 hh:mm",
            "example": "12:00"
          }
        },
        "additionalProperties": false,
        "description": "Standard check-in and check-out time"
      },
      "ContentApi_PropertyAmenity": {
        "required": [
          "chargeType",
          "code",
          "displayName"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "Amenity code",
            "example": "parking"
          },
          "displayName": {
            "minLength": 1,
            "type": "string",
            "description": "Amenity display name",
            "example": "Paid parking"
          },
          "chargeType": {
            "$ref": "#/components/schemas/ContentApi_AmenityChargeType"
          }
        },
        "additionalProperties": false
      },
      "ContentApi_PropertyInfoPage": {
        "required": [
          "properties"
        ],
        "type": "object",
        "properties": {
          "next": {
            "type": "string",
            "description": "Key, to continue viewing the list.\r\n\r\n‘null’, if the current page is the last page",
            "nullable": true
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_PropertyInfoTypeWithInclude"
            },
            "description": "List of accommodation properties"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Warning"
            },
            "description": "Warnings",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "List of accommodation properties with details\r\n\r\nThe list is split into pages"
      },
      "ContentApi_PropertyInfoType": {
        "required": [
          "amenities",
          "contactInfo",
          "id",
          "multiLocationProperty",
          "name",
          "policy",
          "ratePlans",
          "roomTypes",
          "services",
          "timeZone"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Property ID",
            "example": "1024"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Property name",
            "example": "Test hotel"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the property",
            "nullable": true,
            "example": "Hotel is located in a picturesque location. \n\nThere are 11 hotel rooms of \"Standard\" and \"Standard +\" categories, as well as 4 separate cottages of the \"Duplex\" type for accommodation of guests on the territory of the club."
          },
          "currency": {
            "type": "string",
            "description": "Property currency",
            "nullable": true,
            "example": "GBP"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Resource"
            },
            "description": "Property photo gallery",
            "nullable": true
          },
          "stars": {
            "type": "integer",
            "description": "Star rating of the property",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "stayUnitKind": {
            "$ref": "#/components/schemas/ContentApi_StayUnitKind"
          },
          "propertyKindId": {
            "type": "integer",
            "description": "Property kind identifier",
            "format": "int32",
            "example": 1
          },
          "contactInfo": {
            "$ref": "#/components/schemas/ContentApi_ContactInfo"
          },
          "policy": {
            "$ref": "#/components/schemas/ContentApi_PolicyInfo"
          },
          "timeZone": {
            "$ref": "#/components/schemas/ContentApi_TimeZoneInfo"
          },
          "ratePlans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_RatePlanInfo"
            },
            "description": "property rate plans"
          },
          "roomTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_RoomTypeInfo"
            },
            "description": "Room types of the property"
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_ServiceInfo"
            },
            "description": "List of services provided by the property"
          },
          "multiLocationProperty": {
            "type": "boolean",
            "description": "The property types are apartments or flats, which may be located at different addresses"
          },
          "companyDetails": {
            "$ref": "#/components/schemas/ContentApi_CompanyDetails"
          },
          "amenities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_PropertyAmenity"
            },
            "description": "Amenities provided by the property"
          }
        },
        "additionalProperties": false,
        "description": "Property detailed description"
      },
      "ContentApi_PropertyInfoTypeWithInclude": {
        "required": [
          "amenities",
          "id",
          "propertyKindId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Property ID",
            "example": "1024"
          },
          "name": {
            "type": "string",
            "description": "Property name",
            "nullable": true,
            "example": "Test hotel"
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the property",
            "nullable": true,
            "example": "Hotel is located in a picturesque location. \n\nThere are 11 hotel rooms of \"Standard\" and \"Standard +\" categories, as well as 4 separate cottages of the \"Duplex\" type for accommodation of guests on the territory of the club."
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Resource"
            },
            "description": "Property photo gallery",
            "nullable": true
          },
          "stars": {
            "type": "integer",
            "description": "Star rating of the property",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "stayUnitKind": {
            "$ref": "#/components/schemas/ContentApi_StayUnitKind"
          },
          "propertyKindId": {
            "type": "integer",
            "description": "Property kind identifier",
            "format": "int32",
            "example": 1
          },
          "contactInfo": {
            "$ref": "#/components/schemas/ContentApi_ContactInfo"
          },
          "policy": {
            "$ref": "#/components/schemas/ContentApi_PolicyInfo"
          },
          "timeZone": {
            "$ref": "#/components/schemas/ContentApi_TimeZoneInfo"
          },
          "ratePlans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_RatePlanInfo"
            },
            "description": "Property rate plans",
            "nullable": true
          },
          "roomTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_RoomTypeInfo"
            },
            "description": "Room types of the property",
            "nullable": true
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_ServiceInfo"
            },
            "description": "List of services provided by the property",
            "nullable": true
          },
          "multiLocationProperty": {
            "type": "boolean",
            "description": "The property types are apartments or flats, which may be located at different addresses",
            "nullable": true
          },
          "companyDetails": {
            "$ref": "#/components/schemas/ContentApi_CompanyDetails"
          },
          "currency": {
            "type": "string",
            "description": "Property currency",
            "nullable": true,
            "example": "GBP"
          },
          "amenities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_PropertyAmenity"
            },
            "description": "Amenities provided by the property"
          }
        },
        "additionalProperties": false,
        "description": "Information on the accommodation property\r\n\r\nThe Id field is always filled in, other fields - in case of parameter ‘include=all’"
      },
      "ContentApi_RatePlanInfo": {
        "required": [
          "cancellationRuleId",
          "corporateOnly",
          "currency",
          "id",
          "isStayWithChildrenOnly",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Rate plan ID",
            "example": "133528"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Rate plan name",
            "example": "Main rate plan"
          },
          "description": {
            "type": "string",
            "description": "Rate plan description, may contain HTML tags",
            "nullable": true,
            "example": "<p>Book your accommodation at the best price!</p>\n<p>The accommodation price includes: </p>\n<p>- Free secure parking on site</p>\n<p>- High-speed wireless Internet</p>\n<p>- Playground on site</p>"
          },
          "currency": {
            "minLength": 1,
            "type": "string",
            "description": "(Planned) Rate plan currency",
            "example": "GBP"
          },
          "isStayWithChildrenOnly": {
            "type": "boolean",
            "description": "Stay available with children only",
            "example": false
          },
          "cancellationRuleId": {
            "minLength": 1,
            "type": "string",
            "description": "Cancellation rule ID",
            "example": "56454"
          },
          "extraStayRuleId": {
            "type": "string",
            "description": "Early check-in and late check-out rule ID.\r\n\r\nNull if rate plan does not allow additional accommodation.",
            "nullable": true,
            "example": "202584"
          },
          "vat": {
            "$ref": "#/components/schemas/ContentApi_Vat"
          },
          "availableServices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Service"
            },
            "description": "Extra services included in the rate plan",
            "nullable": true
          },
          "corporateOnly": {
            "type": "boolean",
            "description": "Rate plan is available only for corporate clients",
            "example": false
          }
        },
        "additionalProperties": false,
        "description": "The rate plan of the accommodation property"
      },
      "ContentApi_ReferencePointKind": {
        "enum": [
          "ProviderArrivalTime",
          "ProviderDepartureTime",
          "GuestArrivalTime",
          "CustomArrivalTime",
          "BookingCreationTime"
        ],
        "type": "string",
        "description": "Time reference point for the rule:\r\n\r\nProviderArrivalTime - \"Hotel check-in time.\"\r\n\r\nProviderDepartureTime - \"Hotel check-out time\" - The countdown starts from the check-out time on the day of arrival.\r\n\r\nGuestArrivalTime - \"Guest-specified check-in time\" - The countdown starts from the check-in time specified by the guest.\r\n\r\nCustomArrivalTime - \"Specified time\" - The countdown starts from the time specified in the cancellation rule.\r\n\r\nBookingCreationTime - \"Booking time\" - The countdown starts from the time the guest made the booking."
      },
      "ContentApi_Resource": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "minLength": 1,
            "type": "string",
            "description": "Resource link"
          }
        },
        "additionalProperties": false,
        "description": "Resource information"
      },
      "ContentApi_RoomAmenitiesCategories": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Category name",
            "example": "Internet/telephony"
          },
          "amenities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_AmenityInfo"
            },
            "description": "Amenities included in the category",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Room amenities category"
      },
      "ContentApi_RoomTypeAvailability": {
        "enum": [
          "All",
          "Selective"
        ],
        "type": "string",
        "description": "Type of service availability:\r\n\r\nAll - service is available for all room types\r\n\r\nSelective - service is available to specific room types"
      },
      "ContentApi_RoomTypeCategory": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Code",
            "nullable": true,
            "example": "PlaceInRoom"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true,
            "example": "place in the room"
          }
        },
        "additionalProperties": false,
        "description": "Room type entity"
      },
      "ContentApi_RoomTypeInfo": {
        "required": [
          "categoryCode",
          "categoryName",
          "id",
          "name",
          "placements"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Room type ID",
            "example": "82751"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Name",
            "example": "Standard"
          },
          "description": {
            "type": "string",
            "description": "Detailed description",
            "nullable": true,
            "example": "Each room (25 m2) style combines elegant classics with modern decorative elements and a high level of comfort. Standard rooms can accommodate 2 people on two twin one-and-a-half beds (120*200). A third guest can be accommodated on an extra folding bed. Cots are provided for small children. Among amenities of each room: - High-speed WiFi, LCD TV with a wide choice of cable channels and the option to watch movies online - Spacious bathrooms with walk-in and rain shower; - Cosmetics and toiletries, bathrobes and slippers - High quality bed linen - Balcony with comfortable furniture, views of the Gulf of Finland and the islands."
          },
          "amenities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Amenity"
            },
            "description": "Room amenities",
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Resource"
            },
            "description": "Room images",
            "nullable": true
          },
          "size": {
            "$ref": "#/components/schemas/ContentApi_RoomTypeSquare"
          },
          "categoryCode": {
            "minLength": 1,
            "type": "string",
            "description": "Category code",
            "example": "PlaceInRoom"
          },
          "categoryName": {
            "minLength": 1,
            "type": "string",
            "description": "Category name",
            "example": "Place in the room"
          },
          "address": {
            "$ref": "#/components/schemas/ContentApi_Address"
          },
          "occupancy": {
            "$ref": "#/components/schemas/ContentApi_OccupancyInfo"
          },
          "placements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Placement"
            },
            "description": "Accommodations entity"
          },
          "position": {
            "type": "integer",
            "description": "Order in output",
            "format": "int32",
            "nullable": true,
            "example": 100
          }
        },
        "additionalProperties": false,
        "description": "Room type info"
      },
      "ContentApi_RoomTypeSquare": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "integer",
            "description": "Area, value in square meters",
            "format": "int32",
            "example": 25
          }
        },
        "additionalProperties": false,
        "description": "Room area"
      },
      "ContentApi_Service": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Service ID",
            "format": "int32"
          },
          "included": {
            "type": "boolean",
            "description": "This parameter shows if the extra service is included in the rate plan"
          },
          "roomTypeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Collection of room types IDs for which the service is available in the rate plan\r\n",
            "nullable": true
          },
          "roomTypeAvailability": {
            "$ref": "#/components/schemas/ContentApi_RoomTypeAvailability"
          }
        },
        "additionalProperties": false,
        "description": "Details of the rate plan service"
      },
      "ContentApi_ServiceInfo": {
        "required": [
          "id",
          "kind",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Service ID",
            "example": "42807"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Service name",
            "example": "Christmas tree"
          },
          "description": {
            "type": "string",
            "description": "Service description",
            "nullable": true,
            "example": "Children's New Year party"
          },
          "kind": {
            "$ref": "#/components/schemas/ContentApi_ServiceKind"
          },
          "mealPlanCode": {
            "type": "string",
            "description": "Meal plan code. Specified in case the service type is ‘Meal’ (Kind = Meal)",
            "nullable": true
          },
          "mealPlanName": {
            "type": "string",
            "description": "Meal plan name. Specified in case the service type is ‘Meal’ (Kind = Meal)",
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_Resource"
            },
            "description": "Array of images of the service provided",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/ContentApi_EntityState"
          },
          "vat": {
            "$ref": "#/components/schemas/ContentApi_Vat"
          }
        },
        "additionalProperties": false,
        "description": "Description of the service provided by the property\r\n\r\nIf ‘kind’=Meal, the meal plan code is specified in mealPlanCode field, otherwise mealPlanCode=null"
      },
      "ContentApi_ServiceKind": {
        "enum": [
          "Common",
          "Meal"
        ],
        "type": "string",
        "description": "Service type:\r\n\r\nCommon - common service\r\n\r\nMeal - meal service",
        "example": "Common"
      },
      "ContentApi_StayUnitKind": {
        "enum": [
          "NightRate",
          "DailyRate"
        ],
        "type": "string",
        "description": "Type of accommodation unit ‘nights’ or ‘days’"
      },
      "ContentApi_TimeUnit": {
        "enum": [
          "None",
          "Day",
          "Hour"
        ],
        "type": "string",
        "description": "Timeframes when a penalty can be set.\r\nNone used only with BeforeArrivalMatching.NoMatter."
      },
      "ContentApi_TimeZoneInfo": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Time zone ID.\r\n\r\ncorresponds to IANA Time Zones ID",
            "example": "Europe/London"
          }
        },
        "additionalProperties": false,
        "description": "Property time zone"
      },
      "ContentApi_Vat": {
        "required": [
          "applicable"
        ],
        "type": "object",
        "properties": {
          "applicable": {
            "type": "boolean",
            "description": "Is VAT payable\r\n\r\nIf false - VAT is not payable, so Included and Percent are not specified",
            "example": true
          },
          "included": {
            "type": "boolean",
            "description": "Is VAT included in TotalPrice",
            "nullable": true,
            "example": true
          },
          "percent": {
            "type": "integer",
            "description": "Percentage",
            "format": "int32",
            "nullable": true,
            "example": 20
          }
        },
        "additionalProperties": false
      },
      "ContentApi_Warning": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true,
            "example": "NotEnoughRights"
          },
          "message": {
            "type": "string",
            "nullable": true,
            "example": "Not enough rights to hotel"
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_Corporate": {
        "required": [
          "id",
          "legalName",
          "registrationReasonCode",
          "taxpayerIdentificationNumber"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier of the corporate client"
          },
          "taxpayerIdentificationNumber": {
            "minLength": 1,
            "type": "string",
            "description": "Taxpayer Identification Number (TIN)",
            "example": "770493581"
          },
          "registrationReasonCode": {
            "minLength": 1,
            "type": "string",
            "description": "Registration Reason Code (RRC)",
            "example": "771401001"
          },
          "legalName": {
            "minLength": 1,
            "type": "string",
            "description": "Name of the legal entity or individual entrepreneur",
            "example": "Google LLC"
          },
          "metaData": {
            "type": "string",
            "description": "Metadata about the corporate client",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_CorporateRq": {
        "required": [
          "registrationReasonCode",
          "taxpayerIdentificationNumber"
        ],
        "type": "object",
        "properties": {
          "taxpayerIdentificationNumber": {
            "minLength": 1,
            "type": "string",
            "description": "Taxpayer Identification Number (TIN)",
            "example": "770493581"
          },
          "registrationReasonCode": {
            "minLength": 1,
            "type": "string",
            "description": "Registration Reason Code (RRC).",
            "example": "771401001"
          },
          "metaData": {
            "type": "string",
            "description": "Metadata about the corporate client.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Corporate client creation entity"
      },
      "ReferenceDataApi_CorporateRs": {
        "required": [
          "corporate"
        ],
        "type": "object",
        "properties": {
          "corporate": {
            "$ref": "#/components/schemas/ReferenceDataApi_Corporate"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceDataApi_Warning"
            },
            "description": "Warnings",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_PaymentMethod": {
        "required": [
          "code",
          "type"
        ],
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ReferenceDataApi_PaymentMethodCode"
          },
          "type": {
            "$ref": "#/components/schemas/ReferenceDataApi_PaymentMethodType"
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_PaymentMethodCode": {
        "enum": [
          "AtArrival",
          "BankCardGuarantee",
          "BankCard",
          "SBP"
        ],
        "type": "string",
        "description": "Payment method code\n\r\n`AtArrival` - Payment for the booking at arrival at the hotel\n\r\n`BankCardGuarantee` - Card details are provided for create booking but payment is made later\n\r\n`BankCard` - Payment for the booking online via booking form\n\r\n`SBP` - Payment via fast payment system using QR code"
      },
      "ReferenceDataApi_PaymentMethodType": {
        "enum": [
          "Cash",
          "Prepay"
        ],
        "type": "string",
        "description": "Payment type\n\r\n`Cash` - Payment for the booking at arrival at the hotel\n\r\n`Prepay` - Prepayment for the booking online"
      },
      "ReferenceDataApi_PaymentMethodsResponse": {
        "type": "object",
        "properties": {
          "paymentMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceDataApi_PaymentMethod"
            },
            "description": "All available payment methods",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_PropertyAmenityType": {
        "required": [
          "chargeTypeApplicable",
          "code",
          "displayName"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "Amenity type code",
            "example": "parking"
          },
          "displayName": {
            "minLength": 1,
            "type": "string",
            "description": "Amenity type name",
            "example": "Parking"
          },
          "chargeTypeApplicable": {
            "type": "boolean",
            "description": "Indicates whether the `ChargeType` setting applies to amenity type",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_PropertyAmenityTypesResponse": {
        "type": "object",
        "properties": {
          "amenityTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceDataApi_PropertyAmenityType"
            },
            "description": "All available amenity types by property",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_PropertyKindDto": {
        "required": [
          "displayName",
          "id",
          "propertyKindType"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Property kind identifier",
            "format": "int32",
            "example": 2
          },
          "displayName": {
            "minLength": 1,
            "type": "string",
            "description": "Property kind display name",
            "example": "Hotel"
          },
          "propertyKindType": {
            "minLength": 1,
            "type": "string",
            "description": "Property kind type",
            "example": "Hotel"
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_PropertyKindsResponse": {
        "type": "object",
        "properties": {
          "propertyKinds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceDataApi_PropertyKindDto"
            },
            "description": "All available property kinds",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceDataApi_Warning": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error code",
            "nullable": true,
            "example": "404"
          },
          "message": {
            "type": "string",
            "description": "Error message",
            "nullable": true,
            "example": "Corporate not found"
          }
        },
        "additionalProperties": false,
        "description": "Warnings"
      },
      "ReservationApi_Booking": {
        "required": [
          "cancellation",
          "createdDateTime",
          "currencyCode",
          "guaranteeInfo",
          "modifiedDateTime",
          "number",
          "propertyId",
          "roomStays",
          "source",
          "status",
          "taxes",
          "total"
        ],
        "type": "object",
        "properties": {
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Property ID",
            "example": "7291"
          },
          "number": {
            "minLength": 1,
            "type": "string",
            "description": "Booking number",
            "example": "20240325-7291-260123396"
          },
          "status": {
            "$ref": "#/components/schemas/ReservationApi_BookingStatus"
          },
          "createdDateTime": {
            "type": "string",
            "description": "Date and time the booking was created.<br />\r\nFormat complies with ISO-8601 YYYY-MM-DDThh:mm:ss and uses UTC.",
            "format": "date-time",
            "example": "2024-03-23T10:41:04Z"
          },
          "modifiedDateTime": {
            "type": "string",
            "description": "Date and time the booking was last modified.<br />\r\nFormat complies with ISO-8601 YYYY-MM-DDThh:mm:ss and uses UTC.",
            "format": "date-time",
            "example": "2024-03-27T11:41:04Z"
          },
          "guaranteeInfo": {
            "$ref": "#/components/schemas/ReservationApi_GuaranteeInfo"
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Booking currency",
            "example": "RUB"
          },
          "roomStays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_RoomStay"
            },
            "description": "List of stays"
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_BookingService"
            },
            "description": "Extra services with the charge type ‘Per booking’ (PerReservation).",
            "nullable": true
          },
          "total": {
            "$ref": "#/components/schemas/ReservationApi_Total"
          },
          "taxes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_Tax"
            },
            "description": "Taxes and fees"
          },
          "cancellation": {
            "$ref": "#/components/schemas/ReservationApi_Cancellation"
          },
          "source": {
            "$ref": "#/components/schemas/ReservationApi_POS"
          },
          "customer": {
            "$ref": "#/components/schemas/ReservationApi_Customer"
          }
        },
        "additionalProperties": false,
        "description": "Booking details"
      },
      "ReservationApi_BookingService": {
        "required": [
          "description",
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Service ID",
            "example": "7898"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Name",
            "example": "Fruit platter"
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Description",
            "example": "Fruit platter at check-in"
          },
          "total": {
            "$ref": "#/components/schemas/ReservationApi_ServiceTotal"
          }
        },
        "additionalProperties": false,
        "description": "Extra service for a booking"
      },
      "ReservationApi_BookingStatus": {
        "enum": [
          "Active",
          "Cancelled",
          "Unconfirmed"
        ],
        "type": "string",
        "description": "Booking status:<br />\r\nActive - active booking<br />\r\nCancelled - cancelled booking<br />\r\nUnconfirmed - not confirmed booking<br />",
        "example": "Cancelled"
      },
      "ReservationApi_BookingSummary": {
        "required": [
          "number"
        ],
        "type": "object",
        "properties": {
          "number": {
            "minLength": 1,
            "type": "string",
            "description": "Booking number",
            "example": "20191001-1024-45675262"
          },
          "propertyId": {
            "type": "integer",
            "description": "Property ID",
            "format": "int32",
            "example": 1024
          },
          "status": {
            "$ref": "#/components/schemas/ReservationApi_BookingStatus"
          },
          "createdDateTime": {
            "type": "string",
            "description": "Date and time the booking was created.<br />\r\nFormat complies with ISO-8601 YYYY-MM-DDThh:mm:ss and uses UTC.",
            "format": "date-time",
            "example": "2019-06-20T10:41:04Z"
          },
          "modifiedDateTime": {
            "type": "string",
            "description": "Date and time the booking was last modified.<br />\r\nFormat complies with ISO-8601 YYYY-MM-DDThh:mm:ss and uses UTC.",
            "format": "date-time",
            "nullable": true,
            "example": "2019-06-20T11:41:04Z"
          }
        },
        "additionalProperties": false,
        "description": "Booking summary"
      },
      "ReservationApi_BookingsPage": {
        "required": [
          "bookingSummaries",
          "hasMoreData"
        ],
        "type": "object",
        "properties": {
          "continueToken": {
            "type": "string",
            "description": "Token used to continue receiving booking summaries",
            "nullable": true,
            "example": "Qm9va2luZ0NvbnRpbnVhdGlvblRva2Vu"
          },
          "hasMoreData": {
            "type": "boolean",
            "description": "The value shows whether there are any bookings that have not yet been received.<br />\r\ntrue - There are new bookings or their modifications. It is necessary to make another request with the new continueToken to receive them.<br />\r\nfalse - There are no new bookings or their modifications. The new continuousToken needs to be saved to receive futher bookings.",
            "example": false
          },
          "bookingSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_BookingSummary"
            },
            "description": "Booking summaries received with this page"
          }
        },
        "additionalProperties": false,
        "description": "Booking summary page"
      },
      "ReservationApi_Cancellation": {
        "required": [
          "cancelledDateTime"
        ],
        "type": "object",
        "properties": {
          "penaltyAmount": {
            "type": "number",
            "description": "Penalty amount for cancellation",
            "format": "double",
            "nullable": true,
            "example": 8550
          },
          "cancelledDateTime": {
            "type": "string",
            "description": "Cancellation time in UTC. Format complies with ISO-8601 YYYY-MM-DDThh:mm:ss",
            "format": "date-time",
            "example": "2024-03-27T07:10:04Z"
          }
        },
        "additionalProperties": false,
        "description": "Information about booking cancellation (if cancelled)"
      },
      "ReservationApi_Customer": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name",
            "nullable": true,
            "example": "Sherlock"
          },
          "lastName": {
            "type": "string",
            "description": "Last name",
            "nullable": true,
            "example": "Holmes"
          }
        },
        "additionalProperties": false,
        "description": "BookingCustomer information"
      },
      "ReservationApi_DailyRate": {
        "required": [
          "date",
          "priceBeforeTax",
          "ratePlanId"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "minLength": 1,
            "type": "string",
            "description": "Rate plan Id",
            "example": "133467"
          },
          "priceBeforeTax": {
            "type": "number",
            "description": "Price per night excluding taxes and fees",
            "format": "double",
            "example": 8550
          },
          "date": {
            "type": "string",
            "description": "Date. Date format complies with ISO-8601 YYYY-MM-DD",
            "format": "date-time",
            "example": "2024-03-27"
          }
        },
        "additionalProperties": false,
        "description": "Daily rate"
      },
      "ReservationApi_Discount": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Discount amount",
            "format": "double",
            "example": 1185
          },
          "discountType": {
            "$ref": "#/components/schemas/ReservationApi_DiscountType"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true,
            "example": "Gold"
          },
          "percent": {
            "type": "number",
            "description": "Discount rate",
            "format": "double",
            "example": 15
          }
        },
        "additionalProperties": false,
        "description": "Discount"
      },
      "ReservationApi_DiscountType": {
        "enum": [
          "Percentage",
          "Fixed"
        ],
        "type": "string",
        "description": "Discount type: \"Percentage\" for a percentage discount and \"Fixed\" for a fixed discount.",
        "example": "Percentage"
      },
      "ReservationApi_ExtraStayCharges": {
        "type": "object",
        "properties": {
          "earlyArrival": {
            "$ref": "#/components/schemas/ReservationApi_ExtraStayDetails"
          },
          "lateDeparture": {
            "$ref": "#/components/schemas/ReservationApi_ExtraStayDetails"
          }
        },
        "additionalProperties": false,
        "description": "Surcharge details for early arrival and late departure"
      },
      "ReservationApi_ExtraStayDetails": {
        "type": "object",
        "properties": {
          "overriddenDateTime": {
            "type": "string",
            "description": "Date and property local time",
            "format": "date-time",
            "example": "2024-03-27T18:00"
          },
          "total": {
            "$ref": "#/components/schemas/ReservationApi_Total"
          }
        },
        "additionalProperties": false,
        "description": "Surcharge details for early arrival or late departure"
      },
      "ReservationApi_GetBookingResponse": {
        "required": [
          "booking"
        ],
        "type": "object",
        "properties": {
          "booking": {
            "$ref": "#/components/schemas/ReservationApi_Booking"
          }
        },
        "additionalProperties": false,
        "description": "Response with booking details"
      },
      "ReservationApi_Guarantee": {
        "required": [
          "paymentMethod"
        ],
        "type": "object",
        "properties": {
          "paymentMethod": {
            "$ref": "#/components/schemas/ReservationApi_PaymentMethod"
          }
        },
        "additionalProperties": false,
        "description": "Booking guarantee"
      },
      "ReservationApi_GuaranteeInfo": {
        "required": [
          "guarantees",
          "loyalty",
          "totalPrepaid"
        ],
        "type": "object",
        "properties": {
          "loyalty": {
            "$ref": "#/components/schemas/ReservationApi_Loyalty"
          },
          "totalPrepaid": {
            "type": "number",
            "description": "Total prepaid amount for the booking. This may also include the amount covered by bonuses.",
            "format": "double",
            "example": 1234
          },
          "guarantees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_Guarantee"
            },
            "description": "Booking guarantees"
          }
        },
        "additionalProperties": false,
        "description": "Details of the booking guarantee"
      },
      "ReservationApi_Guest": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name",
            "nullable": true,
            "example": "Sherlock"
          },
          "lastName": {
            "type": "string",
            "description": "Last name",
            "nullable": true,
            "example": "Holmes"
          }
        },
        "additionalProperties": false,
        "description": "Guest"
      },
      "ReservationApi_GuestCount": {
        "required": [
          "adultCount"
        ],
        "type": "object",
        "properties": {
          "adultCount": {
            "type": "integer",
            "description": "Number of adults",
            "format": "int32",
            "example": 1
          },
          "childAges": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Child age range<br />\r\nIf the child age is not specified, the value is null",
            "nullable": true,
            "example": [
              5
            ]
          }
        },
        "additionalProperties": false,
        "description": "Number of guests"
      },
      "ReservationApi_Loyalty": {
        "type": "object",
        "properties": {
          "cards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_LoyaltyCard"
            },
            "description": "Loyalty cards",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Loyalty programs details"
      },
      "ReservationApi_LoyaltyCard": {
        "type": "object",
        "properties": {
          "cardNumber": {
            "type": "string",
            "description": "Loyalty card number",
            "nullable": true,
            "example": "11039500047840"
          },
          "loyaltySystemId": {
            "type": "string",
            "description": "Loyalty program type",
            "nullable": true,
            "example": "TLStatusLevel"
          }
        },
        "additionalProperties": false,
        "description": "Information about the loyalty program"
      },
      "ReservationApi_POS": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ReservationApi_POSType"
          },
          "code": {
            "type": "string",
            "description": "POS code",
            "nullable": true,
            "example": "OTG"
          },
          "sourceUrl": {
            "type": "string",
            "description": "The address of the source from which the reservation was made, such as the address of the reservation form.",
            "nullable": true,
            "example": "https://test-hotel.com?hotelid=7291"
          }
        },
        "additionalProperties": false,
        "description": "Point of sale through which a booking was made"
      },
      "ReservationApi_POSType": {
        "enum": [
          "Channel",
          "BookingEngine",
          "PMS",
          "Other"
        ],
        "type": "string",
        "description": "POS type<br />\r\nThe list of POS types can be expanded<br />\r\nChannel - channel or PartnerAPI or Yandex<br />\r\nBookingEngine - booking engine<br />\r\nPMS - property management system<br />\r\nOther - other POS types<br />",
        "example": "Channel"
      },
      "ReservationApi_PaymentMethod": {
        "enum": [
          "Unknown",
          "BankCard",
          "Electronic",
          "Cashless",
          "AtArrival",
          "Offline",
          "IndividualCashless",
          "AtOffice",
          "TravelAgency",
          "Deposit",
          "ExternalSystem",
          "BackOrder",
          "BankCardGuarantee",
          "CreditPayment",
          "Sbp",
          "Bonus",
          "Installment",
          "Voucher"
        ],
        "type": "string",
        "description": "Payment method:<br />\r\nUnknown - unknown payment method<br />\r\nBankCard - bank card<br />\r\nElectronic - electronic payment<br />\r\nCashless - cashless payment<br />\r\nAtArrival - payment on arrival<br />\r\nOffline - offline payment<br />\r\nIndividualCashless - payment from account<br />\r\nAtOffice - payment in office<br />\r\nTravelAgency - travel agent payment<br />\r\nDeposit - deposit payment<br />\r\nExternalSystem - external system payment<br />\r\nBackOrder - back order payment<br />\r\nBankCardGuarantee - bank card guarantee<br />\r\nCreditPayment - credit payment<br />\r\nSbp - sbp<br />\r\nBonus - bonus<br />\r\nInstallment - installment payment<br />\r\nVoucher - voucher payment",
        "example": "BankCard"
      },
      "ReservationApi_RatePlan": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Rate plan Id",
            "example": "341178"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Rate plan name",
            "example": "Best offer of the day"
          }
        },
        "additionalProperties": false,
        "description": "Rate plan"
      },
      "ReservationApi_RoomStay": {
        "required": [
          "dailyRates",
          "guestCount",
          "ratePlans",
          "roomType",
          "stayDates",
          "total"
        ],
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Room Stay Index",
            "format": "int64"
          },
          "stayDates": {
            "$ref": "#/components/schemas/ReservationApi_StayDates"
          },
          "ratePlans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_RatePlan"
            },
            "description": "List of room stay rate plans"
          },
          "roomType": {
            "$ref": "#/components/schemas/ReservationApi_RoomType"
          },
          "guestCount": {
            "$ref": "#/components/schemas/ReservationApi_GuestCount"
          },
          "guests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_Guest"
            },
            "description": "List of guests for this room stay",
            "nullable": true
          },
          "dailyRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_DailyRate"
            },
            "description": "Price breakdown by day"
          },
          "total": {
            "$ref": "#/components/schemas/ReservationApi_Total"
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_RoomStayService"
            },
            "description": "Extra services for this stay<br />",
            "nullable": true
          },
          "extraStayCharges": {
            "$ref": "#/components/schemas/ReservationApi_ExtraStayCharges"
          }
        },
        "additionalProperties": false,
        "description": "Room accommodation details"
      },
      "ReservationApi_RoomStayService": {
        "required": [
          "description",
          "id",
          "inclusive",
          "kind",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Service ID",
            "example": "42965"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Name",
            "example": "Breakfast"
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Description",
            "example": "Breakfast at a restaurant at a special price"
          },
          "total": {
            "$ref": "#/components/schemas/ReservationApi_ServiceTotal"
          },
          "inclusive": {
            "type": "boolean",
            "description": "This parameter shows if the extra service is included in the rate plan.<br />\r\nIf the service is not included in the rate plan (inclusive = false), the TotalPrice is not specified",
            "example": false
          },
          "kind": {
            "$ref": "#/components/schemas/ReservationApi_ServiceKind"
          },
          "mealPlanCode": {
            "type": "string",
            "description": "Meal plan code<br />\r\nDisplayed only if the service type is ‘Meal\\’ (kind = Meal)<br />\r\nThe MealPlanCode mapping can be found in ContentApi in the meal-plans endpoint.",
            "nullable": true,
            "example": "ContinentalBreakfast"
          }
        },
        "additionalProperties": false,
        "description": "Extra service for accommodation"
      },
      "ReservationApi_RoomType": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Room type ID",
            "example": "82751"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Room type name",
            "example": "Standard"
          }
        },
        "additionalProperties": false,
        "description": "Room type"
      },
      "ReservationApi_ServiceKind": {
        "enum": [
          "Common",
          "Meal"
        ],
        "type": "string",
        "description": "Service type:<br />\r\nCommon - common service<br />\r\nMeal - meal service",
        "example": "Meal"
      },
      "ReservationApi_ServiceTotal": {
        "required": [
          "priceAfterTax",
          "priceBeforeTax",
          "taxAmount"
        ],
        "type": "object",
        "properties": {
          "priceBeforeTax": {
            "type": "number",
            "description": "Discounted price, excluding taxes and fees.",
            "format": "double",
            "example": 8550
          },
          "priceAfterTax": {
            "type": "number",
            "description": "Discounted price, including taxes and fees.",
            "format": "double",
            "example": 8650
          },
          "taxAmount": {
            "type": "number",
            "description": "Amount of taxes and fees payable at check-in",
            "format": "double",
            "example": 100
          },
          "taxes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_TaxAmount"
            },
            "description": "Taxes and fees payable at check-in",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Total for service"
      },
      "ReservationApi_StayDates": {
        "required": [
          "arrivalDateTime",
          "departureDateTime"
        ],
        "type": "object",
        "properties": {
          "arrivalDateTime": {
            "type": "string",
            "description": "Check-in date and time according to local hotel time.<br />\r\nThe format complies with ISO-8601 YYYY-MM-DDThh:mm",
            "format": "date-time",
            "example": "2024-03-27T14:00"
          },
          "departureDateTime": {
            "type": "string",
            "description": "Check-out date and time according to local hotel time.<br />\r\nThe format complies with ISO-8601 YYYY-MM-DDThh:mm",
            "format": "date-time",
            "example": "2024-03-28T12:00"
          }
        },
        "additionalProperties": false,
        "description": "Period of stay"
      },
      "ReservationApi_Tax": {
        "required": [
          "index"
        ],
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Link to tax description in a booking",
            "format": "int32",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "Tax name",
            "nullable": true,
            "example": "Lodging fee"
          },
          "description": {
            "type": "string",
            "description": "Tax description",
            "nullable": true,
            "example": "Fee per guest, payable at check-in"
          }
        },
        "additionalProperties": false,
        "description": "Taxes and fees"
      },
      "ReservationApi_TaxAmount": {
        "required": [
          "amount",
          "index"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount of tax or fee",
            "format": "double",
            "example": 100
          },
          "index": {
            "type": "integer",
            "description": "Link to tax description in a booking",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "Amount of tax or fee"
      },
      "ReservationApi_Total": {
        "required": [
          "priceAfterTax",
          "priceBeforeTax",
          "taxAmount"
        ],
        "type": "object",
        "properties": {
          "priceBeforeTax": {
            "type": "number",
            "description": "Discounted price, excluding taxes and fees.",
            "format": "double",
            "example": 8550
          },
          "priceAfterTax": {
            "type": "number",
            "description": "Discounted price, including taxes and fees.",
            "format": "double",
            "example": 8650
          },
          "taxAmount": {
            "type": "number",
            "description": "Amount of taxes and fees payable at check-in",
            "format": "double",
            "example": 100
          },
          "taxes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_TaxAmount"
            },
            "description": "Taxes and fees payable at check-in",
            "nullable": true
          },
          "discounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationApi_Discount"
            },
            "description": "Discounts",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Total"
      },
      "SearchApi_AggregationSearchByPropertiesResponse": {
        "required": [
          "roomStays"
        ],
        "type": "object",
        "properties": {
          "roomStays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_ShortRoomStay"
            },
            "description": "Accommodation options with minimum prices by hotels"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_Warning"
            },
            "description": "Warnings",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Groups of the accommodation search by accommodations;\r\nincludes accommodations with a minimum price by accommodations\r\nthat can be used when booking"
      },
      "SearchApi_AvailableDiscount": {
        "required": [
          "amount",
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "$ref": "#/components/schemas/SearchApi_DiscountReason"
          },
          "amount": {
            "type": "number",
            "description": "Discount amount",
            "format": "double",
            "example": 100
          }
        },
        "additionalProperties": false,
        "description": "Available discount information"
      },
      "SearchApi_BookingPlacementKind": {
        "enum": [
          "Adult",
          "ExtraAdult",
          "Child",
          "ExtraChild",
          "ChildBandWithoutBed"
        ],
        "type": "string",
        "description": "Types of accommodations:\r\n\r\nAdult - adult with main occupancy\r\n\r\nExtraAdult - adult on extra bed\r\n\r\nChild - child with main occupancy\r\n\r\nExtraChild - child on extra bed\r\n\r\nChildBandWithoutBed - child without bed"
      },
      "SearchApi_CalculationMethod": {
        "enum": [
          "PerStay",
          "PerPerson",
          "PerPersonByAge",
          "PerUse"
        ],
        "type": "string",
        "description": "Price calculation methods: \r\n\r\nPerStay - The extra service is charged per room stay\r\n\r\nPerPerson - The extra service is charged per guest\r\n\r\nPerPersonByAge - The extra service is charged per guest. The service price may vary depending on the age of the guests.\r\n\r\nPerUse - The extra service is charged per use of the service",
        "example": "PerPerson"
      },
      "SearchApi_CancellationPolicy": {
        "type": "object",
        "properties": {
          "freeCancellationPossible": {
            "type": "boolean",
            "description": "Is free cancellation possible"
          },
          "freeCancellationDeadlineLocal": {
            "type": "string",
            "description": "Date and time up to and inclusive, when booking can be cancelled free of charge (no penalty).\r\n\r\nIf ‘null’, see freeCancellationPossible.\r\n\r\n‘null’ and freeCancellationPossible=true - free cancellation only\r\n\r\n‘null’ and freeCancellationPossible=false - free cancellation is not possible\r\n\r\n\r\nLocal date and time for the hotel.\r\n\r\nFormat complies with ISO-8601 YYYY-MM-DDThh:mm\r\n",
            "format": "date-time",
            "nullable": true,
            "example": "2026-08-24T12:00"
          },
          "freeCancellationDeadlineUtc": {
            "type": "string",
            "description": "Same as freeCancellationDeadlineLocal, but date and time in UTC.\r\n\r\nFormat complies with ISO-8601 YYYY-MM-DDThh:mmZ",
            "format": "date-time",
            "nullable": true,
            "example": "2026-08-24T09:00Z"
          },
          "penaltyAmount": {
            "type": "number",
            "description": "Amount of penalty for cancellation of the nearest cancellation condition, for the duration of search.\r\n\r\nFor instance, freeCancellationDeadline=2019-09-30T09:00Z, if cancelled on 2019-09-30T09:01Z, the penalty will be equal to penaltyAmount.\r\n\r\nnull - always free cancellation.\r\n\r\nDepending on the date of cancellation, the amount of the penalty may vary in both directions.",
            "format": "double",
            "nullable": true,
            "example": 9.72
          }
        },
        "additionalProperties": false,
        "description": "Cancellation policy entity"
      },
      "SearchApi_ChildrenServiceCount": {
        "type": "object",
        "properties": {
          "age": {
            "type": "integer",
            "description": "Child age",
            "format": "int32",
            "example": 5
          },
          "count": {
            "type": "integer",
            "description": "Number of extra services provided to children depending on their age",
            "format": "int32",
            "example": 2
          }
        },
        "additionalProperties": false
      },
      "SearchApi_DailyRate": {
        "type": "object",
        "properties": {
          "priceBeforeTax": {
            "type": "number",
            "description": "Price per night excluding taxes and fees",
            "format": "double",
            "example": 76.47
          },
          "date": {
            "type": "string",
            "description": "Date. Date format complies with ISO-8601 YYYY-MM-DD",
            "format": "date-time",
            "example": "2026-08-25"
          }
        },
        "additionalProperties": false,
        "description": "Daily rate"
      },
      "SearchApi_DetailedRoomStay": {
        "required": [
          "availability",
          "cancellationPolicy",
          "checksum",
          "currencyCode",
          "extraServicesAvailable",
          "fullPlacementsName",
          "guestCount",
          "propertyId",
          "ratePlan",
          "roomType",
          "stayDates",
          "total"
        ],
        "type": "object",
        "properties": {
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Property ID",
            "example": "1024"
          },
          "roomType": {
            "$ref": "#/components/schemas/SearchApi_DetailedRoomType"
          },
          "ratePlan": {
            "$ref": "#/components/schemas/SearchApi_RatePlan"
          },
          "guestCount": {
            "$ref": "#/components/schemas/SearchApi_GuestCount"
          },
          "stayDates": {
            "$ref": "#/components/schemas/SearchApi_StayDates"
          },
          "availability": {
            "type": "integer",
            "description": "Number of accommodations available",
            "format": "int32",
            "example": 50
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Prices currency at the accommodation",
            "example": "GBP"
          },
          "dailyRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_DailyRate"
            },
            "description": "Price breakdown by day",
            "nullable": true
          },
          "total": {
            "$ref": "#/components/schemas/SearchApi_Total"
          },
          "cancellationPolicy": {
            "$ref": "#/components/schemas/SearchApi_CancellationPolicy"
          },
          "includedServices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_IncludedRoomStayService"
            },
            "description": "Extra services included",
            "nullable": true,
            "example": [
              {
                "id": "46545",
                "mealPlanCode": null
              }
            ]
          },
          "mealPlanCode": {
            "type": "string",
            "description": "Meal plan code\r\n\r\nIf a Meal included, the Meal plan code is specified,\r\n\r\notherwise the Meal plan code is RoomOnly",
            "nullable": true,
            "example": "RoomOnly"
          },
          "checksum": {
            "minLength": 1,
            "type": "string",
            "description": "Check hash sum of accommodation conditions",
            "example": "eyJDaGVja3N1bVdpdGhPdXRFeHRyYXMiOnsiVG90YWxBbW91bnRBZnRlclRheCI6IjU1LjUwIiwiQ3VycmVuY3lDb2RlIjoiR0JQIiwiU3RhcnRQZW5hbHR5QW1vdW50IjoiOS43MiJ9LCJDaGVja3N1bVdpdGhFeHRyYXMiOnsiVG90YWxBbW91bnRBZnRlclRheCI6IjU1LjUwIiwiQ3VycmVuY3lDb2RlIjoiR0JQIiwiU3RhcnRQZW5hbHR5QW1vdW50IjoiOS43MiJ9fQ=="
          },
          "fullPlacementsName": {
            "minLength": 1,
            "type": "string",
            "description": "String description of accommodation options",
            "example": "2 adults in adult beds, 1 child in an extra bed."
          },
          "bookingFormLink": {
            "type": "string",
            "description": "Direct link to the hotel official booking form website.\r\nLink contains the necessary parameters to make a reservation by current rate.\r\n\r\nSpecified only for metasearch partners",
            "nullable": true,
            "example": ""
          },
          "availableDiscounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_AvailableDiscount"
            },
            "description": "Available discounts. Applicability of discounts is determined at the booking stage.",
            "nullable": true
          },
          "extraServicesAvailable": {
            "type": "boolean",
            "description": "Extra services available"
          }
        },
        "additionalProperties": false,
        "description": "Room stay entity"
      },
      "SearchApi_DetailedRoomType": {
        "required": [
          "id",
          "placements"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Room type ID",
            "example": "45687"
          },
          "placements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_Placement"
            },
            "description": "Accommodations entity"
          }
        },
        "additionalProperties": false,
        "description": "Detailed room type entity"
      },
      "SearchApi_DiscountReason": {
        "enum": [
          "StayDatesDiscount",
          "RegistrationDiscount",
          "LoyaltyDiscount"
        ],
        "type": "string",
        "description": "Discount reason type:\r\n\r\nStayDatesDiscount - Discount for the specified dates.\r\n\r\nRegistrationDiscount - Discount for registration on the property site.\r\n\r\nLoyaltyDiscount - Discount for the loyalty program on the property site.\r\n"
      },
      "SearchApi_ExtraStay": {
        "required": [
          "currencyCode",
          "dateTimeLocal",
          "total"
        ],
        "type": "object",
        "properties": {
          "total": {
            "$ref": "#/components/schemas/SearchApi_Total"
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Price currency",
            "example": "GBP"
          },
          "dateTimeLocal": {
            "type": "string",
            "description": "Local property time and date of early check-in/late check-out\r\n\r\nDate and time format complies with ISO-8601 YYYY-MM-DDThh:mm",
            "format": "date-time",
            "example": "2026-08-25T12:00"
          },
          "isOccupyQuota": {
            "type": "boolean",
            "description": "Indicates whether the quota is guaranteed to be occupied.\r\nIf set to true, the quota is guaranteed to be available.\r\nIf set to false, the quota availability is not guaranteed.",
            "example": false
          }
        },
        "additionalProperties": false
      },
      "SearchApi_ExtraStays": {
        "required": [
          "earlyCheckIn",
          "lateCheckOut"
        ],
        "type": "object",
        "properties": {
          "earlyCheckIn": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_ExtraStay"
            },
            "description": "Array of extra stay details for early check-ins"
          },
          "lateCheckOut": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_ExtraStay"
            },
            "description": "Array of extra stay details for late check-outs"
          }
        },
        "additionalProperties": false
      },
      "SearchApi_GuestCount": {
        "required": [
          "adultCount",
          "childAges"
        ],
        "type": "object",
        "properties": {
          "adultCount": {
            "type": "integer",
            "description": "Number of adults",
            "format": "int32",
            "example": 1
          },
          "childAges": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Child age range",
            "example": [
              5
            ]
          }
        },
        "additionalProperties": false,
        "description": "Number of guests entity"
      },
      "SearchApi_IncludedRoomStayService": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Service ID",
            "example": "8765"
          },
          "mealPlanCode": {
            "type": "string",
            "description": "Meal plan code\r\n\r\nIf the service is Meal, the Meal plan code is specified,\r\n\r\notherwise, the meal plan code is not transferred (null)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Additional service for accommodation,\r\n\r\nincluded in the rate plan\r\n\r\nmealPlanCode - indicated if the service type is Catering, otherwise null"
      },
      "SearchApi_MealPlanType": {
        "enum": [
          "AllInclusive",
          "BuffetBreakfast",
          "ContinentalBreakfast",
          "EnglishBreakfast",
          "FullBoard",
          "HalfBoard",
          "BreakFast",
          "Lunch",
          "Dinner",
          "FullBoardBuffet",
          "FullBoardCarte",
          "BuffetDinner",
          "DinnerCarte",
          "Custom",
          "HalfBoardLunch",
          "HalfBoardDinner",
          "AmericanBreakfast",
          "HalfBoardLunchDinner",
          "UltraAllInclusive"
        ],
        "type": "string",
        "description": "Meal plan codes: \r\n\r\nAllInclusive \r\n\r\nBuffetBreakfast \r\n\r\nContinentalBreakfast \r\n\r\nEnglishBreakfast \r\n\r\nFullBoard \r\n\r\nHalfBoard \r\n\r\nBreakFast \r\n\r\nLunch \r\n\r\nDinner \r\n\r\nFullBoardBuffet \r\n\r\nFullBoardCarte \r\n\r\nBuffetDinner \r\n\r\nDinnerCarte \r\n\r\nCustom \r\n\r\nHalfBoardLunch \r\n\r\nHalfBoardDinner \r\n\r\nAmericanBreakfast \r\n\r\nHalfBoardLunchDinner \r\n\r\nUltraAllInclusive \r\n",
        "example": "BreakFast"
      },
      "SearchApi_MealPreference": {
        "type": "object",
        "properties": {
          "mealType": {
            "$ref": "#/components/schemas/SearchApi_MealPreferenceType"
          },
          "mealsIncluded": {
            "$ref": "#/components/schemas/SearchApi_MealsIncluded"
          }
        },
        "additionalProperties": false,
        "description": "Meal filters"
      },
      "SearchApi_MealPreferenceType": {
        "enum": [
          "All",
          "MealOnly",
          "RoomOnly"
        ],
        "type": "string",
        "description": "Meal types:\r\n\r\nAll - Display of accommodations with minimum price. If MealsIncluded is specified, display accommodations without meal included or with the selected meals\r\n\r\nMealOnly - Display of accommodations with meal included, if a hotel has no accommodations with meal included, it is not in the output\r\n\r\nRoomOnly - Display of accommodations without any meal included\r\n",
        "example": "MealOnly"
      },
      "SearchApi_MealsIncluded": {
        "type": "object",
        "properties": {
          "mealPlanCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_MealPlanType"
            },
            "description": "Used to identify the types of meals included",
            "nullable": true,
            "example": [
              "BreakFast"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Defines which specific meals are included in stay.\r\n\r\nThe filter allows you to display the lowest cost of stay with a specific meal included for each stay.\r\n\r\nFor example, if you specify MealsIncluded.MealPlanCodes [“BreakFast”] in the request - in the response,\r\n\r\nyou can get the minimum cost of stay with only the “BreakFast” MealType only.\r\n\r\nResponse will not contain “AllInclusive” or “HalfBoard”.\r\n\r\nMealsIncluded can be used only with the MealType: \"All\" or \"MealOnly\"\r\n"
      },
      "SearchApi_Placement": {
        "required": [
          "code",
          "count",
          "kind"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "String representation of accommodation",
            "example": "AdultBed-2"
          },
          "count": {
            "type": "integer",
            "description": "Number of accommodations",
            "format": "int32",
            "example": 2
          },
          "kind": {
            "$ref": "#/components/schemas/SearchApi_BookingPlacementKind"
          },
          "minAge": {
            "type": "integer",
            "description": "Minimum age in the age group\r\n\r\nSpecified for child accommodation only\r\n(Kind = Child | ExtraChild | ChildBandWithoutBed)",
            "format": "int32",
            "nullable": true
          },
          "maxAge": {
            "type": "integer",
            "description": "Maximum age in the age group\r\n\r\nSpecified for child accommodation only\r\n\r\n(Kind = Child | ExtraChild | ChildBandWithoutBed)",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Accommodation in a room"
      },
      "SearchApi_PlacementRq": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "minLength": 1,
            "type": "string",
            "description": "String representation of accommodation",
            "example": "AdultBed-2"
          }
        },
        "additionalProperties": false,
        "description": "Accommodation in a room"
      },
      "SearchApi_PricePreference": {
        "type": "object",
        "properties": {
          "currencyCode": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "The code defining the monetary unit. Use ISO 4217, a three-letter code, accommodations without this currency will not appear in the output",
            "nullable": true,
            "example": "GBP"
          },
          "minPrice": {
            "type": "number",
            "description": "Minimum accommodation price",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "maxPrice": {
            "type": "number",
            "description": "Maximum accommodation price",
            "format": "double",
            "nullable": true,
            "example": 10000
          }
        },
        "additionalProperties": false,
        "description": "Price filters"
      },
      "SearchApi_QuantityByGuests": {
        "type": "object",
        "properties": {
          "adultsServiceQuantity": {
            "type": "integer",
            "description": "Number of extra services for adult guests",
            "format": "int32",
            "example": 1
          },
          "childrenServiceQuantity": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_ChildrenServiceCount"
            },
            "description": "Number of extra services for child guests",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Number of extra services provided depending on the age of the guests"
      },
      "SearchApi_RatePlan": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Rate plan ID",
            "example": "987657"
          }
        },
        "additionalProperties": false,
        "description": "Rate plan entity"
      },
      "SearchApi_RoomStayExtraService": {
        "required": [
          "calculationMethod",
          "currencyCode",
          "id",
          "kind",
          "mealPlanCode",
          "total"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Service ID",
            "example": "8770"
          },
          "kind": {
            "$ref": "#/components/schemas/SearchApi_ServiceKind"
          },
          "mealPlanCode": {
            "minLength": 1,
            "type": "string",
            "description": "Meal plan code\r\n\r\nIf the service refers to Meal, the Meal plan code is specified;\r\n\r\notherwise, the meal plan code is not sent (null).",
            "example": "Dinner"
          },
          "maxQuantity": {
            "type": "integer",
            "description": "Maximum number of extra services\r\n\r\nThis parameter is used for the \"Per use\" charge type.",
            "format": "int32",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "description": "Number of extra services\r\n\r\nThis parameter is used for \"PerStay\", \"PerPerson\", and \"PerUse\" charge types.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Price currency",
            "example": "GBP"
          },
          "calculationMethod": {
            "$ref": "#/components/schemas/SearchApi_CalculationMethod"
          },
          "total": {
            "$ref": "#/components/schemas/SearchApi_Total"
          },
          "quantityByGuests": {
            "$ref": "#/components/schemas/SearchApi_QuantityByGuests"
          }
        },
        "additionalProperties": false
      },
      "SearchApi_RoomType": {
        "required": [
          "id",
          "placements"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Room type ID",
            "example": "45687"
          },
          "placements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_Placement"
            },
            "description": "Accommodations entity"
          }
        },
        "additionalProperties": false,
        "description": "Short room type entity"
      },
      "SearchApi_RoomTypeRq": {
        "required": [
          "id",
          "placements"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Room type ID",
            "example": "82751"
          },
          "placements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_PlacementRq"
            },
            "description": "Accommodations entity"
          }
        },
        "additionalProperties": false
      },
      "SearchApi_SearchByPropertyResponse": {
        "required": [
          "roomStays"
        ],
        "type": "object",
        "properties": {
          "roomStays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_DetailedRoomStay"
            },
            "description": "Accommodation options"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_Warning"
            },
            "description": "Warnings",
            "nullable": true,
            "example": [
              null
            ]
          }
        },
        "additionalProperties": false,
        "description": "Groups of a search for accommodation options by accommodation in general;\r\nincludes accommodation and services\r\nthat can be used when booking"
      },
      "SearchApi_SearchExtraServicesByPropertyResponse": {
        "type": "object",
        "properties": {
          "roomStayExtraServices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_RoomStayExtraService"
            },
            "description": "Room stay extra services",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SearchApi_SearchExtraStaysByPropertyResponse": {
        "type": "object",
        "properties": {
          "extraStays": {
            "$ref": "#/components/schemas/SearchApi_ExtraStays"
          }
        },
        "additionalProperties": false
      },
      "SearchApi_SearchExtraStaysCriteria": {
        "type": "object",
        "properties": {
          "stayDates": {
            "$ref": "#/components/schemas/SearchApi_StayDates"
          },
          "roomType": {
            "$ref": "#/components/schemas/SearchApi_RoomTypeRq"
          },
          "ratePlan": {
            "$ref": "#/components/schemas/SearchApi_RatePlan"
          },
          "guestCount": {
            "$ref": "#/components/schemas/SearchApi_GuestCount"
          }
        },
        "additionalProperties": false
      },
      "SearchApi_SearchServicesCriteria": {
        "required": [
          "guestCount",
          "ratePlan",
          "roomType",
          "stayDates"
        ],
        "type": "object",
        "properties": {
          "stayDates": {
            "$ref": "#/components/schemas/SearchApi_StayDates"
          },
          "roomType": {
            "$ref": "#/components/schemas/SearchApi_RoomTypeRq"
          },
          "ratePlan": {
            "$ref": "#/components/schemas/SearchApi_RatePlan"
          },
          "guestCount": {
            "$ref": "#/components/schemas/SearchApi_GuestCount"
          }
        },
        "additionalProperties": false
      },
      "SearchApi_ServiceKind": {
        "enum": [
          "Common",
          "Meal"
        ],
        "type": "string",
        "description": "Service type:\r\n\r\nCommon - common service\r\n\r\nMeal - meal service",
        "example": "Meal"
      },
      "SearchApi_ShortRoomStay": {
        "required": [
          "currencyCode",
          "fullPlacementsName",
          "propertyId",
          "ratePlan",
          "roomType",
          "total"
        ],
        "type": "object",
        "properties": {
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Property ID",
            "example": "1024"
          },
          "roomType": {
            "$ref": "#/components/schemas/SearchApi_RoomType"
          },
          "ratePlan": {
            "$ref": "#/components/schemas/SearchApi_RatePlan"
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Prices currency at the accommodation",
            "example": "GBP"
          },
          "dailyRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_DailyRate"
            },
            "description": "Price breakdown by day",
            "nullable": true
          },
          "total": {
            "$ref": "#/components/schemas/SearchApi_Total"
          },
          "includedServices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_IncludedRoomStayService"
            },
            "description": "Extra services included",
            "nullable": true,
            "example": [
              {
                "id": "46545",
                "mealPlanCode": null
              }
            ]
          },
          "mealPlanCode": {
            "type": "string",
            "description": "Meal plan code\r\n\r\nIf a Meal included, the Meal plan code is specified,\r\n\r\notherwise the Meal plan code is RoomOnly",
            "nullable": true,
            "example": "RoomOnly"
          },
          "bookingFormLink": {
            "type": "string",
            "description": "Direct link to the hotel official booking form website.\r\nLink contains the necessary parameters to make a reservation by current rate.\r\n\r\nSpecified only for metasearch partners",
            "nullable": true,
            "example": ""
          },
          "availableDiscounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_AvailableDiscount"
            },
            "description": "Available discounts. Applicability of discounts is determined at the booking stage.",
            "nullable": true
          },
          "fullPlacementsName": {
            "minLength": 1,
            "type": "string",
            "description": "String description of accommodation options",
            "example": "2 adults in adult beds, 1 child in an extra bed."
          }
        },
        "additionalProperties": false,
        "description": "Brief overview of the accommodation option"
      },
      "SearchApi_SimpleSearchCriteria": {
        "required": [
          "adults",
          "arrivalDate",
          "departureDate"
        ],
        "type": "object",
        "properties": {
          "propertyIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Accommodations IDs\r\n\r\nMaximum number of IDs - 200",
            "nullable": true,
            "example": [
              "1024",
              "11"
            ]
          },
          "adults": {
            "type": "integer",
            "description": "Number of adults",
            "format": "int32",
            "example": 1
          },
          "childAges": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Child age range",
            "nullable": true,
            "example": [
              5
            ]
          },
          "include": {
            "type": "string",
            "description": "Add additional information about room types and rate plans to the response \r\n\r\nempty by default, but values can be accepted as follows:\r\n\r\nroomTypeShortContent - content by room types only\r\n\r\nratePlanShortContent - content by rate plans only\r\n\r\nroomTypeShortContent|ratePlanShortContent - content by both rate plans and room types",
            "nullable": true,
            "example": ""
          },
          "arrivalDate": {
            "type": "string",
            "description": "Check-in date.\r\n\r\nDate format complies with ISO-8601 YYYY-MM-DD",
            "format": "date-time",
            "example": "2026-08-24"
          },
          "departureDate": {
            "type": "string",
            "description": "Check-out date.\r\n\r\nDate format complies with ISO-8601 YYYY-MM-DD",
            "format": "date-time",
            "example": "2026-08-25"
          },
          "mealPreference": {
            "$ref": "#/components/schemas/SearchApi_MealPreference"
          },
          "pricePreference": {
            "$ref": "#/components/schemas/SearchApi_PricePreference"
          }
        },
        "additionalProperties": false,
        "description": "Search parameters\r\n"
      },
      "SearchApi_StayDates": {
        "required": [
          "arrivalDateTime",
          "departureDateTime"
        ],
        "type": "object",
        "properties": {
          "arrivalDateTime": {
            "type": "string",
            "description": "Local check-in date and time for the hotel.\r\n\r\nDate and time format complies with ISO-8601 YYYY-MM-DDThh:mm",
            "format": "date-time",
            "example": "2026-08-24T14:00"
          },
          "departureDateTime": {
            "type": "string",
            "description": "Local check-out date and time for the hotel.\r\n\r\nFormat complies with ISO-8601 YYYY-MM-DDThh:mm",
            "format": "date-time",
            "example": "2026-08-25T12:00"
          }
        },
        "additionalProperties": false,
        "description": "Period of stay"
      },
      "SearchApi_Tax": {
        "required": [
          "amount",
          "name"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount of tax or fee",
            "format": "double",
            "example": 5.5
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Tax name",
            "example": "Lodging fee"
          },
          "description": {
            "type": "string",
            "description": "Tax description",
            "nullable": true,
            "example": "Fee per guest, payable at check-in"
          }
        },
        "additionalProperties": false,
        "description": "Taxes and fees"
      },
      "SearchApi_Total": {
        "required": [
          "priceBeforeTax",
          "taxAmount"
        ],
        "type": "object",
        "properties": {
          "priceBeforeTax": {
            "type": "number",
            "description": "Price excluding taxes and fees to be paid at check-in",
            "format": "double",
            "example": 50.5
          },
          "taxAmount": {
            "type": "number",
            "description": "Amount of taxes and fees to be paid at check-in",
            "format": "double",
            "example": 5.5
          },
          "taxes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchApi_Tax"
            },
            "description": "Taxes and fees to be paid at check-in",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Total for stay"
      },
      "SearchApi_Warning": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true,
            "example": "NotEnoughRights"
          },
          "message": {
            "type": "string",
            "nullable": true,
            "example": "Not enough rights to hotel"
          }
        },
        "additionalProperties": false
      },
      "PmsApi_AccommodationInventory": {
        "type": "object",
        "properties": {
          "buildings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Building"
            },
            "description": "List of buildings",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PmsApi_AddGuestPersonalDocumentFilesRequest": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_FileInfo"
            },
            "description": "Details of files to upload",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request to upload one or more guest identity document files"
      },
      "PmsApi_AgentCommission": {
        "type": "object",
        "properties": {
          "percent": {
            "type": "number",
            "description": "Commission percent that was used to derive AgentCommissionAmount.\r\nSet only when Source is Pms; null otherwise.",
            "format": "double",
            "nullable": true
          },
          "calculationSource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_CommissionCalculationSource"
              }
            ],
            "description": "Source of commission calculation.\n New values can be added (enum is not frozen).\n- **Pms**: The commission is calculated based on the agent company's settings in PMS.\n- **Ota**: The commission is calculated by the OTA."
          },
          "amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Agent commission amount applied to the booking.",
            "nullable": true
          },
          "discount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Total amount of discounts granted at the expense of the agent commission.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Agent commission applied to the booking."
      },
      "PmsApi_Amenity": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Amenity name",
            "nullable": true,
            "example": "Swimming pool"
          }
        },
        "additionalProperties": false,
        "description": "Guest preference (amenity)"
      },
      "PmsApi_Amount": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "Monetary amount",
            "format": "double",
            "example": 10000.11
          },
          "currencyCode": {
            "type": "string",
            "description": "Three-letter ISO-4217 currency code",
            "nullable": true,
            "example": "USD"
          }
        },
        "additionalProperties": false,
        "description": "Amount with currency"
      },
      "PmsApi_ApiResponse": {
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Standard API response container with warnings and errors"
      },
      "PmsApi_AvailableRoomForRoomStay": {
        "type": "object",
        "properties": {
          "pmsRoomStayId": {
            "type": "string",
            "description": "Stay identifier in PMS",
            "nullable": true,
            "example": "4503599628227391"
          },
          "currentRoomId": {
            "type": "string",
            "description": "Currently assigned room ID",
            "nullable": true,
            "example": "4503599628227391"
          },
          "roomIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of rooms available for check-in",
            "nullable": true,
            "example": [
              "4503599628227391",
              "4503599628227392"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Available rooms/suites for a given room stay"
      },
      "PmsApi_Building": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Building unique identifier",
            "nullable": true,
            "example": "4503599628227393"
          },
          "name": {
            "type": "string",
            "description": "Building name",
            "nullable": true,
            "example": "Main building"
          },
          "floors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Floor"
            },
            "description": "List of floors",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PmsApi_CommissionCalculationSource": {
        "enum": [
          "Pms",
          "Ota"
        ],
        "type": "string",
        "description": "Source of commission calculation.\n New values can be added (enum is not frozen).\n- **Pms**: The commission is calculated based on the agent company's settings in PMS.\n- **Ota**: The commission is calculated by the OTA."
      },
      "PmsApi_Company": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Company unique identifier in PMS",
            "nullable": true,
            "example": "4503599628227391"
          },
          "name": {
            "type": "string",
            "description": "Company name",
            "nullable": true,
            "example": "Undefined Incorporated"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_CompanyType"
              }
            ],
            "description": "Company type\n New values will not be added (enum is frozen).\n- **Customer**: Customer company\n- **Payer**: Agent company",
            "example": "Customer"
          }
        },
        "additionalProperties": false,
        "description": "Company entity in PMS"
      },
      "PmsApi_CompanyType": {
        "enum": [
          "Customer",
          "Payer"
        ],
        "type": "string",
        "description": "Type of company\n New values will not be added (enum is frozen).\n- **Customer**: Customer company\n- **Payer**: Agent company"
      },
      "PmsApi_Email": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Email address",
            "nullable": true,
            "example": "abc@abc.com"
          }
        },
        "additionalProperties": false,
        "description": "Email"
      },
      "PmsApi_FileInfo": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "File contents in Base64 (max 2 MB)",
            "nullable": true,
            "example": "base64"
          },
          "name": {
            "type": "string",
            "description": "File name with extension.\r\n\r\nSupported file extensions: \".pdf\", \".jpg\", \".jpeg\", \".png\", \".gif\".",
            "nullable": true,
            "example": "jackal.jpg"
          }
        },
        "additionalProperties": false,
        "description": "File content and name"
      },
      "PmsApi_FindCompaniesResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "companies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Company"
            },
            "description": "Array of Company objects"
          }
        },
        "additionalProperties": false,
        "description": "List of companies"
      },
      "PmsApi_FindGuestLoyaltyCardsResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "loyaltyCards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_PersonLoyalty"
            },
            "description": "Array of PersonLoyalty objects"
          }
        },
        "additionalProperties": false,
        "description": "List of guest loyalty cards"
      },
      "PmsApi_FindGuestRoomStaysResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "roomStays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_RoomStay"
            },
            "description": "Array of RoomStay objects"
          }
        },
        "additionalProperties": false,
        "description": "List of room stays for a guest"
      },
      "PmsApi_FindGuestsResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "guests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Person"
            },
            "description": "Array of Person objects"
          }
        },
        "additionalProperties": false,
        "description": "Search results of guest profiles"
      },
      "PmsApi_FindInvoicesResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "invoices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Invoice"
            },
            "description": "Array of Invoice objects"
          }
        },
        "additionalProperties": false,
        "description": "List of invoices by reservation"
      },
      "PmsApi_FindReservationRoomsResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "availableRoomForRoomStays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_AvailableRoomForRoomStay"
            },
            "description": "Array of AvailableRoomForRoomStay objects"
          }
        },
        "additionalProperties": false,
        "description": "List of available rooms/suites per stay"
      },
      "PmsApi_FindReservationsResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "reservations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ReservationInfo"
            },
            "description": "Array of ReservationInfo objects"
          }
        },
        "additionalProperties": false,
        "description": "List of reservations by filters"
      },
      "PmsApi_FindRoomsResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "rooms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Room"
            },
            "description": "Array of Room objects"
          }
        },
        "additionalProperties": false
      },
      "PmsApi_Floor": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Floor unique identifier",
            "nullable": true,
            "example": "440357547227393"
          },
          "name": {
            "type": "string",
            "description": "Floor name",
            "nullable": true,
            "example": "1st floor"
          },
          "rooms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Room"
            },
            "description": "List of rooms",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PmsApi_Gender": {
        "enum": [
          "Male",
          "Female",
          "Unknown"
        ],
        "type": "string",
        "description": "Gender\n New values will not be added (enum is frozen).\n- **Male**: Male\n- **Female**: Female\n- **Unknown**: Unknown"
      },
      "PmsApi_GetGuestResponse": {
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "guest": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Person"
              }
            ],
            "description": "Person or guest information"
          }
        },
        "additionalProperties": false,
        "description": "Guest profile details"
      },
      "PmsApi_GetPaymentSystemsForPaymentResponse": {
        "required": [
          "hasNextPage",
          "nextPageToken"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "nextPageToken": {
            "type": "string",
            "description": "Token to fetch the next page",
            "nullable": true,
            "example": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg="
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if more pages are available",
            "example": true
          },
          "paymentSystems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_PaymentSystem"
            },
            "description": "List of payment systems"
          }
        },
        "additionalProperties": false,
        "description": "List of available payment methods"
      },
      "PmsApi_GetReservationResponse": {
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "reservation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Reservation"
              }
            ],
            "description": "Detailed reservation record"
          }
        },
        "additionalProperties": false,
        "description": "Reservation details"
      },
      "PmsApi_GuestCount": {
        "type": "object",
        "properties": {
          "adults": {
            "type": "integer",
            "description": "Number of adults",
            "format": "int32",
            "example": 2
          },
          "children": {
            "type": "integer",
            "description": "Number of children",
            "format": "int32",
            "example": 3
          }
        },
        "additionalProperties": false,
        "description": "Breakdown of guest counts by age"
      },
      "PmsApi_GuestStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Status identifier",
            "nullable": true,
            "example": "0"
          },
          "displayName": {
            "type": "string",
            "description": "Localized name of status",
            "nullable": true,
            "example": "Not selected"
          }
        },
        "additionalProperties": false,
        "description": "Status of a guest"
      },
      "PmsApi_Invoice": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "description": "Invoice number",
            "nullable": true,
            "example": "20150823-1111-676271-01"
          },
          "pmsRoomStayId": {
            "type": "string",
            "description": "Room stay ID in PMS (null if group billing)",
            "nullable": true,
            "example": "4503599628227391"
          },
          "payer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Payer"
              }
            ],
            "description": "Information about who pays the invoice",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_InvoiceItem"
            },
            "description": "Line items on the invoice",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Invoice data for a reservation"
      },
      "PmsApi_InvoiceItem": {
        "required": [
          "vat"
        ],
        "type": "object",
        "properties": {
          "accountingCode": {
            "type": "string",
            "description": "Accounting code for analytics",
            "nullable": true,
            "example": "6945A37BC11CE3F42738E4EAA1D109699A08645006B837F66D7C684A4E7454F3"
          },
          "name": {
            "type": "string",
            "description": "Description of the item",
            "nullable": true,
            "example": "Accomodation"
          },
          "kind": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_InvoiceItemKind"
              }
            ],
            "description": "Invoice item type\n New values can be added (enum is not frozen).\n- **RoomType**: Room stay\n- **Option**: Service\n- **Transfer**: Transfer",
            "example": "RoomType"
          },
          "total": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Cost of an invoice item, tax INCLUDED",
            "nullable": true
          },
          "vat": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Vat"
              }
            ],
            "description": "VAT",
            "nullable": true
          },
          "quantity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_InvoiceItemQuantity"
              }
            ],
            "description": "Item quantity",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Single line item on an invoice"
      },
      "PmsApi_InvoiceItemKind": {
        "enum": [
          "RoomType",
          "Option",
          "Transfer"
        ],
        "type": "string",
        "description": "Kind of invoice item\n New values can be added (enum is not frozen).\n- **RoomType**: Room stay\n- **Option**: Service\n- **Transfer**: Transfer"
      },
      "PmsApi_InvoiceItemQuantity": {
        "type": "object",
        "properties": {
          "value": {
            "type": "integer",
            "description": "Quantity number",
            "format": "int32",
            "example": 10
          },
          "unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_InvoiceItemQuantityType"
              }
            ],
            "description": "Unit\n New values can be added (enum is not frozen).\n- **Pcs**: Pieces\n- **Hours**: Hours\n- **Nights**: Nights",
            "example": "Pcs"
          }
        },
        "additionalProperties": false,
        "description": "Quantity details for an invoice item"
      },
      "PmsApi_InvoiceItemQuantityType": {
        "enum": [
          "Pcs",
          "Hours",
          "Nights"
        ],
        "type": "string",
        "description": "Unit of measure for invoice item\n New values can be added (enum is not frozen).\n- **Pcs**: Pieces\n- **Hours**: Hours\n- **Nights**: Nights"
      },
      "PmsApi_ObtainAccommodationInventoryResponse": {
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "accommodationInventory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_AccommodationInventory"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "PmsApi_Payer": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Full name of payer (person or company)",
            "nullable": true,
            "example": "John Richard Doe"
          }
        },
        "additionalProperties": false,
        "description": "Information about who pays the invoice"
      },
      "PmsApi_PaymentActionKind": {
        "enum": [
          "Payment",
          "Refund"
        ],
        "type": "string",
        "description": "Transaction direction\n New values can be added (enum is not frozen).\n- **Payment**: Payment\n- **Refund**: Refund"
      },
      "PmsApi_PaymentSystem": {
        "type": "object",
        "properties": {
          "pmsPaymentSystemId": {
            "type": "string",
            "description": "Payment system ID in PMS",
            "nullable": true,
            "example": "0oHjfSIZS0ng=="
          },
          "displayName": {
            "type": "string",
            "description": "Human-readable name of payment system",
            "nullable": true,
            "example": "Bank transfer for legal entities"
          }
        },
        "additionalProperties": false,
        "description": "Payment System"
      },
      "PmsApi_Person": {
        "type": "object",
        "properties": {
          "pmsPersonId": {
            "type": "string",
            "description": "Unique identifier in PMS",
            "nullable": true,
            "example": "4503599627465719"
          },
          "personName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_PersonName"
              }
            ],
            "description": "Person name",
            "nullable": true
          },
          "birthDate": {
            "type": "string",
            "description": "Date of birth in ISO-8601 YYYY-MM-DD format",
            "nullable": true,
            "example": "1999-09-09"
          },
          "citizenship": {
            "type": "string",
            "description": "ISO-3166-1 alpha-3 country code",
            "nullable": true,
            "example": "NLD"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_GuestStatus"
              }
            ],
            "description": "Guest status",
            "nullable": true
          },
          "emails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Email"
            },
            "description": "List of email addresses",
            "nullable": true
          },
          "phones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Phone"
            },
            "description": "List of phone records",
            "nullable": true
          },
          "gender": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Gender"
              }
            ],
            "description": "Gender\n New values will not be added (enum is frozen).\n- **Male**: Male\n- **Female**: Female\n- **Unknown**: Unknown",
            "example": "Male"
          }
        },
        "additionalProperties": false,
        "description": "Person or guest information"
      },
      "PmsApi_PersonLoyalty": {
        "type": "object",
        "properties": {
          "programId": {
            "type": "string",
            "description": "Loyalty program identifier",
            "nullable": true,
            "example": "1234567"
          },
          "cardNumber": {
            "type": "string",
            "description": "Loyalty card number",
            "nullable": true,
            "example": "1234567"
          }
        },
        "additionalProperties": false,
        "description": "Guest loyalty card details"
      },
      "PmsApi_PersonName": {
        "type": "object",
        "properties": {
          "lastName": {
            "type": "string",
            "description": "Family name",
            "nullable": true,
            "example": "Doe"
          },
          "firstName": {
            "type": "string",
            "description": "Given name",
            "nullable": true,
            "example": "John"
          },
          "middleName": {
            "type": "string",
            "description": "Middle name",
            "nullable": true,
            "example": "M."
          }
        },
        "additionalProperties": false,
        "description": "First name, last name and middle name"
      },
      "PmsApi_PersonalDocumentType": {
        "enum": [
          "ForeignPassport",
          "InternationalPassportBiometric",
          "InternationalPassport",
          "TemporaryPassport",
          "BirthCertificate",
          "Diplomatic",
          "BirthCertificateForeign",
          "MilitaryOfficer",
          "ForeignPassportForeign",
          "Another",
          "DiplomaticForeign",
          "TemporaryResidence",
          "Residence",
          "TemporaryRefuge",
          "Cis",
          "WorkPassport",
          "ResidenceStateless",
          "NationalPassport",
          "KazPassport",
          "ResidenceStatelessBiometric",
          "TemporaryResidenceStateless",
          "TemporaryResidenceStatelessBlank",
          "Patent",
          "DriverLicense",
          "PersonalCard",
          "Passport"
        ],
        "type": "string",
        "description": "Type of personal document\n New values can be added (enum is not frozen).\n- **ForeignPassport**: International passport\n- **InternationalPassportBiometric**: International passport with biometrics\n- **InternationalPassport**: International passport of a Russian Federation citizen\n- **TemporaryPassport**: Temporary passport\n- **BirthCertificate**: Birth certificate\n- **Diplomatic**: Diplomatic passport of a Russian Federation citizen\n- **BirthCertificateForeign**: Foreign birth certificate\n- **MilitaryOfficer**: Officer ID card\n- **ForeignPassportForeign**: International passport issued outside the Russian Federation\n- **Another**: Another identity document\n- **DiplomaticForeign**: Diplomatic passport of a foreign citizen\n- **TemporaryResidence**: Temporary residence permit for a foreign citizen\n- **Residence**: Residence permit of a foreign citizen\n- **TemporaryRefuge**: Certificate of temporary refuge on the territory of the Russian Federation\n- **Cis**: Identity card of a citizen of CIS member states\n- **WorkPassport**: Service passport\n- **ResidenceStateless**: Residence permit of a stateless person\n- **NationalPassport**: National foreign passport\n- **KazPassport**: Identity card of a citizen of the Republic of Kazakhstan\n- **ResidenceStatelessBiometric**: Residence permit of a stateless person with biometrics\n- **TemporaryResidenceStateless**: Temporary residence permit of a stateless person (stamp)\n- **TemporaryResidenceStatelessBlank**: Temporary residence permit of a stateless person (blank)\n- **Patent**: Patent\n- **DriverLicense**: Driver license\n- **PersonalCard**: Identity card\n- **Passport**: Passport"
      },
      "PmsApi_Phone": {
        "type": "object",
        "properties": {
          "phoneNumber": {
            "type": "string",
            "description": "Phone Number",
            "nullable": true,
            "example": "+11111111111111111"
          }
        },
        "additionalProperties": false,
        "description": "Phone"
      },
      "PmsApi_Reservation": {
        "required": [
          "creationSource",
          "currencyCode",
          "customerLanguageCode"
        ],
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "description": "Reservation number",
            "nullable": true,
            "example": "22200222-111-99999999"
          },
          "customerLanguageCode": {
            "type": "string",
            "description": "ISO 639-1 customer language code",
            "nullable": true,
            "example": "ru"
          },
          "visitPurpose": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_VisitPurpose"
              }
            ],
            "description": "Purpose of a visit",
            "nullable": true
          },
          "customerComment": {
            "type": "string",
            "description": "Customers comments",
            "nullable": true,
            "example": "I want room with the sea view"
          },
          "modifyDateTime": {
            "type": "string",
            "description": "Date and time of last modification in YYYY-MM-DDThh:mm:ssZ format (ISO 8601, UTC)",
            "nullable": true,
            "example": "2024-07-11T13:15:18Z"
          },
          "groupName": {
            "type": "string",
            "description": "Group name",
            "nullable": true,
            "example": "Wedding"
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO-4217 Three-letter currency code",
            "nullable": true,
            "example": "USD"
          },
          "customer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Person"
              }
            ],
            "description": "Customer",
            "nullable": true
          },
          "customerCompany": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Company"
              }
            ],
            "description": "Customer company",
            "nullable": true
          },
          "creationSource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_ReservationCreationSource"
              }
            ],
            "description": "Creation source",
            "nullable": true
          },
          "channelInformation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_ReservationChannelInformation"
              }
            ],
            "description": "Channel Information. Not null when creation source is channel",
            "nullable": true
          },
          "reservationStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_ReservationStatus"
              }
            ],
            "description": "Reservation status\n New values will not be added (enum is frozen).\n- **Unconfirmed**: Unconfirmed\n- **Confirmed**: Confirmed\n- **Cancelled**: Cancelled\n- **Released**: Released\n- **Pending**: Pending\n- **Edited**: Edited",
            "example": "Unconfirmed"
          },
          "roomStays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_RoomStay"
            },
            "description": "Room stays",
            "nullable": true
          },
          "agentCommission": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_AgentCommission"
              }
            ],
            "description": "Agent commission applied to the booking",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Detailed reservation record"
      },
      "PmsApi_ReservationChannelInformation": {
        "required": [
          "channelName"
        ],
        "type": "object",
        "properties": {
          "channelName": {
            "type": "string",
            "description": "Reservation channel name",
            "nullable": true,
            "example": "booking.com"
          }
        },
        "additionalProperties": false,
        "description": "Reservation channel details"
      },
      "PmsApi_ReservationCreationSource": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Source identifier in PMS",
            "nullable": true,
            "example": "999"
          },
          "name": {
            "type": "string",
            "description": "Localized name of creation source",
            "nullable": true,
            "example": "Channel"
          }
        },
        "additionalProperties": false,
        "description": "Reservation creation source details"
      },
      "PmsApi_ReservationInfo": {
        "required": [
          "number"
        ],
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "description": "Reservation number",
            "nullable": true,
            "example": "22200222-111-99999999"
          }
        },
        "additionalProperties": false,
        "description": "Minimal reservation info"
      },
      "PmsApi_ReservationStatus": {
        "enum": [
          "Unconfirmed",
          "Confirmed",
          "Cancelled",
          "Released",
          "Pending",
          "Edited"
        ],
        "type": "string",
        "description": "Reservation status\n New values will not be added (enum is frozen).\n- **Unconfirmed**: Unconfirmed\n- **Confirmed**: Confirmed\n- **Cancelled**: Cancelled\n- **Released**: Released\n- **Pending**: Pending\n- **Edited**: Edited"
      },
      "PmsApi_ResponseError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error or warning code",
            "nullable": true,
            "example": "11"
          },
          "message": {
            "type": "string",
            "description": "Human-readable description of the issue",
            "nullable": true,
            "example": "Incorrect dates format"
          }
        },
        "additionalProperties": false,
        "description": "Error or warning item with code and message"
      },
      "PmsApi_Room": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Room or suite unique identifier",
            "nullable": true,
            "example": "324235253"
          },
          "displayName": {
            "type": "string",
            "description": "Room or suite display name",
            "nullable": true,
            "example": "111"
          },
          "roomTypeId": {
            "type": "string",
            "description": "Room or suite type identifier",
            "nullable": true,
            "example": "315367"
          },
          "floorId": {
            "type": "string",
            "description": "Floor identifier",
            "nullable": true,
            "example": "4"
          }
        },
        "additionalProperties": false,
        "description": "Room or suite details"
      },
      "PmsApi_RoomStay": {
        "type": "object",
        "properties": {
          "pmsRoomStayId": {
            "type": "string",
            "description": "Room stay identifier in PMS",
            "nullable": true,
            "example": "4503599628227391"
          },
          "roomId": {
            "type": "string",
            "description": "Assigned room identifier",
            "nullable": true,
            "example": "4503599627373585"
          },
          "roomTypeId": {
            "type": "string",
            "description": "Room type identifier",
            "nullable": true,
            "example": "315367"
          },
          "guestsIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IDs of guests on this stay",
            "nullable": true,
            "example": [
              "4503599627465719",
              "4503599627465718"
            ]
          },
          "checkInDateTime": {
            "type": "string",
            "description": "Scheduled check-in date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time",
            "nullable": true,
            "example": "2024-07-11T14:00"
          },
          "checkOutDateTime": {
            "type": "string",
            "description": "Scheduled check-out date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time",
            "nullable": true,
            "example": "2024-07-15T12:00"
          },
          "actualCheckInDateTime": {
            "type": "string",
            "description": "Actual check-in date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time",
            "nullable": true,
            "example": "2024-07-11T16:15"
          },
          "actualCheckOutDateTime": {
            "type": "string",
            "description": "Actual check-out date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time",
            "nullable": true,
            "example": "2024-07-11T16:15"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_RoomStayStatus"
              }
            ],
            "description": "Room stay status\n New values will not be added (enum is frozen).\n- **New**: New\n- **CheckedIn**: Checked in\n- **CheckedOut**: Checked out\n- **Cancelled**: Cancelled",
            "example": "New"
          },
          "guestCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_GuestCount"
              }
            ],
            "description": "Number of guests",
            "nullable": true
          },
          "deposit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Information about deposit in the stay details",
            "nullable": true
          },
          "totalPrice": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_TotalPrice"
              }
            ],
            "description": "Total cost",
            "nullable": true
          },
          "amenities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsApi_Amenity"
            },
            "description": "Guest preference list",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Room stay details"
      },
      "PmsApi_RoomStayStatus": {
        "enum": [
          "New",
          "CheckedIn",
          "CheckedOut",
          "Cancelled"
        ],
        "type": "string",
        "description": "Room stay status\n New values will not be added (enum is frozen).\n- **New**: New\n- **CheckedIn**: Checked in\n- **CheckedOut**: Checked out\n- **Cancelled**: Cancelled"
      },
      "PmsApi_SavePaymentRequest": {
        "type": "object",
        "properties": {
          "actionDateTime": {
            "type": "string",
            "description": "Action date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time",
            "nullable": true,
            "example": "2024-07-11T14:00"
          },
          "pmsPaymentSystemId": {
            "type": "string",
            "description": "Payment system ID in PMS",
            "nullable": true,
            "example": "0oHjfSIZS0ng=="
          },
          "total": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Total amount",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "description": "Payment comment",
            "nullable": true,
            "example": "Payment for something"
          }
        },
        "additionalProperties": false,
        "description": "Request to process a payment"
      },
      "PmsApi_SetActualCheckInDateTimeRequest": {
        "type": "object",
        "properties": {
          "actualCheckInDateTime": {
            "type": "string",
            "description": "Actual check-in date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time",
            "nullable": true,
            "example": "2024-07-11T14:00"
          }
        },
        "additionalProperties": false,
        "description": "Request to set actual check-in time"
      },
      "PmsApi_SetActualCheckOutDateTimeRequest": {
        "type": "object",
        "properties": {
          "actualCheckOutDateTime": {
            "type": "string",
            "description": "Actual check-out date and time in ISO-8601 YYYY-MM-DDThh:mm format, Local time",
            "nullable": true,
            "example": "2024-07-11T14:00"
          }
        },
        "additionalProperties": false,
        "description": "Request to set actual check-out time"
      },
      "PmsApi_SetGuestBirthAddressRequest": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "ISO 3166-1 alpha-3 code of birth country",
            "nullable": true,
            "example": "ARG"
          }
        },
        "additionalProperties": false,
        "description": "Request to set guest’s country of birth"
      },
      "PmsApi_SetGuestPersonalDocumentRequest": {
        "type": "object",
        "properties": {
          "series": {
            "type": "string",
            "description": "Document series (1–64 alphanumeric)",
            "nullable": true,
            "example": "5000"
          },
          "number": {
            "type": "string",
            "description": "Document number (1–64 alphanumeric)",
            "nullable": true,
            "example": "999999"
          },
          "effectiveDate": {
            "type": "string",
            "description": "Issue date in ISO-8601 YYYY-MM-DD format",
            "nullable": true,
            "example": "2020-11-11"
          },
          "expiryDate": {
            "type": "string",
            "description": "Expiry date in ISO-8601 YYYY-MM-DD format",
            "nullable": true,
            "example": "2040-12-22"
          },
          "departmentCode": {
            "type": "string",
            "description": "Issuing authority subdivision code (max 16 chars)",
            "nullable": true,
            "example": "1234"
          },
          "issueAuthority": {
            "type": "string",
            "description": "Full issuing authority name (max 2048 chars)",
            "nullable": true,
            "example": "Some authority"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_PersonalDocumentType"
              }
            ],
            "description": "Document type (required parameter)\n New values can be added (enum is not frozen).\n- **ForeignPassport**: International passport\n- **InternationalPassportBiometric**: International passport with biometrics\n- **InternationalPassport**: International passport of a Russian Federation citizen\n- **TemporaryPassport**: Temporary passport\n- **BirthCertificate**: Birth certificate\n- **Diplomatic**: Diplomatic passport of a Russian Federation citizen\n- **BirthCertificateForeign**: Foreign birth certificate\n- **MilitaryOfficer**: Officer ID card\n- **ForeignPassportForeign**: International passport issued outside the Russian Federation\n- **Another**: Another identity document\n- **DiplomaticForeign**: Diplomatic passport of a foreign citizen\n- **TemporaryResidence**: Temporary residence permit for a foreign citizen\n- **Residence**: Residence permit of a foreign citizen\n- **TemporaryRefuge**: Certificate of temporary refuge on the territory of the Russian Federation\n- **Cis**: Identity card of a citizen of CIS member states\n- **WorkPassport**: Service passport\n- **ResidenceStateless**: Residence permit of a stateless person\n- **NationalPassport**: National foreign passport\n- **KazPassport**: Identity card of a citizen of the Republic of Kazakhstan\n- **ResidenceStatelessBiometric**: Residence permit of a stateless person with biometrics\n- **TemporaryResidenceStateless**: Temporary residence permit of a stateless person (stamp)\n- **TemporaryResidenceStatelessBlank**: Temporary residence permit of a stateless person (blank)\n- **Patent**: Patent\n- **DriverLicense**: Driver license\n- **PersonalCard**: Identity card\n- **Passport**: Passport",
            "example": "ForeignPassport"
          }
        },
        "additionalProperties": false,
        "description": "Request to set guest identity document details"
      },
      "PmsApi_SetRoomRequest": {
        "type": "object",
        "properties": {
          "roomId": {
            "type": "string",
            "description": "Room or suite identifier",
            "nullable": true,
            "example": "4503599627373585"
          }
        },
        "additionalProperties": false,
        "description": "Request to assign a room"
      },
      "PmsApi_SetRoomStayRoomRequest": {
        "type": "object",
        "properties": {
          "pmsRoomStayId": {
            "type": "string",
            "description": "Stay identifier in PMS",
            "nullable": true,
            "example": "4503599627373585"
          },
          "roomId": {
            "type": "string",
            "description": "Room or suite identifier",
            "nullable": true,
            "example": "4503599627373522"
          }
        },
        "additionalProperties": false,
        "description": "Request to set room for a stay"
      },
      "PmsApi_TotalPrice": {
        "type": "object",
        "properties": {
          "amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Total cost of stay, including extra services, early check-in and late check-out. Taxes are not included.",
            "nullable": true
          },
          "payAmount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Amount due for payment",
            "nullable": true
          },
          "refundAmount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PmsApi_Amount"
              }
            ],
            "description": "Amount for a refund",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Aggregated price details"
      },
      "PmsApi_Vat": {
        "required": [
          "applicable",
          "included",
          "percent"
        ],
        "type": "object",
        "properties": {
          "applicable": {
            "type": "boolean",
            "description": "Is VAT applicable?",
            "example": true
          },
          "included": {
            "type": "boolean",
            "description": "Is VAT included in the total price?",
            "example": false
          },
          "percent": {
            "type": "integer",
            "description": "VAT percentage",
            "format": "int32",
            "example": 20
          }
        },
        "additionalProperties": false,
        "description": "VAT details for amounts"
      },
      "PmsApi_VisitPurpose": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Purpose of visit identifier",
            "nullable": true,
            "example": "1"
          },
          "displayName": {
            "type": "string",
            "description": "Localized purpose name",
            "nullable": true,
            "example": "Business"
          }
        },
        "additionalProperties": false,
        "description": "Purpose of visit data"
      },
      "PmsAnalyticsApi_ApiResponse": {
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsAnalyticsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsAnalyticsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Standard API response container with warnings and errors"
      },
      "PmsAnalyticsApi_DailyOccupancy": {
        "required": [
          "arrivalCount",
          "closedRoomCount",
          "complimentaryOccupancyRoomCount",
          "date",
          "guestCount",
          "mealRevenue",
          "occupancyRate",
          "occupancyRoomCount",
          "revenue",
          "roomRevenue"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Calendar date for which statistics are reported (ISO-8601 format YYYY-MM-DD).",
            "format": "date",
            "example": "2025-01-15"
          },
          "occupancyRate": {
            "type": "number",
            "description": "Hotel occupancy rate\r\nExpressed as a decimal value between 0.0 and 1.0 (where 1.0 represents 100%).",
            "format": "double",
            "example": 0.85
          },
          "closedRoomCount": {
            "type": "integer",
            "description": "Number of rooms out of service for the date.\r\nIncludes rooms under repair or mothballed.",
            "format": "int32",
            "example": 7
          },
          "occupancyRoomCount": {
            "type": "integer",
            "description": "Total number of occupied rooms for the specified date.\r\nIncludes Revenue Rooms. Not includes Complimentary rooms.",
            "format": "int32",
            "example": 76
          },
          "complimentaryOccupancyRoomCount": {
            "type": "integer",
            "description": "Number of occupied rooms with zero cost of stay (Complimentary).",
            "format": "int32",
            "example": 3
          },
          "roomRevenue": {
            "type": "number",
            "description": "Net Room Revenue.\r\nExcludes VAT, applicable agency commissions, and the value of all add-on services. Bundled components (e.g.,\r\nbreakfast, parking, SPA) must be stripped out of the rate.",
            "format": "double",
            "example": 158000
          },
          "revenue": {
            "type": "number",
            "description": "Daily Gross Hotel Revenue.\r\nCalculated as: Room Revenue + Meal Revenue + revenue from miscellaneous departments (e.g., telephone, laundry, SPA).\r\nReflects the total operational cash flow.",
            "format": "double",
            "example": 195000
          },
          "mealRevenue": {
            "type": "number",
            "format": "double"
          },
          "arrivalCount": {
            "type": "integer",
            "description": "Number of actual check-ins for the given date.",
            "format": "int32",
            "example": 15
          },
          "guestCount": {
            "type": "integer",
            "description": "Total guest count (Adults + Children) staying at the hotel on the reporting date.",
            "format": "int32",
            "example": 120
          }
        },
        "additionalProperties": false,
        "description": "Daily occupancy statistics for a specific stay date"
      },
      "PmsAnalyticsApi_GetDailyOccupancyResponse": {
        "required": [
          "currencyCode",
          "propertyRoomCount"
        ],
        "type": "object",
        "properties": {
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsAnalyticsApi_ResponseError"
            },
            "description": "Non-critical issues",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsAnalyticsApi_ResponseError"
            },
            "description": "Errors",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Three-letter currency code (ISO-4217).",
            "nullable": true,
            "example": "RUB"
          },
          "propertyRoomCount": {
            "type": "integer",
            "description": "Total Inventory — the total number of rooms in the hotel according to the building specifications. A constant\r\nvalue that is independent of any repairs.",
            "format": "int32",
            "example": 90
          },
          "dailyOccupancies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsAnalyticsApi_DailyOccupancy"
            },
            "description": "Daily statistics."
          }
        },
        "additionalProperties": false,
        "description": "Daily occupancy statistics for a specific stay date"
      },
      "PmsAnalyticsApi_ResponseError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error or warning code",
            "nullable": true,
            "example": "11"
          },
          "message": {
            "type": "string",
            "description": "Human-readable description of the issue",
            "nullable": true,
            "example": "Incorrect dates format"
          }
        },
        "additionalProperties": false,
        "description": "Error or warning item with code and message"
      },
      "PmsIntegrationApi_BookedNightsCountRs": {
        "type": "object",
        "properties": {
          "stayUnits": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PmsIntegrationApi_Booking": {
        "required": [
          "bookingChannels",
          "id",
          "propertyId",
          "roomRevenues",
          "roomStays",
          "uniqueIds"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Internal identifier of this booking within PmsIntegrationStorage service.",
            "example": "606541"
          },
          "status": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingStatus"
          },
          "uniqueIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingUniqueId"
            },
            "description": "Identifiers assigned to this booking by external systems (PMS, channel manager, etc.).\r\nUse idContext to distinguish the source system."
          },
          "bookingChannels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingChannel"
            },
            "description": "Booking channels (agents, companies) associated with this booking."
          },
          "roomStays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingRoomStay"
            },
            "description": "Room stays within this booking."
          },
          "total": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingAmount"
          },
          "guaranteeInfo": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingGuaranteeInfo"
          },
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the property (hotel).",
            "example": "2490"
          },
          "pmsSideUpdateDateTime": {
            "type": "string",
            "description": "Date and time when the booking was updated in the PMS system (not in this storage) in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone).",
            "format": "date-time",
            "example": "2024-03-27T16:45:00"
          },
          "pmsSideCreateDateTime": {
            "type": "string",
            "description": "Date and time when the booking was created in the PMS system in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone).",
            "format": "date-time",
            "example": "2024-03-20T10:30:00"
          },
          "updateDateTime": {
            "type": "string",
            "description": "Timestamp of the last update of this record in the storage in ISO-8601 yyyy-MM-dd'T'HH:mm:ssZ format (UTC).",
            "format": "date-time",
            "example": "2024-03-27T13:45:00Z"
          },
          "cancellationInfo": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingCancellationInfo"
          },
          "roomRevenues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingRoomRevenue"
            },
            "description": "Daily room revenue breakdown."
          }
        },
        "additionalProperties": false,
        "description": "PMS booking (reservation)."
      },
      "PmsIntegrationApi_BookingAgeQualifyingCode": {
        "enum": [
          "AdultBed",
          "ChildBandBed"
        ],
        "type": "string",
        "description": "Age qualifying code for guest count.\r\nOpen — new values may be added in future versions.",
        "example": "AdultBed"
      },
      "PmsIntegrationApi_BookingAmount": {
        "required": [
          "currencyCode"
        ],
        "type": "object",
        "properties": {
          "amountAfterTax": {
            "type": "number",
            "description": "Total amount after tax. Decimal number with up to 2 fractional digits.",
            "format": "double",
            "example": 15000
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Currency code in ISO-4217 format, e.g., USD, CAD.",
            "example": "USD"
          }
        },
        "additionalProperties": false,
        "description": "Monetary amount with currency."
      },
      "PmsIntegrationApi_BookingCancellationInfo": {
        "type": "object",
        "properties": {
          "pmsSideCancelDateTime": {
            "type": "string",
            "description": "Date and time when the booking was cancelled in the PMS system in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone).",
            "format": "date-time",
            "example": "2024-03-25T09:00:00"
          },
          "cancelReason": {
            "type": "string",
            "description": "Reason for cancellation.",
            "nullable": true,
            "example": "Guest request"
          }
        },
        "additionalProperties": false,
        "description": "Cancellation details for a cancelled booking."
      },
      "PmsIntegrationApi_BookingChannel": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Channel code from PMS.",
            "nullable": true,
            "example": "TA001"
          },
          "codeType": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingChannelCodeType"
          },
          "name": {
            "type": "string",
            "description": "Human-readable channel name.",
            "nullable": true,
            "example": "Booking.com"
          },
          "bookingChannelType": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingChannelType"
          }
        },
        "additionalProperties": false,
        "description": "Booking channel — agent or company associated with the booking."
      },
      "PmsIntegrationApi_BookingChannelCodeType": {
        "enum": [
          "Unknown",
          "Pms"
        ],
        "type": "string",
        "description": "Type of booking channel code.\r\nOpen — new values may be added in future versions.",
        "example": "Pms"
      },
      "PmsIntegrationApi_BookingChannelType": {
        "enum": [
          "Unknown",
          "TravelAgent",
          "Company"
        ],
        "type": "string",
        "description": "Type of booking channel.\r\nOpen — new values may be added in future versions.",
        "example": "TravelAgent"
      },
      "PmsIntegrationApi_BookingGuaranteeInfo": {
        "type": "object",
        "properties": {
          "guaranteeCode": {
            "type": "string",
            "description": "Guarantee type code from PMS.",
            "nullable": true,
            "example": "CC"
          }
        },
        "additionalProperties": false,
        "description": "Guarantee information for the booking."
      },
      "PmsIntegrationApi_BookingGuestCount": {
        "type": "object",
        "properties": {
          "ageQualifyingCode": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingAgeQualifyingCode"
          },
          "count": {
            "type": "integer",
            "description": "Number of guests in this age category.",
            "format": "int32",
            "example": 2
          },
          "age": {
            "type": "integer",
            "description": "Age of the guest. Applicable for children, null for adults.",
            "format": "int32",
            "nullable": true,
            "example": 5
          }
        },
        "additionalProperties": false,
        "description": "Guest count by age qualifying category."
      },
      "PmsIntegrationApi_BookingInventoryBlock": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Ordinal index within the parent room stay. Used for cross-referencing by BookingRoomRate.",
            "format": "int32",
            "example": 0
          },
          "pmsSideCode": {
            "type": "string",
            "description": "Inventory block code from PMS.",
            "nullable": true,
            "example": "GRP-2024"
          }
        },
        "additionalProperties": false,
        "description": "Inventory block (allotment) within a room stay."
      },
      "PmsIntegrationApi_BookingRatePlan": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Ordinal index within the parent room stay. Used for cross-referencing by BookingRoomRate.",
            "format": "int32",
            "example": 0
          },
          "pmsSideCode": {
            "type": "string",
            "description": "Rate plan code from PMS.",
            "nullable": true,
            "example": "BAR"
          }
        },
        "additionalProperties": false,
        "description": "Rate plan within a room stay."
      },
      "PmsIntegrationApi_BookingRoomRate": {
        "type": "object",
        "properties": {
          "stayDate": {
            "type": "string",
            "description": "Date of stay for this rate in ISO-8601 yyyy-MM-dd format, property local time.",
            "format": "date",
            "example": "2024-03-28"
          },
          "roomTypeIndex": {
            "type": "integer",
            "description": "References BookingRoomStay.RoomTypes element by its Index.",
            "format": "int32",
            "example": 0
          },
          "ratePlanIndex": {
            "type": "integer",
            "description": "References BookingRoomStay.RatePlans element by its Index.",
            "format": "int32",
            "example": 0
          },
          "inventoryBlockIndex": {
            "type": "integer",
            "description": "References BookingRoomStay.InventoryBlocks element by its Index. Null if no inventory block.",
            "format": "int32",
            "nullable": true
          },
          "total": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingAmount"
          }
        },
        "additionalProperties": false,
        "description": "Daily rate for a specific room type and rate plan combination."
      },
      "PmsIntegrationApi_BookingRoomRevenue": {
        "type": "object",
        "properties": {
          "stayDate": {
            "type": "string",
            "description": "Date of stay in ISO-8601 yyyy-MM-dd format, property local time.",
            "format": "date",
            "example": "2024-03-28"
          },
          "amount": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingAmount"
          }
        },
        "additionalProperties": false,
        "description": "Daily revenue for a room stay date."
      },
      "PmsIntegrationApi_BookingRoomShare": {
        "required": [
          "roomShareCode"
        ],
        "type": "object",
        "properties": {
          "roomShareCode": {
            "minLength": 1,
            "type": "string",
            "description": "PMS-side identifier of the room-share group.",
            "example": "30014"
          },
          "isPrimaryRoomShare": {
            "type": "boolean",
            "description": "True if this booking is the primary booking in the room-share group.",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Shared-room information when the booking is part of a room-share group in the PMS.\r\nMultiple bookings sharing the same physical room have the same RoomShareCode."
      },
      "PmsIntegrationApi_BookingRoomStay": {
        "required": [
          "guestCounts",
          "inventoryBlocks",
          "ratePlans",
          "roomRates",
          "roomTypes",
          "services"
        ],
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Ordinal number of this room stay within the booking.",
            "format": "int32",
            "example": 1
          },
          "sourceOfBusiness": {
            "type": "string",
            "description": "Source of business / marketing source code from PMS.",
            "nullable": true,
            "example": "WEB"
          },
          "marketCode": {
            "type": "string",
            "description": "Market segment code from PMS.",
            "nullable": true,
            "example": "LEISURE"
          },
          "roomTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingRoomType"
            },
            "description": "Room types associated with this stay."
          },
          "ratePlans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingRatePlan"
            },
            "description": "Rate plans associated with this stay."
          },
          "inventoryBlocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingInventoryBlock"
            },
            "description": "Inventory blocks (allotments) associated with this stay."
          },
          "roomRates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingRoomRate"
            },
            "description": "Daily rate breakdown for this stay."
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingService"
            },
            "description": "Additional services (extras) attached to this stay."
          },
          "guestCounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_BookingGuestCount"
            },
            "description": "Guest count breakdown by age category."
          },
          "stayDates": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingStayDates"
          },
          "roomShare": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingRoomShare"
          }
        },
        "additionalProperties": false,
        "description": "A single room stay within a booking."
      },
      "PmsIntegrationApi_BookingRoomType": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Ordinal index within the parent room stay. Used for cross-referencing by BookingRoomRate.",
            "format": "int32",
            "example": 0
          },
          "pmsSideCode": {
            "type": "string",
            "description": "Room type code from PMS.",
            "nullable": true,
            "example": "STD"
          },
          "pmsSideRoomNumber": {
            "type": "string",
            "description": "Physical room number/identifier assigned in PMS (e.g. \"301\", \"0406\"). Null if not available.",
            "nullable": true,
            "example": "301"
          }
        },
        "additionalProperties": false,
        "description": "Room type within a room stay."
      },
      "PmsIntegrationApi_BookingRs": {
        "type": "object",
        "properties": {
          "booking": {
            "$ref": "#/components/schemas/PmsIntegrationApi_Booking"
          }
        },
        "additionalProperties": false,
        "description": "Response containing booking data."
      },
      "PmsIntegrationApi_BookingService": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "integer",
            "description": "Quantity of the service.",
            "format": "int32",
            "example": 1
          },
          "pmsSideCode": {
            "type": "string",
            "description": "Service code from PMS.",
            "nullable": true,
            "example": "BRKF"
          },
          "name": {
            "type": "string",
            "description": "Human-readable service name.",
            "nullable": true,
            "example": "Breakfast"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the service in ISO-8601 yyyy-MM-dd, property local time.",
            "format": "date",
            "example": "2024-03-27"
          },
          "durationStayUnits": {
            "type": "integer",
            "description": "Service duration in stay units.",
            "format": "int32",
            "example": 3
          },
          "total": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingAmount"
          },
          "inclusive": {
            "type": "boolean",
            "description": "Whether the service is included in the room rate.",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Additional service (extra) attached to a room stay."
      },
      "PmsIntegrationApi_BookingStatus": {
        "enum": [
          "Unknown",
          "Confirmed",
          "Waitlisted",
          "InHouse",
          "CheckedOut",
          "Cancelled"
        ],
        "type": "string",
        "description": "Booking status.\r\nOpen — new values may be added in future versions.",
        "example": "Confirmed"
      },
      "PmsIntegrationApi_BookingStayDates": {
        "type": "object",
        "properties": {
          "arrivalDateTime": {
            "type": "string",
            "description": "Arrival date and time in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone).",
            "format": "date-time",
            "example": "2024-03-27T14:00:00"
          },
          "departureDateTime": {
            "type": "string",
            "description": "Departure date and time in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone).",
            "format": "date-time",
            "example": "2024-03-30T12:00:00"
          },
          "actualCheckInDateTime": {
            "type": "string",
            "description": "Actual check-in date and time in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone). Null if not yet checked in.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-27T14:15:00"
          },
          "actualCheckOutDateTime": {
            "type": "string",
            "description": "Actual check-out date and time in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone). Null if not yet checked out.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-30T11:30:00"
          }
        },
        "additionalProperties": false,
        "description": "Arrival and departure dates for a room stay."
      },
      "PmsIntegrationApi_BookingUniqueId": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier value.",
            "nullable": true,
            "example": "RES-12345"
          },
          "idContext": {
            "$ref": "#/components/schemas/PmsIntegrationApi_BookingUniqueIdContext"
          }
        },
        "additionalProperties": false,
        "description": "Unique identifier of the booking in an external system."
      },
      "PmsIntegrationApi_BookingUniqueIdContext": {
        "enum": [
          "Unknown",
          "Pms",
          "Internal",
          "External"
        ],
        "type": "string",
        "description": "Context identifying the source system of a booking unique identifier.\r\nOpen — new values may be added in future versions.",
        "example": "Pms"
      },
      "PmsIntegrationApi_DailyInventoryBlock": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date of the inventory block allocation in ISO-8601 yyyy-MM-dd format, property local time.",
            "format": "date",
            "example": "2026-03-15"
          },
          "roomTypeCode": {
            "type": "string",
            "description": "Room type code in the PMS system.",
            "nullable": true,
            "example": "DBL"
          },
          "blockedCount": {
            "type": "integer",
            "description": "Number of rooms blocked (allocated) for this date.",
            "format": "int32",
            "example": 10
          },
          "realizedCount": {
            "type": "integer",
            "description": "Number of rooms realized from the block for this date. Null if not tracked.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "cutoffDate": {
            "type": "string",
            "description": "Cutoff date after which unsold rooms are released in ISO-8601 yyyy-MM-dd format, property local time. Null if not set.",
            "format": "date",
            "nullable": true
          },
          "pricing": {
            "$ref": "#/components/schemas/PmsIntegrationApi_DailyInventoryBlockPricing"
          }
        },
        "additionalProperties": false,
        "description": "Daily breakdown item of an inventory block."
      },
      "PmsIntegrationApi_DailyInventoryBlockPricing": {
        "required": [
          "currencyCode"
        ],
        "type": "object",
        "properties": {
          "oneAdultPrice": {
            "type": "number",
            "description": "Price per room for one adult.",
            "format": "double",
            "nullable": true,
            "example": 5500
          },
          "servicesPrice": {
            "type": "number",
            "description": "Total price of additional services per room.",
            "format": "double",
            "nullable": true,
            "example": 1200
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Currency code in ISO-4217 format, e.g., USD, EUR.",
            "example": "USD"
          }
        },
        "additionalProperties": false,
        "description": "Pricing information for a daily inventory block item."
      },
      "PmsIntegrationApi_DailyRoomTypeInventory": {
        "type": "object",
        "properties": {
          "roomTypeCode": {
            "type": "string",
            "description": "Room type code in the PMS system.",
            "nullable": true,
            "example": "DBL"
          },
          "date": {
            "type": "string",
            "description": "Date of the inventory record in ISO-8601 yyyy-MM-dd format, property local time.",
            "format": "date",
            "example": "2026-03-15"
          },
          "physicalRoomCount": {
            "type": "integer",
            "description": "Total number of physical rooms of this type.",
            "format": "int32",
            "example": 50
          },
          "availableRoomCount": {
            "type": "integer",
            "description": "Number of rooms available for booking.",
            "format": "int32",
            "example": 25
          },
          "outOfOrderRoomCount": {
            "type": "integer",
            "description": "Number of rooms out of order (not available for booking due to maintenance, etc.).",
            "format": "int32",
            "example": 2
          },
          "updateDateTime": {
            "type": "string",
            "description": "Timestamp of the last update of this record in the storage in ISO-8601 yyyy-MM-dd'T'HH:mm:ssZ format (UTC).",
            "format": "date-time",
            "example": "2026-03-15T14:30:00Z"
          }
        },
        "additionalProperties": false,
        "description": "Daily inventory data for a specific room type."
      },
      "PmsIntegrationApi_Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable error code.",
            "nullable": true,
            "example": "INVALID_PROPERTY_ID"
          },
          "message": {
            "type": "string",
            "description": "Human-readable error description.",
            "nullable": true,
            "example": "Invalid propertyId"
          }
        },
        "additionalProperties": false,
        "description": "Error details."
      },
      "PmsIntegrationApi_ErrorRs": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_Error"
            },
            "description": "List of errors.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Error response."
      },
      "PmsIntegrationApi_InventoryBlock": {
        "required": [
          "dailyItems",
          "id",
          "propertyId",
          "ratePlanCodes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Internal identifier of this inventory block within PmsIntegrationStorage service.",
            "example": "12345"
          },
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the property (hotel).",
            "example": "2490"
          },
          "pmsSideId": {
            "type": "string",
            "description": "Identifier of this block on the PMS side.",
            "nullable": true,
            "example": "BLK-001"
          },
          "pmsSideCode": {
            "type": "string",
            "description": "Code of this block on the PMS side. Null if not available.",
            "nullable": true,
            "example": "QUOTA-2024"
          },
          "updateDateTime": {
            "type": "string",
            "description": "Timestamp of the last update of this record in the storage in ISO-8601 yyyy-MM-dd'T'HH:mm:ssZ format (UTC).",
            "format": "date-time",
            "example": "2026-03-15T14:30:00Z"
          },
          "pmsSideCreateDateTime": {
            "type": "string",
            "description": "Date and time when the block was created in the PMS system in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone).",
            "format": "date-time",
            "example": "2026-02-15T10:00:00"
          },
          "pmsSideCancelDateTime": {
            "type": "string",
            "description": "Date and time of block cancellation in the PMS system in ISO-8601 yyyy-MM-dd'T'HH:mm:ss format, property local time (no timezone). Null if not cancelled.",
            "format": "date-time",
            "nullable": true,
            "example": "2026-03-20T08:00:00"
          },
          "ratePlanCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Rate plan codes associated with this block."
          },
          "blockStatus": {
            "$ref": "#/components/schemas/PmsIntegrationApi_InventoryBlockStatus"
          },
          "pmsBlockStatus": {
            "type": "string",
            "description": "Raw block status code as received from the PMS (e.g. \"DEF\", \"ACT\", \"INQ\", \"CAN\"). Null if not provided.",
            "nullable": true,
            "example": "DEF"
          },
          "dailyItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_DailyInventoryBlock"
            },
            "description": "Daily breakdown of the inventory block."
          }
        },
        "additionalProperties": false,
        "description": "Inventory block (quota block) data."
      },
      "PmsIntegrationApi_InventoryBlockRs": {
        "type": "object",
        "properties": {
          "inventoryBlock": {
            "$ref": "#/components/schemas/PmsIntegrationApi_InventoryBlock"
          }
        },
        "additionalProperties": false,
        "description": "Response containing inventory block data."
      },
      "PmsIntegrationApi_InventoryBlockStatus": {
        "enum": [
          "Unknown",
          "Inquiry",
          "Active",
          "Cancelled"
        ],
        "type": "string",
        "description": "Status of an inventory block.\r\nOpen — new values may be added in future versions.",
        "example": "Inquiry"
      },
      "PmsIntegrationApi_SearchInventoryRequest": {
        "required": [
          "endDate",
          "roomTypeCodes",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "roomTypeCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Room type codes to filter by (PMS codes).",
            "example": [
              "DBL",
              "SGL"
            ]
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the search range (inclusive) in ISO-8601 yyyy-MM-dd format, property local time. Maximum date range is 2 years.",
            "format": "date",
            "example": "2026-01-01"
          },
          "endDate": {
            "type": "string",
            "description": "End date of the search range (inclusive) in ISO-8601 yyyy-MM-dd format, property local time. Maximum date range is 2 years.",
            "format": "date",
            "example": "2026-12-31"
          }
        },
        "additionalProperties": false,
        "description": "Search filters for inventory query."
      },
      "PmsIntegrationApi_SearchInventoryResult": {
        "required": [
          "inventories",
          "propertyId"
        ],
        "type": "object",
        "properties": {
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the property (hotel).",
            "example": "2490"
          },
          "inventories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PmsIntegrationApi_DailyRoomTypeInventory"
            },
            "description": "Daily room type inventory records matching the search criteria."
          }
        },
        "additionalProperties": false,
        "description": "Inventory search result containing property inventory data."
      },
      "PmsIntegrationApi_SearchInventoryRs": {
        "type": "object",
        "properties": {
          "inventory": {
            "$ref": "#/components/schemas/PmsIntegrationApi_SearchInventoryResult"
          }
        },
        "additionalProperties": false,
        "description": "Response containing inventory search results."
      }
    },
    "parameters": {},
    "responses": {},
    "requestBodies": {},
    "headers": {},
    "securitySchemes": {
      "ContentApi_ApiKey": {
        "type": "apiKey",
        "name": "X-API-KEY",
        "in": "header"
      },
      "ContentApi_oAuth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://connect.hopenapi.com/auth/token",
            "scopes": {}
          }
        }
      },
      "ReferenceDataApi_ApiKey": {
        "type": "apiKey",
        "name": "X-API-KEY",
        "in": "header"
      },
      "ReferenceDataApi_oAuth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://connect.hopenapi.com/auth/token",
            "scopes": {}
          }
        }
      },
      "ReservationApi_oauth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://connect.hopenapi.com/auth/token",
            "scopes": {}
          }
        }
      },
      "SearchApi_ApiKey": {
        "type": "apiKey",
        "name": "X-API-KEY",
        "in": "header"
      },
      "SearchApi_oAuth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://connect.hopenapi.com/auth/token",
            "scopes": {}
          }
        }
      },
      "PmsApi_Bearer": {
        "type": "http",
        "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "PmsAnalyticsApi_Bearer": {
        "type": "http",
        "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "PmsIntegrationApi_oAuth2": {
        "type": "oauth2",
        "description": "Put Client credentials",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://connect.hopenapi.com/auth/token",
            "scopes": {}
          }
        }
      },
      "PmsIntegrationApi_Bearer": {
        "type": "http",
        "description": "Put JWT Bearer token",
        "scheme": "Bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "tags": [
    {
      "name": "Authorization",
      "description": "## Before you start\n\nTo use the API, you must obtain an access token (`access_token`). Access tokens are issued based on the `client_id` and `client_secret` credentials.\n\nYou can obtain these credentials through a property integration.\n\nThe hotelier creates an API integration in the Exely account and provides you with the `client_id` and `client_secret` credentials. For more information, see [Integration through the property](/dev-portal/docs/connect/hotel).\n\nOnce you have obtained your credentials, send a request to the authorization endpoint. The response will include an access token (`access_token`).\n\nInclude `access_token` in the `Authorization` header of every API request:\n\n```http\nAuthorization: Bearer <access_token>\n```\n\nAuthorization is performed using [OAuth2.0](https://oauth.net/2/).\n\nOAuth 2.0 is a standard protocol that allows applications to obtain access to data.\n\nTo access the API, include an access token in each request. The token is issued in the JSON Web Token (JWT) format. \n\nJWT (JSON Web Token) is a secure, compact format for transmitting information between a client and a server.\n\nAccess tokens are obtained using **Client credentials flow**, which requires authorization using a client secret. \nTo request an access token, the following parameters are required:\n\n- **client_id**,  \n- **client_secret**.\n\n## Interaction flow\n\n![alt text](/dev-portal/img/auth-token.png)\n\nExely. Authorization server: https://connect.hopenapi.com/auth/token\n\n## Access token\n\n### Rate limits\n\n- 3 requests per second,  \n- 15 requests per minute,  \n- 300 requests per hour per IP address.  \n\n### Token lifetime\n\nAccess tokens are valid for 15 minutes.\n\nToken refresh is not supported. Once the token expires, obtain a new access token through the authorization endpoint.\n\n### Authorization endpoint\n\n- **Production**: [https://connect.hopenapi.com/auth/token](https://connect.hopenapi.com/auth/token)  \n\nDecoded token example:\n```plaintext\neyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2OGZjOHRNUGFSUHRyRHYtVHV2WEpncUNGTE1CVGRheTBpQkdJSUE3amxvIn0.eyJleHAiOjE2OTg5MTYwMzYsImlhdCI6MTY5ODkxNTEzNiwianRpIjoiYTJjZGJhMGQtYzQwNy00OWRmLThiNGQtOTJhNTM1NWQxYTFmIiwiaXNzIjoiaHR0cHM6Ly9wYXJ0bmVyLnRsaW50ZWdyYXRpb24uY29tL2F1dGgvcmVhbG1zL1BhcnRuZXJBcGkiLCJhdWQiOiJUcmF2ZWxMaW5lLlBhcnRuZXJBUEkiLCJzdWIiOiI4NmE0YjZiZS0wYTc0LTRjYjktYjNhYi1iNDYyZWUwYmIyYmQiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJwYTMiLCJzY29wZSI6IiIsImFwaV9hY2Nlc3NlcyI6WyJjb250ZW50Il19.Nz6dyaHGyIN5IKv30oM-HrqdQBqaGdzEFrk7ACUWbfvsNCHNowg96iJrGwQbkOUSVPtQJF9Cwf1_jywP6c2UPHclzBIDp9HTsYdVM5QS_k9ecs0GCiI8ACBqld3yatY4dJz3MRkxnU_rp0NbJJQ-uBcmg_9UCSCIc3mKR7UAosr5XOXeb4ckrFd67DK5xfofT0ykE46Qkc6nvev3AGx11fPAVsFnmmPOSnlpQzJTI7XBWbD120q5fDdksVlaiq3YoBueDEeOPFH08Ia6xdTVjIf_zsyOEKt2N8_7BTyWG_3YPThBbgn-eAgybSdeop6_eCrWTfQvX5g8qtR2e9J32A\n```\n\nYou can decode the token using [JWT.IO](https://jwt.io/).  \n\n### Decoded token example  \n\n**Request body:**  \n\n```json\n{\n  \"exp\": 1698916036,\n  \"iat\": 1698915136,\n  \"jti\": \"a2cdba0d-c407-49df-8b4d-92a5355d1a1f\",\n  \"iss\": \"https://connect.hopenapi.com/auth/realms/PartnerApi\",\n  \"aud\": \"Exely.ConnectApi\",\n  \"sub\": \"86a4b6be-0a74-4cb9-b3ab-b462ee0bb2bd\",\n  \"typ\": \"Bearer\",\n  \"azp\": \"pa3\",\n  \"scope\": \"\",\n  \"api_accesses\": [\n    \"content\"\n  ]\n}\n```\n**Note*: Refresh tokens are not used.\n\n## Recommendations\n\n1. **Cache the access token on the client side** and reuse it in subsequent requests.  \n\n2. **Use OAuth 2.0 libraries:**  \n\n   - **.NET:**  \n     [IdentityModel](https://identitymodel.readthedocs.io/en/latest/client/overview.html)  \n     `Microsoft.Extensions.DependencyInjection`  \n\n   - **JavaScript:**  \n     [oidc-client](https://www.npmjs.com/package/oidc-client?activeTab=readme)  \n     [oidc-client-js Wiki](https://github.com/IdentityModel/oidc-client-js/wiki)  \n\n   - **PHP:**  \n     [OpenID-Connect-PHP](https://github.com/jumbojett/OpenID-Connect-PHP)  \n\n   - **cURL:**  \n     ```bash\n     curl -L -X POST \"https://connect.hopenapi.com/auth/token\" \\\n     -H \"Content-Type: application/x-www-form-urlencoded\" \\\n     -d \"grant_type=client_credentials\" \\\n     -d \"client_id=XXXXXXXXXXXX\" \\\n     -d \"client_secret=XXXXXXXXXXXX\"\n     ```"
    },
    {
      "name": "Rate limits",
      "description": "To ensure the stability of the service, we apply limits to the number of API requests. If a limit is exceeded, the API returns a `429 Too Many Requests` error and the request is not processed.\n\nUnless otherwise specified, limits are applied separately to each API client. All requests made by the same client are counted against the same limit, regardless of the IP address or the number of access tokens used.\n\nRequest limits define the maximum number of requests that can be made per second, minute, or hour. For each incoming request, the system evaluates the number of requests made during the corresponding time window immediately preceding that request. For example, if the limit is set to `50 requests per second`, the 51st request sent within the same second will be rejected. Requests can be made again once the number of requests made during the last second falls below the set limit. The same principle applies to per-minute and per-hour limits.\n\n| API | Description | Limits |\n|-----|-------------|--------|\n| Standard API limits | All API methods that do not have dedicated limits | 50 requests per second, 200 requests per minute, 3,000 requests per hour |\n| PMS Integration Storage API | All API methods | 50 requests per second, 1,200 requests per minute, 30,000 requests per hour |\n| Read Reservation API | Retrieve a list of bookings | 3 requests per second, 100 requests per minute, 3,000 requests per hour |\n| Read Reservation API | Retrieve booking details | 10 requests per second, 200 requests per minute, 4,000 requests per hour |\n| Search API | Search for accommodation options by the lowest available price | 3 requests per second, 20 requests per minute, 900 requests per hour |\n| Search API | Retrieve accommodation options | 50 requests per second, 200 requests per minute, 1,000 requests per hour |\n| Search API | Retrieve accommodation options with extra services, early check-in, or late check-out | 10 requests per second, 50 requests per minute, 500 requests per hour |\n| Search API | Retrieve extra services, early check-in, or late check-out options | 10 requests per second, 100 requests per minute, 1,000 requests per hour |\n\n## Monitor limits through headers\n\nEach API response returns headers that help you track the remaining number of requests:\n\n- `x-ratelimit-remaining-hour` - number of remaining requests within one hour from the time the request was sent\n- `x-ratelimit-remaining-minute` - number of remaining requests within one minute from the time the request was sent\n- `x-ratelimit-remaining-second` - number of remaining requests within one second from the time the request was sent\n- `retry-after` is returned with the `429 Too Many Requests` error and specifies the time in seconds after which the request can be retried"
    },
    {
      "name": "Error codes",
      "description": "| Error code | Message             | Description                                                                                    |\n|------------|---------------------|-----------------------------------------------------------------------------------------------|\n| 400        | Bad Request         | The request contains errors. For example, required headers are missing or parameter values are invalid. |\n| 401        | Unauthorized        | This error may occur if the OAuth token is missing, invalid, or expired. In the latter case, obtain a new token. |\n| 403        | Forbidden           | The user does not have access to specific API methods.                                         |\n| 404        | Not Found           | The requested resource does not exist or is outdated. Check the request URL.                       |\n| 429        | Too Many Requests   | The requests-per-second (RPS) limit has been exceeded. Make sure you're not sending unnecessary requests.                |\n| 500        | Internal Server Error | Internal server error. Try again later.                                           |\n| 503        | Service Unavailable | The server is overloaded. Try again later.                                                    |"
    },
    {
      "name": "ExtraStayRules",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Content%20API%20V1)\n\nThe early check-in and late check-out rules allow properties to set surcharges for early check-in and late check-out. \nThese rules are applied to selected rate plans through `extraStayRuleId`.\n\nThe \"Check-in and check-out\" setting defines the standard check-in and check-out times that do not require an extra charge.\n\nThese rules allow properties to apply surcharges for specific time periods between the early check-in/late \ncheck-out time and the standard check-in/check-out time.\n\n### Surcharge calculation methods\n\n- `Free`: free of charge\n- `Fixed`: fixed rate\n- `Percent`: percentage of the daily rate\n- `HourlyRate`: hourly fixed rate\n- `HourlyRateAutoCalculated`: hourly auto-calculated price\n- `Forbidden`: no early check-in/late check-out\n\n`Fixed` and `HourlyRate` allow multiple rates to be set in different currencies.\n\n`Percent` allows setting a surcharge percentage and additional parameters:\n\n- `extraPlacementEnabled`: `'true'` if a surcharge is applied for an extra guest, `'false'` if no surcharge is applied for an extra guest\n- `extraServiceOption`: extra services with the `[None, All, MealOnly]` surcharge\n\n`OccupyQuota` specifies whether room availability is guaranteed for an extra stay.\n\n- `true`: room availability is guaranteed\n- `false`: room availability is not guaranteed, even if the extra stay is prepaid\n\n### Endpoint\n\n```\nGET /v1/properties/{propertyId}/extra-stay-rules\n```\nRetrieves early check-in and late check-out rules\n\n**Parameters:**\n\n- `propertyId` *(string, path)*: Property ID\n\n**Example:**\n\n```json\nGET /v1/properties/7291/extra-stay-rules\n\n{\n  \"extraStayRules\": [\n    {\n      \"id\": \"519845\",\n      \"propertyId\": \"7291\",\n      \"checkInTime\": \"13:00\",\n      \"overridesPropertyCheckInTime\": false,\n      \"earlyCheckInPeriods\": [\n        {\n          \"startTime\": \"00:00\",\n          \"endTime\": \"09:00\",\n          \"chargeType\": \"Forbidden\",\n          \"rates\": [],\n          \"occupyQuota\": false\n        },\n        {\n          \"startTime\": \"09:00\",\n          \"endTime\": \"13:00\",\n          \"chargeType\": \"Percent\",\n          \"rates\": [],\n          \"percentOptions\": {\n            \"percentage\": 0,\n            \"extraPlacementEnabled\": false,\n            \"extraServiceOption\": \"MealOnly\"\n          },\n          \"occupyQuota\": false\n        }\n      ],\n      \"checkOutTime\": \"12:00\",\n      \"overridesPropertyCheckOutTime\": true,\n      \"lateCheckOutPeriods\": [\n        {\n          \"startTime\": \"12:00\",\n          \"endTime\": \"16:00\",\n          \"chargeType\": \"Fixed\",\n          \"rates\": [\n            {\n              \"currency\": \"EUR\",\n              \"rate\": 20\n            }\n          ],\n          \"occupyQuota\": false\n        },\n        {\n          \"startTime\": \"16:00\",\n          \"endTime\": \"24:00\",\n          \"chargeType\": \"Forbidden\",\n          \"rates\": [],\n          \"occupyQuota\": false\n        }\n      ]\n    }\n  ]\n}\n```"
    },
    {
      "name": "CancellationRules",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Content%20API%20V1)\n\nBooking cancellation rules are set by the property to define the period when free cancellation is available, \nas well as the penalty for late cancellation. These rules are applied to selected rate plans through `cancellationRuleId`.\n\nA rule can take effect starting from one of the following reference times:\n\n- **ProviderArrivalTime**: Standard check-in time. For example, if the check-in time is set to 14:00, \nfree cancellation is available until 14:00 on the day before check-in.\n\n- **ProviderDepartureTime**: Standard check-out time. The cancellation period is calculated based on the property's standard \ncheck-out time applied to the check-in date. For example, if the property check-out time is set to 12:00, \nfree cancellation is available until 12:00 on the day before check-in.\n\n- **GuestArrivalTime**: Check-in time selected by the guest when booking. For example, \nif the standard check-in time is 14:00, but the guest selects 16:00, free cancellation is available \nuntil 16:00 on the day before check-in. If guests cannot select a check-in time, the standard check-in time is applied.\n\n- **CustomArrivalTime**: Custom time from which the cancellation rule calculation starts. \nThe time is specified in the `referencePointTime` field using the property's time zone.\n\n- **BookingCreationTime**: The time (but not the date) when the guest made the booking. \nFor example, if the check-in time is set to 14:00 and the guest made a booking at 09:00, free cancellation \nis available until 09:00 on the day before check-in.\n\n### Penalty for a specific period\n\nA penalty is set using a time frame that includes time units and a period before the reference time.\n\n- **Time units**:\n\n  - `None`: Not specified, used only with the `NoMatter` period\n  - `Day`: Days\n  - `Hour`: Hours\n\n- **Period before the reference time**:\n  - `NoMatter`: Does not depend on a specific time\n  - `AtLeast`: Greater than or equal to `beforeArrivalValue`.\n  - `NoMoreThan`: Less than or equal to `beforeArrivalValue`.\n  - `Between`: Within the range from `beforeArrivalValue` to `beforeArrivalValueMax`.\n\n### Penalty calculation methods\n\n- `NoPenalty`: No penalty is applied\n- `FirstNightPercent`: The penalty is a specified percentage of the first night's cost\n- `PrepaymentPercent`: The penalty is a specified percentage of the prepayment amount\n- `FirstNights`: The penalty equals the full cost of the first N nights\n\nThe penalty for the selected calculation method is specified as a numeric value and currency.\n\nThe rule validity period can be set by selecting check-in dates in the property's time zone. The period \nincludes both the start and end dates. If the end date is not specified, it can be set to \"Not limited\", \nwhich corresponds to `isEndless = true`.\n\nIf the rule does not contain cancellation terms, cancellation is free of charge.\n\n### Endpoint\n\n```\nGET /v1/properties/{propertyId}/cancellation-rules\n```\nRetrieves booking cancellation rules\n\n**Parameters:**\n\n- `propertyId` *(string, path)*: Property ID\n\n**Example:**\n\n```json\nGET /v1/properties/7291/cancellation-rules\n\n{\n  \"cancellationRules\": [\n    {\n      \"id\": \"556875\",\n      \"propertyId\": \"7291\",\n      \"referencePointKind\": \"CustomArrivalTime\",\n      \"referencePointTime\": \"10:57\",\n      \"cancellationTerms\": [\n        {\n          \"beforeArrivalMatching\": \"Between\",\n          \"beforeArrivalUnit\": \"Day\",\n          \"beforeArrivalValue\": 1,\n          \"beforeArrivalValueMax\": 3,\n          \"penaltyCalculationMethod\": \"PrepaymentPercent\",\n          \"penaltyValue\": 10,\n          \"penaltyValueCurrency\": \"EUR\",\n          \"arrivalDates\": [\n            {\n              \"startDate\": \"2024-07-11\",\n              \"endDate\": \"2024-07-11\",\n              \"isEndless\": true\n            }\n          ]\n        },\n        {\n          \"beforeArrivalMatching\": \"NoMoreThan\",\n          \"beforeArrivalUnit\": \"Hour\",\n          \"beforeArrivalValue\": 24,\n          \"penaltyCalculationMethod\": \"PrepaymentPercent\",\n          \"penaltyValue\": 100,\n          \"penaltyValueCurrency\": \"EUR\",\n          \"arrivalDates\": [\n            {\n              \"startDate\": \"2021-02-09\",\n              \"endDate\": \"2021-02-09\",\n              \"isEndless\": true\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n```"
    },
    {
      "name": "ContentApi",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Content%20API%20V1)\n\nContent API retrieves photos and descriptions of the property, room types, rate plans, services, and amenities.\nThis information is displayed in *Exely Booking Engine* on the property's website.\n\n1. Main settings, description, and photos of the property\n1. `services` - all services, including meals\n1. `ratePlans` - rate plans\n1. `roomTypes` - room types\n1. `amenities` - amenities\n1. Settings that are not available in the property's account:\n   - `currency` - currency determined by the country\n   - `timeZone` - time zone determined by the city\n   - `stayUnitKind` - `NightRate` or `DailyRate` room sales in the booking engine determined by the property type\n   - `multiLocationProperty` - allows different addresses for room types and can be enabled upon request to Exely customer support.\n\nIn addition, API provides available selection options.\n\nSome common reference data, such as payment methods and property kinds, is available in the separate Reference Data API.\n\n1. `meal-plans` - meal plan types, for example:\n     - code `EnglishBreakfast` name `English breakfast`\n     - code `FullBoard` name `Full board`\n1. `room-type-categories` - accommodation offers. For example:\n     - code `Apartments` name `Apartment`\n     - code `PlaceInRoom` name `Bed in room`\n     - code `SmallHouse` name `Small house`\n1. `room-amenity-categories` - room amenities. For example:\n     - group `Internet and telephony` code `wifi_internet` name `Wi-Fi`\n     - group `Furniture` code `journal_table` name `coffee table`\n\n### Services\n\nThe service type can be determined by the `kind` field value:\n\n- `Common` - any services except meals\n- `Meal` - meals\n\nFor meals, the `mealPlanCode` and `mealPlanName` fields are provided and completed with values from the meal plans reference.\n\n### Rate plans\n\nRate plans are linked to other API sections:\n\n- `extraStayRuleId` field - early check-in and late check-out rule (see [ExtraStayRules](#tag/ExtraStayRules))\n- `cancellationRuleId` field - booking cancellation rule (see [CancellationRules](#tag/CancellationRules))\n\n### Room types\n\nRoom types are linked to references:\n\n- `categoryCode` and `categoryName` fields - accommodation offer\n- `code` and `name` elements of the `amenities` array - room amenities\n\n### Amenities\n\nList of property amenities:\n\n- `code` - identifier\n- `displayName` - display name\n- `chargeType` - charge type:\n    - *free* - free-of-charge service\n    - *chargeable* - paid service\n    - *none* - charge type does not apply (the service does not require payment, for example: concierge)\n\nAmenities with the `swimming_pool` and `restaurant` identifiers may be duplicated because there can be several of them within a single property."
    },
    {
      "name": "PaymentMethods",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Reference%20Data%20API%20V1)\n\nPayment Methods API returns a reference of payment methods available in Partner API.\nThis reference data can be used to map payment method codes to their corresponding types and to maintain consistency across integrations.\n\nEach payment method includes:\n\n1. `code` - payment method code.\n1. `type` - payment method type.\n\nUse the values from this reference when sending or processing payment information in related APIs."
    },
    {
      "name": "PropertyKind",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Reference%20Data%20API%20V1)\n\nProperty Kind API returns a reference of property types.\nThis reference data can be used to determine the type of a property, such as a hotel, apartment, etc.\n\nEach property type includes the following fields:\n\n1. `id` - numeric identifier of the property type.\n1. `displayName` - property name.\n1. `propertyKindType` - system-defined property type.\n\nUse this reference data to store and display property types consistently across systems and integrations."
    },
    {
      "name": "PropertyAmenity",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Reference%20Data%20API%20V1)\n\nProperty Amenity API returns a reference of property amenities.\nThese values can be used to display and map amenities in user interfaces and across integrations.\n\nEach amenity includes the following fields:\n\n1. `code` - amenity code, for example, `parking`.\n1. `displayName` - amenity name.\n1. `chargeTypeApplicable` - indicates whether the amenity supports a payment type.\n\nIf `chargeTypeApplicable` is `true`, the amenity may be offered either free of charge or for an additional fee."
    },
    {
      "name": "CorporateApi",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Reference%20Data%20API%20V1)\n\nCorporate API allows you to create a corporate customer and retrieve its data by identifier.\nCorporate customers are used in integrations where bookings or payments need to be associated with a legal entity.\n\nWhen creating a corporate customer, the following fields are required:\n\n1. `taxpayerIdentificationNumber` - Tax ID.\n1. `registrationReasonCode` - Registration Reason Code (KPP).\n1. `metaData` - additional information about a customer, if required by the integration.\n\nIn response, the API returns the customer's `id`, the legal entity name `legalName` and the registration details."
    },
    {
      "name": "Reservation",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/public-api/?urls.primaryName=Read%20Reservation%20API%20V1)\n\nRead Reservation API allows you to retrieve booking details from\n*Exely Booking Engine*, *Exely Channel Manager*, and *Exely PMS*.\n\n### Get booking summaries\n\nThis method returns a paginated list with brief information about each booking.\n\n- `lastModification` allows you to retrieve bookings \n  created or updated after the specified UTC date and time.\n  If omitted, the API performs a full synchronization.\n  \n- `continueToken` allows you to continue retrieving the list.\n  Its value is returned in the response of the previous request.\n  The token does not expire.\n  The request may return bookings that were previously retrieved but have since been updated.\n  \n- `hasMoreData = false` indicates that the end of the current result set has been reached.\n  Even after this, subsequent requests may return new data \n  created after the previous request.\n\nIf `continueToken` is lost, it is recommended to start a new synchronization \nusing `lastModification` to obtain new `continueToken`.\n\nIt is recommended to set the `lastModification` value as follows:\nuse the booking `lastModification` value minus two days.\nThis helps avoid missing bookings in subsequent requests.\n\n### Get booking details\n\nThis method returns detailed information about a single booking.\n\nThe response includes related data available through [ContentApi](#tag/ContentApi):\n\n- `booking.roomStays[].ratePlans[]` - rate plans\n- `booking.roomStays[].dailyRates[].RatePlanId` - rate plan identifiers\n- `booking.roomStays[].roomType` - room types\n- `booking.roomStays[].services[]` - services\n- `booking.services[]` - services with the \"Per booking\" charge type."
    },
    {
      "name": "SearchRoomStays",
      "description": "### [Swagger](https://connect.hopenapi.com/docs/booking-process/?urls.primaryName=Search%20API%20V1)\n\n**Important:** A mandatory condition for using Search API is to use search results for creating bookings in Exely Suite. \nIf this requirement is violated, API access may be disabled by the provider. \nTo restore access, contact [support@exely.com](mailto:support@exely.com)\n\nSearch API retrieves accommodations with the lowest price across all available properties (up to 200) \nand offers provided by a specific property.\n\nSearch data is available up to one year from the current date. \nMaximum number of days between `arrivalDate` and `departureDate` is 100. \nMaximum number of days between `arrivalDate` and the current date is 365.\n\nTwo additional methods are available to retrieve early check-in / late check-out information \nand extra services provided by a specific property. Both types of data can be retrieved in a single request:\n`GET /api/search/v1/properties/{propertyId}/room-stays` when using `includeExtraStays=true` and `includeExtraServices=true`.\n\n### Filters in aggregated search\n\nIn the method `/api/search/v1/properties/room-stays/search`, you can specify the following filters:\n\n**By meal availability** — `mealPreference.mealType`. Available values:\n\n*All* — returns the lowest-priced accommodation in each property.\n\n*MealOnly* — returns the lowest-priced accommodation with meals included. If such an option is not available, \nthe property is not returned.\n\n**By meal plan** — `mealPreference.mealsIncluded`. You can specify meal plans using values \nreturned by the following endpoints: `content/v1/meal-plans` — list of available meal plans,  \n`content/v1/properties` — information about all available properties, and \n`content/v1/properties{propertyId}` — information about a specific property.\n\nSearch results return the lowest-priced accommodation per property for the specified meal plans \nincluded in the rate plan. For example, if only `BreakFast` is specified, the response \nwill include only the lowest-priced options with `BreakFast`. Options such as `AllInclusive` or `HalfBoard` are excluded.\n\nThe meal plan filter is available only when `MealOnly` is selected.\n\n**By minimum and maximum price** — `pricePreference.minPrice` and `pricePreference.maxPrice`\n\nThese fields are optional. If provided, the search results will return the lowest-priced accommodations across all available properties based on the selected filters."
    },
    {
      "name": "PropertyReservation",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms/swagger/index.html)\n\nRead Reservation API retrieves booking details from *Exely PMS*.\n\n### Get booking summaries\n\nThis method returns a paginated list with brief information about each booking.\n\n- `pageToken` allows you to continue retrieving the list.\n  Its value is returned in the response of the previous request.\n  The token does not expire.\n  The request may return bookings that were previously retrieved but have since been updated.\n- `hasNextPage = false` indicates that the end of the current result set has been reached.\n  Even after this, subsequent requests may return new data \n  created after the previous request.\n\nIf the `pageToken` is lost, it is recommended to start a new request to obtain new `pageToken`.\n\n### Get booking details\n\nThis method returns detailed information about a single booking.\n\n The response contains identifiers that can be used to retrieve additional information:\n\n- Through [ContentApi](#tag/ContentApi):\n  - `reservation.roomStays[].roomType` - room types\n  - `reservation.roomStays[].options[]` - services\n\n- Through [PMS API > PropertyRoom](#tag/PropertyRoom):\n  - `reservation.roomStays[].room` - rooms\n\n- Through [PMS API > PropertyGuest](#tag/PropertyGuest):\n  - `reservation.roomStays[].guestIds` - guests\n\n### Save payment to a stay\n\nThis method allows you to save a payment to a stay using the `pmsRoomStayId` identifier, which can be retrieved \nfrom booking details through [PMS API > PropertyReservation](#tag/PropertyReservation).\n\nInput parameters:\n- `pmsPaymentSystemId` - payment method identifier. Specify one of the available payment methods \nthat can be retrieved by: \nGET `/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/find-available-payment-systems`"
    },
    {
      "name": "PropertyRoom",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms/swagger/index.html)\n\nThese methods allow you to search and retrieve information about rooms included in a property's room inventory.\nThe information is available in *Exely PMS* under the \"Room inventory\" section."
    },
    {
      "name": "PropertyCompany",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms/swagger/index.html)\n\nThe methods allow you to search for and retrieve information about companies from the property's account.\nThis information is displayed in \"Property management\" > \"Companies\"."
    },
    {
      "name": "Property",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms/swagger/index.html)"
    },
    {
      "name": "PropertyGuest",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms/swagger/index.html)\n\nThese methods allow you to search, retrieve, and update guest profiles and related data, including loyalty cards, bookings, and documents, for a property.\nThe information is available in *Exely PMS* under the \"Guest profiles\" section."
    },
    {
      "name": "PropertyAnalytics",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms-analytics/swagger/index.html)\n\nPMS Analytics API retrieves daily statistics from *Exely PMS*.\n\n### Get daily occupancy statistics\n\nThe method returns property's daily statistics for the given period.\n\n- The date range is limited to 31 days. The `startStayDate` and `endStayDate` parameters are required and must be in ISO-8601 format (YYYY-MM-DD).\n- The optional `otbDate` parameter filters historical statistics to include only bookings created on the given date (OTB — On-the-Books).\n\n**Response fields**:\n\n- `currencyCode` — currency code (ISO-4217)\n- `propertyRoomCount` — total number of rooms in the property according to the property profile\n- `dailyOccupancies` — daily statistics:\n  - `date` — date\n  - `occupancyRate` — property occupancy rate (0.0–1.0, where 1.0 = 100%)\n  - `closedRoomCount` — out-of-order rooms (maintenance or other)\n  - `occupancyRoomCount` — occupied rooms (includes only paid rooms; rooms with a zero rate are excluded)\n  - `complimentaryOccupancyRoomCount` — occupied rooms with a zero rate\n  - `roomRevenue` — net room revenue (excluding VAT, commissions, and extra services)\n  - `revenue` — property's gross revenue for the day\n  - `mealRevenue` — meal revenue\n  - `arrivalCount` — number of check-ins for the date\n  - `guestCount` — number of guests (adults + children)"
    },
    {
      "name": "Statistics",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms-integration-storage/swagger/index.html)"
    },
    {
      "name": "Inventory",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms-integration-storage/swagger/index.html)"
    },
    {
      "name": "Bookings",
      "description": "### [Swagger](https://connect.hopenapi.com/api/pms-integration-storage/swagger/index.html)"
    }
  ],
  "x-tagGroups": [
    {
      "name": "API Documentation",
      "tags": [
        "Authorization",
        "Rate limits",
        "Error codes"
      ]
    },
    {
      "name": "Exely Connect - Content API",
      "tags": [
        "CancellationRules",
        "ContentApi",
        "ExtraStayRules"
      ]
    },
    {
      "name": "ReferenceData API",
      "tags": [
        "CorporateApi",
        "PaymentMethods",
        "PropertyAmenity",
        "PropertyKind"
      ]
    },
    {
      "name": "Read Reservation API",
      "tags": [
        "Reservation"
      ]
    },
    {
      "name": "Exely Connect - Search API",
      "tags": [
        "SearchRoomStays"
      ]
    },
    {
      "name": "PMS API",
      "tags": [
        "Property",
        "PropertyCompany",
        "PropertyGuest",
        "PropertyReservation",
        "PropertyRoom"
      ]
    },
    {
      "name": "PMS Analytics API",
      "tags": [
        "PropertyAnalytics"
      ]
    },
    {
      "name": "Exely Partner - PMS Integration Storage API",
      "tags": [
        "Bookings",
        "Inventory",
        "Statistics"
      ]
    }
  ]
}