📘 API для работы с модулями Inn-Book
🧩 Архитектура модулей Inn-Book
Модули в Inn-Book создаются с использованием стандартных веб-технологий:
- UI: HTML + CSS + JavaScript
- Серверная логика: Node.js
🖥️ Гибкая интеграция интерфейса
Интерфейс (UI) модуля может быть встроен:
- В любую страницу системы Inn-Book (например, в карточку бронирования)
- В отдельный раздел программы
- В мобильное приложение Inn-Book
UI может:
- Обращаться к серверным скриптам модуля через
execution - Работать напрямую с внешними системами через API
- Использоваться в мобильном клиенте
🔐 Защита кода
Все модули, установленные из Inn-Book App Store, автоматически шифруются.
Это обеспечивает защиту исходного кода от несанкционированного доступа и копирования.
Описание
Сервер отеля Inn-Book содержит встроенный API-сервер, обеспечивающий работу с модулями.
Доступ осуществляется по API-ключу, который привязан к конкретному модулю.
⚠️ Доступ к API-методам запрашивается при установке модуля.
Без явного согласия пользователя все методы API будут заблокированы.
Это обеспечивает контроль и безопасность, исключая несанкционированный доступ к данным отеля.
🔑 Получение API-ключа
API-ключ генерируется автоматически при установке модуля.
Для получения ключа без использования модуля можно:
- Создать пустой модуль вручную
- Установить специальный модуль из магазина приложений, который отображает API-ключ и IP-адрес сервера
Ключ доступен в любой HTML-странице модуля через глобальную переменную APIKEY.
🌐 Общая структура API-запросов
Запросы отправляются через REST API следующим образом:
function send(m, d) {
fetch(`/modules/api_v1/${m}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'token': APIKEY
},
body: JSON.stringify(d)
})
.then(r => r.ok ? r.json() : Promise.reject(r.status))
.then(console.log)
.catch(e => console.error('Ошибка:', e));
}
Примеры
// Получение данных по брони
const booking = send('booking', {
act: 'getBookingDataByID',
idBooking: 922
});
// Вызов серверного скрипта из папки execution
const bookingExecution = send('execution', {
act: 'index.js',
idBooking: 922
});
⚙️ Модуль execution
В структуре модуля есть папка execution, содержащая Node.js-скрипты, реализующие серверную логику.
Способы запуска:
- По cron — настраивается в конфигурации модуля
- Как служба (daemon) — через конфигурацию
Ручной вызов:
- Через веб-интерфейс
- Из других скриптов
Пример вызова:
send('execution', {act: 'index.js', idBooking: 922});
⚠️ Ограничения для серверных скриптов
Скрипты в папкеexecutionвыполняются в ограниченной среде.
Доступ только к файловой системе внутри директории модуля.
Любая попытка обращения к внешним директориям или системным файлам будет заблокирована.
🧩 Модули и архитектура
Каждый модуль — это изолированный функциональный блок. Он может:
- Принимать и обрабатывать запросы через REST API
- Выполнять логику на сервере
- Иметь собственный UI на HTML/JS
- Работать с другими модулями и компонентами Inn-Book