API ключи (IN DEV)

MikoPBX REST API v3 — Руководство по Python-интеграции

В этой статье описана работа с REST API MikoPBX на примере базовых практических задач: создание сотрудников и SIP-провайдеров, получение истории звонков, мониторинг состояния станции в реальном времени.

circle-info

Для корректной работы у Вас должен быть действующий https сертификат. Один из простых способов для выпуска доверенного сертификата - Let's encrypt.

Подготовка: API-ключ и окружение

Создание API-ключа

  1. Перейдите в раздел : "Система" → "API ключи".

Раздел "Cистема" -> "API ключи"
  1. Нажмите "Добавить API ключ".

  • Заполните поле Описание (например: CRM Integration)

  • Скопируйте сгенерированный API-ключ — он отображается только один раз.

  • Сетевой фильтр: ограничьте доступ по IP или выберите «Разрешены с любых адресов»

Выберите права по ресурсам: «Чтение» (GET) или «Чтение и запись» (POST/PUT/DELETE)

В зависимости от задачи переключите тумблер «Полные права доступа» или настройте права вручную для каждого ресурса. Придерживайтесь принципа минимальных привилегий (Least Privilege) — каждый ключ должен иметь доступ только к тем ресурсам, которые реально нужны.

circle-info

API-ключ используется только для получения JWT-токена через POST /auth. В последующих запросах передаётся Bearer-токен, а не сам ключ.

Базовые настройки API ключа

В этой инструкции в качестве примеров будут приведены следующие действия с помощью REST API:

  • Создать сотрудника - необходимо разрешить доступ к интерфейсу "Employees Management" на уровне "Чтение и запись".

  • Создать провайдера - необходимо разрешить доступ к интерфейсу "Providers" на уровне "Чтение и запись".

  • Получить статусы регистрации сотрудников и провайдеров - необходимо разрешить доступ к интерфейсу "SIP" на уровне "Чтение".

  • Получить историю звонков - необходимо разрешить доступ к интерфейсу "Call Records" на уровне "Чтение".

Так же выдайте права на интерфейс "Authentication" на уровне "Чтение и запись".

Пример с выдачей доступа к интерфейсу "Call Records"

В этой статье, мы будем работать с Python, поэтому необходимо установить все зависимости:

Поле
Обяз.
Тип / ограничения
Описание

number

string, 2–8 цифр

Добавочный номер

user_username

string, 1–100 символов

ФИО сотрудника

sip_secret

string, 5–100 символов

Пароль SIP-аккаунта

user_email

string email, ≤255

Email для уведомлений

mobile_number

string E.164, ≤50

Мобильный (+7...) для переадресации

mobile_dialstring

string, ≤255

Строка набора мобильного

sip_transport

udp / tcp / tls / udp,tcp

Транспорт SIP (по умолч.: udp)

sip_dtmfmode

auto / rfc4733 / inband / info

Режим DTMF (по умолч.: auto)

sip_enableRecording

boolean

Запись разговоров (по умолч.: true)

sip_networkfilterid

number | "none"

ID сетевого фильтра

sip_manualattributes

string, ≤1024

Дополнительные SIP-параметры

fwd_ringlength

integer, ≤180

Время дозвона до переадресации (сек, по умолч.: 45)

fwd_forwarding

number | hangup | busy

Безусловная переадресация

fwd_forwardingonbusy

number | hangup | busy

Переадресация при занятости

fwd_forwardingonunavailable

number | hangup | busy

Переадресация при недоступности

Создание сотрудника

Ответ API (HTTP 201)

Коды ответов

Код
Описание

201

Сотрудник успешно создан

400

Ошибка валидации (слабый пароль <5 символов, неверный формат номера)

401

Токен истёк — нужно обновить через /auth

403

Нет прав на запись для ресурса /employees

409

Конфликт — номер уже занят

Список сотрудников

Массовое создание


5. Управление SIP-провайдерами

Для CRUD: POST /sip-providers Для просмотра всех (SIP + IAX): GET /providers (только чтение)

Создание SIP-провайдера

Список всех провайдеров


6. История звонков (CDR)

Эндпоинт: GET /cdr — только чтение. Поддерживает фильтрацию по дате, номеру, статусу, длительности.

Базовый запрос с фильтрацией

Статистика за период

Поля CDR-записи

Поле
Тип
Описание

start

datetime

Время начала звонка

answer

datetime

Время ответа (пусто — пропущен)

endtime

datetime

Время завершения

src_num

string

Номер звонящего

dst_num

string

Номер назначения

disposition

string

ANSWERED / NO ANSWER / BUSY / FAILED

billsec

int

Длительность разговора (секунды)

duration

int

Полная длительность (включая дозвон)

recordingfile

string

Путь к MP3-записи разговора

📼 Стриминг записей: GET /cdr/{id}/recording — поддерживает HTTP Range.


7. Мониторинг: статусы SIP и активные звонки

Статусы SIP-устройств

Эндпоинт: GET /sip — только мониторинг.

Активные звонки в реальном времени

Эндпоинт: GET /pbx-status

Значения поля state

Значение
Описание

OK

Устройство зарегистрировано и доступно

UNKNOWN

Не зарегистрировано (оффлайн)

Unreachable

Было зарегистрировано, но не отвечает на QUALIFY-пинги

OFF

Регистрация отключена в настройках провайдера

9. Полный скрипт мониторинга


10. Справочник эндпоинтов

Базовый путь: https://YOUR_HOST/pbxcore/api/v3/

⚠️ «Чтение» = GET. «Чтение и запись» = GET + POST + PUT + DELETE. Права настраиваются отдельно для каждого ресурса в разделе «API ключи».

Телефония и маршрутизация

Путь
Методы
Описание

/employees

CRUD

Сотрудники (внутренние номера)

/extensions

GET

Все номера: сотрудники, IVR, очереди — только чтение

/sip-providers

CRUD

SIP-провайдеры

/iax-providers

CRUD

IAX-провайдеры

/providers

GET

Все провайдеры (SIP + IAX) — только чтение

/call-queues

CRUD

Очереди вызовов

/ivr-menu

CRUD

IVR-меню

/incoming-routes

CRUD

Входящие маршруты (DID)

/outbound-routes

CRUD

Исходящие маршруты

/off-work-times

CRUD

Расписание нерабочего времени

/conference-rooms

CRUD

Конференц-залы

/dialplan-applications

CRUD

Приложения диалплана

Мониторинг и статистика

Путь
Методы
Описание

/sip

GET

Статусы SIP-устройств (peers + registry)

/iax

GET

Статусы IAX-соединений

/pbx-status

GET

Активные звонки и каналы в реальном времени

/cdr

GET

История звонков с фильтрацией и пагинацией

/cdr/{id}/recording

GET

Стриминг записи разговора (HTTP Range)

/advice

GET

Системные рекомендации и предупреждения

/sysinfo

GET

Аппаратная информация о сервере

/syslog

GET

Системные логи и диагностика

Аутентификация и управление доступом

Путь
Методы
Описание

/auth

POST

Получить JWT access_token по API-ключу

/auth/refresh

POST

Обновить access_token через refresh_token

/api-keys

CRUD

Управление API-ключами

/asterisk-managers

CRUD

Пользователи AMI

/asterisk-rest-users

CRUD

Пользователи ARI (для ARI-приложений)

/users

CRUD

Пользователи веб-интерфейса

/passkeys

CRUD

WebAuthn / FIDO2 passkeys

/passwords

GET/POST

Генерация и валидация паролей

/network-filters

GET

Сетевые фильтры для UI-списков

Системные настройки

Путь
Методы
Описание

/system

GET/POST

Ping, reboot, update, factory reset

/general-settings

GET/PUT

Общие настройки АТС

/time-settings

GET/PUT

Часовой пояс и NTP

/network

GET/PUT

Сетевые интерфейсы, IP, DNS, NAT

/firewall

CRUD

Правила файервола

/fail2ban

GET/PUT

Политики блокировки IP

/mail-settings

GET/PUT

Настройки SMTP / OAuth2

/storage

GET/PUT

Управление дисками и хранилищем

/s3-storage

GET/PUT

S3-облачное хранилище записей

/modules

CRUD

Модули расширения

/license

GET/POST

Управление лицензиями

/sound-files

CRUD

Звуковые файлы (IVR, MOH, объявления)

/files

CRUD

Управление файлами (chunked upload)

/custom-files

CRUD

Пользовательские конфигурационные файлы

/search

GET

Глобальный поиск по всем сущностям

/openapi

GET

OpenAPI/Swagger спецификация

📖 Интерактивная Swagger-документация: https://your-mikopbx.com/pbxcore/api/v3/openapi

Last updated

Was this helpful?