ПОЛИТОТДЕЛ — ПРИЁМ ОСТАТКОВ ИЗ 1С Версия сборки: 20.10.2026 АДРЕС И АВТОРИЗАЦИЯ POST https://booking.politotdel.ru/api/Sync/Quotes Content-Type: application/JSON Authorization: <исходный секрет, согласованный с владельцем> Authorization содержит сам токен, БЕЗ Bearer. Такой же токен обязателен в теле. companyId — строка "64". Проверка этих значений уже настроена. Секрет не включён в инструкцию и хранится в коде только в виде хеша. HTTPS обязателен. Сессия администратора и CSRF-токен для этого API не нужны. ПРИМЕР JSON { "companyId": "64", "token": "<исходный секрет>", "data": [ { "startDate": "2026-10-16T00:00:00", "finishDate": "2026-10-20T00:00:00", "roomCategoryId": "16571", "quota": 1 } ] } Замените token исходным секретом. Комментарии // недопустимы. Даты примера показывают формат и не задают актуальные даты продажи. СЕМАНТИКА roomCategoryId — известный каталогу исходный ID ТИПА, не физического номера. quota — абсолютный остаток, целое число 0–100000. Ноль закрывает период. Значение применяется к каждой ночи интервала. Если оно меняется внутри периода, передайте несколько непересекающихся интервалов. ПРЕДПОЛОЖЕНИЕ ДЛЯ СОГЛАСОВАНИЯ: startDate включительно, finishDate исключительно. 16–20 октября обновляет ночи 16, 17, 18, 19 октября; ночь 20 октября не меняется. finishDate должен быть позже startDate. Для одной ночи 16 октября передайте startDate 16 октября, finishDate 17 октября. Форматы: YYYY-MM-DD или YYYY-MM-DDT00:00:00, допустима нулевая дробная часть секунд .0, .00, .000. Ненулевое время, Z и смещение +06:00 не принимаются. Это календарные даты базы отдыха, без перевода часового пояса. Пакет — частичное обновление: отсутствующие даты/типы остаются прежними. Весь пакет проверяется до записи. Ошибка одной записи отклоняет весь пакет. Пересечения с одинаковой квотой внутри пакета объединяются; с разной — 422. Новый пакет может изменить старый интервал. Повтор не суммирует остатки; время получения и журнал обновятся. Лимиты: 2 МиБ тела, 10000 записей, 3660 суток на интервал, 60000 сочетаний «тип — дата» до объединения пересечений. Большие выгрузки разбивайте. data: [] — успешный пустой пакет; остатки и режим обмена не меняются. ПЕРВАЯ ЗАГРУЗКА И ИЗМЕНЕНИЯ Сначала выгрузите все типы и даты всего горизонта продаж, включая нули. Первый непустой пакет включает режим 1С. Неполученные ночи блокируют бронирование. Между пакетами начальной выгрузки часть типов будет временно недоступна. Затем присылайте изменения при изменении шахматки. При открытии новых дат за пределами выгруженного горизонта тоже нужно передать их остатки. Нет версии/времени события: последнее принятое значение считается актуальным. Передавайте пакеты последовательно; не отправляйте старый повтор после нового изменения. При ошибке доставки повторяйте с учётом этого порядка. После сбоев очереди выполните полную сверку. УСПЕШНЫЙ ОТВЕТ — HTTP 200, application/json { "success": true, "companyId": "64", "receivedRows": 1, "updatedDays": 4, "changedDays": 4, "receivedAt": 1792454400000, "finishDateExclusive": true } receivedAt — серверное время получения в миллисекундах Unix (пример условный). updatedDays — число уникальных сочетаний типа и даты. changedDays — число новых/изменённых остатков; при точном повторе 0. Для пустого data: success, companyId, нулевые счётчики и message; receivedAt и finishDateExclusive в ответе пустого пакета отсутствуют. ОШИБКИ Общий вид: {"success": false, "error": "Пояснение"} 400 — некорректный JSON или нет массива data. 401 — отсутствует/неверен Authorization либо token в теле. 403 — неверный companyId. 405 — метод отличается от POST. 413 — превышен размер тела или лимит сочетаний типа и даты. 415 — неверный Content-Type; регистр application/JSON допускается. 422 — неизвестный тип, некорректные даты, квота, пересечения или другие данные. 426 — запрос без HTTPS. 500 — не удалось сохранить пакет; повторите с сохранением порядка. В админке «Обмен с 1С» видны получение, покрытие дат и последние успешные пакеты. Тела запросов, токен и его хеш через этот экран не выдаются. ПРОВЕРКА НА ХОСТИНГЕ Отправьте POST из 1С; проверьте HTTP 200, success: true и запись в админке. Открытие URL браузером даст 405 — это ожидаемо. При 404 проверьте .htaccess/mod_rewrite. Запасные адреса того же обработчика: https://booking.politotdel.ru/sync-quotes.php https://booking.politotdel.ru/api.php?path=/api/Sync/Quotes Авторизация, формат и семантика одинаковы. ОГРАНИЧЕНИЯ ЭТАПА У типов 16588 и 16605 расходятся вместимости. Их остатки принимаются, но продажа в режиме 1С блокируется до уточнения соответствий. Общая квота не выдаётся независимо каждому варианту. Наличие по каждой ночи не гарантирует один физический номер на весь срок: для реальной брони требуется подтверждение в 1С. Очередь создания/отмены заказов добавлена: см. 1C-ORDERS.txt. Передача включается после настройки внутренних кодов. PayKeeper и реальные платежи ещё не подключены. Тестовые заказы дополнительно вычитаются, поскольку в 1С не передаются. Новые заявки в 1С тоже уменьшают квоту до подтверждённой отмены либо ручной сверки. После создания в 1С это может временно занизить доступность. Для сверки нужны свежие остатки после ответа создания и проверка заказа администратором в шахматке. Автоматически определить включённые в квоту заказы по текущему формату невозможно.