Функционал доступен при наличии лицензии SMG-API.

Функционал доступен только для SMG-3016 и SMG-2016.

В данном приложении описано REST API шлюза SMG, предназначенное для управления конфигурацией и получения информации о состоянии устройства.

API предоставляет возможность выполнять CRUD-операции (Create, Read, Update, Delete) над объектами конфигурации посредством HTTP(S)-запросов.

Также API позволяет:

Предварительная настройка

Перед началом работы с API необходимо:

1. Настроить API сервер шлюза

API → Сервер

2. Создать пользователя

Пользователю должны быть выданы права на управление конфигурацией.

API → Аккаунты

Swagger

В веб-интерфейсе шлюза доступна страница Swagger, предназначенная для:

API → Swagger

Формат данных:

Для выполнения запросов через Swagger необходимо:

  1. Выполнить запрос /login, указав имя пользователя и пароль;
  2. Получить token из ответа;
  3. Указать токен через кнопку Authorize.

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

  • Веб-интерфейс устройства открыт по HTTPS;
  • В разделе API сервер → Настройки событий включены интерфейсы События системы и Управление конфигурацией;
  • Для интерфейсов События системы и Управление конфигурацией включен параметр TLS.

При использовании встроенного в прошивку ECC-сертификата необходимо добавить исключение безопасности в браузере, поскольку данный сертификат не является доверенным сертификатом удостоверяющего центра.

Быстрый старт

Для начала работы с API выполните следующие шаги:

  1. Авторизуйтесь и получите токен:
    curl -X POST http://<IP>:<PORT>/api/v1/login \
      -H "Content-Type: application/json" \
      -d '{"login":"<login>","password":"<password>"}'
    
  2.  Скопируйте token из ответа.
  3. Выполните тестовый запрос используя скопированный токен в заголовке Authorization:
    curl -X GET http://<IP>:<PORT>/api/v1/config/interfaces \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <token>"
    

Сценарий работы с API

Типовой сценарий взаимодействия с API:

  1. Авторизация пользователя (получение Bearer-токена).
  2. Выполнение запросов к конфигурации или мониторингу.
  3. Сохранение конфигурации (при необходимости).

Запросы API

Поддерживаются следующие HTTP(S)-методы:

GET-запросы поддерживают два режима работы:

1. Получение одного объекта:

GET /endpoint?id=<id>

2. Получение списка объектов:

GET /endpoint

В ответе возвращается соответствующий объект или массив объектов.

POST применяется для создания нового объекта и требует передачи всех обязательных параметров.
PATCH применяется для частичного обновления существующего объекта и допускает передачу только изменяемых параметров. Обновляет только переданные поля, остальные параметры остаются без изменений.

Методы POST и PATCH используют одинаковую структуру тела запроса.

Структура API

Клиентские эндпоинты (SMG Client):

Конфигурация (SMG Config):

Мониторинг (SMG Monitoring):

Заголовки HTTP-запросов

Все запросы выполняются относительно базового URL: http://<SMG_IP>:<PORT>/api/v1/<endpoint>

Формат ответа API

Успешный ответ:

{
  "status": "ok",
  "version": "v1",
  "payload": {}
}

Ошибка:

{
  "status": "error",
  "payload": {
    "code": 400,
    "message": "Описание ошибки"
  }
}

Коды ошибок HTTP:

HTTP-статусНаименованиеОписание
400Bad RequestНеверный запрос
401UnauthorizedПользователь не авторизован
403ForbiddenДоступ запрещён
404Not FoundЗапрашиваемый ресурс не найден
405Method Not AllowedHTTP-метод не поддерживается для данного ресурса
500Internal 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;
G.711A — 8;
G.711U — 0;
G.729 — 18;
G.723.1 (5.3 kbps) — 4;
G.723.1 (6.3 kbps) — 4;
G.726-32 - 2 и 96-127;
G.722 — 9;
CLEARMODE — 96-127;

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:

Остальные параметры являются необязательными и, если не заданы, автоматически принимают значения по умолчанию.

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;
G.711A — 8;
G.711U — 0;
G.729 — 18;
G.723.1 (5.3 kbps) — 4;
G.723.1 (6.3 kbps) — 4;
G.726-32 - 2 и 96-127;
G.722 — 9;
CLEARMODE — 96-127;

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:

Остальные параметры являются необязательными и, если не заданы, автоматически принимают значения по умолчанию.

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:

Остальные параметры являются необязательными и, если не заданы, автоматически принимают значения по умолчанию.

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:

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

Таймаут ожидания первой цифры, после нажатия
абонентом клавиши FLASH при использовании услуги «Передача вызова»

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 – название лицензии
value – статус лицензии:

  • `OK` – активна
  • `OK (N)` – активна с лимитом
  • `-` – не активна 

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"
        }
      ]
    }
  ]
}

Параметры ответа

ПолеТипОписание
idintegerИдентификатор абонента
namestringИмя абонента
numberstringНомер абонента
group_tagstringТег группы абонента
accessintegerКатегория доступа абонента
sip_domainstringДомен, к которому принадлежит абонент
contact_listarrayИнформация о регистрации
contact_list[].ipaddrstringIP адрес:Порт
contact_list[].local_ipaddrstringЛокальный IP адрес:Порт
contact_list[].last_regstringВремя и дата последней регистрации
contact_list[].reset_timestringВремя, оставшееся до окончания действия регистрации
contact_list[].sip_profile_IDintegerПривязанный SIP-профиль к абоненту
contact_list[].reg_statestringСостояние регистрации контакта. Возможные значения: Is active, Not registered.