Описание функциональных характеристик
Программного обеспечение «Apichannel»

1. Краткое описание

Программное обеспечение «Apichannel» представляет собой серверный программный компонент (бэкенд-сервис), реализованный на языке Go и функционирующий в облачной инфраструктуре ООО «Румлинк Отель АПИ». Сервис предназначен для управления процессами бронирования средств размещения (гостиницы (в том числе: отели (городские, загородные, курортные и другие), мотели, ботели, апарт-отели, хостелы, пансионаты и иные аналогичные средства размещения, в том числе модульные некапитальные средства размещения); санатории; базы отдыха (в том числе: туристские базы, «глэмпинги», модульные некапитальные и иные аналогичные средства размещения); кемпинг), разместивших информацию о своих услугах в специализированной системе управления средством размещения (PMS-система) и / или передавшей информацию о своих услугах и тарифах в автоматизированный менеджер каналов продаж (Channel Manager). Управление происходит посредством обеспечения автоматизированного обмена данными с такими системами и интеграции с внешними поставщиками гостиничных услуг.
Программное обеспечение выступает в роли единой точки входа API- канала: принимает запросы от контрагентов и внутренних информационных систем, выполняет бизнес-валидацию данных, взаимодействует с базой данных, публикует события в шину сообщений Kafka и возвращает структурированные ответы. Сервис поддерживает современные REST API-интерфейсы, а также legacy-интерфейс (/api/connect.php) для обеспечения обратной совместимости с ранее подключенными контрагентами. Для взаимодействия с системой используются HTTP-клиенты с поддержкой JSON, включая сторонние системы бронирования, корпоративные ERP-системы, мобильные и веб-приложения. Аутентификация осуществляется посредством API-ключей контрагентов.
Взаимодействие с гостиницами и иными средствами размещения может осуществляться посредством интеграции с внешними информационными системами класса PMS (Property Management System) и Channel Manager.
Все данные о наличии номерного фонда, тарифах, доступности, бронированиях и сопутствующих услугах передаются через подключенные PMS и Channel Manager системы, выступающие технологическими посредниками между средствами размещения и Программным обеспечением «Apichannel».
Программное обеспечение выполняет функции технологической интеграционной платформы и обеспечивает стандартизированный обмен данными между подключенными информационными системами.

2. Требования к программному обеспечению

Программное обеспечение «Apichannel» является серверным компонентом и не требует установки клиентского программного обеспечения на устройство конечного пользователя. Для интеграции с системой вызывающей стороне необходимо:
− Среда выполнения сервиса (сервер): Go 1.21 и выше; Docker (для контейнерного развёртывания).

− Операционная система сервера: Linux (рекомендуется Ubuntu 20.04 LTS и выше); поддержка macOS и Windows для локальной разработки.

− СУБД: MariaDB / MySQL 8.0 и выше. Используется два независимых подключения: read и write.

− Брокер сообщений: Apache Kafka. Применяется для публикации событий обновления цен, квот, ограничений и логов запросов.

− HTTP-клиент интегрирующейся системы: любое ПО, поддерживающее протокол HTTP/HTTPS и формат JSON (REST-клиенты, SDK, веб- браузер со Swagger UI)

3. Требования к сети

Рекомендуемая входящая/исходящая скорость соединения — от 1 Мбит/с. Доступ к сервису осуществляется по следующим портам:
− Порт 80. Используется для HTTP-трафика при локальном развёртывании и внутрисетевых запросах.

− Порт 443. Применяется для защищённого HTTPS-трафика в production-окружении; обеспечивает шифрование данных между клиентом и сервером.

− Порт 9090 (метрики). Используется для сбора метрик Prometheus (/metrics). Доступ рекомендуется ограничить на уровне сетевых политик.
Сервис также требует сетевой связности с:
− MariaDB-сервером (порт 3306) — для операций чтения и записи;

− Kafka-брокером — для публикации событий.

4. Требования к аппаратному обеспечению

Требования к аппаратному обеспечению конечных пользователей (контрагентов, интегрирующихся систем) не предъявляются — взаимодействие осуществляется через стандартные HTTP-запросы.
Рекомендуемые характеристики сервера для production-развёртывания сервиса:
− CPU: 2 ядра и выше;

− RAM: 512 МБ и выше (рекомендуется 1 ГБ);

− дисковое пространство: от 1 ГБ для бинарного файла, логов и временных данных.

5. Требования к пользователю

Программное обеспечение «Apichannel» является программным API- сервисом и не предназначен для непосредственной работы конечных пользователей через графический интерфейс. Эксплуатация системы предполагает взаимодействие следующих категорий специалистов:
− Разработчик / DevOps: должен владеть навыками работы с REST API и форматом JSON; знать принципы HTTP-аутентификации по API- ключу; уметь читать Swagger/OpenAPI-документацию (доступна по /swagger/index.html).

− Администратор системы: должен уметь разворачивать сервисы с помощью Docker и docker-compose; иметь опыт настройки переменных окружения; владеть базовыми навыками мониторинга (Prometheus, логи).

− Аналитик / менеджер: для работы с системой достаточно понимания процессов бронирования средств размещения; прямого доступа к сервису не требуется — взаимодействие осуществляется через интерфейсы смежных систем.

− Контрагент (внешняя система): интегрируется с сервисом по API- ключу; для работы с системой необходим HTTP-клиент с поддержкой JSON; прямого доступа к инфраструктуре не требуется.

6. Функциональные возможности системы

Программное обеспечение «Apichannel» предоставляет следующие функциональные возможности:
1. Управление номерами и тарифами:
− получение списка номеров и тарифных планов средства размещения по идентификатору (GET /api/rooms-and-rate-plans);

− фильтрация по параметрам: тип номера, тарифный план, занятость, период;

− поддержка нетто-цен и публичных тарифов;

− обновление цен, квот и ограничений от контрагентов/поставщиков (POST /api/hotels/update).
2. Управление заказами (бронированиями):
− создание нового бронирования (POST /api/orders);

− изменение существующего бронирования (PATCH /api/orders/{id});

− получение информации о заказе или списка заказов по средству размещения (GET /api/orders/{id}, GET /api/orders);

− подтверждение бронирования (POST /api/orders/{id}/confirm);

− отмена бронирования (PATCH /api/orders/{id}/cancel);

− поддерживаемые статусы заказа: NEW, CONFIRMED, MODIFIED, CANCELLED.
3. Legacy API-канал (обратная совместимость):
− поддержка единой точки входа POST /api/connect.php для интеграции с ранее подключёнными партнёрами;

− автоматическое проксирование legacy-запросов на REST-эндпоинты в зависимости от параметра method:

− getRoomsAndRatePlans → GET /api/rooms-and-rate-plans;

− update → POST /api/hotels/update;

− order (action: get / conf / createBooking / modifyBooking / cancelBooking) → соответствующие REST-операции.
4. Аутентификация и авторизация:
− идентификация контрагента по API-ключу (передаётся в поле key);

− валидация ключа и получение профиля контрагента при каждом запросе;

− возврат стандартизированных ошибок доступа (403 Access denied).
5. Оплата и финансовые параметры:
− поддержка методов оплаты: безналичный расчёт (PREPAY) и наличные (CASH);

− хранение и передача финансовых параметров бронирования (сумма, метод оплаты, статус).
6. Мониторинг и операционные возможности:
− проверка работоспособности сервиса и доступности базы данных: GET /healthz;

− сбор метрик Prometheus (HTTP-запросы, операции с БД): GET /metrics;

− публикация событий в Kafka-топики: логи запросов, обновления цен и квот от различных поставщиков (Bnovo, RealtyCalendar, Kontur. Otel, OtelMS и др.);

− интеграция с Sentry для отслеживания ошибок и трассировки.
7. Swagger / документация API:
− интерактивная документация доступна по адресу /swagger/index.html;

− спецификация OpenAPI 2.0 (swagger.yaml / swagger. json) актуализируется командой make swagger.

7. Роли пользователей

В рамках экосистемы, использующей Программное обеспечение «Apichannel», выделяются следующие роли:
− Контрагент (внешняя система): интегрируется с сервисом по API- ключу; выполняет запросы на получение номеров/тарифов и управление бронированиями.

− Администратор системы: управляет конфигурацией сервиса, переменными окружения, доступом к базе данных и мониторингом.

− Разработчик / DevOps: осуществляет развёртывание, обновление и техническую поддержку сервиса.

− Аналитик / менеджер: использует данные, поступающие через смежные системы, без прямого доступа к API.