2
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3560 lines
146 KiB

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<center>
<h1> Документация Narayana Billing API. </h1>
<h2> Текущая версия — 2.2 </h2>
</center>
## Введение
Любые приложения (в т.ч. клиентские и серверные) и любое оборудование, работающее в Narayana, взаимодействует с биллинговой системой (далее — биллингом) посредством API.
Для разграничения доступа к API используется система секретных ключей — идентификаторов клиентского и/или серверного оборудования и/или программного обеспечения, так или иначе взаимодействующего с биллингом.
Ключ может быть **клиентский** (требует обязательной авторизации пользователя) и **серверный с определенным уровнем доступа** (не требует авторизации). Клиентский ключ может быть как привязан к определенному пользователю (ключ с статической авторизацией) и игнорировать параметры login и password, переданные в запросе, так и требовать авторизацию (_ключ с динамической авторизацией_)
У любого ключа могут быть установлены следущие параметры:
* Название ключа (клиента) API
* Способ авторизации ключа
* Разрешенные IP-адреса
* Уровень доступа
* Пользователь по-умолчанию
* Разрешенные методы
### Название ключа
В случае, если клиентом API является дочерняя телефонная станция, название клиента используется для привязки пользователей к АТС (SIP realm).
В противном случае название клиента используется для внутреннего учета и не влияет ни на что.
### Способ авторизации
Способ авторизации определяет, по какому признаку будет производиться поиск пользователя при его авторизации. Возможным параметром может быть, к примеру, **username**, для авторизации по имени пользователя, **sip_extension**, для авторизации по
SIP-логину, **id** для авторизации по внутреннему идентификационному номеру пользователя в базе данных.
Обращаем внимание, что желательно использовать уникальный параметр способа авторизации (как, например, имя пользователя). Использование потенциально неуникального параметра (к примеру, CallerID) может привести к непредсказуемым последствиям.
### Разрешенные IP-адреса
Список IP-адресов, перечисленных через запятую, с которых могут производиться запросы к API. Допустимо использование масок.
Пример: **178.1.1.*,87.1.1.2**
### Уровень доступа
Используется для определения типа ключа, а так же присвоения ему определенного уровня доступа.
**Уровень доступа 0** — клиентский ключ. Для данного типа ключа обязательна авторизация пользователя любым способом (динамичным с использованием пароля либо статичным), в противном случае исполнение не-анонимных методов будет недоступно.
**Уровень доступа отличный от 0** — серверный ключ. Для данного ключа авторизация с использованием пароля не нужна, и признак пользователя, от имени которого исполняется запрос, передается параметром login. Однако следует помнить, что в случае, если владелец серверного ключа не является владельцем пользователя, найденного по переданному в запросе признаку login, система отклонит запрос (кроме случаев, когда ключ обладает исключительными правами.)
### Пользователь по-умолчанию
Признак пользователя (к примеру, логин **username** или SIP-логин **sip_extension**, в зависимости от установленного способа авторизации), привязанный к ключу (статичная авторизация).
Если данный параметр установлен, биллингом будут проигнорированы параметры **login** и **password**, переданные в запросе, и по-умолчанию будет авторизован пользователь, найденный по данному признаку.
Для того, чтобы произвести запрос от имени другого пользователя, принадлежащему владельцу ключа, следует передать параметр username.
Также, в некоторых случаях данный параметр используется для записи в память пользовательской переменной, необходимой для работы именно с этим ключом.
Для того, чтобы записать пользовательскую переменную в память, необходимо в переменную **config.api_custom_identities** конфигурационного файла добавить новый способ авторизации (к примеру, **payment_method**) и в параметрах ключа указать **payment_method** как __<Способ авторизации>__, и значение, указанное как Пользователь, будет доступно как **request.payment_method**
### Разрешенные методы
Список методов, доступных к исполнению для данного ключа, перечисленный через запятую. Если данный параметр не заполнен, разрешаются к исполнению любые методы.
Пример: **getInfo, getValue**
* * *
## Запрос и ответ
1. Инициализация запроса к API
URL запроса: __https://rdx.narayana.im/billing/api/${VERISON}/${APIKEY}/${METHOD}__
Метод запроса: **POST** либо **GET**
2. Базовые параметры запроса
* **login** — признак пользователя.
* **password** — md5-хэш пароля пользователя (для динамической авторизации)
* **username** — имя пользователя, от чьего имени производятся запросы к API (если не указано — используется текущий авторизованный пользователь)
3. Ответ API
* Обычный ответ в формате JSON.
Ответ на запрос представлен в виде JSON-массива с тремя переменными:
> **{'result'}** — результат исполнения метода (boolean)
> **{'response'}** — ответ либо код ошибки (string)
> **{'description'}** — текствое описание причины ошибки (string)
Пример:
GET https://rdx.narayana.im/billing/api/2.2/key/getInfo?login=admin
 
{"result":false,"response":"E_AUTH_ERROR"}
* Текстовый ответ
Используется для типов авторизации **sip_extension**, **id** и прочих указанных в конфигурационном файле (опция **config.api\_plain\_answer**).
Содержит только текстовый ответ либо описание ошибки (**response**)
4. Ошибки
В результате некорректного запроса к API сервер может отдать следущие ошибки:
* **HTTP 400 Invalid Request** — некорректно сформирован запрос.
* **HTTP 401 Unauthorized** — некорректный ключ.
* **HTTP 403 Forbidden** — доступ с этого IP запрещен
_NB! В случае запроса с некорректным и/или неактивным ключом, доступ с Вашего IP-адреса блокируется на неопределенный срок._
* * *
## Коды ошибок
Ошибки инициализации запроса:
* **E\_INCORRECT\_API\_VERSION** Версия сервера и клиента не совпадают
* **E\_UNKNOWN\_METHOD** Неизвестный метод
* **E\_UNDEFINED\_INSTRUCTION** Невозможно выполнить метод
* **E\_INSUFFICIENT\_ACCESS** Недостаточно прав для исполнения данного метода
* **E\_MISSING\_ARGUMENT** Обязательный аргумент отсутствует
* **E\_INVALID\_ARGUMENT** Аргумент неверного типа
* **E\_LUA\_EXCEPTION** Критическая ошибка исполнения метода
* **E\_AUTH\_FAILED** Неверная пара признак пользователя/пароль
* **E\_HAS\_NO\_ONE\_TOLD\_YOU\_SHE\_IS\_NOT\_BREATHING** Вход в вечный цикл. Вы никогда не должны видеть этой ошибки.
Ошибки исполнения запроса:
* **E\_USER\_LOCKED** Пользователь заблокирован.
* **E\_SQL\_ERROR** Ошибка SQL-запроса.
* **E\_NOT\_EXIST** Запрошенный объект не существует в данном контексте.
* **E\_DOES\_NOT\_BELONG\_TO\_YOU** Запрошенный объект не принадлежит вам
* **E\_DATA\_ABORT** — Неверный ввод
* **E\_ASTERISK\_QUERY\_ERROR** Ошибка исполнения запроса к АТС.
* **E\_SIP\_SERVER\_NOT\_EXIST** Указанный SIP-сервер не существует
* **E\_WRONG\_EXTENSION** Недопустимый SIP логин
* **E\_TRANSACTIONS\_LIMITED** Финансовые транзакции ограничены
* **E\_TRANSACTIONS\_LOCKED** Финансовые транзакции заблокированы
* **E\_ACCOUNT\_HAS\_USERS** Невозможно удалить не пустой Лицевой счет
* **E\_CANT\_CREATE\_ACCOUNT** Невозможно создать Лицевой счет
* **E\_CARRIER\_ERROR** Ошибка отправки SMS: канал вернул ошибку
* **E\_DID\_ORDER\_FAIL** Ошибка заказа DID-номера
* **E\_INITIATE\_CALL\_FAIL** Ошибка инициирования звонка
* **E\_INSUFFICIENT\_MONEY** Недостаточно средств
* **E\_INVALID\_SMS\_FROM** Некорректное поле «Отправитель»
* **E\_INVALID\_SMS\_TO** Некорректное поле «Назначение»
* **E\_CODE\_HAS\_NO\_BALANCE** На этом предоплаченном коде нет доступных средств
* **E\_INVITE\_LIMIT\_REACHED** Вы исчерпали лимит приглашений
* **E\_MAXIMUM\_PAYMENT** Вы превысили максимальную сумму платежа
* **E\_MINIMAL\_PAYMENT** Сумма платежа меньше минимальной
* **E\_MINIMAL\_START\_PAYMENT** Сумма первого платежа меньше минимальной
* **E\_TARGET\_WHITELISTED** Данный IP-адрес находится в белом списке
* **E\_TRANSACTION\_FAILED** Ошибка выполнения финансовой транзакции
* **E\_TTS\_ERROR** Ошибка исполнения Text-to-Speech метода
* **E\_UNROUTABLE** Направление не обслуживается
* **E\_CANT\_CREATE\_EXTENSION** — Невозможно создать учетную запись SIP
* **E\_CANT\_DELETE\_EXTENSION** — Невозможно удалить учетную запись SIP
* **E\_ALREADY\_ON\_THIS\_TARIFF** — Вы уже обслуживаетесь на данном тарифном плане
* **E\_CONTACT\_RESELLER** Данная операция недоступна пользователям реселлеров. Обратитесь к поставщику услуг.
* * *
## Объект «Пользователь»
При работе с API биллинг-системы в основном используется объект user («Пользователь»).
В данном разделе описаны все атрибуты объекта и значения, которые они могут принимать.
Запросить значение какого-либо атрибута можно методами ­**getInfo()** (значения всех атрибутов), **getValue()** (значение конкретного атрибута)
Записать значения атрибутов можно соответствующими типу атрибута функциями:
* **updateUser()** — для данных пользователя
* **updateAccount()** — для данных лицевого счета
* **updateExtension()** — для данных учетной записи SIP.
Пояснения к типам:
* _string_ — строковый тип;
* _int_ — целочисленный тип;
* _float_ — нецелое число;
### Пользователь ###
* **id**(int) _[read only]_ ­— внутренний идентификатор пользователя в системе.
* **username**(char[32]) _[read only]_ — имя пользователя.
* **password**(char[32]) — зашифрованный пароль пользователя
* **manager**(char[32]) _[read only]_ — владелец (менеджер) пользователя.
* **accesslevel**(int) — уровень доступа пользователя.
+ **10** — новый пользователь (ограничения — минимальный первый депозит)
+ **11** — пользователь
+ **22** — корпоративный пользователь (имеет доступ к управлению пользователями и тарифами)
+ **25** — партнер (имеет права корпоративного пользователя плюс доступ к основным маршрутам)
+ **33** — администратор системы
+ **44** — Мастер-администратор системы
* **active(int)** — состояние пользователя
+ **-1** — заблокирован
+ **0** — деактивирован (например, из-за нехватки баланса)
+ **1** — активен
+ **2** — блокировка внешних вызовов
+ **3** — блокировка всех вызовов
+ **99** — защита от блокировки
* **account**(int) — номер лицевого счета пользователя
* **currency**(char[3]) — код валюты пользователя
+ По-умолчанию — **EUR**
+ Доступные валюты можно получить посредством вызова метода **getCurrencies()**
* **language**(char[20]) — язык интерфейса пользователя
* **timezone**(float) — смещение часового пояса относительно UTC
* **allowed_rates**(char[20]) — список разрешенных тарифов для пользователя, перечисленных через запятую
* **allowed\_call\_len**(int) — максимально разрешенная длительность вызова для пользователя
* **notify_email**(char[256]) — электронная почта для уведомлений
* **notify_balance**(int) — отправлять уведомления на почту при достижении минимального баланса
+ **0** — не отправлять
+ **1** — отправлять
* **notify\_balance\_limit**(float) ­— лимит баланса для уведомления (в системной валюте)
* **notify_did**(int) — за какое количество дней до окончания действия аренды номера отправлять уведомление на почту
+ **-1** — не уведомлять
* **notify_ticket**(int) — отправлять уведомления на почту при получении ответа на тикет
+ **0** — не отправлять
+ **1** — отправлять
* **invites**(int) — количество доступных приглашений
* **comment**(char[1024]) — заметка о пользователе _(доступна только с уровнем доступа >= 33)_
### Учетная запись SIP & DISA ###
* **disa_pin**(int) — PIN-код для доступа к DISA
* **disa\_trusted\_cli**(char[32]) — доверенный телефон для упрощенного доступа к DISA
* **sip_extension**(char[32]) — учетная запись SIP (5 или 7 знаков)
* **sip_password**(char[32]) — пароль SIP в открытом виде
* **sip_server**(char[128]]) — адрес SIP-сервера
* **sip_address**(char[128]]) — адрес SIP-сервера (DNS)
* **sip_callerid**(char[32]) — текущий идентификатор звонящего (АОН)
* **sip_language**(char[20]) — язык внутренних телефонных команд
* **sip\_rates\_id**(int) — идентификатор тарифного плана для этого SIP-логина
* **sip\_rates\_options**(char[128]) — идентификатор тарифных опций для этого SIP-логина, перечисленных через запятую
* **sip_srtp**(int) — шифрование SRTP
+ **0** — выключено
+ **1** — включено принудительно
* **sip_transport**(char[20]) — доступные транспорты для подключения к SIP-серверу
+ **udp,tcp,tls** — разрешить UDP / TCP / TLS
+ **udp,tcp** — разрешить UDP / TCP
+ **tls** — только TLS
+ **udp** — только UDP
+ **tcp** — только TCP
* **sip\_max\_call\_len**(int) — максимальная длительность вызова для данного SIP-логина
* **sip_reach**(int) — доступность данного SIP-логина для звонка
+ **0** — недоступен
+ **2** — доступен
* **sip_redirect**(char[64]) — переадресовать входящие на SIP-логин звонки
* **sip\_force\_callback**(int) — принудительно обрывать вызов и создавать Callback на доверенный телефон
* **sip\_realm**(char[16]) _[read only]_ — название SIP-сервера
* **sip\_pitch\_shift**(int) — тон искажения голоса (-1 — выключено)
* **sip_host**(char[32]) — IP-адрес для авторизации по хосту (billing v2.3-rt)
* **sip_options**(char[128]) — дополнительные опции пира Asterisk (billing v2.3-rt)
### Лицевой счет ###
* **balance**(float) — текущий баланс пользователя в системной валюте (EUR)
+ Пожалуйста, используйте метод **transferMoney()** для добавления средств пользователю.
* **overdraft**(float) — текущий кредитный лимит пользователя в системной валюте (EUR)
* **refill_allowed**(int) — разрешить проведения финансовых транзакций
+ **0** — финансовые операции запрещены
+ **1** — разрешены анонмные способы пополнения счета
+ **2** — разрешены все способы пополнения счета
* **postpaid**(int) — постоплатная система расчетов
+ **0** ­— выключено (используется предоплата)
+ **1** — включено (используется постоплата; раз в месяц выписывается счет)
* **billing_name**(char[100]) ­— полное имя (используется для выписывания счетов)
* **billing_address**(char[200]) — контактный адрес (используется для выписывания счетов)
* **billing_email**(char[100]) — электронная почта для пересылки счетов
* **billing\_bank\_account**(char[200]) — данные банковского счета для взаиморасчетов
### Виртуальные атрибуты ###
Данные атрибуты пользователя, служащие для удобства обработки информации, доступны только для чтения, и не записаны в БД.
* **actualbalance** — актуальный баланс в системной валюте (EUR) с учетом овердрафта
* **displaycurrency** — название выбранной валюты (знак)
* **displaybalance** — текущий баланс в валюте пользователя
* **displayoverdraft** — кредитный лимит в валюте пользователя
* **displaynotifybalancelimit** — лимит баланса для уведомления в валюте пользователя
* **unread_tickets** — количество непрочитанных тикетов во внутренней тикет-системе
* * *
## Функции API ##
Обязательные параметры выделены жирным цветом.
В случае, если необязательный параметр имеет значение по-умолчанию, оно указывается в [квадратных скобках]
Пояснения к типам:
* _string_ — строковый тип;
* _ustring_ — строковый тип со строгими значениями; допустимые значения указаны в {фигурных скобках};
* _num_ — численный тип;
* _bool_ — булевый тип (может принимать значения «true» или «false»);
В случае, если тип не указан — параметр может быть любого типа.
В (скобках) после названия метода указан необходимый уровень доступа для исполнения данного метода.
Методы с уровнем доступа _0_ являются анонимными и могут быть исполнены без авторизации.
В примерах запросов к API используется версия API **2.2** и ключ «ffffffffff», а также опущены авторизационые данные.
Пожалуйста, убедитесь в том, что Вы используете актуальные данные перед исполнением запроса!
_NB!_ За исключением раздела **«Работа с пользователем»** результаты в «Примерах запроса» будут указаны без
> {result: true,
> response: "something"}
а будут содержать в себе лишь значение **«response»**.
Если в поле «Возвращает» указано «_true_ / _false_» — функция не имеет ответа, а имеет лишь результат исполнения **«result»** (_true_ или _false_), но в то же время **«response»** может содержать код ошибки в случае неудачного исполнения.
## Пользователь ##
**getInfo**(1) — Получение информации о пользователе.
<small>
Возвращает: JSON-массив с информацией о пользователе
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getInfo?login=admin
__________________________________________________
{"атрибут": "значение (см. раздел «Объект Пользователь»)",
"sip_extensions": [ {"атрибут_SIP_аккаунта": "значение (см. раздел «Объект Пользователь»)"}, ... ],
"did_numbers:" [ {"атрибут_DID_номера": "значение (см. функции «Прямые номера»"}, ... ],
"sim_cards:" [ {"атрибут_SIM_карты": "значение (см. функции «SIM-карты»"}, ...],
"broadcasts": [ {"атрибут_широковещательной_новости": "значение (см. функции «Новости и широковещательные сообщения»"}, ... ] }
</small><br>
**getValue**(1) — Получение конкретного параметра пользователя.
<small>
Возвращает: Значение запрашиваемого параметра
Аргументы:
* **property**(string) — запрашиваемый параметр
Пример запроса:
GET /billing/api/2.2/ffffffffff/getValue?property=balance
_______________________________________________________
1.00
</small><br>
**updateUser**(1) — Изменение данных пользователя.
<small>
Возвращает: _true_ / _false_
Аргументы:
* web\_password(string) — новый пароль пользователя (md5-хэш)
* accesslevel(num) — уровень доступа
* active(num) — состояние
* account(num) — номер Лицевого счета
* currency(string) — код валюты
* language(string) — язык интерфейса
* timezone(num) — смещение часового пояса относительно UTC
* allowed\_rates(string) — список разрешенных тарифов (через запятую)
* allowed\_call\_len(num) — максимально разрешенная длительность вызова (сек.)
* notify\_email(string) — адрес e-mail для уведомлений
* notify\_balance(num) — уведомлять при достижении минимального баланса
* notify\_did(num) — уведомлять при достижении %i дней до конца срока аренды прямого номера
* notify\_ticket(num) — уведомлять при ответах на тикет
* notify\_balance\_limit(num) — минимальный баланс для уведомлений
* invites(num) — количество доступных приглашений
* comment(string) — примечание
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateUser?username=test&active=0
_______________________________________________________
true
</small><br>
## Маршрутизация ##
**getRoutes**(22) — Получение списка доступных маршрутов.
<small>
Возвращает: JSON-массив со списком маршрутов и информацией о них.
Аргументы:
* update(bool) — обновить баланс запрашиваемых маршрутов _[false]_
* type(ustring{all,sip,sms,default}) — тип запрашиваемых маршрутов _[all]_
* all(bool) — запросить маршруты, принадлежащие корпоративным пользователям _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getRoutes?update=true
_______________________________________________________
[{"id": ID маршрута,
"prefix":"SIP-prefix маршрута",
"cli": тип АОН (1 — только RU, 2 — международный, 99 — без ограничений),
"route":"название маршрута",
"owner":"владелец",
"enabled": статус (0 или 1),
"type":"тип (default, sms, sip)",
"lastupdate":"дата последнего обновления баланса",
"clientlastupdate":"клиентская дата последнего обновления баланса",
"balance":"баланс"}]
</small><br>
**getRouteInfo**(22) — Получение информации о маршруте по его ID
<small>
Возвращает: Информация о маршруте (JSON)
Аргументы:
* **id**(num) — идентификатор маршрута
Пример запроса:
GET /billing/api/2.2/ffffffffff/getRouteInfo?id=1
_______________________________________________________
{"id": ID маршрута,
"prefix":"SIP-prefix маршрута",
"cli": тип АОН (1 — только RU, 2 — международный, 99 — без ограничений),
"route":"название маршрута",
"owner":"владелец",
"enabled": статус (0 или 1),
"type":"тип (default, sms, sip)",
"lastupdate":"дата последнего обновления баланса",
"clientlastupdate":"клиентская дата последнего обновления баланса",
"balance":"баланс"}
</small><br>
**addRoute**(22) — Добавление нового маршрута в маршрутизацию
<small>
Возвращает: _true_ / _false_
Аргументы:
* **route**(string) — название маршрута
* **type**(ustring{sip,sms}) — тип маршрута
* **sip\_server**(string) — SIP-сервер для добавления маршрута
* **prefix**(string) — SIP-префикс для добавления маршрута (outlineN/) либо название SMS-обработчика
* host(string) — адрес хоста (домен либо IP), если необходимо _[]_
* user(string) — имя пользователя для авторизации _[]_
* fromuser(bool) — использовать имя пользователя как **fromuser** в настройках peer'а _[false]_
* pass(string) — пароль для авторизации _[]_
* callerid(num) — тип АОН (1 — только RU, 2 — международный, 99 — без ограничений) _[2]_
* balance\_handler(string) — обработчик для проверки баланса _[]_
* balance\_username(string) — имя пользователя для обработчика баланса _[]_
* balance\_password(string) — пароль для обработчика баланса _[]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/addRoute?route=test&type=sms&sip_server=sip.serv.er&prefix=ourhandler
_______________________________________________________
true
</small><br>
**updateRoute**(22) — Обновление параметров маршрута
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — идентификатор маршрута
* route(string) — название маршрута
* prefix(string) — SIP-prefix (outlineN/) либо название SMS-обработчика
* host(string) — адрес хоста (домен либо IP)
* user(string) — имя пользователя для авторизации
* pass(string) — пароль для авторизации
* callerid(num) — тип АОН (1 — только RU, 2 — международный, 99 — без ограничений)
* balance\_handler(string) — обработчик для проверки баланса
* balance\_username(string) — имя пользователя для обработчика баланса
* balance\_password(string) — пароль для обработчика баланса
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateRoute?id=1&route=changedName
_______________________________________________________
true
</small><br>
**updateRouteState**(22) — Изменение состояния маршрута
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — идентификатор маршрута
* **state**(bool) — состояние маршрута (true или false)
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateRouteState?id=1&state=false
_______________________________________________________
true
</small><br>
**deleteRoute**(22) — Удаление маршрута из маршрутизации
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — идентификатор маршрута
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteRoute?id=1
_______________________________________________________
true
</small><br>
## Направления и тарификация ##
**resolveDirection**(0) — Разрешить направление по номеру телефона
<small>
Возвращает: Выбранную информацию о направлении
Аргументы:
* **number**(string) — номер телефона
* select(ustring{id,code,direction}) — Поле для вывода (ID направления, код или название) _[direction]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/resolveDirection?number=79271871234
_______________________________________________________
Russia Mobile - Megafon
</small><br>
**getDirections**(0) — Получение списка всех направлений
<small>
Возвращает: JSON-массив со списком всех направлений в системе
Аргументы:
* distinct(bool) — показывать только одно значение *code* для направления _[true]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDirections
_______________________________________________________
[{"code": код направления,
"id": ID направления,
"direction": "название направления",
"min_len": минимально допустимая длина номера,
"max_len": максимально допустимая длина номера}, ...]
</small><br>
**getCurrentRates**(0) — Получение текущей тарификации
<small>
Возвращает: JSON-массив в тарифами текущего пользователя
Аргументы:
* currency(string) — выбранная валюта _[EUR]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getCurrentRates
_______________________________________________________
{"ID направления":
{"direction":"Название направления",
"routing":[
{"routename":"Название маршрута",
"route": ID маршрута,
"displaycost": Цена в валюте пользователя,
"priority": Приоритет,
"cost": Цена в системной валюте
}
]
}
...
}
</small><br>
**getRatesList**(1) — Получение списка тарифных планов
<small>
Возвращает: JSON-массив — список доступных тарифных планов
Аргументы:
* all(bool) — Показать ТП, принадлежащие корпоративным пользователям _[false]_
* is\_public(bool) — Показать только публичные тариыф _[false]_
* is\_option(bool) — Показать тарифные опции (*true* — только тарифные опции, *false* ­— только тарифы, не установлено — показать все)
Пример запроса:
GET /billing/api/2.2/ffffffffff/getRatesList
_______________________________________________________
[{"bill_type":"Тип тарификации",
"id":ID тарифа,
"is_public":Публичный ли тариф?,
"table_name":"Таблица в БД",
"owner":"Владелец тарифа",
"display_switch_price":Отображаемая цена подключения,
"name":"Название тарифа",
"switch_price":Цена подключение в системной валюте,
"did_multiplier":Множитель цен для DID-номеров,
"is_option":Тарифная опция?,
"multiplier":Множитель цен,
"description":"Описание тарифа"}, ...]
</small><br>
**switchRates**(1) — Смена тарифного плана, подключение и отключение тарифных опций
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID тарифа (опции)
* state(bool) — Состояние (только для тарифных опций)
* sip\_extension(string) — Учетная запись SIP для изменения
Пример запроса:
GET /billing/api/2.2/ffffffffff/switchRates?id=1&sip_extension=1000001
_______________________________________________________
true
</small><br>
**getRates**(1) — Получение направлений в тарифе по ID тарифа (опции)
<small>
Возвращает: JSON-список направлений в тарифном плане
Аргументы:
* **id**(num) — ID тарифа (опции)
Пример запроса:
GET /billing/api/2.2/ffffffffff/getRates?id=1
_______________________________________________________
{"ID направления":
{"direction":"Название направления",
"routing":[
{"routename":"Название маршрута",
"route": ID маршрута,
"displaycost": Цена в валюте пользователя,
"priority": Приоритет,
"cost": Цена в системной валюте
}
]
}
...
}
</small><br>
**getRatesInfo**(22) — Получение параметров тарифного плана
<small>
Возвращает: Параметры тарифного плана (JSON)
Аргументы:
* **id**(num) — ID тарифа (опции)
Пример запроса:
GET /billing/api/2.2/ffffffffff/getRatesInfo?id=1
_______________________________________________________
{"bill_type":"Тип тарификации",
"id":ID тарифа,
"is_public":Публичный ли тариф?,
"table_name":"Таблица в БД",
"owner":"Владелец тарифа",
"display_switch_price":Отображаемая цена подключения,
"name":"Название тарифа",
"switch_price":Цена подключение в системной валюте,
"did_multiplier":Множитель цен для DID-номеров,
"is_option":Тарифная опция?,
"multiplier":Множитель цен,
"description":"Описание тарифа"}
</small><br>
**addRates**(22) — Добавление нового тарифного плана
<small>
Возвращает: _true_ / _false_
Аргументы:
* **table**(string) — Название таблицы в БД
* **name**(string) — Название тарифного плана (опции)
* bill\_type(string) — Тип тарификации _[by_minute]_
* is\_option(bool) — Тарифная опция? _[false]_
* is\_public(bool) — Публичный тариф? _[false]_
* switch\_price(num) — Цена подключения _[0.00]_
* multiplier(num) — Множитель цен _[1.00]_
* did\_multiplier(num) — Множитель цен прямых номеров _[1.00]_
* description(string) — Описание тарифа _[]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/addRates?table=test&name=test
_______________________________________________________
true
</small><br>
**updateRates**(22) — Обновление параметров тарифного плана
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID тарифа (опции)
* name(string) — Название тарифного плана (опции)
* bill\_type(string) — Тип тарификации
* is\_option(bool) — Тарифная опция?
* is\_public(bool) — Публичный тариф?
* switch\_price(num) — Цена подключения
* multiplier(num) — Множитель цен
* did\_multiplier(num) — Множитель цен прямых номеров
* description(string) — Описание тарифа
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateRates?id=1&name=etst
_______________________________________________________
true
</small><br>
**deleteRates**(22) — Удаление тарифного плана
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID тарифа (опции)
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteRates?id=1
_______________________________________________________
true
</small><br>
**addDirection**(22) — Добавление направления в тарифный план
<small>
Возвращает: _true_ / _false_
Аргументы:
* **rates**(num) — ID тарифного плана (опции)
* **direction**(num) — ID направления
* **cost**(num) — Цена за единицу тарификации
* **route**(num) — ID маршрута
* priority(num) — Приоритет _[1]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/addDirection?rates=1&direction=600&route=10&cost=0.15
_______________________________________________________
true
</small><br>
**updateDirection**(22) — Обновление параметров направления в тарифном плане
<small>
Возвращает: _true_ / _false_
Аргументы:
* **rates**(num) — ID изменяемого тарифного плана (опции)
* **direction**(num) — ID изменяемого направления
* prior(num) — Приоритет изменяемого направления _[1]_
* cost(num) — Цена за единицу тарификации
* route(num) — ID маршрута
* priority(num) — Приоритет
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateDirection?rates=1&direction=600&route=11&cost=0.18
_______________________________________________________
true
</small><br>
**updateDirections**(22) — Обновление параметров направлений в тарифном плане
<small>
Возвращает: _true_ / _false_
Аргументы:
* **rates**(num) — ID изменяемого тарифного плана (опции)
* **directions**(string) — JSON-массив со списком изменяемых направлений (формат см. в функции *updateDirection()*)
Пример запроса:
POST /billing/api/2.2/ffffffffff/updateDirections?rates=1
_______________________________________________________
true
</small><br>
**deleteDirection**(22) — Удаление направления из тарифного плана
<small>
Возвращает: _true_ / _false_
Аргументы:
* **rates**(num) — ID изменяемого тарифного плана (опции)
* **direction**(num) — ID удаляемого направления
* prior(num) — Приоритет удаляемого направления _[1]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteDirection?rates=1&direction=600
_______________________________________________________
true
</small><br>
**updateMarkup**(22) — Автоматическая наценка в тарифном плане
<small>
Возвращает: _true_ / _false_
Аргументы:
* **rates**(num) — ID изменяемого тарифного плана (опции)
* **markup**(num) — Множитель
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateMarkup?rates=1&markup=1.2
_______________________________________________________
true
</small><br>
**copyDirections**(22) — Копирование текущего тарифного плана пользователя в выбранный ТП
<small>
Возвращает: _true_ / _false_
Аргументы:
* **rates**(num) — ID тарифного плана, куда будет скопирован текущий ТП
Пример запроса:
GET /billing/api/2.2/ffffffffff/copyDirections?rates=2
_______________________________________________________
true
</small><br>
**getBillTypes**(22) — Получение списка доступных типов тарификации
<small>
Возвращает: JSON-массив ­— список доступных типов тарификации
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getBillTypes
_______________________________________________________
[{"type":"Название типа",
"free_threshold": Нетарифицируемый порог,
"step":Шаг тарификации}, ...]
</small><br>
**getBillType**(33) — Получение информации о типе тарификации по его названию
<small>
Возвращает: Информация о типе тарификации (JSON)
Аргументы:
* **bill\_type**(string) — Название типа тарификации
Пример запроса:
GET /billing/api/2.2/ffffffffff/getBillType?bill_type=by_second
_______________________________________________________
{"type":"Название типа",
"free_threshold": Нетарифицируемый порог,
"step":Шаг тарификации}
</small><br>
**addBillType**(33) — Добавление типа тарификации
<small>
Возвращает: _true_ / _false_
Аргументы:
* **bill\_type**(string) — Название типа тарификации
* **free\_threshold**(num) — Нетарифицируемый порог
* **step**(num) — Шаг тарификации (сек.)
Пример запроса:
GET /billing/api/2.2/ffffffffff/addBillType?bill_type=custom_type&free_threshold=3&step=10
_______________________________________________________
true
</small><br>
**updateBillType**(33) — Обновление параметров типа тарификации
<small>
Возвращает: _true_ / _false_
Аргументы:
* **bill\_type**(string) — Название изменяемого типа тарификации
* free\_threshold(num) — Нетарифицируемый порог
* step(num) — Шаг тарификации (сек.)
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateBillType?bill_type=custom&free_threshold=0
_______________________________________________________
true
</small><br>
**deleteBillType**(33) — Удаление типа тарификации
<small>
Возвращает: _true_ / _false_
Аргументы:
* **bill\_type**(string) — Название удаляемого типа тарификации
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteBillType?bill_type=custom
_______________________________________________________
true
</small><br>
## Обработка звонков ##
**resolveCallerid**(0) — Получение текущего CallerID пользователя __! DEPRECATED: Используйте getValue?property=sip\_callerid !__
<small>
Возвращает: CallerID пользователя
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/resolveCallerid
_______________________________________________________
79010000001
</small><br>
**createCallback**(1) — Инициация Callback
<small>
Возвращает: _true_ / _false_
Аргументы:
* callerid(string) — CallerID (в случае, если не указан — используем CallerID профиля)
* **destination1**(string) — Первое назначение
* **destination2**(string) — Второе назначение
* epitch(num) — Модификатор тона голоса (от 1 до 6)
Пример запроса:
GET /billing/api/2.2/ffffffffff/createCallback?destination1=79010000001&destination2=79020000002
_______________________________________________________
true
</small><br>
**callPrepare**(50) — Инициация звонка
<small>
Возвращает: Allowed/Declined MaxCallTime/ErrorCode Destination CallerID DirectionName RoutePrefix RouteName PitchRx PitchTx
Аргументы:
* callerid(string) — CallerID (в случае, если не указан — используем CallerID профиля)
* **destination**(string) — Назначение
* prior(num) — Приоритет _[1]_
* from\_originate(string) — Если звонок был инициирован не напрямую, в параметре необходимо указать **true**, либо DID-номер, на который пришел звонок
* source(string) — IP-адрес АТС, инициирующей звонок
* originated\_by(string) — Инициатор звонка (например: user, system, slave и пр.)
Пример запроса:
GET /billing/api/2.2/ffffffffff/callPrepare?login=10000&destination=79010000001
_______________________________________________________
Allowed 99999 79010000001 79020000002 RussiaMobile-Tele2 outline1/ route1-cli -1 -1
</small><br>
**callFinish**(50) — Завершение звонка
<small>
Возвращает: Saved DirectionName [CallerID/Destination] via [route] time cost CURRENCY SIPSTATUS
Аргументы:
* callerid(string) — CallerID (в случае, если не указан — используем CallerID профиля)
* **destination**(string) — Назначение
* prior(num) — Приоритет _[1]_
* **length**(num) — Длительность звонка в секундах
* status(string) — SIP-статус звонка
* is\_did(string) — Если звонок был совершен на DID-номер, параметр принимает значение данного DID-номера
Пример запроса:
GET /billing/api/2.2/ffffffffff/callFinish?login=10000&destination=79020000002&length=0&status=0CANCEL
_______________________________________________________
Saved RussiaMobile-Tele2 [79010000001/79020000002] via [route1-cli] 0 0 EUR 0CANCEL
</small><br>
**getTextBalance**(50) — Получение баланса пользователя в текстовом виде
<small>
Возвращает: Баланс для проговаривания АТС
Аргументы:
* balance(num) — Баланс для преобразования в текст (если не указано, используется баланс пользователя)
* balance(string) — Валюта (если не указано, используется валюта пользователя)
Пример запроса:
GET /billing/api/2.2/ffffffffff/getTextBalance?login=10000
_______________________________________________________
ostatok&ноль&евро&ноль&центов&tadam3s
</small><br>
**authorizeCall**(50) — Авторизация пользователя в системе DISA
<small>
Возвращает: SIP extension авторизованного пользователя либо код ошибки (_Declined XXX_)
Аргументы:
* **callerid**(string) — CallerID, с которого поступил звонок на обработчик DISA
* **auth**(string) — Строка авторизации (обычно, это SIP extension + PIN-код)
Пример запроса:
GET /billing/api/2.2/ffffffffff/authorizeCall?callerid=79010000001&auth=100006666
_______________________________________________________
10000
</small><br>
**authorizeRealm**(50) — Проверка подлинности запроса дочерней АТС
<small>
Возвращает: _true_ / _false_
Аргументы:
* **source**(string) — IP-адрес дочерней АТС
* **auth**(string) — MD5-хэш от строки "${API-ключ}${IP-адрес АТС}${Имя API-ключа}"
Пример запроса:
GET /billing/api/2.2/ffffffffff/authorizeRealm?params
_______________________________________________________
true
</small><br>
**createTTS**(50) — Преобразование текста в звуковой файл
<small>
Возвращает: аудиопоток в формате **wav**
Аргументы:
* **text**(string) — Текст
Пример запроса:
GET /billing/api/2.2/ffffffffff/createTTS?text=hello+world
_______________________________________________________
<binary data>
</small><br>
## Прямые номера ##
**getDisaDIDList**(0) — Получение списка номеров DISA
<small>
Возвращает: JSON-массив — список доступных номеров DISA
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDisaDIDList
_______________________________________________________
[{"did":"Номер доступа", "comment":"DISA\/Регион"}, ... ]
</small><br>
**updateDIDState**(1) — Изменение состояния прямого номера
<small>
Возвращает: _true_ / _ false_
Аргументы:
* **did**(string) — Изменяемый DID-номер
* parameter(ustring{auto_renew, enabled}) — Изменяемый параметр _[auto_renew]_
* **state**(bool) — Состояние
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateDIDState?did=78005555550&parameter=enabled&state=false
_______________________________________________________
true
</small><br>
**getDIDPool**(1) — Получение пула прямых номеров (список стран, локаций либо DID-номеров)
<small>
Возвращает: Пул прямых номеров
Аргументы:
* country(string) — Страна
* area(string) — Регион
* search\_pattern(string) — Поисковый запрос
Примеры запросов:
GET /billing/api/2.2/ffffffffff/getDIDPool
_______________________________________________________
[{"country": "Страна"}, ...]
GET /billing/api/2.2/ffffffffff/getDIDPool?country=Страна
_______________________________________________________
[{"area": "Регион"}, ...]
GET /billing/api/2.2/ffffffffff/getDIDPool?country=Страна&area=Регион&search_pattern=666
_______________________________________________________
[{"displaycost": Цена аренды в валюте пользователя,
"displayinstallcost": Цена подключения в валюте пользователя,
"cost": Цена аренды в системной валюте,
"installcost": Цена подключения в системной валюте,
"country":"Страна",
"area":"Регион",
"voice_support":"Поддержка голоса",
"sms_support":"Поддержка SMS",
"did":"DID-номер",
"pool_id": ID пула,
"arg1": "Первый параметр для подключения",
"arg2": "Второй параметр для подключения",
"arg3": "Третий параметр для подключения"}, ...]
</small><br>
**orderDID**(1) — Заказ прямого номера
<small>
Возвращает: _true_ / _false_
Аргументы:
* **pool\_id**(num) — ID пула
* **did**(string) — прямой номер
* arg1(string) — Первый параметр
* arg2(string) — Второй параметр
* arg3(string) — Третий параметр
Пример запроса:
GET /billing/api/2.2/ffffffffff/orderDID?pool_id=1&did=78005555550&arg1=something&arg2=somewhere
_______________________________________________________
true
</small><br>
**getDIDList**(1) — Получение списка прямых номеров
<small>
Возвращает: JSON-массив — список прямых номеров
Аргументы:
* sort\_by(ustring{expiration, cost, did) — Сортировка по (истечение аренды, стоимость, номер) _[expiration]_
* own(bool) — Показывать только собственные прямые номера _[true]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDIDList
_______________________________________________________
[{"displaycost": Цена аренды в валюте пользователя,
"pool": ID пула,
"renew_notify": Отправлено уведомление о просрочке,
"expiration":"Дата истечения в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС",
"enabled": Включен ли DID?,
"did": Прямой номер,
"auto_renew": Включено ли автопродление?,
"comment":"Комментарий",
"owner":"Владелец",
"cost":Цена аренды в системной валюте}, ...]
</small><br>
**addDID**(22) — Добавление прямого номера
<small>
Возвращает: _true_ / _false_
Аргументы:
* **did**(string) — Прямой номер
* **owner**(string) — Владелец прямого номера
* comment(string) — Комментарий _[]_
* cost(num) — Цена аренды _[0.00]_
* expiration(string) — Дата истечения в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
Пример запроса:
GET /billing/api/2.2/ffffffffff/addDID?did=78005555550&owner=user&cost=100
_______________________________________________________
true
</small><br>
**updateDID**(22) — Обновление параметров прямого номера
<small>
Возвращает: _true_ / _false_
Аргументы:
* **did**(string) — Изменяемый прямой номер
* owner(string) — Новый владелец
* comment(string) — Комментарий
* cost(num) — Цена аренды
* expiration(string) — Дата истечения в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateDID?did=78005555550&cost=101
_______________________________________________________
true
</small><br>
**deleteDID**(22) — Удаление прямого номера
<small>
Возвращает: _true_ / _false_
Аргументы:
* **did**(string) — Удаляемый прямой номер
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteDID?did=78005555550
_______________________________________________________
true
</small><br>
**getDIDInfo**(22) — Получение информации о прямом номере
<small>
Возвращает: Информация о прямом номере (JSON)
Аргументы:
* **did**(string) — Прямой номер
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDIDInfo?did=78005555550
_______________________________________________________
{"displaycost": Цена аренды в валюте пользователя,
"expiration":"Дата истечения в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС",
"owner":"Владелец",
"comment":"Комментарий",
"did": Прямой номер,
"auto_renew": Включено ли автопродление?,
"enabled": Включен ли прямой номер?,
"renew_notify": Отправлено уведомление о просрочке,
"cost": Цена аренды в системной валюте}
</small><br>
**renewDID**(22) — Продление прямого номера
<small>
Возвращает: _true_ / _false_
Аргументы:
* **did**(string) — Продлеваемый DID-номер
Пример запроса:
GET /billing/api/2.2/ffffffffff/renewDID?did=78005555550
_______________________________________________________
true
</small><br>
**addDIDPool**(33) — Добавление пула прямых номеров
<small>
Возвращает: _true_ / _false_
Аргументы:
* **country**(string) — Страна
* **area**(string) — Регион
* cost(num) — Цена аренды в месяц _[0.00]_
* installcost(num) — Цена подключения _[0.00]_
* provider(string) — Обработчик _[local]_
* user(string) — Пользователь (передается в обработчик) _[]_
* pass(string) — Пароль (передается в обработчик) _[]_
* param1(string) — Параметр 1 (передается в обработчик) _[]_
* param2(string) — Параметр 2 (передается в обработчик) _[]_
* param3(string) — Параметр 3 (передается в обработчик) _[]_
* qty(num) — Количество отображаемых номеров _[100]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/addDIDPool?country=Russia&area=Moscow&cost=50
_______________________________________________________
true
</small><br>
**updateDIDPool**(33) — Обновление параметров пула прямых номеров
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID изменяемого пула прямых номеров
* country(string) — Страна
* area(string) — Регион
* cost(num) — Цена аренды в месяц
* installcost(num) — Цена подключения
* provider(string) — Обработчик
* user(string) — Пользователь (передается в обработчик)
* pass(string) — Пароль (передается в обработчик)
* param1(string) — Параметр 1 (передается в обработчик)
* param2(string) — Параметр 2 (передается в обработчик)
* param3(string) — Параметр 3 (передется в обработчик)
* qty(num) — Количество отображаемых номеров
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateDIDPool?id=1&cost=100
_______________________________________________________
true
</small><br>
**getDIDPools**(33) — Получение списка пулов прямых номеров
<small>
Возвращает: Список пула прямых номеров (JSON)
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDIDPools
_______________________________________________________
[{"id": ID пула,
"country":"Страна",
"area":"Зона"
"cost": Цена в месяц,
"installcost": Цена установки,
"displayinstallcost": Цена установки в валюте пользователя,
"displaycost": Цена в месяц в валюте пользователя,
"quantity": Количество номеров на странице,
"provider":"Провайдер (обработчик)"
"username":"Имя пользователя для обработчика",
"password":"Пароль для обработчика",
"param1":"Параметр №1 для обработчика",
"param2":"Параметр №2 для обработчика",
"param3":"Параметр №3 для обработчика"}, ...]
</small><br>
**getDIDPoolInfo**(33) — Получение информации о пуле прямых номеров
<small>
Возвращает: Информация о пуле прямых номеров (JSON)
Аргументы:
* **id**(num) — ID пула прямых номеров
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDIDPoolInfo?id=1
_______________________________________________________
{"id": ID пула,
"country":"Страна",
"area":"Зона"
"cost": Цена в месяц,
"installcost": Цена установки,
"displayinstallcost": Цена установки в валюте пользователя,
"displaycost": Цена в месяц в валюте пользователя,
"quantity": Количество номеров на странице,
"provider":"Провайдер (обработчик)"
"username":"Имя пользователя для обработчика",
"password":"Пароль для обработчика",
"param1":"Параметр №1 для обработчика",
"param2":"Параметр №2 для обработчика",
"param3":"Параметр №3 для обработчика"}
</small><br>
**deleteDIDPool**(33) — Удаление пула прямых номеров
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID удаляемого пула прямых номеров
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteDIDPool?id=1
_______________________________________________________
true
</small><br>
**getDIDCount**(50) — Проверка существования прямого номера
<small>
Возвращает: Количество найденных DID-номеров
Аргументы:
* did(string) — Искомый DID-номер
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDIDCount?did=78005555550
_______________________________________________________
1
</small><br>
## Фильтры DIDTables ##
**getDIDActions**(1) — Получение списка возможных действий
<small>
Возвращает: Список возможных действий для DIDTables (JSON)
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDIDActions
_______________________________________________________
{"voice":
{"Действие1":"Значение destination по-умолчанию"},
{"Действие2":"Значение destination по-умолчанию"},
...
},
"sms":{
{"Действие1 (SMS)":"Значение destination по-умолчанию"},
{"Действие2 (SMS)":"Значение destination по-умолчанию"},
...
}
</small><br>
**getFilters**(1) — Получение списка возможных фильтров
<small>
Возвращает: Список возможных источников/паттернов для DIDTables (JSON)
Аргументы:
* resolver(string) — Получение списка доступных паттернов по конкретному обработчику
* sources(bool) — Получить только источники _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getFilters
_______________________________________________________
{"Источник1":{ "Паттерн1", "Паттерн2" },...}
</small><br>
**addDIDRule**(1) — Создание нового правила DIDTables
<small>
Возвращает: _true_ / _false_
Аргументы:
* **did**(string) — Прямой номер
* source(string) — Используемый фильтр
* pattern(string) — Паттерн
* policy(ustring{ACCEPT,REJECT}) — Политика (принять/отклонить)
* sms\_action(string) — Действие для обработки SMS-сообщения
* sms\_destination(string) — Назначение (SMS)
* action(string) — Действие для обработки входящего звонка
* server(string) — Сервер, на котором выполняется правило
* destination(string) — Назначение
* callerid(string) — Передаваемый АОН (строка TRANSIT будет заменена на номер звонящего)
* timeout(num) — Таймаут (сек.)
* condition(string) — Условие (SUCCESS — успешный вызов, UNSUCCESS — неудачный вызов, BUSY — занят, NOANSWER — нет ответа, UNAVAIL — недоступен)
* input(string) — Ввод (если «условие» выбрано «Совпадение ввода»)
* position(ustring{start,end}) — Добавить правило в начало _[start]_ или в конец _[end]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/addDIDRule?did=78005555550&source=number&pattern=*&policy=ACCEPT&destination=10000
_______________________________________________________
true
</small><br>
**updateDIDRule**(1) — Обновление правила DIDTables
<small>
Возвращает: _true_ / _false_
Аргументы:
* **did**(string) — Прямой номер
* **rule**(num) — Номер изменяемого правила
* pos(num) — Новая позиция
* source(string) — Используемый фильтр
* pattern(string) — Паттерн
* policy(ustring{ACCEPT,REJECT}) — Политика (принять/отклонить)
* sms\_action(string) — Действие для обработки SMS-сообщения
* sms\_destination(string) — Назначение (SMS)
* action(string) — Действие для обработки входящего звонка
* server(string) — Сервер, на котором выполняется правило
* destination(string) — Назначение
* callerid(string) — Передаваемый АОН (строка TRANSIT будет заменена на номер звонящего)
* timeout(num) — Таймаут (сек.)
* condition(string) — Условие,
* input(string) — Ввод (если «условие» выбрано «Совпадение ввода»)
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateDIDRule?did=78005555550&rule=1&pos=2
_______________________________________________________
true
</small><br>
**deleteDIDRule**(1) — Удаление правила DIDTables
<small>
Возвращает: _true_ / _false_
Аргументы:
* **did**(string) — Прямой номер
* **rule**(num) — Номер удаляемого правила
* pattern(string) — Паттерн (для удаления по паттерну — указать *rule* как *-1* )
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteDIDRule?did=78005555550&rule=-1&pattern=74955555550
_______________________________________________________
true
</small><br>
**getDIDRules**(1) — Получение списка правил для прямого номера
<small>
Возвращает: Список правил для прямого номера (JSON)
Аргументы:
* **did**(string) — Прямой номер
* rule(num) — Номер правила (если не указано — возвращает все правила)
Пример запроса:
GET /billing/api/2.2/ffffffffff/getDIDRules?did=78005555550
_______________________________________________________
[{"timeout": Таймаут (с.),
"server":"Сервер, на котором выполняется правило",
"did": Прямой номер,
"policy":"Политика (принять/отклонить)",
"condition":"Условие","sms_action":"internal","source":"number","action":"playfile","pattern":"*","destination":"beep","rule":1,"callerid":"TRANSIT"},{"timeout":30,"server":"ptr-aa.narayana.im","did":78124099441,"policy":"ACCEPT","condition":"ALWAYS","sms_action":"internal","source":"number","action":"inputstr","pattern":"*","destination":"XXX beep 1","rule":2,"callerid":"TRANSIT"},{"timeout":30,"server":"ptr-aa.narayana.im","did":78124099441,"policy":"ACCEPT","condition":"ALWAYS","sms_action":"internal","source":"number","action":"tts","pattern":"*","destination":"Вы ввели ${input}","rule":3,"callerid":"TRANSIT"}]
</small><br>
**resolveDIDRule**(50) — Получение правил обработки правила DIDTables
<small>
Возвращает: OK ACCEPT/REJECT Владелец(extension) Действие(action) Сервер(sip_server) Назначение(destination) АОН(callerid) Таймаут(timeout) ДействиеSMS(sms_action) НазначениеSMS(sms_destination) — для выполнения правила
Возвращает: SKIP НомерПравила — для перехода на следущее доступное к выполнению правило
Возвращает: FIN — в случае, если правила закончились
Аргументы:
* **did**(string) — Прямой номер
* rule(num) — ID правила _[1]_
* **callerid**(string) — CallerID
* status(string) — SIP-статус
* input(string) — Ввод (SIP-статус должен быть передан как **99INPUT**)
Пример запроса:
GET /billing/api/2.2/ffffffffff/resolveDIDRule?params
_______________________________________________________
OK ACCEPT 10000 call rdx.narayana.im 10000 TRANSIT 30 internal 10000
</small><br>
## Персональный план набора (алиасы) ##
**getAliases**(1) — Получение списка алиасов
<small>
Возвращает: Список алиасов (JSON)
Аргументы:
* all(bool) — Показать все алиасы (иначе — только свои алиасы)
Пример запроса:
GET /billing/api/2.2/ffffffffff/getAliases
_______________________________________________________
[{"global": Глобальный алиас (0/1),
"id": ID алиаса,
"owner":"Владелец алиаса",
"alias": Алиас,
"destination": Назначение}, ...]
</small><br>
**getAliase**(1) — Получение информации о алиасе
<small>
Возвращает: Информация о алиасе (JSON)
Аргументы:
* **id**(num) — ID алиаса
Пример запроса:
GET /billing/api/2.2/ffffffffff/getAlias?id=11
_______________________________________________________
{"global": Глобальный алиас (0/1),
"id": ID алиаса,
"owner":"Владелец алиаса",
"alias": Алиас,
"destination": Назначение}
</small><br>
**addAlias**(1) — Добавление нового алиаса
<small>
Возвращает: _true_ / _false_
Аргументы:
* **alias**(string) — Алиас
* **destination**(string) ­— Назначение
* sip_extension(string) — SIP-логин, для которого устанавливается алиас
* global(bool) — Является ли алиас глобальным
Пример запроса:
GET /billing/api/2.2/ffffffffff/addAlias?alias=111&destination=79010000001
_______________________________________________________
true
</small><br>
**updateAlias**(1) — Обновление параметров алиаса
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID алиаса
* destination(string) ­— Назначение
* sip_extension(string) — SIP-логин, для которого устанавливается алиас
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateAlias?alias=111&destination=79010000002
_______________________________________________________
true
</small><br>
**deleteAlias**(1) — Удаление алиаса
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID алиаса
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteAlias?id=11
_______________________________________________________
true
</small><br>
## Безопасность ##
**getBans**(22) — Получение списка блокировок _iptables_
<small>
Возвращает: Список блокировок (JSON)
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getBans
_______________________________________________________
[{"reason":Причина блокировки,
"source":"Источник (хост) блокировки либо whitelist",
"id":ID блокировки,
"target":"Цель (хост) блокировки",
"date":"Дата блокировки",
"clientdate":"Дата блокировки в часовом поясе пользователя",
"permanent": Является ли бан постоянным}, ...]
</small><br>
**flushBans**(22) — Сброс блокировок на SIP-сервере пользователя
<small>
Возвращает: _true_ / _false_
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/flushBans
_______________________________________________________
true
</small><br>
**banIP**(33) — Блокировка IP-адреса
<small>
Возвращает: _true_ / _false_
Аргументы:
* **source**(string) — Источник (хост) блокировки либо whitelist
* **target**(string) — Цель (хост) блокировки
* reason(string) — Причина блокировки _[]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/banIP?source=whitelist&target=127.0.0.1&reason=ya+je+localhost
_______________________________________________________
true
</small><br>
**unbanIP**(33) — Разблокировка IP-адреса
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID блокировки
Пример запроса:
GET /billing/api/2.2/ffffffffff/unbanIP?id=1
_______________________________________________________
true
</small><br>
**updateBanPermanent**(33) — Обновление статуса блокировки
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — ID блокировки
* **state**(bool) — Статус блокировки (_true_ — постоянная, _false_ — временная)
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateBanPermanent?id=1&state=true
_______________________________________________________
true
</small><br>
**flushAllBans**(33) — Сброс всех блокировок на всех серверах Narayana
<small>
Возвращает: _true_ / _false_
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/flushAllBans
_______________________________________________________
true
</small><br>
**closeChannels**(50) — Закрыть все активные каналы пользователя
<small>
Возвращает: _true_ / _false_
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/closeChannels?login=10000
_______________________________________________________
true
</small><br>
## Предоплаченные коды (коды приглашения). Регистрация новых пользователей. ##
**registerRequest**(0) — Запрос на регистрацию нового пользователя / Генерация кода приглашения
<small>
Возвращает: Сгенерированный код приглашения
Аргументы:
* **signature**(string) — Уникальная подпись клиента (генерируется Web-сервером)
Пример запроса:
GET /billing/api/2.2/ffffffffff/registerRequest?signature=test
_______________________________________________________
0000000000000000
</small><br>
**registerByCode**(0) — Регистрация нового пользователя по коду приглашения
<small>
Возвращает: _true_ / _false_
Аргументы:
* **code**(string) — Инвайт-код (код предоплаченной карты)
* register(bool) — Произвести регистрацию (в противном случае — симуляция регистрации) _[false]_
* user(string) — Имя пользователя
* web\_password(string) — MD5-хэш от пароля пользователя для входа в Web-интерфейс
* language(string) — Язык Web-интерфейса
Пример запроса:
GET /billing/api/2.2/ffffffffff/registerByCode?code=0000000000000000&register=true&user=test&web_password=098f6bcd4621d373cade4e832627b4f6&language=nenglish
_______________________________________________________
true
</small><br>
**activatePrepaidCode**(1) — Активация кода приглашения (кода предоплаченной карты) на счет пользователя
<small>
Возвращает: _true_ / _false_
Аргументы:
* **code**(string) — Код приглашения
* **amount**(num) — Сумма к зачислению (в случае, если указано _0_ — зачисляем весь доступный остаток)
Пример запроса:
GET /billing/api/2.2/ffffffffff/activatePrepaidCode?code=0000000000000000&amount=0
_______________________________________________________
true
</small><br>
**getPrepaidCodes**(1) — Получение списка сгенерированных кодов приглашений (кодов предоплаченных карт)
<small>
Возвращает: Список сгенерированных кодов приглашения (JSON)
Аргументы:
* active(bool) — Показывать только неактивированные коды _[false]_
* all(bool) — Показать все коды (иначе — только коды, созданные лично вами) _[false]_
* count(bool) — Показать только количество кодов _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getPrepaidCodes
_______________________________________________________
[{"created":"Дата создания",
"clientcreated": "Дата создания в часовом поясе пользователя",
"balance": Баланс,
"displaybalance": Баланс в валюте пользователя,
"code":"Код",
"accesslevel": Уровень доступа,
"owner":"Создатель кода",
"activated_to":"Кем активирован",
"activated_date":"Дата активации"
"client_activated_date":"Дата активации в часовом поясе пользователя"}, ...]
</small><br>
**createPrepaidCode**(1) — Генерация нового кода приглашения (предоплаченного кода)
<small>
Возвращает: Сгенерированный код приглашения
Аргументы:
* accesslevel(num) — Уровень доступа _[10]_
* balance(num) — Баланс _[0.00]_
* target(string) — Пользователь либо SIM-карта, который может активировать данный код (если не указано — без ограничений)_ _[]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/createPrepaidCode?balance=10.00
_______________________________________________________
true
</small><br>
**deletePrepaidCode**(1) — Удаление неактивированного кода приглашения (кода предоплаченной карты)
<small>
Возвращает: _true_ / _false_
Аргументы:
* **code**(string) — Код приглашения
Пример запроса:
GET /billing/api/2.2/ffffffffff/deletePrepaidCode?code=0000000000000000
_______________________________________________________
true
</small><br>
## Сообщения ##
**receiveSMS**(0) — Получение нового сообщения от внешнего источника
<small>
Возвращает: _true_ / _false_
Аргументы:
* **msg\_handler**(string) — Идентификатор обработчика (обычно привязывается к API-ключу, поэтому, указывать не обязательно)
Пример запроса:
GET /billing/api/2.2/ffffffffff/receiveSMS?from=18005555550&to=78005555550&text=Hello+world
_______________________________________________________
true
</small><br>
**receiveDeliveryReport**(0) — Получение отчета о доставке от внешнего источника
<small>
Возвращает: _true_ / _false_
Аргументы:
* **msg\_handler**(string) — Идентификатор обработчика (обычно привязывается к API-ключу, поэтому, указывать не обязательно)
Пример запроса:
GET /billing/api/2.2/ffffffffff/receiveDeliveryReport?id=AAAAAAAAAAAAAAAAAA&status=DELIVERED
_______________________________________________________
true
</small><br>
**msgCallback**(0) — Инициация обратного вызова с помощью SMS от внешнего источника
<small>
Возвращает: _true_ / _false_
Аргументы:
* **msisdn**(string) — Номер телефона, с которого пришел запрос на инициацию
* **text**(string) — Текст запроса в формате "SIPEXTEN PIN [CALLERID] DESTINATION1 [DESTINATION2]" (в квадратных скобках указаны необязательные параметры)
* **to**(string) — Номер телефона, на который пришел запрос на инициацию
Пример запроса:
GET /billing/api/2.2/ffffffffff/msgCallback?msisdn=78005555550&to=18005555550&text=40000+1111+74999999999+79111111111
_______________________________________________________
true
</small><br>
**readSMS**(1) — Отметить SMS-сообщения как прочитанные
<small>
Возвращает: _true_ / _false_
Аргументы:
* **status**(num) — Отмечать только сообщения с данным статусом
* **did**(string) — Отмечать сообщения только для данного прямого номера
Пример запроса:
GET /billing/api/2.2/ffffffffff/readSMS?status=0&did=18005555550
_______________________________________________________
true
</small><br>
**sendSMS**(1) — Отправить SMS-сообщение
<small>
Возвращает: Уникальный идентификатор сообщения
Аргументы:
* callerid(string) — Отображаемый номер (если не указан — берется из профиля пользователя)
* **to**(string) — Номер телефона назначения
* **text**(string) — Текст сообщения (urlencoded)
Пример запроса:
GET /billing/api/2.2/ffffffffff/sendSMS?to=18005555550&text=Hello+World!
_______________________________________________________
uniqueid
</small><br>
**sendHLR**(1) — Отправить HLR-запрос
<small>
Возвращает: Результат HLR-запроса OK,IMSI,MCC,MNC,LAC
Аргументы: —
* **to**(string) — Номер телефона для HLR-запроса
Пример запроса:
GET /billing/api/2.2/ffffffffff/sendHLR?to=18005555550
_______________________________________________________
OK,999881111111111,999,888,000000
</small><br>
**sendVoiceMessage**(1) — Отправить голосовое сообщение
<small>
Возвращает: Уникальный идентификатор сообщения
Аргументы:
* callerid(string) — Отображаемый номер (если не указан — берется из профиля пользователя)
* **to**(string) — Номер телефона назначения
* **text**(string) — Текст сообщения (urlencoded) либо ссылка на аудиофайл
Пример запроса:
GET /billing/api/2.2/ffffffffff/sendVoiceMessage?callerid=18005555550&to=780055555550&text=hello,+world
_______________________________________________________
uniqueid
</small><br>
**sendSIPMessage**(1) — Отправить SIP-сообщение абоненту сервиса
<small>
Возвращает: _true_ / _false_
Аргументы:
* callerid(string) — Отображаемый номер (если не указан — берется из профиля пользователя)
* **to**(string) — Номер телефона назначения
* **text**(string) — Текст сообщения (urlencoded)
Пример запроса:
GET /billing/api/2.2/ffffffffff/sendVoiceMessage?to=40000&text=hello+world
_______________________________________________________
true
</small><br>
**deliveryReport**(1) — Получить отчет о доставке уникальному ID сообщения
<small>
Возвращает: SMS Sent (отправлено) / SMS Deliv (доставлено) / SMS Undeliv (не доставлено)
Аргументы:
* **string**(num) — ID записи в журнале вызовов
Пример запроса:
GET /billing/api/2.2/ffffffffff/deliveryReport?id=uniqueid
_______________________________________________________
SMS Deliv
</small><br>
**setDeliveryReport**(95) — Установить отчет о доставке для SMS-сообщения
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — Идентификатор сообщения
* **status**(num) — Статус
Пример запроса:
GET /billing/api/2.2/ffffffffff/setDeliveryReport?id=1&status=0
_______________________________________________________
true
</small><br>
**getSMS**(95) — Получение списка всех сообщений __! DEPRECATED: Используйте readSMS() !__
<small>
Возвращает: Список SMS-сообщений (JSON)
Аргументы:
* **status**(num) — Статус для получения сообщений
Пример запроса:
GET /billing/api/2.2/ffffffffff/getSMS?status=0
_______________________________________________________
[{"id": идентификатор сообщения (для setDeliveryReport),
"date": "дата получения сообщения (server time)",
"src": "отправитель",
"dest": "назначение",
"msg": "сообщение",
"status": статус (0 — непрочитано, 1 — прочитано),
"type": "тип (in — входящее, out — исходящее)"}, ...]}
</small><br>
## Управление пользователями ##
**getUsers**(22) — Показать список пользователей
<small>
Возвращает: Список пользователей (JSON)
Аргументы:
* all(bool) — показать пользователей, принадлежащих корпоративным пользователям _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getUsers
_______________________________________________________
[{"атрибут": "значение"}, ...]
Список аттрибутов см. в описании функции _getInfo()
</small><br>
**registerUser**(22) — Создать нового пользователя
<small>
Возвращает: _true_ / _false_
Аргументы:
* **user**(string) — имя пользователя
* **web\_password**(string) — md5-хэш от пароля пользователя
* **accesslevel**(num) — уровень доступа
* **sip\_server**(string) — SIP-сервер
9 months ago
* **sip\_extension**(string) — SIP-логин получается методом **getAvailExtension**
* **sip\_password**(string) — SIP-пароль
* balance(num) — Начальный баланс в валюте регистрирующего пользователя _[0.00]_
* language(string) — Язык интерфейса пользователя _[config.default_language]_
* currency(string) — Валюта пользователя _[EUR]_
* sip\_srtp(bool) — Использовать шифрование SRTP _[false]_
* account(string) — Номер лицевого счета (или auto для автоматического создания) _[auto]_
_! NB: даже в случае, если указана валюта регистрируемого пользователя, в качестве начального баланса будет использована валюта регистрирующего пользователя._
Пример запроса:
GET /billing/api/2.2/ffffffffff/registerUser?user=newuser&web_password=5f4dcc3b5aa765d61d8327deb882cf99&accesslevel=11&sip_server=sip.server.com&sip_extension=40000&sip_password=verysecretpassword&balance=10.00
_______________________________________________________
true
</small><br>
**updateUser**(1) — Обновление параметров пользователя
<small>
Возвращает: _true_ / _false_
Аргументы:
* user(string) — Логин пользователя
* web\_password(string) — Новый пароль для авторизации (md5-хэш)
* accesslevel(num) — Уровень доступа
* active(num) — Состояние (1 — активен, 0 — неактивен, -1 — заблокирован)
* account(num) — Номер лицевого счета
* currency(string) — Валюта пользователя
* language(string) — Язык интерфейса пользователя
* timezone(num) — Часовой пояс (смещение от UTC)
* rates(num) — Идентификатор тарифного плана
* allowed\_rates(string) — Разрешенные к подключению тарифный план
* allowed\_call\_len(num) — Максимальная длительность вызова
* notify\_email(string) — E-Mail для уведомлений
* notify\_balance(num) — Получать уведомления при снижении баланса до мин. порога
* notify\_did(num) — Количество дней до отключения DID-номера для уведомлений
* notify\_ticket(num) — Получать уведомления при ответе на тикеты
* notify\_balance\_limit(num) — Минимальный порог баланса для уведомлений
* invites(num) — Количество приглашений
* comment(string) — Комментарий
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateUser?user=newuser&active=-1
_______________________________________________________
true
</small><br>
**deleteUser**(22) — Удалние пользователя
<small>
Возвращает: _true_ / _false_
Аргументы:
* **user**(string) — Логин пользователя
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteUser?user=newuser
_______________________________________________________
true
</small><br>
## Учетные записи SIP ##
**getExtensions**(1) — Получение списка SIP-аккаунтов пользователя
<small>
Возвращает: Список SIP-аккаунтов пользователя (JSON)
Аргументы:
* own(bool) — Получить только свои SIP-аккаунты _[true]_
* all(bool) — Получить список всех SIP-аккаунтов _[false]_
* owner(string) — Получить список SIP-аккаунтов указанного пользователя
Пример запроса:
GET /billing/api/2.2/ffffffffff/getExtensions?own=true
_______________________________________________________
[{"sip_transport":"Транспорт SIP (udp,tcp,tls/udp/tcp/tls/udp,tcp)",
"disa_pin": PIN-код,
"sip_callerid": "Идентификатор звонящего (АОН)",
"owner":"Владелец SIP-аккаунта",
"sip_password":"SIP-пароль",
"sip_host":"Хост для авторизации по IP",
"sip_srtp": Шифрование SRTP (0/1),
"sip_language":"Язык SIP-аккаунта (Язык внутренних телефонных команд)",
"sip_reach": Доступность абонента для вызова (2 — доступен, 0 — недоступен),
"sip_redirect": Переадресовать входящие звонки сюда,
"sip_extension": SIP-логин,
"sip_realm":"Краткое название SIP-сервера",
"disa_trusted_cli": "Доверенный CallerID",
"rates_name":"название тарифного плана",
"sip_max_call_len": Максимальная длительность вызова,
"sip_address":"Адрес SIP-сервера" (new in v2.3),
"sip_rates_id": идентификатор тарифного плана,
"sip_rates_options": тарифные опции, перечисленные через запятую,
"sip_server":"IP-адрес SIP-сервера",
"lastupdated":"Последнее обновление статуса" (для realtime),
"sip_force_callback": Принудительный Callback (0/1),
"sip_pitch_shift": Искажение голоса (-1 — выключено)}, ...]
</small><br>
**getExtensionInfo**(1) — Получение информации о SIP-аккаунте
<small>
Возвращает: Информация о SIP-аккаунте (JSON) либо значение запрошенного параметра
Аргументы:
* **sip\_extension**(string) — SIP-аккаунт для получения информации
* property(string) — запрашиваемый параметр для получения значения конкретного параметра
Пример запроса:
GET /billing/api/2.2/ffffffffff/getExtensionInfo?sip_extension=40000
_______________________________________________________
{"sip_transport":"Транспорт SIP (udp,tcp,tls/udp/tcp/tls/udp,tcp)",
"disa_pin": PIN-код,
"sip_callerid": "Идентификатор звонящего (АОН)",
"owner":"Владелец SIP-аккаунта",
"sip_password":"SIP-пароль",
"sip_host":"Хост для авторизации по IP",
"sip_srtp": Шифрование SRTP (0/1),
"sip_language":"Язык SIP-аккаунта (Язык внутренних телефонных команд)",
"sip_reach": Доступность абонента для вызова (2 — доступен, 0 — недоступен),
"sip_redirect": Переадресовать входящие звонки сюда,
"sip_extension": SIP-логин,
"sip_realm":"Краткое название SIP-сервера",
"disa_trusted_cli": "Доверенный CallerID",
"rates_name":"название тарифного плана",
"sip_max_call_len": Максимальная длительность вызова,
"sip_address":"Адрес SIP-сервера" (new in v2.3),
"sip_rates_id": идентификатор тарифного плана,
"sip_rates_options": тарифные опции, перечисленные через запятую,
"sip_server":"IP-адрес SIP-сервера",
"lastupdated":"Последнее обновление статуса" (для realtime),
"sip_force_callback": Принудительный Callback (0/1),
"sip_pitch_shift": Искажение голоса (-1 — выключено)}
</small><br>
**getAvailExtension**(1) — Получение ближайшего доступного для регистрации SIP-аккаунта
<small>
Возвращает: Доступный SIP аккаунт для регистрации
Аргументы:
* own(bool) — Вернуть следущий доступный дополнительный (пользовательский) SIP аккаунт для регистрации (XXXXXyy) _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getAvailExtension?own=true
_______________________________________________________
4000001
</small><br>
**createExtension**(1) — Создание учетной записи SIP
<small>
Возвращает: _true_ / _false_
Аргументы:
* owner(string) — Владелец SIP-аккаунта
* **sip\_extension**(string) — SIP-аккаунт
* **sip\_password**(string) — Пароль SIP
* sip\_server(string) — Адрес SIP сервера
* sip\_callerid(string) — Определяемый номер (АОН) по-умолчанию
* sip\_language(string) — Язык SIP-аккаунта по-умолчанию
* sip\_srtp(bool) — Использовать шифрование SRTP _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/createExtension?sip_extension=4000001&sip_password=password
_______________________________________________________
true
</small><br>
**updateExtension**(1) — Изменение SIP-аккаунта
<small>
Возвращает: _true_ / _false_
Аргументы:
* sip\_extension(string) — SIP-аккаунт для изменения
* extension(string) — Новое название (номер) SIP-аккаунта
* sip\_password(string) — Новый пароль SIP
* sip\_server(string) — Новый SIP сервер
* sip\_srtp(num) — Использовать шифрование SRTP (0/1)
* sip\_transport(ustring) — Разрешенный SIP транспорт (udp,tcp,tls/udp/tcp/tls/udp,tcp)
* sip\_callerid(string) — Определяемый номер (АОН)
* sip\_max\_call\_len(num) — Максимальная длительность вызова
* sip\_reach(num) — Доступность абонента для вызова (2 — доступен, 0 — недоступен)
* sip\_redirect(string) — Куда переадресовывать входящие звонки на данный SIP-логин
* sip\_force\_callback(num) — Принудительный Callback на доверенный номер (__disa_trusted_cli__) (0/1)
* sip\_language(string) — Язык внутренних телефонных команд
* sip\_rates\_id(num) — Идентификатор тарифного плана
* disa\_pin(num) — PIN-код
* disa\_trusted\_cli(string) — Доверенный телефон
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateExtension?sip_extension=40000&sip_srtp=1&sip_reach=2
_______________________________________________________
true
</small><br>
**deleteExtension**(1) — Удаление учетной записи SIP
<small>
Возвращает: _true_ / _false_
Аргументы:
* **sip\_extension**(string) — SIP-аккаунт для удаления
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteExtension?sip_extension=40000
_______________________________________________________
true
</small><br>
## Журнал событий ##
**getLogs**(1) — Получение журнала событий
<small>
Возвращает: Журнал событий (JSON)
Аргументы:
* limit(num) — Получить последние N записей _[100]_
* only\_completed(bool) — Показать только успешные вызовы _[false]_
* resolve\_info(bool) — Показать дополнительную информацию о вызываемом абоненте _[false]_
* user(string) — пользователь для получения журнала вызовов
Пример запроса:
GET /billing/api/2.2/ffffffffff/getLogs?resolve_info=true
_______________________________________________________
[{"direction":"Направление",
"route":"Маршрут",
"cost": Цена,
"date":"Дата записи",
"displaycost": Цена в валюте пользователя,
"id": ID записи,
"username":"Имя пользователя",
"displaycurrency":"Валюта пользователя",
"status":"Статус",
"clientdate":"Дата с часовым поясом пользователя",
"destination":"Назначение",
"time":"Длительность вызова",
"callerid":"АОН",
"sip_extension": "SIP-логин",
"info": "Дополнительная информация о вызываемом абоненте",
"debug": "Отладочная информация о звонке"}, ...]
</small><br>
**deleteLogs**(1) — Удаление журнала событий
<small>
Возвращает: _true_ / _false_
Аргументы:
* user(string) — Имя пользователя для удаления журнала (если не указан — удаляем собственный журнал)
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteLogs
_______________________________________________________
true
</small><br>
## Функции интерфейса ##
**getCourse**(0) — Получение внутреннего курса валют и прочих данных
<small>
Возвращает: Курс валют (JSON)
Аргументы:
* **currency**(string) — Валюта для получения инфо
Пример запроса:
GET /billing/api/2.2/ffffffffff/getCourse?currency=EUR
_______________________________________________________
{"eur_course": Курс к Евро,"currency":"Код валюты","displayname":"€","transfer_fee":Стомость перевода между ЛС,"referral_reward":Вознаграждение за приглашение}
</small><br>
**getCurrencies**(0) — Получение списка валют
<small>
Возвращает: Список валют (JSON)
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getCurrencies
_______________________________________________________
[{"eur_course":1,"currency":"EUR","displayname":"€"},{"eur_course":68.917,"currency":"RUB","displayname":"руб. "}]
</small><br>
## Новости и широковещательные сообщения ##
**getNews**(0) — Получение новостей
<small>
Возвращает: Список новостей или конкретная новость (JSON)
Аргументы:
* id(string) — Идентификатор новости для получения
* all(bool) — Показать все новости
* broadcast(bool) — Показать только новости с широковещательным сообщением
Пример запроса:
GET /billing/api/2.2/ffffffffff/getNews
_______________________________________________________
[{"is_broadcast": широковещательное? (0/1),
"id":"идентификатор новости",
"author":"автор новости",
"message":"Тестовое содержание",
"access": минимальный уровень доступа для просмотра,
"language":"язык для просмотра",
"lastupdated":"посленее обновление (часовой пояс сервера)",
"clientlastupdated":"последнее обновление (часовой пояс пользователя)",
"broadcast":"Широковещательное сообщение",
"date":"дата (часовой пояс сервера)",
"clientdate":"дата (часовой пояс клиента)",
"header":"Тестовое сообщение",
"lastupdated_by":"автор последнего обновления",
"typ":"тип (влияет только на отображение; warning/error/success/info)"}, ... ]
</small><br>
**addNews**(33) — Добавление новости
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(string) — Идентификатор новости
* is_broadcast(bool) — Широковещательная новость? _[false]_
* user(string) — Кто может читать эту новость (если не указана — все могут читать новость)
* access(num) — Минимальный уровень доступа (если 0 — даже неавторизованные пользователи) _[0]_
* language(string) — Язык пользователей, которые могут читать новость (если не указан — могут читать пользователи с любым языком)
* typ(ustring{info,warning,error,success}) — Тип (используется для отображение в web-интерфейсе) _[info]_
* broadcast(string) — Широковещательное сообщение
* header(string) — Заголовок новости
* message(string) — Текст новости
Пример запроса:
GET /billing/api/2.2/ffffffffff/addNews?id=testnews&header=test&message=hello+world
_______________________________________________________
true
</small><br>
**updateNews**(33) — Изменение новости
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(string) — Идентификатор новости
* is_broadcast(bool) — Широковещательная новость? _[false]_
* user(string) — Кто может читать эту новость (если не указана — все могут читать новость)
* access(num) — Минимальный уровень доступа (если 0 — даже неавторизованные пользователи) _[0]_
* language(string) — Язык пользователей, которые могут читать новость (если не указан — могут читать пользователи с любым языком)
* typ(ustring{info,warning,error,success}) — Тип (используется для отображение в web-интерфейсе) _[info]_
* broadcast(string) — Широковещательное сообщение
* header(string) — Заголовок новости
* message(string) — Текст новости
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateNews?id=testnews&message=hello+earth
_______________________________________________________
true
</small><br>
**deleteNews**(33) — Удаление новости
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(string) — Идентификатор новости
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteNews?id=testnews
_______________________________________________________
true
</small><br>
## Тикет-система ##
**getUnreadTickets**(1) — Получение количества непрочитанных сообщений __! DEPRECATED: функция больше не используется !__
<small>
Возвращает: Количество непрочитанных тикетов
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getUnreadTickets
_______________________________________________________
1
</small><br>
**createTicket**(1) — Создать тикет или ответить в существующий
<small>
Возвращает: Номер созданного / существующего тикета
Аргументы:
* **destination**(string) — Логин получателя
* **subject**(string) — Тема
* **message**(string) — Сообщение
* comment(string) — Комментарий (только для администраторов)
* ticket(num) — Номер тикета для ответа в него
Пример запроса:
GET /billing/api/2.2/ffffffffff/createTicket?destination=support&subject=Help&message=Phone+is+not+ringing!
_______________________________________________________
5162
</small><br>
**getTickets**(1) — Получение списка тикетов
<small>
Возвращает: Список тикетов (JSON)
Аргументы:
* limit(num) — Получить N последних тикетов _[800]_
* all(bool) — Получить все тикеты _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getTickets
_______________________________________________________
[{"status": статус тикета (1 — непрочитан, 0 — прочитан, -1 — закрыт),
"unread": непрочитан (true/false),
"subject":"тема",
"sender":"отправитель",
"recipient":"Dahog",
"ticket": номер тикета,
"msgid": номер сообщения,
"date":"дата в часовом поясе сервера",
"clientdate":"дата в часовом поясе сервера"}, ... ]
</small><br>
**getTicket**(1) — Получение тикета
<small>
Возвращает: Сообщения тикета (JSON)
Аргументы:
* **ticket**(num) — Номер тикета
Пример запроса:
GET /billing/api/2.2/ffffffffff/getTicket?params
_______________________________________________________
[{"type":"тип сообщения (in/out)",
"ticket": номер тикета,
"reply":"пользователь для ответа",
"message":"сообщение",
"status":статус (0 — прочитано, 1 — непрочитано, -1 — закрыто),
"subject":"тема",
"sender":"отправитель",
"username":"логин отправителя (для тех случаев, если sender == support)",
"date":"дата (часовой пояс сервера)",
"clientdate":"дата (часовой пояс клиента)",
"recipient":"получатель",
"msgid": идентификатор сообщения}, ... ]
</small><br>
**updateTicket**(1) — Обновление статуса тикета
<small>
Возвращает: _true_ / _false_
Аргументы:
* **ticket**(num) — Номер тикета
* action(ustring{close,open,mark_unread,assign_to) — Действие (close — закрыть, open — открыть, mark_unread — сделать непрочитаннм) _[open]_
* assign_to(string) — Список пользователей (перечисленных через запятую), кому назначить данный тикет
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateTicket?ticket=5162&action=mark_unread
_______________________________________________________
true
</small><br>
**deleteTicket**(33) — Удаление тикета
<small>
Возвращает: _true_ / _false_
Аргументы:
* **ticket**(num) — Номер тикета
* username(string) — Пользователь (для удаления всех его тикетов)
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteTicket?ticket=5162
_______________________________________________________
true
</small><br>
**deleteMessage**(33) — Удаление конкретного сообщения
<small>
Возвращает: _true_ / _false_
Аргументы:
* **id**(num) — Идентификатор сообщения
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteMessage?id=10000
_______________________________________________________
true
</small><br>
## Финансы и статистика ##
**getPaymentMethods**(0) — Получение списка доступных методов оплаты
<small>
Возвращает: Список доступных методов оплаты (JSON)
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getPaymentMethods
_______________________________________________________
{"private": {"метод оплаты для верифицированных пользователей":"Название Метода"},
"public":{"метод оплаты для всех пользователей":"Название метода"},
"default": "метод оплаты по-умолчанию"}
</small><br>
**finishInvoice**(0) — Запрос от обработчика на завершение оплаты
<small>
Возвращает: ависит от обработчика_
Аргументы: ависит от обработчика_
Пример запроса:
POST /billing/api/2.2/ffffffffff/finishInvoice
_______________________________________________________
ok
</small><br>
**getStats**(1) — Получение статистики
<small>
Возвращает: Статистика (JSON)
Аргументы: —
* financials(bool) — Получение финансовой информации _[false]_
* statistic(bool) — Получение статистики _[false]_
* date1(string) — Дата (от)
* date2(string) — Дата (до)
Пример запроса:
GET /billing/api/2.2/ffffffffff/getStats
_______________________________________________________
{"forecast": {
"forecast": на сколько дней пользователю хватит денежных средств,
"recommmend": рекомендуемый платеж в системной валюте (EUR),
"display_recommend": рекомендуемый платеж в валюте пользователя},
"financials": {
"gsm_cost": роуминговые расходы в системной валюте (EUR),
"display_gsm_cost": роуминговые расходы в валюте пользователя,
"call_cost": расходы на звонки в системной валюте (EUR),
"display_call_cost": расходы на звонки в валюте пользователя,
"sms_cost": расходы на SMS в системной валюте (EUR),
"display_sms_cost": расходы на SMS в валюте пользователя,
"gprs_cost": расходы на мобильный интернет в системной валюте (EUR),
"display_gprs_cost": расходы на мобильный интернет в валюте пользователя,
"other_cost": прочие расходы (в т.ч. переводы) в системной валюте (EUR)
"display_other_cost": прочие расходы (в т.ч. переводы) в валюте пользователя,
"total_cost": общие расходы в системной валюте (EUR),
"display_total_cost": общие расходы в валюте пользователя},
"stat":{
"total_calls": всего звонков,
"success_calls": успешных звонков,
"success_calls_percent": процент успешных звонков,
"calls_duration": общая длительность вызовов,
"total_sms": всего SMS-сообщений,
"success_sms": успешных SMS-сообщений,
"success_sms_percent": процент доставленных SMS-сообщений,
"total_gsm_calls": всего GSM-вызовов¸
"success_gsm_calls": успешных GSM-вызовов,
"success_gsm_calls_percent": процент успешных GSM-вызовов,
"gsm_calls_duration": длительность GSM-вызовов,
"gprs_traffic": получено/передано трафика (моб.интернет) КбайтЪ}
}
</small><br>
**transferMoney**(1) — Перевод средств на счет другого пользователя
<small>
Возвращает: _true_ / _false_
Аргументы:
* **destination**(string) — Получатель (логин или номер лицевого счета)
* **amount**(num) — Сумма в валюте запрашивающего пользователя
* comment(string) — Комментарий
Пример запроса:
GET /billing/api/2.2/ffffffffff/transferMoney?destination=100000000&amount=100&comment=Enjoy
_______________________________________________________
true
</small><br>
**createInvoice**(1) — Создать счет для оплаты
<small>
Возвращает: Информация для оплата счета (JSON)
Аргументы: —
* **payment\_method**(string) — Обработчик оплаты
* **payment\_type**(string) — Способ оплаты
* **payment\_amount**(num) — Сумма в валюте запрашивающего пользователя
Пример запроса:
GET /billing/api/2.2/ffffffffff/createInvoice?payment_method=pscb&payment_type=qiwi
_______________________________________________________
{"comission": комиссия (процент),
"transaction": номер транзакции (инвойса),
"msg": "произвольное сообщение о особенностях оплаты",
"method": "метод запроса в URL (GET/POST)",
"url": "URL, по которому нужно перейти для оплаты инвойса",
-- Внимание: последущие параметры нужно передать в указанный URL указанным в «method» способом! --
"параметр1": "значение1",
"параметр2": "значнение2"
</small><br>
**generateInvoice**(1) — Генерация PDF-инвойса по указанным данным __! DEPRECATED: Используйте viewInvoice(invoice) !__
<small>
Возвращает: PDF-инвойс
Аргументы:
* **invoice**(num) — Номер инвойса
* **date**(string) — Дата выставления
* **deadline**(string) — Дата
* **services**(string) — Услуги в формате Услуга@Единиц тарифицировано@Название единицы@Стоимость единицы,Услуга2@Единиц@Название единицы@Стоимость,..
Пример запроса:
GET /billing/api/2.2/ffffffffff/generateInvoice?invoice=1&date=2017-06-24 00:00:00&deadline=2017-06-25 00:00:00&services=Service@1@Unit@100
_______________________________________________________
%PDF-1.4\n1 0 obj\n<< BINARY PDF FILE
</small><br>
**monthlyInvoice**(1) — Генерация счета (инвойса) за один месяц
<small>
Возвращает: PDF-инвойс
Аргументы:
* month(num) — Номер месяца для генерации инвойса (используется прошлый, если не указано)
* email(bool) — Прислать инвойс на электронную почту _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/monthlyInvoice
_______________________________________________________
%PDF-1.4\n1 0 obj\n<< BINARY PDF FILE
</small><br>
**getInvoices**(1) — Получить список инвойсов
<small>
Возвращает: Список инвойсов (JSON)
Аргументы:
* own(bool) — Показать только свои инвойсы _[true]_
* bank(bool) — Показать только банковские переводы _[false]_
* done(bool) — Показать только завершенные инвойсы
Пример запроса:
GET /billing/api/2.2/ffffffffff/getInvoices?params
_______________________________________________________
[{"id": номер инвойса,
"owner":"владелец инвойса (кому выставлен)",
"comission": комиссия,
"vat": НДС,
"amount": сумма в системной валюте (EUR),
"displayamount": сумма в валюте пользователя,
"status": статус,
"msg":"Произвольное сообщение о особенностях оплаты",
"method":"метод оплаты",
"handler": "обработчик (системная информация)",
"billing_data":"ФИО, адрес пользователя",
"txdata": "системная информация о транзакции (см. функцию _createInvoice()_)",
"date":"дата выставления инвойса (время сервера)",
"clientdate":"дата выставления инвойса (время с часовым поясом клиента)",
"validthru":"инвойс валиден до (время сервера)",
"clientvalidthru": "инвойс валиден до (время с часовым поясом клиента)}, ... ]
</small><br>
**getInvoiceInfo**(1) — Получение информации о инвойсе
<small>
Возвращает: Информация о инвойсе (JSON)
Аргументы:
* **invoice**(num) — Номер инвойса
Пример запроса:
GET /billing/api/2.2/ffffffffff/getInvoiceInfo?id=1
_______________________________________________________
{"id": номер инвойса,
"owner":"владелец инвойса (кому выставлен)",
"comission": комиссия,
"vat": НДС,
"amount": сумма в системной валюте (EUR),
"displayamount": сумма в валюте пользователя,
"status": статус,
"msg":"Произвольное сообщение о особенностях оплаты",
"method":"метод оплаты",
"handler": "обработчик (системная информация)",
"billing_data":"ФИО, адрес пользователя",
"txdata": "системная информация о транзакции (см. функцию _createInvoice()_)",
"date":"дата выставления инвойса (время сервера)",
"clientdate":"дата выставления инвойса (время с часовым поясом клиента)",
"validthru":"инвойс валиден до (время сервера)",
"clientvalidthru": "инвойс валиден до (время с часовым поясом клиента)}
</small><br>
**viewInvoice**(1) — Загрузить PDF-инвойс
<small>
Возвращает: Бинарный PDF-файл
Аргументы:
* **invoice**(num) — Номер инвойса
Пример запроса:
GET /billing/api/2.2/ffffffffff/viewInvoice?params
_______________________________________________________
%PDF-1.4\n1 0 obj\n<< BINARY PDF FILE
</small><br>
**deleteInvoice**(33) — Удаление инвойса
<small>
Возвращает: _true_ / _false_
Аргументы:
* **invoice**(num) — Номер инвойса
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteInvoice?invoice=1
_______________________________________________________
true
</small><br>
## Лицевые счета ##
**updateAccount**(1) — Изменение параметров лицевого счета
<small>
Возвращает: _true_ / _false_
Аргументы:
* account(num) — Номер лицевого счета
* balance(num) — Баланс в валюте __запрашивающего__ пользователя
* overdraft(num) — Кредитный лимит в валюте __запрашивающего__ пользователя
* refill\_allowed(num) — Финансовые операции разрешены (0 — запрещены, 1 — разрешены, 2 — верифицирован)
* billing\_name(string) — ФИО для выставления счетов
* billing\_address(string) — Адрес для выставления счетов
* billing\_email(string) — Электронный адрес для выставления счетов
* billing\_bank\_account(string) — Номер банковского счета для получения и выставления счетов
* postpaid(num) — Постоплатный аккаунт (присылать счет в конце месяца) (0/1)
_! NB: пользователи с уровнем доступа выше 33 (администраторы) не могут менять баланс пользователей! Используйте функцию transferMoney()_
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateAccount?account=100000000&postpaid=1
_______________________________________________________
true
</small><br>
**getAccounts**(22) — Получение списка лицевых счетов пользователей
<small>
Возвращает: Списо лицевых счетов и информация по ним (JSON)
Аргументы:
* all(bool) — Показать лицевые счета клиентов реселлеров _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getAccounts
_______________________________________________________
[ {"account": номер лицевого счета,
"users":["список", "пользователей", "на лицевом счете"],
"balance": баланс в системной валюте (EUR),
"displaybalance": баланс в валюте запрашивающего пользователя,
"overdraft": кредитный лимит в системной валюте,
"displayoverdraft": кредитный лимит в валюте запрашивающего пользователя,
"displaycurrency":"€ ($/руб./и т.д.)",
"refill_allowed": финансовые операции разрешены (0 — запрещены, 1 — разрешены, 2 — верифицирован),
"postpaid": Постоплатный аккаунт (присылать ли счета в конце месяца) }, ... ]
</small><br>
**getAccountInfo**(22) — Получение информации о лицевом счете
<small>
Возвращает: Информация о лицевом счете (JSON)
Аргументы:
* **account**(num) — Номер лицевого счета
Пример запроса:
GET /billing/api/2.2/ffffffffff/getAccountInfo?account=100000000
_______________________________________________________
{"account": номер лицевого счета,
"users":["список", "пользователей", "на лицевом счете"],
"balance": баланс в системной валюте (EUR),
"displaybalance": баланс в валюте запрашивающего пользователя,
"overdraft": кредитный лимит в системной валюте,
"displayoverdraft": кредитный лимит в валюте запрашивающего пользователя,
"displaycurrency":"€ ($/руб./и т.д.)",
"refill_allowed": финансовые операции разрешены (0 — запрещены, 1 — разрешены, 2 — верифицирован),
"postpaid": postpaid-аккаунт (присылать ли счета в конце месяца) }
</small><br>
**deleteAccount**(22) — Удаление лицевого счета
<small>
Возвращает: _true_ / _false_
Аргументы:
* **account**(num) — Номер лицевого счета
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteAccount?account=100000000
_______________________________________________________
true
</small><br>
## Доступ к API ##
**getKey**(33) — Получение данных API-ключа
<small>
Возвращает: Информацию о API-ключе (JSON)
Аргументы:
* **name**(string) — Идентфикатор API-ключа
Пример запроса:
GET /billing/api/2.2/ffffffffff/getKey?name=TESTKEY1
_______________________________________________________
{"maintenance":"Дата последнего тех.обслуживания (для системных целей)",
"auth_by":"Авторизация по",
"dnsname":"DNS-имя (для SIP-серверов)",
"source":"IP-адрес или маска (*.*.*.*)",
"name":"Идентификатор ключа",
"secure_only": Только HTTPS (0/1),
"enabled": Активен (0/1),
"accesslevel": Уровень доступа,
"key":"API-ключ"}
</small><br>
**getKeys**(33) — Получение списка
<small>
Возвращает: Список API-ключей (JSON)
Аргументы: —
Пример запроса:
GET /billing/api/2.2/ffffffffff/getKeys
_______________________________________________________
[{"maintenance":"Дата последнего тех.обслуживания (для системных целей)",
"auth_by":"Авторизация по",
"dnsname":"DNS-имя (для SIP-серверов)",
"source":"IP-адрес или маска (*.*.*.*)",
"name":"Идентификатор ключа",
"secure_only": Только HTTPS (0/1),
"enabled": Активен (0/1),
"accesslevel": Уровень доступа,
"key":"API-ключ"}, ...]
</small><br>
**addKey**(33) — Создание нового API-ключа
<small>
Возвращает: _true_ / _false_
Аргументы:
* **name**(string) — Идентификатор API-клиента
* **auth\_by**(string) — Авторизация по (id,username,sip_extension,msisdn,iccid...)
* **source**(string) — IP-адрес (или маска)
* **apikey**(string) — API ключ
* **accesslevel**(num) — Уровень доступа (0 для клиентских ключей)
* default\_user(string) — Привязанный пользователь
* allowed\_methods(string) — Разрешенные к исполнению методы
* secure\_only(num) — Запросы только по _https://_
Пример запроса:
GET /billing/api/2.2/ffffffffff/addKey?params
_______________________________________________________
answer example
</small><br>
**updateKey**(33) — Изменение данных API-ключа
<small>
Возвращает: _true_ / _false_
Аргументы:
* **name**(string) — Идентификатор API-клиента
* auth\_by(string) — Авторизация по (id,username,sip_extension,msisdn,iccid...)
* source(string) — IP-адрес (или маска)
* apikey(string) — API ключ
* accesslevel(num) — Уровень доступа (0 для клиентских ключей)
* default\_user(string) — Привязанный пользователь
* allowed\_methods(string) — Разрешенные к исполнению методы
* secure\_only(num) — Запросы только по _https://_
* enabled(num) — Статус (1 — активен, 0 — выключен)
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateKey?name=TESTKEY1&secure_only=1
_______________________________________________________
</small><br>
**revokeKey**(33) — Отзыв API-ключа
<small>
Возвращает: _true_ / _false_
Аргументы:
* **name**(string) — Идентификатор API-клиента
Пример запроса:
GET /billing/api/2.2/ffffffffff/revokeKey?name=TESTKEY1
_______________________________________________________
true
</small><br>
## GSM ##
**gsmRequest**(0) — Запрос к GSM-обработчику
<small>
Возвращает: ависит от обработчика_
Аргументы:
* **provider**(string) — Имя обработчика (размещенного в директории **inc/gsm/**)
* action(string) — Название субпрограммы для вызова (в ином случае — вызывается Default)
Пример запроса:
POST /billing/api/2.2/ffffffffff/gsmRequest
_______________________________________________________
ok
</small><br>
## SIM-карты ##
**getSIMList**(1) — Получение списка SIM-карт
<small>
Возвращает: Список SIM-карт (JSON)
Аргументы:
* all(bool) — Показать все доступные SIM-карты (в том числе, неактивные) _[true]_
* own(bool) — Показать только SIM-карты, принадлежащие текущему пользователю _[false]_
Пример запроса:
GET /billing/api/2.2/ffffffffff/getSIMList
_______________________________________________________
[{"allow_direct_sms": Разрешить прямые SMS в обход сети Narayana,
"msisdn": MSISDN (номер абонента),
"owner":"Владелец SIM-карты",
"lastnetworkdate":"Дата последней регистрации в сети",
"iccid":"ICCID SIM-карты",
"puk1":PUK1-код,
"puk2":PUK2-код,
"callback_cid":CallerID для Callback,
"sip_extension":SIP-профиль,
"provider":"Провайдер (обработчик)",
"enabled": Состояние SIM-карты (1/0),
"lastnetwork":MCCMNC сети}, ...]
</small><br>
**getSIMInfo**(1) — Получение информации о SIM-карте
<small>
Возвращает: Информация о SIM-карте (JSON)
Аргументы:
* **iccid**(string) — ICCID SIM-карты
Пример запроса:
GET /billing/api/2.2/ffffffffff/getSIMInfo?iccid=89372
_______________________________________________________
{"allow_direct_sms": Разрешить прямые SMS в обход сети Narayana,
"msisdn": MSISDN (номер абонента),
"owner":"Владелец SIM-карты",
"lastnetworkdate":"Дата последней регистрации в сети",
"iccid":"ICCID SIM-карты",
"puk1":PUK1-код,
"puk2":PUK2-код,
"callback_cid":CallerID для Callback,
"sip_extension":SIP-профиль,
"provider":"Провайдер (обработчик)",
"enabled": Состояние SIM-карты (1/0),
"lastnetwork":MCCMNC сети}
</small><br>
**bindSIM**(1) — Инициация процесса привязки SIM-карты
<small>
Возвращает: _true_ / _false_
Аргументы:
* **iccid**(string) — ICCID SIM-карты
* **puk1**(string) — PUK1-код
* **puk2**(string) — PUK2-код
Пример запроса:
GET /billing/api/2.2/ffffffffff/bindSIM?iccid=89372&puk1=1111&puk2=2222
_______________________________________________________
true
</small><br>
**unbindSIM**(1) — Инициация процесса отвязки SIM-карты
<small>
Возвращает: _true_ / _false_
Аргументы:
* **iccid**(string) — ICCID SIM-карты
Пример запроса:
GET /billing/api/2.2/ffffffffff/unbindSIM?iccid=89372
_______________________________________________________
true
</small><br>
**updateSIM**(1) — Обновление параметров SIM-карты
<small>
Возвращает: _true_ / _false_
Аргументы:
* **iccid**(string) — ICCID SIM-карты
* owner(string) — Владелец SIM-карты
* puk1(string) — PUK1-код
* puk2(string) — PUK2-код
* sip\_extension(string) — Используемый SIP-профиль
* callback\_cid(string) — CallerID для Callback
* directsms(num) — Разрешить прямые SMS в обход сети Narayana (0 — нет, 1 — да)
* enabled(num) — Активация SIM-карты (0 — выключена, 1 — включена)
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateSIM?iccid=89372&sip_extension=12345
_______________________________________________________
true
</small><br>
**addSIM**(33) — Добавление SIM-карты
<small>
Возвращает: _true_ / _false_
Аргументы:
* **provider**(string) — Провайдер (обработчик)
* **msisdn**(string) — MSISDN (абонентский номер)
* **iccid**(string) — ICCID/IMSI (уникальный номер SIM-карты)
* puk1(string) — PUK1-код (необходим для активации)
* puk2(string) — PUK2-код (необходим для активации)
Пример запроса:
GET /billing/api/2.2/ffffffffff/addSIM?provider=test&msisdn=111&iccid=89372&puk1=0000&puk2=0000
_______________________________________________________
true
</small><br>
**deleteSIM**(33) — Удаление SIM-карты
<small>
Возвращает: _true_ / _false_
Аргументы:
* **iccid**(string) — ICCID SIM-карты
Пример запроса:
GET /billing/api/2.2/ffffffffff/deleteSIM?iccid=89372
_______________________________________________________
true
</small><br>
**notifySIM**(50) — Отправка SMS-сообщения на SIM-карту
<small>
Возвращает: _true_ / _false_
Аргументы:
* **sim**(string) — ICCID SIM-карты
* **from**(string) — Номер отправителя
* **text**(string) — Текст сообщения
Пример запроса:
GET /billing/api/2.2/ffffffffff/notifySIM?sim=89372&from=111&text=hello+world
_______________________________________________________
true
</small><br>
## Техническое обслуживание ##
**asteriskRequest**(22) — Запрос к АТС
<small>
Возвращает: Ответ АТС
Аргументы:
* **asterisk**(string) — IP-адрес АТС
* **destination**(string) — Назначение запроса (к примеру, **interface**)
* **process**(string) — Первый аргумент (обычно, название метода)
* params(string) — Параметры запроса
Пример запроса:
GET /billing/api/2.2/ffffffffff/asteriskRequest?asterisk=127.0.0.1&destination=sipreload&process=sipreload
_______________________________________________________
ok
</small><br>
**updateDialplan**(33) — Обновление версии диалплана
<small>
Возвращает: OK <версия dialplan>
Аргументы:
* **asterisk**(string) — IP-адрес АТС
* **url**(string) — URL файла dialplan, где слэш **/** заменен тильдой **~**
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateDialplan?asterisk=127.0.0.1&url=localhost~dialplan
_______________________________________________________
OK 0082R20170626_205
</small><br>
**restoreDialplan**(33) — Откат версии диалплана к предыдущей
<small>
Возвращает: OK <версия dialplan>
Аргументы:
* **asterisk**(string) — IP-адрес АТС
Пример запроса:
GET /billing/api/2.2/ffffffffff/restoreDialplan
_______________________________________________________
OK 0082R20170626_205
</small><br>
**updateInterface**(33) — Обновление файла _interface_
<small>
Возвращает: _true_ / _false_
Аргументы:
* **asterisk**(string) — IP-адрес АТС
* **url**(string) — URL файла interface, где слэш **/** заменен тильдой **~**
Пример запроса:
GET /billing/api/2.2/ffffffffff/updateInterface?asterisk=127.0.0.1&url=localhost~interface
_______________________________________________________
OK 0.12.4
</small><br>
**doMaintenance**(90) — Провести регулярные процедуры в БД (курсы валют, инвойсы, DID-номера и пр.)
<small>
Возвращает: _true_ / _false_
Аргументы:
Пример запроса:
GET /billing/api/2.2/ffffffffff/doMaintenance
_______________________________________________________
true
</small><br>