Функционал доступен при наличии лицензии SMG-API.
В данном приложении описывается REST API шлюза SMG, предназначенное для управления конфигурацией и получения информации о состоянии устройства.
API предоставляет возможность выполнять CRUD-операции (Create, Read, Update, Delete) над объектами конфигурации посредством HTTP(S)-запросов.
Также API позволяет:
- Получать информацию о версии и типе устройства;
- Получать список лицензий;
- Получать информацию о статусе регистрации абонентов.
Предварительная настройка
Перед началом работы с API необходимо:
1. Настроить API сервер шлюза
- Убедиться, что API-сервер включен;
- Настроить интерфейс управления "Конфигурация":
- Выбрать сетевой интерфейс;
- Указать порт.
- При необходимости включить TLS. В этом случае запросы будут выполняться по протоколу HTTPS.
API → Сервер
2. Создать пользователя
Пользователю должны быть выданы права на управление конфигурацией.
API → Аккаунты
Swagger
В веб-интерфейсе шлюза доступна страница Swagger, предназначенная для:
Тестирования API-запросов;
Просмотра структуры эндпоинтов;
Анализа форматов запросов и ответов.
API → Swagger
Формат данных:
Запросы и ответы: application/json
Аутентификация: Bearer Token
Для выполнения запросов через Swagger необходимо:
- Выполнить запрос /login, указав имя пользователя и пароль;
- Получить token из ответа;
- Указать токен через кнопку Authorize.
Для получения доступа к Swagger через HTTPS должны быть выполнены следующие условия:
- Веб-интерфейс устройства открыт по HTTPS;
- В разделе API сервер → Настройки событий включены интерфейсы События системы и Управление конфигурацией;
- Для интерфейсов События системы и Управление конфигурацией включен параметр TLS.
При использовании встроенного в прошивку ECC-сертификата необходимо добавить исключение безопасности в браузере, поскольку данный сертификат не является доверенным сертификатом удостоверяющего центра.
Быстрый старт
Для начала работы с API выполните следующие шаги:
- Авторизуйтесь и получите токен:
curl -X POST http://<IP>:<PORT>/api/v1/login \ -H "Content-Type: application/json" \ -d '{"login":"<login>","password":"<password>"}' - Скопируйте token из ответа.
- Выполните тестовый запрос используя скопированный токен в заголовке Authorization:
curl -X GET http://<IP>:<PORT>/api/v1/config/interfaces \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>"
Сценарий работы с API
Типовой сценарий взаимодействия с API:
- Авторизация пользователя (получение Bearer-токена).
- Выполнение запросов к конфигурации или мониторингу.
- Сохранение конфигурации (при необходимости).
Запросы API
Поддерживаются следующие HTTP(S)-методы:
- POST – создание объекта;
- GET – получение одного объекта или списка объектов;
- PATCH – частичное обновление существующего объекта;
- DELETE – удаление объекта.
GET-запросы поддерживают два режима работы:
1. Получение одного объекта:
GET /endpoint?id=<id>
2. Получение списка объектов:
GET /endpoint
В ответе возвращается соответствующий объект или массив объектов.
POST применяется для создания нового объекта и требует передачи всех обязательных параметров.
PATCH применяется для частичного обновления существующего объекта и допускает передачу только изменяемых параметров. Обновляет только переданные поля, остальные параметры остаются без изменений.
Методы POST и PATCH используют одинаковую структуру тела запроса.
Структура API
Клиентские эндпоинты (SMG Client):
- `/login` – авторизация;
- `/version` – получение версии и типа SMG;
- `/licenses` – получение списка лицензий;
- `/is_active` – проверка активности сессии;
- `/logout` – завершение сессии.
Конфигурация (SMG Config):
- `/config/save` – сохранение конфигурации во flash-память;
- `/config/interfaces` – сетевые интерфейсы;
- `/config/domains` – домены;
- `/config/pbx_profiles` – PBX-профили;
- `/config/trunks` – транковые группы;
- `/config/sip_interfaces/sip` – SIP-интерфейсы в режиме SIP;
- `/config/sip_interfaces/sip_profile` – SIP-интерфейсы в режиме SIP-профиль;
- `/config/abonents/static` – абоненты;
- `/config/abonents/savedb` – сохранение БД абонентов во flash-память;
- `/config/prefixes` – префиксы плана нумерации;
- `/config/transit_direction` – транзитные направления.
Мониторинг (SMG Monitoring):
- `/monitoring/abonents/static` — статус регистрации SIP-абонентов.
Заголовки HTTP-запросов
- Content-Type: application/json
- Accept: application/json
- Authorization: Bearer <token>
Все запросы выполняются относительно базового URL: http://<SMG_IP>:<PORT>/api/v1/<endpoint>
Формат ответа API
Успешный ответ:
{
"status": "ok",
"version": "v1",
"payload": {}
}
Ошибка:
{
"status": "error",
"payload": {
"code": 400,
"message": "Описание ошибки"
}
}
Коды ошибок HTTP:
| HTTP-статус | Наименование | Описание |
|---|---|---|
400 | Bad Request | Неверный запрос |
401 | Unauthorized | Пользователь не авторизован |
403 | Forbidden | Доступ запрещён |
404 | Not Found | Запрашиваемый ресурс не найден |
405 | Method Not Allowed | HTTP-метод не поддерживается для данного ресурса |
500 | Internal Server Error | Внутренняя ошибка сервера |
Коды ошибок API:
| Код | Описание |
|---|---|
400 | Не удалось сформировать JSON-ответ |
401 | Метод не поддерживается |
402 | Идентификатор объекта конфигурации не определён |
403 | Запрос не содержит данных об изменении конфигурации |
404 | Пользователь не авторизован |
405 | Ошибка выделения памяти |
406 | Ошибка получения списка объектов |
407 | Неверный ввод |
408 | Достигнут лимит |
409 | Объект не найден |
410 | Не удалось удалить объекты |
411 | Не удалось разобрать JSON-объект |
412 | Ошибка при подписке или отписке |
413 | Идентификатор подписки не найден |
414 | Ошибка создания вызова |
415 | Неверный формат поля data |
416 | Ошибка разбора JSON-объекта |
417 | Неверный формат данных (допускаются только числа) |
418 | Операция запрещена категорией доступа |
498 | Ошибка сопоставления кодов ошибок |
499 | Максимальный код ошибки модуля Mongoose |
Коды ошибок конфигурации API:
| Код | Описание |
|---|---|
50 | Ошибка создания объекта |
51 | Объект создан, но не может быть сохранён |
52 | Ошибка при работе с объектом |
53 | Ошибка получения данных объекта |
54 | Ошибка выделения памяти для объекта |
55 | Неверный тип или индекс объекта |
56 | Неверный тип объекта |
57 | Неверный индекс объекта |
58 | Неверный размер объекта |
59 | Объект не найден |
60 | Тип объекта не найден |
61 | Объект с аналогичными параметрами уже существует |
62 | Слишком большой размер объекта |
63 | Не удалось удалить объект |
64 | Объект не может быть удалён |
65 | Запрошено слишком большое количество объектов |
66 | Тип объекта в ответе отличается от запрошенного |
69 | Обнаружено пересечение сочетания порта и сетевых интерфейсов с другим объектом |
70 | Обнаружено пересечение Termination-ID и Channel-ID |
71 | Обнаружено пересечение сочетания IP:порт с другим объектом |
72 | Изменение объекта ограничено лицензией |
210 | Пересечение номера с существующим абонентом |
211 | Коллизия объектов. Измените размер номера или количество объектов |
215 | Абонент не зарегистрирован |
217 | Превышено допустимое количество абонентов |
218 | Указанная пара IP:порт уже назначена другому абоненту |
219 | Не указан IP:порт |
220 | Пересечение номера с именем пользователя API-аккаунта |
Авторизация и работа с сессией
login | |
Запрос | Описание |
|---|---|
curl -X POST "http://192.168.113.230:3999/api/v1/login" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{"login":"<login>","password":"<password>"}'
| Авторизация пользователя Возвращает токен |
Ответ | Описание |
{"status":"ok","version":"v1","payload":{"token":"phOzH44FVLKAxtJV6sBPwxew0E4Vp9"}} | Токен используется для авторизации всех последующих запросов |
Срок действия токена: 20 минут неактивности. По истечении необходимо выполнить повторную авторизацию.
is_active | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/is_active" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Проверка активности текущей сессии |
Ответ | Описание |
{"status":"ok","version":"v1","payload":{"active":true}}
| `true` – сессия активна, `false` – сессия неактивна |
logout | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/logout" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Завершение сессии |
Ответ | |
{"status": "ok","version": "v1"}
| |
Сохранение конфигурации
save | |
Запрос | Описание |
|---|---|
curl -X POST "http://192.168.113.230:3999/api/v1/config/save" \
-H "accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-d '{}'
| Сохранение конфигурации во flash-память |
Ответ | |
{"status":"ok","version":"v1}
| |
Изменения, внесённые через API, не сохраняются автоматически и теряются после перезагрузки устройства. Для сохранения конфигурации необходимо явно вызвать метод /config/save
Настройка SIP интерфейса в режиме SIP
Подробнее в разделе Интерфейсы SIP/SIP-T/SIP-I, SIP-профили.
POST/PATCH | |||
Ключ | Параметр | Значение | Описание |
|---|---|---|---|
name | <s_name> | Строка до 31 символа | Имя для интерфейса |
hostname | <HOSTNAME> | Строка до 63 символов | Имя хоста взаимодействующего шлюза |
sip_domain | <SIPDOM> | строка до 63 символов | SIP домен |
port_source | <SRCPORT> | 1-65535 | Локальный порт устройства |
port_destination | <DSTPORT> | 1-65535 | Порт удалённого шлюза |
net_interface_sig | <IFACE_NAME> | ID интерфейса | Сетевой интерфейс для приема и передачи сигнальных SIP сообщений |
net_interface_rtp | <IFACE_NAME> | ID интерфейса | Сетевой интерфейс для приема и передачи голосового трафика |
transport | <TRANSPORT> | UDP-only, UDP-prefer, TCP-prefer, TCP-only | Протокол транспортного уровня |
max_active | <MAX_ACTIVE> | 0-65535 | Максимум одновременных вызовов |
regmode | <REGMODE> | none, trunk, user, upper | Тип регистрации на вышестоящем сервере |
register_delay | <REG_DELAY> | 500-5000 | Минимальный интервал (мс) между отправками сообщений Register |
codec | <CODEC> | CODEC_G711U CODEC_G711A CODEC_G729 CODEC_G7231_53 CODEC_G7231_63 CODEC_G726 CODEC_G722 CLEARMODE | Кодек, используемый для кодирования голосового трафика Кодеки передаются списком |
pte | <PTE> | 10/20/30/40/50/60/70/80/90 | Время пакетизации |
ptype | <PTYPE> | Кодек — Ptype; | payload type, значение static устанавливает значение по |
mode | <INTF_MODE> | SIP | Режим работы интерфейса (по умолчанию SIP) |
trunk_group | <TRUNK> | 1-65535 | Транковая группа, в которую входит интерфейс |
Пример запроса POST/PATCH:
curl -X POST "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip" \
-H "accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{
"name": "sip_name",
"hostname": "host_name",
"sip_domain": "domain",
"port_source": 5060,
"port_destination": 5061,
"net_interface_sig": 1,
"net_interface_rtp": 1,
"transport": "UDP-prefer",
"regmode": "upper",
"max_active": 0,
"register_delay": 3603,
"codec_ops": [
{
"codec": "CODEC_G726",
"pte": 30,
"ptype": "119"
},
{
"codec": "CODEC_G729",
"pte": 40,
"ptype": "18"
}
],
"mode": "SIP",
"trunk_group": {
"id": 6
}
}'
Ответ | |
|---|---|
{"status":"ok","version":"v1","payload":{"id":1}}
|
Обязательные параметры для метода POST:
net_interface_sig
net_interface_rtp
codec_ops
hostname
Остальные параметры являются необязательными и, если не заданы, автоматически принимают значения по умолчанию.
GET | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение информации об интерфейсе |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"name": "SIP-interface00",
"port_source": 5060,
"net_interface_rtp": 1,
"net_interface_sig": 1,
"transport": "UDP-only",
"max_active": 0,
"codec_ops": [
{
"codec": "CODEC_G711A",
"pte": 20,
"ptype": "8"
},
{
"codec": "CODEC_G711U",
"pte": 20,
"ptype": "0"
}
],
"mode": "SIP",
"hostname": "",
"sip_domain": "",
"regmode": "none",
"port_destination": 5060,
"register_delay": 1000
}
]
}
| |
curl -X GET "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка интерфейсов |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"name": "sip_name",
"port_source": 5060,
"net_interface_rtp": 1,
"net_interface_sig": 1,
"transport": "UDP-prefer",
"max_active": 0,
"codec_ops": [
{
"codec": "CODEC_G726",
"pte": 30,
"ptype": "119"
},
{
"codec": "CODEC_G729",
"pte": 40,
"ptype": "18"
}
],
"mode": "SIP",
"hostname": "host_name",
"sip_domain": "domain",
"regmode": "upper",
"port_destination": 5061,
"register_delay": 3603,
"trunk_group": {
"id": 6,
"name": "TrunkGroup05",
"sip_interface_id": 1
}
},
{
"id": 2,
"name": "SIP-interface01",
"port_source": 5060,
"net_interface_rtp": 1,
"net_interface_sig": 1,
"transport": "UDP-only",
"max_active": 0,
"codec_ops": [
{
"codec": "CODEC_G711A",
"pte": 20,
"ptype": "8"
},
{
"codec": "CODEC_G711U",
"pte": 20,
"ptype": "0"
}
],
"mode": "SIP",
"hostname": "",
"sip_domain": "",
"regmode": "none",
"port_destination": 5060,
"register_delay": 1000
}
]
}
| |
DELETE | |
Запрос | Описание |
|---|---|
curl -X DELETE "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Удаление интерфейса |
Ответ | |
{"status":"ok","version":"v1"}
| |
Настройка SIP-интерфейса в режиме SIP-профиль
POST/PATCH | |||
Ключ | Параметр | Значение | Описание |
|---|---|---|---|
name | <s_name> | Строка до 31 символа | Имя для интерфейса |
port_source | <SRCPORT> | 1-65535 | Локальный порт устройства |
net_interface_sig | <IFACE_NAME> | ID интерфейса | Сетевой интерфейс для приема и передачи сигнальных SIP сообщений |
net_interface_rtp | <IFACE_NAME> | ID интерфейса | Сетевой интерфейс для приема и передачи голосового трафика |
transport | <TRANSPORT> | UDP-only, UDP-prefer, TCP-prefer, TCP-only | Протокол транспортного уровня |
max_active | <MAX_ACTIVE> | 0-65535 | Максимум одновременных вызовов |
codec | <CODEC> | CODEC_G711U CODEC_G711A CODEC_G729 CODEC_G7231_53 CODEC_G7231_63 CODEC_G726 CODEC_G722 CLEARMODE | Кодек, используемый для кодирования голосового трафика Кодеки передаются списком |
pte | <PTE> | 10/20/30/40/50/60/70/80/90 | Время пакетизации |
ptype | <PTYPE> | Кодек — Ptype; | payload type, значение static устанавливает значение по |
mode | <INTF_MODE> | SIP profile | Режим работы интерфейса. По умолчанию SIP profile |
transit_dir_id | <TRANSIT_DIR_IDX> | 0-31 | Выбор транзитного направления для вышестоящего сервера |
Пример запроса POST/PATCH:
curl -X POST "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip_profile" \
-H "Accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{
"name": "sip_name",
"port_source": 5060,
"net_interface_sig": 1,
"net_interface_rtp": 1,
"transport": "UDP-only",
"max_active": 0,
"codec_ops": [
{
"codec": "CODEC_G711A",
"pte": 40,
"ptype": "8"
},
{
"codec": "CODEC_G729",
"pte": 40,
"ptype": "18"
}
],
"transit_dir_id": 1
}'
Ответ | |
|---|---|
{"status":"ok","version":"v1","payload":{"id":1}}
|
Обязательные параметры для метода POST:
net_interface_sig
net_interface_rtp
codec_ops
Остальные параметры являются необязательными и, если не заданы, автоматически принимают значения по умолчанию.
GET | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip_profile?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение информации о SIP-профиле |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"name": "sip_name",
"port_source": 5060,
"net_interface_rtp": 1,
"net_interface_sig": 1,
"transport": "UDP-only",
"max_active": 0,
"codec_ops": [
{
"codec": "CODEC_G711A",
"pte": 40,
"ptype": "8"
},
{
"codec": "CODEC_G729",
"pte": 40,
"ptype": "18"
}
],
"mode": "SIP profile",
"transit_dir_id": 1
}
]
}
| |
curl -X GET "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip_profile" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка SIP-профилей |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"name": "sip_name",
"port_source": 5060,
"net_interface_rtp": 1,
"net_interface_sig": 1,
"transport": "UDP-only",
"max_active": 0,
"codec_ops": [
{
"codec": "CODEC_G711A",
"pte": 40,
"ptype": "8"
},
{
"codec": "CODEC_G729",
"pte": 40,
"ptype": "18"
}
],
"mode": "SIP profile",
"transit_dir_id": 1
},
{
"id": 2,
"name": "sip_name",
"port_source": 5060,
"net_interface_rtp": 1,
"net_interface_sig": 1,
"transport": "UDP-only",
"max_active": 0,
"codec_ops": [
{
"codec": "CODEC_G711A",
"pte": 40,
"ptype": "8"
},
{
"codec": "CODEC_G729",
"pte": 40,
"ptype": "18"
}
],
"mode": "SIP profile",
"transit_dir_id": 1
}
]
}
| |
DELETE | |
Запрос | Описание |
|---|---|
curl -X DELETE "http://192.168.113.230:3999/api/v1/config/sip_interfaces/sip_profile?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Удаление SIP-профиля |
Ответ | |
{"status":"ok","version":"v1"}
| |
Настройка транковой группы
Более подробная информация описана в разделе Транковые группы.
POST/PATCH | |||
Ключ | Параметр | Значение | Описание |
|---|---|---|---|
name | <s_name> | Строка до 31 символа | Имя транковой группы |
interface_id | <ENTRY_INDEX> | 1-65535 | Назначить транковую группу интерфейсу |
type | <TG_ENTRY> | sip, none | Состав транковой группы |
Пример запроса POST/PATCH:
curl -X POST "http://192.168.113.230:3999/api/v1/config/trunks" \
-H "accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{
"name": "trunk_name",
"interface_id": 1,
"type": "sip"
}'
Ответ | |
|---|---|
{"status":"ok","version":"v1","payload":{"id":1}}
|
Обязательных параметров нет.
GET | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/trunks?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение информации о транковой группе |
Ответ | |
{"status":"ok","version":"v1","payload":[{"id":1,"name":"TrunkGroup00","type":"sip","interface_id":1}]}
| |
curl -X GET "http://192.168.113.230:3999/api/v1/config/trunks" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка транковых групп |
Ответ | |
{"status":"ok","version":"v1","payload":[{"id":1,"name":"TrunkGroup00","type":"sip","interface_id":1},{"id":2,"name":"TrunkGroup01","type":"none","interface_id":0}]}
| |
DELETE | |
Запрос | Описание |
|---|---|
curl -X DELETE "http://192.168.113.230:3999/api/v1/config/trunks?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Удаление транковой группы |
Ответ | |
{"status":"ok","version":"v1"}
| |
Настройка абонентов
Более подробная информация описана в разделе Вкладка «Настройки абонента».
POST/PATCH | |||
Команда | Параметры | Значение | Описание |
|---|---|---|---|
number | <NUMBER> | Номер для SIP-абонента | |
sip_profile | <PROFILE> | 1-65535 | SIP-Profile для SIP-абонента |
pbx_profile | <PROFILE> | 1-65535 | PBX profile |
name | <USER_NAME> | Строка до 31 символов | Имя SIP-абонента |
domain_index | <DOMAIN> | 0-255 | SIP-домен для абонента |
ipaddr | <IPADDR> | IP-адрес в формате AAA.BBB.CCC.DDD | IP-адрес для указанного абонента |
port | <PORT> | 0-65535 | Порт |
sip_forking | <ON_OFF> | 0-1 | Включение множественной регистрации на абоненте |
max_contacts | <MAX_CONTACTS> | 2-5 | Разрешенный допустимый диапазон регистрации на одного абонента |
authmode | <AUTHMODE> | none, register, register_and_invite | Режим аутентификации для абонента |
login | <LOGIN> | Строка до 63 символов | Имя пользователя для аутентификации |
password | <PASSWORD> | Строка до 63 символов | Пароль для аутентификации |
group_tag | <GROUP_TAG> | Строка до 63 символов | Произвольно заданное значение, позволяющее группировать абонентов |
Пример запроса POST/PATCH:
curl -X POST "http://192.168.113.230:3999/api/v1/config/abonents/static" \
-H "accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{
"number": "40000",
"sip_profile": 1,
"pbx_profile": 1,
"name": "abon_name",
"domain_index": 0,
"port": 5085,
"sip_forking": 1,
"max_contacts": 3,
"ipaddr": "192.168.0.10",
"login": "user",
"password": "passwd",
"authmode": "register",
"group_tag": "123"
}'
Ответ | |
|---|---|
{"status":"ok","version":"v1","payload":{"id":1}}
|
Обязательные параметры для метода POST:
- number
Остальные параметры являются необязательными и, если не заданы, автоматически принимают значения по умолчанию.
GET | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/abonents/static?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение информации об абоненте |
Ответ | |
{"status":"ok","version":"v1","payload":[{"id":1,"name":"abon_name","domain_index":0,"number":"40000","pbx_profile":1,"sip_profile":1,"sip_forking":1,"max_contacts":3,"port":5085,"ipaddr":"192.168.0.10","login":"user","password":"passwd","authmode":"register","group_tag":"123"}]}
| |
curl -X GET "http://192.168.113.230:3999/api/v1/config/abonents/static" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка абонентов |
Ответ | |
{"status":"ok","version":"v1","payload":[{"id":1,"name":"abon_name","domain_index":0,"number":"40000","pbx_profile":1,"sip_profile":1,"sip_forking":1,"max_contacts":3,"port":5085,"ipaddr":"192.168.0.10","login":"user","password":"passwd","authmode":"register","group_tag":"123"},{"id":2,"name":"abon_name","domain_index":0,"number":"40001","pbx_profile":1,"sip_profile":1,"sip_forking":1,"max_contacts":3,"port":5085,"ipaddr":"192.168.0.10","login":"user","password":"passwd","authmode":"register","group_tag":"123"}]}
| |
DELETE | |
Запрос | Описание |
|---|---|
curl -X DELETE "http://192.168.113.230:3999/api/v1/config/abonents/static?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Удаление абонента |
Ответ | |
{"status":"ok","version":"v1"}
| |
Настройка домена
Более подробная информация описана в разделе Список доменных имен.
POST/PATCH | |||
Ключ | Параметр | Значение | Описание |
|---|---|---|---|
name | <DOMAIN_NAME> | Строка от 3 до 63 символов | Доменное имя |
Пример запроса POST/PATCH:
curl -X POST "http://192.168.113.230:3999/api/v1/config/domains" \
-H "accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{
"name": "domain"
}'
Ответ | |
|---|---|
{"index":1,"name":"domain"}
|
Обязательный параметр для метода POST:
- name
GET | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/domains?index=0" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение информации о домене |
Ответ | |
{"status":"ok","version":"v1","payload":[{"index":0,"name":"domain"}]}
| |
curl -X GET "http://192.168.113.230:3999/api/v1/config/domains" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка доменов |
Ответ | |
{"status":"ok","version":"v1","payload":[{"index":0,"name":"domain"},{"index":1,"name":"domain2"}]}
| |
DELETE | |
Запрос | Описание |
|---|---|
curl -X DELETE "http://192.168.113.230:3999/api/v1/config/domains?index=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Удаление домена |
Ответ | |
{"status":"ok","version":"v1"}
| |
Настройка PBX-профиля
Более подробная информация описана в разделе PBX профили.
POST/PATCH | |||
Ключ | Параметр | Значение | Описание |
|---|---|---|---|
name | <NAME> | Строка до 31 символа | Имя PBX-профиля |
first_digit_timeout | <TIMEOUT> | 5-20 | Таймаут ожидания первой цифры, после нажатия |
next_digit_timeout | <TIMEOUT> | 5-20 | Таймаут ожидания следующей за первой цифры |
busy_signal_timeout | <TIMEOUT> | 30-180 | Таймаут выдачи сигнала «занято» в случае неуспешного |
Пример запроса POST/PATCH:
curl -X POST \
"http://192.168.113.230:3999/api/v1/config/pbx_profiles" \
-H "Accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{
"name": "PBX profile",
"first_digit_timeout": 10,
"next_digit_timeout": 20,
"busy_signal_timeout": 30
}'
Ответ | |
|---|---|
{"status":"ok","version":"v1","payload":{"id":2}}
|
Обязательных параметров нет.
GET | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/pbx_profiles?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение информации о PBX профиле |
Ответ | |
{"status":"ok","version":"v1","payload":[{"id":1,"index":0,"name":"PBX profile","first_digit_timeout":10,"next_digit_timeout":20,"busy_signal_timeout":30}]}
| |
curl -X GET "http://192.168.113.230:3999/api/v1/config/pbx_profiles" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка PBX профилей |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"index": 0,
"name": "PBX profile",
"first_digit_timeout": 10,
"next_digit_timeout": 20,
"busy_signal_timeout": 30
},
{
"id": 2,
"index": 1,
"name": "PBXprofile#1",
"first_digit_timeout": 15,
"next_digit_timeout": 5,
"busy_signal_timeout": 60
}
]
}
| |
DELETE | |
Запрос | Описание |
|---|---|
curl -X DELETE "http://192.168.113.230:3999/api/v1/config/pbx_profiles?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Удаление PBX-профиля. Последний существующий PBX-профиль удалить нельзя |
Ответ | |
{"status":"ok","version":"v1"}
| |
Настройка транзитного направления
Более подробная информация представлена в разделе Транзитные направления.
POST/PATCH | |||
Ключ | Параметр | Значение | Описание |
|---|---|---|---|
name | <s_name> | Строка до 31 символа | Имя транзитного направления |
numplan_id | <NUMPLAN> | 0-255 | ID плана нумерации |
upper_registration_sip_interface | <SIP_IFACE_IDX> | 0-254 | Массив идентификаторов SIP-интерфейсов транзитной регистрации Максимальное количество интерфейсов - 4 |
На текущем этапе параметр `numplan_id` задается автоматически и не может быть изменен через API.
Если в существующих планах нумерации нет префикса с типом «Транзитное направление», то при создании транзитного направления автоматически создается план нумерации с префиксом типа «Транзитное направление».
Пример запроса POST/PATCH:
curl -X POST \
"http://192.168.113.230:3999/api/v1/config/transit_direction" \
-H "Accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{
"name": "Transit direction",
"numplan_id": 0,
"upper_registration_sip_interface": [
3,
9,
10,
11
]
}'
Ответ | |
|---|---|
{"status":"ok","version":"v1","payload":{"id":1}}
|
Обязательных параметров нет.
GET | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/transit_direction?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение информации о транзитном направлении |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"name": "Transit direction",
"number_plan": 4,
"upper_registration_sip_interface": [
3,
9,
10,
11
]
}
]
}
| |
curl -X GET "http://192.168.113.230:3999/api/v1/config/transit_direction" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка транзитных направлений |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"name": "Transit direction",
"number_plan": 4,
"upper_registration_sip_interface": [
3,
9,
10,
11
]
},
{
"id": 2,
"name": "Transit direction",
"number_plan": 4,
"upper_registration_sip_interface": [
3
]
}
]
}
| |
DELETE | |
Запрос | Описание |
|---|---|
curl -X DELETE "http://192.168.113.230:3999/api/v1/config/transit_direction?id=1" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Удаление транзитного направления |
Ответ | |
{"status":"ok","version":"v1"}
| |
Команды для получения списка различных сущностей
licenses | |
Запрос | Описание |
|---|---|
curl -X GET \ "http://192.168.113.230:3999/api/v1/licenses" \ -H "Accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка лицензий SMG. Соответствует информации со страницы «Лицензирование» в WEB-интерфейсе |
Ответ | Описание |
{"status":"string","version":"v1","payload":[{"name": "SMG-PBX","value": "OK"}]}
| name – название лицензии
|
version | |
Запрос | Описание |
|---|---|
curl -X GET \ "http://192.168.113.230:3999/api/v1/version" \ -H "Accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение версии и типа SMG |
Ответ | Описание |
{
"status": "ok",
"version": "v1",
"payload": {
"version": "ECSS-10 V.3.411.0.7741 3016/S/PBX/V52-LE/SORM/SORM-A/SORM-MS/SORME/H323(EXT)-GK/RCM/VAS/REC/IVR/40VNI/ANTIFRAUD/VNS_EXT/SIP_CPS/VAS_ASSISTANT/EMAIL/API Build: Jul 10 2026 15:29:52",
"type": "SMG-3016"
}
}
| version – версия ПО type – модель |
savedb | |
Запрос | Описание |
|---|---|
curl -X POST "http://192.168.113.230:3999/api/v1/config/abonents/savedb" \
-H "accept: application/json" \
-H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" \
-H "Content-Type: application/json" \
-d '{}'
| Сохранение информации о зарегистрированных абонентах в энергонезависимую память |
Ответ | |
{"status":"ok","version":"v1"}
| |
prefixes | |
Запрос | Описание |
|---|---|
curl -X GET \ "http://192.168.113.230:3999/api/v1/config/prefixes" \ -H "Accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка префиксов |
Ответ | |
{"status":"ok","version":"v1","payload":[{"id":1,"index":0,"name":"Prefix#00","type":10}]}
| |
interfaces | |
Запрос | Описание |
|---|---|
curl -X GET "http://192.168.113.230:3999/api/v1/config/interfaces" \ -H "accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9" | Получение списка сетевых интерфейсов |
Ответ | |
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"label": "eth0",
"name": "bond1.1",
"sig_enabled": true,
"rtp_enabled": true,
"dhcp": false,
"ipv4_addr": "192.168.113.230",
"ipv4_netmask": "255.255.240.0",
"ipv4_gateway": "192.168.1.1"
}
]
}
| |
Мониторинг статуса регистрации абонентов
В разделе описана информация о текущем состоянии SIP-абонентов.
Получение статуса регистрации SIP-абонентов
Метод: GET /monitoring/abonents/static
Параметры запроса
| Параметр | Обязательный | Описание |
|---|---|---|
| id | Нет | Список идентификаторов абонентов, разделенных запятыми. Допускается не более 50 идентификаторов. Например: id=1,2,3. |
Примеры запросов
Получение информации обо всех абонентах:
curl -X GET \ "http://192.168.113.230:3999/api/v1/monitoring/abonents/static" \ -H "Accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9"
Получение информации о выбранных абонентах:
curl -X GET \ "http://192.168.113.230:3999/api/v1/monitoring/abonents/static?id=1,2" \ -H "Accept: application/json" \ -H "Authorization: Bearer phOzH44FVLKAxtJV6sBPwxew0E4Vp9"
Пример ответа
{
"status": "ok",
"version": "v1",
"payload": [
{
"id": 1,
"name": "abon_name",
"number": "3005",
"group_tag": "400",
"access": 0,
"sip_domain": "192.168.113.230",
"contact_list": [
{
"ipaddr": "192.168.1.100:5061",
"local_ipaddr": "192.168.1.100:5060",
"last_reg": "17:42:02 28.07.2026",
"reset_time": "00:56:14",
"sip_profile_ID": 1,
"reg_state": "Is active"
}
]
}
]
}
Параметры ответа
| Поле | Тип | Описание |
|---|---|---|
| id | integer | Идентификатор абонента |
| name | string | Имя абонента |
| number | string | Номер абонента |
| group_tag | string | Тег группы абонента |
| access | integer | Категория доступа абонента |
| sip_domain | string | Домен, к которому принадлежит абонент |
| contact_list | array | Информация о регистрации |
| contact_list[].ipaddr | string | IP адрес:Порт |
| contact_list[].local_ipaddr | string | Локальный IP адрес:Порт |
| contact_list[].last_reg | string | Время и дата последней регистрации |
| contact_list[].reset_time | string | Время, оставшееся до окончания действия регистрации |
| contact_list[].sip_profile_ID | integer | Привязанный SIP-профиль к абоненту |
| contact_list[].reg_state | string | Состояние регистрации контакта. Возможные значения: Is active, Not registered. |


