Предложение#
Типы для описания предложений (номеров) отеля.
OfferBase#
Базовое предложение, используемое в результатах поиска.
| Поле | Тип | Обязательно | Описание |
|---|
supplier | string | Нет | Поставщик предложения. Возможные значения: ostrovok, acase. В рамках одного отеля предложения могут приходить от разных поставщиков. |
contractId | string | Нет | Идентификатор контракта (офиса) поставщика, по которому пришло предложение |
searchPresetId | string | Нет | Идентификатор пресета поиска, который был применён при формировании предложения. Пресеты настраиваются в личном кабинете платформы. |
pricingPresetId | string | Нет | Идентификатор пресета ценообразования, который был применён при расчёте цены. Пресеты настраиваются в личном кабинете платформы. |
amountExchange | object | Нет | Курс обмена валюты на момент создания предложения |
roomId | string | Да | Идентификатор номера |
roomName | string | Да | Название номера |
allotment | integer | Да | Доступное количество номеров |
features | RoomFeature[] | Нет | Характеристики номера |
paymentType | string | Да | Тип оплаты (hotel, online) |
isRefundable | boolean | Нет | Возможность возврата без штрафа сразу после бронирования. false не означает полную невозвратность — условия отмены с возможными штрафами описаны в prices.cancellationRules. |
roomAmenities | RoomAmenity[] | Нет | Удобства номера |
roomImages | RoomImages | Нет | Фотографии номера |
prices | Prices | Да | Ценовая информация |
roomGroupId | string | Нет | Идентификатор группы физически эквивалентных номеров. null, если номер не был сведён. Несколько офферов с одинаковым roomGroupId означают один и тот же физический номер. Передаётся, если в пресете поиска включена настройка «Объединять одинаковые номера» |
offerType | string, enum | Нет | Тип мастер-оффера: good, better, best. Передаётся только если в пресете поиска выбран тип формирования мастер-оффера «Три варианта», иначе всегда null |
deposit | Deposit | Нет | Депозит |
isPetAvailable | boolean | Нет | Разрешено размещение с питомцами |
checkinRules | CheckinRule[] | Нет | Правила заселения |
bedVariants | BedItem[][] | Нет | Варианты конфигурации кроватей в номере. Заполняется в зависимости от поставщика |
RoomImages#
Фотографии номера.
| Поле | Тип | Описание |
|---|
main | string | Главное фото (URL) |
gallery | string[] | Галерея фотографий (URL) |
Deposit#
Информация о депозите.
| Поле | Тип | Описание |
|---|
value | Money | Сумма депозита |
isRefundable | boolean | Возвратный депозит |
CheckinRule#
Правила и контакты для заселения. Все параметры объекта опциональны — наличие конкретных полей в ответе зависит от информации, которую передаёт поставщик.
| Поле | Тип | Описание |
|---|
frontDeskTimeStart | string | Начало работы ресепшн (HH:mm) |
frontDeskTimeEnd | string | Конец работы ресепшн (HH:mm) |
keysPickup | string | Способ получения ключей |
phone | string | Телефон для связи |
email | string | Email для связи |
address | string | Адрес заселения |
isContactless | boolean | Бесконтактное заселение |
comment | string | Дополнительный комментарий |
Offer#
Полное предложение с идентификатором. Наследует все поля OfferBase, включая bedVariants.
| Поле | Тип | Обязательно | Описание |
|---|
offerId | string | Да | Идентификатор предложения для бронирования. Возвращается методами hotel pricing и offer pricing — в результатах search отсутствует |
offerExpiration | string (datetime) | Нет | Дата и время до которого действует оффер (UTC+0, ISO 8601). Используйте для определения актуальности предложения перед бронированием |
additionalServices | AdditionalServices | Нет | Дополнительные услуги, доступные для номера. Присутствует только в ответах hotel_pricing и offer_pricing |
| …все поля OfferBase | | | |
Примеры#
1{
2 "offerId": "abc123-offer-id",
3 "roomId": "room-101",
4 "roomName": "Стандартный двухместный номер",
5 "allotment": 5,
6 "paymentType": "online",
7 "isRefundable": true,
8 "features": [
9 { "type": "bedding", "value": "3" }
10 ],
11 "roomImages": {
12 "main": "https://url/photo.JPEG",
13 "gallery": [
14 "https://url/photo.JPEG",
15 "https://url/photo_2.JPEG"
16 ]
17 },
18 "prices": {
19 "totalPrice": {
20 "total": {
21 "amount": 15000.00,
22 "currency": "RUB"
23 }
24 },
25 "meals": [
26 {
27 "mealId": "breakfast",
28 "mealName": "Завтрак",
29 "included": true
30 }
31 ]
32 },
33 "roomGroupId": "room-group-101",
34 "offerType": "best",
35 "bedVariants": [
36 [
37 { "bedType": "double", "count": 1, "isExtraBed": false }
38 ],
39 [
40 { "bedType": "single", "count": 2, "isExtraBed": false }
41 ]
42 ]
43}
BedItem#
Вариант кровати в номере. Вложенность: Offer → bedVariants[][] → BedItem.
| Поле | Тип | Обязательно | Описание |
|---|
bedType | string | Нет | Тип кровати от поставщика (например: single, twin, double) |
count | integer | Нет | Количество кроватей данного типа в номере |
isExtraBed | boolean | Нет | Признак дополнительной кровати |
Примеры#
1{ "bedType": "double", "count": 1, "isExtraBed": false }
AdditionalServices#
Дополнительные услуги, доступные для номера.
AdditionalMeal#
| Поле | Тип | Обязательно | Описание |
|---|
type | string | Нет | Тип питания. Пример: allInclusive, breakfast, breakfastBuffet |
inclusion | string, enum | Нет | Платно/бесплатно: unspecified, included, notIncluded |
price | integer | Нет | Цена |
currency | string | Нет | Валюта |
priceUnit | string, enum | Нет | Единица тарификации: unspecified, perGuestPerNight, perGuestPerStay, perRoomPerNight, perRoomPerStay, perHour, perWeek |
canBeBooked | boolean | Да | Можно ли забронировать услугу онлайн |
paymentPlace | string | Да | Место расчёта |
Примеры#
1{
2 "type": "breakfast",
3 "inclusion": "notIncluded",
4 "price": 1500,
5 "currency": "RUB",
6 "priceUnit": "perGuestPerNight",
7 "canBeBooked": false,
8 "paymentPlace": "hotel"
9}
AdditionalChildrenMeal#
| Поле | Тип | Обязательно | Описание |
|---|
type | string | Нет | Тип питания. Пример: allInclusive, breakfast, breakfastBuffet |
inclusion | string, enum | Нет | Платно/бесплатно: unspecified, included, notIncluded |
ageStart | integer | Нет | Возраст от |
ageEnd | integer | Нет | Возраст до |
price | integer | Нет | Цена |
currency | string | Нет | Валюта |
priceUnit | string, enum | Нет | Единица тарификации: unspecified, perGuestPerNight, perGuestPerStay, perRoomPerNight, perRoomPerStay, perHour, perWeek |
canBeBooked | boolean | Да | Можно ли забронировать услугу онлайн |
paymentPlace | string | Да | Место расчёта |
| Поле | Тип | Обязательно | Описание |
|---|
amount | integer | Нет | Количество доступных мест |
inclusion | string, enum | Нет | Платно/бесплатно: unspecified, included, notIncluded |
price | integer | Нет | Цена |
currency | string | Нет | Валюта |
priceUnit | string, enum | Нет | Единица тарификации: unspecified, perGuestPerNight, perGuestPerStay, perRoomPerNight, perRoomPerStay, perHour, perWeek |
canBeBooked | boolean | Да | Можно ли забронировать услугу онлайн |
paymentPlace | string | Да | Место расчёта |
| Поле | Тип | Обязательно | Описание |
|---|
amount | integer | Нет | Количество доступных мест |
allowed | string, enum | Нет | Дополнительная детская кровать доступна: unspecified, availabile, unavailabile |
ageStart | integer | Нет | Возраст от |
ageEnd | integer | Нет | Возраст до |
price | integer | Нет | Цена |
currency | string | Нет | Валюта |
priceUnit | string, enum | Нет | Единица тарификации: unspecified, perGuestPerNight, perGuestPerStay, perRoomPerNight, perRoomPerStay, perHour, perWeek |
canBeBooked | boolean | Да | Можно ли забронировать услугу онлайн |
paymentPlace | string | Да | Место расчёта |
AdditionalCot#
| Поле | Тип | Обязательно | Описание |
|---|
amount | integer | Нет | Количество доступных мест |
inclusion | string, enum | Нет | Платно/бесплатно: unspecified, included, notIncluded |
price | integer | Нет | Цена |
currency | string | Нет | Валюта |
priceUnit | string, enum | Нет | Единица тарификации: unspecified, perGuestPerNight, perGuestPerStay, perRoomPerNight, perRoomPerStay, perHour, perWeek |
canBeBooked | boolean | Да | Можно ли забронировать услугу онлайн |
paymentPlace | string | Да | Место расчёта |
AdditionalEarlyLateCheckout#
Структура аналогична CheckinCheckoutOption, дополненная canBeBooked/paymentPlace.
| Поле | Тип | Обязательно | Описание |
|---|
time | time | Да | Время заезда/выезда (формат HH:mm) |
availableStatus | AvailabilityStatus | Да | Статус доступности |
price | ServicePrice | Да | Стоимость услуги |
canBeBooked | boolean | Да | true, если availableStatus = "available", иначе false |
paymentPlace | string | Да | Берётся из Offer.paymentType |
Примеры#
1{
2 "time": "18:00",
3 "availableStatus": "available",
4 "price": {
5 "total": {
6 "amount": 2000.00,
7 "currency": "RUB"
8 }
9 },
10 "canBeBooked": true,
11 "paymentPlace": "online"
12}