3560 lines
146 KiB
Markdown
3560 lines
146 KiB
Markdown
|
<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¶meter=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®ister=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-логин
|
|||
|
* **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>
|
|||
|
|