Skip to end of metadata
Go to start of metadata

В данный момент находится в процессе активной разработки

API постоянно расширяется и изменяется, следите за новыми версиями

Общая информация

Подключение

$conf{API_ENABLE} = 1;

Конфигурация

В системе реализован RESTful интерфейс управления услугами и абонентами. Интерфейс находит по адресу /api.cgi.
Отправка, получение данных производится по протоколу HTTP POST/GET/PUT/DELETE. Все взаимодействие по интерфейсу выполняется по принципам REST (ресурс определяться по средствам задания имени в URL).

Для сохранение совместимости с стандартом REST все ключи автоматически переводятся в camelCase, но поскольку несоответствие названий в базе данных может усложнить разработку – существует возможность отключить такое превращение используя несколько вариантов:

  1. Параметр $conf{API_FILDS_CAMELIZE} в конфигурационном файле
  2. Задать параметрах snakeCase=1 в GET или в POST "snakeCase": "1"
ЗначениеРезультат
1Все ключи превращаются в camelCase
0Ключи в исходном виде, как в базе данных (snake_case)

Сделать ограничение на Admin RESTful API, можно с помощью опции $conf{API_IPS}, в конфигурационном файле config.pl, пример

$conf{API_IPS} = '192.20.208.1, 217.116.76.0/24, 104.81.60.171';

Или в настройках Настройка>Администраторы>Доступ

Возвращать по почту письма, смс или другие вещи которые поддерживают перевод в RESTful API, можно включить с помощью опции $conf{API_CONF_LANGUAGE}, в конфигурационном файле config.pl, пример

$conf{API_CONF_LANGUAGE} = 1;

Опция дебага, позволяет выводить debuginfo при ошибке, и также её сохранять с API_LOG. Никак не влияет на работу системы.

$conf{API_DEBUG} = 1;

Авторизация

Для подтверждения личности при выполнении запросов, некоторые пути требуют соответствующий привилегии:

  • Авторизация администратора выполняется через API_KEY. Ключ нужно передать в заголовке запроса KEY в значении API_KEY.
    Для получения API_KEY нужно его задать через веб-интерфейс
    Настройки > Администраторы, поле API_KEY.
  • Пользователям нужно использовать идентификатор сессии (sid), передавая его значение в заголовке USERSID
    Для получения sid можно воспользоваться авторизацией через API используя маршрут авторизация абонента (/user/login).


Разрешить получить сессию администратора с помощью REST API

$conf{API_ADMIN_AUTH_LOGIN} = 1;

Запуск на nginx

Чтобы включить поддержку nginx нужно:


Работа с API для ботов

для авторизации в USER API телеграмм бота необходимо

1) Прописать IP с которых будет обращаться бот к серверу

$conf{BOT_APIS}='127.0.0.1';

2) Прописать секрет бота для дополнительной проверки запроса (любое значение)

$conf{BOT_SECRET}='test1234567787654';

Авторизация происходит по хедеру BOTSECRET

BOTSECRET хранится в телеграм боте и передается для авторизации

Получение информации по пользователю и работа с пользователем

1) хедер USERBOT - какой именно бот авторизуется, возможные варианты - Viber, Telegram

2) хедер USERID - id пользователя в боте

Получить OpenAPI вашей версии

1) Прямо с API

Выставьте переменную:

$conf{API_SWAGGER} = 1;

Обращайтесь за
USER API     - /api.cgi/swagger
ADMIN API - /api.cgi/swagger/admin

Для того, чтобы развернуть Redocly, скопируйте файлы с misc/api/redocly/ в cgi-bin.
USER API     - /redocly-user.html
ADMIN API - /redocly-admin.html

2) Прямо с файла

В каждом биллинге уже установлен полностью скомпилированный OpenAPI.
Они находятся за путями misc/api/bundle_user.yaml и misc/api/bundle_admin.yaml

Стандарт REST

Реализованный в системе RESTful интерфейс управления услугами и абонентами соответствует стандарту REST API.

  • No labels