Структура ответа#

Детальное описание структуры ответа от /hotels/offer_pricing.

Основная структура#

ПолеТипОбязательноОписание
hotelIdstringНетИдентификатор отеля
checkinDatedateДаДата заезда (YYYY-MM-DD)
checkoutDatedateДаДата выезда (YYYY-MM-DD)
searchIdstringНетИдентификатор поиска
offerOfferНетАктуальное предложение с подтвержденной ценой

Примеры ответов#

Успешный ответ#

Развернуть пример
  1{
  2  "hotelId": "hotel-001",
  3  "checkinDate": "2025-12-15",
  4  "checkoutDate": "2025-12-18",
  5  "searchId": "search-xyz789",
  6  "offer": {
  7    "offerId": "offer-001",
  8    "supplier": "ostrovok",
  9    "contractId": "tywu2374u2dhs2ui",
 10    "searchPresetId": "334ferf4545y3",
 11    "pricingPresetId": "3454tf4454545",
 12    "roomId": "room-101",
 13    "roomName": "Стандартный двухместный",
 14    "allotment": 5,
 15    "paymentType": "online",
 16    "isRefundable": true,
 17    "features": [
 18      { "type": "bedding", "value": "double" }
 19    ],
 20    "roomAmenities": [
 21      {
 22        "id": "wifi",
 23        "name": "Wi-Fi",
 24        "group": "internet",
 25        "included": true,
 26        "amount": 0,
 27        "currency": "RUB",
 28        "vat": {
 29          "isVatFree": true,
 30          "included": true,
 31          "value": {
 32            "amount": 0,
 33            "currency": "RUB"
 34          },
 35          "percent": "0"
 36        }
 37      }
 38    ],
 39    "roomImages": [
 40      "https://url/photo.JPEG",
 41      "https://url/photo_2.JPEG"
 42    ],
 43    "prices": {
 44      "vat": {
 45        "isVatFree": true,
 46        "included": true,
 47        "value": {
 48          "amount": 0,
 49          "currency": "RUB"
 50        },
 51        "percent": "0"
 52      },
 53      "totalPrice": {
 54        "total": {
 55          "amount": 15000.00,
 56          "currency": "RUB"
 57        },
 58        "discount": {
 59            "amount": 100.00,
 60            "currency": "RUB"
 61          },
 62        "markup": {
 63          "amount": 100,
 64          "currency": "RUB"
 65        },
 66        "serviceFee": {
 67          "amount": 0,
 68          "currency": "RUB"
 69        },
 70        "supplier": {
 71          "bar": {
 72            "amount": 1400,
 73            "currency": "RUB"
 74          },
 75          "gross": {
 76            "amount": 1600,
 77            "currency": "RUB"
 78          },
 79          "netto": {
 80            "amount": 1400,
 81            "currency": "RUB"
 82          },
 83          "rack": {
 84            "amount": 0,
 85            "currency": "RUB"
 86          }
 87        },
 88        "commission": {
 89          "margin": "100",
 90          "subagent": {
 91            "amount": 0,
 92            "currency": "RUB"
 93          },
 94          "supplier": {
 95            "amount": 200,
 96            "currency": "RUB"
 97          }
 98        }
 99      },
100      "meals": [
101        {
102          "mealId": "breakfast",
103          "mealName": "Завтрак",
104          "included": true,
105          "price": {
106            "total": {
107              "amount": 0,
108              "currency": "RUB"
109            },
110            "discount": {
111              "amount": 0,
112              "currency": "RUB"
113            },
114            "markup": {
115              "amount": 0,
116              "currency": "RUB"
117            },
118            "serviceFee": {
119              "amount": 0,
120              "currency": "RUB"
121            },
122            "supplier": {
123              "amount": 0,
124              "currency": "RUB"
125            },
126            "commission": {
127              "margin": "0",
128              "subagent": {
129                "amount": 0,
130                "currency": "RUB"
131              },
132              "supplier": {
133                "amount": 0,
134                "currency": "RUB"
135              }
136            },
137            "vat": {
138              "isVatFree": true,
139              "included": true,
140              "value": {
141                "amount": 0,
142                "currency": "RUB"
143              },
144              "percent": "0"
145            }
146          }
147        }
148      ],
149      "cancellationRules": {
150        "freeCancellationBefore": "2025-12-13T12:00:00+00:00",
151        "ruleList": [
152          {
153            "startAt": "2025-12-13T12:00:00+00:00",
154            "endAt": "2025-12-15T10:32:04.853Z",
155            "penalty": {
156              "total": {
157                "amount": 5000.00,
158                "currency": "RUB"
159              },
160              "discount": {
161                "amount": 0,
162                "currency": "RUB"
163              },
164              "markup": {
165                "amount": 0,
166                "currency": "RUB"
167              },
168              "serviceFee": {
169                "amount": 0,
170                "currency": "RUB"
171              },
172              "supplier": {
173                "amount": 5000,
174                "currency": "RUB"
175              }
176            },
177            "commission": {
178              "margin": "0",
179              "subagent": {
180                "amount": 0,
181                "currency": "RUB"
182              },
183              "supplier": {
184                "amount": 0,
185                "currency": "RUB"
186              }
187            },
188            "vat": {
189              "isVatFree": true,
190              "included": true,
191              "value": {
192                "amount": 0,
193                "currency": "RUB"
194              },
195              "percent": "0"
196            }
197          }
198        ]
199      },
200      "earlyCheckin": [
201        {
202          "time": "10:00",
203          "availableStatus": "Available",
204          "price": {
205            "total": {
206              "amount": 2000.00,
207              "currency": "RUB"
208            },
209            "discount": {
210              "amount": 0,
211              "currency": "RUB"
212            },
213            "markup": {
214              "amount": 0,
215              "currency": "RUB"
216            },
217            "serviceFee": {
218              "amount": 0,
219              "currency": "RUB"
220            },
221            "supplier": {
222              "amount": 0,
223              "currency": "RUB"
224            },
225            "commission": {
226              "margin": "0",
227              "subagent": {
228                "amount": 0,
229                "currency": "RUB"
230              },
231              "supplier": {
232                "amount": 0,
233                "currency": "RUB"
234              }
235            },
236            "vat": {
237              "isVatFree": true,
238              "included": true,
239              "value": {
240                "amount": 0,
241                "currency": "RUB"
242              },
243              "percent": "0"
244            }
245          }
246        }
247      ],
248      "lateCheckout": [
249        {
250          "time": "18:00",
251          "availableStatus": "OnRequest",
252          "price": {
253            "total": {
254              "amount": 3000.00,
255              "currency": "RUB"
256            },
257            "discount": {
258              "amount": 0,
259              "currency": "RUB"
260            },
261            "markup": {
262              "amount": 0,
263              "currency": "RUB"
264            },
265            "serviceFee": {
266              "amount": 0,
267              "currency": "RUB"
268            },
269            "supplier": {
270              "amount": 0,
271              "currency": "RUB"
272            },
273            "commission": {
274              "margin": "0",
275              "subagent": {
276                "amount": 0,
277                "currency": "RUB"
278              },
279              "supplier": {
280                "amount": 0,
281                "currency": "RUB"
282              }
283            },
284            "vat": {
285              "isVatFree": true,
286              "included": true,
287              "value": {
288                "amount": 0,
289                "currency": "RUB"
290              },
291              "percent": "0"
292            }
293          }
294        }
295      ]
296    },
297    "deposit": {
298      "value": {
299        "amount": 500,
300        "currency": "RUB"
301      },
302      "isRefundable": true
303    },
304    "isPetAvailable": true,
305    "checkinRules": [
306      {
307        "frontDeskTimeStart": "10:00",
308        "frontDeskTimeEnd": "20:00",
309        "keysPickup": "123",
310        "phone": "+123456",
311        "email": "email@gmail.com",
312        "address": "address 7/3",
313        "isContactless": true,
314        "comment": "Код замка 123"
315      }
316    ]
317  }
318}

Ответ с ошибкой#

1{
2  "error": {
3    "code": "OFFER_NOT_AVAILABLE",
4    "message": "Предложение недоступно",
5    "description": "Выбранное предложение больше недоступно",
6    "errorId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
7  }
8}

Типичные ошибки#

Код ошибкиПричинаРешение
VALIDATION_FAILEDОшибка валидации запросаПроверьте обязательные поля searchId и offerId
OFFER_NOT_AVAILABLEПредложение недоступноВыполните новый поиск
RATE_UNAVAILABLEТариф недоступен у поставщикаВыполните новый поиск
SUPPLIER_ERRORПоставщик вернул ошибкуПовторите запрос позже
TIMEOUTПревышено время ожидания ответа от поставщикаПовторите запрос позже
INTERNAL_ERRORВнутренняя ошибка сервераОбратитесь в поддержку