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

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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-сервер
* **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>