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

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

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

ПолеТипОбязательноОписание
hotelIdstringНетИдентификатор отеля
checkinDatedateДаДата заезда (YYYY-MM-DD)
checkoutDatedateДаДата выезда (YYYY-MM-DD)
searchIdstringНетИдентификатор для проверки цены и бронирования
offersOffer[]НетСписок доступных предложений
hotelMetaPolicyHotelMetaPolicy[]НетПолитики размещения объекта, сгруппированные по поставщику. Включает только поставщиков, чьи офферы вошли в offers

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

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

Развернуть пример
  1{
  2  "hotelId": "hotel-001",
  3  "checkinDate": "2025-12-15",
  4  "checkoutDate": "2025-12-18",
  5  "searchId": "search-xyz789",
  6  "offers": [
  7    {
  8      "offerId": "offer-001",
  9      "supplier": "ostrovok",
 10      "contractId": "tywu2374u2dhs2ui",
 11      "searchPresetId": "334ferf4545y3",
 12      "pricingPresetId": "3454tf4454545",
 13      "roomId": "room-101",
 14      "roomGroupId": "room-group-101",
 15      "offerType": "best",
 16      "roomName": "Стандартный двухместный",
 17      "allotment": 5,
 18      "paymentType": "online",
 19      "isRefundable": true,
 20      "features": [
 21        { "type": "bedding", "value": "3" }
 22      ],
 23      "bedVariants": [
 24        [
 25          { "bedType": "double", "count": 1, "isExtraBed": false }
 26        ]
 27      ],
 28      "additionalServices": {
 29        "meal": [
 30          {
 31            "type": "breakfast",
 32            "inclusion": "notIncluded",
 33            "price": 1500,
 34            "currency": "RUB",
 35            "priceUnit": "perGuestPerNight",
 36            "canBeBooked": false,
 37            "paymentPlace": "hotel"
 38          }
 39        ],
 40        "earlyLateCheckout": [
 41          {
 42            "time": "18:00",
 43            "availableStatus": "available",
 44            "price": {
 45              "total": {
 46                "amount": 2000.00,
 47                "currency": "RUB"
 48              }
 49            },
 50            "canBeBooked": true,
 51            "paymentPlace": "online"
 52          }
 53        ]
 54      },
 55      "roomAmenities": [
 56        {
 57          "id": "wifi",
 58          "name": "Wi-Fi",
 59          "group": "internet",
 60          "included": true,
 61          "amount": 0,
 62          "currency": "RUB",
 63          "vat": {
 64            "isVatFree": true,
 65            "included": true,
 66            "value": {
 67              "amount": 0,
 68              "currency": "RUB"
 69            },
 70            "percent": "0"
 71          }
 72        },
 73        {
 74          "id": "ac",
 75          "name": "Кондиционер",
 76          "group": "comfort",
 77          "included": true,
 78          "amount": 0,
 79          "currency": "RUB",
 80          "vat": {
 81            "isVatFree": true,
 82            "included": true,
 83            "value": {
 84              "amount": 0,
 85              "currency": "RUB"
 86            },
 87            "percent": "0"
 88          }
 89        }
 90      ],
 91      "roomImages": {
 92        "main": "https://url/photo.JPEG",
 93        "gallery": [
 94          "https://url/photo.JPEG",
 95          "https://url/photo_2.JPEG"
 96        ]
 97      },
 98      "prices": {
 99        "vat": {
100          "isVatFree": true,
101          "included": true,
102          "value": {
103            "amount": 0,
104            "currency": "RUB"
105          },
106          "percent": "0"
107        },
108        "totalPrice": {
109          "total": {
110            "amount": 1500.00,
111            "currency": "RUB"
112          },
113          "discount": {
114            "amount": 100.00,
115            "currency": "RUB"
116          },
117          "markup": {
118            "amount": 100,
119            "currency": "RUB"
120          },
121          "serviceFee": {
122            "amount": 0,
123            "currency": "RUB"
124          },
125          "supplier": {
126            "bar": {
127              "amount": 1400,
128              "currency": "RUB"
129            },
130            "gross": {
131              "amount": 1600,
132              "currency": "RUB"
133            },
134            "netto": {
135              "amount": 1400,
136              "currency": "RUB"
137            },
138            "rack": {
139              "amount": 0,
140              "currency": "RUB"
141            }
142          },
143          "commission": {
144            "margin": "100",
145            "marginCurrency": "RUB",
146            "subagent": {
147              "amount": 0,
148              "currency": "RUB"
149            },
150            "supplier": {
151              "amount": 200,
152              "currency": "RUB"
153            }
154          }
155        },
156        "meals": [
157          {
158            "mealId": "breakfast",
159            "mealName": "Завтрак",
160            "included": true,
161            "price": {
162              "total": {
163                "amount": 0,
164                "currency": "RUB"
165              },
166              "discount": {
167                "amount": 0,
168                "currency": "RUB"
169              },
170              "markup": {
171                "amount": 0,
172                "currency": "RUB"
173              },
174              "serviceFee": {
175                "amount": 0,
176                "currency": "RUB"
177              },
178              "supplier": {
179                "amount": 0,
180                "currency": "RUB"
181              },
182              "supplierBreakdown": {
183                "bar": {
184                  "amount": 0,
185                  "currency": "RUB"
186                },
187                "gross": {
188                  "amount": 0,
189                  "currency": "RUB"
190                },
191                "netto": {
192                  "amount": 0,
193                  "currency": "RUB"
194                },
195                "rack": {
196                  "amount": 0,
197                  "currency": "RUB"
198                }
199              },
200              "commission": {
201                "margin": "0",
202                "marginCurrency": "RUB",
203                "subagent": {
204                  "amount": 0,
205                  "currency": "RUB"
206                },
207                "supplier": {
208                  "amount": 0,
209                  "currency": "RUB"
210                }
211              },
212              "vat": {
213                "isVatFree": true,
214                "included": true,
215                "value": {
216                  "amount": 0,
217                  "currency": "RUB"
218                },
219                "percent": "0"
220              }
221            }
222          }
223        ],
224        "cancellationRules": {
225          "freeCancellationBefore": "2025-12-13T12:00:00+00:00",
226          "ruleList": [
227            {
228              "startAt": "2025-12-13T12:00:00+00:00",
229              "endAt": "2025-12-15T10:32:04.853Z",
230              "penalty": {
231                "total": {
232                  "amount": 5000.00,
233                  "currency": "RUB"
234                },
235                "discount": {
236                  "amount": 0,
237                  "currency": "RUB"
238                },
239                "markup": {
240                  "amount": 0,
241                  "currency": "RUB"
242                },
243                "serviceFee": {
244                  "amount": 0,
245                  "currency": "RUB"
246                },
247                "supplier": {
248                  "amount": 5000,
249                  "currency": "RUB"
250                },
251                "supplierBreakdown": {
252                  "bar": {
253                    "amount": 5000,
254                    "currency": "RUB"
255                  },
256                  "gross": {
257                    "amount": 5000,
258                    "currency": "RUB"
259                  },
260                  "netto": {
261                    "amount": 5000,
262                    "currency": "RUB"
263                  },
264                  "rack": {
265                    "amount": 0,
266                    "currency": "RUB"
267                  }
268                }
269              },
270              "commission": {
271                "margin": "0",
272                "marginCurrency": "RUB",
273                "subagent": {
274                  "amount": 0,
275                  "currency": "RUB"
276                },
277                "supplier": {
278                  "amount": 0,
279                  "currency": "RUB"
280                }
281              },
282              "vat": {
283                "isVatFree": true,
284                "included": true,
285                "value": {
286                  "amount": 0,
287                  "currency": "RUB"
288                },
289                "percent": "0"
290              }
291            }
292          ]
293        },
294        "taxData": {
295          "taxes": [
296            {
297              "name": "city_tax",
298              "isIncluded": false,
299              "amount": "15.00",
300              "currencyCode": "EUR"
301            }
302          ]
303        },
304        "earlyCheckin": [
305          {
306            "time": "10:00",
307            "availableStatus": "available",
308            "price": {
309              "total": {
310                "amount": 2000.00,
311                "currency": "RUB"
312              },
313              "discount": {
314                "amount": 0,
315                "currency": "RUB"
316              },
317              "markup": {
318                "amount": 0,
319                "currency": "RUB"
320              },
321              "serviceFee": {
322                "amount": 0,
323                "currency": "RUB"
324              },
325              "supplier": {
326                "amount": 0,
327                "currency": "RUB"
328              },
329              "supplierBreakdown": {
330                "bar": {
331                  "amount": 0,
332                  "currency": "RUB"
333                },
334                "gross": {
335                  "amount": 0,
336                  "currency": "RUB"
337                },
338                "netto": {
339                  "amount": 0,
340                  "currency": "RUB"
341                },
342                "rack": {
343                  "amount": 0,
344                  "currency": "RUB"
345                }
346              },
347              "commission": {
348                "margin": "0",
349                "marginCurrency": "RUB",
350                "subagent": {
351                  "amount": 0,
352                  "currency": "RUB"
353                },
354                "supplier": {
355                  "amount": 0,
356                  "currency": "RUB"
357                }
358              },
359              "vat": {
360                "isVatFree": true,
361                "included": true,
362                "value": {
363                  "amount": 0,
364                  "currency": "RUB"
365                },
366                "percent": "0"
367              }
368            }
369          }
370        ],
371        "lateCheckout": [
372          {
373            "time": "18:00",
374            "availableStatus": "onRequest",
375            "price": {
376              "total": {
377                "amount": 3000.00,
378                "currency": "RUB"
379              },
380              "discount": {
381                "amount": 0,
382                "currency": "RUB"
383              },
384              "markup": {
385                "amount": 0,
386                "currency": "RUB"
387              },
388              "serviceFee": {
389                "amount": 0,
390                "currency": "RUB"
391              },
392              "supplier": {
393                "amount": 0,
394                "currency": "RUB"
395              },
396              "supplierBreakdown": {
397                "bar": {
398                  "amount": 0,
399                  "currency": "RUB"
400                },
401                "gross": {
402                  "amount": 0,
403                  "currency": "RUB"
404                },
405                "netto": {
406                  "amount": 0,
407                  "currency": "RUB"
408                },
409                "rack": {
410                  "amount": 0,
411                  "currency": "RUB"
412                }
413              },
414              "commission": {
415                "margin": "0",
416                "marginCurrency": "RUB",
417                "subagent": {
418                  "amount": 0,
419                  "currency": "RUB"
420                },
421                "supplier": {
422                  "amount": 0,
423                  "currency": "RUB"
424                }
425              },
426              "vat": {
427                "isVatFree": true,
428                "included": true,
429                "value": {
430                  "amount": 0,
431                  "currency": "RUB"
432                },
433                "percent": "0"
434              }
435            }
436          }
437        ]
438      },
439      "offerExpiration": "2026-06-17T15:14:03.4719533+00:00",
440      "deposit": {
441          "value": {
442            "amount": 500,
443            "currency": "RUB"
444          },
445          "isRefundable": true
446        },
447      "isPetAvailable": true,
448      "checkinRules": [
449        {
450          "frontDeskTimeStart": "10:00",
451          "frontDeskTimeEnd": "20:00",
452          "keysPickup": "123",
453          "phone": "+123456",
454          "email": "email@gmail.com",
455          "address": "address 7/3",
456          "isContactless": true,
457          "comment": "Код замка 123"
458        }
459      ]
460    },
461    {
462      "offerId": "offer-002",
463      "roomId": "room-201",
464      "roomName": "Люкс с видом на море",
465      "allotment": 2,
466      "paymentType": "online",
467      "isRefundable": true,
468      "features": [
469        { "type": "bedding", "value": "3" },
470        { "type": "view", "value": "31" }
471      ],
472      "roomImages": {
473        "main": "https://url/photo.JPEG",
474        "gallery": [
475          "https://url/photo.JPEG",
476          "https://url/photo_2.JPEG"
477        ]
478      },
479      "prices": {
480        "totalPrice": {
481          "total": {
482            "amount": 35000.00,
483            "currency": "RUB"
484          }
485        },
486        "meals": [
487          {
488            "mealId": "half_board",
489            "mealName": "Полупансион",
490            "included": true
491          }
492        ],
493        "cancellationRules": {
494          "freeCancellationBefore": "2025-12-10T12:00:00+00:00"
495        }
496      },
497      "deposit": {
498          "value": {
499            "amount": 500,
500            "currency": "RUB"
501          },
502          "isRefundable": true
503         },
504      "isPetAvailable": true,
505      "checkinRules": [
506        {
507          "frontDeskTimeStart": "00:00"
508        }
509      ]
510    }
511  ],
512  "hotelMetaPolicy": [
513    {
514      "supplier": "ostrovok",
515      "deposit": [
516        {
517          "allowed": "availabile",
518          "type": "cash",
519          "paymentType": "hotel",
520          "pricingMethod": "fixed",
521          "refundable": "refundable",
522          "price": 500,
523          "currency": "RUB",
524          "priceUnit": "perRoomPerStay"
525        }
526      ],
527      "extraInfo": [
528        {
529          "name": "important_info",
530          "supplier": "ostrovok",
531          "comment": "Необходимо предъявить паспорт при заселении"
532        }
533      ]
534    }
535  ]
536}

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

1{
2  "error": {
3    "code": "NO_TARGETS",
4    "message": "No supplier targets available for this request.",
5    "description": "No supplier targets available for this request."
6  }
7}

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

Код ошибкиПричинаРешение
INVALID_HOTEL_IDНеверный формат hotelIdПроверьте формат переданного hotelId
HOTEL_MAPPING_NOT_FOUNDОтель не найден в справочнике поставщикаПроверьте корректность hotelId
NO_TARGETSНет доступных поставщиков/контрактов для выполнения запросаПовторите запрос позже
NO_SEARCH_PRESETS_CONFIGUREDДля клиента не настроен ни один пресет поискаОбратитесь в поддержку
NO_MATCHING_SEARCH_PRESETНи один настроенный пресет поиска не подходит под параметры запросаПроверьте параметры запроса
SUPPLIER_ERRORЗапрос к поставщику завершился с ошибкойПовторите запрос позже
SYSTEM_ERRORНепредвиденная внутренняя ошибка TAPIОбратитесь в поддержку
VALIDATION_ERRORОшибка валидации запросаПроверьте обязательные поля и форматы значений

Помимо перечисленных TAPI-кодов, при ошибке на стороне поставщика в ответе может быть возвращён код ошибки поставщика без изменений (проброс) — набор таких кодов зависит от поставщика и не фиксирован.