Skip to main content

📘 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