{
  "openapi": "3.0.0",
  "info": {
    "title": "TravelLine Partner 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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.com/api/content/"
        }
      ]
    },
    "/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\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\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 (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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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-06-06"
            }
          },
          {
            "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-06-07"
            }
          },
          {
            "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"
              }
            }
          },
          {
            "name": "corporateIds",
            "in": "query",
            "description": "Corporate clients identifiers to identify corporate clients\r\n\r\n            Rate plans for requested corporate clients to be included in the search results",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.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://partner.tlintegration.com/api/pms-analytics"
        }
      ]
    },
    "/v1/properties/{propertyId}/reviews": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "Returns a paginated list of hotel reviews sorted by date or rating.",
        "description": null,
        "operationId": "Reviews_GetReviews",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property id",
            "required": true,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "Opaque token for pagination continuation (optional).",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Maximum number of reviews to return (optional, default 10, max 100).",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Sort by field: \"date\" or \"rate\" (optional, default \"date\"). Ignore if pageToken contains a non-zero value",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "Sort order: \"asc\" or \"desc\" (optional, default \"desc\"). Ignore if pageToken contains a non-zero value",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "Language code (IETF BCP-47, optional). If the review is translated into the provided language, the translation will be returned in the review body.",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "Bearer token",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "reviews": [
                    {
                      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "authorName": "Irina Zadirskaia",
                      "publishDate": "2025-07-30T00:00:00",
                      "rating": 9.5,
                      "originalText": "Отдыхали здесь с 14 по 23 июля 2025 года...",
                      "languageCode": "ru",
                      "sourceId": "16",
                      "replyText": "Ирина, приветствуем Вас! Благодарим Вас за выбор нашего отеля...",
                      "translatedText": "We had a rest here from July 14 to July 23, 2025..."
                    }
                  ],
                  "nextPageToken": "eyJwYWdlIjoyfQ==",
                  "hasNextPage": true
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "reviews": {
                      "type": "array"
                    },
                    "nextPageToken": {
                      "type": "string"
                    },
                    "hasNextPage": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      },
      "servers": [
        {
          "url": "https://partner.tlintegration.com/api/reputation-public-reviews"
        }
      ]
    },
    "/v1/properties/{propertyId}/reviews/stats": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "Returns stats rating and total reviews count for the hotel.",
        "description": null,
        "operationId": "Reviews_GetReviewStats",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "Property id",
            "required": true,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "Bearer token",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "averageRating": 9.2,
                  "reviewsCount": 3985
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "averageRating": {
                      "type": "number"
                    },
                    "reviewsCount": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      },
      "servers": [
        {
          "url": "https://partner.tlintegration.com/api/reputation-public-reviews"
        }
      ]
    },
    "/v1/sources": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "Returns the list of review sources.",
        "description": null,
        "operationId": "Reviews_GetSources",
        "parameters": [
          {
            "name": "Authorization",
            "in": "header",
            "description": "Bearer token",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "sources": [
                    {
                      "id": "16",
                      "code": "Yandex"
                    },
                    {
                      "id": "12",
                      "code": "Google"
                    }
                  ]
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "sources": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      },
      "servers": [
        {
          "url": "https://partner.tlintegration.com/api/reputation-public-reviews"
        }
      ]
    },
    "/v1/rating-scales": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "Reference list of available rating categories and their score boundaries (e.g. excellent, good, poor).\r\nCategory rating in (MinScore; MaxScore], except for the lowest rating, which can be 0.",
        "description": null,
        "operationId": "Reviews_GetRatingScaleReference",
        "parameters": [
          {
            "name": "Authorization",
            "in": "header",
            "description": "Bearer token",
            "required": false,
            "deprecated": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ratingScale": [
                    {
                      "code": "poor",
                      "minScore": 0,
                      "maxScore": 2
                    },
                    {
                      "code": "not_bad",
                      "minScore": 2,
                      "maxScore": 4
                    },
                    {
                      "code": "good",
                      "minScore": 4,
                      "maxScore": 6
                    },
                    {
                      "code": "very_good",
                      "minScore": 6,
                      "maxScore": 8
                    },
                    {
                      "code": "excellent",
                      "minScore": 8,
                      "maxScore": 10
                    }
                  ]
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "ratingScale": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      },
      "servers": [
        {
          "url": "https://partner.tlintegration.com/api/reputation-public-reviews"
        }
      ]
    }
  },
  "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-06-07"
          },
          "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-06-07"
          },
          "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_FsaCertification": {
        "required": [
          "index"
        ],
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Link to FSA certification",
            "format": "int32",
            "example": "1"
          },
          "fsaResortId": {
            "type": "string",
            "description": "ResortId in FSA",
            "nullable": true,
            "example": "f88355a3-6977-4011-a09c-784f2b837644"
          },
          "fsaRegisterRecord": {
            "type": "string",
            "description": "RegisterRecord in FSA",
            "nullable": true,
            "example": "С162021009062"
          },
          "fsaUrl": {
            "type": "string",
            "description": "Direct link to the FSA hotel certification page",
            "nullable": true,
            "example": "https://tourism.fsa.gov.ru/ru/resorts/hotels/f88355a3-6977-4011-a09c-784f2b837644/about-resort"
          },
          "fsaCertificationStatus": {
            "$ref": "#/components/schemas/ContentApi_FsaCertificationStatus"
          },
          "fsaHotelType": {
            "$ref": "#/components/schemas/ContentApi_FsaHotelType"
          },
          "certificationState": {
            "$ref": "#/components/schemas/ContentApi_FsaCertificationState"
          }
        },
        "additionalProperties": false,
        "description": "FSA certification object"
      },
      "ContentApi_FsaCertificationState": {
        "enum": [
          "Available",
          "Unavailable",
          "TemporaryOptional"
        ],
        "type": "string",
        "description": "Aggregated state of certification status:\r\nAvailable - property certification available;\r\n\r\nUnavailable - property certification not available\r\n\r\nTemporaryOptional - property certification temporary not required\r\n"
      },
      "ContentApi_FsaCertificationStatus": {
        "type": "object",
        "properties": {
          "fsaStatusId": {
            "type": "integer",
            "description": "FSA certification status id",
            "format": "int32",
            "example": 6
          },
          "name": {
            "type": "string",
            "description": "FSA certification name",
            "nullable": true,
            "example": "Действует"
          },
          "endDate": {
            "type": "string",
            "description": "FSA certification expire date",
            "nullable": true,
            "example": "2028-08-15"
          }
        },
        "additionalProperties": false,
        "description": "FSA certification status object"
      },
      "ContentApi_FsaHotelType": {
        "type": "object",
        "properties": {
          "fsaHotelTypeId": {
            "type": "integer",
            "format": "int32",
            "example": 100
          },
          "name": {
            "type": "string",
            "nullable": true,
            "example": "Гостиница"
          }
        },
        "additionalProperties": false,
        "description": "FSA hotel type status object"
      },
      "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"
          },
          "fsaCertifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_FsaCertification"
            },
            "description": "FSA certifications collection",
            "nullable": true
          },
          "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"
          },
          "fsaCertifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentApi_FsaCertification"
            },
            "description": "FSA certifications collection",
            "nullable": true
          },
          "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_RoomTypeFsaCertification": {
        "required": [
          "index"
        ],
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Link to FSA certification",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "Room type FSA certification"
      },
      "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
          },
          "fsaCertification": {
            "$ref": "#/components/schemas/ContentApi_RoomTypeFsaCertification"
          }
        },
        "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
      },
      "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_GuaranteeInfo": {
        "required": [
          "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
          }
        },
        "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_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-06-06T12: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-06-06T09: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_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"
          },
          "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-06-07T12: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"
          },
          "corporateCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Codes for which corporates clients this rate is allowed. \r\n\r\nIf collection contains codes, it means that this rate allowed to specified corporate clients.",
            "nullable": true
          },
          "corporateIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ids of corporate clients for which this rate is allowed. \r\n\r\nIf collection contains ids, it means that this rate is allowed to specified corporate clients.",
            "nullable": true
          }
        },
        "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"
          },
          "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-06-06"
          },
          "departureDate": {
            "type": "string",
            "description": "Check-out date.\r\n\r\nDate format complies with ISO-8601 YYYY-MM-DD",
            "format": "date-time",
            "example": "2026-06-07"
          },
          "mealPreference": {
            "$ref": "#/components/schemas/SearchApi_MealPreference"
          },
          "pricePreference": {
            "$ref": "#/components/schemas/SearchApi_PricePreference"
          },
          "corporateIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Corporate clients identifiers to identify corporate clients\r\n\r\nRate plans for requested corporate clients to be included in the search results",
            "nullable": true
          }
        },
        "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-06-06T14: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-06-07T12: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_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_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": "Customer’s 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
          }
        },
        "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"
      }
    },
    "parameters": {},
    "responses": {},
    "requestBodies": {},
    "headers": {},
    "securitySchemes": {
      "ContentApi_ApiKey": {
        "type": "apiKey",
        "name": "X-API-KEY",
        "in": "header"
      },
      "ContentApi_oAuth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://partner.tlintegration.com/auth/token",
            "scopes": {}
          }
        }
      },
      "ReservationApi_oauth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://partner.tlintegration.com/auth/token",
            "scopes": {}
          }
        }
      },
      "SearchApi_ApiKey": {
        "type": "apiKey",
        "name": "X-API-KEY",
        "in": "header"
      },
      "SearchApi_oAuth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://partner.tlintegration.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"
      },
      "Reviews_Bearer": {
        "type": "apiKey",
        "description": "Введите JWT с префиксом 'Bearer '",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "tags": [
    {
      "name": "Авторизация",
      "description": "Авторизация происходит через [OAuth2.0](https://oauth.net/2/).\n\nOAuth 2.0 – это стандарт авторизации, который позволяет приложениям получать доступ к данным.\n\nДля работы с API в запросах необходимо передавать ключ доступа в формате JSON Web Token (JWT).  \n\nJWT (JSON Web Token) — это специальный формат токена, который позволяет безопасно передавать данные между клиентом и сервером.  \n\nПолучение JWT происходит через **Client credentials flow**, то есть авторизацию по секретному ключу доступа. Для запроса ключа доступа необходимы следующие параметры:  \n- **Client ID**,  \n- **Client Secret**.\n## Диаграмма взаимодействия\n![alt text](/dev-portal/img/auth-token.png)\n\nTravelLine. Сервер авторизации: https://partner.tlintegration.com/auth/token\n## Токен доступа\n### Лимиты на авторизацию\n- 3 запроса в секунду,  \n- 15 запросов в минуту,  \n- 300 запросов в час с одного IP-адреса.  \n\n### Время жизни токена\n15 минут.  \n\n### Конечная точка авторизации\n- **Рабочая среда**: [https://partner.tlintegration.com/auth/token](https://partner.tlintegration.com/auth/token)  \n\nПример токена доступа:\n```plaintext\neyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2OGZjOHRNUGFSUHRyRHYtVHV2WEpncUNGTE1CVGRheTBpQkdJSUE3amxvIn0.eyJleHAiOjE2OTg5MTYwMzYsImlhdCI6MTY5ODkxNTEzNiwianRpIjoiYTJjZGJhMGQtYzQwNy00OWRmLThiNGQtOTJhNTM1NWQxYTFmIiwiaXNzIjoiaHR0cHM6Ly9wYXJ0bmVyLnRsaW50ZWdyYXRpb24uY29tL2F1dGgvcmVhbG1zL1BhcnRuZXJBcGkiLCJhdWQiOiJUcmF2ZWxMaW5lLlBhcnRuZXJBUEkiLCJzdWIiOiI4NmE0YjZiZS0wYTc0LTRjYjktYjNhYi1iNDYyZWUwYmIyYmQiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJwYTMiLCJzY29wZSI6IiIsImFwaV9hY2Nlc3NlcyI6WyJjb250ZW50Il19.Nz6dyaHGyIN5IKv30oM-HrqdQBqaGdzEFrk7ACUWbfvsNCHNowg96iJrGwQbkOUSVPtQJF9Cwf1_jywP6c2UPHclzBIDp9HTsYdVM5QS_k9ecs0GCiI8ACBqld3yatY4dJz3MRkxnU_rp0NbJJQ-uBcmg_9UCSCIc3mKR7UAosr5XOXeb4ckrFd67DK5xfofT0ykE46Qkc6nvev3AGx11fPAVsFnmmPOSnlpQzJTI7XBWbD120q5fDdksVlaiq3YoBueDEeOPFH08Ia6xdTVjIf_zsyOEKt2N8_7BTyWG_3YPThBbgn-eAgybSdeop6_eCrWTfQvX5g8qtR2e9J32A\n```\n\nНа сайте [JWT.IO](https://jwt.io/) можно расшифровать токен доступа.  \n\n### Пример расшифрованного токена  \n\n**Содержимое запроса:**  \n\n```json\n{\n  \"exp\": 1698916036,\n  \"iat\": 1698915136,\n  \"jti\": \"a2cdba0d-c407-49df-8b4d-92a5355d1a1f\",\n  \"iss\": \"https://partner.tlintegration.com/auth/realms/PartnerApi\",\n  \"aud\": \"TravelLine.PartnerAPI\",\n  \"sub\": \"86a4b6be-0a74-4cb9-b3ab-b462ee0bb2bd\",\n  \"typ\": \"Bearer\",\n  \"azp\": \"pa3\",\n  \"scope\": \"\",\n  \"api_accesses\": [\n    \"content\"\n  ]\n}\n```\n**Обратите внимание**. Токен обновления не используется.\n## Рекомендации\n\n1. **Кешируйте на стороне клиента токен доступа** и используйте его повторно в своих запросах.  \n\n2. **Используйте библиотеки для OAuth2.0:**  \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://partner.tlintegration.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": "Лимиты",
      "description": "Чтобы сервис был доступен, мы ввели ограничения на интенсивность запросов к API со стороны пользователей. Если лимит превышен, ваши действия будут заблокированы. В этом случае вернется ошибка `429 Too Many Requests`.\n\n| Ограничение | Квота | Разблокировка при превышении квоты |\n|-------------|-------|-----------------------------------|\n| Количество запросов на авторизацию с одного IP-адреса | 3 в секунду | Когда число запросов к API, совершенных за последнюю секунду, станет меньше 3 |\n\n## Мониторинг лимитов через заголовки\n\nВ каждом ответе API возвращаются заголовки, которые помогут вам отслеживать оставшееся количество запросов:\n\n- `x-ratelimit-remaining-hour` - количество оставшихся запросов в течение часа с момента отправки.\n- `x-ratelimit-remaining-minute` - количество оставшихся запросов в течение минуты с момента отправки.\n- `x-ratelimit-remaining-second` - количество оставшихся запросов в течение секунды с момента отправки.\n- `retry-after` - этот заголовок возвращается при ошибке `429 Too Many Requests` и указывает время (в секундах), через которое можно повторить запрос."
    },
    {
      "name": "Коды ошибок",
      "description": "| Код ошибки | Сообщение           | Описание                                                                                       |\n|------------|---------------------|-----------------------------------------------------------------------------------------------|\n| 400        | Bad Request         | В содержании запроса есть ошибка — например, отсутствуют обязательные заголовки или значения параметров некорректны. |\n| 401        | Unauthorized        | Ошибка может возникать по разным причинам: В запросе не указан OAuth-токен. Или указан, но не там. Закончился срок действия токена — в этом случае получите новый. |\n| 403        | Forbidden           | У пользователя нет доступа к определенным методам API.                                         |\n| 404        | Not Found           | Запрашиваемый ресурс не существует или устарел. Проверьте адрес запроса.                       |\n| 429        | Too Many Requests   | Превышен лимит запросов в секунду (RPS). Убедитесь, что не отправляете лишнего.                |\n| 500        | Internal Server Error | Внутренняя ошибка сервера. Попробуйте зайти позже.                                           |\n| 503        | Service Unavailable | Сервер перегружен. Попробуйте зайти позже.                                                    |"
    },
    {
      "name": "ContentApi",
      "description": "### [Swagger](https://partner.tlintegration.com/docs/public-api/?urls.primaryName=Content%20API%20V1)  \n\nContent API позволяет получить фотографии и описание средства размещения, категорий номеров, тарифов, услуг, удобств.\nЭта информация отображается в модуле бронирования *TL: Booking Engine* на официальном сайте средства размещения.\n\n1. Общие настройки, описание и фото средства размещения.\n1. `services` - все услуги, включая питание.\n1. `ratePlans` - тарифы.\n1. `roomTypes` - категории номеров.\n1. `amenities` - удобства.\n1. Отсутствуюшие в личном кабинете настройки:\n   - `currency` - валюта, определяется страной.\n   - `timeZone` - часовой пояс, определяется городом.\n   - `stayUnitKind` - модель продажи номеров в модуле бронирования (`NightRate` или `DailyRate`), определяется типом средства размещения.\n   - `multiLocationProperty` - позволяет иметь разные адреса для категорий номеров, можно включить по запросу в техподдержку TravelLine.\n\nКроме того, API предоставляет справочники вариантов выбора для настроек:\n\n1. `meal-plans` - типы питания, например:\n     - код `EnglishBreakfast` имя `Английский завтрак`.\n     - код `FullBoard` имя `Полный пансион`.\n1. `room-type-categories` - типы предложений, например:\n     - код `Apartments` имя `Апартаменты`.\n     - код `PlaceInRoom` имя `Место в номере`.\n     - код `SmallHouse` имя `Домик`.\n1. `room-amenity-categories` - оснащение номеров, например:\n     - группа `Интернет/телефония` код `wifi_internet` имя `Wi-Fi-интернет`.\n     - группа `Мебель` код `journal_table` имя `журнальный столик`.\n\n### Услуги\n\nВид услуги можно определить по значению поля `kind`:\n\n- `Common` - любые услуги, кроме питания.\n- `Meal` - услуги питания.\n\nДля услуг питания дополнительно заданы поля `mealPlanCode` и `mealPlanName`,\nзаполненные значениями из справочника типов питания.\n\n### Тарифы\n\nТарифы связаны с другими подразделами API:\n\n- поле `extraStayRuleId` указывает на правило раннего заезда и позднего выезда (см. [ExtraStayRules](#tag/ExtraStayRules)).\n- поле `cancellationRuleId` указывает на правило отмены бронирования (см. [CancellationRules](#tag/CancellationRules)).\n\n### Категории номеров\n\nКатегории номеров связаны со справочниками:\n\n- поля `categoryCode` и `categoryName` - тип предложения.\n- элементы массива `amenities` (`code` и `name`) - оснащение номеров.\n\n### Удобства\n\nСписок доступных удобств средства размещения:\n\n- `code` - идентификатор.\n- `displayName` - название для отображения.\n- `chargeType` - тип оплаты:\n    - *free* - бесплатная услуга.\n    - *сhargeable* - платная услуга.\n    - *none* - тип оплаты не применим (услуга не подразумевает оплаты, например: консьерж).\n\nУдобства с идентификаторами `swimming_pool` и `restaurant` могут дублироваться поскольку их может быть несколько в рамках одного средства размещения."
    },
    {
      "name": "CancellationRules",
      "description": "### [Swagger](https://partner.tlintegration.com/docs/public-api/?urls.primaryName=Content%20API%20V1)  \n\nПравила отмены бронирования устанавливаются средством размещения для определения срока, в течение которого возможна бесплатная отмена, а также штрафа за позднюю отмену. Эти правила применяются к выбранным тарифам через их свойство `cancellationRuleId`.\n\nПравило может начать действовать с одного из следующих моментов времени:\n\n- **ProviderArrivalTime**: Стандартное время заезда. Например, если время заезда в средство размещения установлено на 14:00, бесплатная отмена будет доступна до 14:00 дня, предшествующего дню заезда.\n- **ProviderDepartureTime**: Стандартное время выезда. Отсчет начинается с момента выезда в день прибытия. Например, если время выезда в средстве размещения установлено на 12:00, бесплатная отмена будет доступна до 12:00 дня, предшествующего дню заезда.\n- **GuestArrivalTime**: Время заезда, которое указал гость во время бронирования. Например, если стандартное время заезда — 14:00, но гость выбрал заезд в 16:00, бесплатная отмена будет доступна до 16:00 дня, предшествующего дню заезда. Если гостю не разрешено выбирать время заезда, будет использовано стандартное время, которое принято в средстве размещения.\n- **CustomArrivalTime**: Выбранное время, с которого начинается отсчет для правила отмены. Время указывается в поле `referencePointTime` с использованием часового пояса средства размещения.\n- **BookingCreationTime**: Время (но не дата), когда гость сделал бронирование. Например, если время заезда установлено на 14:00, а гость забронировал номер в 9:00, бесплатная отмена будет доступна до 9:00 дня, предшествующего дню заезда.\n\n### Штраф за определенный период\n\nШтраф устанавливается с использованием временных рамок, которые включают в себя единицы времени и период до контрольной точки.\n\n- **Единицы времени**:\n  - `None`: Не указано, используется только с периодом `NoMatter`.\n  - `Day`: Дни.\n  - `Hour`: Часы.\n\n- **Период до контрольной точки**:\n  - `NoMatter`: Не зависит от конкретного времени.\n  - `AtLeast`: Больше или равно значению `beforeArrivalValue`.\n  - `NoMoreThan`: Меньше или равно значения `beforeArrivalValue`.\n  - `Between`: В пределах интервала от `beforeArrivalValue` до `beforeArrivalValueMax`.\n\n### Режимы расчета штрафов\n\n- `NoPenalty`: Штраф не применяется.\n- `FirstNightPercent`: Штраф составляет указанный процент от стоимости первой ночи.\n- `PrepaymentPercent`: Штраф составляет указанный процент от суммы предоплаты.\n- `FirstNights`: Штраф равен полной стоимости первых N ночей.\n\nШтраф для выбранного режима расчета указывается в виде числового значения и валюты.\n\nПериод действия правила можно установить, выбрав даты прибытия в часовом поясе гостиницы. Период включает в себя как начальную, так и конечную дату. Если дата окончания не указана, она может быть установлена как «Не ограничено», что соответствует `isEndless = true`.\n\nЕсли в правиле нет условий отмены, отмена осуществляется бесплатно.\n\n### Конечная точка\n\n```\nGET /v1/properties/{propertyId}/cancellation-rules\n```\nПолучение правил отмены бронирования.\n\n**Параметры:**\n\n- `propertyId` *(string, path)*: ID средства размещения.\n\n**Пример:**\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": "ExtraStayRules",
      "description": "### [Swagger](https://partner.tlintegration.com/docs/public-api/?urls.primaryName=Content%20API%20V1)  \n\nПравила позволяют устанавливать доплату за ранний заезд и поздний выезд. Эти правила применяются к выбранным тарифам через их свойство `extraStayRuleId`.\n\nНастройка «Заезд и выезд» задает стандартное время заезда и выезда, которое не требует дополнительной платы.\n\nЭти правила дают возможность назначать доплату за определенные временные промежутки между временем раннего заезда или позднего выезда и стандартным временем заезда/выезда.\n\n### Способы расчета доплаты\n\n- `Free`: без дополнительной платы.\n- `Fixed`: установленная сумма.\n- `Percent`: процент от стоимости за ночь.\n- `HourlyRate`: фиксированная ставка за час.\n- `HourlyRateAutoCalculated`: цена за час рассчитывается автоматически.\n- `Forbidden`: ранний заезд/поздний выезд не допускается.\n\n`Fixed` и `HourlyRate` позволяют устанавливать несколько тарифов (rates) в разных валютах.\n\n`Percent` позволяет задать процент доплаты и дополнительные параметры:\n\n- `extraPlacementEnabled`: `'true'`, если взимается доплата за дополнительного гостя; `'false'`, если доплата не взимается.\n- `extraServiceOption`: дополнительные услуги, за которые взимается доплата `[None, All, MealOnly]`.\n\nСвойство `OccupyQuota` указывает, гарантирована ли доступность номера для дополнительного пребывания. \n\n- `true`: доступность номера гарантирована.\n- `false`: доступность номера не гарантируется, даже если дополнительное пребывание оплачено заранее.\n\n### Конечная точка\n\n```\nGET /v1/properties/{propertyId}/extra-stay-rules\n```\nПолучение правил раннего заезда и позднего выезда.\n\n**Параметры:**\n\n- `propertyId` *(string, path)*: ID средства размещения.\n\n**Пример:**\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": "Reservation",
      "description": "### [Swagger](https://partner.tlintegration.com/docs/public-api/?urls.primaryName=Read%20Reservation%20API%20V1)\n\nRead Reservation API позволяет получить информацию о бронированиях средств размещения из компонентов\n*TL: Booking Engine*, *TL: Channel Manager* и *TL: WebPMS*.\n\n### Получение краткой информации по бронированиям\n\nМетод возвращает постраничный список с краткой информацией по каждому бронированию.\n\n- Параметр `lastModification` позволяет начать получение списка бронирований,\n  сделанных или измененных после указанной даты/времени в часовой зоне UTC.\n  Параметр можно не указывать, чтобы начать полную синхронизацию.\n- Параметр `continueToken` позволяет продолжить получение списка.\n  Его значение берется из результатов предыдущего запроса.\n  Срок службы токена не ограничен.\n  Запрос может вернуть полученное ранее, но уже изменившееся бронирование.\n- Признак `hasMoreData = false` информирует о достижении конца списка.\n  Даже после этого запросы продолжения будут возвращать новые данные,\n  появившиеся с момента предыдущего запроса.\n\nЕсли произойдет потеря `continueToken`, рекомендуется выполнить новый запрос\nс использованием параметра `lastModification` для получения нового `continueToken`.\n\nЗначение для `lastModification` рекомендуется определить следующим образом:\nукажите дату последнего изменения бронирования `lastModification` минус два дня.\nЭтот подход поможет избежать пропуска бронирований при последующем запросе данных.\n\n### Получение информации по бронированию\n\nМетод возвращает детальную информацию по одному бронированию.\n\nВ ответе есть настройки, доступные через [ContentApi](#tag/ContentApi):\n\n- `booking.roomStays[].ratePlans[]` - тарифы.\n- `booking.roomStays[].dailyRates[].RatePlanId` - тарифы.\n- `booking.roomStays[].roomType` - категория номеров.\n- `booking.roomStays[].services[]` - услуги.\n- `booking.services[]` - услуги с темпом начислением цены «За бронь»."
    },
    {
      "name": "SearchRoomStays",
      "description": "### [Swagger](https://partner.tlintegration.com/docs/booking-process/?urls.primaryName=Search%20API%20V1)\n\n**Важно:** Обязательным условием предоставления Search API является использование результатов поиска для создания бронирований в TravelLine: Platform. В случае нарушения условия предоставления, API может быть отключено правообладателем в одностороннем порядке. Для возобновления доступа к API напишите [support@travelline.ru](mailto:support@travelline.ru)\n\nSearch API предоставляет поиск вариантов размещения с минимальной ценой по всем доступным средствам размещения (до 200) и выборки предложений для конкретного средства размещения.\n\nВ поиске предоставляются данные на год вперед от текущей даты. Максимально количество дней между параметрами `arrivalDate` и `departureDate` — 100. Максимальное количество дней между датой `arrivalDate` и текущей датой — 365.\n\nДоступны два отдельных метода, которые возвращают сведения о раннем заезде/ позднем выезде и о дополнительных услугах для конкретного размещения. Обе группы данных могут быть получены одним запросом: \n`GET /api/search/v1/properties/{propertyId}/room-stays` при указании `includeExtraStays=true` и `includeExtraServices=true`.\n\n### Фильтры в агрегационном поиске\n\nВ методе `/api/search/v1/properties/room-stays/search` можно указать фильтры:\n\n**По наличию питания** — поле `mealPreference.mealType`. В запросе можно передать следующие значения:\n\n*All* — отображение минимального по стоимости варианта проживания по каждому средству размещения.\n\n*MealOnly* — отображение минимального по стоимости варианта проживания с включенным в стоимость тарифа питанием по каждому средству размещения. Если отсутствует такой вариант проживания, средство размещения не выводится.\n\n**По типу питания** — поле `mealPreference.mealsIncluded`. В запросе можно передать значения возможных вариантов питания, которые доступны в ответе метода `content/v1/meal-plans`, а также в ответе методов `content/v1/properties` — отображение всей информации о доступных средствах размещения и `content/v1/properties{propertyId}` — отображение информации по конкретному средству размещения.\n\nРезультат поиска показывает минимальные по стоимости варианты проживания с включенными в стоимость тарифа конкретными типами питания по каждому средству размещения. Например, если в запросе указать только значения `BreakFast`, в ответе можно получить минимальные по стоимости варианты проживания с включенным в стоимость тарифа типом питания `BreakFast`. При этом, в ответе будут отсутствовать варианты `AllInсlusive` или `HalfBoard`.\n\nФильтр по типу питания можно использовать только при наличии типа питания `MealOnly`.\n\n**По минимальной и максимальной стоимости проживания** — поля `pricePreference.minPrice` и `pricePreference.maxPrice`.\n\nЭти поля являются необязательными. Если передать значения полей в API, результат поиска покажет варианты проживания с минимальной ценой по всем доступным средствам размещения по выбранным фильтрам."
    },
    {
      "name": "PropertyCompany",
      "description": "### [Swagger](https://partner.tlintegration.com/api/pms/swagger/index.html)  \n\nМетоды позволяют искать и извлекать информацию о компаниях, содержащихся в справочнике компаний средства размещения.\nЭта информация отображается в модуле *TL: WebPMS* в разделе \"Справочник компаний\"."
    },
    {
      "name": "Property"
    },
    {
      "name": "PropertyGuest",
      "description": "### [Swagger](https://partner.tlintegration.com/api/pms/swagger/index.html)  \n\nМетоды поиска, извлечения и обновления профилей гостей и связанных с ними данных (карты лояльности, бронирования, документы) средства размещения.\nЭта информация отображается в модуле *TL: WebPMS* в разделе \"Профили гостей\"."
    },
    {
      "name": "PropertyRoom",
      "description": "### [Swagger](https://partner.tlintegration.com/api/pms/swagger/index.html)  \n\nМетоды позволяют искать и извлекать информацию о номерах, содержащихся в номерном фонде средства размещения.\nЭта информация отображается в модуле *TL: WebPMS* в разделе \"Номерной фонд\"."
    },
    {
      "name": "PropertyReservation",
      "description": "### [Swagger](https://partner.tlintegration.com/api/pms/swagger/index.html)  \n\nRead Reservation API позволяет получить информацию о бронированиях средств размещения из модуля *TL: WebPMS*.\n\n### Получение краткой информации по бронированиям\n\nМетод возвращает постраничный список с краткой информацией по каждому бронированию.\n\n- Параметр `pageToken` позволяет продолжить получение списка.\n  Его значение берется из результатов предыдущего запроса.\n  Срок службы токена не ограничен.\n  Запрос может вернуть полученное ранее, но уже изменившееся бронирование.\n- Признак `hasNextPage = false` информирует о достижении конца списка.\n  Даже после этого запросы продолжения будут возвращать новые данные,\n  появившиеся с момента предыдущего запроса.\n\nЕсли произойдет потеря `pageToken`, рекомендуется выполнить новый запрос для получения нового `pageToken`.\n\n### Получение деталей бронирования\n\nМетод возвращает детальную информацию по одному бронированию.\n\nВ ответе есть идентификаторы, которые позволяют получить информацию: \n- Через [ContentApi](#tag/ContentApi):\n  - `reservation.roomStays[].roomType` - категория номеров.\n  - `reservation.roomStays[].options[]` - услуги.\n\n- Через [PMS Universal API > Rooms](#tag/PropertyRoom):\n  - `reservation.roomStays[].room` - комнаты.\n\n- Через [PMS Universal API > Guests](#tag/PropertyGuest):\n  - `reservation.roomStays[].guestIds` - гости.\n\n### Сохранение платежа в проживание\n\nМетод позволяет сложить платёж в проживание по идентификатору проживания `pmsRoomStayId`, который можно получить в деталях бронирования через [PMS Universal API > Reservations](#tag/PropertyReservation).\n\nВходящие данные:\n- `pmsPaymentSystemId` - Способ оплаты. Необходимо указать один из доступных способов, которые можно получить через GET `/v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/find-available-payment-systems`"
    },
    {
      "name": "PropertyAnalytics",
      "description": "### [Swagger](https://partner.tlintegration.com/api/pms-analytics/swagger/index.html)\n\nPMS Analytics API позволяет получать ежедневную статистику из модуля *TL: WebPMS*.\n\n### Получение ежедневной статистики заполняемости\n\nМетод возвращает ежедневную статистику по указанному периоду для средства размещения.\n\n- Диапазон дат ограничен 31 днём. Параметры `startStayDate` и `endStayDate` обязательны и задаются в формате ISO-8601 (YYYY-MM-DD).\n- Опциональный параметр `otbDate` позволяет отфильтровать историческую статистику только по бронированиям, созданным на указанную дату (OTB — On-the-Books).\n\n**Поля ответа**:\n- `currencyCode` — код валюты (ISO-4217)\n- `propertyRoomCount` — общее количество номеров, существующих в отеле согласно паспорту средства размещения\n- `dailyOccupancies` — ежедневная статистика:\n  - `date` — дата\n  - `occupancyRate` — коэффициент загрузки отеля (0.0–1.0, где 1.0 = 100%)\n  - `closedRoomCount` — номера не в эксплуатации (ремонт, консервация)\n  - `occupancyRoomCount` — занятые номера (включает только платные, номера с нулевой стомостью не включает)\n  - `complimentaryOccupancyRoomCount` — занятые номера с нулевой стоимостью\n  - `roomRevenue` — чистая выручка по номерам (без НДС, комиссий, доп. услуг)\n  - `revenue` — валовая выручка отеля за день\n  - `mealRevenue` — выручка по питанию\n  - `arrivalCount` — количество заездов за дату\n  - `guestCount` — количество гостей (взрослые + дети)"
    },
    {
      "name": "Reviews",
      "description": "### [Swagger](https://partner.tlintegration.com/api/reputation-public-reviews/swagger)\n\nPublic Reviews API позволяет получить отзывы средств размещения и статистику рейтингов из различных источников (Яндекс, Google, Booking, TripAdvisor и др.).\n\nЭта информация используется для отображения репутации отеля на сайтах партнеров и в системах управления репутацией.\n\n### Основные возможности\n\n1. **Получение списка отзывов** - постраничный список отзывов с возможностью сортировки по дате или рейтингу\n2. **Статистика отзывов** - средняя оценка и общее количество отзывов\n3. **Справочники** - источники отзывов и шкала рейтингов\n4. **Переводы** - автоматический перевод отзывов на запрашиваемый язык\n\n### Кеширование\n\n⚠️ **Важно**: Метод получения списка отзывов использует серверное кеширование для оптимизации производительности.\n\n**Время жизни кеша**: 30 секунд\n\nЭто означает:\n- Повторные запросы в течение 30 секунд вернут идентичные данные\n- Новые отзывы появятся с задержкой до 30 секунд\n- Изменения существующих отзывов отобразятся с той же задержкой\n\n### Пагинация\n\nAPI использует курсорную пагинацию для эффективной работы с большими объемами данных:\n\n- Используйте `maxPageSize` для контроля объема данных за один запрос (максимум 100)\n- Обрабатывайте `nextPageToken` для получения всех отзывов\n- Проверяйте `hasNextPage` перед следующим запросом\n\n### Авторизация\n\nВсе запросы требуют Bearer токен в заголовке `Authorization`. Токен должен быть действительным и иметь права доступа к указанному средству размещения.\n\n### Источники отзывов\n\nAPI агрегирует отзывы из различных источников:\n- Яндекс.Карты\n- Google Maps\n- Booking.com\n- TripAdvisor\n- Другие платформы\n\nКаждый отзыв содержит информацию об источнике в поле `sourceId`.\n\n### Рейтинговая шкала\n\nОтзывы оцениваются по 10-балльной шкале с категориями:\n- **Отлично** (8-10) - высокая оценка\n- **Очень хорошо** (6-8) - оценка выше среднего  \n- **Хорошо** (4-6) - средняя оценка\n- **Неплохо** (2-4) - оценка ниже среднего\n- **Плохо** (0-2) - низкая оценка\n\n### Переводы\n\nAPI поддерживает автоматический перевод отзывов на различные языки. Для получения перевода используйте параметр `languageCode` (IETF BCP-47 формат, например: `en`, `de`, `fr`).\n\nЕсли перевод доступен, он будет возвращен в поле `translatedText`."
    }
  ],
  "x-tagGroups": [
    {
      "name": "Документация API",
      "tags": [
        "Авторизация",
        "Лимиты",
        "Коды ошибок"
      ]
    },
    {
      "name": "TravelLine Partner - Content API",
      "tags": [
        "CancellationRules",
        "ContentApi",
        "ExtraStayRules"
      ]
    },
    {
      "name": "Read Reservation API",
      "tags": [
        "Reservation"
      ]
    },
    {
      "name": "TravelLine Partner - Search API",
      "tags": [
        "SearchRoomStays"
      ]
    },
    {
      "name": "PMS API",
      "tags": [
        "Property",
        "PropertyCompany",
        "PropertyGuest",
        "PropertyReservation",
        "PropertyRoom"
      ]
    },
    {
      "name": "PMS Analytics API",
      "tags": [
        "PropertyAnalytics"
      ]
    },
    {
      "name": "Public Reviews API",
      "tags": [
        "Reviews"
      ]
    }
  ]
}