Документация Narayana Billing API.

Текущая версия — 2.2

## Введение Любые приложения (в т.ч. клиентские и серверные) и любое оборудование, работающее в 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) — Получение информации о пользователе. Возвращает: JSON-массив с информацией о пользователе Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getInfo?login=admin __________________________________________________ {"атрибут": "значение (см. раздел «Объект Пользователь»)", "sip_extensions": [ {"атрибут_SIP_аккаунта": "значение (см. раздел «Объект Пользователь»)"}, ... ], "did_numbers:" [ {"атрибут_DID_номера": "значение (см. функции «Прямые номера»"}, ... ], "sim_cards:" [ {"атрибут_SIM_карты": "значение (см. функции «SIM-карты»"}, ...], "broadcasts": [ {"атрибут_широковещательной_новости": "значение (см. функции «Новости и широковещательные сообщения»"}, ... ] }
**getValue**(1) — Получение конкретного параметра пользователя. Возвращает: Значение запрашиваемого параметра Аргументы: * **property**(string) — запрашиваемый параметр Пример запроса: GET /billing/api/2.2/ffffffffff/getValue?property=balance _______________________________________________________ 1.00
**updateUser**(1) — Изменение данных пользователя. Возвращает: _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
## Маршрутизация ## **getRoutes**(22) — Получение списка доступных маршрутов. Возвращает: 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":"баланс"}]
**getRouteInfo**(22) — Получение информации о маршруте по его ID Возвращает: Информация о маршруте (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":"баланс"}
**addRoute**(22) — Добавление нового маршрута в маршрутизацию Возвращает: _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
**updateRoute**(22) — Обновление параметров маршрута Возвращает: _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
**updateRouteState**(22) — Изменение состояния маршрута Возвращает: _true_ / _false_ Аргументы: * **id**(num) — идентификатор маршрута * **state**(bool) — состояние маршрута (true или false) Пример запроса: GET /billing/api/2.2/ffffffffff/updateRouteState?id=1&state=false _______________________________________________________ true
**deleteRoute**(22) — Удаление маршрута из маршрутизации Возвращает: _true_ / _false_ Аргументы: * **id**(num) — идентификатор маршрута Пример запроса: GET /billing/api/2.2/ffffffffff/deleteRoute?id=1 _______________________________________________________ true
## Направления и тарификация ## **resolveDirection**(0) — Разрешить направление по номеру телефона Возвращает: Выбранную информацию о направлении Аргументы: * **number**(string) — номер телефона * select(ustring{id,code,direction}) — Поле для вывода (ID направления, код или название) _[direction]_ Пример запроса: GET /billing/api/2.2/ffffffffff/resolveDirection?number=79271871234 _______________________________________________________ Russia Mobile - Megafon
**getDirections**(0) — Получение списка всех направлений Возвращает: JSON-массив со списком всех направлений в системе Аргументы: * distinct(bool) — показывать только одно значение *code* для направления _[true]_ Пример запроса: GET /billing/api/2.2/ffffffffff/getDirections _______________________________________________________ [{"code": код направления, "id": ID направления, "direction": "название направления", "min_len": минимально допустимая длина номера, "max_len": максимально допустимая длина номера}, ...]
**getCurrentRates**(0) — Получение текущей тарификации Возвращает: JSON-массив в тарифами текущего пользователя Аргументы: * currency(string) — выбранная валюта _[EUR]_ Пример запроса: GET /billing/api/2.2/ffffffffff/getCurrentRates _______________________________________________________ {"ID направления": {"direction":"Название направления", "routing":[ {"routename":"Название маршрута", "route": ID маршрута, "displaycost": Цена в валюте пользователя, "priority": Приоритет, "cost": Цена в системной валюте } ] } ... }
**getRatesList**(1) — Получение списка тарифных планов Возвращает: 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":"Описание тарифа"}, ...]
**switchRates**(1) — Смена тарифного плана, подключение и отключение тарифных опций Возвращает: _true_ / _false_ Аргументы: * **id**(num) — ID тарифа (опции) * state(bool) — Состояние (только для тарифных опций) * sip\_extension(string) — Учетная запись SIP для изменения Пример запроса: GET /billing/api/2.2/ffffffffff/switchRates?id=1&sip_extension=1000001 _______________________________________________________ true
**getRates**(1) — Получение направлений в тарифе по ID тарифа (опции) Возвращает: JSON-список направлений в тарифном плане Аргументы: * **id**(num) — ID тарифа (опции) Пример запроса: GET /billing/api/2.2/ffffffffff/getRates?id=1 _______________________________________________________ {"ID направления": {"direction":"Название направления", "routing":[ {"routename":"Название маршрута", "route": ID маршрута, "displaycost": Цена в валюте пользователя, "priority": Приоритет, "cost": Цена в системной валюте } ] } ... }
**getRatesInfo**(22) — Получение параметров тарифного плана Возвращает: Параметры тарифного плана (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":"Описание тарифа"}
**addRates**(22) — Добавление нового тарифного плана Возвращает: _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
**updateRates**(22) — Обновление параметров тарифного плана Возвращает: _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
**deleteRates**(22) — Удаление тарифного плана Возвращает: _true_ / _false_ Аргументы: * **id**(num) — ID тарифа (опции) Пример запроса: GET /billing/api/2.2/ffffffffff/deleteRates?id=1 _______________________________________________________ true
**addDirection**(22) — Добавление направления в тарифный план Возвращает: _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
**updateDirection**(22) — Обновление параметров направления в тарифном плане Возвращает: _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
**updateDirections**(22) — Обновление параметров направлений в тарифном плане Возвращает: _true_ / _false_ Аргументы: * **rates**(num) — ID изменяемого тарифного плана (опции) * **directions**(string) — JSON-массив со списком изменяемых направлений (формат см. в функции *updateDirection()*) Пример запроса: POST /billing/api/2.2/ffffffffff/updateDirections?rates=1 _______________________________________________________ true
**deleteDirection**(22) — Удаление направления из тарифного плана Возвращает: _true_ / _false_ Аргументы: * **rates**(num) — ID изменяемого тарифного плана (опции) * **direction**(num) — ID удаляемого направления * prior(num) — Приоритет удаляемого направления _[1]_ Пример запроса: GET /billing/api/2.2/ffffffffff/deleteDirection?rates=1&direction=600 _______________________________________________________ true
**updateMarkup**(22) — Автоматическая наценка в тарифном плане Возвращает: _true_ / _false_ Аргументы: * **rates**(num) — ID изменяемого тарифного плана (опции) * **markup**(num) — Множитель Пример запроса: GET /billing/api/2.2/ffffffffff/updateMarkup?rates=1&markup=1.2 _______________________________________________________ true
**copyDirections**(22) — Копирование текущего тарифного плана пользователя в выбранный ТП Возвращает: _true_ / _false_ Аргументы: * **rates**(num) — ID тарифного плана, куда будет скопирован текущий ТП Пример запроса: GET /billing/api/2.2/ffffffffff/copyDirections?rates=2 _______________________________________________________ true
**getBillTypes**(22) — Получение списка доступных типов тарификации Возвращает: JSON-массив ­— список доступных типов тарификации Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getBillTypes _______________________________________________________ [{"type":"Название типа", "free_threshold": Нетарифицируемый порог, "step":Шаг тарификации}, ...]
**getBillType**(33) — Получение информации о типе тарификации по его названию Возвращает: Информация о типе тарификации (JSON) Аргументы: * **bill\_type**(string) — Название типа тарификации Пример запроса: GET /billing/api/2.2/ffffffffff/getBillType?bill_type=by_second _______________________________________________________ {"type":"Название типа", "free_threshold": Нетарифицируемый порог, "step":Шаг тарификации}
**addBillType**(33) — Добавление типа тарификации Возвращает: _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
**updateBillType**(33) — Обновление параметров типа тарификации Возвращает: _true_ / _false_ Аргументы: * **bill\_type**(string) — Название изменяемого типа тарификации * free\_threshold(num) — Нетарифицируемый порог * step(num) — Шаг тарификации (сек.) Пример запроса: GET /billing/api/2.2/ffffffffff/updateBillType?bill_type=custom&free_threshold=0 _______________________________________________________ true
**deleteBillType**(33) — Удаление типа тарификации Возвращает: _true_ / _false_ Аргументы: * **bill\_type**(string) — Название удаляемого типа тарификации Пример запроса: GET /billing/api/2.2/ffffffffff/deleteBillType?bill_type=custom _______________________________________________________ true
## Обработка звонков ## **resolveCallerid**(0) — Получение текущего CallerID пользователя __! DEPRECATED: Используйте getValue?property=sip\_callerid !__ Возвращает: CallerID пользователя Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/resolveCallerid _______________________________________________________ 79010000001
**createCallback**(1) — Инициация Callback Возвращает: _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
**callPrepare**(50) — Инициация звонка Возвращает: 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
**callFinish**(50) — Завершение звонка Возвращает: 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
**getTextBalance**(50) — Получение баланса пользователя в текстовом виде Возвращает: Баланс для проговаривания АТС Аргументы: * balance(num) — Баланс для преобразования в текст (если не указано, используется баланс пользователя) * balance(string) — Валюта (если не указано, используется валюта пользователя) Пример запроса: GET /billing/api/2.2/ffffffffff/getTextBalance?login=10000 _______________________________________________________ ostatok&ноль&евро&ноль&центов&tadam3s
**authorizeCall**(50) — Авторизация пользователя в системе DISA Возвращает: 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
**authorizeRealm**(50) — Проверка подлинности запроса дочерней АТС Возвращает: _true_ / _false_ Аргументы: * **source**(string) — IP-адрес дочерней АТС * **auth**(string) — MD5-хэш от строки "${API-ключ}${IP-адрес АТС}${Имя API-ключа}" Пример запроса: GET /billing/api/2.2/ffffffffff/authorizeRealm?params _______________________________________________________ true
**createTTS**(50) — Преобразование текста в звуковой файл Возвращает: аудиопоток в формате **wav** Аргументы: * **text**(string) — Текст Пример запроса: GET /billing/api/2.2/ffffffffff/createTTS?text=hello+world _______________________________________________________
## Прямые номера ## **getDisaDIDList**(0) — Получение списка номеров DISA Возвращает: JSON-массив — список доступных номеров DISA Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getDisaDIDList _______________________________________________________ [{"did":"Номер доступа", "comment":"DISA\/Регион"}, ... ]
**updateDIDState**(1) — Изменение состояния прямого номера Возвращает: _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
**getDIDPool**(1) — Получение пула прямых номеров (список стран, локаций либо DID-номеров) Возвращает: Пул прямых номеров Аргументы: * 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": "Третий параметр для подключения"}, ...]
**orderDID**(1) — Заказ прямого номера Возвращает: _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
**getDIDList**(1) — Получение списка прямых номеров Возвращает: 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":Цена аренды в системной валюте}, ...]
**addDID**(22) — Добавление прямого номера Возвращает: _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
**updateDID**(22) — Обновление параметров прямого номера Возвращает: _true_ / _false_ Аргументы: * **did**(string) — Изменяемый прямой номер * owner(string) — Новый владелец * comment(string) — Комментарий * cost(num) — Цена аренды * expiration(string) — Дата истечения в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС Пример запроса: GET /billing/api/2.2/ffffffffff/updateDID?did=78005555550&cost=101 _______________________________________________________ true
**deleteDID**(22) — Удаление прямого номера Возвращает: _true_ / _false_ Аргументы: * **did**(string) — Удаляемый прямой номер Пример запроса: GET /billing/api/2.2/ffffffffff/deleteDID?did=78005555550 _______________________________________________________ true
**getDIDInfo**(22) — Получение информации о прямом номере Возвращает: Информация о прямом номере (JSON) Аргументы: * **did**(string) — Прямой номер Пример запроса: GET /billing/api/2.2/ffffffffff/getDIDInfo?did=78005555550 _______________________________________________________ {"displaycost": Цена аренды в валюте пользователя, "expiration":"Дата истечения в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС", "owner":"Владелец", "comment":"Комментарий", "did": Прямой номер, "auto_renew": Включено ли автопродление?, "enabled": Включен ли прямой номер?, "renew_notify": Отправлено уведомление о просрочке, "cost": Цена аренды в системной валюте}
**renewDID**(22) — Продление прямого номера Возвращает: _true_ / _false_ Аргументы: * **did**(string) — Продлеваемый DID-номер Пример запроса: GET /billing/api/2.2/ffffffffff/renewDID?did=78005555550 _______________________________________________________ true
**addDIDPool**(33) — Добавление пула прямых номеров Возвращает: _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
**updateDIDPool**(33) — Обновление параметров пула прямых номеров Возвращает: _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
**getDIDPools**(33) — Получение списка пулов прямых номеров Возвращает: Список пула прямых номеров (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 для обработчика"}, ...]
**getDIDPoolInfo**(33) — Получение информации о пуле прямых номеров Возвращает: Информация о пуле прямых номеров (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 для обработчика"}
**deleteDIDPool**(33) — Удаление пула прямых номеров Возвращает: _true_ / _false_ Аргументы: * **id**(num) — ID удаляемого пула прямых номеров Пример запроса: GET /billing/api/2.2/ffffffffff/deleteDIDPool?id=1 _______________________________________________________ true
**getDIDCount**(50) — Проверка существования прямого номера Возвращает: Количество найденных DID-номеров Аргументы: * did(string) — Искомый DID-номер Пример запроса: GET /billing/api/2.2/ffffffffff/getDIDCount?did=78005555550 _______________________________________________________ 1
## Фильтры DIDTables ## **getDIDActions**(1) — Получение списка возможных действий Возвращает: Список возможных действий для DIDTables (JSON) Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getDIDActions _______________________________________________________ {"voice": {"Действие1":"Значение destination по-умолчанию"}, {"Действие2":"Значение destination по-умолчанию"}, ... }, "sms":{ {"Действие1 (SMS)":"Значение destination по-умолчанию"}, {"Действие2 (SMS)":"Значение destination по-умолчанию"}, ... }
**getFilters**(1) — Получение списка возможных фильтров Возвращает: Список возможных источников/паттернов для DIDTables (JSON) Аргументы: * resolver(string) — Получение списка доступных паттернов по конкретному обработчику * sources(bool) — Получить только источники _[false]_ Пример запроса: GET /billing/api/2.2/ffffffffff/getFilters _______________________________________________________ {"Источник1":{ "Паттерн1", "Паттерн2" },...}
**addDIDRule**(1) — Создание нового правила DIDTables Возвращает: _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
**updateDIDRule**(1) — Обновление правила DIDTables Возвращает: _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
**deleteDIDRule**(1) — Удаление правила DIDTables Возвращает: _true_ / _false_ Аргументы: * **did**(string) — Прямой номер * **rule**(num) — Номер удаляемого правила * pattern(string) — Паттерн (для удаления по паттерну — указать *rule* как *-1* ) Пример запроса: GET /billing/api/2.2/ffffffffff/deleteDIDRule?did=78005555550&rule=-1&pattern=74955555550 _______________________________________________________ true
**getDIDRules**(1) — Получение списка правил для прямого номера Возвращает: Список правил для прямого номера (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"}]
**resolveDIDRule**(50) — Получение правил обработки правила DIDTables Возвращает: 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
## Персональный план набора (алиасы) ## **getAliases**(1) — Получение списка алиасов Возвращает: Список алиасов (JSON) Аргументы: * all(bool) — Показать все алиасы (иначе — только свои алиасы) Пример запроса: GET /billing/api/2.2/ffffffffff/getAliases _______________________________________________________ [{"global": Глобальный алиас (0/1), "id": ID алиаса, "owner":"Владелец алиаса", "alias": Алиас, "destination": Назначение}, ...]
**getAliase**(1) — Получение информации о алиасе Возвращает: Информация о алиасе (JSON) Аргументы: * **id**(num) — ID алиаса Пример запроса: GET /billing/api/2.2/ffffffffff/getAlias?id=11 _______________________________________________________ {"global": Глобальный алиас (0/1), "id": ID алиаса, "owner":"Владелец алиаса", "alias": Алиас, "destination": Назначение}
**addAlias**(1) — Добавление нового алиаса Возвращает: _true_ / _false_ Аргументы: * **alias**(string) — Алиас * **destination**(string) ­— Назначение * sip_extension(string) — SIP-логин, для которого устанавливается алиас * global(bool) — Является ли алиас глобальным Пример запроса: GET /billing/api/2.2/ffffffffff/addAlias?alias=111&destination=79010000001 _______________________________________________________ true
**updateAlias**(1) — Обновление параметров алиаса Возвращает: _true_ / _false_ Аргументы: * **id**(num) — ID алиаса * destination(string) ­— Назначение * sip_extension(string) — SIP-логин, для которого устанавливается алиас Пример запроса: GET /billing/api/2.2/ffffffffff/updateAlias?alias=111&destination=79010000002 _______________________________________________________ true
**deleteAlias**(1) — Удаление алиаса Возвращает: _true_ / _false_ Аргументы: * **id**(num) — ID алиаса Пример запроса: GET /billing/api/2.2/ffffffffff/deleteAlias?id=11 _______________________________________________________ true
## Безопасность ## **getBans**(22) — Получение списка блокировок _iptables_ Возвращает: Список блокировок (JSON) Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getBans _______________________________________________________ [{"reason":Причина блокировки, "source":"Источник (хост) блокировки либо whitelist", "id":ID блокировки, "target":"Цель (хост) блокировки", "date":"Дата блокировки", "clientdate":"Дата блокировки в часовом поясе пользователя", "permanent": Является ли бан постоянным}, ...]
**flushBans**(22) — Сброс блокировок на SIP-сервере пользователя Возвращает: _true_ / _false_ Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/flushBans _______________________________________________________ true
**banIP**(33) — Блокировка IP-адреса Возвращает: _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
**unbanIP**(33) — Разблокировка IP-адреса Возвращает: _true_ / _false_ Аргументы: * **id**(num) — ID блокировки Пример запроса: GET /billing/api/2.2/ffffffffff/unbanIP?id=1 _______________________________________________________ true
**updateBanPermanent**(33) — Обновление статуса блокировки Возвращает: _true_ / _false_ Аргументы: * **id**(num) — ID блокировки * **state**(bool) — Статус блокировки (_true_ — постоянная, _false_ — временная) Пример запроса: GET /billing/api/2.2/ffffffffff/updateBanPermanent?id=1&state=true _______________________________________________________ true
**flushAllBans**(33) — Сброс всех блокировок на всех серверах Narayana Возвращает: _true_ / _false_ Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/flushAllBans _______________________________________________________ true
**closeChannels**(50) — Закрыть все активные каналы пользователя Возвращает: _true_ / _false_ Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/closeChannels?login=10000 _______________________________________________________ true
## Предоплаченные коды (коды приглашения). Регистрация новых пользователей. ## **registerRequest**(0) — Запрос на регистрацию нового пользователя / Генерация кода приглашения Возвращает: Сгенерированный код приглашения Аргументы: * **signature**(string) — Уникальная подпись клиента (генерируется Web-сервером) Пример запроса: GET /billing/api/2.2/ffffffffff/registerRequest?signature=test _______________________________________________________ 0000000000000000
**registerByCode**(0) — Регистрация нового пользователя по коду приглашения Возвращает: _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
**activatePrepaidCode**(1) — Активация кода приглашения (кода предоплаченной карты) на счет пользователя Возвращает: _true_ / _false_ Аргументы: * **code**(string) — Код приглашения * **amount**(num) — Сумма к зачислению (в случае, если указано _0_ — зачисляем весь доступный остаток) Пример запроса: GET /billing/api/2.2/ffffffffff/activatePrepaidCode?code=0000000000000000&amount=0 _______________________________________________________ true
**getPrepaidCodes**(1) — Получение списка сгенерированных кодов приглашений (кодов предоплаченных карт) Возвращает: Список сгенерированных кодов приглашения (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":"Дата активации в часовом поясе пользователя"}, ...]
**createPrepaidCode**(1) — Генерация нового кода приглашения (предоплаченного кода) Возвращает: Сгенерированный код приглашения Аргументы: * accesslevel(num) — Уровень доступа _[10]_ * balance(num) — Баланс _[0.00]_ * target(string) — Пользователь либо SIM-карта, который может активировать данный код (если не указано — без ограничений)_ _[]_ Пример запроса: GET /billing/api/2.2/ffffffffff/createPrepaidCode?balance=10.00 _______________________________________________________ true
**deletePrepaidCode**(1) — Удаление неактивированного кода приглашения (кода предоплаченной карты) Возвращает: _true_ / _false_ Аргументы: * **code**(string) — Код приглашения Пример запроса: GET /billing/api/2.2/ffffffffff/deletePrepaidCode?code=0000000000000000 _______________________________________________________ true
## Сообщения ## **receiveSMS**(0) — Получение нового сообщения от внешнего источника Возвращает: _true_ / _false_ Аргументы: * **msg\_handler**(string) — Идентификатор обработчика (обычно привязывается к API-ключу, поэтому, указывать не обязательно) Пример запроса: GET /billing/api/2.2/ffffffffff/receiveSMS?from=18005555550&to=78005555550&text=Hello+world _______________________________________________________ true
**receiveDeliveryReport**(0) — Получение отчета о доставке от внешнего источника Возвращает: _true_ / _false_ Аргументы: * **msg\_handler**(string) — Идентификатор обработчика (обычно привязывается к API-ключу, поэтому, указывать не обязательно) Пример запроса: GET /billing/api/2.2/ffffffffff/receiveDeliveryReport?id=AAAAAAAAAAAAAAAAAA&status=DELIVERED _______________________________________________________ true
**msgCallback**(0) — Инициация обратного вызова с помощью SMS от внешнего источника Возвращает: _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
**readSMS**(1) — Отметить SMS-сообщения как прочитанные Возвращает: _true_ / _false_ Аргументы: * **status**(num) — Отмечать только сообщения с данным статусом * **did**(string) — Отмечать сообщения только для данного прямого номера Пример запроса: GET /billing/api/2.2/ffffffffff/readSMS?status=0&did=18005555550 _______________________________________________________ true
**sendSMS**(1) — Отправить SMS-сообщение Возвращает: Уникальный идентификатор сообщения Аргументы: * callerid(string) — Отображаемый номер (если не указан — берется из профиля пользователя) * **to**(string) — Номер телефона назначения * **text**(string) — Текст сообщения (urlencoded) Пример запроса: GET /billing/api/2.2/ffffffffff/sendSMS?to=18005555550&text=Hello+World! _______________________________________________________ uniqueid
**sendHLR**(1) — Отправить HLR-запрос Возвращает: Результат HLR-запроса OK,IMSI,MCC,MNC,LAC Аргументы: — * **to**(string) — Номер телефона для HLR-запроса Пример запроса: GET /billing/api/2.2/ffffffffff/sendHLR?to=18005555550 _______________________________________________________ OK,999881111111111,999,888,000000
**sendVoiceMessage**(1) — Отправить голосовое сообщение Возвращает: Уникальный идентификатор сообщения Аргументы: * callerid(string) — Отображаемый номер (если не указан — берется из профиля пользователя) * **to**(string) — Номер телефона назначения * **text**(string) — Текст сообщения (urlencoded) либо ссылка на аудиофайл Пример запроса: GET /billing/api/2.2/ffffffffff/sendVoiceMessage?callerid=18005555550&to=780055555550&text=hello,+world _______________________________________________________ uniqueid
**sendSIPMessage**(1) — Отправить SIP-сообщение абоненту сервиса Возвращает: _true_ / _false_ Аргументы: * callerid(string) — Отображаемый номер (если не указан — берется из профиля пользователя) * **to**(string) — Номер телефона назначения * **text**(string) — Текст сообщения (urlencoded) Пример запроса: GET /billing/api/2.2/ffffffffff/sendVoiceMessage?to=40000&text=hello+world _______________________________________________________ true
**deliveryReport**(1) — Получить отчет о доставке уникальному ID сообщения Возвращает: SMS Sent (отправлено) / SMS Deliv (доставлено) / SMS Undeliv (не доставлено) Аргументы: * **string**(num) — ID записи в журнале вызовов Пример запроса: GET /billing/api/2.2/ffffffffff/deliveryReport?id=uniqueid _______________________________________________________ SMS Deliv
**setDeliveryReport**(95) — Установить отчет о доставке для SMS-сообщения Возвращает: _true_ / _false_ Аргументы: * **id**(num) — Идентификатор сообщения * **status**(num) — Статус Пример запроса: GET /billing/api/2.2/ffffffffff/setDeliveryReport?id=1&status=0 _______________________________________________________ true
**getSMS**(95) — Получение списка всех сообщений __! DEPRECATED: Используйте readSMS() !__ Возвращает: Список 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 — исходящее)"}, ...]}
## Управление пользователями ## **getUsers**(22) — Показать список пользователей Возвращает: Список пользователей (JSON) Аргументы: * all(bool) — показать пользователей, принадлежащих корпоративным пользователям _[false]_ Пример запроса: GET /billing/api/2.2/ffffffffff/getUsers _______________________________________________________ [{"атрибут": "значение"}, ...] Список аттрибутов см. в описании функции _getInfo()
**registerUser**(22) — Создать нового пользователя Возвращает: _true_ / _false_ Аргументы: * **user**(string) — имя пользователя * **web\_password**(string) — md5-хэш от пароля пользователя * **accesslevel**(num) — уровень доступа * **sip\_server**(string) — SIP-сервер * **sip\_extension**(string) — SIP-логин получается методом **getAvailExtension** * **sip\_password**(string) — SIP-пароль * balance(num) — Начальный баланс в валюте регистрирующего пользователя _[0.00]_ * language(string) — Язык интерфейса пользователя _[config.default_language]_ * currency(string) — Валюта пользователя _[EUR]_ * sip\_srtp(bool) — Использовать шифрование SRTP _[false]_ * account(string) — Номер лицевого счета (или auto для автоматического создания) _[auto]_ _! NB: даже в случае, если указана валюта регистрируемого пользователя, в качестве начального баланса будет использована валюта регистрирующего пользователя._ Пример запроса: GET /billing/api/2.2/ffffffffff/registerUser?user=newuser&web_password=5f4dcc3b5aa765d61d8327deb882cf99&accesslevel=11&sip_server=sip.server.com&sip_extension=40000&sip_password=verysecretpassword&balance=10.00 _______________________________________________________ true
**updateUser**(1) — Обновление параметров пользователя Возвращает: _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
**deleteUser**(22) — Удалние пользователя Возвращает: _true_ / _false_ Аргументы: * **user**(string) — Логин пользователя Пример запроса: GET /billing/api/2.2/ffffffffff/deleteUser?user=newuser _______________________________________________________ true
## Учетные записи SIP ## **getExtensions**(1) — Получение списка SIP-аккаунтов пользователя Возвращает: Список 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 — выключено)}, ...]
**getExtensionInfo**(1) — Получение информации о SIP-аккаунте Возвращает: Информация о 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 — выключено)}
**getAvailExtension**(1) — Получение ближайшего доступного для регистрации SIP-аккаунта Возвращает: Доступный SIP аккаунт для регистрации Аргументы: * own(bool) — Вернуть следущий доступный дополнительный (пользовательский) SIP аккаунт для регистрации (XXXXXyy) _[false]_ Пример запроса: GET /billing/api/2.2/ffffffffff/getAvailExtension?own=true _______________________________________________________ 4000001
**createExtension**(1) — Создание учетной записи SIP Возвращает: _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
**updateExtension**(1) — Изменение SIP-аккаунта Возвращает: _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
**deleteExtension**(1) — Удаление учетной записи SIP Возвращает: _true_ / _false_ Аргументы: * **sip\_extension**(string) — SIP-аккаунт для удаления Пример запроса: GET /billing/api/2.2/ffffffffff/deleteExtension?sip_extension=40000 _______________________________________________________ true
## Журнал событий ## **getLogs**(1) — Получение журнала событий Возвращает: Журнал событий (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": "Отладочная информация о звонке"}, ...]
**deleteLogs**(1) — Удаление журнала событий Возвращает: _true_ / _false_ Аргументы: * user(string) — Имя пользователя для удаления журнала (если не указан — удаляем собственный журнал) Пример запроса: GET /billing/api/2.2/ffffffffff/deleteLogs _______________________________________________________ true
## Функции интерфейса ## **getCourse**(0) — Получение внутреннего курса валют и прочих данных Возвращает: Курс валют (JSON) Аргументы: * **currency**(string) — Валюта для получения инфо Пример запроса: GET /billing/api/2.2/ffffffffff/getCourse?currency=EUR _______________________________________________________ {"eur_course": Курс к Евро,"currency":"Код валюты","displayname":"€","transfer_fee":Стомость перевода между ЛС,"referral_reward":Вознаграждение за приглашение}
**getCurrencies**(0) — Получение списка валют Возвращает: Список валют (JSON) Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getCurrencies _______________________________________________________ [{"eur_course":1,"currency":"EUR","displayname":"€"},{"eur_course":68.917,"currency":"RUB","displayname":"руб. "}]
## Новости и широковещательные сообщения ## **getNews**(0) — Получение новостей Возвращает: Список новостей или конкретная новость (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)"}, ... ]
**addNews**(33) — Добавление новости Возвращает: _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
**updateNews**(33) — Изменение новости Возвращает: _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
**deleteNews**(33) — Удаление новости Возвращает: _true_ / _false_ Аргументы: * **id**(string) — Идентификатор новости Пример запроса: GET /billing/api/2.2/ffffffffff/deleteNews?id=testnews _______________________________________________________ true
## Тикет-система ## **getUnreadTickets**(1) — Получение количества непрочитанных сообщений __! DEPRECATED: функция больше не используется !__ Возвращает: Количество непрочитанных тикетов Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getUnreadTickets _______________________________________________________ 1
**createTicket**(1) — Создать тикет или ответить в существующий Возвращает: Номер созданного / существующего тикета Аргументы: * **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
**getTickets**(1) — Получение списка тикетов Возвращает: Список тикетов (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":"дата в часовом поясе сервера"}, ... ]
**getTicket**(1) — Получение тикета Возвращает: Сообщения тикета (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": идентификатор сообщения}, ... ]
**updateTicket**(1) — Обновление статуса тикета Возвращает: _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
**deleteTicket**(33) — Удаление тикета Возвращает: _true_ / _false_ Аргументы: * **ticket**(num) — Номер тикета * username(string) — Пользователь (для удаления всех его тикетов) Пример запроса: GET /billing/api/2.2/ffffffffff/deleteTicket?ticket=5162 _______________________________________________________ true
**deleteMessage**(33) — Удаление конкретного сообщения Возвращает: _true_ / _false_ Аргументы: * **id**(num) — Идентификатор сообщения Пример запроса: GET /billing/api/2.2/ffffffffff/deleteMessage?id=10000 _______________________________________________________ true
## Финансы и статистика ## **getPaymentMethods**(0) — Получение списка доступных методов оплаты Возвращает: Список доступных методов оплаты (JSON) Аргументы: — Пример запроса: GET /billing/api/2.2/ffffffffff/getPaymentMethods _______________________________________________________ {"private": {"метод оплаты для верифицированных пользователей":"Название Метода"}, "public":{"метод оплаты для всех пользователей":"Название метода"}, "default": "метод оплаты по-умолчанию"}
**finishInvoice**(0) — Запрос от обработчика на завершение оплаты Возвращает: _зависит от обработчика_ Аргументы: _зависит от обработчика_ Пример запроса: POST /billing/api/2.2/ffffffffff/finishInvoice _______________________________________________________ ok
**getStats**(1) — Получение статистики Возвращает: Статистика (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": получено/передано трафика (моб.интернет) КбайтЪ} }
**transferMoney**(1) — Перевод средств на счет другого пользователя Возвращает: _true_ / _false_ Аргументы: * **destination**(string) — Получатель (логин или номер лицевого счета) * **amount**(num) — Сумма в валюте запрашивающего пользователя * comment(string) — Комментарий Пример запроса: GET /billing/api/2.2/ffffffffff/transferMoney?destination=100000000&amount=100&comment=Enjoy _______________________________________________________ true
**createInvoice**(1) — Создать счет для оплаты Возвращает: Информация для оплата счета (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"
**generateInvoice**(1) — Генерация PDF-инвойса по указанным данным __! DEPRECATED: Используйте viewInvoice(invoice) !__ Возвращает: 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
**monthlyInvoice**(1) — Генерация счета (инвойса) за один месяц Возвращает: PDF-инвойс Аргументы: * month(num) — Номер месяца для генерации инвойса (используется прошлый, если не указано) * email(bool) — Прислать инвойс на электронную почту _[false]_ Пример запроса: GET /billing/api/2.2/ffffffffff/monthlyInvoice _______________________________________________________ %PDF-1.4\n1 0 obj\n<< BINARY PDF FILE
**getInvoices**(1) — Получить список инвойсов Возвращает: Список инвойсов (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": "инвойс валиден до (время с часовым поясом клиента)}, ... ]
**getInvoiceInfo**(1) — Получение информации о инвойсе Возвращает: Информация о инвойсе (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": "инвойс валиден до (время с часовым поясом клиента)}
**viewInvoice**(1) — Загрузить PDF-инвойс Возвращает: Бинарный PDF-файл Аргументы: * **invoice**(num) — Номер инвойса Пример запроса: GET /billing/api/2.2/ffffffffff/viewInvoice?params _______________________________________________________ %PDF-1.4\n1 0 obj\n<< BINARY PDF FILE
**deleteInvoice**(33) — Удаление инвойса Возвращает: _true_ / _false_ Аргументы: * **invoice**(num) — Номер инвойса Пример запроса: GET /billing/api/2.2/ffffffffff/deleteInvoice?invoice=1 _______________________________________________________ true
## Лицевые счета ## **updateAccount**(1) — Изменение параметров лицевого счета Возвращает: _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
**getAccounts**(22) — Получение списка лицевых счетов пользователей Возвращает: Списо лицевых счетов и информация по ним (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": Постоплатный аккаунт (присылать ли счета в конце месяца) }, ... ]
**getAccountInfo**(22) — Получение информации о лицевом счете Возвращает: Информация о лицевом счете (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-аккаунт (присылать ли счета в конце месяца) }
**deleteAccount**(22) — Удаление лицевого счета Возвращает: _true_ / _false_ Аргументы: * **account**(num) — Номер лицевого счета Пример запроса: GET /billing/api/2.2/ffffffffff/deleteAccount?account=100000000 _______________________________________________________ true
## Доступ к API ## **getKey**(33) — Получение данных API-ключа Возвращает: Информацию о 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-ключ"}
**getKeys**(33) — Получение списка Возвращает: Список 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-ключ"}, ...]
**addKey**(33) — Создание нового API-ключа Возвращает: _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
**updateKey**(33) — Изменение данных API-ключа Возвращает: _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 _______________________________________________________
**revokeKey**(33) — Отзыв API-ключа Возвращает: _true_ / _false_ Аргументы: * **name**(string) — Идентификатор API-клиента Пример запроса: GET /billing/api/2.2/ffffffffff/revokeKey?name=TESTKEY1 _______________________________________________________ true
## GSM ## **gsmRequest**(0) — Запрос к GSM-обработчику Возвращает: _зависит от обработчика_ Аргументы: * **provider**(string) — Имя обработчика (размещенного в директории **inc/gsm/**) * action(string) — Название субпрограммы для вызова (в ином случае — вызывается Default) Пример запроса: POST /billing/api/2.2/ffffffffff/gsmRequest _______________________________________________________ ok
## SIM-карты ## **getSIMList**(1) — Получение списка SIM-карт Возвращает: Список 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 сети}, ...]
**getSIMInfo**(1) — Получение информации о SIM-карте Возвращает: Информация о 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 сети}
**bindSIM**(1) — Инициация процесса привязки SIM-карты Возвращает: _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
**unbindSIM**(1) — Инициация процесса отвязки SIM-карты Возвращает: _true_ / _false_ Аргументы: * **iccid**(string) — ICCID SIM-карты Пример запроса: GET /billing/api/2.2/ffffffffff/unbindSIM?iccid=89372 _______________________________________________________ true
**updateSIM**(1) — Обновление параметров SIM-карты Возвращает: _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
**addSIM**(33) — Добавление SIM-карты Возвращает: _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
**deleteSIM**(33) — Удаление SIM-карты Возвращает: _true_ / _false_ Аргументы: * **iccid**(string) — ICCID SIM-карты Пример запроса: GET /billing/api/2.2/ffffffffff/deleteSIM?iccid=89372 _______________________________________________________ true
**notifySIM**(50) — Отправка SMS-сообщения на SIM-карту Возвращает: _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
## Техническое обслуживание ## **asteriskRequest**(22) — Запрос к АТС Возвращает: Ответ АТС Аргументы: * **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
**updateDialplan**(33) — Обновление версии диалплана Возвращает: 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
**restoreDialplan**(33) — Откат версии диалплана к предыдущей Возвращает: OK <версия dialplan> Аргументы: * **asterisk**(string) — IP-адрес АТС Пример запроса: GET /billing/api/2.2/ffffffffff/restoreDialplan _______________________________________________________ OK 0082R20170626_205
**updateInterface**(33) — Обновление файла _interface_ Возвращает: _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
**doMaintenance**(90) — Провести регулярные процедуры в БД (курсы валют, инвойсы, DID-номера и пр.) Возвращает: _true_ / _false_ Аргументы: Пример запроса: GET /billing/api/2.2/ffffffffff/doMaintenance _______________________________________________________ true