Контур: тест test.ihmanagement.ru/webservice/api/res/v1, логин Provotorov_API · 17.07.2026 (исправленная версия).
PUT /letters, поля и фильтры quotes) — убраны из вопросов и перенесены в раздел «Что уже выяснили». Ниже — только реальные пробелы.PUT /letters (js_data в query-string; в теле → «wrong parametr js_data!»). Проверено пробой: {"mes":"succesfuly updated","ref":1}, заказ меняется на месте (тот же letcod). Тело — полный заказ с существующими letcod + clientid гостя. NB: setletter (POST) с непустым letcod правку НЕ делает — создаёт новый; правка только через PUT.letters многометодный: GET=поиск, POST=создание (≡ setletter), PUT=изменение, DELETE=аннуляция.quotes — вход и выход описаны: параметры objid/datein/length/catcod; поля ответа resdate, catcod, quoteval (кол-во номеров для бронирования), fondval (кол-во номеров всего; 0=не задано), objid, concod, connr (№ договора).queryfl, oneplacefl, dopplacefl, agecod, sexcod, countintcod, concod, quotestartdays, jsonrestriction, oneplacedates.Наблюдение. В доке нет списка кодов ошибок (только поле «ref: код ошибки»). Встретили:
| ref | mes (дословно) | наша догадка |
|---|---|---|
-2 | the check-in date cannot be less than the current one | дата заезда в прошлом |
-21 | Quota is empty... | нет квоты на весь номер |
-35 | Booking of one main seat is not available! | нельзя продать одно место |
-36 / -37 | the check-in/out time is not equal to the time in the accommodation program | время заезда/выезда ≠ программе |
-31 | max days 0 | срок / минимум дней? |
-32 | (программа недоступна на период) | ? |
-3 | нет денег на счёте агента (letter_set_status_sold) | баланс агента |
-31, -32).ref или ориентироваться на текст mes? Локализуется ли mes?quotes возвращает false по части объектовНаблюдение. Прогон по 169 объектам: 58 отдают квоту (50 с местами), 111 → false. Объект 1456 («Кристалл Уют») — false при ЛЮБЫХ параметрах (datein/length/catcod, GET и POST); контрольный объект 1 с теми же параметрами отдаёт список. Формат запроса верный — дело в объекте.
false: аллотмент не заведён в контуре / нет договора у логина / квота не ведётся / иное?quotes=false — бронировать нельзя, или квота просто не публикуется, но setletter может пройти? (по таким объектам мы видели -21/-35)catplacefl не описан + oneplacefl расходится с поведениемЧто в доке: oneplacefl (категория) = «Возможность размещения 1 гостя во весь номер, 1/0». catplacefl (запрос) — описания нет, только "catplacefl": 0.
Что показали пробы (объект 1, concod=1, живой setletter с авто-отменой):
| Категория | Запрос | Результат |
|---|---|---|
| catcod 5, oneplacefl=1 | 1 гость, catplacefl=0 | ✅ 59 850 (цена одного места) |
| catcod 5, oneplacefl=1 | 1 гость, catplacefl=1 | ✅ 89 950 (≈1.5× места) |
| catcod 5, oneplacefl=1 | 2 гостя, catplacefl=0 | ✅ 119 700 (2× места) |
| catcod 9, oneplacefl=0 | 1 гость, catplacefl=0 | -35 «one main seat not available» |
| catcod 9, oneplacefl=0 | 1 гость, catplacefl=1 | ✅ 105 700 (выкуп прошёл ДАЖЕ при oneplacefl=0) |
| catcod 9, oneplacefl=0 | 2 гостя, catplacefl=0 | ✅ 140 700 |
Расхождение: дока про oneplacefl звучит как «выкуп всего номера», но выкуп идёт через catplacefl=1 и НЕ зависит от oneplacefl (прошёл и при 0). А oneplacefl=1 реально разрешает продать одно место (подселение, по цене места), не «занять весь номер».
catplacefl и все значения. Верно ли, что 1 = выкуп всего номера?oneplacefl: «продать одно место (подселение)» или «выкупить весь номер»?catplacefl=1) работает независимо от oneplacefl?oneplacedates («ограничения по подселению») — когда подселение запрещено или разрешено?PUT /letters) и «фейк-бронь» — политика и границыНаблюдение. Правка работает (раздел 0). Значит технически можно: забронировать заглушками (setletter), увидеть результат проверки квоты, затем поправить на реальные данные (PUT) или отменить (DELETE). ФИО-заглушки setletter принимает.
PUT /letters (даты, программу, состав, номер) и в каких статусах (только «Забронирован», или и «Продан»/«Оплачен»)?calcsum — разбивка итогаНаблюдение. Цена «за место» (2 гостя = 2× одного), calcsum отдаёт только суммарный price.
calcsum получить разбивку итога (по гостю / по услугам лечения-питания), или только суммарный price? Как учитываются pricedop и детское доп. место?Наблюдение. На тесте платёжка не подключена (paysysurl:"", paysysid:0). Статусы: Забронирован(1)→Продан(2)→Оплачен(3)→Аннулирован(4). letter_set_status_sold → -3 «нет денег на счёте агента».
paysysurl)? Есть ли callback/webhook о факте оплаты?letter_set_status_sold, переходы статусов.url_let_docs) доступен сразу после брони (Забронирован) — это ожидаемо или должен быть только после оплаты?programms явного флага нет — определяем по слову «Профсоюзная». Есть ли отдельное поле?concod → название/тип/условия)? Сейчас приходит concod + connr, без типа.check_price_by_object — как использовать для инкрементального синка (что в «изменённых», что в last_check_date)?false и наличие квоты на боевом контуре.catplacefl/oneplacefl (сейчас на 115/169 объектов одиночка получает -35).